[flashrom] [PATCH] [NOT FOR MERGE] use getopt_long's flag field to distinguish short and long options in error messages
Stefan Tauner
stefan.tauner at student.tuwien.ac.at
Thu Jan 5 03:53:25 CET 2012
and fail miserably if error messages for an option depends on another one :)
Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
---
cli_classic.c | 50 ++++++++++++++++++++++++++++++--------------------
1 files changed, 30 insertions(+), 20 deletions(-)
diff --git a/cli_classic.c b/cli_classic.c
index 7ce74e5..9693c43 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -178,22 +178,23 @@ int main(int argc, char *argv[])
int ret = 0;
static const char optstring[] = "r:Rw:v:nVEfc:m:l:i:p:Lzh";
- static const struct option long_options[] = {
- {"read", 1, NULL, 'r'},
- {"write", 1, NULL, 'w'},
- {"erase", 0, NULL, 'E'},
- {"verify", 1, NULL, 'v'},
- {"noverify", 0, NULL, 'n'},
- {"chip", 1, NULL, 'c'},
- {"verbose", 0, NULL, 'V'},
- {"force", 0, NULL, 'f'},
- {"layout", 1, NULL, 'l'},
- {"image", 1, NULL, 'i'},
- {"list-supported", 0, NULL, 'L'},
- {"list-supported-wiki", 0, NULL, 'z'},
- {"programmer", 1, NULL, 'p'},
- {"help", 0, NULL, 'h'},
- {"version", 0, NULL, 'R'},
+ static int blub = 0;
+ static struct option long_options[] = {
+ {"read", 1, &blub, 'r'},
+ {"write", 1, &blub, 'w'},
+ {"erase", 0, &blub, 'E'},
+ {"verify", 1, &blub, 'v'},
+ {"noverify", 0, &blub, 'n'},
+ {"chip", 1, &blub, 'c'},
+ {"verbose", 0, &blub, 'V'},
+ {"force", 0, &blub, 'f'},
+ {"layout", 1, &blub, 'l'},
+ {"image", 1, &blub, 'i'},
+ {"list-supported", 0, &blub, 'L'},
+ {"list-supported-wiki", 0, &blub, 'z'},
+ {"programmer", 1, &blub, 'p'},
+ {"help", 0, &blub, 'h'},
+ {"version", 0, &blub, 'R'},
{NULL, 0, NULL, 0},
};
@@ -213,6 +214,13 @@ int main(int argc, char *argv[])
*/
while ((opt = getopt_long(argc, argv, optstring,
long_options, &option_index)) != EOF) {
+ int long_opt = 0;
+ if (opt == 0) {
+ long_opt = 1;
+ opt = long_options[option_index].val;
+ }
+ printf("long_opt = %d\n", long_opt);
+
switch (opt) {
case 'r':
if (++operation_specified > 1) {
@@ -240,8 +248,9 @@ int main(int argc, char *argv[])
cli_classic_abort_usage();
}
if (dont_verify_it) {
- fprintf(stderr, "--verify and --noverify are"
- "mutually exclusive. Aborting.\n");
+ fprintf(stderr, "%s and --noverify are "
+ "mutually exclusive. Aborting.\n",
+ long_opt ? "--verify" : "-v");
cli_classic_abort_usage();
}
filename = strdup(optarg);
@@ -249,8 +258,9 @@ int main(int argc, char *argv[])
break;
case 'n':
if (verify_it) {
- fprintf(stderr, "--verify and --noverify are"
- "mutually exclusive. Aborting.\n");
+ fprintf(stderr, "--verify and %s are "
+ "mutually exclusive. Aborting.\n",
+ long_opt ? "--noverify" : "-n");
cli_classic_abort_usage();
}
dont_verify_it = 1;
--
1.7.1
More information about the flashrom
mailing list