summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2015-03-26 16:32:02 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-03-31 06:28:21 +0000
commit08d52b9bf52fb140b7c77c54bee500c3a59ff69b (patch)
tree4acdd51b2dcd8e8fb90ed4e62bbff238a311ac16
parent1e35c3a51176edbe924acb8b9bcb68ae7b155ab4 (diff)
downloadvboot-08d52b9bf52fb140b7c77c54bee500c3a59ff69b.tar.gz
futility: cleanup help functions for sign command
Just rearranging some internal functions and args. BUG=none BRANCH=none TEST=make runtests Signed-off-by: Bill Richardson <wfrichar@chromium.org> Change-Id: Ib7d3ab358543c549c670b1cd2715f1b670da2001 Reviewed-on: https://chromium-review.googlesource.com/262897 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--futility/cmd_sign.c82
1 files changed, 49 insertions, 33 deletions
diff --git a/futility/cmd_sign.c b/futility/cmd_sign.c
index 3020215c..47d147f0 100644
--- a/futility/cmd_sign.c
+++ b/futility/cmd_sign.c
@@ -575,6 +575,11 @@ static const char usage_pubkey[] = "\n"
" External program to compute the signature\n"
" (requires a PEM signing key)\n"
"\n";
+static void print_help_pubkey(int argc, char *argv[])
+{
+ printf(usage_pubkey, kNumAlgorithms - 1);
+}
+
static const char usage_fw_main[] = "\n"
"To sign a raw firmware blob (FW_MAIN_A/B):\n"
@@ -593,6 +598,10 @@ static const char usage_fw_main[] = "\n"
" -f|--flags NUM The preamble flags value"
" (default is 0)\n"
"\n";
+static void print_help_raw_firmware(int argc, char *argv[])
+{
+ puts(usage_fw_main);
+}
static const char usage_bios[] = "\n"
"To sign a complete firmware image (bios.bin):\n"
@@ -620,6 +629,10 @@ static const char usage_bios[] = "\n"
" -l|--loemid STRING Local OEM vblock suffix\n"
" [--outfile] OUTFILE Output firmware image\n"
"\n";
+static void print_help_bios_image(int argc, char *argv[])
+{
+ printf(usage_bios, sign_option.version);
+}
static const char usage_new_kpart[] = "\n"
"To create a new kernel partition image (/dev/sda2, /dev/mmcblk0p2):\n"
@@ -647,6 +660,10 @@ static const char usage_new_kpart[] = "\n"
" distinct outfile)\n"
" -f|--flags NUM The preamble flags value\n"
"\n";
+static void print_help_raw_kernel(int argc, char *argv[])
+{
+ printf(usage_new_kpart, sign_option.kloadaddr, sign_option.padding);
+}
static const char usage_old_kpart[] = "\n"
"To resign an existing kernel partition (/dev/sda2, /dev/mmcblk0p2):\n"
@@ -669,8 +686,20 @@ static const char usage_old_kpart[] = "\n"
" distinct OUTFILE)\n"
" -f|--flags NUM The preamble flags value\n"
"\n";
+static void print_help_kern_preamble(int argc, char *argv[])
+{
+ printf(usage_old_kpart, sign_option.padding);
+}
-static const char usage[] = "\n"
+static void (*help_type[NUM_FILE_TYPES])(int argc, char *argv[]) = {
+ [FILE_TYPE_PUBKEY] = &print_help_pubkey,
+ [FILE_TYPE_RAW_FIRMWARE] = &print_help_raw_firmware,
+ [FILE_TYPE_BIOS_IMAGE] = &print_help_bios_image,
+ [FILE_TYPE_RAW_KERNEL] = &print_help_raw_kernel,
+ [FILE_TYPE_KERN_PREAMBLE] = &print_help_kern_preamble,
+};
+
+static const char usage_default[] = "\n"
"Usage: " MYNAME " %s [PARAMS] INFILE [OUTFILE]\n"
"\n"
"The following signing operations are supported:\n"
@@ -682,42 +711,30 @@ static const char usage[] = "\n"
" raw linux kernel (vmlinuz) kernel partition image\n"
" kernel partition (/dev/sda2) same, or signed in-place\n"
"\n"
- "For more information, use \"" MYNAME " %s help TYPE\",\n"
- "where TYPE is one of:\n\n %s %s %s %s %s\n\n";
+ "For more information, use \"" MYNAME " help %s TYPE\",\n"
+ "where TYPE is one of:\n\n";
+static void print_help_default(int argc, char *argv[])
+{
+ enum futil_file_type type;
+ printf(usage_default, argv[0], argv[0]);
+ for (type = 0; type < NUM_FILE_TYPES; type++)
+ if (help_type[type])
+ printf(" %s", futil_file_type_name(type));
+ printf("\n\n");
+}
static void print_help(int argc, char *argv[])
{
enum futil_file_type type = FILE_TYPE_UNKNOWN;
- if (argc > 1 && futil_str_to_file_type(argv[1], &type))
- switch (type) {
- case FILE_TYPE_PUBKEY:
- printf(usage_pubkey, kNumAlgorithms - 1);
- return;
- case FILE_TYPE_RAW_FIRMWARE:
- puts(usage_fw_main);
- return;
- case FILE_TYPE_BIOS_IMAGE:
- printf(usage_bios, sign_option.version);
- return;
- case FILE_TYPE_RAW_KERNEL:
- printf(usage_new_kpart, sign_option.kloadaddr,
- sign_option.padding);
- return;
- case FILE_TYPE_KERN_PREAMBLE:
- printf(usage_old_kpart, sign_option.padding);
- return;
- default:
- break;
- }
+ if (argc > 1)
+ futil_str_to_file_type(argv[1], &type);
- printf(usage, argv[0], argv[0],
- futil_file_type_name(FILE_TYPE_PUBKEY),
- futil_file_type_name(FILE_TYPE_RAW_FIRMWARE),
- futil_file_type_name(FILE_TYPE_BIOS_IMAGE),
- futil_file_type_name(FILE_TYPE_RAW_KERNEL),
- futil_file_type_name(FILE_TYPE_KERN_PREAMBLE));
+ if (help_type[type])
+ help_type[type](argc, argv);
+ else
+ print_help_default(argc, argv);
}
enum no_short_opts {
@@ -1064,9 +1081,8 @@ static int do_sign(int argc, char *argv[])
"arch");
break;
default:
- fprintf(stderr, "Unable to sign type %s\n",
- futil_file_type_name(sign_option.type));
- errorcnt++;
+ /* Anything else we don't care */
+ break;
}
Debug("infile=%s\n", infile);