diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-10-22 22:05:56 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2025-10-22 22:05:56 +0000 |
| commit | e0bcc0ef3466b7b5fc776d2e78d7e7ec027810c0 (patch) | |
| tree | d9686a3c25525760ef9ce5ed5594ec382b3fb6e7 /src/libs6rc/s6rc_repo_makestores.c | |
| parent | 3b9836248ed7f5164140d63e96ece21973fc43f7 (diff) | |
| download | s6-rc-e0bcc0ef3466b7b5fc776d2e78d7e7ec027810c0.tar.gz | |
Separate libs6rcrepo
Diffstat (limited to 'src/libs6rc/s6rc_repo_makestores.c')
| -rw-r--r-- | src/libs6rc/s6rc_repo_makestores.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/libs6rc/s6rc_repo_makestores.c b/src/libs6rc/s6rc_repo_makestores.c deleted file mode 100644 index f61f94c..0000000 --- a/src/libs6rc/s6rc_repo_makestores.c +++ /dev/null @@ -1,65 +0,0 @@ -/* ISC license. */ - -#include <string.h> -#include <stdint.h> -#include <unistd.h> -#include <stdlib.h> -#include <errno.h> - -#include <skalibs/uint16.h> -#include <skalibs/posixplz.h> -#include <skalibs/stat.h> -#include <skalibs/strerr.h> -#include <skalibs/djbunix.h> -#include <skalibs/unix-transactional.h> - -#include <s6-rc/repo.h> - -int s6rc_repo_makestores (char const *repo, char const *const *stores, uint16_t n, char *sold) -{ - size_t repolen = strlen(repo) ; - mode_t m = umask(0) ; - char slink[repolen + 8] ; - char sdir[repolen + 21] ; - - memcpy(slink, repo, repolen) ; - memcpy(slink + repolen, "/stores", 8) ; - memcpy(sdir, slink, repolen + 1) ; - memcpy(sdir + repolen + 1, ".stores:XXXXXX", 15) ; - - if (!mkdtemp(sdir)) - { - umask(m) ; - strerr_warnfu2sys("mkdtemp ", sdir) ; - return 0 ; - } - umask(m) ; - sdir[repolen + 15] = '/' ; - sdir[repolen + 20] = 0 ; - for (uint16_t i = 0 ; i < n ; i++) - { - uint160_xfmt(sdir + repolen + 16, i, 4) ; - if (symlink(stores[i], sdir) == -1) - { - strerr_warnfu4sys("symlink ", stores[i], " to ", sdir) ; - sdir[repolen + 15] = 0 ; - goto err ; - } - } - sdir[repolen + 15] = 0 ; - if (chmod(sdir, 02755) == -1) - { - strerr_warnfu2sys("chmod ", sdir) ; - goto err ; - } - if (!atomic_symlink4(sdir + repolen + 1, slink, sold, 15)) - { - strerr_warnfu4sys("atomically symlink ", sdir + repolen + 1, " to ", slink) ; - goto err ; - } - return 1 ; - - err: - rm_rf(sdir) ; - return 0 ; -} |
