[Libguestfs] [PATCH] fish: show synopsis if command syntax is wrong

Pino Toscano ptoscano at redhat.com
Fri Nov 28 14:00:39 UTC 2014


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




More information about the Libguestfs mailing list