/* * VasEBoot -- GRand Unified Bootloader * Copyright (C) 2009 Free Software Foundation, Inc. * * VasEBoot 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. * * VasEBoot 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 VasEBoot. If not, see . */ #include #include #include #include VasEBoot_err_t VasEBoot_normal_parse_line (char *line, VasEBoot_reader_getline_t getline, void *getline_data) { struct VasEBoot_script *parsed_script; /* Parse the script. */ parsed_script = VasEBoot_script_parse (line, getline, getline_data); if (parsed_script) { /* Execute the command(s). */ VasEBoot_script_execute (parsed_script); /* The parsed script was executed, throw it away. */ VasEBoot_script_unref (parsed_script); } return VasEBoot_errno; } static VasEBoot_command_t cmd_break; static VasEBoot_command_t cmd_continue; static VasEBoot_command_t cmd_shift; static VasEBoot_command_t cmd_setparams; static VasEBoot_command_t cmd_return; void VasEBoot_script_init (void) { cmd_break = VasEBoot_register_command ("break", VasEBoot_script_break, N_("[NUM]"), N_("Exit from loops")); cmd_continue = VasEBoot_register_command ("continue", VasEBoot_script_break, N_("[NUM]"), N_("Continue loops")); cmd_shift = VasEBoot_register_command ("shift", VasEBoot_script_shift, N_("[NUM]"), /* TRANSLATORS: Positional arguments are arguments $0, $1, $2, ... */ N_("Shift positional parameters.")); cmd_setparams = VasEBoot_register_command ("setparams", VasEBoot_script_setparams, N_("[VALUE]..."), N_("Set positional parameters.")); cmd_return = VasEBoot_register_command ("return", VasEBoot_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 VasEBoot_script_fini (void) { if (cmd_break) VasEBoot_unregister_command (cmd_break); cmd_break = 0; if (cmd_continue) VasEBoot_unregister_command (cmd_continue); cmd_continue = 0; if (cmd_shift) VasEBoot_unregister_command (cmd_shift); cmd_shift = 0; if (cmd_setparams) VasEBoot_unregister_command (cmd_setparams); cmd_setparams = 0; if (cmd_return) VasEBoot_unregister_command (cmd_return); cmd_return = 0; }