diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-12-08 14:39:50 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2025-12-08 14:39:50 +0000 |
| commit | b1903e7ebc0f017c4f630ed9bc5a3ba823e0be86 (patch) | |
| tree | 7327e8604892cecb6cd0b3de8ee127a11f491476 | |
| parent | 7e6654b43fde098df6f080c6bc57489bfe3c5095 (diff) | |
| download | s6-rc-b1903e7ebc0f017c4f630ed9bc5a3ba823e0be86.tar.gz | |
More fixes
| -rw-r--r-- | src/repo/s6-rc-set-delete.c | 2 | ||||
| -rw-r--r-- | src/repo/s6-rc-set-new.c | 7 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_compile.c | 2 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_fillset.c | 5 | ||||
| -rw-r--r-- | src/repo/s6rc_repo_makesetbundles.c | 2 |
5 files changed, 10 insertions, 8 deletions
diff --git a/src/repo/s6-rc-set-delete.c b/src/repo/s6-rc-set-delete.c index 0b63e4a..95f4216 100644 --- a/src/repo/s6-rc-set-delete.c +++ b/src/repo/s6-rc-set-delete.c @@ -38,7 +38,7 @@ static inline void dodelete (char const *repo, char const *set) memcpy(real + repolen, "/sources/", 9) ; r = readlink(fn, real + repolen + 9, setlen + 9) ; if (r == -1) strerr_diefu2sys(111, "readlink ", fn) ; - else if (r != 8) strerr_dief3x(102, "symlink ", fn, " points to an invalid name") ; + else if (r != setlen + 8) strerr_dief3x(102, "symlink ", fn, " points to an invalid name") ; real[repolen + setlen + 17] = 0 ; unlink_void(fn) ; rm_rf(real) ; diff --git a/src/repo/s6-rc-set-new.c b/src/repo/s6-rc-set-new.c index ba41a19..d40d29e 100644 --- a/src/repo/s6-rc-set-new.c +++ b/src/repo/s6-rc-set-new.c @@ -55,7 +55,8 @@ static inline void newset (char const *repo, char const *setname) memcpy(tmp + repolen + 10 + setlen, ":XXXXXX", 8) ; m = umask(0) ; if (!mkdtemp(tmp)) strerr_diefu2sys(111, "mkdtemp ", tmp) ; - + memcpy(sub, tmp, repolen + 17 + setlen) ; + sub[repolen + 17 + setlen] = '/' ; for (size_t i = 0 ; i < 4 ; i++) { memcpy(sub + repolen + 18 + setlen, s6rc_repo_subnames[i], 7) ; @@ -79,10 +80,10 @@ static inline void newset (char const *repo, char const *setname) cleanup(tmp) ; strerr_diefu2sys(111, "chmod ", tmp) ; } - if (symlink(tmp, fn) == -1) + if (symlink(tmp + repolen + 9, fn) == -1) { cleanup(tmp) ; - strerr_diefu4sys(111, "rename ", tmp, " to ", fn) ; + strerr_diefu4sys(111, "symlink ", tmp, " to ", fn) ; } } diff --git a/src/repo/s6rc_repo_compile.c b/src/repo/s6rc_repo_compile.c index ac4207d..01134af 100644 --- a/src/repo/s6rc_repo_compile.c +++ b/src/repo/s6rc_repo_compile.c @@ -98,7 +98,7 @@ int s6rc_repo_compile (char const *repo, char const *set, char const *const *sub int e = errno ; rm_rf(newc) ; errno = e ; - strerr_warnfu4sys("atomically make a ", fn, " symlink pointing to ", newc + repolen + 10) ; + strerr_warnfu4sys("atomically symlink ", newc + repolen + 10, " to ", fn) ; return -1 ; } } diff --git a/src/repo/s6rc_repo_fillset.c b/src/repo/s6rc_repo_fillset.c index 15832c3..a911e69 100644 --- a/src/repo/s6rc_repo_fillset.c +++ b/src/repo/s6rc_repo_fillset.c @@ -52,13 +52,14 @@ int s6rc_repo_fillset (char const *repo, char const *set, char const *const *exi if (flags & 1) subi = 3 ; else if (flags & 2) subi = 2 ; else subi = 1 ; - memcpy(dst, setfn, repolen + 10 + setlen) ; + memcpy(dst, setfn, repolen + 9 + setlen) ; + dst[repolen + 9 + setlen] = '/' ; memcpy(dst + repolen + 10 + setlen, s6rc_repo_subnames[subi], 6) ; dst[repolen + setlen + 16] = '/' ; memcpy(dst + repolen + setlen + 17, d->d_name, len+1) ; if (symlink(src, dst) == -1) { - strerr_warnfu4sys("make a symlink named ", dst, " pointing to ", src) ; + strerr_warnfu4sys("symlink ", src, " to ", dst) ; return 0 ; } } diff --git a/src/repo/s6rc_repo_makesetbundles.c b/src/repo/s6rc_repo_makesetbundles.c index 81267b9..9cf73ac 100644 --- a/src/repo/s6rc_repo_makesetbundles.c +++ b/src/repo/s6rc_repo_makesetbundles.c @@ -102,7 +102,7 @@ int s6rc_repo_makesetbundles (char const *repo, char const *set, unsigned int ve memcpy(fn + repolen + setlen + 17, d->d_name, len+1) ; if (symlink(target, fn) == -1) { - strerr_warnfu4sys("make a symlink named ", fn, " pointing to ", target) ; + strerr_warnfu4sys("symlink ", target, " to ", fn) ; dir_close(dir) ; goto err0 ; } |
