diff options
author | Sami Kerola | 2014-08-10 19:23:14 +0200 |
---|---|---|
committer | Sami Kerola | 2014-09-19 20:31:01 +0200 |
commit | c6d2d74ea02d1e6d9609ecd1a56a32d91da57378 (patch) | |
tree | e3c51b1a3bebfa67b495985aab2282c2cea0ff42 /include/carefulputc.h | |
parent | libuuid: add extern qualifiers to uuid/uuid.h system header (diff) | |
download | kernel-qcow2-util-linux-c6d2d74ea02d1e6d9609ecd1a56a32d91da57378.tar.gz kernel-qcow2-util-linux-c6d2d74ea02d1e6d9609ecd1a56a32d91da57378.tar.xz kernel-qcow2-util-linux-c6d2d74ea02d1e6d9609ecd1a56a32d91da57378.zip |
include: simplify fputc_careful() in carefulputc.h
New version of comparisions does the same thing as the old without being
quite as difficult to understand.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
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; |