lib: Fix command copy running-config startup-config to alias write file

Fixes: #1412
Signed-off-by: Juergen Werner <pogojotz@gmx.net>
This commit is contained in:
pogojotz 2017-11-06 22:43:32 +01:00 committed by Donald Sharp
parent 1757d71693
commit f806f29c49

View File

@ -1556,11 +1556,14 @@ DEFUN (show_commandtree,
return cmd_list_cmds(vty, argc == 3); 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; size_t i;
struct cmd_node *node; struct cmd_node *node;
if (host.noconfig)
return CMD_SUCCESS;
if (vty->type == VTY_TERM) { if (vty->type == VTY_TERM) {
vty_out(vty, "\nCurrent configuration:\n"); vty_out(vty, "\nCurrent configuration:\n");
vty_out(vty, "!\n"); vty_out(vty, "!\n");
@ -1580,19 +1583,12 @@ static void vty_write_config(struct vty *vty)
if (vty->type == VTY_TERM) { if (vty->type == VTY_TERM) {
vty_out(vty, "end\n"); vty_out(vty, "end\n");
} }
return CMD_SUCCESS;
} }
/* Write current configuration into file. */ static int file_write_config(struct vty *vty)
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")
{ {
int idx_type = 1;
int fd, dirfd; int fd, dirfd;
char *config_file, *slash; char *config_file, *slash;
char *config_file_tmp = NULL; char *config_file_tmp = NULL;
@ -1601,13 +1597,6 @@ DEFUN (config_write,
struct vty *file_vty; struct vty *file_vty;
struct stat conf_stat; 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) if (host.noconfig)
return CMD_SUCCESS; return CMD_SUCCESS;
@ -1706,14 +1695,34 @@ finished:
return ret; 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>' */ /* ALIAS_FIXME for 'write <terminal|memory>' */
DEFUN (show_running_config, DEFUN (show_running_config,
show_running_config_cmd, show_running_config_cmd,
"show running-config", "show running-config",
SHOW_STR 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' */ /* ALIAS_FIXME for 'write file' */
@ -1722,11 +1731,9 @@ DEFUN (copy_runningconf_startupconf,
"copy running-config startup-config", "copy running-config startup-config",
"Copy configuration\n" "Copy configuration\n"
"Copy running config to... \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) return file_write_config(vty);
vty_write_config(vty);
return CMD_SUCCESS;
} }
/** -- **/ /** -- **/