Patchwork [U-Boot,v6,06/17] Add cmd_process_error() to report and process errors

login
register
mail settings
Submitter Simon Glass
Date Nov. 7, 2013, 4:32 p.m.
Message ID <1383841933-1800-7-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/289414/
State Superseded
Delegated to: Tom Rini
Headers show

Comments

Simon Glass - Nov. 7, 2013, 4:32 p.m.
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>
---
Changes in v6: None
Changes in v5: None
Changes in v4: None
Changes in v3: None
Changes in v2: None

 common/command.c  | 10 ++++++++++
 include/command.h |  9 +++++++++
 2 files changed, 19 insertions(+)

Patch

diff --git a/common/command.c b/common/command.c
index 625571d..668aa8b 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
  *