tools: dumpimage: Add help option and make error paths consistent
authorMartyn Welch <martyn.welch@collabora.com>
Sat, 26 Jan 2019 02:31:53 +0000 (02:31 +0000)
committerTom Rini <trini@konsulko.com>
Fri, 1 Feb 2019 19:13:46 +0000 (14:13 -0500)
The utility dumpimage has error paths that display the usage and others
that exit without displaying usage. Add an explicit help option to
dumpimage to display the usage and remove it's use in error paths to make
the error messages more obvious and errors paths more consistent.

Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
tools/dumpimage.c

index e17e979b04d3af0ce43b6a586d62b5213c17fa31..5c9ad36322224cfe260170834146a62442cdbbb3 100644 (file)
@@ -65,7 +65,7 @@ int main(int argc, char **argv)
 
        params.cmdname = *argv;
 
-       while ((opt = getopt(argc, argv, "lo:T:p:V")) != -1) {
+       while ((opt = getopt(argc, argv, "hlo:T:p:V")) != -1) {
                switch (opt) {
                case 'l':
                        params.lflag = 1;
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
                        if (params.type < 0) {
                                fprintf(stderr, "%s: Invalid type\n",
                                        params.cmdname);
-                               usage();
+                               exit(EXIT_FAILURE);
                        }
                        break;
                case 'p':
@@ -94,15 +94,20 @@ int main(int argc, char **argv)
                case 'V':
                        printf("dumpimage version %s\n", PLAIN_VERSION);
                        exit(EXIT_SUCCESS);
+               case 'h':
+                       usage();
                default:
                        usage();
                        break;
                }
        }
 
+       if (argc < 2)
+               usage();
+
        if (optind >= argc) {
                fprintf(stderr, "%s: image file missing\n", params.cmdname);
-               usage();
+               exit(EXIT_FAILURE);
        }
 
        params.imagefile = argv[optind];
@@ -123,7 +128,7 @@ int main(int argc, char **argv)
                if (tparams->check_params(&params)) {
                        fprintf(stderr, "%s: Parameter check failed\n",
                                params.cmdname);
-                       usage();
+                       exit(EXIT_FAILURE);
                }
        }
 
@@ -195,9 +200,12 @@ static void usage(void)
                "          -T ==> set image type to 'type'\n"
                "          -p ==> 'position' (starting at 0) of the component to extract from image\n",
                params.cmdname);
+       fprintf(stderr,
+               "       %s -h ==> print usage information and exit\n",
+               params.cmdname);
        fprintf(stderr,
                "       %s -V ==> print version information and exit\n",
                params.cmdname);
 
-       exit(EXIT_FAILURE);
+       exit(EXIT_SUCCESS);
 }