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

Use the lexer to get a cleaned key

parent 64462105
No related branches found
No related tags found
No related merge requests found
......@@ -34,31 +34,29 @@ static char parse_char_next(char const *s, size_t slen, size_t *pos)
static void key_isvalid(const char *line, size_t *o, uint8_t *bracket, int *vp, int lvp, const int sid)
{
unsigned int pos = 0 ;
const char **key_list = get_enum_list(sid) ;
size_t e = 0 ;
char key[50] ;
int r = get_sep_before(line + (*o), '=', '\n') ;
if (r < 0) {
e = get_len_until(line + (*o), '\n') + 1 ;
(*o) += e ;
return ;
}
const key_description_t *list = get_enum_list(sid) ;
lexer_config cfg = LEXER_CONFIG_KEY ;
_alloc_stk_(key, strlen(line + (*o) + 1)) ;
cfg.str = line ;
cfg.slen = strlen(line) ;
if (!lexer(&key, &cfg) || !stack_close(&key))
return ;
/** parse_char_next increase o by one
* reverse it to get the full name of the key
* */
memcpy(key, line + ((*o) - 1), r) ;
key[r] = 0 ;
while (key_list[pos]) {
if (!strcmp(key, key_list[pos])) {
(*o) = (size_t)lvp ;
(*bracket)-- ;
(*vp) = 0 ;
if (cfg.found) {
int r = get_enum_by_key(list, key.s) ;
if (r < 0) {
r = get_len_until(line + (*o), '\n') + 1 ;
(*o) = r ;
return ;
}
pos++ ;
(*o) = (size_t)lvp ;
(*bracket)-- ;
(*vp) = 0 ;
return ;
}
return ;
......
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