From 814138a4b18eac225cda1b6c188e9151f40f1a18 Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Tue, 29 Mar 2022 19:38:30 +1100 Subject: [PATCH] split the exitcode of resolve_read_g function. --- src/lib66/resolve/resolve_read_g.c | 12 ++++++++---- src/lib66/service/service_isenabled.c | 15 +++++++++------ src/lib66/service/service_isenabledat.c | 15 +++++++++------ 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/lib66/resolve/resolve_read_g.c b/src/lib66/resolve/resolve_read_g.c index 7999d4a3..6cc93e13 100644 --- a/src/lib66/resolve/resolve_read_g.c +++ b/src/lib66/resolve/resolve_read_g.c @@ -16,6 +16,7 @@ #include <oblibs/log.h> #include <oblibs/string.h> +#include <oblibs/types.h> #include <66/resolve.h> @@ -29,12 +30,15 @@ int resolve_read_g(resolve_wrapper_t *wres, char const *src, char const *name) char tmp[srclen + SS_RESOLVE_LEN + 1 + namelen + 1] ; auto_strings(tmp,src,SS_RESOLVE,"/",name) ; - r = scan_mode(tmp,S_IFREG) ; - if (r <= 0) - log_warnusys_return(LOG_EXIT_ZERO,"found resolve file: ", tmp) ; + int r = scan_mode(tmp,S_IFREG) ; + if (r < 0) + return -1 ; - if (!resolve_read_cdb(wres,tmp)) + if (!r) return 0 ; + if (!resolve_read_cdb(wres,tmp)) + return -1 ; + return 1 ; } diff --git a/src/lib66/service/service_isenabled.c b/src/lib66/service/service_isenabled.c index 46a8d489..0b8c7931 100644 --- a/src/lib66/service/service_isenabled.c +++ b/src/lib66/service/service_isenabled.c @@ -39,7 +39,7 @@ int service_isenabled(char const *sv) resolve_service_t res = RESOLVE_SERVICE_ZERO ; resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE, &res) ; size_t newlen = 0, pos = 0 ; - int e = -1 ; + int e = -1, r ; char const *exclude[3] = { SS_BACKUP + 1, SS_RESOLVE + 1, 0 } ; if (!set_ownersysdir(&sa, getuid())) { @@ -74,13 +74,15 @@ int service_isenabled(char const *sv) char trees[newlen + strlen(treename) + SS_SVDIRS_LEN + 1] ; auto_strings(trees, tmp, treename, SS_SVDIRS) ; - if (resolve_check(trees, sv)) { + r = resolve_read_g(wres, trees, sv) ; - if (!resolve_read(wres, trees, sv)) { + if (r < 0) { - log_warnu("read resolve file: ", trees, "/", sv) ; - goto freed ; - } + log_warnu("read resolve file: ", trees, "/", sv) ; + e = -1 ; + goto freed ; + + } else if (r) { if (res.disen) { @@ -91,6 +93,7 @@ int service_isenabled(char const *sv) } else { + log_trace(sv, " disabled at tree: ", treename) ; e = 2 ; goto freed ; } diff --git a/src/lib66/service/service_isenabledat.c b/src/lib66/service/service_isenabledat.c index 57d44281..582a54aa 100644 --- a/src/lib66/service/service_isenabledat.c +++ b/src/lib66/service/service_isenabledat.c @@ -39,7 +39,7 @@ int service_isenabledat(stralloc *tree, char const *sv) resolve_service_t res = RESOLVE_SERVICE_ZERO ; resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE, &res) ; size_t newlen = 0, pos = 0 ; - int e = -1 ; + int e = -1, r ; char const *exclude[3] = { SS_BACKUP + 1, SS_RESOLVE + 1, 0 } ; if (!set_ownersysdir(&sa, getuid())) { @@ -74,13 +74,16 @@ int service_isenabledat(stralloc *tree, char const *sv) char trees[newlen + strlen(treename) + SS_SVDIRS_LEN + 1] ; auto_strings(trees, tmp, treename, SS_SVDIRS) ; - if (resolve_check(trees, sv)) { - if (!resolve_read(wres, trees, sv)) { + r = resolve_read_g(wres, trees, sv) ; - log_warnu("read resolve file: ", trees, "/", sv) ; - goto freed ; - } + if (r < 0) { + + log_warnu("read resolve file: ", trees, "/", sv) ; + e = -1 ; + goto freed ; + + } else if (r) { if (res.disen) { -- GitLab