From 3c45733f470bebf036289348d7c2fae7b02b14eb Mon Sep 17 00:00:00 2001 From: lostd Date: Wed, 28 Jan 2015 12:30:59 +0200 Subject: [PATCH] Rework readmore(), replace goto with a switch --- noice.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/noice.c b/noice.c index 85ec3d73..63002cf9 100644 --- a/noice.c +++ b/noice.c @@ -367,26 +367,26 @@ readln(void) int readmore(char **str) { - int c; - int i; + int c, ret = 0; + size_t i; char *ln = *str; - int ret = 0; if (ln != NULL) i = strlen(ln); else i = 0; - DPRINTF_D(i); curs_set(TRUE); c = getch(); - if (c == KEY_ENTER || c == '\r') { + switch (c) { + case KEY_ENTER: + case '\r': ret = 1; - goto out; - } - if (c == KEY_BACKSPACE || c == CONTROL('H')) { + break; + case KEY_BACKSPACE: + case CONTROL('H'): i--; if (i > 0) { ln = xrealloc(ln, (i + 1) * sizeof(*ln)); @@ -395,13 +395,14 @@ readmore(char **str) free(ln); ln = NULL; } - goto out; + break; + default: + i++; + ln = xrealloc(ln, (i + 1) * sizeof(*ln)); + ln[i - 1] = c; + ln[i] = '\0'; } - ln = xrealloc(ln, (i + 2) * sizeof(*ln)); - ln[i] = c; - i++; - ln[i] = '\0'; -out: + curs_set(FALSE); *str = ln;