if (tparams->verify_header) {
retval = tparams->verify_header((unsigned char *)ptr,
sbuf->st_size, ¶ms);
- if (retval != 0)
+ if (retval != 0) {
+ fprintf(stderr, "%s: failed to verify header of %s\n",
+ params.cmdname, tparams->name);
return -1;
+ }
+
/*
* Extract the file from the image
* if verify is successful
*/
if (tparams->extract_subimage) {
retval = tparams->extract_subimage(ptr, ¶ms);
+ if (retval != 0) {
+ fprintf(stderr, "%s: extract_subimage failed for %s\n",
+ params.cmdname, tparams->name);
+ return -3;
+ }
} else {
fprintf(stderr,
"%s: extract_subimage undefined for %s\n",
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;
if (params.type < 0) {
fprintf(stderr, "%s: Invalid type\n",
params.cmdname);
- usage();
+ exit(EXIT_FAILURE);
}
break;
case 'p':
case 'V':
printf("dumpimage version %s\n", PLAIN_VERSION);
exit(EXIT_SUCCESS);
+ case 'h':
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];
if (tparams->check_params(¶ms)) {
fprintf(stderr, "%s: Parameter check failed\n",
params.cmdname);
- usage();
+ exit(EXIT_FAILURE);
}
}
* image type. Returns the error code if not matched
*/
retval = dumpimage_extract_subimage(tparams, ptr, &sbuf);
+ if (retval)
+ fprintf(stderr, "%s: Can't extract subimage from %s\n",
+ params.cmdname, params.imagefile);
} else {
/*
* Print the image information for matched image type
" -l ==> list image header information\n",
params.cmdname);
fprintf(stderr,
- " %s -T type [-p position] [-o outfile] image\n"
- " -T ==> set image type to 'type'\n"
- " -p ==> 'position' (starting at 0) of the component to extract from image\n",
+ " %s [-T type] [-p position] [-o outfile] image\n"
+ " -T ==> declare image type as 'type'\n"
+ " -p ==> 'position' (starting at 0) of the component to extract from image\n"
+ " -o ==> extract component to file 'outfile'\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);
}