summaryrefslogtreecommitdiffstats
path: root/src/channel.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-02 18:50:46 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-02 18:50:46 +0200
commitaeea72151c31d686bcbb7b06d895006d7363585c (patch)
tree500d487503a1a82cecc8f2a3e9bf89b50638fe5a /src/channel.c
parentf10806b25090879fdc1a86cc0da2f4f34fd21921 (diff)
patch 8.2.0500: using the same loop in many placesv8.2.0500
Problem: Using the same loop in many places. Solution: Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339)
Diffstat (limited to 'src/channel.c')
-rw-r--r--src/channel.c51
1 files changed, 28 insertions, 23 deletions
diff --git a/src/channel.c b/src/channel.c
index 4db40c9ddc..1dfb28f854 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -61,6 +61,12 @@ static ch_part_T channel_part_send(channel_T *channel);
static ch_part_T channel_part_read(channel_T *channel);
static void free_job_options(jobopt_T *opt);
+#define FOR_ALL_CHANNELS(ch) \
+ for ((ch) = first_channel; (ch) != NULL; (ch) = (ch)->ch_next)
+
+#define FOR_ALL_JOBS(job) \
+ for ((job) = first_job; (job) != NULL; (job) = (job)->jv_next)
+
// Whether a redraw is needed for appending a line to a buffer.
static int channel_need_redraw = FALSE;
@@ -476,7 +482,7 @@ free_unused_channels_contents(int copyID, int mask)
// point.
++safe_to_invoke_callback;
- for (ch = first_channel; ch != NULL; ch = ch->ch_next)
+ FOR_ALL_CHANNELS(ch)
if (!channel_still_useful(ch)
&& (ch->ch_copyID & mask) != (copyID & mask))
{
@@ -520,8 +526,7 @@ channel_fd2channel(sock_T fd, ch_part_T *partp)
ch_part_T part;
if (fd != INVALID_FD)
- for (channel = first_channel; channel != NULL;
- channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
for (part = PART_SOCK; part < PART_IN; ++part)
if (channel->ch_part[part].ch_fd == fd)
@@ -662,7 +667,7 @@ channel_gui_register_all(void)
{
channel_T *channel;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
channel_gui_register(channel);
}
@@ -1569,7 +1574,7 @@ channel_buffer_free(buf_T *buf)
channel_T *channel;
ch_part_T part;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
for (part = PART_SOCK; part < PART_COUNT; ++part)
{
chanpart_T *ch_part = &channel->ch_part[part];
@@ -1610,7 +1615,7 @@ channel_write_any_lines(void)
{
channel_T *channel;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
channel_write_input(channel);
}
@@ -1625,7 +1630,7 @@ channel_write_new_lines(buf_T *buf)
// There could be more than one channel for the buffer, loop over all of
// them.
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
chanpart_T *in_part = &channel->ch_part[PART_IN];
linenr_T lnum;
@@ -2604,7 +2609,7 @@ append_to_buffer(buf_T *buffer, char_u *msg, channel_T *channel, ch_part_T part)
// Find channels reading from this buffer and adjust their
// next-to-read line number.
buffer->b_write_to_channel = TRUE;
- for (ch = first_channel; ch != NULL; ch = ch->ch_next)
+ FOR_ALL_CHANNELS(ch)
{
chanpart_T *in_part = &ch->ch_part[PART_IN];
@@ -3180,7 +3185,7 @@ channel_free_all(void)
channel_T *channel;
ch_log(NULL, "channel_free_all()");
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
channel_clear(channel);
}
#endif
@@ -3202,7 +3207,7 @@ channel_fill_wfds(int maxfd_arg, fd_set *wfds)
int maxfd = maxfd_arg;
channel_T *ch;
- for (ch = first_channel; ch != NULL; ch = ch->ch_next)
+ FOR_ALL_CHANNELS(ch)
{
chanpart_T *in_part = &ch->ch_part[PART_IN];
@@ -3227,7 +3232,7 @@ channel_fill_poll_write(int nfd_in, struct pollfd *fds)
int nfd = nfd_in;
channel_T *ch;
- for (ch = first_channel; ch != NULL; ch = ch->ch_next)
+ FOR_ALL_CHANNELS(ch)
{
chanpart_T *in_part = &ch->ch_part[PART_IN];
@@ -3821,7 +3826,7 @@ channel_handle_events(int only_keep_open)
ch_part_T part;
sock_T fd;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
if (only_keep_open && !channel->ch_keep_open)
continue;
@@ -3854,7 +3859,7 @@ channel_any_keep_open()
{
channel_T *channel;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
if (channel->ch_keep_open)
return TRUE;
return FALSE;
@@ -4234,7 +4239,7 @@ channel_poll_setup(int nfd_in, void *fds_in, int *towait)
struct pollfd *fds = fds_in;
ch_part_T part;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
for (part = PART_SOCK; part < PART_IN; ++part)
{
@@ -4281,7 +4286,7 @@ channel_poll_check(int ret_in, void *fds_in)
int idx;
chanpart_T *in_part;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
for (part = PART_SOCK; part < PART_IN; ++part)
{
@@ -4332,7 +4337,7 @@ channel_select_setup(
fd_set *wfds = wfds_in;
ch_part_T part;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
for (part = PART_SOCK; part < PART_IN; ++part)
{
@@ -4381,7 +4386,7 @@ channel_select_check(int ret_in, void *rfds_in, void *wfds_in)
ch_part_T part;
chanpart_T *in_part;
- for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+ FOR_ALL_CHANNELS(channel)
{
for (part = PART_SOCK; part < PART_IN; ++part)
{
@@ -5471,7 +5476,7 @@ job_any_running()
{
job_T *job;
- for (job = first_job; job != NULL; job = job->jv_next)
+ FOR_ALL_JOBS(job)
if (job_still_useful(job))
{
ch_log(NULL, "GUI not forking because a job is running");
@@ -5570,7 +5575,7 @@ win32_build_cmd(list_T *l, garray_T *gap)
char_u *s;
range_list_materialize(l);
- for (li = l->lv_first; li != NULL; li = li->li_next)
+ FOR_ALL_LIST_ITEMS(l, li)
{
s = tv_get_string_chk(&li->li_tv);
if (s == NULL)
@@ -5695,7 +5700,7 @@ free_unused_jobs_contents(int copyID, int mask)
int did_free = FALSE;
job_T *job;
- for (job = first_job; job != NULL; job = job->jv_next)
+ FOR_ALL_JOBS(job)
if ((job->jv_copyID & mask) != (copyID & mask)
&& !job_still_useful(job))
{
@@ -5781,7 +5786,7 @@ job_stop_on_exit(void)
{
job_T *job;
- for (job = first_job; job != NULL; job = job->jv_next)
+ FOR_ALL_JOBS(job)
if (job->jv_status == JOB_STARTED && job->jv_stoponexit != NULL)
mch_signal_job(job, job->jv_stoponexit);
}
@@ -5795,7 +5800,7 @@ has_pending_job(void)
{
job_T *job;
- for (job = first_job; job != NULL; job = job->jv_next)
+ FOR_ALL_JOBS(job)
// Only should check if the channel has been closed, if the channel is
// open the job won't exit.
if ((job->jv_status == JOB_STARTED && !job_channel_still_useful(job))
@@ -6589,7 +6594,7 @@ job_info_all(list_T *l)
job_T *job;
typval_T tv;
- for (job = first_job; job != NULL; job = job->jv_next)
+ FOR_ALL_JOBS(job)
{
tv.v_type = VAR_JOB;
tv.vval.v_job = job;