Mercurial > vim
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 |