static bool plctrl_init(void)
{
snprintf(g_buf, CMD_LEN_MAX, "nnn-pipe.%d", getpid());
+ /* g_tmpfpath is used to generate tmp file names */
+ g_tmpfpath[g_tmpfplen - 1] = '\0';
mkpath(g_tmpfpath, g_buf, g_pipepath);
unlink(g_pipepath);
if (mkfifo(g_pipepath, 0600) != 0)
g_plinit = TRUE;
}
- if ((cfg.runctx != cfg.curctx)
- /* Must be in plugin directory to select plugin */
- || (!direct && strcmp(*path, plugindir) != 0))
+ /* Must be in plugin directory to select plugin */
+ if (!direct && ((cfg.runctx != cfg.curctx) || (strcmp(*path, plugindir) != 0)))
return FALSE;
fd = open(g_pipepath, O_RDONLY | O_NONBLOCK);
spawn(newpath, (ndents ? dents[cur].name : NULL),
NULL, path, F_CLI | F_CONFIRM);
} else {
- cfg.runctx = cfg.curctx;
if (!run_selected_plugin(&path, tmp, newpath, NULL,
(ndents ? dents[cur].name : NULL),
- &lastname, &lastdir, TRUE))
+ &lastname, &lastdir, TRUE)) {
+ if (cfg.filtermode)
+ presel = FILTER;
goto nochange;
-
+ }
}
} else {
cfg.runplugin ^= 1;