X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Flog.h;h=899474daad8148b5e89b2e6d5d163ea19c1a8b59;hb=c6ac7991dc7a5b7a35d446bf211c947611418b70;hp=5fb223de5a7a3742ef47e55d0a3180f37160fd3c;hpb=3b22396a4b2767a98172f6915929c47738cb0a1e;p=elogind.git
diff --git a/src/basic/log.h b/src/basic/log.h
index 5fb223de5..899474daa 100644
--- a/src/basic/log.h
+++ b/src/basic/log.h
@@ -1,5 +1,3 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
#pragma once
/***
@@ -21,22 +19,23 @@
along with systemd; If not, see .
***/
-#include
+#include
#include
+#include
#include
-#include
#include
-#include
+#include
+#include
#include "sd-id128.h"
+
#include "macro.h"
typedef enum LogTarget{
LOG_TARGET_CONSOLE,
LOG_TARGET_CONSOLE_PREFIXED,
LOG_TARGET_KMSG,
-/// elogind does not support logging to systemd-journald
-#if 0
+#if 0 /// elogind does not support logging to systemd-journald
LOG_TARGET_JOURNAL,
LOG_TARGET_JOURNAL_OR_KMSG,
#endif // 0
@@ -69,10 +68,13 @@ int log_get_max_level(void) _pure_;
int log_open(void);
void log_close(void);
-// UNNEEDED void log_forget_fds(void);
-
+#if 0 /// UNNEEDED by elogind
+void log_forget_fds(void);
+#endif // 0
void log_close_syslog(void);
-// UNNEEDED void log_close_journal(void);
+#if 0 /// UNNEEDED by elogind
+void log_close_journal(void);
+#endif // 0
void log_close_kmsg(void);
void log_close_console(void);
@@ -129,6 +131,15 @@ int log_oom_internal(
int line,
const char *func);
+int log_format_iovec(
+ struct iovec *iovec,
+ unsigned iovec_len,
+ unsigned *n,
+ bool newline_separator,
+ int error,
+ const char *format,
+ va_list ap);
+
/* This modifies the buffer passed! */
int log_dump_internal(
int level,
@@ -214,9 +225,11 @@ LogTarget log_target_from_string(const char *s) _pure_;
#define LOG_MESSAGE(fmt, ...) "MESSAGE=" fmt, ##__VA_ARGS__
#define LOG_MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x)
-// UNNEEDED void log_received_signal(int level, const struct signalfd_siginfo *si);
+#if 0 /// UNNEEDED by elogind
+void log_received_signal(int level, const struct signalfd_siginfo *si);
-// UNNEEDED void log_set_upgrade_syslog_to_journal(bool b);
+void log_set_upgrade_syslog_to_journal(bool b);
+#endif // 0
int log_syntax_internal(
const char *unit,
@@ -236,3 +249,14 @@ int log_syntax_internal(
? log_syntax_internal(unit, _level, config_file, config_line, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \
: -abs(_e); \
})
+
+#define log_syntax_invalid_utf8(unit, level, config_file, config_line, rvalue) \
+ ({ \
+ int _level = (level); \
+ if (log_get_max_level() >= LOG_PRI(_level)) { \
+ _cleanup_free_ char *_p = NULL; \
+ _p = utf8_escape_invalid(rvalue); \
+ log_syntax_internal(unit, _level, config_file, config_line, 0, __FILE__, __LINE__, __func__, \
+ "String is not UTF-8 clean, ignoring assignment: %s", strna(_p)); \
+ } \
+ })