X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Flog.c;h=9039db34964dc5230aaaa2c357b644026b491292;hb=a1948c7bfeb87b54bc7715a44490c01593ee6e23;hp=ee20921f7843845e3479a04cb2400b43f8f1cc5b;hpb=4daf54a851e4fb7ed1a13c3117bba12528fd2c7f;p=elogind.git diff --git a/src/shared/log.c b/src/shared/log.c index ee20921f7..9039db349 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -62,7 +62,7 @@ void log_close_console(void) { if (getpid() == 1) { if (console_fd >= 3) - close_nointr_nofail(console_fd); + safe_close(console_fd); console_fd = -1; } @@ -84,12 +84,7 @@ static int log_open_console(void) { } void log_close_kmsg(void) { - - if (kmsg_fd < 0) - return; - - close_nointr_nofail(kmsg_fd); - kmsg_fd = -1; + kmsg_fd = safe_close(kmsg_fd); } static int log_open_kmsg(void) { @@ -105,12 +100,7 @@ static int log_open_kmsg(void) { } void log_close_syslog(void) { - - if (syslog_fd < 0) - return; - - close_nointr_nofail(syslog_fd); - syslog_fd = -1; + syslog_fd = safe_close(syslog_fd); } static int create_log_socket(int type) { @@ -152,7 +142,7 @@ static int log_open_syslog(void) { } if (connect(syslog_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0) { - close_nointr_nofail(syslog_fd); + safe_close(syslog_fd); /* Some legacy syslog systems still use stream * sockets. They really shouldn't. But what can we @@ -180,12 +170,7 @@ fail: } void log_close_journal(void) { - - if (journal_fd < 0) - return; - - close_nointr_nofail(journal_fd); - journal_fd = -1; + journal_fd = safe_close(journal_fd); } static int log_open_journal(void) { @@ -393,7 +378,7 @@ static int write_to_syslog( if (strftime(header_time, sizeof(header_time), "%h %e %T ", tm) <= 0) return -EINVAL; - snprintf(header_pid, sizeof(header_pid), "[%lu]: ", (unsigned long) getpid()); + snprintf(header_pid, sizeof(header_pid), "["PID_FMT"]: ", getpid()); char_array_0(header_pid); IOVEC_SET_STRING(iovec[0], header_priority); @@ -441,7 +426,7 @@ static int write_to_kmsg( snprintf(header_priority, sizeof(header_priority), "<%i>", level); char_array_0(header_priority); - snprintf(header_pid, sizeof(header_pid), "[%lu]: ", (unsigned long) getpid()); + snprintf(header_pid, sizeof(header_pid), "["PID_FMT"]: ", getpid()); char_array_0(header_pid); IOVEC_SET_STRING(iovec[0], header_priority); @@ -703,22 +688,21 @@ int log_meta_object( return r; } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wformat-nonliteral" static void log_assert(int level, const char *text, const char *file, int line, const char *func, const char *format) { static char buffer[LINE_MAX]; if (_likely_(LOG_PRI(level) > log_max_level)) return; + DISABLE_WARNING_FORMAT_NONLITERAL; snprintf(buffer, sizeof(buffer), format, text, file, line, func); + REENABLE_WARNING; char_array_0(buffer); log_abort_msg = buffer; log_dispatch(level, file, line, func, NULL, NULL, buffer); } -#pragma GCC diagnostic pop noreturn void log_assert_failed(const char *text, const char *file, int line, const char *func) { log_assert(LOG_CRIT, text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting."); @@ -927,10 +911,18 @@ void log_show_color(bool b) { show_color = b; } +bool log_get_show_color(void) { + return show_color; +} + void log_show_location(bool b) { show_location = b; } +bool log_get_show_location(void) { + return show_location; +} + int log_show_color_from_string(const char *e) { int t; @@ -960,7 +952,7 @@ bool log_on_console(void) { return syslog_fd < 0 && kmsg_fd < 0 && journal_fd < 0; } -static const char *const log_target_table[] = { +static const char *const log_target_table[_LOG_TARGET_MAX] = { [LOG_TARGET_CONSOLE] = "console", [LOG_TARGET_KMSG] = "kmsg", [LOG_TARGET_JOURNAL] = "journal",