forked from Mirror/frr
lib: add vty_outln()
Like *.println() in some other unspeakable languages Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
9e3b206d7c
commit
4d5f445750
45
lib/vty.c
45
lib/vty.c
|
@ -92,28 +92,23 @@ char integrate_default[] = SYSCONFDIR INTEGRATE_DEFAULT_CONFIG;
|
||||||
|
|
||||||
static int do_log_commands = 0;
|
static int do_log_commands = 0;
|
||||||
|
|
||||||
/* VTY standard output function. */
|
static int
|
||||||
int
|
vty_out_variadic (struct vty *vty, const char *format, va_list args)
|
||||||
vty_out (struct vty *vty, const char *format, ...)
|
|
||||||
{
|
{
|
||||||
va_list args;
|
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int size = 1024;
|
int size = 1024;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
|
va_list cp;
|
||||||
|
|
||||||
if (vty_shell (vty))
|
if (vty_shell (vty))
|
||||||
{
|
vprintf (format, args);
|
||||||
va_start (args, format);
|
|
||||||
vprintf (format, args);
|
|
||||||
va_end (args);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Try to write to initial buffer. */
|
/* Try to write to initial buffer. */
|
||||||
va_start (args, format);
|
va_copy (cp, args);
|
||||||
len = vsnprintf (buf, sizeof(buf), format, args);
|
len = vsnprintf (buf, sizeof(buf), format, args);
|
||||||
va_end (args);
|
va_end (cp);
|
||||||
|
|
||||||
/* Initial buffer is not enough. */
|
/* Initial buffer is not enough. */
|
||||||
if (len < 0 || len >= size)
|
if (len < 0 || len >= size)
|
||||||
|
@ -129,9 +124,7 @@ vty_out (struct vty *vty, const char *format, ...)
|
||||||
if (! p)
|
if (! p)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
va_start (args, format);
|
|
||||||
len = vsnprintf (p, size, format, args);
|
len = vsnprintf (p, size, format, args);
|
||||||
va_end (args);
|
|
||||||
|
|
||||||
if (len > -1 && len < size)
|
if (len > -1 && len < size)
|
||||||
break;
|
break;
|
||||||
|
@ -152,6 +145,32 @@ vty_out (struct vty *vty, const char *format, ...)
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
/* VTY standard output function. */
|
||||||
|
int
|
||||||
|
vty_out (struct vty *vty, const char *format, ...)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
len = vty_out_variadic (vty, format, args);
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
vty_outln (struct vty *vty, const char *format, ...)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
len = vty_out_variadic (vty, format, args);
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
return len + vty_out (vty, "%s", VTY_NEWLINE);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vty_log_out (struct vty *vty, const char *level, const char *proto_str,
|
vty_log_out (struct vty *vty, const char *level, const char *proto_str,
|
||||||
|
|
|
@ -215,6 +215,7 @@ extern void vty_reset (void);
|
||||||
extern struct vty *vty_new (void);
|
extern struct vty *vty_new (void);
|
||||||
extern struct vty *vty_stdio (void (*atclose)(void));
|
extern struct vty *vty_stdio (void (*atclose)(void));
|
||||||
extern int vty_out (struct vty *, const char *, ...) PRINTF_ATTRIBUTE(2, 3);
|
extern int vty_out (struct vty *, const char *, ...) PRINTF_ATTRIBUTE(2, 3);
|
||||||
|
extern int vty_outln (struct vty *, const char *, ...) PRINTF_ATTRIBUTE(2, 3);
|
||||||
extern void vty_read_config (const char *, char *);
|
extern void vty_read_config (const char *, char *);
|
||||||
extern void vty_time_print (struct vty *, int);
|
extern void vty_time_print (struct vty *, int);
|
||||||
extern void vty_serv_sock (const char *, unsigned short, const char *);
|
extern void vty_serv_sock (const char *, unsigned short, const char *);
|
||||||
|
|
Loading…
Reference in a new issue