]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/script.c
discover/grub2: Allow to separate the --id argument using a space char
[petitboot] / discover / grub2 / script.c
index 902df90045994fb6daaa0b1effc39adc238ee289..8a9d91dac987c36680283f8b9c95cfdf6ac15fb5 100644 (file)
@@ -117,12 +117,10 @@ static bool option_is_default(struct grub2_script *script,
        if (end != var && *end == '\0')
                return default_idx == script->n_options;
 
-       /* if we don't have an explicit id for this option, fall back to
-        * the name */
-       if (!id)
-               id = opt->option->name;
+       if (id && !strcmp(id, var))
+               return true;
 
-       return !strcmp(id, var);
+       return !strcmp(opt->option->name, var);
 }
 
 static void append_text_to_current_arg(struct grub2_argv *argv,
@@ -341,9 +339,16 @@ int statement_menuentry_execute(struct grub2_script *script,
         * implementation to get --id= working.
         */
        for (i = 1; i < st->argv->argc; ++i) {
-               if (strncmp("--id=", st->argv->argv[i], 5) == 0) {
-                       id = st->argv->argv[i] + 5;
-                       break;
+               if (strncmp("--id", st->argv->argv[i], strlen("--id")) == 0) {
+                       if (strlen(st->argv->argv[i]) > strlen("--id=")) {
+                               id = st->argv->argv[i] + strlen("--id=");
+                               break;
+                       }
+
+                       if (i + 1 < st->argv->argc) {
+                               id = st->argv->argv[i + 1];
+                               break;
+                       }
                }
        }
        if (st->argv->argc > 0)