Merge pull request #710 from dp-arm/dp/fiptool-usage

fiptool: Invoke command specific usage function
diff --git a/tools/fiptool/fiptool.c b/tools/fiptool/fiptool.c
index 6a3406e..b3f02f6 100644
--- a/tools/fiptool/fiptool.c
+++ b/tools/fiptool/fiptool.c
@@ -373,7 +373,7 @@
 	int i;
 
 	if (argc != 2)
-		usage();
+		info_usage();
 	argc--, argv++;
 
 	parse_fip(argv[0], &toc_header);
@@ -421,6 +421,7 @@
 static void info_usage(void)
 {
 	printf("fiptool info FIP_FILENAME\n");
+	exit(1);
 }
 
 static int pack_images(char *filename, uint64_t toc_flags)
@@ -554,7 +555,7 @@
 	int i;
 
 	if (argc < 2)
-		usage();
+		create_usage();
 
 	i = fill_common_opts(opts, required_argument);
 	add_opt(opts, i, "plat-toc-flags", required_argument,
@@ -583,14 +584,14 @@
 			parse_plat_toc_flags(optarg, &toc_flags);
 			break;
 		default:
-			usage();
+			create_usage();
 		}
 	}
 	argc -= optind;
 	argv += optind;
 
 	if (argc == 0)
-		usage();
+		create_usage();
 
 	update_fip();
 
@@ -611,6 +612,7 @@
 	for (; toc_entry->cmdline_name != NULL; toc_entry++)
 		printf("  --%-16s FILENAME\t%s\n", toc_entry->cmdline_name,
 		    toc_entry->name);
+	exit(1);
 }
 
 static int update_cmd(int argc, char *argv[])
@@ -623,7 +625,7 @@
 	int i;
 
 	if (argc < 2)
-		usage();
+		update_usage();
 
 	i = fill_common_opts(opts, required_argument);
 	add_opt(opts, i, "out", required_argument, 'o');
@@ -658,14 +660,14 @@
 			snprintf(outfile, sizeof(outfile), "%s", optarg);
 			break;
 		default:
-			usage();
+			update_usage();
 		}
 	}
 	argc -= optind;
 	argv += optind;
 
 	if (argc == 0)
-		usage();
+		update_usage();
 
 	if (outfile[0] == '\0')
 		snprintf(outfile, sizeof(outfile), "%s", argv[0]);
@@ -698,6 +700,7 @@
 	for (; toc_entry->cmdline_name != NULL; toc_entry++)
 		printf("  --%-16s FILENAME\t%s\n", toc_entry->cmdline_name,
 		    toc_entry->name);
+	exit(1);
 }
 
 static int unpack_cmd(int argc, char *argv[])
@@ -710,7 +713,7 @@
 	int i;
 
 	if (argc < 2)
-		usage();
+		unpack_usage();
 
 	i = fill_common_opts(opts, required_argument);
 	add_opt(opts, i, "force", no_argument, 'f');
@@ -740,14 +743,14 @@
 			snprintf(outdir, sizeof(outdir), "%s", optarg);
 			break;
 		default:
-			usage();
+			unpack_usage();
 		}
 	}
 	argc -= optind;
 	argv += optind;
 
 	if (argc == 0)
-		usage();
+		unpack_usage();
 
 	parse_fip(argv[0], NULL);
 
@@ -822,6 +825,7 @@
 		    toc_entry->name);
 	fputc('\n', stderr);
 	printf("If no options are provided, all images will be unpacked.\n");
+	exit(1);
 }
 
 static int remove_cmd(int argc, char *argv[])
@@ -834,7 +838,7 @@
 	int i;
 
 	if (argc < 2)
-		usage();
+		remove_usage();
 
 	i = fill_common_opts(opts, no_argument);
 	add_opt(opts, i, "force", no_argument, 'f');
@@ -860,14 +864,14 @@
 			snprintf(outfile, sizeof(outfile), "%s", optarg);
 			break;
 		default:
-			usage();
+			remove_usage();
 		}
 	}
 	argc -= optind;
 	argv += optind;
 
 	if (argc == 0)
-		usage();
+		remove_usage();
 
 	if (outfile[0] != '\0' && access(outfile, F_OK) == 0 && !fflag)
 		log_errx("File %s already exists, use --force to overwrite it",
@@ -912,6 +916,7 @@
 	for (; toc_entry->cmdline_name != NULL; toc_entry++)
 		printf("  --%-16s\t%s\n", toc_entry->cmdline_name,
 		    toc_entry->name);
+	exit(1);
 }
 
 static int version_cmd(int argc, char *argv[])
@@ -928,6 +933,7 @@
 static void version_usage(void)
 {
 	printf("fiptool version\n");
+	exit(1);
 }
 
 static int help_cmd(int argc, char *argv[])
@@ -940,10 +946,8 @@
 
 	for (i = 0; i < NELEM(cmds); i++) {
 		if (strcmp(cmds[i].name, argv[0]) == 0 &&
-		    cmds[i].usage != NULL) {
+		    cmds[i].usage != NULL)
 			cmds[i].usage();
-			break;
-		}
 	}
 	if (i == NELEM(cmds))
 		printf("No help for subcommand '%s'\n", argv[0]);