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

@@ -464,7 +464,7 @@ NBDEBUG_DEP = nbdebug.h nbdebug.c
!endif !endif
!if ("$(CHANNEL)"=="yes") !if ("$(CHANNEL)"=="yes")
DEFINES = $(DEFINES) -DFEAT_CHANNEL DEFINES = $(DEFINES) -DFEAT_JOB_CHANNEL
!endif !endif
!ifdef XPM !ifdef XPM

View File

@@ -529,7 +529,7 @@ endif
endif endif
ifeq ($(CHANNEL),yes) ifeq ($(CHANNEL),yes)
DEFINES += -DFEAT_CHANNEL DEFINES += -DFEAT_JOB_CHANNEL
endif endif
# DirectWrite (DirectX) # DirectWrite (DirectX)

View File

@@ -332,7 +332,7 @@ XPM_INC = -I $(XPM)\include -I $(XPM)\..\include
!if "$(CHANNEL)" == "yes" !if "$(CHANNEL)" == "yes"
CHANNEL_PRO = proto/channel.pro CHANNEL_PRO = proto/channel.pro
CHANNEL_OBJ = $(OBJDIR)/channel.obj CHANNEL_OBJ = $(OBJDIR)/channel.obj
CHANNEL_DEFS = -DFEAT_CHANNEL CHANNEL_DEFS = -DFEAT_JOB_CHANNEL
NETBEANS_LIB = WSock32.lib NETBEANS_LIB = WSock32.lib
!endif !endif

2
src/auto/configure vendored
View File

@@ -7427,7 +7427,7 @@ if test "$enable_netbeans" = "yes"; then
fi fi
if test "$enable_channel" = "yes"; then if test "$enable_channel" = "yes"; then
$as_echo "#define FEAT_CHANNEL 1" >>confdefs.h $as_echo "#define FEAT_JOB_CHANNEL 1" >>confdefs.h
CHANNEL_SRC="channel.c" CHANNEL_SRC="channel.c"

View File

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

View File

@@ -432,7 +432,7 @@
#undef FEAT_NETBEANS_INTG #undef FEAT_NETBEANS_INTG
/* Define if you want to include process communication. */ /* Define if you want to include process communication. */
#undef FEAT_CHANNEL #undef FEAT_JOB_CHANNEL
/* Define default global runtime path */ /* Define default global runtime path */
#undef RUNTIME_GLOBAL #undef RUNTIME_GLOBAL

View File

@@ -2014,7 +2014,7 @@ if test "$enable_netbeans" = "yes"; then
AC_SUBST(NETBEANS_OBJ) AC_SUBST(NETBEANS_OBJ)
fi fi
if test "$enable_channel" = "yes"; then if test "$enable_channel" = "yes"; then
AC_DEFINE(FEAT_CHANNEL) AC_DEFINE(FEAT_JOB_CHANNEL)
CHANNEL_SRC="channel.c" CHANNEL_SRC="channel.c"
AC_SUBST(CHANNEL_SRC) AC_SUBST(CHANNEL_SRC)
CHANNEL_OBJ="objects/channel.o" CHANNEL_OBJ="objects/channel.o"

View File

