# For grub-script-check.
bin_UTILITIES += grub-script-check
- util/grub-script-check.c_DEPENDENCIES = grub_script_check_init.h
- grub_script_check_SOURCES = gnulib/progname.c gnulib/getdelim.c \
- gnulib/getline.c util/grub-script-check.c util/misc.c \
- util/mm.c script/main.c script/script.c script/function.c \
- script/lexer.c kern/handler.c kern/err.c kern/parser.c \
- kern/list.c kern/misc.c kern/env.c kern/command.c \
- grub_script_check_init.c grub_script.tab.c grub_script.yy.c
+ grub_script_check_SOURCES = gnulib/progname.c gnulib/getdelim.c gnulib/getline.c \
+ util/grub-script-check.c util/misc.c kern/emu/misc.c kern/emu/mm.c \
+ script/main.c script/script.c script/function.c script/lexer.c \
+ kern/err.c kern/list.c \
- kern/misc.c kern/env.c grub_script.tab.c \
++ kern/command.c kern/misc.c kern/env.c grub_script.tab.c \
+ grub_script.yy.c
grub_script_check_CFLAGS = $(GNULIB_UTIL_CFLAGS)
MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst
struct grub_lexer_param *lexerstate;
};
++void grub_script_init (void);
++void grub_script_fini (void);
++
void grub_script_argv_free (struct grub_script_argv *argv);
int grub_script_argv_next (struct grub_script_argv *argv);
int grub_script_argv_append (struct grub_script_argv *argv, const char *s);
GRUB_MOD_INIT(normal)
{
grub_context_init ();
++ grub_script_init ();
/* Normal mode shouldn't be unloaded. */
if (mod)
GRUB_MOD_FINI(normal)
{
grub_context_fini ();
++ grub_script_fini ();
grub_set_history (0);
grub_register_variable_hook ("pager", 0, 0);
return grub_errno;
}
- static struct grub_parser grub_sh_parser =
- {
- .name = "grub",
- .parse_line = grub_normal_parse_line
- };
+
- GRUB_MOD_INIT(sh)
++static grub_command_t cmd_break;
+
- grub_parser_register ("grub", &grub_sh_parser);
- grub_register_command ("break", grub_script_break,
- N_("[n]"), N_("Exit from loops"));
++void
++grub_script_init (void)
+{
- GRUB_MOD_FINI(sh)
++ cmd_break = grub_register_command ("break", grub_script_break,
++ N_("[n]"), N_("Exit from loops"));
+}
+
- grub_parser_unregister (&grub_sh_parser);
++void
++grub_script_fini (void)
+{
++ if (cmd_break)
++ grub_unregister_command (cmd_break);
++ cmd_break = 0;
+}