patch 8.2.0500: using the same loop in many places

Problem:    Using the same loop in many places.
Solution:   Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339)
diff --git a/src/channel.c b/src/channel.c
index 4db40c9..1dfb28f 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -61,6 +61,12 @@
 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 @@
     // 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 @@
     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_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_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_T	*channel;
 
-    for (channel = first_channel; channel != NULL; channel = channel->ch_next)
+    FOR_ALL_CHANNELS(channel)
 	channel_write_input(channel);
 }
 
@@ -1625,7 +1630,7 @@
 
     // 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 @@
 	// 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_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 @@
     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 @@
     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 @@
     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_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 @@
     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 @@
     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 @@
     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 @@
     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_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 @@
     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 @@
     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_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 @@
 {
     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_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;