catv: code shrink
No binary (build failed)
—
(log yok)
| @@ -26,19 +26,22 @@ int catv_main(int argc UNUSED_PARAM, char **argv) | |
| int retval = EXIT_SUCCESS; | |
| int fd; | |
| unsigned opts; | |
| - | int flags = 0; |
| - | |
| - | opts = getopt32(argv, "etv"); |
| #define CATV_OPT_e (1<<0) | |
| #define CATV_OPT_t (1<<1) | |
| #define CATV_OPT_v (1<<2) | |
| + | typedef char BUG_const_mismatch[ |
| + | CATV_OPT_e == VISIBLE_ENDLINE && CATV_OPT_t == VISIBLE_SHOW_TABS |
| + | ? 1 : -1 |
| + | ]; |
| + | |
| + | opts = getopt32(argv, "etv"); |
| argv += optind; | |
| - | if (opts & (CATV_OPT_e | CATV_OPT_t)) |
| - | opts &= ~CATV_OPT_v; |
| + | #if 0 /* These consts match, we can just pass "opts" to visible() */ |
| if (opts & CATV_OPT_e) | |
| flags |= VISIBLE_ENDLINE; | |
| if (opts & CATV_OPT_t) | |
| flags |= VISIBLE_SHOW_TABS; | |
| + | #endif |
| /* Read from stdin if there's nothing else to do. */ | |
| if (!argv[0]) | |
| @@ -64,7 +67,7 @@ int catv_main(int argc UNUSED_PARAM, char **argv) | |
| putchar(c); | |
| } else { | |
| char buf[sizeof("M-^c")]; | |
| - | visible(c, buf, flags); |
| + | visible(c, buf, opts); |
| fputs(buf, stdout); | |
| } | |
| } | |
| @@ -680,7 +680,10 @@ enum { PRINTABLE_META = 0x100 }; | |
| void fputc_printable(int ch, FILE *file) FAST_FUNC; | |
| /* Return a string that is the printable representation of character ch. | |
| * Buffer must hold at least four characters. */ | |
| - | enum { VISIBLE_SHOW_TABS = 1, VISIBLE_ENDLINE = 2 }; |
| + | enum { |
| + | VISIBLE_ENDLINE = 1 << 0, |
| + | VISIBLE_SHOW_TABS = 1 << 1, |
| + | }; |
| void visible(unsigned ch, char *buf, int flags) FAST_FUNC; | |
| /* dmalloc will redefine these to it's own implementation. It is safe | |