X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flog.c;h=b7173eb550bf080d14d9b7c275fe80142ff9ff32;hp=04ffb62913ffc132edaf3bba6a39acdd0b5c74fe;hb=4a2a8b5a82325494f5daf4c66c23fdb4f906c9e6;hpb=93a46b0bc51cf2beb8523830ef7fd74aa0869673 diff --git a/src/log.c b/src/log.c index 04ffb6291..b7173eb55 100644 --- a/src/log.c +++ b/src/log.c @@ -162,6 +162,12 @@ int log_open(void) { * the fs. If we don't use /dev/kmsg we still keep it open, * because there is no reason to close it. */ + if (log_target == LOG_TARGET_NULL) { + log_close_syslog(); + log_close_console(); + return 0; + } + if (log_target == LOG_TARGET_SYSLOG_OR_KMSG || log_target == LOG_TARGET_SYSLOG) if ((r = log_open_syslog()) >= 0) { @@ -261,7 +267,7 @@ static int write_to_syslog( zero(iovec); IOVEC_SET_STRING(iovec[0], header_priority); IOVEC_SET_STRING(iovec[1], header_time); - IOVEC_SET_STRING(iovec[2], __progname); + IOVEC_SET_STRING(iovec[2], program_invocation_short_name); IOVEC_SET_STRING(iovec[3], header_pid); IOVEC_SET_STRING(iovec[4], buffer); @@ -296,7 +302,7 @@ static int write_to_kmsg( zero(iovec); IOVEC_SET_STRING(iovec[0], header_priority); - IOVEC_SET_STRING(iovec[1], __progname); + IOVEC_SET_STRING(iovec[1], program_invocation_short_name); IOVEC_SET_STRING(iovec[2], header_pid); IOVEC_SET_STRING(iovec[3], buffer); IOVEC_SET_STRING(iovec[4], "\n"); @@ -316,6 +322,9 @@ static int log_dispatch( int r = 0; + if (log_target == LOG_TARGET_NULL) + return 0; + do { char *e; int k; @@ -357,6 +366,27 @@ static int log_dispatch( return r; } +int log_dump_internal( + int level, + const char*file, + int line, + const char *func, + char *buffer) { + + int saved_errno, r; + + /* This modifies the buffer... */ + + if (_likely_(LOG_PRI(level) > log_max_level)) + return 0; + + saved_errno = errno; + r = log_dispatch(level, file, line, func, buffer); + errno = saved_errno; + + return r; +} + int log_meta( int level, const char*file, @@ -454,6 +484,7 @@ static const char *const log_target_table[] = { [LOG_TARGET_SYSLOG] = "syslog", [LOG_TARGET_KMSG] = "kmsg", [LOG_TARGET_SYSLOG_OR_KMSG] = "syslog-or-kmsg", + [LOG_TARGET_NULL] = "null" }; DEFINE_STRING_TABLE_LOOKUP(log_target, LogTarget);