firmware-utils: mksenaofw: rework option validation
authorMathias Kresin <dev@kresin.me>
Wed, 17 Aug 2016 18:08:52 +0000 (20:08 +0200)
committerMathias Kresin <dev@kresin.me>
Wed, 17 Aug 2016 18:08:52 +0000 (20:08 +0200)
The options firmware_type, vendor_id and product_id are not required
for decoding an image file.

Signed-off-by: Mathias Kresin <dev@kresin.me>
tools/firmware-utils/src/mksenaofw.c

index 7ea58f5..0f10ebd 100644 (file)
@@ -385,33 +385,36 @@ int main(int argc, char *argv[])
                }
        }
 
-       /* Check required arguments*/
-       if (header.firmware_type == 0) {
-               fprintf(stderr, "Firmware type must be defined\n");
+       /* Check required arguments */
+       if (mode == NONE) {
+               fprintf(stderr, "A mode must be defined\n");
                usage(progname, EXIT_FAILURE);
-       } else if (input_file == 0 || output_file == 0) {
+       }
+
+       if (input_file == NULL || output_file == NULL) {
                fprintf(stderr, "Input and output files must be defined\n");
                usage(progname, EXIT_FAILURE);
-       } else if (header.vendor_id == 0 || header.product_id == 0) {
-               fprintf(stderr, "Vendor ID and Product ID must be defined and non-zero\n");
+       }
+
+       if (mode == DECODE) {
+               if (decode_image(input_file, output_file) < 0)
+                               return EXIT_FAILURE;
+
+               return EXIT_SUCCESS;
+       }
+
+       if (header.firmware_type == 0) {
+               fprintf(stderr, "Firmware type must be defined\n");
                usage(progname, EXIT_FAILURE);
        }
 
-       switch (mode) {
-       case NONE:
-               fprintf(stderr, "A mode must be defined\n");
+       if (header.vendor_id == 0 || header.product_id == 0) {
+               fprintf(stderr, "Vendor ID and Product ID must be defined and non-zero\n");
                usage(progname, EXIT_FAILURE);
-               break;
-       case ENCODE:
-               if (encode_image(input_file, output_file, &header, pad ? block_size : 0)
-                               < 0)
-                       return EXIT_FAILURE;
-               break;
-       case DECODE:
-               if (decode_image(input_file, output_file) < 0)
-                       return EXIT_FAILURE;
-               break;
        }
 
+       if (encode_image(input_file, output_file, &header, pad ? block_size : 0) < 0)
+               return EXIT_FAILURE;
+
        return EXIT_SUCCESS;
 }