From bb88ece93cd8221cba034e3dcd76a2b2823da945 Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Mon, 25 Mar 2002 13:40:39 +0000 Subject: [PATCH] Rocco's mods to open_pipe git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1145 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 7 ++++--- files.c | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11fcb2a5..e0755121 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,9 +2,10 @@ CVS code - - General - Type misalignments and mem leaks in renumber_all, do_justify and do_spell (Rocco & Steven Kneizys). - - New "External Command" code, originally by Dwayne Rightler. - New function files.c:open_pipe(), changes to do_insertfile(), - new list extcmd_list, cmd is ^X after ^R by default. + - New "External Command" code, originally by Dwayne Rightler, + Chris & Rocco. New function files.c:open_pipe(), changes to + do_insertfile(), new list extcmd_list, cmd is ^X after ^R by + default. - Added separate regex variable (color_regex and colormatches) so that color syntax and regex search/replace can coexist. - files.c: diff --git a/files.c b/files.c index 4913a0d8..527117b2 100644 --- a/files.c +++ b/files.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -292,6 +293,7 @@ int read_file(int fd, char *filename, int quiet) int open_pipe(char *command) { int fd[2], pid; + int fork_status; /* Make our pipes. */ @@ -311,15 +313,22 @@ int open_pipe(char *command) execl("/bin/sh","/bin/sh","-c",command,0); exit(0); } - else if (pid == -1) { + + /* Else continue as parent */ + + close(fd[1]); + + if (pid == -1) { + close(fd[0]); statusbar(_("Could not fork")); return 1; } - /* Else continue as parent */ - close(fd[1]); read_file(fd[0],"stdin",0); set_modified(); + + wait(&fork_status); + return 0; } #endif /* NANO_SMALL */