[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH v2] ed: add support for -s command-line option as mandated by POSIX
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2021-12-29 18:00:47
Message-ID: CAK1hOcNTOS3BGtoYDwSC34nMnyWZGWZaC9BWiTc9Wiv-dMXeCQ () mail ! gmail ! com
[Download RAW message or body]

Applied, thank you

On Wed, Dec 29, 2021 at 4:16 PM <soeren@soeren-tempel.net> wrote:
>
> From: Sören Tempel <soeren+git@soeren-tempel.net>
>
> Apart from the -p option, POSIX also mandates an -s option which
> suppresses the output of byte counts for the e, E, r, and w command.
> From these commands, Busybox ed presently only implements the r and w
> commands. This commit ensures that these two command do not output any
> bytes counts when the -s option is passed. The shell escape command,
> also effected by the -s option, is not implemented by Busybox at the
> moment.
> ---
> Instead of introducing a new global variable, this version of the patch
> reuses the existing option_mask32 variable.
>
>  editors/ed.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/editors/ed.c b/editors/ed.c
> index dfe0f1a77..36b045733 100644
> --- a/editors/ed.c
> +++ b/editors/ed.c
> @@ -18,7 +18,7 @@
>
>  //applet:IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
>
> -//usage:#define ed_trivial_usage "[-p PROMPT] [FILE]"
> +//usage:#define ed_trivial_usage "[-p PROMPT] [-s] [FILE]"
>  //usage:#define ed_full_usage ""
>
>  #include "libbb.h"
> @@ -71,6 +71,11 @@ struct globals {
>         SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
>  } while (0)
>
> +#define OPTION_STR "sp:"
> +enum {
> +       OPT_s = 0x01,
> +};
> +
>  static int bad_nums(int num1, int num2, const char *for_what)
>  {
>         if ((num1 < 1) || (num2 > lastNum) || (num1 > num2)) {
> @@ -458,7 +463,8 @@ static int readLines(const char *file, int num)
>          * in the following format:
>          * "%d\n", <number of bytes read>
>          */
> -       printf("%u\n", charCount);
> +       if (!(option_mask32 & OPT_s))
> +               printf("%u\n", charCount);
>         return TRUE;
>  }
>
> @@ -510,7 +516,8 @@ static int writeLines(const char *file, int num1, int num2)
>          * unless the -s option was specified, in the following format:
>          * "%d\n", <number of bytes written>
>          */
> -       printf("%u\n", charCount);
> +       if (!(option_mask32 & OPT_s))
> +               printf("%u\n", charCount);
>         return TRUE;
>  }
>
> @@ -1005,7 +1012,7 @@ int ed_main(int argc UNUSED_PARAM, char **argv)
>         lines.prev = &lines;
>
>         prompt = ""; /* no prompt by default */
> -       getopt32(argv, "p:", &prompt);
> +       getopt32(argv, OPTION_STR, &prompt);
>         argv += optind;
>
>         if (argv[0]) {
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic