1
0
forked from aniani/vim

patch 7.4.1537

Problem:    Too many feature flags for pipes, jobs and channels.
Solution:   Only use FEAT_JOB_CHANNEL.
This commit is contained in:
Bram Moolenaar
2016-03-11 22:52:15 +01:00
parent de27989157
commit 509ce2a558
22 changed files with 72 additions and 200 deletions

View File

@@ -12,7 +12,7 @@
#include "vim.h"
#if defined(FEAT_CHANNEL) || defined(PROTO)
#if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
/* TRUE when netbeans is running with a GUI. */
#ifdef FEAT_GUI
@@ -294,11 +294,7 @@ add_channel(void)
channel->ch_id = next_ch_id++;
ch_log(channel, "Created channel");
#ifdef CHANNEL_PIPES
for (part = PART_SOCK; part <= PART_IN; ++part)
#else
part = PART_SOCK;
#endif
{
channel->ch_part[part].ch_fd = INVALID_FD;
#ifdef FEAT_GUI_X11
@@ -330,10 +326,8 @@ add_channel(void)
channel_still_useful(channel_T *channel)
{
int has_sock_msg;
#ifdef CHANNEL_PIPES
int has_out_msg;
int has_err_msg;
#endif
/* If the job was killed the channel is not expected to work anymore. */
if (channel->ch_job_killed && channel->ch_job == NULL)
@@ -348,24 +342,16 @@ channel_still_useful(channel_T *channel)
has_sock_msg = channel->ch_part[PART_SOCK].ch_fd != INVALID_FD
|| channel->ch_part[PART_SOCK].ch_head.rq_next != NULL
|| channel->ch_part[PART_SOCK].ch_json_head.jq_next != NULL;
#ifdef CHANNEL_PIPES
has_out_msg = channel->ch_part[PART_OUT].ch_fd != INVALID_FD
|| channel->ch_part[PART_OUT].ch_head.rq_next != NULL
|| channel->ch_part[PART_OUT].ch_json_head.jq_next != NULL;
has_err_msg = channel->ch_part[PART_ERR].ch_fd != INVALID_FD
|| channel->ch_part[PART_ERR].ch_head.rq_next != NULL
|| channel->ch_part[PART_ERR].ch_json_head.jq_next != NULL;
#endif
return (channel->ch_callback != NULL && (has_sock_msg
#ifdef CHANNEL_PIPES
|| has_out_msg || has_err_msg
#endif
))
#ifdef CHANNEL_PIPES
|| has_out_msg || has_err_msg))
|| (channel->ch_part[PART_OUT].ch_callback != NULL && has_out_msg)
|| (channel->ch_part[PART_ERR].ch_callback != NULL && has_err_msg)
#endif
;
|| (channel->ch_part[PART_ERR].ch_callback != NULL && has_err_msg);
}
/*
@@ -507,12 +493,10 @@ channel_gui_register(channel_T *channel)
{
if (channel->CH_SOCK_FD != INVALID_FD)
channel_gui_register_one(channel, PART_SOCK);
# ifdef CHANNEL_PIPES
if (channel->CH_OUT_FD != INVALID_FD)
channel_gui_register_one(channel, PART_OUT);
if (channel->CH_ERR_FD != INVALID_FD)
channel_gui_register_one(channel, PART_ERR);
# endif
}
/*
@@ -557,14 +541,8 @@ channel_gui_unregister(channel_T *channel)
{
int part;
#ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
#else
part = PART_SOCK;
#endif
{
channel_gui_unregister_one(channel, part);
}
}
#endif
@@ -842,7 +820,6 @@ channel_open(
return channel;
}
#if defined(CHANNEL_PIPES) || defined(PROTO)
static void
may_close_part(sock_T *fd)
{
@@ -884,7 +861,6 @@ channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err)
# endif
}
}
#endif
/*
* Sets the job the channel is associated with and associated options.
@@ -1897,10 +1873,7 @@ may_invoke_callback(channel_T *channel, int part)
channel_can_write_to(channel_T *channel)
{
return channel != NULL && (channel->CH_SOCK_FD != INVALID_FD
#ifdef CHANNEL_PIPES
|| channel->CH_IN_FD != INVALID_FD
#endif
);
|| channel->CH_IN_FD != INVALID_FD);
}
/*
@@ -1911,12 +1884,9 @@ channel_can_write_to(channel_T *channel)
channel_is_open(channel_T *channel)
{
return channel != NULL && (channel->CH_SOCK_FD != INVALID_FD
#ifdef CHANNEL_PIPES
|| channel->CH_IN_FD != INVALID_FD
|| channel->CH_OUT_FD != INVALID_FD
|| channel->CH_ERR_FD != INVALID_FD
#endif
);
|| channel->CH_ERR_FD != INVALID_FD);
}
/*
@@ -1951,11 +1921,9 @@ channel_close(channel_T *channel, int invoke_close_cb)
sock_close(channel->CH_SOCK_FD);
channel->CH_SOCK_FD = INVALID_FD;
}
#if defined(CHANNEL_PIPES)
may_close_part(&channel->CH_IN_FD);
may_close_part(&channel->CH_OUT_FD);
may_close_part(&channel->CH_ERR_FD);
#endif
if (invoke_close_cb && channel->ch_close_cb != NULL)
{
@@ -2036,10 +2004,8 @@ channel_clear(channel_T *channel)
{
ch_log(channel, "Clearing channel");
channel_clear_one(channel, PART_SOCK);
#ifdef CHANNEL_PIPES
channel_clear_one(channel, PART_OUT);
channel_clear_one(channel, PART_ERR);
#endif
vim_free(channel->ch_callback);
channel->ch_callback = NULL;
vim_free(channel->ch_close_cb);
@@ -2357,11 +2323,7 @@ channel_fd2channel(sock_T fd, int *partp)
for (channel = first_channel; channel != NULL;
channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
# else
part = PART_SOCK;
# endif
if (channel->ch_part[part].ch_fd == fd)
{
*partp = part;
@@ -2386,13 +2348,8 @@ channel_handle_events(void)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
/* check the socket and pipes */
for (part = PART_SOCK; part <= PART_ERR; ++part)
# else
/* only check the socket */
part = PART_SOCK;
# endif
{
fd = channel->ch_part[part].ch_fd;
if (fd != INVALID_FD && channel_wait(channel, fd, 0) == OK)
@@ -2471,11 +2428,7 @@ channel_poll_setup(int nfd_in, void *fds_in)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
# else
part = PART_SOCK;
# endif
{
if (channel->ch_part[part].ch_fd != INVALID_FD)
{
@@ -2505,11 +2458,7 @@ channel_poll_check(int ret_in, void *fds_in)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
# else
part = PART_SOCK;
# endif
{
int idx = channel->ch_part[part].ch_poll_idx;
@@ -2539,11 +2488,7 @@ channel_select_setup(int maxfd_in, void *rfds_in)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
# else
part = PART_SOCK;
# endif
{
sock_T fd = channel->ch_part[part].ch_fd;
@@ -2572,11 +2517,7 @@ channel_select_check(int ret_in, void *rfds_in)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
# ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
# else
part = PART_SOCK;
# endif
{
sock_T fd = channel->ch_part[part].ch_fd;
@@ -2657,11 +2598,9 @@ channel_parse_messages(void)
continue;
}
}
#ifdef CHANNEL_PIPES
if (part < PART_ERR)
++part;
else
#endif
{
channel = channel->ch_next;
part = PART_SOCK;
@@ -2692,11 +2631,7 @@ set_ref_in_channel(int copyID)
for (channel = first_channel; channel != NULL; channel = channel->ch_next)
{
#ifdef CHANNEL_PIPES
for (part = PART_SOCK; part < PART_IN; ++part)
#else
part = PART_SOCK;
#endif
{
jsonq_T *head = &channel->ch_part[part].ch_json_head;
jsonq_T *item = head->jq_next;
@@ -2723,10 +2658,8 @@ set_ref_in_channel(int copyID)
int
channel_part_send(channel_T *channel)
{
#ifdef CHANNEL_PIPES
if (channel->CH_SOCK_FD == INVALID_FD)
return PART_IN;
#endif
return PART_SOCK;
}
@@ -2736,10 +2669,8 @@ channel_part_send(channel_T *channel)
int
channel_part_read(channel_T *channel)
{
#ifdef CHANNEL_PIPES
if (channel->CH_SOCK_FD == INVALID_FD)
return PART_OUT;
#endif
return PART_SOCK;
}
@@ -2764,4 +2695,4 @@ channel_get_timeout(channel_T *channel, int part)
return channel->ch_part[part].ch_timeout;
}
#endif /* FEAT_CHANNEL */
#endif /* FEAT_JOB_CHANNEL */