Whamcloud - gitweb
LU-8621 utils: cmd help to stdout or short cmd error 62/47162/3
authorAleksei Alyaev <aalyaev@ddn.com>
Thu, 23 Dec 2021 08:48:22 +0000 (11:48 +0300)
committerOleg Drokin <green@whamcloud.com>
Mon, 11 Jul 2022 06:51:09 +0000 (06:51 +0000)
- Changed to print command help to stdout
- Changed to output short error message for an unrecognized command

Test-Parameters: trivial
Signed-off-by: Aleksei Alyaev <aalyaev@ddn.com>
Change-Id: I67616ddb576e3347a2da130b3a731a6bf8730185
Reviewed-on: https://review.whamcloud.com/47162
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Emoly Liu <emoly@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
libcfs/libcfs/util/parser.c

index 95de735..be97809 100644 (file)
@@ -117,14 +117,16 @@ int Parser_execarg(int argc, char **argv, command_t cmds[])
        if (cmd && cmd->pc_func) {
                int rc = cmd->pc_func(argc, argv);
 
        if (cmd && cmd->pc_func) {
                int rc = cmd->pc_func(argc, argv);
 
-               if (rc == CMD_HELP)
-                       fprintf(stderr, "%s\n", cmd->pc_help);
+               if (rc == CMD_HELP) {
+                       fprintf(stdout, "%s\n", cmd->pc_help);
+                       fflush(stdout);
+               }
                return rc;
        }
                return rc;
        }
-       printf("Try interactive use without arguments or use one of:\n");
-       for (cmd = cmds; cmd->pc_name; cmd++)
-               printf("\"%s\"\n", cmd->pc_name);
-       printf("as argument.\n");
+       fprintf(stderr,
+               "%s: '%s' is not a valid command. See '%s --list-commands'.\n",
+               program_invocation_short_name, argv[0],
+               program_invocation_short_name);
 
        return -1;
 }
 
        return -1;
 }
@@ -296,8 +298,10 @@ static int execute_line(char *line)
                i = line2args(line, argv, MAXARGS);
                rc = cmd->pc_func(i, argv);
 
                i = line2args(line, argv, MAXARGS);
                rc = cmd->pc_func(i, argv);
 
-               if (rc == CMD_HELP)
-                       fprintf(stderr, "%s\n", cmd->pc_help);
+               if (rc == CMD_HELP) {
+                       fprintf(stdout, "%s\n", cmd->pc_help);
+                       fflush(stdout);
+               }
 
                break;
        }
 
                break;
        }
@@ -464,8 +468,8 @@ void Parser_qhelp(int argc, char *argv[])
               program_invocation_short_name);
        printf("Without any parameters, interactive mode is invoked\n");
 
               program_invocation_short_name);
        printf("Without any parameters, interactive mode is invoked\n");
 
-       printf("Try '%s help <COMMAND>' or '%s --list-commands' for more information\n",
-              program_invocation_short_name, program_invocation_short_name);
+       printf("Try '%s help <COMMAND>', or '%s --list-commands' for a list of commands.\n",
+               program_invocation_short_name, program_invocation_short_name);
 }
 
 int Parser_help(int argc, char **argv)
 }
 
 int Parser_help(int argc, char **argv)