summaryrefslogtreecommitdiffstats
path: root/include/carefulputc.h
diff options
context:
space:
mode:
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;