comparison src/eval.c @ 8114:4aea0b0aa714 v7.4.1351

commit https://github.com/vim/vim/commit/81661fb86801e6d6e5194b43dfd27d73fcc016ec Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 18 22:23:34 2016 +0100 patch 7.4.1351 Problem: When the port isn't opened yet when ch_open() is called it may fail instead of waiting for the specified time. Solution: Loop when select() succeeds but when connect() failed. Also use channel logging for jobs. Add ch_log().
author Christian Brabandt <cb@256bit.org>
date Thu, 18 Feb 2016 22:30:08 +0100
parents 1a03abdc4234
children 39532ee7dd43
comparison
equal deleted inserted replaced
8113:fd690d084aaf 8114:4aea0b0aa714
502 #ifdef FEAT_FLOAT 502 #ifdef FEAT_FLOAT
503 static void f_ceil(typval_T *argvars, typval_T *rettv); 503 static void f_ceil(typval_T *argvars, typval_T *rettv);
504 #endif 504 #endif
505 #ifdef FEAT_CHANNEL 505 #ifdef FEAT_CHANNEL
506 static void f_ch_close(typval_T *argvars, typval_T *rettv); 506 static void f_ch_close(typval_T *argvars, typval_T *rettv);
507 static void f_ch_log(typval_T *argvars, typval_T *rettv);
507 static void f_ch_logfile(typval_T *argvars, typval_T *rettv); 508 static void f_ch_logfile(typval_T *argvars, typval_T *rettv);
508 static void f_ch_open(typval_T *argvars, typval_T *rettv); 509 static void f_ch_open(typval_T *argvars, typval_T *rettv);
509 static void f_ch_readraw(typval_T *argvars, typval_T *rettv); 510 static void f_ch_readraw(typval_T *argvars, typval_T *rettv);
510 static void f_ch_sendexpr(typval_T *argvars, typval_T *rettv); 511 static void f_ch_sendexpr(typval_T *argvars, typval_T *rettv);
511 static void f_ch_sendraw(typval_T *argvars, typval_T *rettv); 512 static void f_ch_sendraw(typval_T *argvars, typval_T *rettv);
8122 #ifdef FEAT_FLOAT 8123 #ifdef FEAT_FLOAT
8123 {"ceil", 1, 1, f_ceil}, 8124 {"ceil", 1, 1, f_ceil},
8124 #endif 8125 #endif
8125 #ifdef FEAT_CHANNEL 8126 #ifdef FEAT_CHANNEL
8126 {"ch_close", 1, 1, f_ch_close}, 8127 {"ch_close", 1, 1, f_ch_close},
8128 {"ch_log", 1, 2, f_ch_log},
8127 {"ch_logfile", 1, 2, f_ch_logfile}, 8129 {"ch_logfile", 1, 2, f_ch_logfile},
8128 {"ch_open", 1, 2, f_ch_open}, 8130 {"ch_open", 1, 2, f_ch_open},
8129 {"ch_readraw", 1, 2, f_ch_readraw}, 8131 {"ch_readraw", 1, 2, f_ch_readraw},
8130 {"ch_sendexpr", 2, 3, f_ch_sendexpr}, 8132 {"ch_sendexpr", 2, 3, f_ch_sendexpr},
8131 {"ch_sendraw", 2, 3, f_ch_sendraw}, 8133 {"ch_sendraw", 2, 3, f_ch_sendraw},
9948 if (channel != NULL) 9950 if (channel != NULL)
9949 channel_close(channel); 9951 channel_close(channel);
9950 } 9952 }
9951 9953
9952 /* 9954 /*
9955 * "ch_log()" function
9956 */
9957 static void
9958 f_ch_log(typval_T *argvars, typval_T *rettv UNUSED)
9959 {
9960 char_u *msg = get_tv_string(&argvars[0]);
9961 channel_T *channel = NULL;
9962
9963 if (argvars[1].v_type != VAR_UNKNOWN)
9964 channel = get_channel_arg(&argvars[1]);
9965
9966 ch_log(channel, (char *)msg);
9967 }
9968
9969 /*
9953 * "ch_logfile()" function 9970 * "ch_logfile()" function
9954 */ 9971 */
9955 static void 9972 static void
9956 f_ch_logfile(typval_T *argvars, typval_T *rettv UNUSED) 9973 f_ch_logfile(typval_T *argvars, typval_T *rettv UNUSED)
9957 { 9974 {
14601 argv[argc] = NULL; 14618 argv[argc] = NULL;
14602 #else 14619 #else
14603 cmd = ga.ga_data; 14620 cmd = ga.ga_data;
14604 #endif 14621 #endif
14605 } 14622 }
14623
14606 #ifdef USE_ARGV 14624 #ifdef USE_ARGV
14625 # ifdef FEAT_CHANNEL
14626 if (ch_log_active())
14627 {
14628 garray_T ga;
14629 int i;
14630
14631 ga_init2(&ga, (int)sizeof(char), 200);
14632 for (i = 0; i < argc; ++i)
14633 {
14634 if (i > 0)
14635 ga_concat(&ga, (char_u *)" ");
14636 ga_concat(&ga, (char_u *)argv[i]);
14637 }
14638 ch_logs(NULL, "Starting job: %s", ga.ga_data);
14639 ga_clear(&ga);
14640 }
14641 # endif
14607 mch_start_job(argv, job, &options); 14642 mch_start_job(argv, job, &options);
14608 #else 14643 #else
14644 # ifdef FEAT_CHANNEL
14645 ch_logs(NULL, "Starting job: %s", cmd);
14646 # endif
14609 mch_start_job((char *)cmd, job, &options); 14647 mch_start_job((char *)cmd, job, &options);
14610 #endif 14648 #endif
14611 14649
14612 theend: 14650 theend:
14613 #ifdef USE_ARGV 14651 #ifdef USE_ARGV