From 73fdae45621f8a419ffcbffac4330ea09c79ddc8 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Fri, 17 Feb 2023 21:25:46 +1100
Subject: [PATCH] remove disen entry at tree resolve file. This is checked with
 the tree master resolve file

---
 src/include/66/ssexec.h                      |  8 +----
 src/include/66/tree.h                        | 13 +++----
 src/lib66/exec/ssexec_tree_resolve.c         | 37 ++++++++++----------
 src/lib66/tree/tree_resolve_copy.c           |  1 -
 src/lib66/tree/tree_resolve_get_field_tosa.c |  5 ---
 src/lib66/tree/tree_resolve_modify_field.c   |  8 -----
 src/lib66/tree/tree_resolve_read_cdb.c       |  4 ---
 src/lib66/tree/tree_resolve_write_cdb.c      |  5 +--
 8 files changed, 25 insertions(+), 56 deletions(-)

diff --git a/src/include/66/ssexec.h b/src/include/66/ssexec.h
index fc56003a..c3419184 100644
--- a/src/include/66/ssexec.h
+++ b/src/include/66/ssexec.h
@@ -35,11 +35,6 @@ struct ssexec_s
     //char live[SS_MAX_SERVICE] ;
     //size_t livelen ;
 
-    stralloc tree ;
-
-    //char tree[SS_MAX_SERVICE] ;
-    //size_t treelen ;
-
     stralloc scandir ;
 
     //char scandir[SS_MAX_SERVICE] ;
@@ -76,7 +71,6 @@ struct ssexec_s
 
 #define SSEXEC_ZERO {   .base = STRALLOC_ZERO, \
                         .live = STRALLOC_ZERO, \
-                        .tree = STRALLOC_ZERO, \
                         .scandir = STRALLOC_ZERO, \
                         .treename = STRALLOC_ZERO, \
                         .treeallow = 0, \
@@ -100,7 +94,7 @@ typedef ssexec_func_t *ssexec_func_t_ref ;
 extern void ssexec_free(ssexec_t *info) ;
 extern void ssexec_copy(ssexec_t *dest, ssexec_t *src) ;
 extern ssexec_t const ssexec_zero ;
-extern void set_ssinfo(ssexec_t *info) ;
+extern void set_treeinfo(ssexec_t *info) ;
 
 extern ssexec_func_t ssexec_parse ;
 extern ssexec_func_t ssexec_init ;
diff --git a/src/include/66/tree.h b/src/include/66/tree.h
index bfd6bc95..514dbfae 100644
--- a/src/include/66/tree.h
+++ b/src/include/66/tree.h
@@ -53,9 +53,8 @@ struct resolve_tree_s
 
     uint32_t init ;//not initialized->0, initialized->1
     uint32_t supervised ;//not superviseded->0, supervised->1
-    uint32_t disen ;//disable->0, enable->1
 } ;
-#define RESOLVE_TREE_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+#define RESOLVE_TREE_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0,0,0,0,0,0 }
 
 typedef enum resolve_tree_enum_e resolve_tree_enum_t, *resolve_tree_enum_t_ref;
 enum resolve_tree_enum_e
@@ -73,7 +72,6 @@ enum resolve_tree_enum_e
     E_RESOLVE_TREE_NCONTENTS,
     E_RESOLVE_TREE_INIT,
     E_RESOLVE_TREE_SUPERVISED,
-    E_RESOLVE_TREE_DISEN,
     E_RESOLVE_TREE_ENDOFKEY
 } ;
 
@@ -139,7 +137,7 @@ extern int tree_isvalid(char const *base, char const *treename) ;
 /** Append @tree with the name of the current tree
  * @Return 1 on success
  * @Return 0 on fail */
