diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2019-02-01 05:38:44 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2019-02-04 16:43:57 +0000 |
commit | c1aa178c8bc71129d13b7b47cfce4449bcec0c2c (patch) | |
tree | 2fde734ccc5d79e9b68f73f6ca1c3d8d068beac3 /src/vty | |
parent | 8d04f95d96f869543a99b18fd3326ea84e9f5366 (diff) |
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
Diffstat (limited to 'src/vty')
-rw-r--r-- | src/vty/vty.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/vty/vty.c b/src/vty/vty.c index 8c89197e..98b332d6 100644 --- a/src/vty/vty.c +++ b/src/vty/vty.c @@ -249,26 +249,19 @@ int vty_shell(struct vty *vty) return vty->type == VTY_SHELL ? 1 : 0; } - -/*! 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, ...) +int vty_out_va(struct vty *vty, const char *format, va_list ap) { - va_list args; int len = 0; int size = 1024; char buf[1024]; char *p = NULL; if (vty_shell(vty)) { - va_start(args, format); - vprintf(format, args); - va_end(args); + vprintf(format, ap); } else { + va_list args; /* Try to write to initial buffer. */ - va_start(args, format); + va_copy(args, ap); len = vsnprintf(buf, sizeof buf, format, args); va_end(args); @@ -284,7 +277,7 @@ int vty_out(struct vty *vty, const char *format, ...) if (!p) return -1; - va_start(args, format); + va_copy(args, ap); len = vsnprintf(p, size, format, args); va_end(args); @@ -310,6 +303,20 @@ int vty_out(struct vty *vty, const char *format, ...) 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 */ int vty_out_newline(struct vty *vty) { |