summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2011-02-21 19:01:53 +0000
committerBen Hutchings <bhutchings@solarflare.com>2011-02-21 19:01:53 +0000
commit3b46fafd579ffb633983910b5439766b3f25dc83 (patch)
tree4958b467fad8ac3903acc535df81111646169679
parentd3265b44a204f793400638e7a07b932c78a89bbd (diff)
downloadethtool-3b46fafd579ffb633983910b5439766b3f25dc83.tar.gz
ethtool: Allow for long options with no short option and without a device name
Change loop conditions to check for a long option string. Generalise check for whether option requires a device name. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
-rw-r--r--ethtool.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/ethtool.c b/ethtool.c
index d28f1b2..8246bda 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -287,12 +287,16 @@ static void show_usage(void)
fprintf(stdout,
"Usage:\n"
"ethtool DEVNAME\tDisplay standard information about device\n");
- for (i = 0; args[i].srt; i++) {
- fprintf(stdout, " ethtool %s|%s %s\t%s\n%s",
- args[i].srt, args[i].lng,
- strstr(args[i].srt, "-h") ? "\t" : "DEVNAME",
- args[i].help,
- args[i].opthelp ? args[i].opthelp : "");
+ for (i = 0; args[i].lng; i++) {
+ fputs(" ethtool ", stdout);
+ if (args[i].srt)
+ fprintf(stdout, "%s|", args[i].srt);
+ fprintf(stdout, "%s %s\t%s\n",
+ args[i].lng,
+ args[i].Mode < 0 ? "\t" : "DEVNAME",
+ args[i].help);
+ if (args[i].opthelp)
+ fputs(args[i].opthelp, stdout);
}
}
@@ -801,8 +805,9 @@ static void parse_cmdline(int argc, char **argp)
for (i = 1; i < argc; i++) {
switch (i) {
case 1:
- for (k = 0; args[k].srt; k++)
- if (!strcmp(argp[i], args[k].srt) ||
+ for (k = 0; args[k].lng; k++)
+ if ((args[k].srt &&
+ !strcmp(argp[i], args[k].srt)) ||
!strcmp(argp[i], args[k].lng)) {
mode = args[k].Mode;
break;
@@ -810,7 +815,7 @@ static void parse_cmdline(int argc, char **argp)
if (mode == MODE_HELP) {
show_usage();
exit(0);
- } else if (!args[k].srt && argp[i][0] == '-') {
+ } else if (!args[k].lng && argp[i][0] == '-') {
exit_bad_args();
} else {
devname = argp[i];