changeset 8068:9c6740f2204f v7.4.1328

commit https://github.com/vim/vim/commit/12dcf024e90ab511f04a08b20fe7eedbe92096d2 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Feb 15 23:09:04 2016 +0100 patch 7.4.1328 Problem: Can't compile with +job but without +channel. (John Marriott) Solution: Add more #ifdefs.
author Christian Brabandt <cb@256bit.org>
date Mon, 15 Feb 2016 23:15:04 +0100
parents 959c711832dc
children 0df672ac12da
files src/os_unix.c src/version.c
diffstat 2 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5043,7 +5043,9 @@ mch_start_job(char **argv, job_T *job)
     int		fd_in[2];	/* for stdin */
     int		fd_out[2];	/* for stdout */
     int		fd_err[2];	/* for stderr */
+# ifdef FEAT_CHANNEL
     channel_T	*channel = NULL;
+#endif
 
     /* default is to fail */
     job->jv_status = JOB_FAILED;
@@ -5051,6 +5053,8 @@ mch_start_job(char **argv, job_T *job)
     fd_out[0] = -1;
     fd_err[0] = -1;
 
+    /* TODO: without the channel feature connect the child to /dev/null? */
+# ifdef FEAT_CHANNEL
     /* Open pipes for stdin, stdout, stderr. */
     if ((pipe(fd_in) < 0) || (pipe(fd_out) < 0) ||(pipe(fd_err) < 0))
 	goto failed;
@@ -5058,6 +5062,7 @@ mch_start_job(char **argv, job_T *job)
     channel = add_channel();
     if (channel == NULL)
 	goto failed;
+# endif
 
     pid = fork();	/* maybe we should use vfork() */
     if (pid  == -1)
@@ -5080,6 +5085,8 @@ mch_start_job(char **argv, job_T *job)
 
 	set_child_environment();
 
+	/* TODO: re-enable this when pipes connect without a channel */
+# ifdef FEAT_CHANNEL
 	/* set up stdin for the child */
 	close(fd_in[1]);
 	close(0);
@@ -5097,6 +5104,7 @@ mch_start_job(char **argv, job_T *job)
 	close(2);
 	ignored = dup(fd_err[1]);
 	close(fd_err[1]);
+# endif
 
 	/* See above for type of argv. */
 	execvp(argv[0], argv);
@@ -5108,23 +5116,29 @@ mch_start_job(char **argv, job_T *job)
     /* parent */
     job->jv_pid = pid;
     job->jv_status = JOB_STARTED;
+# ifdef FEAT_CHANNEL
     job->jv_channel = channel;
+# endif
 
     /* child stdin, stdout and stderr */
     close(fd_in[0]);
     close(fd_out[1]);
     close(fd_err[1]);
+# ifdef FEAT_CHANNEL
     channel_set_pipes(channel, fd_in[1], fd_out[0], fd_err[0]);
     channel_set_job(channel, job);
-#ifdef FEAT_GUI
+#  ifdef FEAT_GUI
     channel_gui_register(channel);
-#endif
+#  endif
+# endif
 
     return;
 
 failed:
+# ifdef FEAT_CHANNEL
     if (channel != NULL)
 	channel_free(channel);
+# endif
     if (fd_in[0] >= 0)
     {
 	close(fd_in[0]);
--- a/src/version.c
+++ b/src/version.c
@@ -748,6 +748,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1328,
+/**/
     1327,
 /**/
     1326,