Define return codes for nextsel() and use a switch

This commit is contained in:
lostd 2014-10-10 10:06:31 +03:00
parent a75021c2d2
commit 1cdfa84f69

54
noice.c
View file

@ -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: ");