]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: don't have log functions change errno
authorChristian Franke <chris@opensourcerouting.org>
Tue, 10 Nov 2015 17:04:42 +0000 (18:04 +0100)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Tue, 16 Aug 2016 12:55:31 +0000 (08:55 -0400)
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit abfd40d68202882696260617729518a6d2c99302)

lib/log.c

index 453a611dcdc6ff577a5b86a8227b7ade1cd6aaf3..ea50ae18cc63e00ad2e58c28a859317eab15a18b 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -179,6 +179,7 @@ static void
 vzlog (struct zlog *zl, int priority, const char *format, va_list args)
 {
   char proto_str[32];
+  int original_errno = errno;
   struct timestamp_control tsctl;
   tsctl.already_rendered = 0;
 
@@ -197,6 +198,7 @@ vzlog (struct zlog *zl, int priority, const char *format, va_list args)
       fflush (stderr);
 
       /* In this case we return at here. */
+      errno = original_errno;
       return;
     }
   tsctl.precision = zl->timestamp_precision;
@@ -249,6 +251,8 @@ vzlog (struct zlog *zl, int priority, const char *format, va_list args)
   if (priority <= zl->maxlvl[ZLOG_DEST_MONITOR])
     vty_log ((zl->record_priority ? zlog_priority[priority] : NULL),
             proto_str, format, &tsctl, args);
+
+  errno = original_errno;
 }
 
 static char *