mirror of
https://github.com/jarun/nnn.git
synced 2024-11-24 11:51:27 +00:00
Define return codes for nextsel() and use a switch
This commit is contained in:
parent
a75021c2d2
commit
1cdfa84f69
54
noice.c
54
noice.c
|
@ -185,11 +185,12 @@ printerr(int ret, char *prefix)
|
|||
/*
|
||||
* Returns 0 normally
|
||||
* On movement it updates *cur
|
||||
* Returns 1 on quit
|
||||
* Returns 2 on go in
|
||||
* Returns 3 on go up
|
||||
* Returns 4 on search
|
||||
* Returns SEL_{QUIT,BACK,GOIN,FLTR} otherwise
|
||||
*/
|
||||
#define SEL_QUIT 1
|
||||
#define SEL_BACK 2
|
||||
#define SEL_GOIN 3
|
||||
#define SEL_FLTR 4
|
||||
int
|
||||
nextsel(int *cur, int max)
|
||||
{
|
||||
|
@ -198,22 +199,22 @@ nextsel(int *cur, int max)
|
|||
c = getch();
|
||||
switch (c) {
|
||||
case 'q':
|
||||
return 1;
|
||||
/* go up */
|
||||
return SEL_QUIT;
|
||||
/* back */
|
||||
case KEY_BACKSPACE:
|
||||
case KEY_LEFT:
|
||||
case 'h':
|
||||
return 2;
|
||||
/* go in */
|
||||
return SEL_BACK;
|
||||
/* inside */
|
||||
case KEY_ENTER:
|
||||
case '\r':
|
||||
case KEY_RIGHT:
|
||||
case 'l':
|
||||
return 3;
|
||||
/* search */
|
||||
return SEL_GOIN;
|
||||
/* filter */
|
||||
case '/':
|
||||
case '&':
|
||||
return 4;
|
||||
return SEL_FLTR;
|
||||
/* next */
|
||||
case 'j':
|
||||
case KEY_DOWN:
|
||||
|
@ -389,6 +390,14 @@ begin:
|
|||
int nlines;
|
||||
int maxlen;
|
||||
int odd;
|
||||
char *pathnew;
|
||||
char *name;
|
||||
char *bin;
|
||||
pid_t pid;
|
||||
int fd;
|
||||
char *dir;
|
||||
char *tmp;
|
||||
regex_t re;
|
||||
|
||||
redraw:
|
||||
nlines = MIN(LINES - 4, n);
|
||||
|
@ -434,17 +443,15 @@ redraw:
|
|||
|
||||
nochange:
|
||||
ret = nextsel(&cur, n);
|
||||
if (ret == 1) {
|
||||
switch (ret) {
|
||||
case SEL_QUIT:
|
||||
free(path);
|
||||
return;
|
||||
}
|
||||
if (ret == 2) {
|
||||
case SEL_BACK:
|
||||
/* Handle root case */
|
||||
if (strcmp(path, "") == 0) {
|
||||
goto nochange;
|
||||
} else {
|
||||
char *dir, *tmp;
|
||||
|
||||
dir = dirname(path);
|
||||
tmp = malloc(strlen(dir) + 1);
|
||||
strlcpy(tmp, dir, strlen(dir) + 1);
|
||||
|
@ -454,14 +461,7 @@ nochange:
|
|||
filter = strdup(ifilter); /* Reset filter */
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if (ret == 3) {
|
||||
char *pathnew;
|
||||
char *name;
|
||||
char *bin;
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
case SEL_GOIN:
|
||||
/* Cannot descend in empty directories */
|
||||
if (n == 0)
|
||||
goto nochange;
|
||||
|
@ -524,11 +524,7 @@ nochange:
|
|||
printmsg("Unsupported file");
|
||||
free(pathnew);
|
||||
goto nochange;
|
||||
}
|
||||
if (ret == 4) {
|
||||
char *tmp;
|
||||
regex_t re;
|
||||
|
||||
case SEL_FLTR:
|
||||
/* Read filter */
|
||||
move(LINES - 1, 0);
|
||||
printw("filter: ");
|
||||
|
|
Loading…
Reference in a new issue