123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2009 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
- #include <grub/dl.h>
- #include <grub/i18n.h>
- #include <grub/parser.h>
- #include <grub/script_sh.h>
- grub_err_t
- grub_normal_parse_line (char *line,
- grub_reader_getline_t getline, void *getline_data)
- {
- struct grub_script *parsed_script;
- /* Parse the script. */
- parsed_script = grub_script_parse (line, getline, getline_data);
- if (parsed_script)
- {
- /* Execute the command(s). */
- grub_script_execute (parsed_script);
- /* The parsed script was executed, throw it away. */
- grub_script_unref (parsed_script);
- }
- return grub_errno;
- }
- static grub_command_t cmd_break;
- static grub_command_t cmd_continue;
- static grub_command_t cmd_shift;
- static grub_command_t cmd_setparams;
- static grub_command_t cmd_return;
- void
- grub_script_init (void)
- {
- cmd_break = grub_register_command ("break", grub_script_break,
- N_("[NUM]"), N_("Exit from loops"));
- cmd_continue = grub_register_command ("continue", grub_script_break,
- N_("[NUM]"), N_("Continue loops"));
- cmd_shift = grub_register_command ("shift", grub_script_shift,
- N_("[NUM]"),
- /* TRANSLATORS: Positional arguments are
- arguments $0, $1, $2, ... */
- N_("Shift positional parameters."));
- cmd_setparams = grub_register_command ("setparams", grub_script_setparams,
- N_("[VALUE]..."),
- N_("Set positional parameters."));
- cmd_return = grub_register_command ("return", grub_script_return,
- N_("[NUM]"),
- /* TRANSLATORS: It's a command description
- and "Return" is a verb, not a noun. The
- command in question is "return" and
- has exactly the same semanics as bash
- equivalent. */
- N_("Return from a function."));
- }
- void
- grub_script_fini (void)
- {
- if (cmd_break)
- grub_unregister_command (cmd_break);
- cmd_break = 0;
- if (cmd_continue)
- grub_unregister_command (cmd_continue);
- cmd_continue = 0;
- if (cmd_shift)
- grub_unregister_command (cmd_shift);
- cmd_shift = 0;
- if (cmd_setparams)
- grub_unregister_command (cmd_setparams);
- cmd_setparams = 0;
- if (cmd_return)
- grub_unregister_command (cmd_return);
- cmd_return = 0;
- }
|