/*
* VAS_EBOOT -- GRand Unified Bootloader
* Copyright (C) 2009 Free Software Foundation, Inc.
*
* VAS_EBOOT 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.
*
* VAS_EBOOT 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 VAS_EBOOT. 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;
}