@@ -496,14 +496,12 @@ static void f_call(typval_T *argvars, typval_T *rettv);
#ifdef FEAT_FLOAT #ifdef FEAT_FLOAT
static void f_ceil(typval_T *argvars, typval_T *rettv); static void f_ceil(typval_T *argvars, typval_T *rettv);
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
static void f_ch_close(typval_T *argvars, typval_T *rettv); static void f_ch_close(typval_T *argvars, typval_T *rettv);
static void f_ch_evalexpr(typval_T *argvars, typval_T *rettv); static void f_ch_evalexpr(typval_T *argvars, typval_T *rettv);
static void f_ch_evalraw(typval_T *argvars, typval_T *rettv); static void f_ch_evalraw(typval_T *argvars, typval_T *rettv);
static void f_ch_getbufnr(typval_T *argvars, typval_T *rettv); static void f_ch_getbufnr(typval_T *argvars, typval_T *rettv);
# ifdef FEAT_JOB
static void f_ch_getjob(typval_T *argvars, typval_T *rettv); static void f_ch_getjob(typval_T *argvars, typval_T *rettv);
# endif
static void f_ch_log(typval_T *argvars, typval_T *rettv); static void f_ch_log(typval_T *argvars, typval_T *rettv);
static void f_ch_logfile(typval_T *argvars, typval_T *rettv); static void f_ch_logfile(typval_T *argvars, typval_T *rettv);
static void f_ch_open(typval_T *argvars, typval_T *rettv); static void f_ch_open(typval_T *argvars, typval_T *rettv);
@@ -632,10 +630,8 @@ static void f_islocked(typval_T *argvars, typval_T *rettv);
static void f_isnan(typval_T *argvars, typval_T *rettv); static void f_isnan(typval_T *argvars, typval_T *rettv);
#endif #endif
static void f_items(typval_T *argvars, typval_T *rettv); static void f_items(typval_T *argvars, typval_T *rettv);
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
# ifdef FEAT_CHANNEL
static void f_job_getchannel(typval_T *argvars, typval_T *rettv); static void f_job_getchannel(typval_T *argvars, typval_T *rettv);
# endif
static void f_job_setoptions(typval_T *argvars, typval_T *rettv); static void f_job_setoptions(typval_T *argvars, typval_T *rettv);
static void f_job_start(typval_T *argvars, typval_T *rettv); static void f_job_start(typval_T *argvars, typval_T *rettv);
static void f_job_stop(typval_T *argvars, typval_T *rettv); static void f_job_stop(typval_T *argvars, typval_T *rettv);
@@ -6236,11 +6232,11 @@ tv_equal(
return tv1->vval.v_float == tv2->vval.v_float; return tv1->vval.v_float == tv2->vval.v_float;
#endif #endif
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
return tv1->vval.v_job == tv2->vval.v_job; return tv1->vval.v_job == tv2->vval.v_job;
#endif #endif
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
return tv1->vval.v_channel == tv2->vval.v_channel; return tv1->vval.v_channel == tv2->vval.v_channel;
#endif #endif
case VAR_UNKNOWN: case VAR_UNKNOWN:
@@ -6926,7 +6922,7 @@ garbage_collect(void)
abort = abort || set_ref_in_python3(copyID); abort = abort || set_ref_in_python3(copyID);
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
abort = abort || set_ref_in_channel(copyID); abort = abort || set_ref_in_channel(copyID);
#endif #endif
@@ -7738,7 +7734,7 @@ failret:
return OK; return OK;
} }
#if defined(FEAT_CHANNEL) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
/* /*
* Decrement the reference count on "channel" and maybe free it when it goes * Decrement the reference count on "channel" and maybe free it when it goes
* down to zero. Don't free it if there is a pending action. * down to zero. Don't free it if there is a pending action.
@@ -7751,15 +7747,12 @@ channel_unref(channel_T *channel)
return channel_may_free(channel); return channel_may_free(channel);
return FALSE; return FALSE;
} }
#endif
#if defined(FEAT_JOB) || defined(PROTO)
static job_T *first_job = NULL; static job_T *first_job = NULL;
static void static void
job_free(job_T *job) job_free(job_T *job)
{ {
# ifdef FEAT_CHANNEL
ch_log(job->jv_channel, "Freeing job"); ch_log(job->jv_channel, "Freeing job");
if (job->jv_channel != NULL) if (job->jv_channel != NULL)
{ {
@@ -7771,7 +7764,6 @@ job_free(job_T *job)
job->jv_channel->ch_job = NULL; job->jv_channel->ch_job = NULL;
channel_unref(job->jv_channel); channel_unref(job->jv_channel);
} }
# endif
mch_clear_job(job); mch_clear_job(job);
if (job->jv_next != NULL) if (job->jv_next != NULL)
@@ -7798,7 +7790,6 @@ job_unref(job_T *job)
{ {
job_free(job); job_free(job);
} }
# ifdef FEAT_CHANNEL
else if (job->jv_channel != NULL) else if (job->jv_channel != NULL)
{ {
/* Do remove the link to the channel, otherwise it hangs /* Do remove the link to the channel, otherwise it hangs
@@ -7807,7 +7798,6 @@ job_unref(job_T *job)
channel_unref(job->jv_channel); channel_unref(job->jv_channel);
job->jv_channel = NULL; job->jv_channel = NULL;
} }
# endif
} }
} }
@@ -8204,14 +8194,12 @@ static struct fst
#ifdef FEAT_FLOAT #ifdef FEAT_FLOAT
{"ceil", 1, 1, f_ceil}, {"ceil", 1, 1, f_ceil},
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
{"ch_close", 1, 1, f_ch_close}, {"ch_close", 1, 1, f_ch_close},
{"ch_evalexpr", 2, 3, f_ch_evalexpr}, {"ch_evalexpr", 2, 3, f_ch_evalexpr},
{"ch_evalraw", 2, 3, f_ch_evalraw}, {"ch_evalraw", 2, 3, f_ch_evalraw},
{"ch_getbufnr", 2, 2, f_ch_getbufnr}, {"ch_getbufnr", 2, 2, f_ch_getbufnr},
# ifdef FEAT_JOB
{"ch_getjob", 1, 1, f_ch_getjob}, {"ch_getjob", 1, 1, f_ch_getjob},
# endif
{"ch_log", 1, 2, f_ch_log}, {"ch_log", 1, 2, f_ch_log},
{"ch_logfile", 1, 2, f_ch_logfile}, {"ch_logfile", 1, 2, f_ch_logfile},
{"ch_open", 1, 2, f_ch_open}, {"ch_open", 1, 2, f_ch_open},
@@ -8344,10 +8332,8 @@ static struct fst
{"isnan", 1, 1, f_isnan}, {"isnan", 1, 1, f_isnan},
#endif #endif
{"items", 1, 1, f_items}, {"items", 1, 1, f_items},
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
# ifdef FEAT_CHANNEL
{"job_getchannel", 1, 1, f_job_getchannel}, {"job_getchannel", 1, 1, f_job_getchannel},
# endif
{"job_setoptions", 2, 2, f_job_setoptions}, {"job_setoptions", 2, 2, f_job_setoptions},
{"job_start", 1, 2, f_job_start}, {"job_start", 1, 2, f_job_start},
{"job_status", 1, 1, f_job_status}, {"job_status", 1, 1, f_job_status},
@@ -9955,7 +9941,7 @@ f_ceil(typval_T *argvars, typval_T *rettv)
} }
#endif #endif
#if defined(FEAT_CHANNEL) || defined(FEAT_JOB) #if defined(FEAT_JOB_CHANNEL)
/* /*
* Get a callback from "arg". It can be a Funcref or a function name. * Get a callback from "arg". It can be a Funcref or a function name.
* When "arg" is zero return an empty string. * When "arg" is zero return an empty string.
@@ -10312,7 +10298,7 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported)
} }
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
/* /*
* Get the channel from the argument. * Get the channel from the argument.
* Returns NULL if the handle is invalid. * Returns NULL if the handle is invalid.
@@ -10387,7 +10373,6 @@ f_ch_getbufnr(typval_T *argvars, typval_T *rettv)
} }
} }
# ifdef FEAT_JOB
/* /*
* "ch_getjob()" function * "ch_getjob()" function
*/ */
@@ -10404,7 +10389,6 @@ f_ch_getjob(typval_T *argvars, typval_T *rettv)
++channel->ch_job->jv_refcount; ++channel->ch_job->jv_refcount;
} }
} }
# endif
/* /*
* "ch_log()" function * "ch_log()" function
@@ -11427,13 +11411,13 @@ f_empty(typval_T *argvars, typval_T *rettv)
break; break;
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
n = argvars[0].vval.v_job == NULL n = argvars[0].vval.v_job == NULL
|| argvars[0].vval.v_job->jv_status != JOB_STARTED; || argvars[0].vval.v_job->jv_status != JOB_STARTED;
break; break;
#endif #endif
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
n = argvars[0].vval.v_channel == NULL n = argvars[0].vval.v_channel == NULL
|| !channel_is_open(argvars[0].vval.v_channel); || !channel_is_open(argvars[0].vval.v_channel);
break; break;
@@ -13815,7 +13799,7 @@ f_has(typval_T *argvars, typval_T *rettv)
#ifdef FEAT_BYTEOFF #ifdef FEAT_BYTEOFF
"byte_offset", "byte_offset",
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
"channel", "channel",
#endif #endif
#ifdef FEAT_CINDENT #ifdef FEAT_CINDENT
@@ -13951,7 +13935,7 @@ f_has(typval_T *argvars, typval_T *rettv)
#ifdef FEAT_INS_EXPAND #ifdef FEAT_INS_EXPAND
"insert_expand", "insert_expand",
#endif #endif
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
"job", "job",
#endif #endif
#ifdef FEAT_JUMPLIST #ifdef FEAT_JUMPLIST
@@ -15092,7 +15076,7 @@ f_items(typval_T *argvars, typval_T *rettv)
dict_list(argvars, rettv, 2); dict_list(argvars, rettv, 2);
} }
#if defined(FEAT_JOB) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
/* /*
* Get the job from the argument. * Get the job from the argument.
* Returns NULL if the job is invalid. * Returns NULL if the job is invalid.
@@ -15114,7 +15098,6 @@ get_job_arg(typval_T *tv)
return job; return job;
} }
# ifdef FEAT_CHANNEL
/* /*
* "job_getchannel()" function * "job_getchannel()" function
*/ */
@@ -15131,7 +15114,6 @@ f_job_getchannel(typval_T *argvars, typval_T *rettv)
++job->jv_channel->ch_refcount; ++job->jv_channel->ch_refcount;
} }
} }
# endif
/* /*
* "job_setoptions()" function * "job_setoptions()" function
@@ -15298,7 +15280,6 @@ f_job_start(typval_T *argvars, typval_T *rettv)
} }
#ifdef USE_ARGV #ifdef USE_ARGV
# ifdef FEAT_CHANNEL
if (ch_log_active()) if (ch_log_active())
{ {
garray_T ga; garray_T ga;
@@ -15314,20 +15295,15 @@ f_job_start(typval_T *argvars, typval_T *rettv)
ch_logs(NULL, "Starting job: %s", (char *)ga.ga_data); ch_logs(NULL, "Starting job: %s", (char *)ga.ga_data);
ga_clear(&ga); ga_clear(&ga);
} }
# endif
mch_start_job(argv, job, &opt); mch_start_job(argv, job, &opt);
#else #else
# ifdef FEAT_CHANNEL
ch_logs(NULL, "Starting job: %s", (char *)cmd); ch_logs(NULL, "Starting job: %s", (char *)cmd);
# endif
mch_start_job((char *)cmd, job, &opt); mch_start_job((char *)cmd, job, &opt);
#endif #endif
#ifdef FEAT_CHANNEL
/* If the channel is reading from a buffer, write lines now. */ /* If the channel is reading from a buffer, write lines now. */
if (job->jv_channel != NULL) if (job->jv_channel != NULL)
channel_write_in(job->jv_channel); channel_write_in(job->jv_channel);
#endif
theend: theend:
#ifdef USE_ARGV #ifdef USE_ARGV
@@ -15354,10 +15330,8 @@ job_status(job_T *job)
else else
{ {
result = mch_job_status(job); result = mch_job_status(job);
# ifdef FEAT_CHANNEL
if (job->jv_status == JOB_ENDED) if (job->jv_status == JOB_ENDED)
ch_log(job->jv_channel, "Job ended"); ch_log(job->jv_channel, "Job ended");
# endif
if (job->jv_status == JOB_ENDED && job->jv_exit_cb != NULL) if (job->jv_status == JOB_ENDED && job->jv_exit_cb != NULL)
{ {
typval_T argv[3]; typval_T argv[3];
@@ -15450,9 +15424,7 @@ f_job_stop(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
return; return;
} }
} }
# ifdef FEAT_CHANNEL
ch_logs(job->jv_channel, "Stopping job with '%s'", (char *)arg); ch_logs(job->jv_channel, "Stopping job with '%s'", (char *)arg);
# endif
if (mch_stop_job(job, arg) == FAIL) if (mch_stop_job(job, arg) == FAIL)
rettv->vval.v_number = 0; rettv->vval.v_number = 0;
else else
@@ -22414,12 +22386,12 @@ free_tv(typval_T *varp)
dict_unref(varp->vval.v_dict); dict_unref(varp->vval.v_dict);
break; break;
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
job_unref(varp->vval.v_job); job_unref(varp->vval.v_job);
break; break;
#endif #endif
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
channel_unref(varp->vval.v_channel); channel_unref(varp->vval.v_channel);
break; break;
#endif #endif
@@ -22468,13 +22440,13 @@ clear_tv(typval_T *varp)
break; break;
#endif #endif
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
job_unref(varp->vval.v_job); job_unref(varp->vval.v_job);
varp->vval.v_job = NULL; varp->vval.v_job = NULL;
#endif #endif
break; break;
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
channel_unref(varp->vval.v_channel); channel_unref(varp->vval.v_channel);
varp->vval.v_channel = NULL; varp->vval.v_channel = NULL;
#endif #endif
@@ -22543,12 +22515,12 @@ get_tv_number_chk(typval_T *varp, int *denote)
return varp->vval.v_number == VVAL_TRUE ? 1 : 0; return varp->vval.v_number == VVAL_TRUE ? 1 : 0;
break; break;
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
EMSG(_("E910: Using a Job as a Number")); EMSG(_("E910: Using a Job as a Number"));
break; break;
#endif #endif
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
EMSG(_("E913: Using a Channel as a Number")); EMSG(_("E913: Using a Channel as a Number"));
break; break;
#endif #endif
@@ -22589,12 +22561,12 @@ get_tv_float(typval_T *varp)
EMSG(_("E907: Using a special value as a Float")); EMSG(_("E907: Using a special value as a Float"));
break; break;
case VAR_JOB: case VAR_JOB:
# ifdef FEAT_JOB # ifdef FEAT_JOB_CHANNEL
EMSG(_("E911: Using a Job as a Float")); EMSG(_("E911: Using a Job as a Float"));
break; break;
# endif # endif
case VAR_CHANNEL: case VAR_CHANNEL:
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
EMSG(_("E914: Using a Channel as a Float")); EMSG(_("E914: Using a Channel as a Float"));
break; break;
# endif # endif
@@ -22711,7 +22683,7 @@ get_tv_string_buf_chk(typval_T *varp, char_u *buf)
STRCPY(buf, get_var_special_name(varp->vval.v_number)); STRCPY(buf, get_var_special_name(varp->vval.v_number));
return buf; return buf;
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
{ {
job_T *job = varp->vval.v_job; job_T *job = varp->vval.v_job;
char *status; char *status;
@@ -22738,7 +22710,7 @@ get_tv_string_buf_chk(typval_T *varp, char_u *buf)
#endif #endif
break; break;
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
{ {
channel_T *channel = varp->vval.v_channel; channel_T *channel = varp->vval.v_channel;
char *status = channel_status(channel); char *status = channel_status(channel);
@@ -23377,14 +23349,14 @@ copy_tv(typval_T *from, typval_T *to)
break; break;
#endif #endif
case VAR_JOB: case VAR_JOB:
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
to->vval.v_job = from->vval.v_job; to->vval.v_job = from->vval.v_job;
if (to->vval.v_job != NULL) if (to->vval.v_job != NULL)
++to->vval.v_job->jv_refcount; ++to->vval.v_job->jv_refcount;
break; break;
#endif #endif
case VAR_CHANNEL: case VAR_CHANNEL:
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
to->vval.v_channel = from->vval.v_channel; to->vval.v_channel = from->vval.v_channel;
if (to->vval.v_channel != NULL) if (to->vval.v_channel != NULL)
++to->vval.v_channel->ch_refcount; ++to->vval.v_channel->ch_refcount;

View File

@@ -1250,15 +1250,8 @@
/* /*
* The +channel feature requires +eval. * The +channel feature requires +eval.
*/ */
#if !defined(FEAT_EVAL) && defined(FEAT_CHANNEL) #if !defined(FEAT_EVAL) && defined(FEAT_JOB_CHANNEL)
# undef FEAT_CHANNEL # undef FEAT_JOB_CHANNEL
#endif
/*
* The +job feature requires +eval and Unix or MS-Windows.
*/
#if (defined(UNIX) || defined(WIN32)) && defined(FEAT_EVAL)
# define FEAT_JOB
#endif #endif
/* /*

View File

@@ -4949,7 +4949,7 @@ ex_gui(exarg_T *eap)
* of the argument ending up after the shell prompt. */ * of the argument ending up after the shell prompt. */
msg_clr_eos_force(); msg_clr_eos_force();
gui_start(); gui_start();
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
channel_gui_register_all(); channel_gui_register_all();
#endif #endif
} }

View File

@@ -317,7 +317,7 @@
# define PLINES_NOFILL(x) plines(x) # define PLINES_NOFILL(x) plines(x)
#endif #endif
#if defined(FEAT_CHANNEL) || defined(FEAT_JOB) || defined(FEAT_CLIENTSERVER) #if defined(FEAT_JOB_CHANNEL) || defined(FEAT_CLIENTSERVER)
# define MESSAGE_QUEUE # define MESSAGE_QUEUE
#endif #endif

View File

@@ -1488,7 +1488,7 @@ getout(int exitval)
windgoto((int)Rows - 1, 0); windgoto((int)Rows - 1, 0);
#endif #endif
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
job_stop_on_exit(); job_stop_on_exit();
#endif #endif
#ifdef FEAT_LUA #ifdef FEAT_LUA

View File

@@ -3059,7 +3059,7 @@ ml_append_int(
(char_u *)"\n", 1); (char_u *)"\n", 1);
} }
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
if (buf->b_write_to_channel) if (buf->b_write_to_channel)
channel_write_new_lines(buf); channel_write_new_lines(buf);
#endif #endif

