diff options
Diffstat (limited to 'toys/posix/cat.c')
-rw-r--r-- | toys/posix/cat.c | 60 |
1 files changed, 13 insertions, 47 deletions
diff --git a/toys/posix/cat.c b/toys/posix/cat.c index 6daba7a2..1eb15d49 100644 --- a/toys/posix/cat.c +++ b/toys/posix/cat.c @@ -3,48 +3,23 @@ * Copyright 2006 Rob Landley <rob@landley.net> * * See http://opengroup.org/onlinepubs/9699919799/utilities/cat.html - * - * And "Cat -v considered harmful" at - * http://cm.bell-labs.com/cm/cs/doc/84/kp.ps.gz -USE_CAT(NEWTOY(cat, "u"USE_CAT_V("vte"), TOYFLAG_BIN)) -USE_CATV(NEWTOY(catv, USE_CATV("vte"), TOYFLAG_USR|TOYFLAG_BIN)) +USE_CAT(NEWTOY(cat, "uvte", TOYFLAG_BIN)) config CAT bool "cat" default y help - usage: cat [-u] [FILE...] + usage: cat [-etuv] [FILE...] Copy (concatenate) files to stdout. If no files listed, copy from stdin. Filename "-" is a synonym for stdin. - -u Copy one byte at a time (slow) - -config CAT_V - bool "cat -etv" - default n - depends on CAT - help - usage: cat [-evt] - -e Mark each newline with $ -t Show tabs as ^I + -u Copy one byte at a time (slow) -v Display nonprinting characters as escape sequences with M-x for high ascii characters (>127), and ^x for other nonprinting chars - -config CATV - bool "catv" - default y - help - usage: catv [-evt] [FILE...] - - Display nonprinting characters as escape sequences. Use M-x for - high ascii characters (>127), and ^x for other nonprinting chars. - - -e Mark each newline with $ - -t Show tabs as ^I - -v Don't use ^x or M-x escapes */ #define FOR_cat @@ -53,21 +28,18 @@ config CATV static void do_cat(int fd, char *name) { - int i, len, size=(toys.optflags & FLAG_u) ? 1 : sizeof(toybuf); + int i, len, size = FLAG(u) ? 1 : sizeof(toybuf); for(;;) { len = read(fd, toybuf, size); - if (len < 0) { - toys.exitval = EXIT_FAILURE; - perror_msg_raw(name); - } - if (len < 1) break; - if ((CFG_CAT_V || CFG_CATV) && (toys.optflags&~FLAG_u)) { - for (i=0; i<len; i++) { - char c=toybuf[i]; + if (len<0) perror_msg_raw(name); + if (len<1) break; + if (toys.optflags&~FLAG_u) { + for (i = 0; i<len; i++) { + char c = toybuf[i]; - if (c > 126 && (toys.optflags & FLAG_v)) { - if (c > 127) { + if (c>126 && FLAG(v)) { + if (c>127) { printf("M-"); c -= 128; } @@ -76,9 +48,9 @@ static void do_cat(int fd, char *name) continue; } } - if (c < 32) { + if (c<32) { if (c == 10) { - if (toys.optflags & FLAG_e) xputc('$'); + if (FLAG(e)) xputc('$'); } else if (toys.optflags & (c==9 ? FLAG_t : FLAG_v)) { printf("^%c", c+'@'); continue; @@ -94,9 +66,3 @@ void cat_main(void) { loopfiles(toys.optargs, do_cat); } - -void catv_main(void) -{ - toys.optflags ^= FLAG_v; - loopfiles(toys.optargs, do_cat); -} |