++2010-09-08 BVK Chaitanya <bvk.groups@gmail.com>
++
++ Not command (!) support to GRUB script.
++
++ * tests/grub_script_not.in: New test.
++ * Makefile.util.def: Rules for new test.
++
++ * grub-core/script/execute.c (grub_script_execute_cmdline): Handle
++ ! command as a special case.
++ * grub-core/script/yylex.l (GRUB_PARSER_TOKEN_NOT): Removed.
++
2010-09-07 BVK Chaitanya <bvk.groups@gmail.com>
-- * grub-core/commands/wildcard.c (wildcard_expand): Fix wrong grub_free.
++ * grub-core/commands/wildcard.c (wildcard_expand): Fix wrong
++ grub_free.
2010-09-07 BVK Chaitanya <bvk.groups@gmail.com>
{
if ((grubcmd->flags & GRUB_COMMAND_FLAG_BLOCKS) &&
(grubcmd->flags & GRUB_COMMAND_FLAG_EXTCMD))
- ret = grub_extcmd_dispatcher (grubcmd, argv.argc - 1, argv.args + 1,
- argv.script);
+ ret = grub_extcmd_dispatcher (grubcmd, argc, args, argv.script);
else
- ret = (grubcmd->func) (grubcmd, argv.argc - 1, argv.args + 1);
+ ret = (grubcmd->func) (grubcmd, argc, args);
}
else
- ret = grub_script_function_call (func, argv.argc - 1, argv.args + 1);
+ ret = grub_script_function_call (func, argc, args);
+
+ if (invert)
+ {
+ if (ret == GRUB_ERR_TEST_FAILURE)
+ grub_errno = ret = GRUB_ERR_NONE;
+ else if (ret == GRUB_ERR_NONE)
+ ret = grub_error (GRUB_ERR_TEST_FAILURE, "false");
+ else
+ {
+ grub_print_error ();
- grub_errno = ret = GRUB_ERR_NONE;
++ ret = GRUB_ERR_NONE;
+ }
+ }
/* Free arguments. */
grub_script_argv_free (&argv);