common: command: Handle USAGE failure separately
authorMichal Simek <michal.simek@xilinx.com>
Thu, 21 Jun 2018 12:49:26 +0000 (14:49 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 19 Jul 2018 08:49:53 +0000 (10:49 +0200)
command_ret_t enum contains 3 return values but only two are handled
now. Extend cmd_process_error() and handle CMD_RET_USAGE separately.

These commands are affected by this change.
cmd/demo.c
cmd/efi.c
cmd/gpio.c
cmd/qfw.c
cmd/x86/fsp.c
test/dm/cmd_dm.c

And scripts shouldn't be affected because return value is not 0. But
every command implementation can choose what it is correct to pass.
I would expect that RET_USAGE is called when parameters are not
correctly passed (have incorrect value, missing parameters)
and RET_FAILURE when correct parameters are passed but command fails.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromum.org>
common/command.c
include/command.h

index a4a8dc601acbc0c000e610f6a7638be99efff500..2433a89e0a8e10f3098eb453e25db33f574436f5 100644 (file)
@@ -547,6 +547,9 @@ enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
 
 int cmd_process_error(cmd_tbl_t *cmdtp, int err)
 {
+       if (err == CMD_RET_USAGE)
+               return CMD_RET_USAGE;
+
        if (err) {
                printf("Command '%s' failed: Error %d\n", cmdtp->name, err);
                return CMD_RET_FAILURE;
index 04cd1e745cbfbbb4fa15170ff2181160e1fbde84..5b1577f3b4774f6f685efb02bd8f26ee481dd444 100644 (file)
@@ -67,7 +67,9 @@ extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *
  *
  * @cmdtp: Command which caused the error
  * @err: Error code (0 if none, -ve for error, like -EIO)
- * @return 0 if there is not error, 1 (CMD_RET_FAILURE) if an error is found
+ * @return 0 (CMD_RET_SUCCESX) if there is not error,
+ *        1 (CMD_RET_FAILURE) if an error is found
+ *        -1 (CMD_RET_USAGE) if 'usage' error is found
  */
 int cmd_process_error(cmd_tbl_t *cmdtp, int err);