assert(f);
assert(p);
- if (!(flags & OUTPUT_SHOW_ALL) && l >= JSON_THRESHOLD)
+ if (((flags & OUTPUT_SKIP_UNPRINTABLE) && !utf8_is_printable(p, l)) ||
+ (!(flags & OUTPUT_SHOW_ALL) && l >= JSON_THRESHOLD))
fputs("null", f);
else if (!(flags & OUTPUT_SHOW_ALL) && !utf8_is_printable(p, l)) {
r = sd_json_variant_new_null(&v);
else if (utf8_is_printable(value, size))
r = sd_json_variant_new_stringn(&v, value, size);
+ else if (flags & OUTPUT_SKIP_UNPRINTABLE)
+ r = sd_json_variant_new_null(&v);
else
r = sd_json_variant_new_array_bytes(&v, value, size);
if (r < 0)
OUTPUT_UTC = 1 << 6,
OUTPUT_NO_HOSTNAME = 1 << 7,
OUTPUT_TRUNCATE_NEWLINE = 1 << 8,
+ OUTPUT_SKIP_UNPRINTABLE = 1 << 9,
/* Specific to process tree output */
- OUTPUT_KERNEL_THREADS = 1 << 9,
- OUTPUT_CGROUP_XATTRS = 1 << 10,
- OUTPUT_CGROUP_ID = 1 << 11,
- OUTPUT_HIDE_EXTRA = 1 << 12,
+ OUTPUT_KERNEL_THREADS = 1 << 10,
+ OUTPUT_CGROUP_XATTRS = 1 << 11,
+ OUTPUT_CGROUP_ID = 1 << 12,
+ OUTPUT_HIDE_EXTRA = 1 << 13,
} OutputFlags;
sd_json_format_flags_t output_mode_to_json_format_flags(OutputMode m);