commit bb88ece93cd8221cba034e3dcd76a2b2823da945
parent f21f3fcc1ec4d673f7a97201f09734b17df9e497
Author: Chris Allegretta <chrisa@asty.org>
Date: Mon, 25 Mar 2002 13:40:39 +0000
Rocco's mods to open_pipe
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1145 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git 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
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
+#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
@@ -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 */