boot: Convert goto into loop

This commit is contained in:
Jan Janssen
2022-01-03 10:20:23 +01:00
parent 0b2281a209
commit 159636cf74
+50 -49
View File
@@ -1022,61 +1022,62 @@ static CHAR8 *line_get_key_value(
assert(key_ret);
assert(value_ret);
skip:
line = content + *pos;
if (*line == '\0')
return NULL;
for (;;) {
line = content + *pos;
if (*line == '\0')
return NULL;
linelen = 0;
while (line[linelen] && !strchra((CHAR8 *)"\n\r", line[linelen]))
linelen++;
linelen = 0;
while (line[linelen] && !strchra((CHAR8 *) "\n\r", line[linelen]))
linelen++;
/* move pos to next line */
*pos += linelen;
if (content[*pos])
(*pos)++;
/* move pos to next line */
*pos += linelen;
if (content[*pos])
(*pos)++;
/* empty line */
if (linelen == 0)
goto skip;
/* empty line */
if (linelen == 0)
continue;
/* terminate line */
line[linelen] = '\0';
/* terminate line */
line[linelen] = '\0';
/* remove leading whitespace */
while (strchra((CHAR8 *)" \t", *line)) {
line++;
linelen--;
/* remove leading whitespace */
while (strchra((CHAR8 *) " \t", *line)) {
line++;
linelen--;
}
/* remove trailing whitespace */
while (linelen > 0 && strchra((CHAR8 *) " \t", line[linelen - 1]))
linelen--;
line[linelen] = '\0';
if (*line == '#')
continue;
/* split key/value */
value = line;
while (*value && !strchra(sep, *value))
value++;
if (*value == '\0')
continue;
*value = '\0';
value++;
while (*value && strchra(sep, *value))
value++;
/* unquote */
if (value[0] == '"' && line[linelen - 1] == '"') {
value++;
line[linelen - 1] = '\0';
}
*key_ret = line;
*value_ret = value;
return line;
}
/* remove trailing whitespace */
while (linelen > 0 && strchra((CHAR8 *)" \t", line[linelen-1]))
linelen--;
line[linelen] = '\0';
if (*line == '#')
goto skip;
/* split key/value */
value = line;
while (*value && !strchra(sep, *value))
value++;
if (*value == '\0')
goto skip;
*value = '\0';
value++;
while (*value && strchra(sep, *value))
value++;
/* unquote */
if (value[0] == '"' && line[linelen-1] == '"') {
value++;
line[linelen-1] = '\0';
}
*key_ret = line;
*value_ret = value;
return line;
}
static void config_defaults_load_from_file(Config *config, CHAR8 *content) {