View File

@@ -1127,7 +1127,7 @@ free_all_mem(void)
# ifdef FEAT_DIFF # ifdef FEAT_DIFF
diff_clear(curtab); diff_clear(curtab);
# endif # endif
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
channel_free_all(); channel_free_all();
# endif # endif
clear_sb_text(); /* free any scrollback text */ clear_sb_text(); /* free any scrollback text */
@@ -6221,7 +6221,7 @@ has_non_ascii(char_u *s)
parse_queued_messages(void) parse_queued_messages(void)
{ {
/* For Win32 mch_breakcheck() does not check for input, do it here. */ /* For Win32 mch_breakcheck() does not check for input, do it here. */
# if defined(WIN32) && defined(FEAT_CHANNEL) # if defined(WIN32) && defined(FEAT_JOB_CHANNEL)
channel_handle_events(); channel_handle_events();
# endif # endif
@@ -6229,7 +6229,7 @@ parse_queued_messages(void)
/* Process the queued netbeans messages. */ /* Process the queued netbeans messages. */
netbeans_parse_messages(); netbeans_parse_messages();
# endif # endif
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
/* Process the messages queued on channels. */ /* Process the messages queued on channels. */
channel_parse_messages(); channel_parse_messages();
# endif # endif
@@ -6237,7 +6237,7 @@ parse_queued_messages(void)
/* Process the queued clientserver messages. */ /* Process the queued clientserver messages. */
server_parse_messages(); server_parse_messages();
# endif # endif
# ifdef FEAT_JOB # ifdef FEAT_JOB_CHANNEL
/* Check if any jobs have ended. */ /* Check if any jobs have ended. */
job_check_ended(); job_check_ended();
# endif # endif

View File

@@ -144,7 +144,7 @@ extern HWND s_hwnd;
static HWND s_hwnd = 0; /* console window handle, set by GetConsoleHwnd() */ static HWND s_hwnd = 0; /* console window handle, set by GetConsoleHwnd() */
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
int WSInitialized = FALSE; /* WinSock is initialized */ int WSInitialized = FALSE; /* WinSock is initialized */
#endif #endif
@@ -216,7 +216,7 @@ mch_exit(int r)
# ifdef FEAT_OLE # ifdef FEAT_OLE
UninitOLE(); UninitOLE();
# endif # endif
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
if (WSInitialized) if (WSInitialized)
{ {
WSInitialized = FALSE; WSInitialized = FALSE;
@@ -3018,7 +3018,7 @@ theend:
#endif /* defined(FEAT_GUI) || defined(FEAT_PRINTER) */ #endif /* defined(FEAT_GUI) || defined(FEAT_PRINTER) */
#if defined(FEAT_CHANNEL) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
/* /*
* Initialize the Winsock dll. * Initialize the Winsock dll.
*/ */

View File

@@ -3919,7 +3919,7 @@ wait4pid(pid_t child, waitstatus *status)
return wait_pid; return wait_pid;
} }
#if defined(FEAT_JOB) || !defined(USE_SYSTEM) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || !defined(USE_SYSTEM) || defined(PROTO)
/* /*
* Parse "cmd" and put the white-separated parts in "argv". * Parse "cmd" and put the white-separated parts in "argv".
* "argv" is an allocated array with "argc" entries. * "argv" is an allocated array with "argc" entries.
@@ -3984,7 +3984,7 @@ mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc)
} }
#endif #endif
#if !defined(USE_SYSTEM) || defined(FEAT_JOB) #if !defined(USE_SYSTEM) || defined(FEAT_JOB_CHANNEL)
static void static void
set_child_environment(void) set_child_environment(void)
{ {
@@ -5035,12 +5035,11 @@ error:
#endif /* USE_SYSTEM */ #endif /* USE_SYSTEM */
} }
#if defined(FEAT_JOB) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
void void
mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED) mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
{ {
pid_t pid; pid_t pid;
# ifdef FEAT_CHANNEL
int fd_in[2]; /* for stdin */ int fd_in[2]; /* for stdin */
int fd_out[2]; /* for stdout */ int fd_out[2]; /* for stdout */
int fd_err[2]; /* for stderr */ int fd_err[2]; /* for stderr */
@@ -5122,7 +5121,6 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
if (channel == NULL) if (channel == NULL)
goto failed; goto failed;
} }
# endif
pid = fork(); /* maybe we should use vfork() */ pid = fork(); /* maybe we should use vfork() */
if (pid == -1) if (pid == -1)
@@ -5133,9 +5131,7 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
if (pid == 0) if (pid == 0)
{ {
# ifdef FEAT_CHANNEL
int null_fd = -1; int null_fd = -1;
# endif
/* child */ /* child */
reset_signals(); /* handle signals normally */ reset_signals(); /* handle signals normally */
@@ -5149,8 +5145,6 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
set_child_environment(); set_child_environment();
/* TODO: re-enable this when pipes connect without a channel */
# ifdef FEAT_CHANNEL
if (use_null_for_in || use_null_for_out || use_null_for_err) if (use_null_for_in || use_null_for_out || use_null_for_err)
null_fd = open("/dev/null", O_RDWR | O_EXTRA, 0); null_fd = open("/dev/null", O_RDWR | O_EXTRA, 0);
@@ -5205,7 +5199,6 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
} }
if (null_fd >= 0) if (null_fd >= 0)
close(null_fd); close(null_fd);
# endif
/* See above for type of argv. */ /* See above for type of argv. */
execvp(argv[0], argv); execvp(argv[0], argv);
@@ -5217,11 +5210,8 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
/* parent */ /* parent */
job->jv_pid = pid; job->jv_pid = pid;
job->jv_status = JOB_STARTED; job->jv_status = JOB_STARTED;
# ifdef FEAT_CHANNEL
job->jv_channel = channel; /* ch_refcount was set above */ job->jv_channel = channel; /* ch_refcount was set above */
# endif
# ifdef FEAT_CHANNEL
/* child stdin, stdout and stderr */ /* child stdin, stdout and stderr */
if (!use_file_for_in) if (!use_file_for_in)
close(fd_in[0]); close(fd_in[0]);
@@ -5240,13 +5230,11 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
? INVALID_FD : fd_err[0]); ? INVALID_FD : fd_err[0]);
channel_set_job(channel, job, options); channel_set_job(channel, job, options);
} }
# endif
/* success! */ /* success! */
return; return;
failed: ; failed:
# ifdef FEAT_CHANNEL
channel_unref(channel); channel_unref(channel);
if (fd_in[0] >= 0) if (fd_in[0] >= 0)
close(fd_in[0]); close(fd_in[0]);
@@ -5260,7 +5248,6 @@ failed: ;
close(fd_err[0]); close(fd_err[0]);
if (fd_err[1] >= 0) if (fd_err[1] >= 0)
close(fd_err[1]); close(fd_err[1]);
# endif
} }
char * char *
@@ -5560,7 +5547,7 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED)
nfd++; nfd++;
} }
# endif # endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
nfd = channel_poll_setup(nfd, &fds); nfd = channel_poll_setup(nfd, &fds);
#endif #endif
@@ -5608,7 +5595,7 @@ RealWaitForChar(int fd, long msec, int *check_for_gpm UNUSED)
finished = FALSE; /* Try again */ finished = FALSE; /* Try again */
} }
# endif # endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
if (ret > 0) if (ret > 0)
ret = channel_poll_check(ret, &fds); ret = channel_poll_check(ret, &fds);
#endif #endif
@@ -5690,7 +5677,7 @@ select_eintr:
maxfd = xsmp_icefd; maxfd = xsmp_icefd;
} }
# endif # endif
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
maxfd = channel_select_setup(maxfd, &rfds); maxfd = channel_select_setup(maxfd, &rfds);
# endif # endif
@@ -5772,7 +5759,7 @@ select_eintr:
} }
} }
# endif # endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
if (ret > 0) if (ret > 0)
ret = channel_select_check(ret, &rfds); ret = channel_select_check(ret, &rfds);
#endif #endif