-extern int tree_find_current(stralloc *tree, char const *base) ;
+extern int tree_find_current(char *tree, char const *base) ;
 
 /** @Return 1 on success
  * @Return 0 if not valid
@@ -168,16 +166,13 @@ extern int tree_ongroups(char const *base, char const *treename, char const *gro
 
 extern int tree_copy(stralloc *dir, char const *tree,char const *treename) ;
 
-extern int tree_get_permissions(char const *tree, uid_t owner) ;
+extern int tree_get_permissions(char const *base, char const *treename) ;
 
 extern int tree_sethome(ssexec_t *info) ;
 
-extern char tree_setname(stralloc *sa, char const *tree) ;
-
 extern int tree_switch_current(char const *base, char const *tree) ;
 
 
-
 /**
  *
  * Resolve API
@@ -191,6 +186,8 @@ extern int tree_resolve_copy(resolve_tree_t *dst, resolve_tree_t *tres) ;
 extern int tree_resolve_modify_field(resolve_tree_t *tres, uint8_t field, char const *data) ;
 extern int tree_resolve_get_field_tosa(stralloc *sa, resolve_tree_t *tres, resolve_tree_enum_t field) ;
 extern int tree_resolve_array_search(resolve_tree_t *ares, unsigned int areslen, char const *name) ;
+extern void tree_service_add(char const *base, char const *treename, char const *service) ;
+extern void tree_service_remove(char const *base, char const *treename, char const *service) ;
 /** Master */
 extern int tree_resolve_master_read_cdb(cdb *c, resolve_tree_master_t *mres) ;
 extern int tree_resolve_master_write_cdb(cdbmaker *c, resolve_tree_master_t *mres) ;
diff --git a/src/lib66/exec/ssexec_tree_resolve.c b/src/lib66/exec/ssexec_tree_resolve.c
index c3253cf9..ea85680e 100644
--- a/src/lib66/exec/ssexec_tree_resolve.c
+++ b/src/lib66/exec/ssexec_tree_resolve.c
@@ -34,7 +34,7 @@
 #include <66/config.h>
 #include <66/state.h>
 
-#define MAXOPTS 19
+#define MAXOPTS 18
 
 static wchar_t const field_suffix[] = L" :" ;
 static char fields[INFO_NKEY][INFO_FIELD_MAXLEN] = {{ 0 }} ;
@@ -79,7 +79,7 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
     int r = 0 ;
     uint8_t master = 0 ;
 
-    char const *svname = 0 ;
+    char const *treename = 0 ;
 
     resolve_wrapper_t_ref wres = 0 ;
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
@@ -91,7 +91,7 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
     if (argc < 1)
         log_usage(usage_tree_resolve, "\n", help_tree_resolve) ;
 
-    svname = *argv ;
+    treename = *argv ;
 
     char tree_buf[MAXOPTS][INFO_FIELD_MAXLEN] = {
         "name",
@@ -106,14 +106,13 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
         "ngroups",
         "ncontents",
         "init" ,
-        "supervised",
-        "disen", // 14
+        "supervised", // 13
         // Master
         "enabled",
         "current",
         "contents",
         "nenabled",
-        "ncontents" // 19
+        "ncontents" // 18
     } ;
 
     if (!strcmp(argv[0], SS_MASTER + 1)) {
@@ -124,16 +123,17 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
     } else {
 
         wres = resolve_set_struct(DATA_TREE, &tres) ;
-    }
 
-    r = tree_isvalid(info->base.s, svname) ;
-    if (r < 0)
-        log_diesys(LOG_EXIT_SYS, "invalid tree directory") ;
+        r = tree_isvalid(info->base.s, treename) ;
+
+        if (r < 0)
+        log_dieu(LOG_EXIT_SYS, "check validity of tree: ", treename) ;
 
-    if (!r)
-        log_dieusys(LOG_EXIT_SYS, "find tree: ", svname) ;
+        if (!r)
+            log_dieusys(LOG_EXIT_SYS, "find tree: ", treename) ;
+    }
 
-    if (!resolve_read_g(wres, info->base.s, svname))
+    if (!resolve_read_g(wres, info->base.s, treename))
         log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
 
     info_field_align(tree_buf, fields, field_suffix,MAXOPTS) ;
@@ -153,17 +153,16 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
         info_display_int(fields[10], tres.ncontents) ;
         info_display_int(fields[11], tres.init) ;
         info_display_int(fields[12], tres.supervised) ;
-        info_display_int(fields[13], tres.disen) ;
 
     } else {
 
         info_display_string(fields[0], mres.sa.s, mres.name, 1) ;
         info_display_string(fields[3], mres.sa.s, mres.allow, 1) ;
-        info_display_string(fields[14], mres.sa.s, mres.enabled, 1) ;
-        info_display_string(fields[15], mres.sa.s, mres.current, 1) ;
-        info_display_string(fields[16], mres.sa.s, mres.contents, 1) ;
-        info_display_int(fields[17], mres.nenabled) ;
-        info_display_int(fields[18], mres.ncontents) ;
+        info_display_string(fields[13], mres.sa.s, mres.enabled, 1) ;
+        info_display_string(fields[14], mres.sa.s, mres.current, 1) ;
+        info_display_string(fields[15], mres.sa.s, mres.contents, 1) ;
+        info_display_int(fields[16], mres.nenabled) ;
+        info_display_int(fields[17], mres.ncontents) ;
     }
 
     resolve_free(wres) ;
