From 034d68ea335b526bbc01576d73829c11a18bba27 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Wed, 9 Jun 2021 13:54:58 +1100
Subject: [PATCH] remove the ability to use @name for an instantiated service

---
 src/66/66-parser.c         | 25 ++-----------------------
 src/include/66/enum.h      |  3 +--
 src/include/66/parser.h    |  5 +++--
 src/lib66/parser_enabled.c | 33 ++-------------------------------
 src/lib66/parser_utils.c   | 30 ------------------------------
 src/lib66/ss_get_enum.c    |  1 -
 6 files changed, 8 insertions(+), 89 deletions(-)

diff --git a/src/66/66-parser.c b/src/66/66-parser.c
index bb6f7704..4fbdb322 100644
--- a/src/66/66-parser.c
+++ b/src/66/66-parser.c
@@ -149,29 +149,8 @@ int main(int argc, char const *const *argv,char const *const *envp)
             log_dieu(LOG_EXIT_SYS,"create instance service: ",name) ;
     }
 
-    if (!get_svname(&service,src.s)) log_dieu(LOG_EXIT_SYS,"get name of service: ",sv) ;
-
-    /** keep the name set by user
-     * uniquely for instantiated service
-     * The name must contain the template string */
-    if (ista > 0 && service.cname.name >= 0 )
-    {
-        stralloc sainsta = STRALLOC_ZERO ;
-        stralloc saname = STRALLOC_ZERO ;
-        if (!stralloc_cats(&saname,keep.s + service.cname.name)) log_die_nomem("stralloc") ;
-
-        if (!instance_splitname(&sainsta,name,ista,SS_INSTANCE_TEMPLATE)) log_dieu(LOG_EXIT_SYS,"split instance name") ;
-        if (sastr_find(&saname,sainsta.s) == -1)
-            log_die(LOG_EXIT_USER,"invalid instantiated service name: ", keep.s + service.cname.name) ;
-
-        stralloc_free(&sainsta) ;
-        stralloc_free(&saname) ;
-    }
-    else
-    {
-        service.cname.name = keep.len ;
-        if (!stralloc_catb(&keep,name,namelen + 1)) log_die_nomem("stralloc") ;
-    }
+    service.cname.name = keep.len ;
+    if (!stralloc_catb(&keep,name,namelen + 1)) log_die_nomem("stralloc") ;
 
     if (!parser(&service,&src,sv,service.cname.itype)) log_dieu(LOG_EXIT_SYS,"parse service file: ",sv) ;
 
diff --git a/src/include/66/enum.h b/src/include/66/enum.h
index f79b1756..0573252a 100644
--- a/src/include/66/enum.h
+++ b/src/include/66/enum.h
@@ -56,7 +56,6 @@ typedef enum enum_key_section_main_e enum_key_section_main_t, *enum_key_section_
 enum enum_key_section_main_e
 {
     KEY_MAIN_TYPE = 0 ,
-    KEY_MAIN_NAME ,
     KEY_MAIN_VERSION ,
     KEY_MAIN_DESCRIPTION ,
     KEY_MAIN_CONTENTS ,
@@ -74,6 +73,7 @@ enum enum_key_section_main_e
     KEY_MAIN_HIERCOPY ,
     KEY_MAIN_SIGNAL ,
     KEY_MAIN_FLAGS ,
+    KEY_MAIN_INTREE ,
     KEY_MAIN_ENDOFKEY
 } ;
 
@@ -290,7 +290,6 @@ struct key_all_s
 static key_description_t const main_section_list[] =
 {
     { .name = &enum_str_key_section_main[KEY_MAIN_TYPE], .id = KEY_MAIN_TYPE, .expected = EXPECT_LINE },
-    { .name = &enum_str_key_section_main[KEY_MAIN_NAME], .id = KEY_MAIN_NAME, .expected = EXPECT_LINE },
     { .name = &enum_str_key_section_main[KEY_MAIN_VERSION], .id = KEY_MAIN_VERSION, .expected = EXPECT_LINE },
     { .name = &enum_str_key_section_main[KEY_MAIN_DESCRIPTION], .id = KEY_MAIN_DESCRIPTION, .expected = EXPECT_QUOTE },
     { .name = &enum_str_key_section_main[KEY_MAIN_DEPENDS], .id = KEY_MAIN_DEPENDS, .expected = EXPECT_BRACKET },
diff --git a/src/include/66/parser.h b/src/include/66/parser.h
index 0759ebc6..4e75163d 100644
--- a/src/include/66/parser.h
+++ b/src/include/66/parser.h
@@ -289,11 +289,12 @@ struct section_s
                         .idx = { 0 } , \
                         .file = 0 }
 
-/** freed */
+/** freed and cleanup*/
 extern void sv_alltype_free(sv_alltype *sv) ;
 extern void keynocheck_free(keynocheck *nocheck) ;
 extern void section_free(section_t *sec) ;
 extern void freed_parser(void) ;
+extern void ssexec_enable_cleanup(void) ;
 /** enable phase */
 extern void start_parser(stralloc *list,ssexec_t *info, unsigned int *nbsv,uint8_t FORCE) ;
 extern int parser(sv_alltype *service,stralloc *src,char const *svname,int svtype) ;
