From c63fb28effb2fbae903928b9b9453974c6e96c9f Mon Sep 17 00:00:00 2001 From: Todd Yamakawa Date: Fri, 17 Apr 2020 07:21:57 -0500 Subject: [PATCH] Fix #523: handle NNN_PIPE (#525) Co-authored-by: Todd Yamakawa --- src/nnn.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) 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) {