values = grub_script_env_get (arg->str, arg->type);
for (i = 0; values && values[i]; i++)
{
- if (i != 0)
- error += grub_script_argv_next (&result);
+ if (i != 0 && grub_script_argv_next (&result))
+ goto fail;
- if (grub_script_argv_append (&result, values[i]))
- goto fail;
+ if (arg->type == GRUB_SCRIPT_ARG_TYPE_VAR)
- error += grub_script_argv_append (&result, values[i]);
++ {
++ if (grub_script_argv_append (&result, values[i]))
++ goto fail;
++ }
+ else
- error += grub_script_argv_append_escaped (&result, values[i]);
++ {
++ if (grub_script_argv_append_escaped (&result, values[i]))
++ goto fail;
++ }
+
+ grub_free (values[i]);
}
grub_free (values);
break;
if (! result.args[result.argc - 1])
result.argc--;
- error += grub_script_argv_expand (&result);
- if (error)
- {
- grub_script_argv_free (&result);
- return 1;
- }
++ if (grub_script_argv_expand (&result))
++ goto fail;
+
*argv = result;
return 0;
+
+ fail:
+
+ grub_script_argv_free (&result);
+ return 1;
}
static grub_err_t