[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [PATCH v2] ed: add support for -p command-line option as mandated by POSIX
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2021-12-17 21:36:01
Message-ID: CAK1hOcOr0XrWybdxHSsFHwDkt5coFwxVMY+HtjORrrP2Fn2b0Q () mail ! gmail ! com
[Download RAW message or body]
Applied, thank you.
On Sun, Nov 21, 2021 at 12:25 PM <soeren@soeren-tempel.net> wrote:
>
> From: Sören Tempel <soeren+git@soeren-tempel.net>
>
> The POSIX.1-2008 specification of ed(1) mandates two command-line
> options: -p (for specifying a prompt string) and -s (to suppress writing
> of byte counts). This commit adds support for the former. Furthermore,
> it also changes the default prompt string to an empty string (instead
> of ": ") since this is also mandated by POSIX:
>
> -p string Use string as the prompt string when in command mode.
> By default, there shall be no prompt string.
>
> Support for the remaining -s option will be added in a separate commit
> since it requires a general restructuring of error handling in Busybox
> ed.
>
> Signed-off-by: Sören Tempel <soeren+git@soeren-tempel.net>
> ---
> editors/ed.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/editors/ed.c b/editors/ed.c
> index 0d96d263c..a54a0b0a6 100644
> --- a/editors/ed.c
> +++ b/editors/ed.c
> @@ -48,6 +48,7 @@ struct globals {
> char *bufBase;
> char *bufPtr;
> char *fileName;
> + const char *prompt;
> LINE lines;
> smallint dirty;
> int marks[26];
> @@ -57,6 +58,7 @@ struct globals {
> #define bufBase (G.bufBase )
> #define bufPtr (G.bufPtr )
> #define fileName (G.fileName )
> +#define prompt (G.prompt )
> #define curNum (G.curNum )
> #define lastNum (G.lastNum )
> #define bufUsed (G.bufUsed )
> @@ -790,7 +792,7 @@ static void doCommands(void)
> * 0 on ctrl-C,
> * >0 length of input string, including terminating '\n'
> */
> - len = read_line_input(NULL, ": ", buf, sizeof(buf));
> + len = read_line_input(NULL, prompt, buf, sizeof(buf));
> if (len <= 0)
> return;
> while (len && isspace(buf[--len]))
> @@ -994,6 +996,8 @@ static void doCommands(void)
> int ed_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
> int ed_main(int argc UNUSED_PARAM, char **argv)
> {
> + int opt;
> +
> INIT_G();
>
> bufSize = INITBUF_SIZE;
> @@ -1002,8 +1006,15 @@ int ed_main(int argc UNUSED_PARAM, char **argv)
> lines.next = &lines;
> lines.prev = &lines;
>
> - if (argv[1]) {
> - fileName = xstrdup(argv[1]);
> + opt = getopt32(argv, "p:", &prompt);
> + if (!(opt & 0x01))
> + prompt = ""; /* no prompt by default */
> +
> + argc -= optind;
> + argv += optind;
> +
> + if (argc >= 1) {
> + fileName = xstrdup(argv[0]);
> if (!readLines(fileName, 1)) {
> return EXIT_SUCCESS;
> }
> _______________________________________________
> 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