cmd: exit status zero from -help
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 11 Sep 2012 12:59:13 +0000 (08:59 -0400)
committerDerrick Brashear <shadow@your-file-system.com>
Tue, 11 Sep 2012 18:38:57 +0000 (11:38 -0700)
Return of an exit status of zero when running commands with -help,
instead of returning an error. By general convention, and in
previous versions, tools do not not treat -help as an error.

The AFS::Command perl modules, use -help as an introspection
technique, and fail when commands run with the -help option returns
non-zero.

Change-Id: I6ecd95f6ccd07218a2657dbb4dbf1c13599159f4
Reviewed-on: http://gerrit.openafs.org/8087
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Simon Wilkinson <simonxwilkinson@gmail.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/cmd/cmd.c
src/cmd/cmd_errors.et
tests/cmd/command-t.c

index 1c5786e..6887454 100644 (file)
@@ -1018,7 +1018,7 @@ cmd_Parse(int argc, char **argv, struct cmd_syndesc **outsyntax)
        /* Display full help syntax if we don't have subcommands */
        if (noOpcodes)
            PrintFlagHelp(ts);
-       code = CMD_USAGE;
+       code = CMD_HELP;
        goto out;
     }
 
@@ -1061,8 +1061,12 @@ cmd_Dispatch(int argc, char **argv)
     int code;
 
     code = cmd_Parse(argc, argv, &ts);
-    if (code)
+    if (code) {
+       if (code == CMD_HELP) {
+           code = 0; /* displaying help is not an error */
+       }
        return code;
+    }
 
     /*
      * Before calling the beforeProc and afterProc and all the implications
index dbc75e4..74b1894 100644 (file)
@@ -20,4 +20,5 @@ error_table CMD
   ec CMD_TOOBIG, "Token too large"
   ec CMD_MISSING, "Option not specified on command line"
   ec CMD_BADFORMAT, "Improper format of configuration file"
+  ec CMD_HELP, "Help requested"
 end
index b4718f3..0b0c83f 100644 (file)
@@ -330,7 +330,7 @@ main(int argc, char **argv)
     code = cmd_ParseLine("-help", tv, &tc, 100);
     is_int(0, code, "cmd_ParseLine succeeds");
     code = cmd_Parse(tc, tv, &retopts);
-    is_int(CMD_USAGE, code, "cmd_Parse returns usage error with help output");
+    is_int(CMD_HELP, code, "cmd_Parse returns help indicator with help output");
     ok(retopts == NULL, " ... and options is empty");
 
     /* Check splitting with '=' */