summaryrefslogtreecommitdiffstats
path: root/cli_classic.c
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2012-01-11 02:10:11 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2012-01-11 02:10:11 +0000
commit4628445ccbac208840614527d332fb8f59c3f687 (patch)
tree8d36cfbbef0787c3884ab3265ff63ebd213a542d /cli_classic.c
parent2d927fbd7bbfd6d03280757d447991a60c690c6e (diff)
downloadast2050-flashrom-4628445ccbac208840614527d332fb8f59c3f687.zip
ast2050-flashrom-4628445ccbac208840614527d332fb8f59c3f687.tar.gz
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 <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Diffstat (limited to 'cli_classic.c')
-rw-r--r--cli_classic.c18
1 files 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++)
OpenPOWER on IntegriCloud