So user can safely log syscall results without worrying about errno changing.
unsigned pid = getpid();
va_list ap;
int pfxlen = 0;
+ int old_errno = errno;
if (logging_prefix_cb) {
pfxlen = logging_prefix_cb(level, ctx, buf, sizeof(buf));
if (pfxlen < 0)
- return;
+ goto done;
if (pfxlen >= (int)sizeof(buf))
pfxlen = sizeof(buf) - 1;
}
start_syslog();
syslog(lev->syslog_prio, "%s", buf);
}
+done:
+ if (old_errno != errno)
+ errno = old_errno;
}