From 78977a1a98d2154e42eab788d6420b3c52464413 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Mon, 4 Aug 2025 01:33:49 +0000 Subject: first draft of s6rc_repo_set_compile Signed-off-by: Laurent Bercot --- src/repo/s6-rc-set-delete.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/repo/s6-rc-set-delete.c') diff --git a/src/repo/s6-rc-set-delete.c b/src/repo/s6-rc-set-delete.c index e45561f..58fe4f0 100644 --- a/src/repo/s6-rc-set-delete.c +++ b/src/repo/s6-rc-set-delete.c @@ -29,7 +29,19 @@ static inline void dodelete (char const *repo, char const *setname) if (errno != ENOENT) strerr_diefu2sys(111, "access ", fn) ; else strerr_warnwu2sys("delete set ", setname) ; } - else rm_rf(fn) ; + else + { + ssize_t r ; + char real[repolen + setlen + 18] ; + memcpy(real, repo, repolen) ; + 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") ; + real[repolen + setlen + 17] = 0 ; + if (unlink(fn) == -1) strerr_diefu2sys(111, "unlink ", fn) ; + rm_rf(real) ; + } } enum gola_e -- cgit v1.3.1