@@ -305,7 +306,7 @@ extern int parse_service_opts_deps(stralloc *rebuild,ssexec_t *info,stralloc *pa
 extern int parse_add_service(stralloc *parsed_list,sv_alltype *sv_before,char const *service,unsigned int *nbsv,uid_t owner,uint8_t conf) ;
 extern int get_svtype(sv_alltype *sv_before, char const *contents) ;
 extern int get_svtype_from_file(char const *file) ;
-extern int get_svname(sv_alltype *sv_before,char const *contents) ;
+
 /** split */
 extern int section_get_range(section_t *sasection,stralloc *src) ;
 extern int key_get_range(genalloc *ga, section_t *sasection) ;
diff --git a/src/lib66/parser_enabled.c b/src/lib66/parser_enabled.c
index 4d69258f..c7a3f3d0 100644
--- a/src/lib66/parser_enabled.c
+++ b/src/lib66/parser_enabled.c
@@ -86,39 +86,10 @@ int parse_service_before(ssexec_t *info,stralloc *parsed_list,stralloc *tree_lis
     if (!get_svtype(&sv_before,sasv->s))
         log_warn_return (LOG_EXIT_ZERO,"invalid value for key: ",get_key_by_enum(ENUM_KEY_SECTION_MAIN,KEY_MAIN_TYPE)," in service file: ",svsrc,svname) ;
 
-    if (!get_svname(&sv_before,sasv->s))
-        log_warn_return(LOG_EXIT_ZERO,"invalid value for key: ",get_key_by_enum(ENUM_KEY_SECTION_MAIN,KEY_MAIN_NAME)," in service file: ",svsrc,svname) ;
 
-    /** keep the name set by user
-     * uniquely for instantiated service
-     * The name must contain the template string */
-    if (insta > 0 && sv_before.cname.name >= 0 )
-    {
-        stralloc sainsta = STRALLOC_ZERO ;
-        stralloc name = STRALLOC_ZERO ;
-        if (!stralloc_cats(&name,keep.s + sv_before.cname.name)) goto err ;
-
-        if (!instance_splitname(&sainsta,svname,insta,SS_INSTANCE_TEMPLATE)) goto err ;
-        if (sastr_find(&name,sainsta.s) == -1)
-        {
-            log_warn("invalid instantiated service name: ", keep.s + sv_before.cname.name) ;
-            goto err ;
-        }
-        stralloc_free(&sainsta) ;
-        stralloc_free(&name) ;
-        goto follow ;
-        err:
-            stralloc_free(&sainsta) ;
-            stralloc_free(&name) ;
-            return 0 ;
-    }
-    else
-    {
-        sv_before.cname.name = keep.len ;
-        if (!stralloc_catb(&keep,svname,svnamelen + 1)) return 0 ;
-    }
+    sv_before.cname.name = keep.len ;
+    if (!stralloc_catb(&keep,svname,svnamelen + 1)) return 0 ;
 
-    follow:
     /** contents of directory should be listed by ss_resolve_src_path
      * execpt for module type */
     if (scan_mode(sv,S_IFDIR) == 1 && sv_before.cname.itype != TYPE_MODULE) return 1 ;
diff --git a/src/lib66/parser_utils.c b/src/lib66/parser_utils.c
index 9c502905..b988bced 100644
--- a/src/lib66/parser_utils.c
+++ b/src/lib66/parser_utils.c
@@ -514,9 +514,6 @@ int keep_common(sv_alltype *service,keynocheck *nocheck,int svtype)
             if (r == -1) return 0 ;
             service->cname.itype = r ;
             break ;
-        case KEY_MAIN_NAME:
-            /** name is already parsed */
-            break ;
         case KEY_MAIN_DESCRIPTION:
             service->cname.description = keep.len ;
             if (!stralloc_catb(&keep,chval,*chlen + 1)) log_warnsys_return(LOG_EXIT_ZERO,"stralloc") ;
@@ -1330,30 +1327,3 @@ int get_svtype_from_file(char const *file)
     stralloc_free(&tmp) ;
     return svtype ;
 }
-
-int get_svname(sv_alltype *sv_before,char const *contents)
-{
-    log_flow() ;
-
-    int r ;
-    stralloc sa = STRALLOC_ZERO ;
-
-    if (!auto_stra(&sa,contents)) goto err ;
-    /** @name only exist on instantiated service if any */
-    r = sastr_find(&sa,get_key_by_enum(ENUM_KEY_SECTION_MAIN,KEY_MAIN_NAME)) ;
-    if (r == -1) { sv_before->cname.name == -1 ; goto freed ; }
-
-    if (!environ_get_val_of_key(&sa,get_key_by_enum(ENUM_KEY_SECTION_MAIN,KEY_MAIN_NAME))) goto err ;
-
-    if (!sastr_clean_element(&sa)) goto err ;
-    sv_before->cname.name = get_enum_by_key(sa.s) ;
-
-    if (sv_before->cname.name == -1) goto err ;
-
-    freed:
-    stralloc_free(&sa) ;
-    return 1 ;
-    err:
-        stralloc_free(&sa) ;
-        return 0 ;
-}
diff --git a/src/lib66/ss_get_enum.c b/src/lib66/ss_get_enum.c
index 85c58c6b..3434108a 100644
--- a/src/lib66/ss_get_enum.c
+++ b/src/lib66/ss_get_enum.c
@@ -32,7 +32,6 @@ char const *enum_str_section[] = {
 
 char const *enum_str_key_section_main[] = {
     "@type" ,
-    "@name" ,
     "@version" ,
     "@description" ,
     "@contents" ,
-- 
GitLab