aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs6rc/s6rc_repo_makedefbundle.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-08-08 00:28:58 +0000
committerLaurent Bercot <ska@appnovation.com>2025-08-08 00:28:58 +0000
commita92aa0997e0d367e396b02dc2d55d0c0a3cbbc38 (patch)
treee6f21d97cfa6cfea8bab222d1b99510ea5c8ee35 /src/libs6rc/s6rc_repo_makedefbundle.c
parentf513ab225005661e9b4674a1b333abea0c6670f0 (diff)
downloads6-rc-a92aa0997e0d367e396b02dc2d55d0c0a3cbbc38.tar.gz
Major refactors, add makesetbundle, refcompile/setcompile, etc.
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libs6rc/s6rc_repo_makedefbundle.c')
-rw-r--r--src/libs6rc/s6rc_repo_makedefbundle.c55
1 files changed, 30 insertions, 25 deletions
diff --git a/src/libs6rc/s6rc_repo_makedefbundle.c b/src/libs6rc/s6rc_repo_makedefbundle.c
index 0863abd..5c67917 100644
--- a/src/libs6rc/s6rc_repo_makedefbundle.c
+++ b/src/libs6rc/s6rc_repo_makedefbundle.c
@@ -11,6 +11,7 @@
#include <skalibs/strerr.h>
#include <skalibs/stralloc.h>
#include <skalibs/djbunix.h>
+#include <skalibs/skamisc.h>
#include <s6-rc/repo.h>
@@ -25,37 +26,25 @@ int s6rc_repo_makedefbundle (char const *repo, char const *set, char const *bund
char subfn[repolen + setlen + 17] ;
memcpy(bfn, repo, repolen) ;
- memcpy(bfn + repolen, "/sources/.everything/", 21) ;
- memcpy(bfn + repolen + 21, bundle, bundlelen + 1) ;
- if (access(bfn, F_OK) == -1)
+ memcpy(bfn + repolen, "/sources/.atomics/", 18) ;
+ memcpy(bfn + repolen + 18, bundle, bundlelen + 1) ;
+
+ if (access(bfn, F_OK) == 0) goto errexists ;
+ if (errno != ENOENT)
{
- if (errno != ENOENT)
- {
- strerr_warnfu2sys("check existence of ", bfn) ;
- return 0 ;
- }
+ strerr_warnfu2sys("check existence of ", bfn) ;
+ return 0 ;
}
- else
+ memcpy(bfn + repolen + 10, "bundle", 6) ;
+ if (access(bfn, F_OK) == 0) goto errexists ;
+ if (errno != ENOENT)
{
- stralloc sa = STRALLOC_ZERO ;
- if (sareadlink(&sa, bfn) == -1)
- {
- strerr_warnfu2sys("readlink ", bfn) ;
- return 0 ;
- }
- if (!stralloc_0(&sa))
- {
- strerr_warnfu1sys("stralloc_catb ") ;
- stralloc_free(&sa) ;
- return 0 ;
- }
- strerr_warnf4x("bundle ", bundle, " is already defined at ", sa.s) ;
- stralloc_free(&sa) ;
- return (errno = EINVAL, 0) ;
+ strerr_warnfu2sys("check existence of ", bfn) ;
+ return 0 ;
}
memcpy(bfn + repolen + 9, set, setlen) ;
- memcpy(bfn + repolen + 9 + setlen, "/bbuild/", 8) ;
+ memcpy(bfn + repolen + 9 + setlen, "/bundle/", 8) ;
memcpy(bfn + repolen + 17 + setlen, bundle, bundlelen + 1) ;
if (mkdir(bfn, 02755) == -1)
{
@@ -113,4 +102,20 @@ int s6rc_repo_makedefbundle (char const *repo, char const *set, char const *bund
}
return 1 ;
+
+ errexists:
+ if (sareadlink(&satmp, bfn) == -1)
+ {
+ strerr_warnfu2sys("readlink ", bfn) ;
+ return 0 ;
+ }
+ if (!stralloc_0(&satmp))
+ {
+ strerr_warnfu1sys("stralloc_catb ") ;
+ satmp.len = 0 ;
+ return 0 ;
+ }
+ strerr_warnf4x("bundle ", bundle, " is already defined at ", satmp.s) ;
+ satmp.len = 0 ;
+ return (errno = EINVAL, 0) ;
}