aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-12-08 14:39:50 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2025-12-08 14:39:50 +0000
commitb1903e7ebc0f017c4f630ed9bc5a3ba823e0be86 (patch)
tree7327e8604892cecb6cd0b3de8ee127a11f491476 /src
parent7e6654b43fde098df6f080c6bc57489bfe3c5095 (diff)
downloads6-rc-b1903e7ebc0f017c4f630ed9bc5a3ba823e0be86.tar.gz
More fixes
Diffstat (limited to 'src')
-rw-r--r--src/repo/s6-rc-set-delete.c2
-rw-r--r--src/repo/s6-rc-set-new.c7
-rw-r--r--src/repo/s6rc_repo_compile.c2
-rw-r--r--src/repo/s6rc_repo_fillset.c5
-rw-r--r--src/repo/s6rc_repo_makesetbundles.c2
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 ;
}