aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-06-17 10:02:09 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-06-18 11:36:07 -0300
commit71d9899f3cbcb2c3fc290925e5fd4300f2b9cf8c (patch)
treee62935fe1c17261d124156c03c421f1e972c1936 /src/nvim/eval.c
parent05fd154ede5d88b7304ede9cea978d6b76d1fb44 (diff)
downloadrneovim-71d9899f3cbcb2c3fc290925e5fd4300f2b9cf8c.tar.gz
rneovim-71d9899f3cbcb2c3fc290925e5fd4300f2b9cf8c.tar.bz2
rneovim-71d9899f3cbcb2c3fc290925e5fd4300f2b9cf8c.zip
job: Refactor to use pointers instead of ids
'job_start' returns the id as an out paramter, and the 'job_find' function is now used by eval.c to translate job ids into pointers.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 1de2b7bbf1..00fdecc51c 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10471,11 +10471,12 @@ static void f_job_start(typval_T *argvars, typval_T *rettv)
// The last item of argv must be NULL
argv[i] = NULL;
- rettv->vval.v_number = job_start(argv,
- xstrdup((char *)argvars[0].vval.v_string),
- on_job_stdout,
- on_job_stderr,
- on_job_exit);
+ job_start(argv,
+ xstrdup((char *)argvars[0].vval.v_string),
+ on_job_stdout,
+ on_job_stderr,
+ on_job_exit,
+ &rettv->vval.v_number);
if (rettv->vval.v_number <= 0) {
if (rettv->vval.v_number == 0) {
@@ -10502,19 +10503,21 @@ static void f_job_stop(typval_T *argvars, typval_T *rettv)
return;
}
- if (!job_stop(argvars[0].vval.v_number)) {
+ Job *job = job_find(argvars[0].vval.v_number);
+
+ if (!job) {
// Probably an invalid job id
EMSG(_(e_invjob));
return;
}
+ job_stop(job);
rettv->vval.v_number = 1;
}
// "jobwrite()" function
static void f_job_write(typval_T *argvars, typval_T *rettv)
{
- bool res;
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = 0;
@@ -10529,16 +10532,16 @@ static void f_job_write(typval_T *argvars, typval_T *rettv)
return;
}
- res = job_write(argvars[0].vval.v_number,
- xstrdup((char *)argvars[1].vval.v_string),
- strlen((char *)argvars[1].vval.v_string));
+ Job *job = job_find(argvars[0].vval.v_number);
- if (!res) {
+ if (!job) {
// Invalid job id
EMSG(_(e_invjob));
}
- rettv->vval.v_number = 1;
+ rettv->vval.v_number = job_write(job,
+ xstrdup((char *)argvars[1].vval.v_string),
+ strlen((char *)argvars[1].vval.v_string));
}
/*