aboutsummaryrefslogtreecommitdiffstats
path: root/noice.c
diff options
context:
space:
mode:
Diffstat (limited to 'noice.c')
-rw-r--r--noice.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/noice.c b/noice.c
index b15a5ed..ba2774a 100644
--- a/noice.c
+++ b/noice.c
@@ -204,6 +204,7 @@ enum {
SEL_GOIN,
SEL_FLTR,
SEL_SH,
+ SEL_CD,
};
int
@@ -258,6 +259,8 @@ nextsel(int *cur, int max)
break;
case '!':
return SEL_SH;
+ case 'c':
+ return SEL_CD;
}
return 0;
@@ -604,6 +607,28 @@ nochange:
if (chdir(ipath) == -1)
printwarn();
break;
+ case SEL_CD:
+ /* Read target dir */
+ printmsg("");
+ move(LINES - 1, 0);
+ printw("chdir: ");
+ tmp = readln();
+ if (tmp == NULL) {
+ printmsg("");
+ goto nochange;
+ }
+ if (testopendir(tmp) == 0) {
+ printwarn();
+ goto nochange;
+ } else {
+ free(path);
+ path = strdup(tmp);
+ free(filter);
+ filter = strdup(ifilter); /* Reset filter */
+ DPRINTF_S(path);
+ cur = 0;
+ goto out;
+ }
}
}