On Friday 28 November 2014 17:55:51 Hu Tao wrote:
This patch lets guestfish show command synopsis if the syntax of
command issued
by user is wrong, rather than telling user that the number of parameters is wrong.
The idea seems sound to me.
Shouldn't that be done also for fish commands? If so, just make
"synopsis" a function taking args and optargs, and use it in both
places.
@@ -694,10 +679,16 @@ Guestfish will prompt for these
separately."
pr "run_action (const char *cmd, size_t argc, char *argv[])\n";
pr "{\n";
pr " const struct command_table *ct;\n";
+ pr " int ret = -1;\n";
pr "\n";
pr " ct = lookup_fish_command (cmd, strlen (cmd));\n";
- pr " if (ct)\n";
- pr " return ct->entry->run (cmd, argc, argv);\n";
+ pr " if (ct) {\n";
+ pr " ret = ct->entry->run (cmd, argc, argv);\n";
+ pr " if (ret == -2) {\n";
+ pr " fprintf (stderr, _(\"usage: %%s\\n\"),
ct->entry->synopsis);\n";
+ pr " fprintf (stderr, _(\"type 'help %%s' for more help on
%%s\\n\"), cmd, cmd);\n";
+ pr " }\n";
+ pr " }\n";
There is an issue here: in the true branch of "if (ct)", there is no
more return, and thus builds fails when enabling -Werror
(--enable-werror for configure):
cmds.c: In function 'run_action':
cmds.c:23233:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
Also, the return code -2 must be turned as -1.
--
Pino Toscano