* 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:
Vladimir 'phcoder' Serbinenko 2013-03-03 01:34:27 +01:00
parent e42b251403
commit 3188131f72
7 changed files with 126 additions and 166 deletions

View file

@ -589,33 +589,7 @@ grub_freebsd_boot (void)
grub_err_t err;
grub_size_t tag_buf_len = 0;
auto int iterate_env (struct grub_env_var *var);
int iterate_env (struct grub_env_var *var)
{
if ((!grub_memcmp (var->name, "kFreeBSD.", sizeof("kFreeBSD.") - 1)) && (var->name[sizeof("kFreeBSD.") - 1]))
{
grub_strcpy ((char *) p, &var->name[sizeof("kFreeBSD.") - 1]);
p += grub_strlen ((char *) p);
*(p++) = '=';
grub_strcpy ((char *) p, var->value);
p += grub_strlen ((char *) p) + 1;
}
return 0;
}
auto int iterate_env_count (struct grub_env_var *var);
int iterate_env_count (struct grub_env_var *var)
{
if ((!grub_memcmp (var->name, "kFreeBSD.", sizeof("kFreeBSD.") - 1)) && (var->name[sizeof("kFreeBSD.") - 1]))
{
p_size += grub_strlen (&var->name[sizeof("kFreeBSD.") - 1]);
p_size++;
p_size += grub_strlen (var->value) + 1;
}
return 0;
}
struct grub_env_var *var;
grub_memset (&bi, 0, sizeof (bi));
bi.version = FREEBSD_BOOTINFO_VERSION;
@ -624,7 +598,13 @@ grub_freebsd_boot (void)
bi.boot_device = freebsd_biosdev;
p_size = 0;
grub_env_iterate (iterate_env_count);
FOR_SORTED_ENV (var)
if ((grub_memcmp (var->name, "kFreeBSD.", sizeof("kFreeBSD.") - 1) == 0) && (var->name[sizeof("kFreeBSD.") - 1]))
{
p_size += grub_strlen (&var->name[sizeof("kFreeBSD.") - 1]);
p_size++;
p_size += grub_strlen (var->value) + 1;
}
if (p_size)
p_size = ALIGN_PAGE (kern_end + p_size + 1) - kern_end;
@ -664,7 +644,15 @@ grub_freebsd_boot (void)
p0 = p;
kern_end += p_size;
grub_env_iterate (iterate_env);
FOR_SORTED_ENV (var)
if ((grub_memcmp (var->name, "kFreeBSD.", sizeof("kFreeBSD.") - 1) == 0) && (var->name[sizeof("kFreeBSD.") - 1]))
{
grub_strcpy ((char *) p, &var->name[sizeof("kFreeBSD.") - 1]);
p += grub_strlen ((char *) p);
*(p++) = '=';
grub_strcpy ((char *) p, var->value);
p += grub_strlen ((char *) p) + 1;
}
if (p != p0)
{

View file

@ -1332,8 +1332,8 @@ unescape (char *name, char *curdot, char *nextdot, int *len)
grub_err_t
grub_xnu_fill_devicetree (void)
{
auto int iterate_env (struct grub_env_var *var);
int iterate_env (struct grub_env_var *var)
struct grub_env_var *var;
FOR_SORTED_ENV (var)
{
char *nextdot = 0, *curdot;
struct grub_xnu_devtree_key **curkey = &grub_xnu_devtree_root;
@ -1343,7 +1343,7 @@ grub_xnu_fill_devicetree (void)
if (grub_memcmp (var->name, "XNU.DeviceTree.",
sizeof ("XNU.DeviceTree.") - 1) != 0)
return 0;
continue;
curdot = var->name + sizeof ("XNU.DeviceTree.") - 1;
nextdot = grub_strchr (curdot, '.');
@ -1354,7 +1354,7 @@ grub_xnu_fill_devicetree (void)
name = grub_realloc (name, nextdot - curdot + 1);
if (!name)
return 1;
return grub_errno;
unescape (name, curdot, nextdot, &len);
name[len - 1] = 0;
@ -1372,7 +1372,7 @@ grub_xnu_fill_devicetree (void)
name = grub_realloc (name, nextdot - curdot + 1);
if (!name)
return 1;
return grub_errno;
unescape (name, curdot, nextdot, &len);
name[len] = 0;
@ -1382,18 +1382,14 @@ grub_xnu_fill_devicetree (void)
data = grub_malloc (grub_strlen (var->value) + 1);
if (!data)
return 1;
return grub_errno;
unescape (data, var->value, var->value + grub_strlen (var->value),
&len);
curvalue->datasize = len;
curvalue->data = data;
return 0;
}
grub_env_iterate (iterate_env);
return grub_errno;
}