aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs6rc/s6rc_repo_makestores.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs6rc/s6rc_repo_makestores.c')
-rw-r--r--src/libs6rc/s6rc_repo_makestores.c7
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: