return;
case SEL_BACK:
/* There is no going back */
- if (strcmp(path, "/") == 0) {
+ if (strcmp(path, "/") == 0)
goto nochange;
+ dir = xdirname(path);
+ free(path);
+ path = dir;
+ free(filter);
+ filter = xstrdup(ifilter); /* Reset filter */
+ /* Recall history */
+ hist = SLIST_FIRST(&histhead);
+ if (hist != NULL) {
+ cur = hist->pos;
+ DPRINTF_D(hist->pos);
+ SLIST_REMOVE_HEAD(&histhead, entry);
+ free(hist);
} else {
- dir = xdirname(path);
- free(path);
- path = dir;
- free(filter);
- filter = xstrdup(ifilter); /* Reset filter */
- /* Recall history */
- hist = SLIST_FIRST(&histhead);
- if (hist != NULL) {
- cur = hist->pos;
- DPRINTF_D(hist->pos);
- SLIST_REMOVE_HEAD(&histhead, entry);
- free(hist);
- } else {
- cur = 0;
- }
- goto out;
+ cur = 0;
}
+ goto out;
case SEL_GOIN:
/* Cannot descend in empty directories */
if (n == 0)