Skip to content
Snippets Groups Projects
Commit 1bd57b66 authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

adapt to new stack familly function

parent 014ddfe4
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <oblibs/log.h> #include <oblibs/log.h>
#include <oblibs/string.h> #include <oblibs/string.h>
#include <oblibs/mill.h> #include <oblibs/mill.h>
#include <oblibs/stack.h>
#include <skalibs/stralloc.h> #include <skalibs/stralloc.h>
...@@ -29,20 +30,21 @@ int regex_get_file_name(char *filename, char const *str) ...@@ -29,20 +30,21 @@ int regex_get_file_name(char *filename, char const *str)
int r ; int r ;
size_t pos = 0 ; size_t pos = 0 ;
stralloc kp = STRALLOC_ZERO ; _init_stack_(stk, strlen(str) + 1) ;
parse_mill_t MILL_GET_COLON = { parse_mill_t MILL_GET_COLON = {
.open = ':', .close = ':', .open = ':', .close = ':',
.skip = " \t\r", .skiplen = 3, .skip = " \t\r", .skiplen = 3,
.forceclose = 1, .forceclose = 1,
.inner.debug = "get_colon" } ; .inner.debug = "get_colon" } ;
r = mill_element(&kp, str, &MILL_GET_COLON, &pos) ; r = mill_element(&stk, str, &MILL_GET_COLON, &pos) ;
if (r == -1) if (r == -1)
log_dieu(LOG_EXIT_SYS, "get filename of line: ", str) ; log_dieu(LOG_EXIT_SYS, "get filename of line: ", str) ;
auto_strings(filename, kp.s) ; if (!stack_close(&stk))
log_die(LOG_EXIT_SYS, "stack overflow") ;
auto_strings(filename, stk.s) ;
stralloc_free(&kp) ;
return pos ; return pos ;
} }
...@@ -16,27 +16,25 @@ ...@@ -16,27 +16,25 @@
#include <oblibs/mill.h> #include <oblibs/mill.h>
#include <oblibs/string.h> #include <oblibs/string.h>
#include <oblibs/stack.h>
#include <oblibs/log.h>
#include <skalibs/stralloc.h> #include <skalibs/stralloc.h>
int parse_clean_line(char *str) int parse_clean_line(char *str)
{ {
int r = 0 ;
int r = 0, e = 0 ;
size_t tpos = 0 ; size_t tpos = 0 ;
stralloc sa = STRALLOC_ZERO ; _init_stack_(stk, strlen(str) + 1) ;
wild_zero_all(&MILL_CLEAN_LINE) ; wild_zero_all(&MILL_CLEAN_LINE) ;
r = mill_element(&sa, str, &MILL_CLEAN_LINE, &tpos) ; r = mill_element(&stk, str, &MILL_CLEAN_LINE, &tpos) ;
if (r <= 0) if (r <= 0)
goto err ; return 0 ;
auto_strings(str, sa.s) ;
e = 1 ; if (!stack_close(&stk))
log_die(LOG_EXIT_SYS, "stack overflow") ;
err: auto_strings(str, stk.s) ;
stralloc_free(&sa) ;
return e ;
return 1 ;
} }
...@@ -16,26 +16,26 @@ ...@@ -16,26 +16,26 @@
#include <oblibs/string.h> #include <oblibs/string.h>
#include <oblibs/mill.h> #include <oblibs/mill.h>
#include <oblibs/stack.h>
#include <skalibs/stralloc.h> #include <skalibs/stralloc.h>
#include <66/parse.h> #include <66/parse.h>
/* @Return 2 if bad format */
int parse_line_g(char *store, parse_mill_t *config, char const *str, size_t *pos) int parse_line_g(char *store, parse_mill_t *config, char const *str, size_t *pos)
{ {
int r = 0, e = 0 ; int r = 0 ;
stralloc sa = STRALLOC_ZERO ; _init_stack_(stk, strlen(str) + 1) ;
r = mill_element(&sa, str, config, pos) ; r = mill_element(&stk, str, config, pos) ;
if (r <= 0 || !sa.len) if (r <= 0 || !stk.len)
goto err ; return 0 ;
if (!stralloc_0(&sa)) if (!stack_close(&stk))
goto err ; return 0 ;
if (sa.s[0] == ' ') if (stk.s[0] == ' ')
goto err ; return 0 ;
r = get_len_until(str, '\n') ; r = get_len_until(str, '\n') ;
if (r < 1) if (r < 1)
...@@ -43,11 +43,7 @@ int parse_line_g(char *store, parse_mill_t *config, char const *str, size_t *pos ...@@ -43,11 +43,7 @@ int parse_line_g(char *store, parse_mill_t *config, char const *str, size_t *pos
(*pos) = r + 1 ; // +1 remove '\n' (*pos) = r + 1 ; // +1 remove '\n'
e = 1 ; auto_strings(store, stk.s) ;
auto_strings(store, sa.s) ; return 1 ;
err:
stralloc_free(&sa) ;
return e ;
} }
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <oblibs/mill.h> #include <oblibs/mill.h>
#include <oblibs/log.h> #include <oblibs/log.h>
#include <oblibs/string.h> #include <oblibs/string.h>
#include <oblibs/stack.h>
#include <skalibs/stralloc.h> #include <skalibs/stralloc.h>
...@@ -26,33 +27,32 @@ ...@@ -26,33 +27,32 @@
int parse_section(stralloc *secname, char const *str, size_t *pos) int parse_section(stralloc *secname, char const *str, size_t *pos)
{ {
int id = -1 ; int id = -1 ;
size_t len = strlen(str) ; size_t len = strlen(str), newpos = 0, found = 0 ;
size_t newpos = 0, found = 0 ; _init_stack_(stk, len + 1) ;
stralloc tmp = STRALLOC_ZERO ;
while ((*pos) < len) { while ((*pos) < len) {
tmp.len = 0 ;
stk.len = 0 ;
newpos = 0 ; newpos = 0 ;
if (mill_element(&tmp, str + (*pos), &MILL_GET_SECTION_NAME, &newpos) == -1) if (mill_element(&stk, str + (*pos), &MILL_GET_SECTION_NAME, &newpos) == -1)
goto end ; goto end ;
if (tmp.len) { if (stk.len) {
if (!stralloc_0(&tmp)) if (!stack_close(&stk))
return -1 ; return -1 ;
found = 1 ; found = 1 ;
// check the validity of the section name // check the validity of the section name
id = get_enum_by_key(tmp.s) ; id = get_enum_by_key(stk.s) ;
if (id < 0) { if (id < 0) {
log_warn("invalid section name: ", tmp.s, " -- ignoring it") ; log_warn("invalid section name: ", stk.s, " -- ignoring it") ;
newpos-- ; // " retrieve the last ']'" newpos-- ; // " retrieve the last ']'"
// find the start of the section and pass the next line // find the start of the section and pass the next line
id = get_len_until(str + (newpos - tmp.len), '\n') ; id = get_len_until(str + (newpos - strlen(stk.s)), '\n') ;
newpos = newpos - tmp.len + id + 1 ; newpos = newpos - strlen(stk.s) + id + 1 ;
found = 0 ; found = 0 ;
} }
} }
...@@ -63,10 +63,9 @@ int parse_section(stralloc *secname, char const *str, size_t *pos) ...@@ -63,10 +63,9 @@ int parse_section(stralloc *secname, char const *str, size_t *pos)
} }
if (found) if (found)
if (!stralloc_catb(secname, tmp.s, strlen(tmp.s) + 1)) if (!stralloc_catb(secname, stk.s, strlen(stk.s) + 1))
return -1 ; return -1 ;
end: end:
stralloc_free(&tmp) ;
return found ? 1 : 0 ; return found ? 1 : 0 ;
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <oblibs/stack.h>
#include <oblibs/log.h> #include <oblibs/log.h>
#include <oblibs/sastr.h> #include <oblibs/sastr.h>
#include <oblibs/string.h> #include <oblibs/string.h>
...@@ -48,7 +49,6 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -48,7 +49,6 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
int e = 0, r = 0, found = 0 ; int e = 0, r = 0, found = 0 ;
key_all_t const *list = total_list ; key_all_t const *list = total_list ;
stralloc sakey = STRALLOC_ZERO ;
// cpos -> current, ipos -> idx pos, tpos -> temporary pos, end -> end the parse process // cpos -> current, ipos -> idx pos, tpos -> temporary pos, end -> end the parse process
size_t len = strlen(str), cpos = 0, ipos = 0, tpos = 0, end = 0 ; size_t len = strlen(str), cpos = 0, ipos = 0, tpos = 0, end = 0 ;
...@@ -89,7 +89,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -89,7 +89,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
ipos = 0 ; ipos = 0 ;
tpos = 0 ; tpos = 0 ;
end = 0 ; end = 0 ;
sakey.len = 0 ;
line = (char *)str + cpos ; // (char *) shut up compiler line = (char *)str + cpos ; // (char *) shut up compiler
/** comment must be the first character found /** comment must be the first character found
...@@ -126,7 +126,8 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -126,7 +126,8 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
// get a cleaned key string // get a cleaned key string
wild_zero_all(&MILL_GET_KEY) ; wild_zero_all(&MILL_GET_KEY) ;
r = mill_element(&sakey, line, &MILL_GET_KEY, &tpos) ; _init_stack_(stk, strlen(line) + 1) ;
r = mill_element(&stk, line, &MILL_GET_KEY, &tpos) ;
if (r < 1) { if (r < 1) {
log_warnu("get key at frontend service file of service: ", svname, " from line: ", line, " -- please make a bug report") ; log_warnu("get key at frontend service file of service: ", svname, " from line: ", line, " -- please make a bug report") ;
goto err ; goto err ;
...@@ -135,6 +136,11 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -135,6 +136,11 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
break ; break ;
} }
if (!stack_close(&stk)) {
log_warnu("stack overflow") ;
goto err ;
}
// copy the string to parse // copy the string to parse
auto_strings(tline, line) ; auto_strings(tline, line) ;
...@@ -146,7 +152,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -146,7 +152,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
found = 0 ; found = 0 ;
// look for a valid key name // look for a valid key name
if (*list[id].list[ipos].name && !strcmp(sakey.s, *list[id].list[ipos].name)) { if (*list[id].list[ipos].name && !strcmp(stk.s, *list[id].list[ipos].name)) {
found = 1 ; found = 1 ;
...@@ -208,7 +214,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -208,7 +214,7 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
} }
if (!found && r >= 0) { if (!found && r >= 0) {
log_warn("unknown key: ", sakey.s," : in section: ", secname->s + previous_sec, " -- ignoring it") ; log_warn("unknown key: ", store," : in section: ", secname->s + previous_sec, " -- ignoring it") ;
tpos = get_len_until(line, '\n') ; tpos = get_len_until(line, '\n') ;
cpos += tpos + 1 ; cpos += tpos + 1 ;
} }
...@@ -218,6 +224,5 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st ...@@ -218,6 +224,5 @@ int parse_split_from_section(resolve_service_t *res, stralloc *secname, char *st
e = 1 ; e = 1 ;
err: err:
stralloc_free(&sakey) ;
return e ; return e ;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment