summaryrefslogtreecommitdiff
path: root/lib/vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vty.c')
-rw-r--r--lib/vty.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/lib/vty.c b/lib/vty.c
index 59a8825357..12c3c12394 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -91,6 +91,24 @@ char integrate_default[] = SYSCONFDIR INTEGRATE_DEFAULT_CONFIG;
static int do_log_commands = 0;
+void vty_frame(struct vty *vty, const char *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ vsnprintf(vty->frame + vty->frame_pos,
+ sizeof(vty->frame) - vty->frame_pos, format, args);
+ vty->frame_pos = strlen(vty->frame);
+ va_end(args);
+}
+
+void vty_endframe(struct vty *vty, const char *endtext)
+{
+ if (vty->frame_pos == 0 && endtext)
+ vty_out(vty, "%s", endtext);
+ vty->frame_pos = 0;
+}
+
/* VTY standard output function. */
int vty_out(struct vty *vty, const char *format, ...)
{
@@ -100,6 +118,11 @@ int vty_out(struct vty *vty, const char *format, ...)
char buf[1024];
char *p = NULL;
+ if (vty->frame_pos) {
+ vty->frame_pos = 0;
+ vty_out(vty, "%s", vty->frame);
+ }
+
if (vty_shell(vty)) {
va_start(args, format);
vprintf(format, args);
@@ -250,16 +273,8 @@ void vty_hello(struct vty *vty)
/* Put out prompt and wait input from user. */
static void vty_prompt(struct vty *vty)
{
- struct utsname names;
- const char *hostname;
-
if (vty->type == VTY_TERM) {
- hostname = host.name;
- if (!hostname) {
- uname(&names);
- hostname = names.nodename;
- }
- vty_out(vty, cmd_prompt(vty->node), hostname);
+ vty_out(vty, cmd_prompt(vty->node), cmd_hostname_get());
}
}