]> git.proxmox.com Git - mirror_frr.git/commitdiff
lib: Fix command `copy running-config startup-config` to alias `write file`
authorpogojotz <pogojotz@gmx.net>
Mon, 6 Nov 2017 21:43:32 +0000 (22:43 +0100)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 12 Nov 2017 18:09:29 +0000 (13:09 -0500)
Fixes: #1412
Signed-off-by: Juergen Werner <pogojotz@gmx.net>
lib/command.c

index 2e91d84bf3b304fdcf76340eea015b5c46376d0d..9992e81ef5800044adf1e5f43623956d525fed54 100644 (file)
@@ -1556,11 +1556,14 @@ DEFUN (show_commandtree,
        return cmd_list_cmds(vty, argc == 3);
 }
 
-static void vty_write_config(struct vty *vty)
+static int vty_write_config(struct vty *vty)
 {
        size_t i;
        struct cmd_node *node;
 
+       if (host.noconfig)
+               return CMD_SUCCESS;
+
        if (vty->type == VTY_TERM) {
                vty_out(vty, "\nCurrent configuration:\n");
                vty_out(vty, "!\n");
@@ -1580,19 +1583,12 @@ static void vty_write_config(struct vty *vty)
        if (vty->type == VTY_TERM) {
                vty_out(vty, "end\n");
        }
-}
 
-/* Write current configuration into file. */
+       return CMD_SUCCESS;
+}
 
-DEFUN (config_write,
-       config_write_cmd,
-       "write [<file|memory|terminal>]",
-       "Write running configuration to memory, network, or terminal\n"
-       "Write to configuration file\n"
-       "Write configuration currently in memory\n"
-       "Write configuration to terminal\n")
+static int file_write_config(struct vty *vty)
 {
-       int idx_type = 1;
        int fd, dirfd;
        char *config_file, *slash;
        char *config_file_tmp = NULL;
@@ -1601,13 +1597,6 @@ DEFUN (config_write,
        struct vty *file_vty;
        struct stat conf_stat;
 
-       // if command was 'write terminal' or 'show running-config'
-       if (argc == 2 && (strmatch(argv[idx_type]->text, "terminal")
-                         || strmatch(argv[0]->text, "show"))) {
-               vty_write_config(vty);
-               return CMD_SUCCESS;
-       }
-
        if (host.noconfig)
                return CMD_SUCCESS;
 
@@ -1706,14 +1695,34 @@ finished:
        return ret;
 }
 
+/* Write current configuration into file. */
+
+DEFUN (config_write,
+       config_write_cmd,
+       "write [<file|memory|terminal>]",
+       "Write running configuration to memory, network, or terminal\n"
+       "Write to configuration file\n"
+       "Write configuration currently in memory\n"
+       "Write configuration to terminal\n")
+{
+       const int idx_type = 1;
+
+       // if command was 'write terminal' or 'write memory'
+       if (argc == 2 && (!strcmp(argv[idx_type]->text, "terminal"))) {
+               return vty_write_config(vty);
+       }
+
+       return file_write_config(vty);
+}
+
 /* ALIAS_FIXME for 'write <terminal|memory>' */
 DEFUN (show_running_config,
        show_running_config_cmd,
        "show running-config",
        SHOW_STR
-       "running configuration (same as write terminal/memory)\n")
+       "running configuration (same as write terminal)\n")
 {
-       return config_write(self, vty, argc, argv);
+       return vty_write_config(vty);
 }
 
 /* ALIAS_FIXME for 'write file' */
@@ -1722,11 +1731,9 @@ DEFUN (copy_runningconf_startupconf,
        "copy running-config startup-config",
        "Copy configuration\n"
        "Copy running config to... \n"
-       "Copy running config to startup config (same as write file)\n")
+       "Copy running config to startup config (same as write file/memory)\n")
 {
-       if (!host.noconfig)
-               vty_write_config(vty);
-       return CMD_SUCCESS;
+       return file_write_config(vty);
 }
 /** -- **/