diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-10-05 00:05:59 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2025-10-05 00:05:59 +0000 |
| commit | 399184cad0c0dd63a39de775130a2a73d0325913 (patch) | |
| tree | 978b8c5dc3f494a9627f601bf8728bf6e8324b57 /src/libs6rc/s6rc_livedir_create.c | |
| parent | 92ef99d90574ebd4732c10a0a127945a40271c87 (diff) | |
| download | s6-rc-399184cad0c0dd63a39de775130a2a73d0325913.tar.gz | |
Do not delete old store before the sync succeeds
Diffstat (limited to 'src/libs6rc/s6rc_livedir_create.c')
| -rw-r--r-- | src/libs6rc/s6rc_livedir_create.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libs6rc/s6rc_livedir_create.c b/src/libs6rc/s6rc_livedir_create.c index 0fa4696..7695dfd 100644 --- a/src/libs6rc/s6rc_livedir_create.c +++ b/src/libs6rc/s6rc_livedir_create.c @@ -18,17 +18,20 @@ int s6rc_livedir_create (stralloc *sa, char const *live, char const *suffix, cha { size_t newlen, ddirlen ; size_t sabase = sa->len ; + mode_t m ; int wasnull = !sa->s ; if (!s6rc_sanitize_dir(sa, live, &ddirlen)) return 0 ; if (!stralloc_cats(sa, ":")) goto err ; if (!stralloc_cats(sa, suffix)) goto err ; if (!stralloc_cats(sa, ":XXXXXX")) goto err ; if (!stralloc_0(sa)) goto err ; - if (!mkdtemp(sa->s + sabase)) goto err ; + m = umask(0) ; + if (!mkdtemp(sa->s + sabase)) { umask(m) ; goto err ; } newlen = sa->len-- ; + if (!stralloc_catb(sa, "/servicedirs", 13)) { umask(m) ; goto delerr ; } /* allocates enough for the next strcpys */ + if (mkdir(sa->s + sabase, 0755) < 0) { umask(m) ; goto delerr ; } + umask(m) ; if (chmod(sa->s + sabase, 0755) < 0) goto delerr ; - if (!stralloc_catb(sa, "/servicedirs", 13)) goto delerr ; /* allocates enough for the next strcpys */ - if (mkdir(sa->s + sabase, 0755) < 0) goto delerr ; strcpy(sa->s + newlen, "compiled") ; if (symlink(compiled, sa->s + sabase) < 0) goto delerr ; strcpy(sa->s + newlen, "scandir") ; |
