[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ppc] [patch] set environment from commandline
From: |
Hollis Blanchard |
Subject: |
[ppc] [patch] set environment from commandline |
Date: |
Mon, 9 May 2005 00:05:26 -0500 |
User-agent: |
Mutt/1.5.6+20040907i |
We're doing a lot of useless work in cmain().
Also, this patch allows you to boot from the OF commandline, overriding
the defaults. Example:
boot enet:,grubof prefix=foo; debug=bar
Comments?
-Hollis
Index: boot/powerpc/ieee1275/cmain.c
===================================================================
RCS file: /cvsroot/grub/grub2/boot/powerpc/ieee1275/cmain.c,v
retrieving revision 1.7
diff -u -p -r1.7 cmain.c
--- boot/powerpc/ieee1275/cmain.c 1 May 2005 03:45:35 -0000 1.7
+++ boot/powerpc/ieee1275/cmain.c 9 May 2005 05:01:07 -0000
@@ -71,15 +71,9 @@ grub_ieee1275_find_options (void)
}
void cmain (uint32_t r3, uint32_t r4, uint32_t r5);
-/* Setup the argument vector and pass control over to the main
- function. */
void
cmain (uint32_t r3, uint32_t r4 __attribute__((unused)), uint32_t r5)
{
- char **argv, args[256];
- grub_ieee1275_phandle_t chosen;
- int argc = 0, actual;
-
if (r5 == 0xdeadbeef)
{
/* Entered from Old World stage1. */
@@ -106,70 +100,7 @@ cmain (uint32_t r3, uint32_t r4 __attrib
grub_ieee1275_find_options ();
- /* If any argument was passed to the kernel (us), they are
- put in the bootargs property of /chosen. The string can
- be null (just the nul-character), so check that the size
- is actually greater than one. */
-
- grub_ieee1275_finddevice ("/chosen", &chosen);
- if (grub_ieee1275_get_property (chosen, "bootargs", args,
- sizeof args, &actual) == 0
- && actual > 1)
- {
- /* A command line was passed. */
- char *str = args;
- int nr = 1;
-
- /* First time around we count the number of arguments. */
- argc = 2;
- while (*str && *str == ' ')
- str++;
-
- while (*str)
- if (*(str++) == ' ')
- {
- while (*str && *str == ' ')
- str++;
- if (*str)
- argc++;
- }
- argv = alloca (sizeof (char *) * (argc + 2));
-
- /* The bootargs property does not contain the program
- name, just the arguments. */
- argv[0] = "grub";
-
- /* Second time around we fill in the argv. */
- str = args;
-
- while (*str && *str == ' ')
- str++;
- argv[nr++] = str;
-
- while (*str)
- {
- if (*str == ' ')
- {
- *(str++) = '\0';
- while (*str && *str == ' ')
- str++;
- if (*str)
- argv[nr++] = str;
- }
- else
- str++;
- }
- argv[nr] = 0;
- }
- else
- {
- argv = alloca (sizeof (char *) * 2);
- argv[0] = "grub";
- argv[1] = 0;
- argc = 1;
- }
/* Now invoke the main function. */
- /* XXX: grub_main does not parse arguments yet. */
grub_main ();
/* Never reached. */
Index: kern/powerpc/ieee1275/init.c
===================================================================
RCS file: /cvsroot/grub/grub2/kern/powerpc/ieee1275/init.c,v
retrieving revision 1.17
diff -u -p -r1.17 init.c
--- kern/powerpc/ieee1275/init.c 1 May 2005 03:45:36 -0000 1.17
+++ kern/powerpc/ieee1275/init.c 9 May 2005 05:01:13 -0000
@@ -113,6 +113,9 @@ grub_set_prefix (void)
void
grub_machine_init (void)
{
+ char args[256];
+ grub_ieee1275_phandle_t chosen;
+ int actual;
extern char _start;
grub_console_init ();
@@ -132,6 +135,41 @@ grub_machine_init (void)
grub_set_prefix ();
grub_ofdisk_init ();
+
+ /* Process commandline. */
+ grub_ieee1275_finddevice ("/chosen", &chosen);
+ if (grub_ieee1275_get_property (chosen, "bootargs", &args,
+ sizeof args, &actual) == 0
+ && actual > 1)
+ {
+ int i = 0;
+
+ while (i < actual)
+ {
+ char *command = &args[i];
+ char *end;
+ char *val;
+
+ end = grub_strchr (command, ';');
+ if (end == 0)
+ i = actual; /* No more commands after this one. */
+ else
+ {
+ *end = '\0';
+ i += end - command + 1;
+ while (grub_isspace(args[i]))
+ i++;
+ }
+
+ /* Process command. */
+ val = grub_strchr (command, '=');
+ if (val)
+ {
+ *val = '\0';
+ grub_env_set (command, val + 1);
+ }
+ }
+ }
}
void
- [ppc] [patch] set environment from commandline,
Hollis Blanchard <=
- non boot-device was Re: [ppc] [patch] set environment from commandline, Paul Nasrat, 2005/05/10
- Re: non boot-device was Re: [ppc] [patch] set environment from commandline, Marco Gerards, 2005/05/10
- Re: non boot-device was Re: [ppc] [patch] set environment from commandline, Paul Nasrat, 2005/05/10
- Re: non boot-device was Re: [ppc] [patch] set environment from commandline, Paul Nasrat, 2005/05/10
- Re: non boot-device was Re: [ppc] [patch] set environment from commandline, Hollis Blanchard, 2005/05/10
- Re: console colors, Hollis Blanchard, 2005/05/10
- Re: console colors, Marco Gerards, 2005/05/11
Re: [ppc] [patch] set environment from commandline, Marco Gerards, 2005/05/10