diff options
author | hailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-08-13 11:38:44 +0000 |
---|---|---|
committer | hailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-08-13 11:38:44 +0000 |
commit | 7e91b335482b999a306cc6498df8bcf9642a3084 (patch) | |
tree | 546e73a67f822fa95710ca23db8e1286fdab53dd | |
parent | eec4b7b9edc6c434854b424baa80d956f521dabd (diff) | |
download | flashrom-7e91b335482b999a306cc6498df8bcf9642a3084.tar.gz |
Generate the usage message by walking the list of available programmers.
This makes sure compiled out programmers are not listed.
Tested, usage output is identical to the hardcoded variant.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@684 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r-- | flashrom.c | 35 |
1 files changed, 32 insertions, 3 deletions
@@ -488,6 +488,11 @@ int erase_flash(struct flashchip *flash) void usage(const char *name) { + const char *pname; + int pnamelen; + int remaining = 0; + enum programmer p; + printf("usage: %s [-VfLzhR] [-E|-r file|-w file|-v file] [-c chipname]\n" " [-m [vendor:]part] [-l file] [-i image] [-p programmer]\n\n", name); @@ -510,9 +515,33 @@ void usage(const char *name) " -i | --image <name>: only flash image name from flash layout\n" " -L | --list-supported: print supported devices\n" " -z | --list-supported-wiki: print supported devices in wiki syntax\n" - " -p | --programmer <name>: specify the programmer device\n" - " (internal, dummy, nic3com, satasii,\n" - " it87spi, ft2232spi, serprog)\n" + " -p | --programmer <name>: specify the programmer device"); + + for (p = 0; p < PROGRAMMER_INVALID; p++) { + pname = programmer_table[p].name; + pnamelen = strlen(pname); + if (remaining - pnamelen - 2 < 0) { + printf("\n "); + remaining = 43; + } else { + printf(" "); + remaining--; + } + if (p == 0) { + printf("("); + remaining--; + } + printf("%s", pname); + remaining -= pnamelen; + if (p < PROGRAMMER_INVALID - 1) { + printf(","); + remaining--; + } else { + printf(")\n"); + } + } + + printf( " -h | --help: print this help text\n" " -R | --version: print the version (release)\n" "\nYou can specify one of -E, -r, -w, -v or no operation. If no operation is\n" |