mirror of https://gerrit.osmocom.org/libosmocore
vty api: add vty_out_va()
Provide a va_list type vty_out() variant, to be able to pass on variable arguments from other function signatures to vty_out(). This will be used by Ibd6b1ed7f1bd6e1f2e0fde53352055a4468f23e5 for osmo_tdef. Change-Id: Ie6e6f11a6b794f3cb686350c1ed678e4d5bbbb75
This commit is contained in:
parent
8d04f95d96
commit
c1aa178c8b
|
@ -193,6 +193,7 @@ void vty_reset (void);
|
||||||
struct vty *vty_new (void);
|
struct vty *vty_new (void);
|
||||||
struct vty *vty_create (int vty_sock, void *priv);
|
struct vty *vty_create (int vty_sock, void *priv);
|
||||||
int vty_out (struct vty *, const char *, ...) VTY_PRINTF_ATTRIBUTE(2, 3);
|
int vty_out (struct vty *, const char *, ...) VTY_PRINTF_ATTRIBUTE(2, 3);
|
||||||
|
int vty_out_va(struct vty *vty, const char *format, va_list ap);
|
||||||
int vty_out_newline(struct vty *);
|
int vty_out_newline(struct vty *);
|
||||||
int vty_read(struct vty *vty);
|
int vty_read(struct vty *vty);
|
||||||
//void vty_time_print (struct vty *, int);
|
//void vty_time_print (struct vty *, int);
|
||||||
|
|
|
@ -249,26 +249,19 @@ int vty_shell(struct vty *vty)
|
||||||
return vty->type == VTY_SHELL ? 1 : 0;
|
return vty->type == VTY_SHELL ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int vty_out_va(struct vty *vty, const char *format, va_list ap)
|
||||||
/*! VTY standard output function
|
|
||||||
* \param[in] vty VTY to which we should print
|
|
||||||
* \param[in] format variable-length format string
|
|
||||||
*/
|
|
||||||
int 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;
|
||||||
|
|
||||||
if (vty_shell(vty)) {
|
if (vty_shell(vty)) {
|
||||||
va_start(args, format);
|
vprintf(format, ap);
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
} else {
|
} else {
|
||||||
|
va_list args;
|
||||||
/* Try to write to initial buffer. */
|
/* Try to write to initial buffer. */
|
||||||
va_start(args, format);
|
va_copy(args, ap);
|
||||||
len = vsnprintf(buf, sizeof buf, format, args);
|
len = vsnprintf(buf, sizeof buf, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
|
@ -284,7 +277,7 @@ int vty_out(struct vty *vty, const char *format, ...)
|
||||||
if (!p)
|
if (!p)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
va_start(args, format);
|
va_copy(args, ap);
|
||||||
len = vsnprintf(p, size, format, args);
|
len = vsnprintf(p, size, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
|
@ -310,6 +303,20 @@ int vty_out(struct vty *vty, const char *format, ...)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! VTY standard output function
|
||||||
|
* \param[in] vty VTY to which we should print
|
||||||
|
* \param[in] format variable-length format string
|
||||||
|
*/
|
||||||
|
int vty_out(struct vty *vty, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
int rc;
|
||||||
|
va_start(args, format);
|
||||||
|
rc = vty_out_va(vty, format, args);
|
||||||
|
va_end(args);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
/*! print a newline on the given VTY */
|
/*! print a newline on the given VTY */
|
||||||
int vty_out_newline(struct vty *vty)
|
int vty_out_newline(struct vty *vty)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue