aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-02-23 12:34:02 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-02-23 21:43:33 -0300
commit1ec7db70ecac75736b5042203e57aae57b65abe6 (patch)
treed2f169ac3a5c7460d04997e31efd104920e68c5e /src/nvim/eval.c
parent0b8d3cb5074031d04ad3def786775853e67ecfbe (diff)
downloadrneovim-1ec7db70ecac75736b5042203e57aae57b65abe6.tar.gz
rneovim-1ec7db70ecac75736b5042203e57aae57b65abe6.tar.bz2
rneovim-1ec7db70ecac75736b5042203e57aae57b65abe6.zip
job: Refactor process spawning and startup arguments
- process spawning was decoupled from the rest of the job control logic. The goal is reusing it for spawning processes connected to pseudo terminal file descriptors. - job_start now receives a JobOptions structure containing all the startup options.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 0049c9f59a..c2a46ed206 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10725,15 +10725,13 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv)
// The last item of argv must be NULL
argv[i] = NULL;
-
- job_start(argv,
- xstrdup((char *)argvars[0].vval.v_string),
- true,
- on_job_stdout,
- on_job_stderr,
- on_job_exit,
- 0,
- &rettv->vval.v_number);
+ JobOptions opts = JOB_OPTIONS_INIT;
+ opts.argv = argv;
+ opts.data = xstrdup((char *)argvars[0].vval.v_string);
+ opts.stdout_cb = on_job_stdout;
+ opts.stderr_cb = on_job_stderr;
+ opts.exit_cb = on_job_exit;
+ job_start(opts, &rettv->vval.v_number);
if (rettv->vval.v_number <= 0) {
if (rettv->vval.v_number == 0) {