grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Save/Load environment variable support


From: Bean
Subject: Re: [PATCH] Save/Load environment variable support
Date: Sun, 15 Jun 2008 03:44:56 +0800

On Sun, Jun 15, 2008 at 3:30 AM, Robert Millan <address@hidden> wrote:
> On Fri, Jun 13, 2008 at 03:07:54PM +0800, Bean wrote:
>>  # Misc.
>> -pkglib_MODULES += gzio.mod elf.mod
>> +pkglib_MODULES += gzio.mod elf.mod findroot.mod
>>
>> [...]
>> +# For findroot.mod.
>> +findroot_mod_SOURCES = kern/findroot.c
>> +findroot_mod_CFLAGS = $(COMMON_CFLAGS)
>> +findroot_mod_LDFLAGS = $(COMMON_LDFLAGS)
>
> Some findroot bits were mixed up in the patch.

Oh, I forget to remove them.

>
>> +/* Names of important environment variables.  */
>> +#define GRUB_ENVBLK_RDIR     "rdir"
>> +#define GRUB_ENVBLK_UUID     "uuid"
>> +#define GRUB_ENVBLK_LABEL    "label"
>> +#define GRUB_ENVBLK_IDFILE   "idfile"
>
> I'd prefer if the envblk part was agnostic about which variables have a
> meaning.
>
>> +++ b/util/envblk.c
>> @@ -0,0 +1,171 @@
>> +/* envblk.c - Common function for environment block.  */
>> [...]
>> +
>> +#ifdef GRUB_UTIL
>
> Files that are meant to be used both by grub and util are usually put in
> the non-util dir (I'm not sure which non-util dir would fit, though, as it
> depends on what you want to do next).
>
>> +#include <string.h>
>> +
>> +#define grub_strlen  strlen
>> +#define grub_strcpy  strcpy
>> +#define grub_strchr  strchr
>> +#define grub_memcmp  memcmp
>> +#define grub_memcpy  memcpy
>
> Uhm can we avoid this?  The rest of non-util code just calls the grub_*
> functions (linking with kern/misc.c in this case).

I fount out that if I use grub_*, I end up adding quite a few of extra
modules that serve no purpose other than string manipulation. Perhaps
we should separate those routines from kern/misc.c ?

>
>> +grub_envblk_t
>> +grub_envblk_find (char *buf)
>> +{
>> +  grub_uint32_t *pd;
>> +  int len;
>> +
>> +  pd = (grub_uint32_t *) buf;
>> +
>> +  for (len = GRUB_ENVBLK_MAXLEN - 6; len > 0; len -= 4, pd++)
>> +    if (*pd == GRUB_ENVBLK_SIGNATURE)
>
> I wonder if this would be dangerous when run on files where env block
> presence is optional, like core.img (though we can always think about this
> later when that option is added).

Yes, perhaps we should store a pointer to environment block so that we
don't need to scan for it.

-- 
Bean




reply via email to

[Prev in Thread] Current Thread [Next in Thread]