View File

@@ -1492,7 +1492,7 @@ WaitForChar(long msec)
{ {
DWORD dwWaitTime = dwEndTime - dwNow; DWORD dwWaitTime = dwEndTime - dwNow;
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
/* Check channel while waiting input. */ /* Check channel while waiting input. */
if (dwWaitTime > 100) if (dwWaitTime > 100)
dwWaitTime = 100; dwWaitTime = 100;
@@ -4991,7 +4991,7 @@ mch_call_shell(
return x; return x;
} }
#if defined(FEAT_JOB) || defined(PROTO) #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
static HANDLE static HANDLE
job_io_file_open( job_io_file_open(
char_u *fname, char_u *fname,
@@ -5033,7 +5033,6 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
STARTUPINFO si; STARTUPINFO si;
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
HANDLE jo; HANDLE jo;
# ifdef FEAT_CHANNEL
SECURITY_ATTRIBUTES saAttr; SECURITY_ATTRIBUTES saAttr;
channel_T *channel = NULL; channel_T *channel = NULL;
HANDLE ifd[2]; HANDLE ifd[2];
@@ -5057,7 +5056,6 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
ofd[1] = INVALID_HANDLE_VALUE; ofd[1] = INVALID_HANDLE_VALUE;
efd[0] = INVALID_HANDLE_VALUE; efd[0] = INVALID_HANDLE_VALUE;
efd[1] = INVALID_HANDLE_VALUE; efd[1] = INVALID_HANDLE_VALUE;
# endif
jo = CreateJobObject(NULL, NULL); jo = CreateJobObject(NULL, NULL);
if (jo == NULL) if (jo == NULL)
@@ -5072,7 +5070,6 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
si.dwFlags |= STARTF_USESHOWWINDOW; si.dwFlags |= STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE; si.wShowWindow = SW_HIDE;
# ifdef FEAT_CHANNEL
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle = TRUE; saAttr.bInheritHandle = TRUE;
saAttr.lpSecurityDescriptor = NULL; saAttr.lpSecurityDescriptor = NULL;
@@ -5149,7 +5146,6 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
if (channel == NULL) if (channel == NULL)
goto failed; goto failed;
} }
# endif
if (!vim_create_process(cmd, TRUE, if (!vim_create_process(cmd, TRUE,
CREATE_SUSPENDED | CREATE_SUSPENDED |
@@ -5176,7 +5172,6 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
job->jv_job_object = jo; job->jv_job_object = jo;
job->jv_status = JOB_STARTED; job->jv_status = JOB_STARTED;
# ifdef FEAT_CHANNEL
if (!use_file_for_in) if (!use_file_for_in)
CloseHandle(ifd[0]); CloseHandle(ifd[0]);
if (!use_file_for_out) if (!use_file_for_out)
@@ -5196,11 +5191,9 @@ mch_start_job(char *cmd, job_T *job, jobopt_T *options)
? INVALID_FD : (sock_T)efd[0]); ? INVALID_FD : (sock_T)efd[0]);
channel_set_job(channel, job, options); channel_set_job(channel, job, options);
} }
# endif
return; return;
failed: failed:
# ifdef FEAT_CHANNEL
CloseHandle(ifd[0]); CloseHandle(ifd[0]);
CloseHandle(ofd[0]); CloseHandle(ofd[0]);
CloseHandle(efd[0]); CloseHandle(efd[0]);
@@ -5208,9 +5201,6 @@ failed:
CloseHandle(ofd[1]); CloseHandle(ofd[1]);
CloseHandle(efd[1]); CloseHandle(efd[1]);
channel_unref(channel); channel_unref(channel);
# else
; /* make compiler happy */
# endif
} }
char * char *

