Support for options to appear multiple times on cmdline.
* include/grub/lib/arg.h (grub_arg_list_alloc): New prototype. * grub-core/commands/extcmd.c: Support for repeatable option. * grub-core/lib/arg.c (grub_arg_list_alloc): New function for repeatable option support. Refactor menuentry into a regular command. * grub-core/commands/menuentry.c: New file, menuentry command implementation. * grub-core/Makefile.core.def: Rule update for normal.mod. * grub-core/normal/main.c: Moved menuentry creation to grub-core/commands/menuentry.c. * grub-core/normal/menu.c (grub_menu_execute_entry): Removed. (grub_menu_execute_entry_real): Removed. * grub-core/script/execute.c (grub_script_execute_sourcecode): New function. (grub_script_execute_menuentry): Removed. * grub-core/script/parser.y (menuentry): Removed. * grub-core/script/script.c (grub_script_create_cmdmenu): Removed. * grub-core/script/yylex.l (menuentry): Removed. * include/grub/menu.h (grub_menu_init): New prototype. (grub_menu_fini): New prototype. * include/grub/normal.h (grub_normal_add_menu_entry): Removed. * include/grub/script_sh.h (grub_script_cmd_menuentry): Removed. (grub_script_execute_sourcecode): New prototype.
This commit is contained in:
commit
ed8c6dec96
15 changed files with 464 additions and 366 deletions
|
@ -145,21 +145,6 @@ struct grub_script_cmdwhile
|
|||
int until;
|
||||
};
|
||||
|
||||
/* A menu entry generate statement. */
|
||||
struct grub_script_cmd_menuentry
|
||||
{
|
||||
struct grub_script_cmd cmd;
|
||||
|
||||
/* The arguments for this menu entry. */
|
||||
struct grub_script_arglist *arglist;
|
||||
|
||||
/* The sourcecode the entry will be generated from. */
|
||||
const char *sourcecode;
|
||||
|
||||
/* Options. XXX: Not used yet. */
|
||||
int options;
|
||||
};
|
||||
|
||||
/* State of the lexer as passed to the lexer. */
|
||||
struct grub_lexer_param
|
||||
{
|
||||
|
@ -282,12 +267,6 @@ grub_script_create_cmdwhile (struct grub_parser_param *state,
|
|||
struct grub_script_cmd *list,
|
||||
int is_an_until_loop);
|
||||
|
||||
struct grub_script_cmd *
|
||||
grub_script_create_cmdmenu (struct grub_parser_param *state,
|
||||
struct grub_script_arglist *arglist,
|
||||
char *sourcecode,
|
||||
int options);
|
||||
|
||||
struct grub_script_cmd *
|
||||
grub_script_append_cmd (struct grub_parser_param *state,
|
||||
struct grub_script_cmd *list,
|
||||
|
@ -332,10 +311,10 @@ grub_err_t grub_script_execute_cmdlist (struct grub_script_cmd *cmd);
|
|||
grub_err_t grub_script_execute_cmdif (struct grub_script_cmd *cmd);
|
||||
grub_err_t grub_script_execute_cmdfor (struct grub_script_cmd *cmd);
|
||||
grub_err_t grub_script_execute_cmdwhile (struct grub_script_cmd *cmd);
|
||||
grub_err_t grub_script_execute_menuentry (struct grub_script_cmd *cmd);
|
||||
|
||||
/* Execute any GRUB pre-parsed command or script. */
|
||||
grub_err_t grub_script_execute (struct grub_script *script);
|
||||
grub_err_t grub_script_execute_sourcecode (const char *source, int argc, char **args);
|
||||
|
||||
/* Break command for loops. */
|
||||
grub_err_t grub_script_break (grub_command_t cmd, int argc, char *argv[]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue