/*
* 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)
{
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:
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);
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);
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;
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: ");