diff --git a/src/lib66/exec/ssexec_env.c b/src/lib66/exec/ssexec_env.c
index 0c4a525f8feafd13098e562d906861db435ab480..d0cb5f2e4e315577539bb13058d0b66ac7f92aec 100644
--- a/src/lib66/exec/ssexec_env.c
+++ b/src/lib66/exec/ssexec_env.c
@@ -308,7 +308,7 @@ int ssexec_env(int argc, char const *const *argv, ssexec_t *info)
         goto freed ;
     }
 
-    if (!resolve_read_g(wres, info->base.s, sv))
+    if (resolve_read_g(wres, info->base.s, sv) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of: ", sv) ;
 
     if (!res.environ.envdir) {
diff --git a/src/lib66/exec/ssexec_resolve.c b/src/lib66/exec/ssexec_resolve.c
index 9611b16cc4e16be56e870669c447e09c7578538b..00610854a3881f1649fa735efb34461acd263307 100644
--- a/src/lib66/exec/ssexec_resolve.c
+++ b/src/lib66/exec/ssexec_resolve.c
@@ -266,7 +266,7 @@ int ssexec_resolve(int argc, char const *const *argv, ssexec_t *info)
     else if (!r || r == STATE_FLAGS_FALSE)
         log_die(LOG_EXIT_USER, "service: ", svname, " is not parsed -- try to parse it first using '66 parse ", svname, "'") ;
 
-    if (!resolve_read_g(wres, info->base.s, svname))
+    if (resolve_read_g(wres, info->base.s, svname) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
 
     info_field_align(service_buf, fields, field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_state.c b/src/lib66/exec/ssexec_state.c
index 481f3bae95af062816cd4153acbfd1dadd6ddc55..61d11b30193209500285b5837a166f047a3a939c 100644
--- a/src/lib66/exec/ssexec_state.c
+++ b/src/lib66/exec/ssexec_state.c
@@ -97,7 +97,7 @@ int ssexec_state(int argc, char const *const *argv, ssexec_t *info)
         log_die(LOG_EXIT_USER, "service: ", svname, " is not parsed -- try to parse it using '66 parse ", svname, "'") ;
 
     r = resolve_read_g(wres, info->base.s, svname) ;
-    if (r < 0)
+    if (r <= 0)
         log_dieu(LOG_EXIT_SYS, "read resolve file: ", svname) ;
 
     info_field_align(buf,fields,field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_status.c b/src/lib66/exec/ssexec_status.c
index e7fd374d988c5296644b5abff5851cd37272c120..0cebee134d1e37d873fb1dbb7f604e78ce5ae547 100644
--- a/src/lib66/exec/ssexec_status.c
+++ b/src/lib66/exec/ssexec_status.c
@@ -960,7 +960,7 @@ int ssexec_status(int argc, char const *const *argv, ssexec_t *info)
     if (!r || r == STATE_FLAGS_FALSE)
         log_die(LOG_EXIT_SYS, "service: ", svname, " is not parsed -- try to parse it using '66 parse ", svname, "'") ;
 
-    if (!resolve_read_g(wres, info->base.s, svname))
+    if (resolve_read_g(wres, info->base.s, svname) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", svname) ;
 
     info_display_all(&res,what) ;
diff --git a/src/lib66/exec/ssexec_tree_admin.c b/src/lib66/exec/ssexec_tree_admin.c
index 6f177c6b619946ea831c69e64c0ae1caeaf045ea..834894c6e871e5b11ba12a676c52f45389080269 100644
--- a/src/lib66/exec/ssexec_tree_admin.c
+++ b/src/lib66/exec/ssexec_tree_admin.c
@@ -493,7 +493,7 @@ void tree_groups(graph_t *graph, char const *base, char const *treename, char co
     uint_pack(pack, nb) ;
     pack[uint_fmt(pack, nb)] = 0 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (!resolve_modify_field(wres, E_RESOLVE_TREE_GROUPS, val) ||
@@ -531,7 +531,7 @@ void tree_master_modify_contents(char const *base)
         if (!sastr_rebuild_in_oneline(&sa))
             log_dieu(LOG_EXIT_SYS, "rebuild stralloc") ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve Master file of trees") ;
 
     mres.ncontents = (uint32_t)ncontents ;
@@ -609,7 +609,7 @@ void tree_master_enable_disable(char const *base, char const *treename, uint8_t
 
     log_trace(!action ? "disable" : "enable"," tree: ", treename, " from: ", SS_MASTER + 1) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve Master file of trees") ;
 
     if (!mres.nenabled && action) {
@@ -806,7 +806,7 @@ void tree_depends_requiredby(graph_t *g, char const *base, char const *treename,
     uint_pack(pack, nb) ;
     pack[uint_fmt(pack, nb)] = 0 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (!resolve_modify_field(wres, ewhat, sa.s) ||
@@ -892,7 +892,7 @@ void tree_rules(char const *base, char const *treename, uid_t *uids, uint8_t wha
 
     log_trace("set ", !what ? "denied" : "allowed", " user for tree: ", treename, "..." ) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (tres.nallow)
@@ -1078,7 +1078,7 @@ void tree_clone(char const *clone, ssexec_t *info)
     if (lchown(dst, st.st_uid, st.st_gid) < 0)
         log_dieusys(LOG_EXIT_SYS, "chown: ", dst) ;
 
-    if (!resolve_read(wres, info->base.s, clone))
+    if (resolve_read(wres, info->base.s, clone) <= 0)
         log_dieu(LOG_EXIT_SYS, "read resolve file of tree: ", clone) ;
 
     if (!resolve_modify_field(wres, E_RESOLVE_TREE_INIT, 0) ||
diff --git a/src/lib66/exec/ssexec_tree_resolve.c b/src/lib66/exec/ssexec_tree_resolve.c
index da5e79331eee84b35deb5c1c862393a1e844f80c..c18198c3dde188444235248de2a22229ed747e63 100644
--- a/src/lib66/exec/ssexec_tree_resolve.c
+++ b/src/lib66/exec/ssexec_tree_resolve.c
@@ -133,7 +133,7 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
             log_dieusys(LOG_EXIT_SYS, "find tree: ", treename) ;
     }
 
-    if (!resolve_read_g(wres, info->base.s, treename))
+    if (resolve_read_g(wres, info->base.s, treename)  <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
 
     info_field_align(tree_buf, fields, field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_tree_signal.c b/src/lib66/exec/ssexec_tree_signal.c
index 1be0f2266f0fe0247d337049b6d421c7e70d7add..da2e085418f411aa6d781cb6db037100aaed41a8 100644
--- a/src/lib66/exec/ssexec_tree_signal.c
+++ b/src/lib66/exec/ssexec_tree_signal.c
@@ -184,6 +184,7 @@ static void all_redir_fd(void)
 
 void tree_resolve_array_free(resolve_tree_t *ares, unsigned int areslen)
 {
+    log_flow() ;
 
     unsigned int pos = 0 ;
     for (; pos < areslen ; pos++)
@@ -922,7 +923,7 @@ int ssexec_tree_signal(int argc, char const *const *argv, ssexec_t *info)
             resolve_tree_t cp = RESOLVE_TREE_ZERO ;
             wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-            if (!resolve_read_g(wres, info->base.s, treename))
+            if (resolve_read_g(wres, info->base.s, treename) <= 0)
                 log_dieu(LOG_EXIT_SYS, "read resolve file of: ", treename, " -- please make a bug report") ;
 
             tree_resolve_copy(&cp, &tres) ;
diff --git a/src/lib66/exec/ssexec_tree_status.c b/src/lib66/exec/ssexec_tree_status.c
index 29cffcfbc01f2c39bb7045095e84f784b9452d1b..072e741902d004fd4e919af5a0d54c1b199015bf 100644
--- a/src/lib66/exec/ssexec_tree_status.c
+++ b/src/lib66/exec/ssexec_tree_status.c
@@ -138,7 +138,7 @@ static void info_display_allow(char const *field, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, pinfo->base.s, treename))
+    if (resolve_read_g(wres, pinfo->base.s, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of tree: ", treename) ;
 
     if (NOFIELD)
@@ -196,7 +196,7 @@ static void info_display_groups(char const *field, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, pinfo->base.s, treename))
+    if (resolve_read_g(wres, pinfo->base.s, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of: ", treename) ;
 
     if (NOFIELD)
diff --git a/src/lib66/graph/graph_build_tree.c b/src/lib66/graph/graph_build_tree.c
index 6ea14f4fcaefda07391bda6934454af48e82a5eb..8a6bf0d3c169764b410ccbaa1ab489638aa132c1 100644
--- a/src/lib66/graph/graph_build_tree.c
+++ b/src/lib66/graph/graph_build_tree.c
@@ -44,7 +44,7 @@ void graph_build_tree(graph_t *g, char const *base, resolve_tree_master_enum_t f
 
         char *name = sa.s + pos ;
 
-        if (!resolve_read_g(wres, base, name))
+        if (resolve_read_g(wres, base, name) <= 0)
             log_dieu(LOG_EXIT_SYS, "read resolve file of: ", name) ;
 
         if (!graph_vertex_add(g, name))
diff --git a/src/lib66/info/info_graph_display_service.c b/src/lib66/info/info_graph_display_service.c
index 881fafaa8241a1c68578fa5d0df74599151b831d..b81c0340465eebe8ff75413ea0538e08cfa03d3c 100644
--- a/src/lib66/info/info_graph_display_service.c
+++ b/src/lib66/info/info_graph_display_service.c
@@ -50,7 +50,7 @@ int info_graph_display_service(char const *name)
     if (!set_ownersysdir_stack(base, getuid()))
         log_warn_return(LOG_EXIT_ZERO, "set owner directory") ;
 
-    if (!resolve_read_g(wres, base, name)) {
+    if (resolve_read_g(wres, base, name) <= 0) {
         log_warnu("read resolve file of: ",name) ;
         goto freed ;
     }
diff --git a/src/lib66/info/info_graph_display_tree.c b/src/lib66/info/info_graph_display_tree.c
index 7cd48eb87df1f6a1d8ba786a45393ae4050cc705..b71eab17e25f90859a803bce5b3f19170d26c4bd 100644
--- a/src/lib66/info/info_graph_display_tree.c
+++ b/src/lib66/info/info_graph_display_tree.c
@@ -54,7 +54,7 @@ int info_graph_display_tree(char const *name)
         goto freed ;
     }
 
-    if (!resolve_read_g(wres, sa.s, name))
+    if (resolve_read_g(wres, sa.s, name) <= 0)
         goto freed ;
 
     sa.len = 0 ;
diff --git a/src/lib66/resolve/resolve_get_field_tosa_g.c b/src/lib66/resolve/resolve_get_field_tosa_g.c
index 2bd7413f6cb8bc38bdc41a7557ed9d20c4b1fc53..b4ce381036cb659d2933e735feb9d9ae7604c444 100644
--- a/src/lib66/resolve/resolve_get_field_tosa_g.c
+++ b/src/lib66/resolve/resolve_get_field_tosa_g.c
@@ -54,7 +54,7 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u
 
     } else return 0 ;
 
-    if (!resolve_read_g(wres, base, name))
+    if (resolve_read_g(wres, base, name) <= 0)
         goto err ;
 
     if (!resolve_get_field_tosa(sa, wres, field))
diff --git a/src/lib66/resolve/resolve_modify_field_g.c b/src/lib66/resolve/resolve_modify_field_g.c
index e882bfdff2155429e27c4aeba6ef0ea3cb181267..9792f7b53590d9fa216059b9bec9d3e5134cfc59 100644
--- a/src/lib66/resolve/resolve_modify_field_g.c
+++ b/src/lib66/resolve/resolve_modify_field_g.c
@@ -22,7 +22,7 @@ int resolve_modify_field_g(resolve_wrapper_t_ref wres, char const *base, char co
 {
     log_flow() ;
 
-    if (!resolve_read_g(wres, base, name))
+    if (resolve_read_g(wres, base, name) <= 0)
         return 0 ;
 
     if (!resolve_modify_field(wres, field, value))
diff --git a/src/lib66/sanitize/sanitize_source.c b/src/lib66/sanitize/sanitize_source.c
index ead5f1c067143944562c7d109c8f1f90b25361c9..f678f0edd990e6a1ad3b0562991f19827476a199 100644
--- a/src/lib66/sanitize/sanitize_source.c
+++ b/src/lib66/sanitize/sanitize_source.c
@@ -67,7 +67,7 @@ void sanitize_source(char const *name, ssexec_t *info)
         /** We can come from ssexec_reconfigure, in
          * this case we need to use the tree defined previously */
         r = resolve_read_g(wres, info->base.s, name) ;
-        if (r < 0)
+        if (r <= 0)
             log_dieu(LOG_EXIT_SYS, "read resolve file: ", name) ;
 
         if (!state_read(&sta, &res))
diff --git a/src/lib66/service/service_graph_collect.c b/src/lib66/service/service_graph_collect.c
index d249b667f59a892cd4f1bb18982ed9b2af9ecc47..97e67c5a26cacfcb92cb7b831298f0290c89876e 100644
--- a/src/lib66/service/service_graph_collect.c
+++ b/src/lib66/service/service_graph_collect.c
@@ -83,7 +83,7 @@ void service_graph_collect(graph_t *g, char const *alist, size_t alen, resolve_s
             } else
                 continue ;
 
-            if (!resolve_read_g(wres, info->base.s, name))
+            if (resolve_read_g(wres, info->base.s, name) <= 0)
                 log_dieu(LOG_EXIT_SYS, "read resolve file of: ", name, " -- please make a bug report") ;
 
             if (FLAGS_ISSET(flag, STATE_FLAGS_ISSUPERVISED)) {
diff --git a/src/lib66/tree/tree_find_current.c b/src/lib66/tree/tree_find_current.c
index f2ef73d981df99d5a379e17b6191d8ba4ba63758..8ff8d3b5381fb6d379322b68a557224ede3bb909 100644
--- a/src/lib66/tree/tree_find_current.c
+++ b/src/lib66/tree/tree_find_current.c
@@ -31,7 +31,7 @@ int tree_find_current(char *treename, char const *base)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         goto err ;
 
     if (mres.current) {
diff --git a/src/lib66/tree/tree_get_permissions.c b/src/lib66/tree/tree_get_permissions.c
index 96ca2db9ae7bcf2f8629c8daaec73baac2a3fe6f..16a8b130942a42cff0449391db43749bf9d9978d 100644
--- a/src/lib66/tree/tree_get_permissions.c
+++ b/src/lib66/tree/tree_get_permissions.c
@@ -37,7 +37,7 @@ int tree_get_permissions(char const *base, char const *treename)
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
     uid_t uid = getuid(), treeuid = -1 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         goto freed ;
 
     if (tres.nallow) {
diff --git a/src/lib66/tree/tree_iscurrent.c b/src/lib66/tree/tree_iscurrent.c
index 22b9ef93a93bf6aacb05673e8a88dad82372fdac..84d711072d3823dfa39a9099de7ac9a5f9c62f95 100644
--- a/src/lib66/tree/tree_iscurrent.c
+++ b/src/lib66/tree/tree_iscurrent.c
@@ -29,7 +29,7 @@ int tree_iscurrent(char const *base, char const *treename)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1)  <= 0)
         goto err ;
 
     if (!strcmp(mres.sa.s + mres.current, treename))
diff --git a/src/lib66/tree/tree_isenabled.c b/src/lib66/tree/tree_isenabled.c
index 1edbd99f432f0a884790e0a997dc8cfbbc1063e2..00346fc9c65941e3d9a51512e804f6ba5f5d9079 100644
--- a/src/lib66/tree/tree_isenabled.c
+++ b/src/lib66/tree/tree_isenabled.c
@@ -32,7 +32,7 @@ int tree_isenabled(char const *base, char const *treename)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1)  <= 0)
         goto err ;
 
     if (mres.nenabled) {
diff --git a/src/lib66/tree/tree_isinitialized.c b/src/lib66/tree/tree_isinitialized.c
index abbc262ac9b41289acc30ca674e4839eb7083fbc..9e16dc74be9ea2d509730dbbfff082f589097bbe 100644
--- a/src/lib66/tree/tree_isinitialized.c
+++ b/src/lib66/tree/tree_isinitialized.c
@@ -29,7 +29,7 @@ int tree_isinitialized(char const *base, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         goto err ;
 
     if (tres.init)
diff --git a/src/lib66/tree/tree_issupervised.c b/src/lib66/tree/tree_issupervised.c
index 96786f232e2e510897d85f06a372b0cba9f3c283..c7c95ff318a5803069d85741e73bf29c8f514c97 100644
--- a/src/lib66/tree/tree_issupervised.c
+++ b/src/lib66/tree/tree_issupervised.c
@@ -29,7 +29,7 @@ int tree_issupervised(char const *base, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         goto err ;
 
     if (tres.supervised)
diff --git a/src/lib66/tree/tree_ongroups.c b/src/lib66/tree/tree_ongroups.c
index c5e385d02d7abb62e1ce6577aa0d02e4b84f198b..aae0fcb4c8fb1e3bfaacf9268ee47ee51c6d62d9 100644
--- a/src/lib66/tree/tree_ongroups.c
+++ b/src/lib66/tree/tree_ongroups.c
@@ -34,7 +34,7 @@ int tree_ongroups(char const *base, char const *treename, char const *group)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         goto err ;
 
     if (tres.ngroups) {
diff --git a/src/lib66/tree/tree_service_add.c b/src/lib66/tree/tree_service_add.c
index d70674109941636a68caa7669bb5b0e717126f81..b4f71e3b585b71afa454fe189b58a1732c5df847 100644
--- a/src/lib66/tree/tree_service_add.c
+++ b/src/lib66/tree/tree_service_add.c
@@ -28,7 +28,7 @@ void tree_service_add(char const *base, char const *treename, char const *servic
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
     stralloc sa = STRALLOC_ZERO ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
 
     if (tres.ncontents) {
diff --git a/src/lib66/tree/tree_service_remove.c b/src/lib66/tree/tree_service_remove.c
index 7525b15853f78295f8d8c097e3da81ab52985e4d..14f983e6c6d267c7a41a944930b3df815e3c1130 100644
--- a/src/lib66/tree/tree_service_remove.c
+++ b/src/lib66/tree/tree_service_remove.c
@@ -31,7 +31,7 @@ void tree_service_remove(char const *base, char const *treename, char const *ser
 
     log_trace("modify field contents of resolve tree file: ", treename) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
 
     if (tres.ncontents) {