From e0bcc0ef3466b7b5fc776d2e78d7e7ec027810c0 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 22 Oct 2025 22:05:56 +0000 Subject: Separate libs6rcrepo --- src/libs6rc/s6rc_repo_compile.c | 106 ---------------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 src/libs6rc/s6rc_repo_compile.c (limited to 'src/libs6rc/s6rc_repo_compile.c') diff --git a/src/libs6rc/s6rc_repo_compile.c b/src/libs6rc/s6rc_repo_compile.c deleted file mode 100644 index ac4207d..0000000 --- a/src/libs6rc/s6rc_repo_compile.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ISC license. */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -int s6rc_repo_compile (char const *repo, char const *set, char const *const *subs, uint8_t nsubs, char *oldc, unsigned int verbosity, char const *fdhuser) -{ - size_t repolen = strlen(repo) ; - size_t setlen = strlen(set) ; - size_t totsublen = 0 ; - int needprefix = strcmp(set, ".ref") ; - char newc[repolen + setlen + 45] ; - memcpy(newc, repo, repolen) ; - memcpy(newc + repolen, "/compiled/.", 11) ; - memcpy(newc + repolen + 11, set, setlen) ; - newc[repolen + 11 + setlen] = ':' ; - timestamp_g(newc + repolen + 12 + setlen) ; - memcpy(newc + repolen + 37 + setlen, ":XXXXXX", 8) ; - memcpy(oldc, newc, repolen + 10) ; - if (mkntemp(newc) == -1) { strerr_warnfu2sys("mkntemp ", newc) ; return -1 ; } - for (uint8_t i = 0 ; i < nsubs ; i++) totsublen += strlen(subs[i]) + 1 ; - - { - pid_t pid ; - size_t m = 0 ; - int wstat ; - char const *argv[9 + nsubs] ; - char fmtv[UINT_FMT] ; - char src[nsubs * (repolen + 10 + (needprefix ? setlen + 1 : 0)) + totsublen] ; - char *w = src ; - fmtv[uint_fmt(fmtv, verbosity)] = 0 ; - argv[m++] = S6RC_BINPREFIX "s6-rc-compile" ; - argv[m++] = "-v"; - argv[m++] = fmtv ; - argv[m++] = "-b" ; - if (fdhuser) - { - argv[m++] = "-h" ; - argv[m++] = fdhuser ; - } - argv[m++] = "--" ; - argv[m++] = newc ; - for (uint8_t i = 0 ; i < nsubs ; i++) - { - size_t sublen = strlen(subs[i]) ; - argv[m++] = w ; - memcpy(w, repo, repolen) ; w += repolen ; - memcpy(w, "/sources/", 9) ; w += 9 ; - if (needprefix) - { - memcpy(w, set, setlen) ; w += setlen ; - *w++ = '/' ; - } - memcpy(w, subs[i], sublen+1) ; w += sublen + 1 ; - } - argv[m++] = 0 ; - pid = cspawn(argv[0], argv, (char const *const *)environ, 0, 0, 0) ; - if (!pid) { strerr_warnfu2sys("spawn ", argv[0]) ; return -1 ; } - if (wait_pid(pid, &wstat) == -1) - { - strerr_warnfu2sys("wait for ", argv[0]) ; - return -1 ; - } - if (WIFSIGNALED(wstat)) - { - char fmt[UINT_FMT] ; - fmt[uint_fmt(fmt, WTERMSIG(wstat))] = 0 ; - strerr_warnf3x(argv[0], " crashed with signal ", fmt) ; - return -1 ; - } - if (WEXITSTATUS(wstat)) - { - char fmt[UINT_FMT] ; - fmt[uint_fmt(fmt, WEXITSTATUS(wstat))] = 0 ; - strerr_warnf3x(argv[0], " exited with code ", fmt) ; - return (WEXITSTATUS(wstat) == 1) - 1 ; - } - } - { - char fn[repolen + setlen + 11] ; - memcpy(fn, newc, repolen + 10) ; - memcpy(fn + repolen + 10, set, setlen + 1) ; - if (!atomic_symlink4(newc + repolen + 10, fn, oldc + repolen + 10, setlen + 35)) - { - int e = errno ; - rm_rf(newc) ; - errno = e ; - strerr_warnfu4sys("atomically make a ", fn, " symlink pointing to ", newc + repolen + 10) ; - return -1 ; - } - } - return 1 + !!oldc[repolen + 10] ; -} -- cgit v1.3.1