summaryrefslogtreecommitdiffstats
path: root/include/carefulputc.h
diff options
context:
space:
mode:
authorSami Kerola2014-08-10 19:23:14 +0200
committerSami Kerola2014-09-19 20:31:01 +0200
commitc6d2d74ea02d1e6d9609ecd1a56a32d91da57378 (patch)
treee3c51b1a3bebfa67b495985aab2282c2cea0ff42 /include/carefulputc.h
parentlibuuid: add extern qualifiers to uuid/uuid.h system header (diff)
downloadkernel-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.h16
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;