diff options
| author | 2018-07-04 19:02:47 +0530 | |
|---|---|---|
| committer | 2018-07-04 19:02:47 +0530 | |
| commit | 74a0dc0a97e05702b18d4df7547ca7dc59f507c8 (patch) | |
| tree | b401e283d0b486b31f0a47cec8eae604be8c3dc1 | |
| parent | cd318db1b22848249c3a41a884945108a72a4e8b (diff) | |
| download | nnn-74a0dc0a97e05702b18d4df7547ca7dc59f507c8.tar.gz | |
Replace multiple if with switch
| -rw-r--r-- | nnn.c | 34 |
1 files changed, 13 insertions, 21 deletions
@@ -1213,35 +1213,30 @@ xreadline(char *fname, char *prompt) if ((r = get_wch(ch)) != ERR) { if (r == OK) { - if (*ch == KEY_ENTER || *ch == '\n' || *ch == '\r') - break; - - if (*ch == '\b') { + switch (*ch) { + case KEY_ENTER: //fallthrough + case '\n': //fallthrough + case '\r': + goto END; + case '\b': /* some old curses (e.g. rhel25) still send '\b' for backspace */ if (pos > 0) { memmove(buf + pos - 1, buf + pos, (len - pos) << 2); --len, --pos; - } + } //fallthrough + case '\t': /* TAB breaks cursor position, ignore it */ continue; - } - - if (*ch == CONTROL('L')) { + case CONTROL('L'): clearprompt(); printprompt(prompt); len = pos = 0; continue; - } - - if (*ch == CONTROL('A')) { + case CONTROL('A'): pos = 0; continue; - } - - if (*ch == CONTROL('E')) { + case CONTROL('E'): pos = len; continue; - } - - if (*ch == CONTROL('U')) { + case CONTROL('U'): clearprompt(); printprompt(prompt); memmove(buf, buf + pos, (len - pos) << 2); @@ -1254,10 +1249,6 @@ xreadline(char *fname, char *prompt) if (keyname(*ch)[0] == '^') continue; - /* TAB breaks cursor position, ignore it */ - if (*ch == '\t') - continue; - if (pos < NAME_MAX - 1) { memmove(buf + pos + 1, buf + pos, (len - pos) << 2); buf[pos] = *ch; @@ -1293,6 +1284,7 @@ xreadline(char *fname, char *prompt) } } +END: buf[len] = '\0'; if (old_curs != ERR) curs_set(old_curs); |