diff --git a/src/lib66/tree/tree_resolve_copy.c b/src/lib66/tree/tree_resolve_copy.c
index ef5776be..ac66a173 100644
--- a/src/lib66/tree/tree_resolve_copy.c
+++ b/src/lib66/tree/tree_resolve_copy.c
@@ -47,7 +47,6 @@ int tree_resolve_copy(resolve_tree_t *dst, resolve_tree_t *tres)
     dst->ncontents = tres->ncontents ;
     dst->init = tres->init ;
     dst->supervised = tres->supervised ;
-    dst->disen = tres->disen ;
 
     return 1 ;
 
diff --git a/src/lib66/tree/tree_resolve_get_field_tosa.c b/src/lib66/tree/tree_resolve_get_field_tosa.c
index 9234cf40..dd058cc2 100644
--- a/src/lib66/tree/tree_resolve_get_field_tosa.c
+++ b/src/lib66/tree/tree_resolve_get_field_tosa.c
@@ -88,11 +88,6 @@ int tree_resolve_get_field_tosa(stralloc *sa, resolve_tree_t *tres, resolve_tree
             str = fmt ;
             break ;
 
-        case E_RESOLVE_TREE_DISEN:
-            fmt[uint32_fmt(fmt,tres->disen)] = 0 ;
-            str = fmt ;
-            break ;
-
         default:
             return 0 ;
     }
diff --git a/src/lib66/tree/tree_resolve_modify_field.c b/src/lib66/tree/tree_resolve_modify_field.c
index 496116e8..1f7ec40f 100644
--- a/src/lib66/tree/tree_resolve_modify_field.c
+++ b/src/lib66/tree/tree_resolve_modify_field.c
@@ -37,7 +37,6 @@ resolve_field_table_t resolve_tree_field_table[] = {
     [E_RESOLVE_TREE_NCONTENTS] = { .field = "ncontents" },
     [E_RESOLVE_TREE_INIT] = { .field = "init" },
     [E_RESOLVE_TREE_SUPERVISED] = { .field = "supervised" },
-    [E_RESOLVE_TREE_DISEN] = { .field = "disen" },
     [E_RESOLVE_TREE_ENDOFKEY] = { .field = 0 }
 } ;
 
@@ -125,13 +124,6 @@ int tree_resolve_modify_field(resolve_tree_t *tres, uint8_t field, char const *d
             tres->supervised = ifield ;
             break ;
 
-        case E_RESOLVE_TREE_DISEN:
-            if (!data)
-                data = "0" ;
-            if (!uint0_scan(data, &ifield)) goto err ;
-            tres->disen = ifield ;
-            break ;
-
         default:
             break ;
     }
diff --git a/src/lib66/tree/tree_resolve_read_cdb.c b/src/lib66/tree/tree_resolve_read_cdb.c
index 3f74c649..6d2bae3c 100644
--- a/src/lib66/tree/tree_resolve_read_cdb.c
+++ b/src/lib66/tree/tree_resolve_read_cdb.c
@@ -87,10 +87,6 @@ int tree_resolve_read_cdb(cdb *c, resolve_tree_t *tres)
     x = resolve_find_cdb(&tmp,c,"supervised") ;
     tres->supervised = x ;
 
-    /* disen */
-    x = resolve_find_cdb(&tmp,c,"disen") ;
-    tres->disen = x ;
-
     free(wres) ;
     stralloc_free(&tmp) ;
 
diff --git a/src/lib66/tree/tree_resolve_write_cdb.c b/src/lib66/tree/tree_resolve_write_cdb.c
index e0e996ea..7f1ae37a 100644
--- a/src/lib66/tree/tree_resolve_write_cdb.c
+++ b/src/lib66/tree/tree_resolve_write_cdb.c
@@ -62,10 +62,7 @@ int tree_resolve_write_cdb(cdbmaker *c, resolve_tree_t *tres)
     !resolve_add_cdb_uint(c,"init",tres->init) ||
 
     /* supervised */
-    !resolve_add_cdb_uint(c,"supervised",tres->supervised) ||
-
-    /* disen */
-    !resolve_add_cdb_uint(c,"disen",tres->disen)) return 0 ;
+    !resolve_add_cdb_uint(c,"supervised",tres->supervised)) return 0 ;
 
     return 1 ;
 }
-- 
GitLab