View File

@@ -193,7 +193,7 @@ void qsort(void *base, size_t elm_count, size_t elm_size, int (*cmp)(const void
# ifdef FEAT_NETBEANS_INTG # ifdef FEAT_NETBEANS_INTG
# include "netbeans.pro" # include "netbeans.pro"
# endif # endif
# ifdef FEAT_CHANNEL # ifdef FEAT_JOB_CHANNEL
# include "channel.pro" # include "channel.pro"
# endif # endif

View File

@@ -1147,10 +1147,8 @@ typedef struct
char_u *v_string; /* string value (can be NULL!) */ char_u *v_string; /* string value (can be NULL!) */
list_T *v_list; /* list value (can be NULL!) */ list_T *v_list; /* list value (can be NULL!) */
dict_T *v_dict; /* dict value (can be NULL!) */ dict_T *v_dict; /* dict value (can be NULL!) */
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
job_T *v_job; /* job value (can be NULL!) */ job_T *v_job; /* job value (can be NULL!) */
#endif
#ifdef FEAT_CHANNEL
channel_T *v_channel; /* channel value (can be NULL!) */ channel_T *v_channel; /* channel value (can be NULL!) */
#endif #endif
} vval; } vval;
@@ -1312,8 +1310,7 @@ typedef enum
#define PART_SOCK 0 #define PART_SOCK 0
#define CH_SOCK_FD ch_part[PART_SOCK].ch_fd #define CH_SOCK_FD ch_part[PART_SOCK].ch_fd
#if defined(UNIX) || defined(WIN32) #ifdef FEAT_JOB_CHANNEL
# define CHANNEL_PIPES
# define INVALID_FD (-1) # define INVALID_FD (-1)
# define PART_OUT 1 # define PART_OUT 1
@@ -2057,7 +2054,7 @@ struct file_buffer
int b_netbeans_file; /* TRUE when buffer is owned by NetBeans */ int b_netbeans_file; /* TRUE when buffer is owned by NetBeans */
int b_was_netbeans_file;/* TRUE if b_netbeans_file was once set */ int b_was_netbeans_file;/* TRUE if b_netbeans_file was once set */
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
int b_write_to_channel; /* TRUE when appended lines are written to int b_write_to_channel; /* TRUE when appended lines are written to
* a channel. */ * a channel. */
#endif #endif

