diff options
Diffstat (limited to 'include/carefulputc.h')
-rw-r--r-- | include/carefulputc.h | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/include/carefulputc.h b/include/carefulputc.h index f29dc699f..c116d0a98 100644 --- a/include/carefulputc.h +++ b/include/carefulputc.h @@ -10,26 +10,22 @@ #include <string.h> #include <ctype.h> -#define iso8859x_iscntrl(c) \ - (((c) & 0x7f) < 0x20 || (c) == 0x7f) - -static inline int fputc_careful(int c, FILE *fp, const char fail) { +static inline int fputc_careful(int c, FILE *fp, const char fail) +{ int ret; - if (c == '\007' || c == '\t' || c == '\r' || c == '\n' || - (!iso8859x_iscntrl(c) && (isprint(c) || isspace(c)))) + if (isprint(c) || c == '\a' || c == '\t' || c == '\r' || c == '\n') ret = putc(c, fp); - else if ((c & 0x80) || !isprint(c^0x40)) - ret = fprintf(fp, "\\%3o", (unsigned char) c); + else if (!isascii(c)) + ret = fprintf(fp, "\\%3o", (unsigned char)c); else { ret = putc(fail, fp); if (ret != EOF) - ret = putc(c^0x40, fp); + ret = putc(c ^ 0x40, fp); } return (ret < 0) ? EOF : 0; } - static inline void fputs_quoted(const char *data, FILE *out) { const char *p; |