From 73561cc75ac31e63bcab4b4ebfaf738e4ca225e6 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Mon, 28 Aug 2006 23:31:54 +0000 Subject: - pull from busybox_scratch: r15829:15850 Various fixes, cleanups and shrinkage: saves 952 Bytes: text data bss dec hex filename 1087742 15853 790632 1894227 1ce753 ../busybox/busybox.old 1086790 15853 790632 1893275 1ce39b busybox via: # scripts/bloat-o-meter ../busybox/busybox_unstripped.old busybox_unstripped function old new delta ipcrm_main 756 822 +66 getval - 61 +61 maybe_set_utc - 40 +40 udhcpc_main 2896 2912 +16 md5_hash_block 428 437 +9 opt 8 16 +8 qgravechar 106 110 +4 make_bitmap 292 295 +3 inflate_unzip 2056 2059 +3 add_partition 1412 1414 +2 __parsespent 156 158 +2 qrealloc 41 42 +1 format - 1 +1 catv_main 313 314 +1 watch_main 293 292 -1 varunset 81 80 -1 part 1 - -1 check_if_skip 837 836 -1 start_stop_daemon_main 840 837 -3 create_lost_and_found 175 172 -3 supress_non_delimited_lines 4 - -4 static.l 4 - -4 static.c 5 1 -4 bsd_sum_file 237 233 -4 eval2 338 332 -6 arithmetic_common 166 158 -8 cmpfunc 22 5 -17 cksum_main 294 275 -19 cmp_main 465 439 -26 dd_main 1535 1508 -27 rmmod_main 376 333 -43 cut_file 727 644 -83 ipcs_main 3809 3721 -88 cut_main 722 614 -108 date_main 1443 1263 -180 remove_ids 222 - -222 ------------------------------------------------------------------------------ (add/remove: 3/4 grow/shrink: 11/18 up/down: 217/-853) Total: -636 bytes --- coreutils/catv.c | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) (limited to 'coreutils/catv.c') diff --git a/coreutils/catv.c b/coreutils/catv.c index e18203915..f8229c20e 100644 --- a/coreutils/catv.c +++ b/coreutils/catv.c @@ -14,49 +14,55 @@ int catv_main(int argc, char **argv) { - int retval = EXIT_SUCCESS, fd, flags; + int retval = EXIT_SUCCESS, fd; + unsigned long flags; flags = bb_getopt_ulflags(argc, argv, "etv"); - flags ^= 4; - - // Loop through files. +#define CATV_OPT_e (1<<0) +#define CATV_OPT_t (1<<1) +#define CATV_OPT_v (1<<2) + flags ^= CATV_OPT_v; argv += optind; do { - // Read from stdin if there's nothing else to do. - + /* Read from stdin if there's nothing else to do. */ fd = 0; - if (*argv && 0>(fd = xopen(*argv, O_RDONLY))) retval = EXIT_FAILURE; - else for(;;) { + if (*argv && 0 > (fd = xopen(*argv, O_RDONLY))) + retval = EXIT_FAILURE; + else for (;;) { int i, res; res = read(fd, bb_common_bufsiz1, sizeof(bb_common_bufsiz1)); - if (res < 0) retval = EXIT_FAILURE; - if (res <1) break; - for (i=0; i 126 && (flags & 4)) { + if (c > 126 && (flags & CATV_OPT_v)) { if (c == 127) { - printf("^?"); + bb_printf("^?"); continue; } else { - printf("M-"); + bb_printf("M-"); c -= 128; } } if (c < 32) { if (c == 10) { - if (flags & 1) putchar('$'); - } else if (flags & (c==9 ? 2 : 4)) { - printf("^%c", c+'@'); + if (flags & CATV_OPT_e) + putchar('$'); + } else if (flags & (c==9 ? CATV_OPT_t : CATV_OPT_v)) { + bb_printf("^%c", c+'@'); continue; } } putchar(c); } } - if (ENABLE_FEATURE_CLEAN_UP && fd) close(fd); + if (ENABLE_FEATURE_CLEAN_UP && fd) + close(fd); } while (*++argv); return retval; -- cgit v1.2.3