Mercurial > vim
diff src/job.c @ 24812:8fdf839af1f4 v8.2.2944
patch 8.2.2944: Vim9: no error when using job or channel as a string
Commit: https://github.com/vim/vim/commit/1328bde9d406aa1292e92673fa8a026889424e79
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jun 5 20:51:38 2021 +0200
patch 8.2.2944: Vim9: no error when using job or channel as a string
Problem: Vim9: no error when using job or channel as a string.
Solution: Be more strict about conversion to string. (closes https://github.com/vim/vim/issues/8312)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 05 Jun 2021 21:00:03 +0200 |
parents | de5c000f14c4 |
children | 712e867f9721 |
line wrap: on
line diff
--- a/src/job.c +++ b/src/job.c @@ -1927,4 +1927,34 @@ f_job_stop(typval_T *argvars, typval_T * rettv->vval.v_number = job_stop(job, argvars, NULL); } +/* + * Get a string with information about the job in "varp" in "buf". + * "buf" must be at least NUMBUFLEN long. + */ + char_u * +job_to_string_buf(typval_T *varp, char_u *buf) +{ + job_T *job = varp->vval.v_job; + char *status; + + if (job == NULL) + return (char_u *)"no process"; + status = job->jv_status == JOB_FAILED ? "fail" + : job->jv_status >= JOB_ENDED ? "dead" + : "run"; +# ifdef UNIX + vim_snprintf((char *)buf, NUMBUFLEN, + "process %ld %s", (long)job->jv_pid, status); +# elif defined(MSWIN) + vim_snprintf((char *)buf, NUMBUFLEN, + "process %ld %s", + (long)job->jv_proc_info.dwProcessId, + status); +# else + // fall-back + vim_snprintf((char *)buf, NUMBUFLEN, "process ? %s", status); +# endif + return buf; +} + #endif // FEAT_JOB_CHANNEL