diff --git a/src/lib66/resolve/resolve_read_g.c b/src/lib66/resolve/resolve_read_g.c index 7999d4a32fc0fe1f3405bc48428d7a43fdc6a8fb..6cc93e1346ef1d327b9f6256fceec2df69ef71be 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 46a8d4899b51f7967ee3481fa2c173dbc9a7d600..0b8c793122d6f057da3fb3199dc2b2698083e956 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 57d4428146ed8698f59158495836dd0fc19478c4..582a54aa955a9278c2681993c0bffee14231e61c 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) {