[PATCH] cat: allow compiling out -n and -b
Denys Vlasenko
vda.linux at googlemail.com
Fri Jul 14 07:56:44 UTC 2017
Applied, thanks
On Thu, Jul 13, 2017 at 3:35 PM, Kang-Che Sung <explorer09 at gmail.com> wrote:
> When these options were introduced in d88f94a5df3a2edb8ba56fab5c13674b452f87ab
> it provides no config options to compile them out. Now provide one.
>
> Introduce config FEATURE_CATN.
>
> Signed-off-by: Kang-Che Sung <explorer09 at gmail.com>
> ---
> coreutils/cat.c | 57 +++++++++++++++++++++++++++++++++++++--------------------
> 1 file changed, 37 insertions(+), 20 deletions(-)
>
> diff --git a/coreutils/cat.c b/coreutils/cat.c
> index 4d9147f8a..2510ae501 100644
> --- a/coreutils/cat.c
> +++ b/coreutils/cat.c
> @@ -13,6 +13,13 @@
> //config: cat is used to concatenate files and print them to the standard
> //config: output. Enable this option if you wish to enable the 'cat' utility.
> //config:
> +//config:config FEATURE_CATN
> +//config: bool "Enable -n and -b options"
> +//config: default y
> +//config: depends on CAT
> +//config: help
> +//config: -n numbers all output lines while -b numbers nonempty output lines.
> +//config:
> //config:config FEATURE_CATV
> //config: bool "cat -v[etA]"
> //config: default y
> @@ -27,12 +34,19 @@
> /* BB_AUDIT SUSv3 compliant */
> /* http://www.opengroup.org/onlinepubs/007904975/utilities/cat.html */
>
> +//usage:#if ENABLE_FEATURE_CATN || ENABLE_FEATURE_CATV
> +//usage:#define cat_trivial_usage
> +//usage: "[-" IF_FEATURE_CATN("nb") IF_FEATURE_CATV("vteA") "] [FILE]..."
> +//usage:#else
> //usage:#define cat_trivial_usage
> -//usage: "[-nb"IF_FEATURE_CATV("vteA")"] [FILE]..."
> +//usage: "[FILE]..."
> +//usage:#endif
> //usage:#define cat_full_usage "\n\n"
> //usage: "Print FILEs to stdout\n"
> +//usage: IF_FEATURE_CATN(
> //usage: "\n -n Number output lines"
> //usage: "\n -b Number nonempty lines"
> +//usage: )
> //usage: IF_FEATURE_CATV(
> //usage: "\n -v Show nonprinting characters as ^x or M-x"
> //usage: "\n -t ...and tabs as ^I"
> @@ -147,7 +161,7 @@ int cat_main(int argc UNUSED_PARAM, char **argv)
>
> IF_FEATURE_CATV(opt_complementary = "Aetv"; /* -A == -vet */)
> /* -u is ignored ("unbuffered") */
> - opts = getopt32(argv, IF_FEATURE_CATV("etvA")"nbu");
> + opts = getopt32(argv, IF_FEATURE_CATV("etvA") IF_FEATURE_CATN("nb") "u");
> argv += optind;
>
> #if ENABLE_FEATURE_CATV
> @@ -157,23 +171,26 @@ int cat_main(int argc UNUSED_PARAM, char **argv)
> opts >>= 4;
> #endif
>
> -#define CAT_OPT_n (1<<0)
> -#define CAT_OPT_b (1<<1)
> -#define CAT_OPT_u (1<<2)
> - if (!(opts & (CAT_OPT_n|CAT_OPT_b))) /* no -n or -b */
> - return bb_cat(argv);
> +#if ENABLE_FEATURE_CATN
> +# define CAT_OPT_n (1<<0)
> +# define CAT_OPT_b (1<<1)
> + if (opts & (CAT_OPT_n|CAT_OPT_b)) { /* -n or -b */
> + if (!*argv)
> + *--argv = (char*)"-";
> + ns.width = 6;
> + ns.start = 1;
> + ns.inc = 1;
> + ns.sep = "\t";
> + ns.empty_str = "\n";
> + ns.all = !(opts & CAT_OPT_b); /* -n without -b */
> + ns.nonempty = (opts & CAT_OPT_b); /* -b (with or without -n) */
> + do {
> + print_numbered_lines(&ns, *argv);
> + } while (*++argv);
> + fflush_stdout_and_exit(EXIT_SUCCESS);
> + }
> + opts >>= 2;
> +#endif
>
> - if (!*argv)
> - *--argv = (char*)"-";
> - ns.width = 6;
> - ns.start = 1;
> - ns.inc = 1;
> - ns.sep = "\t";
> - ns.empty_str = "\n";
> - ns.all = !(opts & CAT_OPT_b); /* -n without -b */
> - ns.nonempty = (opts & CAT_OPT_b); /* -b (with or without -n) */
> - do {
> - print_numbered_lines(&ns, *argv);
> - } while (*++argv);
> - fflush_stdout_and_exit(EXIT_SUCCESS);
> + return bb_cat(argv);
> }
> --
> 2.13.0
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list