summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flashrom.85
-rw-r--r--flashrom.c26
2 files changed, 27 insertions, 4 deletions
diff --git a/flashrom.8 b/flashrom.8
index 406e5b0..b652f66 100644
--- a/flashrom.8
+++ b/flashrom.8
@@ -2,7 +2,7 @@
.SH NAME
flashrom \- detect, read, write, verify and erase flash chips
.SH SYNOPSIS
-.B flashrom \fR[\fB\-EVfLhR\fR] [\fB\-r\fR file] [\fB\-w\fR file] [\fB\-v\fR file]
+.B flashrom \fR[\fB\-VfLhR\fR] [\fB\-E\fR|\fB\-r\fR file|\fB\-w\fR file|\fB\-v\fR file]
[\fB\-c\fR chipname] [\fB\-s\fR addr] [\fB\-e\fR addr] [\fB\-m\fR [vendor:]part]
[\fB\-l\fR file] [\fB\-i\fR image] [\fB\-p\fR programmer] [file]
.SH DESCRIPTION
@@ -25,7 +25,8 @@ Please note that the command line interface for flashrom will change before
flashrom 1.0. Do not use flashrom in scripts or other automated tools without
checking that your flashrom version won't interpret options in a different way.
.PP
-If no file is specified, then all that happens
+You can specify one of -E, -r, -w, -v or no operation.
+If no operation is specified, then all that happens
is that flash info is dumped and the flash chip is set to writable.
.TP
.B "\-r, \-\-read <file>"
diff --git a/flashrom.c b/flashrom.c
index 2bb904e..7c3c7f3 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -471,7 +471,7 @@ void print_supported_chips(void)
void usage(const char *name)
{
- printf("usage: %s [-EVfLhR] [-r file] [-w file] [-v file] [-c chipname] [-s addr]\n"
+ printf("usage: %s [-VfLhR] [-E|-r file|-w file|-v file] [-c chipname] [-s addr]\n"
" [-e addr] [-m [vendor:]part] [-l file] [-i image] [-p programmer] [file]\n\n",
name);
@@ -498,7 +498,8 @@ void usage(const char *name)
" (internal, dummy, nic3com, satasii, it87spi)\n"
" -h | --help: print this help text\n"
" -R | --version: print the version (release)\n"
- "\nIf no file is specified, then all that happens"
+ "\nYou can specify one of -E, -r, -w, -v or no operation.\n"
+ "If no operation is specified, then all that happens"
" is that flash info is dumped.\n\n");
exit(1);
}
@@ -520,6 +521,7 @@ int main(int argc, char *argv[])
int force = 0;
int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0;
int list_supported = 0;
+ int operation_specified = 0;
int ret = 0, i;
static struct option long_options[] = {
@@ -562,12 +564,27 @@ int main(int argc, char *argv[])
long_options, &option_index)) != EOF) {
switch (opt) {
case 'r':
+ if (++operation_specified > 1) {
+ fprintf(stderr, "More than one operation "
+ "specified. Aborting.\n");
+ exit(1);
+ }
read_it = 1;
break;
case 'w':
+ if (++operation_specified > 1) {
+ fprintf(stderr, "More than one operation "
+ "specified. Aborting.\n");
+ exit(1);
+ }
write_it = 1;
break;
case 'v':
+ if (++operation_specified > 1) {
+ fprintf(stderr, "More than one operation "
+ "specified. Aborting.\n");
+ exit(1);
+ }
verify_it = 1;
break;
case 'c':
@@ -577,6 +594,11 @@ int main(int argc, char *argv[])
verbose = 1;
break;
case 'E':
+ if (++operation_specified > 1) {
+ fprintf(stderr, "More than one operation "
+ "specified. Aborting.\n");
+ exit(1);
+ }
erase_it = 1;
break;
case 's':
OpenPOWER on IntegriCloud