basic/journal-importer: do not write non-unicode char to log

The type of cescape_char() is changed to int to make it easier to use
in "%.*s". We know the value is between 1 and 4, so size_t is overkill.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2018-05-31 13:04:18 +02:00
parent e743ce7053
commit b778252b4a
3 changed files with 9 additions and 4 deletions
+2 -2
View File
@@ -15,8 +15,8 @@
#include "macro.h"
#include "utf8.h"
size_t cescape_char(char c, char *buf) {
char * buf_old = buf;
int cescape_char(char c, char *buf) {
char *buf_old = buf;
switch (c) {
+1 -1
View File
@@ -45,7 +45,7 @@ typedef enum EscapeStyle {
char *cescape(const char *s);
char *cescape_length(const char *s, size_t n);
size_t cescape_char(char c, char *buf);
int cescape_char(char c, char *buf);
int cunescape(const char *s, UnescapeFlags flags, char **ret);
int cunescape_length(const char *s, size_t length, UnescapeFlags flags, char **ret);
+6 -1
View File
@@ -9,6 +9,7 @@
#include <unistd.h>
#include "alloc-util.h"
#include "escape.h"
#include "fd-util.h"
#include "io-util.h"
#include "journal-file.h"
@@ -233,7 +234,11 @@ static int get_data_newline(JournalImporter *imp) {
assert(data);
if (*data != '\n') {
log_error("expected newline, got '%c'", *data);
char buf[4];
int l;
l = cescape_char(*data, buf);
log_error("Expected newline, got '%.*s'", l, buf);
return -EINVAL;
}