diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-17 10:02:09 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-18 11:36:07 -0300 |
commit | 71d9899f3cbcb2c3fc290925e5fd4300f2b9cf8c (patch) | |
tree | e62935fe1c17261d124156c03c421f1e972c1936 /src/nvim/eval.c | |
parent | 05fd154ede5d88b7304ede9cea978d6b76d1fb44 (diff) | |
download | rneovim-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.c | 27 |
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)); } /* |