* grub-core/kern/env.c, include/grub/env.h: Change iterator through
all vars to a macro. All users updated.
This commit is contained in:
parent
e42b251403
commit
3188131f72
7 changed files with 126 additions and 166 deletions
|
@ -166,11 +166,10 @@ grub_env_unset (const char *name)
|
|||
grub_free (var);
|
||||
}
|
||||
|
||||
void
|
||||
grub_env_iterate (int (*func) (struct grub_env_var *var))
|
||||
struct grub_env_var *
|
||||
grub_env_update_get_sorted (void)
|
||||
{
|
||||
struct grub_env_sorted_var *sorted_list = 0;
|
||||
struct grub_env_sorted_var *sorted_var;
|
||||
struct grub_env_var *sorted_list = 0;
|
||||
int i;
|
||||
|
||||
/* Add variables associated with this context into a sorted list. */
|
||||
|
@ -180,40 +179,20 @@ grub_env_iterate (int (*func) (struct grub_env_var *var))
|
|||
|
||||
for (var = grub_current_context->vars[i]; var; var = var->next)
|
||||
{
|
||||
struct grub_env_sorted_var *p, **q;
|
||||
struct grub_env_var *p, **q;
|
||||
|
||||
sorted_var = grub_malloc (sizeof (*sorted_var));
|
||||
if (! sorted_var)
|
||||
goto fail;
|
||||
|
||||
sorted_var->var = var;
|
||||
|
||||
for (q = &sorted_list, p = *q; p; q = &((*q)->next), p = *q)
|
||||
for (q = &sorted_list, p = *q; p; q = &((*q)->sorted_next), p = *q)
|
||||
{
|
||||
if (grub_strcmp (p->var->name, var->name) > 0)
|
||||
if (grub_strcmp (p->name, var->name) > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
sorted_var->next = *q;
|
||||
*q = sorted_var;
|
||||
var->sorted_next = *q;
|
||||
*q = var;
|
||||
}
|
||||
}
|
||||
|
||||
/* Iterate FUNC on the sorted list. */
|
||||
for (sorted_var = sorted_list; sorted_var; sorted_var = sorted_var->next)
|
||||
if (func (sorted_var->var))
|
||||
break;
|
||||
|
||||
fail:
|
||||
|
||||
/* Free the sorted list. */
|
||||
for (sorted_var = sorted_list; sorted_var; )
|
||||
{
|
||||
struct grub_env_sorted_var *tmp = sorted_var->next;
|
||||
|
||||
grub_free (sorted_var);
|
||||
sorted_var = tmp;
|
||||
}
|
||||
return sorted_list;
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue