diff options
Diffstat (limited to 'src/libs6rc/s6rc_repo_makestores.c')
| -rw-r--r-- | src/libs6rc/s6rc_repo_makestores.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/libs6rc/s6rc_repo_makestores.c b/src/libs6rc/s6rc_repo_makestores.c index 5568ec5..f61f94c 100644 --- a/src/libs6rc/s6rc_repo_makestores.c +++ b/src/libs6rc/s6rc_repo_makestores.c @@ -15,19 +15,17 @@ #include <s6-rc/repo.h> -int s6rc_repo_makestores (char const *repo, char const *const *stores, uint16_t n) +int s6rc_repo_makestores (char const *repo, char const *const *stores, uint16_t n, char *sold) { size_t repolen = strlen(repo) ; mode_t m = umask(0) ; char slink[repolen + 8] ; char sdir[repolen + 21] ; - char sold[repolen + 16] ; memcpy(slink, repo, repolen) ; memcpy(slink + repolen, "/stores", 8) ; memcpy(sdir, slink, repolen + 1) ; memcpy(sdir + repolen + 1, ".stores:XXXXXX", 15) ; - memcpy(sold, slink, repolen + 1) ; if (!mkdtemp(sdir)) { @@ -54,12 +52,11 @@ int s6rc_repo_makestores (char const *repo, char const *const *stores, uint16_t strerr_warnfu2sys("chmod ", sdir) ; goto err ; } - if (!atomic_symlink4(sdir + repolen + 1, slink, sold + repolen + 1, 15)) + if (!atomic_symlink4(sdir + repolen + 1, slink, sold, 15)) { strerr_warnfu4sys("atomically symlink ", sdir + repolen + 1, " to ", slink) ; goto err ; } - rm_rf(sold) ; return 1 ; err: |
