X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Flog.c;h=0dd04bc51e65e73519cbaee52ddff58e6e415fdf;hb=5c0aa72a4999bdcf03fe93ed5c8213c2b4c681f0;hp=ff2dd453509a2b813c942c6208211dea026887d6;hpb=4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8;p=elogind.git diff --git a/src/shared/log.c b/src/shared/log.c index ff2dd4535..0dd04bc51 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -541,11 +541,11 @@ static int log_dispatch( k = write_to_journal(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) + if (k < 0) { + if (k != -EAGAIN) log_close_journal(); log_open_kmsg(); - } else + } else if (k > 0) r++; } @@ -554,11 +554,11 @@ static int log_dispatch( k = write_to_syslog(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) + if (k < 0) { + if (k != -EAGAIN) log_close_syslog(); log_open_kmsg(); - } else + } else if (k > 0) r++; } @@ -571,11 +571,10 @@ static int log_dispatch( k = write_to_kmsg(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) - log_close_kmsg(); + if (k < 0) { + log_close_kmsg(); log_open_console(); - } else + } else if (k > 0) r++; } @@ -599,18 +598,14 @@ int log_dump_internal( const char *func, char *buffer) { - int saved_errno, r; + PROTECT_ERRNO; /* This modifies the buffer... */ if (_likely_(LOG_PRI(level) > log_max_level)) return 0; - saved_errno = errno; - r = log_dispatch(level, file, line, func, NULL, NULL, buffer); - errno = saved_errno; - - return r; + return log_dispatch(level, file, line, func, NULL, NULL, buffer); } int log_metav( @@ -621,20 +616,16 @@ int log_metav( const char *format, va_list ap) { + PROTECT_ERRNO; char buffer[LINE_MAX]; - int saved_errno, r; if (_likely_(LOG_PRI(level) > log_max_level)) return 0; - saved_errno = errno; vsnprintf(buffer, sizeof(buffer), format, ap); char_array_0(buffer); - r = log_dispatch(level, file, line, func, NULL, NULL, buffer); - errno = saved_errno; - - return r; + return log_dispatch(level, file, line, func, NULL, NULL, buffer); } int log_meta( @@ -664,21 +655,17 @@ int log_metav_object( const char *format, va_list ap) { + PROTECT_ERRNO; char buffer[LINE_MAX]; - int saved_errno, r; if (_likely_(LOG_PRI(level) > log_max_level)) return 0; - saved_errno = errno; vsnprintf(buffer, sizeof(buffer), format, ap); char_array_0(buffer); - r = log_dispatch(level, file, line, func, - object_name, object, buffer); - errno = saved_errno; - - return r; + return log_dispatch(level, file, line, func, + object_name, object, buffer); } int log_meta_object( @@ -736,7 +723,7 @@ int log_struct_internal( const char *func, const char *format, ...) { - int saved_errno; + PROTECT_ERRNO; va_list ap; int r; @@ -749,8 +736,6 @@ int log_struct_internal( if ((level & LOG_FACMASK) == 0) level = log_facility | LOG_PRI(level); - saved_errno = errno; - if ((log_target == LOG_TARGET_AUTO || log_target == LOG_TARGET_JOURNAL_OR_KMSG || log_target == LOG_TARGET_JOURNAL) && @@ -844,7 +829,6 @@ int log_struct_internal( r = -EINVAL; } - errno = saved_errno; return r; }