# HG changeset patch # User Christian Brabandt # Date 1455574504 -3600 # Node ID 9c6740f2204fd72691f6dec58cd27907c0f5a19c # Parent 959c711832dc16d72eee1a981f3a58c9075e3aef commit https://github.com/vim/vim/commit/12dcf024e90ab511f04a08b20fe7eedbe92096d2 Author: Bram Moolenaar 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. diff --git a/src/os_unix.c b/src/os_unix.c --- 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]); diff --git a/src/version.c b/src/version.c --- 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,