mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 09:56:51 +03:00
log: rework log_syntax_invalid_utf8() a bit
The macro used utf8.h functions without including that. Let's clean this up, by moving that code inside of log.c. Let's also make the call return -EINVAL in all cases. This is in line with log_oom() which also returns a well-defined error code even though it doesn#t take one.
This commit is contained in:
parent
a6ab236595
commit
d04ce5a9c4
@ -54,6 +54,7 @@
|
|||||||
#include "syslog-util.h"
|
#include "syslog-util.h"
|
||||||
#include "terminal-util.h"
|
#include "terminal-util.h"
|
||||||
#include "time-util.h"
|
#include "time-util.h"
|
||||||
|
#include "utf8.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#define SNDBUF_SIZE (8*1024*1024)
|
#define SNDBUF_SIZE (8*1024*1024)
|
||||||
@ -1290,6 +1291,27 @@ int log_syntax_internal(
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int log_syntax_invalid_utf8_internal(
|
||||||
|
const char *unit,
|
||||||
|
int level,
|
||||||
|
const char *config_file,
|
||||||
|
unsigned config_line,
|
||||||
|
const char *file,
|
||||||
|
int line,
|
||||||
|
const char *func,
|
||||||
|
const char *rvalue) {
|
||||||
|
|
||||||
|
_cleanup_free_ char *p = NULL;
|
||||||
|
|
||||||
|
if (rvalue)
|
||||||
|
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));
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
void log_set_upgrade_syslog_to_journal(bool b) {
|
void log_set_upgrade_syslog_to_journal(bool b) {
|
||||||
upgrade_syslog_to_journal = b;
|
upgrade_syslog_to_journal = b;
|
||||||
}
|
}
|
||||||
|
@ -317,6 +317,16 @@ int log_syntax_internal(
|
|||||||
const char *func,
|
const char *func,
|
||||||
const char *format, ...) _printf_(9, 10);
|
const char *format, ...) _printf_(9, 10);
|
||||||
|
|
||||||
|
int log_syntax_invalid_utf8_internal(
|
||||||
|
const char *unit,
|
||||||
|
int level,
|
||||||
|
const char *config_file,
|
||||||
|
unsigned config_line,
|
||||||
|
const char *file,
|
||||||
|
int line,
|
||||||
|
const char *func,
|
||||||
|
const char *rvalue);
|
||||||
|
|
||||||
#define log_syntax(unit, level, config_file, config_line, error, ...) \
|
#define log_syntax(unit, level, config_file, config_line, error, ...) \
|
||||||
({ \
|
({ \
|
||||||
int _level = (level), _e = (error); \
|
int _level = (level), _e = (error); \
|
||||||
@ -328,12 +338,9 @@ int log_syntax_internal(
|
|||||||
#define log_syntax_invalid_utf8(unit, level, config_file, config_line, rvalue) \
|
#define log_syntax_invalid_utf8(unit, level, config_file, config_line, rvalue) \
|
||||||
({ \
|
({ \
|
||||||
int _level = (level); \
|
int _level = (level); \
|
||||||
if (log_get_max_level() >= LOG_PRI(_level)) { \
|
(log_get_max_level() >= LOG_PRI(_level)) \
|
||||||
_cleanup_free_ char *_p = NULL; \
|
? log_syntax_invalid_utf8_internal(unit, _level, config_file, config_line, __FILE__, __LINE__, __func__, rvalue) \
|
||||||
_p = utf8_escape_invalid(rvalue); \
|
: -EINVAL; \
|
||||||
log_syntax_internal(unit, _level, config_file, config_line, 0, __FILE__, __LINE__, __func__, \
|
|
||||||
"String is not UTF-8 clean, ignoring assignment: %s", strna(_p)); \
|
|
||||||
} \
|
|
||||||
})
|
})
|
||||||
|
|
||||||
#define DEBUG_LOGGING _unlikely_(log_get_max_level() >= LOG_DEBUG)
|
#define DEBUG_LOGGING _unlikely_(log_get_max_level() >= LOG_DEBUG)
|
||||||
|
Loading…
Reference in New Issue
Block a user