Browse Source

Define return codes for nextsel() and use a switch

master
lostd 10 years ago
parent
commit
1cdfa84f69
1 changed files with 25 additions and 29 deletions
  1. +25
    -29
      noice.c

+ 25
- 29
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: ");


Loading…
Cancel
Save