Merge pull request #1083 from filbranden/configparse1
A few more tweaks to extract_first_word
This commit is contained in:
commit
bbc19baa50
|
@ -5754,40 +5754,39 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
|
||||||
case START:
|
case START:
|
||||||
if (c == 0) {
|
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS)
|
||||||
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS)
|
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
||||||
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
return -ENOMEM;
|
||||||
return -ENOMEM;
|
|
||||||
|
if (c == 0)
|
||||||
goto finish_force_terminate;
|
goto finish_force_terminate;
|
||||||
} else if (strchr(separators, c)) {
|
else if (strchr(separators, c)) {
|
||||||
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) {
|
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) {
|
||||||
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
|
||||||
return -ENOMEM;
|
|
||||||
(*p) ++;
|
(*p) ++;
|
||||||
goto finish_force_next;
|
goto finish_force_next;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We found a non-blank character, so we will always
|
||||||
|
* want to return a string (even if it is empty),
|
||||||
|
* allocate it here. */
|
||||||
|
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
state = VALUE;
|
state = VALUE;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
|
|
||||||
case VALUE:
|
case VALUE:
|
||||||
if (c == 0)
|
if (c == 0)
|
||||||
goto finish_force_terminate;
|
goto finish_force_terminate;
|
||||||
else if (c == '\'' && (flags & EXTRACT_QUOTES)) {
|
else if (c == '\'' && (flags & EXTRACT_QUOTES))
|
||||||
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
state = SINGLE_QUOTE;
|
state = SINGLE_QUOTE;
|
||||||
} else if (c == '\\')
|
else if (c == '\\')
|
||||||
state = VALUE_ESCAPE;
|
state = VALUE_ESCAPE;
|
||||||
else if (c == '\"' && (flags & EXTRACT_QUOTES)) {
|
else if (c == '\"' && (flags & EXTRACT_QUOTES))
|
||||||
if (!GREEDY_REALLOC(s, allocated, sz+1))
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
state = DOUBLE_QUOTE;
|
state = DOUBLE_QUOTE;
|
||||||
} else if (strchr(separators, c)) {
|
else if (strchr(separators, c)) {
|
||||||
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) {
|
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) {
|
||||||
(*p) ++;
|
(*p) ++;
|
||||||
goto finish_force_next;
|
goto finish_force_next;
|
||||||
|
@ -5891,8 +5890,6 @@ end_escape:
|
||||||
case SEPARATOR:
|
case SEPARATOR:
|
||||||
if (c == 0)
|
if (c == 0)
|
||||||
goto finish_force_terminate;
|
goto finish_force_terminate;
|
||||||
if (flags & EXTRACT_DONT_COALESCE_SEPARATORS)
|
|
||||||
goto finish_force_next;
|
|
||||||
if (!strchr(separators, c))
|
if (!strchr(separators, c))
|
||||||
goto finish;
|
goto finish;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue