From 04186b51dfcada174b5372aab0c7e423a4ed3244 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 24 Sep 2025 06:59:18 +0000 Subject: More progress: updated sync, nominal fix --- src/libs6rc/s6rc_repo_fix.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/libs6rc/s6rc_repo_fix.c (limited to 'src/libs6rc/s6rc_repo_fix.c') diff --git a/src/libs6rc/s6rc_repo_fix.c b/src/libs6rc/s6rc_repo_fix.c new file mode 100644 index 0000000..b379d30 --- /dev/null +++ b/src/libs6rc/s6rc_repo_fix.c @@ -0,0 +1,51 @@ +/* ISC license. */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +int s6rc_repo_fix (char const *repo, uint32_t options, unsigned int verbosity) +{ + stralloc sa = STRALLOC_ZERO ; + genalloc svlist = GENALLOC_ZERO ; /* s6rc_repo_sv */ + genalloc badga = GENALLOC_ZERO ; /* uint32_t */ + genalloc setind = GENALLOC_ZERO ; /* size_t */ + int n ; + + if (verbosity >= 3) + strerr_warni2x("checking set consistency in repository ", repo) ; + + n = s6rc_repo_list_sets(repo, &sa, &setind) ; + if (n < 0) + { + strerr_warnfu1sys("list sets") ; + return 0 ; + } + for (uint32_t i = 0 ; i < nsets ; i++) + { + if (verbosity >= 3) + strerr_warni2x("checking set ", sa.s + genalloc_s(size_t, &setind)[i]) ; + if (!s6rc_repo_fixset(repo, sa.s + genalloc_s(size_t, &setind)[i], options, verbosity, &sa, &svlist, &badga)) goto err ; + } + + genalloc_free(s6rc_repo_sv, &svlist) ; + genalloc_free(uint32_t, &badga) ; + genalloc_free(size_t, &setind) ; + stralloc_free(&sa) ; + return 1 ; + + err: + genalloc_free(s6rc_repo_sv, &svlist) ; + genalloc_free(uint32_t, &badga) ; + genalloc_free(size_t, &setind) ; + stralloc_free(&sa) ; + return 0 ; +} -- cgit v1.3.1