View File

@@ -1531,7 +1531,7 @@ clip_gen_owner_exists(VimClipboard *cbd UNUSED)
* descriptions which would otherwise overflow. The buffer is considered full * descriptions which would otherwise overflow. The buffer is considered full
* when only this extra space (or part of it) remains. * when only this extra space (or part of it) remains.
*/ */
#if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_CHANNEL) \ #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_JOB_CHANNEL) \
|| defined(FEAT_CLIENTSERVER) || defined(FEAT_CLIENTSERVER)
/* /*
* Sun WorkShop and NetBeans stuff debugger commands into the input buffer. * Sun WorkShop and NetBeans stuff debugger commands into the input buffer.

View File

@@ -106,7 +106,7 @@ static char *(features[]) =
#else #else
"-byte_offset", "-byte_offset",
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
"+channel", "+channel",
#else #else
"-channel", "-channel",
@@ -289,7 +289,7 @@ static char *(features[]) =
#else #else
"-insert_expand", "-insert_expand",
#endif #endif
#ifdef FEAT_JOB #ifdef FEAT_JOB_CHANNEL
"+job", "+job",
#else #else
"-job", "-job",
@@ -743,6 +743,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1537,
/**/ /**/
1536, 1536,
/**/ /**/

View File

@@ -2273,7 +2273,7 @@ typedef int VimClipboard; /* This is required for the prototypes. */
# define SET_NO_HLSEARCH(flag) no_hlsearch = (flag) # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag)
#endif #endif
#ifdef FEAT_CHANNEL #ifdef FEAT_JOB_CHANNEL
# define MAX_OPEN_CHANNELS 10 # define MAX_OPEN_CHANNELS 10
#else #else
# define MAX_OPEN_CHANNELS 0 # define MAX_OPEN_CHANNELS 0