summaryrefslogtreecommitdiffstats
path: root/fastboot
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2010-04-23 12:38:51 -0700
committerBrian Carlstrom <bdc@google.com>2010-04-23 12:45:38 -0700
commiteb31c0bdc0eac0898f01cdc1737cea94269f8f27 (patch)
treee556012c4e02e83ee62629dedde3294d0c45cdc9 /fastboot
parentf538d8c76b9fb8377f279cd4e8227d2c389e7767 (diff)
downloadsystem_core-eb31c0bdc0eac0898f01cdc1737cea94269f8f27.zip
system_core-eb31c0bdc0eac0898f01cdc1737cea94269f8f27.tar.gz
system_core-eb31c0bdc0eac0898f01cdc1737cea94269f8f27.tar.bz2
fastboot should return non-zero exit code on error
When using fastboot in scripts, it currently is necessary to parse the output for FAILED messages and possible other indications of error. This happens relatively often, for example when there are radio update issues. Fortunately, fb_execute_queue already has a notion that an error has occured which is used to abort the queue execution. This change makes the status value be returned from fb_execute_queue to main which can then return it as an exit status. usage cases were also changed to return 1. Note the code already returned 1 for error in one other case when there was a problem with boot, so there is a precedent for return 1 on error in this program. Change-Id: Ib0463b08c8f2569495e248dd84e331f7e3691039
Diffstat (limited to 'fastboot')
-rw-r--r--fastboot/engine.c6
-rw-r--r--fastboot/fastboot.c8
-rw-r--r--fastboot/fastboot.h2
3 files changed, 9 insertions, 7 deletions
diff --git a/fastboot/engine.c b/fastboot/engine.c
index 6d62c6e..f29cc03 100644
--- a/fastboot/engine.c
+++ b/fastboot/engine.c
@@ -271,11 +271,11 @@ void fb_queue_notice(const char *notice)
a->data = (void*) notice;
}
-void fb_execute_queue(usb_handle *usb)
+int fb_execute_queue(usb_handle *usb)
{
Action *a;
char resp[FB_RESPONSE_SZ+1];
- int status;
+ int status = 0;
a = action_list;
resp[FB_RESPONSE_SZ] = 0;
@@ -307,5 +307,5 @@ void fb_execute_queue(usb_handle *usb)
}
fprintf(stderr,"finished. total time: %.3fs\n", (now() - start));
+ return status;
}
-
diff --git a/fastboot/fastboot.c b/fastboot/fastboot.c
index bed30b2..5389351 100644
--- a/fastboot/fastboot.c
+++ b/fastboot/fastboot.c
@@ -550,11 +550,12 @@ int main(int argc, char **argv)
void *data;
unsigned sz;
unsigned page_size = 2048;
+ int status;
skip(1);
if (argc == 0) {
usage();
- return 0;
+ return 1;
}
if (!strcmp(*argv, "devices")) {
@@ -686,6 +687,7 @@ int main(int argc, char **argv)
argc = do_oem_command(argc, argv);
} else {
usage();
+ return 1;
}
}
@@ -701,6 +703,6 @@ int main(int argc, char **argv)
usb = open_device();
- fb_execute_queue(usb);
- return 0;
+ status = fb_execute_queue(usb);
+ return (status) ? 1 : 0;
}
diff --git a/fastboot/fastboot.h b/fastboot/fastboot.h
index a36c569..a4b27a0 100644
--- a/fastboot/fastboot.h
+++ b/fastboot/fastboot.h
@@ -49,7 +49,7 @@ void fb_queue_reboot(void);
void fb_queue_command(const char *cmd, const char *msg);
void fb_queue_download(const char *name, void *data, unsigned size);
void fb_queue_notice(const char *notice);
-void fb_execute_queue(usb_handle *usb);
+int fb_execute_queue(usb_handle *usb);
/* util stuff */
void die(const char *fmt, ...);