summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-02-26 15:59:15 -0700
committerTom Rini <trini@ti.com>2014-03-04 12:15:28 -0500
commit16ff9902468088a0a559b3db95421355ef60d366 (patch)
tree4618524681dff751b2860c3d6b8031b4307b7f1c
parent714a5621c2df0b1cfce525b9add071fc9bfd726b (diff)
downloadu-boot-imx-16ff9902468088a0a559b3db95421355ef60d366.zip
u-boot-imx-16ff9902468088a0a559b3db95421355ef60d366.tar.gz
u-boot-imx-16ff9902468088a0a559b3db95421355ef60d366.tar.bz2
Add cmd_process_error() to report and process errors
U-Boot now uses errors defined in include/errno.h which are negative integers. Commands which fail need to report the error and return 1 to indicate failure. Add this functionality in cmd_process_error(). For now this merely reports the error number. It would be possible also to produce a helpful error message by storing the error strings in U-Boot. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/command.c10
-rw-r--r--include/command.h9
2 files changed, 19 insertions, 0 deletions
diff --git a/common/command.c b/common/command.c
index 597ab4c..26c37f2 100644
--- a/common/command.c
+++ b/common/command.c
@@ -538,3 +538,13 @@ enum command_ret_t cmd_process(int flag, int argc, char * const argv[],
rc = cmd_usage(cmdtp);
return rc;
}
+
+int cmd_process_error(cmd_tbl_t *cmdtp, int err)
+{
+ if (err) {
+ printf("Command '%s' failed: Error %d\n", cmdtp->name, err);
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/include/command.h b/include/command.h
index f782779..d3f700f 100644
--- a/include/command.h
+++ b/include/command.h
@@ -64,6 +64,15 @@ extern int var_complete(int argc, char * const argv[], char last_char, int maxv,
extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp);
#endif
+/**
+ * cmd_process_error() - report and process a possible error
+ *
+ * @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
+ */
+int cmd_process_error(cmd_tbl_t *cmdtp, int err);
+
/*
* Monitor Command
*