|
|
@ -385,33 +385,36 @@ int main(int argc, char *argv[]) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Check required arguments*/ |
|
|
|
/* Check required arguments */ |
|
|
|
if (header.firmware_type == 0) { |
|
|
|
if (mode == NONE) { |
|
|
|
fprintf(stderr, "Firmware type must be defined\n"); |
|
|
|
fprintf(stderr, "A mode must be defined\n"); |
|
|
|
usage(progname, EXIT_FAILURE); |
|
|
|
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"); |
|
|
|
fprintf(stderr, "Input and output files must be defined\n"); |
|
|
|
usage(progname, EXIT_FAILURE); |
|
|
|
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); |
|
|
|
usage(progname, EXIT_FAILURE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
switch (mode) { |
|
|
|
if (header.vendor_id == 0 || header.product_id == 0) { |
|
|
|
case NONE: |
|
|
|
fprintf(stderr, "Vendor ID and Product ID must be defined and non-zero\n"); |
|
|
|
fprintf(stderr, "A mode must be defined\n"); |
|
|
|
|
|
|
|
usage(progname, EXIT_FAILURE); |
|
|
|
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; |
|
|
|
return EXIT_SUCCESS; |
|
|
|
} |
|
|
|
} |
|
|
|