summaryrefslogtreecommitdiff
path: root/vtysh
diff options
context:
space:
mode:
Diffstat (limited to 'vtysh')
-rw-r--r--vtysh/ChangeLog4
-rw-r--r--vtysh/vtysh.c59
2 files changed, 61 insertions, 2 deletions
diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
index 1903c7c2..aab737b3 100644
--- a/vtysh/ChangeLog
+++ b/vtysh/ChangeLog
@@ -1,5 +1,9 @@
2004-08-27 Hasso Tepper <hasso at quagga.net>
+ * vtysh.c: Make "terminal length <0-512>" command work in vtysh.
+
+2004-08-27 Hasso Tepper <hasso at quagga.net>
+
* vtysh.c: Enable using ssh from ENABLE_NODE.
* vtysh_config.c: Make enable password uniq lines appear only once in
configuration.
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 503edb30..28ad39b1 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -212,9 +212,9 @@ vtysh_exit_ripd_only ()
void
vtysh_pager_init ()
{
- vtysh_pager_name = getenv ("VTYSH_PAGER");
+ vtysh_pager_name = strdup (getenv ("VTYSH_PAGER"));
if (! vtysh_pager_name)
- vtysh_pager_name = "more";
+ vtysh_pager_name = strdup ("more");
}
/* Command execution over the vty interface. */
@@ -1503,6 +1503,56 @@ ALIAS (vtysh_write_terminal,
SHOW_STR
"Current operating configuration\n")
+DEFUN (vtysh_terminal_length,
+ vtysh_terminal_length_cmd,
+ "terminal length <0-512>",
+ "Set terminal line parameters\n"
+ "Set number of lines on a screen\n"
+ "Number of lines on screen (0 for no pausing)\n")
+{
+ int lines;
+ char *endptr = NULL;
+ char default_pager[10];
+
+ lines = strtol (argv[0], &endptr, 10);
+ if (lines < 0 || lines > 512 || *endptr != '\0')
+ {
+ vty_out (vty, "length is malformed%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ if (vtysh_pager_name)
+ {
+ free (vtysh_pager_name);
+ vtysh_pager_name = NULL;
+ }
+
+ if (lines != 0)
+ {
+ snprintf(default_pager, 10, "more -%i", lines);
+ vtysh_pager_name = strdup (default_pager);
+ }
+
+ return CMD_SUCCESS;
+}
+
+DEFUN (vtysh_terminal_no_length,
+ vtysh_terminal_no_length_cmd,
+ "terminal no length",
+ "Set terminal line parameters\n"
+ NO_STR
+ "Set number of lines on a screen\n")
+{
+ if (vtysh_pager_name)
+ {
+ free (vtysh_pager_name);
+ vtysh_pager_name = NULL;
+ }
+
+ vtysh_pager_init();
+ return CMD_SUCCESS;
+}
+
/* Execute command in child process. */
int
execute_command (char *command, int argc, char *arg1, char *arg2)
@@ -1978,6 +2028,11 @@ vtysh_init_vty ()
install_element (KEYCHAIN_NODE, &vtysh_write_memory_cmd);
install_element (KEYCHAIN_KEY_NODE, &vtysh_write_memory_cmd);
+ install_element (VIEW_NODE, &vtysh_terminal_length_cmd);
+ install_element (ENABLE_NODE, &vtysh_terminal_length_cmd);
+ install_element (VIEW_NODE, &vtysh_terminal_no_length_cmd);
+ install_element (ENABLE_NODE, &vtysh_terminal_no_length_cmd);
+
install_element (VIEW_NODE, &vtysh_ping_cmd);
install_element (VIEW_NODE, &vtysh_ping_ip_cmd);
install_element (VIEW_NODE, &vtysh_traceroute_cmd);