void
channel_free(channel_T *channel)
{
- channel_close(channel);
+ channel_close(channel, TRUE);
if (channel->ch_next != NULL)
channel->ch_next->ch_prev = channel->ch_prev;
if (channel->ch_prev == NULL)
* This does not trigger the close callback.
*/
void
-channel_close(channel_T *channel)
+channel_close(channel_T *channel, int invoke_close_cb)
{
ch_log(channel, "Closing channel");
}
#endif
- if (channel->ch_close_cb != NULL)
+ if (invoke_close_cb && channel->ch_close_cb != NULL)
{
typval_T argv[1];
typval_T rettv;
/* TODO: When reading from stdout is not possible, should we try to
* keep stdin and stderr open? Probably not, assume the other side
* has died. */
- channel_close(channel);
+ channel_close(channel, TRUE);
if (channel->ch_nb_close_cb != NULL)
(*channel->ch_nb_close_cb)();
channel_T *channel = get_channel_arg(&argvars[0]);
if (channel != NULL)
- channel_close(channel);
+ channel_close(channel, FALSE);
}
# ifdef FEAT_JOB
netbeans_send_disconnect();
if (nb_channel != NULL)
/* Close the socket and remove the input handlers. */
- channel_close(nb_channel);
+ channel_close(nb_channel, TRUE);
nb_channel = NULL;
}
int channel_can_write_to(channel_T *channel);
int channel_is_open(channel_T *channel);
char *channel_status(channel_T *channel);
-void channel_close(channel_T *channel);
+void channel_close(channel_T *channel, int invoke_close_cb);
char_u *channel_peek(channel_T *channel, int part);
void channel_clear(channel_T *channel);
void channel_free_all(void);