From 4628445ccbac208840614527d332fb8f59c3f687 Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Wed, 11 Jan 2012 02:10:11 +0000 Subject: Postpone layout file reading Layout file reading should happen after option parsing like all other file accesses. Guard against multiple --layout parameters. Followup fix for r1483: Remove -m short option from getopt. Corresponding to flashrom svn r1484. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Tauner --- cli_classic.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cli_classic.c b/cli_classic.c index 7ce74e5..7661612 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -177,7 +177,7 @@ int main(int argc, char *argv[]) enum programmer prog = PROGRAMMER_INVALID; int ret = 0; - static const char optstring[] = "r:Rw:v:nVEfc:m:l:i:p:Lzh"; + static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzh"; static const struct option long_options[] = { {"read", 1, NULL, 'r'}, {"write", 1, NULL, 'w'}, @@ -198,6 +198,7 @@ int main(int argc, char *argv[]) }; char *filename = NULL; + char *layoutfile = NULL; char *tempstr = NULL; char *pparam = NULL; @@ -273,9 +274,12 @@ int main(int argc, char *argv[]) force = 1; break; case 'l': - tempstr = strdup(optarg); - if (read_romlayout(tempstr)) + if (layoutfile) { + fprintf(stderr, "Error: --layout specified " + "more than once. Aborting.\n"); cli_classic_abort_usage(); + } + layoutfile = strdup(optarg); break; case 'i': tempstr = strdup(optarg); @@ -373,9 +377,6 @@ int main(int argc, char *argv[]) cli_classic_abort_usage(); } - if (process_include_args()) - cli_classic_abort_usage(); - /* FIXME: Print the actions flashrom will take. */ if (list_supported) { @@ -390,6 +391,11 @@ int main(int argc, char *argv[]) } #endif + if (layoutfile && read_romlayout(layoutfile)) + cli_classic_abort_usage(); + if (process_include_args()) + cli_classic_abort_usage(); + /* Does a chip with the requested name exist in the flashchips array? */ if (chip_to_probe) { for (flash = flashchips; flash && flash->name; flash++) -- cgit v1.1