diff --git a/src/lib66/exec/ssexec_env.c b/src/lib66/exec/ssexec_env.c index 1a4fa0fb7824f5711400361563d6a59d916e619c..86eed5699df725f21074e41c4d5cce61955004e9 100644 --- a/src/lib66/exec/ssexec_env.c +++ b/src/lib66/exec/ssexec_env.c @@ -21,6 +21,7 @@ #include <oblibs/string.h> #include <oblibs/types.h> #include <oblibs/sastr.h> +#include <oblibs/stack.h> #include <oblibs/environ.h> #include <skalibs/sgetopt.h> @@ -95,51 +96,42 @@ static void do_import(char const *svname, char const *svconf, char const *versio log_flow() ; size_t pos = 0 ; - stralloc sasrc = STRALLOC_ZERO ; + _alloc_stk_(stk, strlen(version) + 1) ; char *src_version = 0 ; char *dst_version = 0 ; - if (!sastr_clean_string_wdelim(&sasrc,version,DELIM)) + if (!lexer_trim_with_delim(&stk,version,DELIM)) log_dieu(LOG_EXIT_SYS,"clean string: ",version) ; - unsigned int n = sastr_len(&sasrc) ; - checkopts(n) ; + checkopts(stk.count) ; - src_version = sasrc.s ; - pos = strlen(sasrc.s) + 1 ; - dst_version = sasrc.s + pos ; + src_version = stk.s ; + pos = strlen(stk.s) + 1 ; + dst_version = stk.s + pos ; if (!env_import_version_file(svname,svconf,src_version,dst_version,svtype)) log_dieu(LOG_EXIT_SYS,"import configuration file from version: ",src_version," to version: ",dst_version) ; - - stralloc_free(&sasrc) ; } static void replace_value_of_key(stralloc *srclist,char const *key) { log_flow() ; - stralloc sakey = STRALLOC_ZERO ; - - size_t pos = 0 ; + _alloc_sa_(sakey) ; + _alloc_stk_(line, strlen(key) + 1) ; int start = -1 ,end = -1 ; - if (!auto_stra(&sakey,key)) - log_die_nomem("stralloc") ; - - if (!environ_get_key_nclean(&sakey,&pos)) - log_die(LOG_EXIT_SYS,"invalid format at key: ",key) ; - - sakey.len-- ; + if (!environ_get_key(&line,key)) + log_dieusys(LOG_EXIT_SYS,"get key: ",key, " from environments") ; - if (!auto_stra(&sakey,"=")) - log_die_nomem("stralloc") ; + if (!stack_add(&line, "=", 1)) + log_die_nomem("stack") ; - start = sastr_find(srclist,sakey.s) ; + start = sastr_find(srclist,line.s) ; if (start == -1) { - log_1_warnu("find key: ",sakey.s) ; + log_1_warnu("find key: ",line.s) ; return ; } @@ -148,10 +140,8 @@ static void replace_value_of_key(stralloc *srclist,char const *key) if (end == -1) log_dieu(LOG_EXIT_SYS,"find end of line") ; - sakey.len = 0 ; - if (!stralloc_catb(&sakey,srclist->s + start,end ) || - !stralloc_0(&sakey)) + !stralloc_0(&sakey)) log_die_nomem("stralloc") ; if (!strcmp(sakey.s,key)) @@ -164,8 +154,6 @@ static void replace_value_of_key(stralloc *srclist,char const *key) log_die_nomem("stralloc") ; srclist->len-- ; - - stralloc_free(&sakey) ; } static void write_user_env_file(char const *src, char const *sv)