]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/i386/pc/pxe.c (set_mac_env): Export variable.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 11 Jan 2011 10:51:05 +0000 (11:51 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 11 Jan 2011 10:51:05 +0000 (11:51 +0100)
(set_env_limn_ro): Likewise.
(GRUB_MOD_INIT): Likewise.
* grub-core/hook/datehook.c (GRUB_MOD_INIT): Likewise. Change to
ARRAY_SIZE while on it.
(GRUB_MOD_FINI): Change to ARRAY_SIZE.
* grub-core/normal/context.c (grub_env_export): Move from here ...
* grub-core/kern/env.c (grub_env_export): ... here.
* grub-core/normal/context.c (grub_cmd_export): Skip exporting root and
prefix.
* grub-core/kern/main.c (grub_main): Export root and prefix.
* include/grub/env.h (grub_env_export): Export.
Reported by: Seth Goldberg.

ChangeLog
grub-core/fs/i386/pc/pxe.c
grub-core/hook/datehook.c
grub-core/kern/env.c
grub-core/kern/main.c
grub-core/normal/context.c
include/grub/env.h

index 73571a549939887ee2f5c538896449221a7e522a..a4f7122fb5791cb8be8b4b4524f6d013107f00f8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2011-01-11  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/i386/pc/pxe.c (set_mac_env): Export variable.
+       (set_env_limn_ro): Likewise.
+       (GRUB_MOD_INIT): Likewise.
+       * grub-core/hook/datehook.c (GRUB_MOD_INIT): Likewise. Change to
+       ARRAY_SIZE while on it.
+       (GRUB_MOD_FINI): Change to ARRAY_SIZE.
+       * grub-core/normal/context.c (grub_env_export): Move from here ...
+       * grub-core/kern/env.c (grub_env_export): ... here.
+       * grub-core/normal/context.c (grub_cmd_export): Skip exporting root and
+       prefix.
+       * grub-core/kern/main.c (grub_main): Export root and prefix.
+       * include/grub/env.h (grub_env_export): Export.
+       Reported by: Seth Goldberg.
+
 2011-01-11  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi):
index cbb3c7d87edaf0fc19aef3c8c308ec01ff82ed2e..e2b53d637cc330d26dd2e44f336e7b53782a0865 100644 (file)
@@ -420,6 +420,7 @@ set_mac_env (grub_uint8_t *mac_addr, grub_size_t mac_len)
   grub_env_set ("net_pxe_mac", buf);
   /* XXX: Is it possible to change MAC in PXE?  */
   grub_register_variable_hook ("net_pxe_mac", 0, grub_env_write_readonly);
+  grub_env_export ("net_pxe_mac");
 }
 
 static void
@@ -431,6 +432,7 @@ set_env_limn_ro (const char *varname, char *value, grub_size_t len)
   grub_env_set (varname, value);
   value[len] = c;
   grub_register_variable_hook (varname, 0, grub_env_write_readonly);
+  grub_env_export (varname);
 }
 
 static void
@@ -624,12 +626,19 @@ GRUB_MOD_INIT(pxe)
                                   grub_env_write_pxe_default_server);
       grub_register_variable_hook ("pxe_default_gateway", 0,
                                   grub_env_write_pxe_default_gateway);
+      
 
       /* XXX: Is it possible to change IP in PXE?  */
       grub_register_variable_hook ("net_pxe_ip", 0,
                                   grub_env_write_readonly);
       grub_register_variable_hook ("pxe_blksize", 0,
                                   grub_env_write_pxe_blocksize);
+
+      grub_env_export ("pxe_default_server");
+      grub_env_export ("pxe_default_gateway");
+      grub_env_export ("net_pxe_ip");
+      grub_env_export ("pxe_blksize");
+
       grub_disk_dev_register (&grub_pxe_dev);
       grub_fs_register (&grub_pxefs_fs);
     }
