summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-06 23:06:25 +0100
committerBram Moolenaar <Bram@vim.org>2016-03-06 23:06:25 +0100
commitb69fccf377f43544b86817b0de6cc1498a4ff9ec (patch)
tree16fe5187c9273a82f735ee1e4f2b50dcc345771f /src/eval.c
parentd0b6502a7ace39d6cd30874110a572371d10beae (diff)
patch 7.4.1506v7.4.1506
Problem: Job cannot read from a file. Solution: Implement reading from a file for Unix.
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 510dd128da..77638d5612 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15118,6 +15118,7 @@ f_job_start(typval_T *argvars UNUSED, typval_T *rettv)
garray_T ga;
#endif
jobopt_T opt;
+ int part;
rettv->v_type = VAR_JOB;
job = job_alloc();
@@ -15135,6 +15136,17 @@ f_job_start(typval_T *argvars UNUSED, typval_T *rettv)
+ JO_STOPONEXIT + JO_EXIT_CB + JO_OUT_IO) == FAIL)
return;
+ /* Check that when io is "file" that there is a file name. */
+ for (part = PART_OUT; part <= PART_IN; ++part)
+ if ((opt.jo_set & (JO_OUT_IO << (part - PART_OUT)))
+ && opt.jo_io[part] == JIO_FILE
+ && (!(opt.jo_set & (JO_OUT_NAME << (part - PART_OUT)))
+ || *opt.jo_io_name[part] == NUL))
+ {
+ EMSG(_("E920: -io file requires -name to be set"));
+ return;
+ }
+
if ((opt.jo_set & JO_IN_IO) && opt.jo_io[PART_IN] == JIO_BUFFER)
{
buf_T *buf;