use isprint to improve bytes repr

This commit is contained in:
blueloveTH 2024-12-13 14:17:04 +08:00
parent 5e5f2525b4
commit 9abc0c3ac3

View File

@ -99,10 +99,11 @@ void c11_sbuf__write_quoted(c11_sbuf* self, c11_sv sv, char quote) {
case '\t': c11_sbuf__write_cstrn(self, "\\t", 2); break;
case '\b': c11_sbuf__write_cstrn(self, "\\b", 2); break;
default:
if('\x00' <= c && c <= '\x1f') {
if(!isprint(c)) {
unsigned char uc = (unsigned char)c;
c11_sbuf__write_cstrn(self, "\\x", 2);
c11_sbuf__write_char(self, PK_HEX_TABLE[c >> 4]);
c11_sbuf__write_char(self, PK_HEX_TABLE[c & 0xf]);
c11_sbuf__write_char(self, PK_HEX_TABLE[uc >> 4]);
c11_sbuf__write_char(self, PK_HEX_TABLE[uc & 0xf]);
} else {
c11_sbuf__write_char(self, c);
}