index 9b5b54bf36f5c1d707cbed828ffa10b0a32b6228..d855311d3a86bdeafc38e65f62caaeaa5ed3848b 100644 (file)
@@ -86,18 +86,21 @@ grub_read_hook_datetime (struct grub_env_var *var,
 
 GRUB_MOD_INIT(datehook)
 {
-  int i;
+  unsigned i;
 
-  for (i = 0; i < 7; i++)
-    grub_register_variable_hook (grub_datetime_names[i],
-                                 grub_read_hook_datetime, 0);
+  for (i = 0; i < ARRAY_SIZE (grub_datetime_names); i++)
+    {
+      grub_register_variable_hook (grub_datetime_names[i],
+                                  grub_read_hook_datetime, 0);
+      grub_env_export (grub_datetime_names[i]);
+    }
 }
 
 GRUB_MOD_FINI(datehook)
 {
-  int i;
+  unsigned i;
 
-  for (i = 0; i < 7; i++)
+  for (i = 0; i < ARRAY_SIZE (grub_datetime_names); i++)
     {
       grub_register_variable_hook (grub_datetime_names[i], 0, 0);
       grub_env_unset (grub_datetime_names[i]);
index 84b3a001dd4c1e6adefb2eb5df8fcb8f4e16e5e9..8f843a872b6d7d5b2a445a758ce6e7b0d9d61752 100644 (file)
@@ -240,3 +240,23 @@ grub_register_variable_hook (const char *name,
 
   return GRUB_ERR_NONE;
 }
+
+grub_err_t
+grub_env_export (const char *name)
+{
+  struct grub_env_var *var;
+
+  var = grub_env_find (name);
+  if (! var)
+    {
+      grub_err_t err;
+      
+      err = grub_env_set (name, "");
+      if (err)
+       return err;
+      var = grub_env_find (name);
+    }    
+  var->global = 1;
+
+  return GRUB_ERR_NONE;
+}
index 8b6c8a180b5da7687422e88195f9c7bd3b623c0f..da7123234fb00e28f89a9222f45d3e13f74ec5c7 100644 (file)
@@ -189,6 +189,8 @@ grub_main (void)
      for convenience.  */
   grub_machine_set_prefix ();
   grub_set_root_dev ();
+  grub_env_export ("root");
+  grub_env_export ("prefix");
 
   grub_register_core_commands ();
 
index 75beeefdacad9ba00e5403dc1becc76f4b324f4d..b73161d0b668b4795a2e1d7bcb09237648decacc 100644 (file)
@@ -175,26 +175,6 @@ grub_env_extractor_close (int source)
   return err;
 }
 
-grub_err_t
-grub_env_export (const char *name)
-{
-  struct grub_env_var *var;
-
-  var = grub_env_find (name);
-  if (! var)
-    {
-      grub_err_t err;
-      
-      err = grub_env_set (name, "");
-      if (err)
-       return err;
-      var = grub_env_find (name);
-    }    
-  var->global = 1;
-
-  return GRUB_ERR_NONE;
-}
-
 static grub_command_t export_cmd;
 
 static grub_err_t
@@ -216,9 +196,6 @@ grub_cmd_export (struct grub_command *cmd __attribute__ ((unused)),
 void
 grub_context_init (void)
 {
-  grub_env_export ("root");
-  grub_env_export ("prefix");
-
   export_cmd = grub_register_command ("export", grub_cmd_export,
                                      N_("ENVVAR [ENVVAR] ..."),
                                      N_("Export variables."));
index 6d1f0de6e890bf7ebb032e521c1d0430d97659c2..c0107f16aea4f27069c6f345141a0be7f80fe31b 100644 (file)
@@ -53,7 +53,7 @@ grub_err_t EXPORT_FUNC(grub_register_variable_hook) (const char *name,
 
 grub_err_t grub_env_context_open (void);
 grub_err_t grub_env_context_close (void);
-grub_err_t grub_env_export (const char *name);
+grub_err_t EXPORT_FUNC(grub_env_export) (const char *name);
 
 void grub_env_unset_menu (void);
 grub_menu_t grub_env_get_menu (void);