From: Sergiy Vyshnevetskiy <serg@vostok.net>

Subject: [zebra 18941] Re: [PATCH] misc patch

Program shouldn't terminate on pager execution failure. We can also use
"PAGER" environment variable - it's very common.
This commit is contained in:
paul 2003-05-01 14:29:48 +00:00
parent 6cbbc3cc9f
commit a805cc2d70

View File

@ -349,6 +349,8 @@ void
vtysh_pager_init () vtysh_pager_init ()
{ {
vtysh_pager_name = getenv ("VTYSH_PAGER"); vtysh_pager_name = getenv ("VTYSH_PAGER");
if (! vtysh_pager_name)
vtysh_pager_name = getenv ("PAGER");
if (! vtysh_pager_name) if (! vtysh_pager_name)
vtysh_pager_name = "more"; vtysh_pager_name = "more";
} }
@ -361,6 +363,7 @@ vtysh_execute_func (char *line, int pager)
vector vline; vector vline;
struct cmd_element *cmd; struct cmd_element *cmd;
FILE *fp = NULL; FILE *fp = NULL;
int closepager=0;
/* Split readline string up into the vector */ /* Split readline string up into the vector */
vline = cmd_make_strvec (line); vline = cmd_make_strvec (line);
@ -394,9 +397,11 @@ vtysh_execute_func (char *line, int pager)
fp = popen (vtysh_pager_name, "w"); fp = popen (vtysh_pager_name, "w");
if (fp == NULL) if (fp == NULL)
{ {
perror ("popen"); perror ("popen failed for pager");
exit (1); fp = stdout;
} }
else
closepager=1;
} }
else else
fp = stdout; fp = stdout;
@ -425,12 +430,11 @@ vtysh_execute_func (char *line, int pager)
if (vline == NULL) if (vline == NULL)
{ {
if (pager && vtysh_pager_name && fp) if (pager && vtysh_pager_name && fp && closepager)
{ {
if (pclose (fp) == -1) if (pclose (fp) == -1)
{ {
perror ("pclose"); perror ("pclose failed for pager");
exit (1);
} }
fp = NULL; fp = NULL;
} }
@ -478,12 +482,11 @@ vtysh_execute_func (char *line, int pager)
(*cmd->func) (cmd, vty, 0, NULL); (*cmd->func) (cmd, vty, 0, NULL);
} }
} }
if (pager && vtysh_pager_name && fp) if (pager && vtysh_pager_name && fp && closepager)
{ {
if (pclose (fp) == -1) if (pclose (fp) == -1)
{ {
perror ("pclose"); perror ("pclose failed for pager");
exit (1);
} }
fp = NULL; fp = NULL;
} }