From 3b46fafd579ffb633983910b5439766b3f25dc83 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 Feb 2011 19:01:53 +0000 Subject: 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 --- ethtool.c | 23 ++++++++++++++--------- 1 file 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]; -- cgit v1.2.1