int argc, char **args);
char **
-grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist);
+grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist, int *count);
#endif /* ! GRUB_NORMAL_PARSER_HEADER */
/* Expand arguments in ARGLIST into multiple arguments. */
char **
-grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist)
+grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist, int *count)
{
int i;
int oom;
if (!empty)
push (0);
}
- push (0); /* Ensure argv[argc] == 0. */
if (oom)
{
argv = 0;
}
+ if (argv)
+ *count = argc - 1;
+
return argv;
}
char *cmdname;
/* Lookup the command. */
- args = grub_script_execute_arglist_to_argv (cmdline->arglist);
+ args = grub_script_execute_arglist_to_argv (cmdline->arglist, &argcount);
if (!args)
return grub_errno;
}
}
- /* Count argv size. */
- for (argcount = 0; args[argcount]; argcount++);
-
/* Execute the GRUB command or function. */
if (grubcmd)
ret = (grubcmd->func) (grubcmd, argcount - 1, args + 1);
if (cmd_menuentry->arglist)
{
- args = grub_script_execute_arglist_to_argv (cmd_menuentry->arglist);
+ args = grub_script_execute_arglist_to_argv (cmd_menuentry->arglist, &argcount);
if (!args)
return grub_errno;
-
- for (argcount = 0; args[argcount]; argcount++);
}
grub_normal_add_menu_entry (argcount, (const char **) args,