switch (arg->type)
{
case GRUB_SCRIPT_ARG_TYPE_VAR:
- value = grub_env_get (arg->str);
- while (value && *value && (ptr = move_to_next(&value)))
+ case GRUB_SCRIPT_ARG_TYPE_DQVAR:
+ values = grub_script_env_get (arg->str, arg->type);
+ for (i = 0; values && values[i]; i++)
{
- empty = 0;
- append (ptr, value - ptr);
- if (*value) push(0);
+ if (i != 0 && grub_script_argv_next (&result))
+ goto fail;
+
+ if (grub_script_argv_append (&result, values[i]))
+ goto fail;
}
+ grub_free (values);
break;
+ case GRUB_SCRIPT_ARG_TYPE_BLOCK:
case GRUB_SCRIPT_ARG_TYPE_TEXT:
- if (grub_strlen (arg->str) > 0)
- {
- empty = 0;
- append (arg->str, 0);
- }
+ if (grub_strlen (arg->str) &&
+ grub_script_argv_append (&result, arg->str))
+ goto fail;
break;
case GRUB_SCRIPT_ARG_TYPE_DQSTR: