common = tests/grub_script_shift.in;
};
+ script = {
+ testcase;
+ name = grub_script_blockarg;
+ common = tests/grub_script_blockarg.in;
+ };
+
+script = {
+ testcase;
+ name = grub_script_setparams;
+ common = tests/grub_script_setparams.in;
+};
+
program = {
testcase;
name = example_unit_test;
argv->argc = 0;
argv->args = 0;
+ argv->script = 0;
}
- struct grub_script_argv r = { 0, 0};
+/* Make argv from argc, args pair. */
+int
+grub_script_argv_make (struct grub_script_argv *argv, int argc, char **args)
+{
+ int i;
++ struct grub_script_argv r = { 0, 0, 0 };
+
+ for (i = 0; i < argc; i++)
+ if (grub_script_argv_next (&r) || grub_script_argv_append (&r, args[i]))
+ {
+ grub_script_argv_free (&r);
+ return 1;
+ }
+ *argv = r;
+ return 0;
+}
+
/* Prepare for next argc. */
int
grub_script_argv_next (struct grub_script_argv *argv)
return GRUB_ERR_NONE;
}
- struct grub_script_argv argv = { 0, 0 };
+grub_err_t
+grub_script_setparams (grub_command_t cmd __attribute__((unused)),
+ int argc, char **args)
+{
+ struct grub_script_scope *new_scope;
++ struct grub_script_argv argv = { 0, 0, 0 };
+
+ if (! scope)
+ return GRUB_ERR_INVALID_COMMAND;
+
+ new_scope = grub_malloc (sizeof (*new_scope));
+ if (! new_scope)
+ return grub_errno;
+
+ if (grub_script_argv_make (&argv, argc, args))
+ {
+ grub_free (new_scope);
+ return grub_errno;
+ }
+
+ new_scope->shifts = 0;
+ new_scope->argv = argv;
+ new_scope->flags = GRUB_SCRIPT_SCOPE_MALLOCED |
+ GRUB_SCRIPT_SCOPE_ARGS_MALLOCED;
+
+ replace_scope (new_scope);
+ return GRUB_ERR_NONE;
+}
+
static int
grub_env_special (const char *name)
{
static char **
grub_script_env_get (const char *name, grub_script_arg_type_t type)
{
- struct grub_script_argv result = { 0, 0 };
+ unsigned i;
+ struct grub_script_argv result = { 0, 0, 0 };
if (grub_script_argv_next (&result))
goto fail;
grub_script_lexer_init (struct grub_parser_param *parser, char *script,
grub_reader_getline_t getline)
{
-- int len;
- char *script2;
-- YY_BUFFER_STATE buffer;
struct grub_lexer_param *lexerstate;
lexerstate = grub_zalloc (sizeof (*lexerstate));
void grub_script_init (void);
void grub_script_fini (void);
+ void grub_script_mem_free (struct grub_script_mem *mem);
+
void grub_script_argv_free (struct grub_script_argv *argv);
+int grub_script_argv_make (struct grub_script_argv *argv, int argc, char **args);
int grub_script_argv_next (struct grub_script_argv *argv);
int grub_script_argv_append (struct grub_script_argv *argv, const char *s);
int grub_script_argv_split_append (struct grub_script_argv *argv, char *s);