{
struct grub_term_output *cur;
int desclen = grub_strlen (cmd->summary);
- for (cur = grub_term_outputs; cur; cur = cur->next)
- {
- if (!grub_term_is_active (cur))
- continue;
- int width = grub_term_width(cur);
- char description[width / 2];
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ {
+ int width = grub_term_width(cur);
+ char description[width / 2];
- /* Make a string with a length of GRUB_TERM_WIDTH / 2 - 1 filled
- with the description followed by spaces. */
- grub_memset (description, ' ', width / 2 - 1);
- description[width / 2 - 1] = '\0';
- grub_memcpy (description, cmd->summary,
- (desclen < width / 2 - 1
- ? desclen : width / 2 - 1));
- grub_puts_terminal (description, cur);
- }
+ /* Make a string with a length of GRUB_TERM_WIDTH / 2 - 1 filled
+ with the description followed by spaces. */
+ grub_memset (description, ' ', width / 2 - 1);
+ description[width / 2 - 1] = '\0';
+ grub_memcpy (description, cmd->summary,
+ (desclen < width / 2 - 1
+ ? desclen : width / 2 - 1));
+ grub_puts_terminal (description, cur);
+ }
if ((cnt++) % 2)
grub_printf ("\n");
else
}
if (argc == 0)
- grub_command_iterate (print_command_info);
+ {
+ grub_command_iterate (print_command_info);
+ if (!(cnt % 2))
+ grub_printf ("\n");
+ }
else
{
int i;
}
#define FOR_ACTIVE_TERM_INPUTS(var) for (var = grub_term_inputs; var; var = var->next)
+#define FOR_ACTIVE_TERM_OUTPUTS(var) for (var = grub_term_outputs; var; var = var->next) if (grub_term_is_active (var))
void EXPORT_FUNC(grub_putchar) (int c);
void EXPORT_FUNC(grub_putcode) (grub_uint32_t code,
{
struct grub_term_output *term;
size = 0;
- for (term = grub_term_outputs; term; term = term->next)
- if (grub_term_is_active (term))
- grub_putcode (code, term);
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ grub_putcode (code, term);
}
if (ret == '\n' && grub_newline_hook)
grub_newline_hook ();
grub_cls (void)
{
struct grub_term_output *term;
-
- for (term = grub_term_outputs; term; term = term->next)
- {
- if (! grub_term_is_active (term))
- continue;
-
- if ((term->flags & GRUB_TERM_DUMB) || (grub_env_get ("debug")))
- {
- grub_putcode ('\n', term);
- grub_refresh ();
- }
- else
- (term->cls) ();
- }
+
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ {
+ if ((term->flags & GRUB_TERM_DUMB) || (grub_env_get ("debug")))
+ {
+ grub_putcode ('\n', term);
+ grub_refresh ();
+ }
+ else
+ (term->cls) ();
+ }
}
void
{
struct grub_term_output *term;
- for (term = grub_term_outputs; term; term = term->next)
- if (grub_term_is_active (term))
- grub_term_setcolorstate (term, state);
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ grub_term_setcolorstate (term, state);
}
void
{
struct grub_term_output *term;
- for (term = grub_term_outputs; term; term = term->next)
- if (grub_term_is_active (term))
- grub_term_refresh (term);
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ grub_term_refresh (term);
}
struct cmdline_term *cl_term_cur;
struct grub_term_output *cur;
nterms = 0;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active (cur))
- nterms++;
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ nterms++;
cl_terms = grub_malloc (sizeof (cl_terms[0]) * nterms);
if (!cl_terms)
return 0;
cl_term_cur = cl_terms;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active (cur))
- {
- cl_term_cur->term = cur;
- init_clterm (cl_term_cur);
- cl_term_cur++;
- }
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ {
+ cl_term_cur->term = cur;
+ init_clterm (cl_term_cur);
+ cl_term_cur++;
+ }
}
if (hist_used == 0)
{
struct grub_term_output *term;
- for (term = grub_term_outputs; term; term = term->next)
- {
- if (! grub_term_is_active (term))
- continue;
-
- /* Reloads terminal `normal' and `highlight' colors. */
- grub_term_setcolor (term, color_normal, color_highlight);
-
- /* Propagates `normal' color to terminal current color. */
- grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL);
- }
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ {
+ /* Reloads terminal `normal' and `highlight' colors. */
+ grub_term_setcolor (term, color_normal, color_highlight);
+
+ /* Propagates `normal' color to terminal current color. */
+ grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL);
+ }
}
/* Replace default `normal' colors with the ones specified by user (if any). */
grub_sprintf (msg_formatted, msg, reader_nested ? msg_esc : "");
- for (term = grub_term_outputs; term; term = term->next)
- {
- if (! (term->flags & GRUB_TERM_ACTIVE))
- continue;
- grub_normal_init_page (term);
- grub_term_setcursor (term, 1);
-
- grub_print_message_indented (msg_formatted, 3, STANDARD_MARGIN, term);
- grub_puts ("\n");
- }
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ {
+ grub_normal_init_page (term);
+ grub_term_setcursor (term, 1);
+
+ grub_print_message_indented (msg_formatted, 3, STANDARD_MARGIN, term);
+ grub_puts ("\n");
+ }
grub_free (msg_formatted);
return 0;
struct grub_menu_viewer *instance;
struct grub_term_output *term;
- for (term = grub_term_outputs; term; term = term->next)
- {
- if (!grub_term_is_active (term))
+ FOR_ACTIVE_TERM_OUTPUTS(term)
+ {
+ instance = grub_zalloc (sizeof (*instance));
+ if (!instance)
+ {
+ grub_print_error ();
+ grub_errno = GRUB_ERR_NONE;
continue;
- instance = grub_zalloc (sizeof (*instance));
- if (!instance)
- {
- grub_print_error ();
- grub_errno = GRUB_ERR_NONE;
- continue;
- }
- data = grub_zalloc (sizeof (*data));
- if (!data)
- {
- grub_free (instance);
- grub_print_error ();
- grub_errno = GRUB_ERR_NONE;
- continue;
- }
- data->term = term;
- instance->data = data;
- instance->set_chosen_entry = menu_text_set_chosen_entry;
- instance->print_timeout = menu_text_print_timeout;
- instance->clear_timeout = menu_text_clear_timeout;
- instance->fini = menu_text_fini;
-
- data->menu = menu;
-
- data->offset = entry;
- data->first = 0;
- if (data->offset > grub_term_num_entries (data->term) - 1)
- {
- data->first = data->offset - (grub_term_num_entries (data->term) - 1);
- data->offset = grub_term_num_entries (data->term) - 1;
- }
-
- grub_term_setcursor (data->term, 0);
- grub_menu_init_page (nested, 0, data->term);
- print_entries (menu, data->first, data->offset, data->term);
- grub_term_refresh (data->term);
- }
+ }
+ data = grub_zalloc (sizeof (*data));
+ if (!data)
+ {
+ grub_free (instance);
+ grub_print_error ();
+ grub_errno = GRUB_ERR_NONE;
+ continue;
+ }
+ data->term = term;
+ instance->data = data;
+ instance->set_chosen_entry = menu_text_set_chosen_entry;
+ instance->print_timeout = menu_text_print_timeout;
+ instance->clear_timeout = menu_text_clear_timeout;
+ instance->fini = menu_text_fini;
+
+ data->menu = menu;
+
+ data->offset = entry;
+ data->first = 0;
+ if (data->offset > grub_term_num_entries (data->term) - 1)
+ {
+ data->first = data->offset - (grub_term_num_entries (data->term) - 1);
+ data->offset = grub_term_num_entries (data->term) - 1;
+ }
+
+ grub_term_setcursor (data->term, 0);
+ grub_menu_init_page (nested, 0, data->term);
+ print_entries (menu, data->first, data->offset, data->term);
+ grub_term_refresh (data->term);
+ }
}
struct grub_term_output *cur;
unsigned height = -1;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active(cur) && grub_term_height (cur) < height)
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ if (grub_term_height (cur) < height)
height = grub_term_height (cur);
grub_more_lines++;
unsigned cnt = 0;
grub_uint16_t *ret, *ptr;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active (cur))
- cnt++;
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ cnt++;
ret = grub_malloc (cnt * sizeof (ret[0]));
if (!ret)
return NULL;
ptr = ret;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active (cur))
- *ptr++ = grub_term_getxy (cur);
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ *ptr++ = grub_term_getxy (cur);
return ret;
}
if (!pos)
return;
- for (cur = grub_term_outputs; cur; cur = cur->next)
- if (grub_term_is_active (cur))
- {
- grub_term_gotoxy (cur, (*ptr & 0xff00) >> 8, *ptr & 0xff);
- ptr++;
- }
+ FOR_ACTIVE_TERM_OUTPUTS(cur)
+ {
+ grub_term_gotoxy (cur, (*ptr & 0xff00) >> 8, *ptr & 0xff);
+ ptr++;
+ }
}