From: Mathias Kresin Date: Wed, 17 Aug 2016 18:08:52 +0000 (+0200) Subject: firmware-utils: mksenaofw: rework option validation X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e85799f92408d6936e25efc924d6255a9b7453b4;p=project%2Ffirmware-utils.git firmware-utils: mksenaofw: rework option validation The options firmware_type, vendor_id and product_id are not required for decoding an image file. Signed-off-by: Mathias Kresin --- diff --git a/src/mksenaofw.c b/src/mksenaofw.c index 7ea58f5..0f10ebd 100644 --- a/src/mksenaofw.c +++ b/src/mksenaofw.c @@ -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; }