comparison src/misc2.c @ 13750:3ab6198c1f9a v8.0.1747

patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd commit https://github.com/vim/vim/commit/ebe74b73677b06db7d483987a863b41cee051cc0 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Apr 21 23:34:43 2018 +0200 patch 8.0.1747: MS-Windows: term_start() does not set job_info() cmd Problem: MS-Windows: term_start() does not set job_info() cmd. Solution: Share the code from job_start() to set jv_argv.
author Christian Brabandt <cb@256bit.org>
date Sat, 21 Apr 2018 23:45:06 +0200
parents 260256caac38
children 96e4c6b26998
comparison
equal deleted inserted replaced
13749:f30ac8135299 13750:3ab6198c1f9a
6511 return FAIL; 6511 return FAIL;
6512 } 6512 }
6513 } 6513 }
6514 return OK; 6514 return OK;
6515 } 6515 }
6516 #endif 6516
6517 # if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
6518 /*
6519 * Build "argv[argc]" from the string "cmd".
6520 * "argv[argc]" is set to NULL;
6521 * Return FAIL when out of memory.
6522 */
6523 int
6524 build_argv_from_string(char_u *cmd, char ***argv, int *argc)
6525 {
6526 char_u *cmd_copy;
6527 int i;
6528
6529 /* Make a copy, parsing will modify "cmd". */
6530 cmd_copy = vim_strsave(cmd);
6531 if (cmd_copy == NULL
6532 || mch_parse_cmd(cmd_copy, FALSE, argv, argc) == FAIL)
6533 {
6534 vim_free(cmd_copy);
6535 return FAIL;
6536 }
6537 for (i = 0; i < *argc; i++)
6538 (*argv)[i] = (char *)vim_strsave((char_u *)(*argv)[i]);
6539 (*argv)[*argc] = NULL;
6540 vim_free(cmd_copy);
6541 return OK;
6542 }
6543
6544 /*
6545 * Build "argv[argc]" from the list "l".
6546 * "argv[argc]" is set to NULL;
6547 * Return FAIL when out of memory.
6548 */
6549 int
6550 build_argv_from_list(list_T *l, char ***argv, int *argc)
6551 {
6552 listitem_T *li;
6553 char_u *s;
6554
6555 /* Pass argv[] to mch_call_shell(). */
6556 *argv = (char **)alloc(sizeof(char *) * (l->lv_len + 1));
6557 if (*argv == NULL)
6558 return FAIL;
6559 *argc = 0;
6560 for (li = l->lv_first; li != NULL; li = li->li_next)
6561 {
6562 s = get_tv_string_chk(&li->li_tv);
6563 if (s == NULL)
6564 {
6565 int i;
6566
6567 for (i = 0; i < *argc; ++i)
6568 vim_free((*argv)[i]);
6569 return FAIL;
6570 }
6571 (*argv)[*argc] = (char *)vim_strsave(s);
6572 *argc += 1;
6573 }
6574 (*argv)[*argc] = NULL;
6575 return OK;
6576 }
6577 # endif
6578 #endif