[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