diff options
author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2022-03-28 18:36:20 +0200 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2022-03-28 18:36:20 +0200 |
commit | 880256b8bfde746cd54993f3abcb4dc648895af7 (patch) | |
tree | c68d1aca780ef63cabb57e30c16e75e7b910c3e5 /sfeed.c | |
parent | a58fa45f25da4f18d7b8c1a815884f67b965406f (diff) |
compatibility: replace iscntrl with own ISCNTRL macro
It is unspecified if the C locale iscntrl is compatible with ASCII or not.
Noticed when testing on OpenBSD 3.8 which uses extended ASCII and also uses the
C1 range for control-characters. This breaks support with UTF-8.
Reference:
https://en.wikipedia.org/wiki/C0_and_C1_control_codes#C1_control_codes_for_general_use
C1 table.
Force an own definition of an ASCII-compatible control-character range since
sfeed expects input to be UTF-8 (or converted from iconv) and so output to be
UTF-8 aswell.
Diffstat (limited to 'sfeed.c')
-rw-r--r-- | sfeed.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -326,7 +326,7 @@ string_print_encoded(String *s) case '\t': putchar('\\'); putchar('t'); break; default: /* ignore control chars */ - if (!iscntrl((unsigned char)*p)) + if (!ISCNTRL((unsigned char)*p)) putchar(*p); break; } @@ -343,7 +343,7 @@ printtrimmed(const char *s) for (; *p && p != e; p++) { if (isspace((unsigned char)*p)) putchar(' '); /* any whitespace to space */ - else if (!iscntrl((unsigned char)*p)) + else if (!ISCNTRL((unsigned char)*p)) /* ignore other control chars */ putchar(*p); } |