diff --git a/noice.c b/noice.c index 632cef3a..7f2f8733 100644 --- a/noice.c +++ b/noice.c @@ -81,8 +81,6 @@ struct entry { /* Global context */ struct entry *dents; int ndents, cur; -char path[PATH_MAX], oldpath[PATH_MAX]; -char fltr[LINE_MAX]; int idle; /* @@ -486,7 +484,7 @@ dentfind(struct entry *dents, int n, char *cwd, char *path) } int -populate(void) +populate(char *path, char *oldpath, char *fltr) { regex_t re; int r; @@ -515,7 +513,7 @@ populate(void) } void -redraw(void) +redraw(char *path) { char cwd[PATH_MAX], cwdresolved[PATH_MAX]; size_t ncols; @@ -565,7 +563,8 @@ redraw(void) void browse(char *ipath, char *ifilter) { - char newpath[PATH_MAX]; + char path[PATH_MAX], oldpath[PATH_MAX], newpath[PATH_MAX]; + char fltr[LINE_MAX]; char *bin, *dir, *tmp, *run, *env; struct stat sb; regex_t re; @@ -573,15 +572,16 @@ browse(char *ipath, char *ifilter) strlcpy(path, ipath, sizeof(path)); strlcpy(fltr, ifilter, sizeof(fltr)); + oldpath[0] = '\0'; begin: - r = populate(); + r = populate(path, oldpath, fltr); if (r == -1) { printwarn(); goto nochange; } for (;;) { - redraw(); + redraw(path); nochange: switch (nextsel(&run, &env)) { case SEL_QUIT: