From 066242b5c6f4740b4c5beb80071428cee3ae7e70 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 7 Oct 2016 02:33:37 +0000 Subject: [PATCH] lib: Fix `show running-config` and `write terminal` Signed-off-by: Quentin Young --- vtysh/vtysh.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 8ab3243dbd..70b0d7832e 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -2160,34 +2160,41 @@ DEFUN (vtysh_write_terminal, vtysh_write_terminal_cmd, "write terminal []", "Write running configuration to memory, network, or terminal\n" - "Write to terminal\n") + "Write to terminal\n" + "For the zebra daemon\n" + "For the rip daemon\n" + "For the ripng daemon\n" + "For the ospf daemon\n" + "For the ospfv6 daemon\n" + "For the bgp daemon\n" + "For the isis daemon\n" + "For the pim daemon\n") { - if (argc == 3) - { - for (unsigned int i = 0; i < array_size(vtysh_client); i++) - if (begins_with(vtysh_client[i].name, argv[2]->arg)) - break; - } - + u_int i; + char line[] = "write terminal\n"; FILE *fp = NULL; if (vtysh_pager_name) { fp = popen (vtysh_pager_name, "w"); if (fp == NULL) - { - perror ("popen"); - exit (1); - } + { + perror ("popen"); + exit (1); + } } else fp = stdout; vty_out (vty, "Building configuration...%s", VTY_NEWLINE); vty_out (vty, "%sCurrent configuration:%s", VTY_NEWLINE, - VTY_NEWLINE); + VTY_NEWLINE); vty_out (vty, "!%s", VTY_NEWLINE); + for (i = 0; i < array_size(vtysh_client); i++) + if ((argc < 3 ) || (strmatch (vtysh_client[i].name, argv[2]->text))) + vtysh_client_config (&vtysh_client[i], line); + /* Integrate vtysh specific configuration. */ vtysh_config_write (); @@ -2197,15 +2204,14 @@ DEFUN (vtysh_write_terminal, { fflush (fp); if (pclose (fp) == -1) - { - perror ("pclose"); - exit (1); - } + { + perror ("pclose"); + exit (1); + } fp = NULL; } vty_out (vty, "end%s", VTY_NEWLINE); - return CMD_SUCCESS; } -- 2.39.5