mirror of
https://github.com/jarun/nnn.git
synced 2024-11-24 11:51:27 +00:00
Simplify readln()
Use getnstr() and be done with it. It will even beep now!
This commit is contained in:
parent
d6e89ef07f
commit
f77b6a3fa6
46
noice.c
46
noice.c
|
@ -327,52 +327,14 @@ nextsel(char **run)
|
||||||
char *
|
char *
|
||||||
readln(void)
|
readln(void)
|
||||||
{
|
{
|
||||||
int c;
|
char ln[LINE_MAX];
|
||||||
int i = 0;
|
|
||||||
char *ln = NULL;
|
|
||||||
int y, x, x0;
|
|
||||||
|
|
||||||
echo();
|
echo();
|
||||||
curs_set(TRUE);
|
curs_set(TRUE);
|
||||||
|
getnstr(ln, sizeof(ln));
|
||||||
/* Starting point */
|
|
||||||
getyx(stdscr, y, x);
|
|
||||||
x0 = x;
|
|
||||||
|
|
||||||
while ((c = getch()) != ERR) {
|
|
||||||
if (c == KEY_ENTER || c == '\r')
|
|
||||||
break;
|
|
||||||
if (c == KEY_BACKSPACE || c == CONTROL('H')) {
|
|
||||||
getyx(stdscr, y, x);
|
|
||||||
if (x >= x0) {
|
|
||||||
i--;
|
|
||||||
if (i > 0) {
|
|
||||||
ln = xrealloc(ln, i * sizeof(*ln));
|
|
||||||
} else {
|
|
||||||
free(ln);
|
|
||||||
ln = NULL;
|
|
||||||
}
|
|
||||||
move(y, x);
|
|
||||||
printw("%c", ' ');
|
|
||||||
move(y, x);
|
|
||||||
} else {
|
|
||||||
move(y, x0);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
ln = xrealloc(ln, (i + 1) * sizeof(*ln));
|
|
||||||
ln[i] = c;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if (ln != NULL) {
|
|
||||||
ln = xrealloc(ln, (i + 1) * sizeof(*ln));
|
|
||||||
ln[i] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
curs_set(FALSE);
|
|
||||||
noecho();
|
noecho();
|
||||||
|
curs_set(FALSE);
|
||||||
return ln;
|
return strdup(ln);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue