From b4a34eb5963cc3a0a3d1447832c4e5acb2c74ea6 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Mon, 10 Jan 2022 18:31:10 +1100
Subject: [PATCH] saseed stralloc is now a part of the tree_seed_e structure

---
 src/lib66/tree_seed.c | 105 +++++++++++-------------------------------
 1 file changed, 27 insertions(+), 78 deletions(-)

diff --git a/src/lib66/tree_seed.c b/src/lib66/tree_seed.c
index 28b96e37..4fe07430 100644
--- a/src/lib66/tree_seed.c
+++ b/src/lib66/tree_seed.c
@@ -33,13 +33,9 @@
 #include <66/utils.h>
 #include <66/config.h>
 
-stralloc saseed = STRALLOC_ZERO ;
-
-void tree_seed_free(void)
+void tree_seed_free(tree_seed_t *seed)
 {
-
-    stralloc_free(&saseed) ;
-
+    stralloc_free(&seed->sa) ;
 }
 
 static ssize_t tree_seed_get_key(char *table,char const *str)
@@ -121,8 +117,8 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 
             case SEED_DEPENDS :
 
-                seed->depends = saseed.len ;
-                if (!sastr_add_string(&saseed, val))
+                seed->depends = seed->sa.len ;
+                if (!sastr_add_string(&seed->sa, val))
                     goto err ;
 
                 seed->nopts++ ;
@@ -131,8 +127,8 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 
             case SEED_REQUIREDBY :
 
-                seed->requiredby = saseed.len ;
-                if (!sastr_add_string(&saseed, val))
+                seed->requiredby = seed->sa.len ;
+                if (!sastr_add_string(&seed->sa, val))
                     goto err ;
 
                 seed->nopts++ ;
@@ -142,7 +138,7 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
             case SEED_ENABLE :
 
                 if (!strcmp(val,"true") || !strcmp(val,"True"))
-                    seed->enabled = 1 ;
+                    seed->disen = 1 ;
 
                 seed->nopts++ ;
 
@@ -150,8 +146,8 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 
             case SEED_ALLOW :
 
-                seed->allow = saseed.len ;
-                if (!sastr_add_string(&saseed, val))
+                seed->allow = seed->sa.len ;
+                if (!sastr_add_string(&seed->sa, val))
                     goto err ;
 
                 seed->nopts++ ;
@@ -160,8 +156,8 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 
             case SEED_DENY :
 
-                seed->deny = saseed.len ;
-                if (!sastr_add_string(&saseed, val))
+                seed->deny = seed->sa.len ;
+                if (!sastr_add_string(&seed->sa, val))
                     goto err ;
 
                 seed->nopts++ ;
@@ -177,46 +173,26 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 
                 break ;
 
-            case SEED_GROUP :
+            case SEED_GROUPS :
 
-                if (strcmp(val,"boot") && strcmp(val,"admin") && strcmp(val,"user")) {
+                if (strcmp(val,TREE_GROUPS_BOOT) && strcmp(val,TREE_GROUPS_ADM) && strcmp(val,TREE_GROUPS_USER)) {
 
                     log_warn("invalid group: ", val) ;
                     goto err ;
                 }
 
-                seed->group = saseed.len ;
-                if (!sastr_add_string(&saseed, val))
+                seed->groups = seed->sa.len ;
+                if (!sastr_add_string(&seed->sa, val))
                     goto err ;
 
                 seed->nopts++ ;
 
                 break ;
-            /*
-            case SEED_SERVICES :
-                {
-                    stralloc sv = STRALLOC_ZERO ;
-
-                    if (!sastr_clean_string_wdelim(&sv, val, ',') ||
-                        !sastr_rebuild_in_oneline(&sv)) {
-
-                            log_warnu("clean service list") ;
-                            goto err ;
-                    }
-
-                    seed->services = saseed.len ;
-                    if (!sastr_add_string(&saseed, sv.s))
-                        goto err ;
 
-                    seed->nopts++ ;
-
-                    break ;
-                }
-            */
             default :
 
                 log_warn("unknown key: ", key, " -- ignoring") ;
-                break ;
+                goto err ;
         }
 
     }
@@ -233,6 +209,7 @@ int tree_seed_parse_file(tree_seed_t *seed, char const *seedpath)
 static int tree_seed_file_isvalid(char const *seedpath, char const *treename)
 {
     log_flow() ;
+
     int r ;
     size_t slen = strlen(seedpath), tlen = strlen(treename) ;
     char seed[slen + tlen + 1] ;
@@ -309,7 +286,7 @@ int tree_seed_isvalid(char const *seed)
     return e ;
 }
 
-int tree_seed_ismandatory(tree_seed_t *seed, uint8_t check_service)
+int tree_seed_ismandatory(tree_seed_t *seed, uint8_t check_contents)
 {
     log_flow() ;
 
@@ -318,53 +295,25 @@ int tree_seed_ismandatory(tree_seed_t *seed, uint8_t check_service)
     //size_t pos = 0 ;
     stralloc sv = STRALLOC_ZERO ;
 
-    char *group = saseed.s + seed->group ;
-    //char *service = saseed.s + seed->services ;
+    char *groups = seed->sa.s + seed->groups ;
 
-    if (!uid && (!strcmp(group, "user"))) {
+    if (!uid && (!strcmp(groups, TREE_GROUPS_USER))) {
 
         log_warn("Only regular user can use this seed") ;
         goto err ;
 
-    } else if (uid && (!strcmp(group, "root"))) {
+    } else if (uid && (strcmp(groups, TREE_GROUPS_USER))) {
 
-        log_warn("Only root user can use this seed") ;
+        log_warn("Only root user can use seed: ", seed->sa.s + seed->name) ;
         goto err ;
     }
 
-    if (!strcmp(saseed.s + seed->name , "boot") && seed->enabled) {
+    if (!strcmp(groups, TREE_GROUPS_BOOT) && seed->disen) {
 
-        log_warn("enable was asked for a tree on group boot -- ignoring enable request") ;
-        seed->enabled = 0 ;
+        log_1_warn("enable was asked for a tree on group boot -- ignoring enable request") ;
+        seed->disen = 0 ;
     }
-    /**
-    if (check_service) {
-
-        stralloc sasrc = STRALLOC_ZERO ;
 
-        if (!stralloc_cats(&sv, service) ||
-            !sastr_clean_element(&sv)) {
-
-                log_warnu("clean service list") ;
-                stralloc_free(&sasrc) ;
-                goto err ;
-        }
-
-        FOREACH_SASTR(&sv, pos) {
-
-            char *s = sv.s + pos ;
-
-            // service_frontend_src already warn user
-            if (!service_frontend_path(&sasrc,s, uid, 0)) {
-
-                stralloc_free(&sasrc) ;
-                goto err ;
-            }
-        }
-
-        stralloc_free(&sasrc) ;
-    }
-    */
     e = 1 ;
     err:
         stralloc_free(&sv) ;
@@ -381,8 +330,8 @@ int tree_seed_setseed(tree_seed_t *seed, char const *treename, uint8_t check_ser
     if (!tree_seed_resolve_path(&src, treename))
         goto err ;
 
-    seed->name = saseed.len ;
-    if (!sastr_add_string(&saseed, treename))
+    seed->name = seed->sa.len ;
+    if (!sastr_add_string(&seed->sa, treename))
         goto err ;
 
     if (!tree_seed_parse_file(seed, src.s) ||
-- 
GitLab