diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2019-09-22 16:07:28 -0700 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2019-09-22 16:07:28 -0700 |
| commit | 8e5b1497fae8ed73ab4bb1f510189b99537d571e (patch) | |
| tree | 8f9486011799470a7fe26287fd4934aeb801e13f | |
| parent | 5d3344815d6c7e6a277a8ae4dd3270a5342fbba0 (diff) | |
Ctrl-D exits when line is empty.
| -rw-r--r-- | ask.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -231,6 +231,7 @@ static char *get_input(FILE *in, FILE *out, const char *prompt, const char *init case '\r': goto finished; case KEY_CTRL_C: case KEY_ESC: + cleanup: free(buf); buf = NULL; picked = NULL; @@ -283,7 +284,10 @@ static char *get_input(FILE *in, FILE *out, const char *prompt, const char *init buf[--len] = 0; } break; - case KEY_DELETE: case KEY_CTRL_D: + case KEY_CTRL_D: + if (len == 0) goto cleanup; + // fallthrough + case KEY_DELETE: if (b < len) { memmove(buf+b, buf+b+1, (size_t)(len-b)); buf[--len] = 0; |
