diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-02-13 10:31:08 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-02-13 10:40:03 +0100 |
commit | 4435836ec2f4218a7d145a4902c597e4dcdda5ef (patch) | |
tree | 4013736ec10b03bd600c635787e0cd2290316c3c /commands/dfu.c | |
parent | 1a3315ad7d214a3a6fd1e1daf14f800df6be37cd (diff) | |
download | barebox-4435836ec2f4218a7d145a4902c597e4dcdda5ef.tar.gz barebox-4435836ec2f4218a7d145a4902c597e4dcdda5ef.tar.xz |
dfu command: check return values
Check the return value of usb_dfu_register and bail out
with an error if it fails. Also return successfully if it succeeds
instead of returning 1 unconditionally.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/dfu.c')
-rw-r--r-- | commands/dfu.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/commands/dfu.c b/commands/dfu.c index ec1197a888..6bd43e45c8 100644 --- a/commands/dfu.c +++ b/commands/dfu.c @@ -101,7 +101,7 @@ static int do_dfu(int argc, char *argv[]) char *manufacturer = "barebox"; const char *productname = barebox_get_model(); u16 idVendor = 0, idProduct = 0; - + int ret; while((opt = getopt(argc, argv, "m:p:V:P:")) > 0) { switch(opt) { @@ -134,6 +134,7 @@ static int do_dfu(int argc, char *argv[]) dfu_alts = xrealloc(dfu_alts, sizeof(*dfu_alts) * (n + 1)); if (dfu_do_parse_one(argstr, &endptr, &dfu_alts[n])) { printf("parse error\n"); + ret = -EINVAL; goto out; } argstr = endptr; @@ -147,7 +148,7 @@ static int do_dfu(int argc, char *argv[]) pdata.idVendor = idVendor; pdata.idProduct = idProduct; - usb_dfu_register(&pdata); + ret = usb_dfu_register(&pdata); out: while (n) { @@ -155,8 +156,10 @@ out: free(dfu_alts[n].name); free(dfu_alts[n].dev); }; + free(dfu_alts); - return 1; + + return ret; } BAREBOX_CMD_HELP_START(dfu) |