diff options
-rw-r--r-- | vtysh/vtysh_main.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c index 55a430d5..23ff64f7 100644 --- a/vtysh/vtysh_main.c +++ b/vtysh/vtysh_main.c @@ -162,6 +162,7 @@ struct option longopts[] = { "echo", no_argument, NULL, 'E'}, { "dryrun", no_argument, NULL, 'C'}, { "help", no_argument, NULL, 'h'}, + { "noerror", no_argument, NULL, 'n'}, { 0 } }; @@ -221,6 +222,7 @@ main (int argc, char **argv, char **env) } *cmd = NULL; struct cmd_rec *tail = NULL; int echo_command = 0; + int no_error = 0; /* Preserve name of myself. */ progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]); @@ -232,7 +234,7 @@ main (int argc, char **argv, char **env) /* Option handling. */ while (1) { - opt = getopt_long (argc, argv, "be:c:d:EhC", longopts, 0); + opt = getopt_long (argc, argv, "be:c:d:nEhC", longopts, 0); if (opt == EOF) break; @@ -261,6 +263,9 @@ main (int argc, char **argv, char **env) case 'd': daemon_name = optarg; break; + case 'n': + no_error = 1; + break; case 'E': echo_command = 1; break; @@ -300,6 +305,10 @@ main (int argc, char **argv, char **env) if(dryrun) return(0); + /* Ignore error messages */ + if (no_error) + freopen("/dev/null", "w", stdout); + /* Make sure we pass authentication before proceeding. */ vtysh_auth (); @@ -332,9 +341,10 @@ main (int argc, char **argv, char **env) log_it(cmd->line); ret = vtysh_execute_no_pager(cmd->line); - if (ret != CMD_SUCCESS - && ret != CMD_SUCCESS_DAEMON - && ret != CMD_WARNING) + if (!no_error && + ! (ret == CMD_SUCCESS || + ret == CMD_SUCCESS_DAEMON || + ret == CMD_WARNING)) exit(1); cmd->line = eol+1; @@ -347,9 +357,10 @@ main (int argc, char **argv, char **env) log_it(cmd->line); ret = vtysh_execute_no_pager(cmd->line); - if (ret != CMD_SUCCESS - && ret != CMD_SUCCESS_DAEMON - && ret != CMD_WARNING) + if (!no_error && + ! (ret == CMD_SUCCESS || + ret == CMD_SUCCESS_DAEMON || + ret == CMD_WARNING)) exit(1); { |