diff --git a/src/nnn.c b/src/nnn.c index 3dfc84a8..dcdafccb 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -4187,25 +4187,28 @@ static bool run_selected_plugin(char **path, const char *file, char *runfile, ch g_states |= STATE_PLUGIN_INIT; } - if (*file == '_') - return run_cmd_as_plugin(*path, file, runfile); - fd = open(g_pipepath, O_RDONLY | O_NONBLOCK); if (fd == -1) return FALSE; - /* Generate absolute path to plugin */ - mkpath(plugindir, file, g_buf); + /* Run plugin from command */ + if (*file == '_') + run_cmd_as_plugin(*path, file, runfile); - if (runfile && runfile[0]) { - xstrsncpy(*lastname, runfile, NAME_MAX); - spawn(g_buf, *lastname, *path, *path, F_NORMAL); - } else - spawn(g_buf, NULL, *path, *path, F_NORMAL); + /* Run command from plugin */ + else { + /* Generate absolute path to plugin */ + mkpath(plugindir, file, g_buf); + + if (runfile && runfile[0]) { + xstrsncpy(*lastname, runfile, NAME_MAX); + spawn(g_buf, *lastname, *path, *path, F_NORMAL); + } else + spawn(g_buf, NULL, *path, *path, F_NORMAL); + } len = read(fd, g_buf, PATH_MAX); g_buf[len] = '\0'; - close(fd); if (len > 1) {