]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Convert goto into loop
authorJan Janssen <medhefgo@web.de>
Mon, 3 Jan 2022 09:20:23 +0000 (10:20 +0100)
committerJan Janssen <medhefgo@web.de>
Mon, 3 Jan 2022 09:20:23 +0000 (10:20 +0100)
src/boot/efi/boot.c

index e623c2c8b67847a59d4edc31b7339268c0e54b04..af24d1e78844f4ab3b77cb62e7d6ae4fcf7011d5 100644 (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;
-
-        linelen = 0;
-        while (line[linelen] && !strchra((CHAR8 *)"\n\r", line[linelen]))
-               linelen++;
-
-        /* move pos to next line */
-        *pos += linelen;
-        if (content[*pos])
-                (*pos)++;
-
-        /* empty line */
-        if (linelen == 0)
-                goto skip;
-
-        /* terminate line */
-        line[linelen] = '\0';
-
-        /* remove leading whitespace */
-        while (strchra((CHAR8 *)" \t", *line)) {
-                line++;
-                linelen--;
-        }
+        for (;;) {
+                line = content + *pos;
+                if (*line == '\0')
+                        return NULL;
 
-        /* remove trailing whitespace */
-        while (linelen > 0 && strchra((CHAR8 *)" \t", line[linelen-1]))
-                linelen--;
-        line[linelen] = '\0';
+                linelen = 0;
+                while (line[linelen] && !strchra((CHAR8 *) "\n\r", line[linelen]))
+                        linelen++;
 
-        if (*line == '#')
-                goto skip;
+                /* move pos to next line */
+                *pos += linelen;
+                if (content[*pos])
+                        (*pos)++;
 
-        /* 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++;
+                /* empty line */
+                if (linelen == 0)
+                        continue;
+
+                /* terminate line */
+                line[linelen] = '\0';
+
+                /* remove leading whitespace */
+                while (strchra((CHAR8 *) " \t", *line)) {
+                        line++;
+                        linelen--;
+                }
 
-        /* unquote */
-        if (value[0] == '"' && line[linelen-1] == '"') {
+                /* 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++;
-                line[linelen-1] = '\0';
-        }
+                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;
+                *key_ret = line;
+                *value_ret = value;
+                return line;
+        }
 }
 
 static void config_defaults_load_from_file(Config *config, CHAR8 *content) {