vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

commit bd56541e79261fb46c8146a3e5c4895b807b34b2
parent 145cf9855916359a22137f513a55cbd2a8c44354
Author: Marc André Tanner <mat@brain-dump.org>
Date:   Mon, 16 Apr 2018 11:31:21 +0200

vis-menu: use distinct error code upon cancelling selection

The following exit statuses are used:

  0 an item was successfully selected
  1 the selection was cancelled
 >1 failure, some error occured

Diffstat:
Mman/vis-menu.1 | 3++-
Mvis-menu.c | 10+++++-----
2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/man/vis-menu.1 b/man/vis-menu.1 @@ -214,7 +214,8 @@ and 1 if the user cancelled. If an internal error occurs, the .Nm vis-menu -utility prints a message to standard error and exits 1. +utility prints a message to standard error and terminates with an exit +status greater than 1. Potential error conditions include being unable to allocate memory, being unable to read from standard input, diff --git a/vis-menu.c b/vis-menu.c @@ -123,7 +123,7 @@ static void die(const char *s) { tcsetattr(0, TCSANOW, &tio_old); fprintf(stderr, "%s\n", s); - exit(EXIT_FAILURE); + exit(2); } static void @@ -459,7 +459,7 @@ run(void) { } break; case CONTROL('C'): - return EXIT_FAILURE; + return 1; case CONTROL('M'): /* Return */ case CONTROL('J'): if (sel) strncpy(text, sel->text, sizeof(text)-1); /* Complete the input first, when hitting return */ @@ -470,7 +470,7 @@ run(void) { case CONTROL(']'): case CONTROL('\\'): /* These are usually close enough to RET to replace Shift+RET, again due to console limitations */ puts(text); - return EXIT_SUCCESS; + return 0; case CONTROL('A'): if (sel == matches) { cursor = 0; @@ -567,7 +567,7 @@ run(void) { static void usage(void) { fputs("usage: vis-menu [-b|-t] [-i] [-l lines] [-p prompt] [initial selection]\n", stderr); - exit(EXIT_FAILURE); + exit(2); } int @@ -575,7 +575,7 @@ main(int argc, char **argv) { for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], "-v")) { puts("vis-menu " VERSION); - exit(EXIT_SUCCESS); + exit(0); } else if (!strcmp(argv[i], "-i")) { fstrncmp = strncasecmp; } else if (!strcmp(argv[i], "-t")) {