merge with mainline
authorBVK Chaitanya <bvk@dbook>
Sat, 4 Sep 2010 06:19:02 +0000 (11:49 +0530)
committerBVK Chaitanya <bvk@dbook>
Sat, 4 Sep 2010 06:19:02 +0000 (11:49 +0530)
1  2 
Makefile.util.def
grub-core/Makefile.core.def
grub-core/script/argv.c
grub-core/script/execute.c
include/grub/script_sh.h
tests/util/grub-shell.in

@@@ -496,12 -501,12 +501,18 @@@ script = 
    common = tests/grub_script_shift.in;
  };
  
+ script = {
+   testcase;
+   name = grub_script_blockarg;
+   common = tests/grub_script_blockarg.in;
+ };
 +script = {
 +  testcase;
 +  name = grub_script_expansion;
 +  common = tests/grub_script_expansion.in;
 +};
 +
  program = {
    testcase;
    name = example_unit_test;
Simple merge
Simple merge
@@@ -225,30 -223,8 +226,30 @@@ grub_script_arglist_to_argv (struct gru
    int i;
    char **values = 0;
    struct grub_script_arg *arg = 0;
-   struct grub_script_argv result = { 0, 0 };
+   struct grub_script_argv result = { 0, 0, 0 };
  
 +  auto int append (char *s, int escape_type);
 +  int append (char *s, int escape_type)
 +  {
 +    int r;
 +    char *p = 0;
 +
 +    if (! grub_wildcard_translator || escape_type == 0)
 +      return grub_script_argv_append (&result, s);
 +
 +    if (escape_type > 0)
 +      p = grub_wildcard_translator->escape (s);
 +    else if (escape_type < 0)
 +      p = grub_wildcard_translator->unescape (s);
 +
 +    if (! p)
 +      return 1;
 +
 +    r = grub_script_argv_append (&result, p);
 +    grub_free (p);
 +    return r;
 +  }
 +
    for (; arglist && arglist->arg; arglist = arglist->next)
      {
        if (grub_script_argv_next (&result))
@@@ -69,18 -78,9 +78,19 @@@ struct grub_script_arg
  {
    unsigned argc;
    char **args;
+   struct grub_script *script;
  };
  
- extern struct grub_script_wildcard_translator *grub_filename_translator;
 +/* Pluggable wildcard translator.  */
 +struct grub_script_wildcard_translator
 +{
 +  char *(*escape) (const char *str);
 +  char *(*unescape) (const char *str);
 +  grub_err_t (*expand) (const char *str, char ***expansions);
 +};
 +extern struct grub_script_wildcard_translator *grub_wildcard_translator;
++extern struct grub_script_wildcard_translator grub_filename_translator;
 +
  /* A complete argument.  It consists of a list of one or more `struct
     grub_script_arg's.  */
  struct grub_script_arglist
Simple merge