along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <stdbool.h>
+#include <errno.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stdlib.h>
-#include <syslog.h>
#include <sys/signalfd.h>
-#include <errno.h>
+#include <syslog.h>
#include "sd-id128.h"
+
#include "macro.h"
typedef enum LogTarget{
int log_open(void);
void log_close(void);
-// UNNEEDED void log_forget_fds(void);
-
+/// UNNEEDED by elogind
+#if 0
+void log_forget_fds(void);
+#endif // 0
void log_close_syslog(void);
-// UNNEEDED void log_close_journal(void);
+/// UNNEEDED by elogind
+#if 0
+void log_close_journal(void);
+#endif // 0
void log_close_kmsg(void);
void log_close_console(void);
#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);
+/// UNNEEDED by elogind
+#if 0
+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,
? 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)); \
+ } \
+ -EINVAL; \
+ })