]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
include: carefulput: print determined char when unprintable char is found
authorSami Kerola <kerolasa@iki.fi>
Sat, 17 Aug 2013 18:15:11 +0000 (19:15 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 23 Aug 2013 08:58:48 +0000 (10:58 +0200)
This is done to allow reuse of the functin in last(1).

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
include/carefulputc.h
term-utils/wall.c
term-utils/write.c

index 2d857ebb06f898a880956dc93ab10dc92fba90a5..d4d0ee4ea5096fed492db98d5dd67e4d9cfb2cfd 100644 (file)
@@ -10,7 +10,7 @@
 #define iso8859x_iscntrl(c) \
        (((c) & 0x7f) < 0x20 || (c) == 0x7f)
 
-static inline int carefulputc(int c, FILE *fp) {
+static inline int carefulputc(int c, FILE *fp, const char fail) {
        int ret;
 
        if (c == '\007' || c == '\t' || c == '\r' || c == '\n' ||
@@ -19,7 +19,7 @@ static inline int carefulputc(int c, FILE *fp) {
        else if ((c & 0x80) || !isprint(c^0x40))
                ret = fprintf(fp, "\\%3o", (unsigned char) c);
        else {
-               ret = putc('^', fp);
+               ret = putc(fail, fp);
                if (ret != EOF)
                        ret = putc(c^0x40, fp);
        }
index f0940732ef487cab096528715332e09527a7c3f2..2d87e47db339a631533984557fd422689399d838 100644 (file)
@@ -286,7 +286,7 @@ static char *makemsg(char *fname, char **mvec, int mvecsz,
                                        cnt = 0;
                                }
                                if (ch != '\n')
-                                       carefulputc(ch, fp);
+                                       carefulputc(ch, fp, '^');
                        }
                }
        }
index 83937d3b324e1c37b3098e6c871560662f2fa311..cb3b0444d7aab1c78e6348cc0f5dcc5300ab63e3 100644 (file)
@@ -372,7 +372,7 @@ void wr_fputs(char *s)
 {
        char c;
 
-#define        PUTC(c) if (carefulputc(c, stdout) == EOF) \
+#define        PUTC(c) if (carefulputc(c, stdout, '^') == EOF) \
     err(EXIT_FAILURE, _("carefulputc failed"));
        while (*s) {
                c = *s++;