lib: save errno in vty_out()

... so `%m` works correctly, without us trampling over `errno` before we
get to formatting it.

Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
David Lamparter 2021-03-26 14:27:51 +01:00
parent 7b183fd8ea
commit 2c12c904ea

View File

@ -159,6 +159,8 @@ int vty_out(struct vty *vty, const char *format, ...)
char buf[1024];
char *p = NULL;
char *filtered;
/* format string may contain %m, keep errno intact for printfrr */
int saved_errno = errno;
if (vty->frame_pos) {
vty->frame_pos = 0;
@ -166,6 +168,7 @@ int vty_out(struct vty *vty, const char *format, ...)
}
va_start(args, format);
errno = saved_errno;
p = vasnprintfrr(MTYPE_VTY_OUT_BUF, buf, sizeof(buf), format, args);
va_end(args);