From: Tormod Volden <debian.tor...@gmail.com>

Make the --version output compatible with for instance help2man.
Print the version on normal invokation.

Also remove unreachable check for file name, getopt takes care of that.

Signed-off-by: Tormod Volden <debian.tor...@gmail.com>
---

v2: Move check for -D or -U before libusb initialisation. Drop check for
file name.

Tormod

 src/main.c |   55 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/src/main.c b/src/main.c
index 5f57bee..8ec069a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -484,7 +484,12 @@ static void help(void)
 
 static void print_version(void)
 {
-       printf("dfu-util version %s\n", VERSION);
+       printf("dfu-util %s\n\n", VERSION);
+       printf("(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko 
Inc.\n"
+              "This program is Free Software and has ABSOLUTELY NO 
WARRANTY\n\n");
+
+       printf("dfu-util does currently only support DFU version 1.0\n\n");
+
 }
 
 static struct option opts[] = {
@@ -508,6 +513,8 @@ static struct option opts[] = {
 
 enum mode {
        MODE_NONE,
+       MODE_VERSION,
+       MODE_LIST,
        MODE_UPLOAD,
        MODE_DOWNLOAD,
 };
@@ -530,21 +537,10 @@ int main(int argc, char **argv)
        int final_reset = 0;
        int ret;
 
-       printf("dfu-util - (C) 2005-2008 by Weston Schmidt, Harald Welte and 
OpenMoko Inc.\n"
-              "This program is Free Software and has ABSOLUTELY NO 
WARRANTY\n\n");
-
-       printf("dfu-util does currently only support DFU version 1.0\n\n");
-
        host_page_size = getpagesize();
        memset(dif, 0, sizeof(*dif));
        file.name = NULL;
 
-       ret = libusb_init(&ctx);
-       if (ret) {
-               fprintf(stderr, "unable to initialize libusb: %i\n", ret);
-               return EXIT_FAILURE;
-       }
-
        while (1) {
                int c, option_index = 0;
                c = getopt_long(argc, argv, "hVvld:p:c:i:a:t:U:D:R", opts,
@@ -558,18 +554,13 @@ int main(int argc, char **argv)
                        exit(0);
                        break;
                case 'V':
-                       print_version();
-                       exit(0);
+                       mode = MODE_VERSION;
                        break;
                case 'v':
-                       if (verbose) {
-                               libusb_set_debug(ctx, 255);
-                       }
-                       verbose = 1;
+                       verbose++;
                        break;
                case 'l':
-                       list_dfu_interfaces(ctx);
-                       exit(0);
+                       mode = MODE_LIST;
                        break;
                case 'd':
                        /* Parse device ID */
@@ -632,16 +623,30 @@ int main(int argc, char **argv)
                }
        }
 
+       print_version();
+       if (mode == MODE_VERSION) {
+               exit(0);
+       }
+
        if (mode == MODE_NONE) {
-               fprintf(stderr, "You need to specify one of -D or -U\n");
+               fprintf(stderr, "Error: You need to specify one of -D or 
-U\n\n");
                help();
                exit(2);
        }
 
-       if (!file.name) {
-               fprintf(stderr, "You need to specify a filename to -D or -U\n");
-               help();
-               exit(2);
+       ret = libusb_init(&ctx);
+       if (ret) {
+               fprintf(stderr, "unable to initialize libusb: %i\n", ret);
+               return EXIT_FAILURE;
+       }
+
+       if (verbose > 1) {
+               libusb_set_debug(ctx, 255);
+       }
+
+       if (mode == MODE_LIST) {
+               list_dfu_interfaces(ctx);
+               exit(0);
        }
 
        dfu_init(5000);
-- 
1.7.0.4


_______________________________________________
devel mailing list
devel@lists.openmoko.org
https://lists.openmoko.org/mailman/listinfo/devel

Reply via email to