david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[prefix] Cope with BOOT_IMAGE= anywhere within command line

Some bootloaders seem to add "BOOT_IMAGE=..." at the end of the
command line; some at the start.  Cope with either variation.

Reported-by: Dave Hansen <dave@sr71.net>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2011-06-28 11:29:28 +01:00
parent cc7c2a9dcd
commit be600ed996
1 changed files with 14 additions and 4 deletions

View File

@ -66,7 +66,8 @@ static void cmdline_init ( void ) {
struct image *image = &cmdline_image;
userptr_t cmdline_user;
char *cmdline;
char *tmp;
char *boot_image;
char *boot_image_end;
size_t len;
/* Do nothing if no command line was specified */
@ -91,9 +92,18 @@ static void cmdline_init ( void ) {
/* Check for unwanted cruft in the command line */
while ( isspace ( *cmdline ) )
cmdline++;
if ( ( tmp = strstr ( cmdline, "BOOT_IMAGE=" ) ) != NULL ) {
DBGC ( image, "CMDLINE stripping \"%s\"\n", tmp );
*tmp = '\0';
if ( ( boot_image = strstr ( cmdline, "BOOT_IMAGE=" ) ) != NULL ) {
boot_image_end = strchr ( boot_image, ' ' );
if ( boot_image_end ) {
*boot_image_end = '\0';
DBGC ( image, "CMDLINE stripping \"%s\"\n",
boot_image );
strcpy ( boot_image, ( boot_image_end + 1 ) );
} else {
DBGC ( image, "CMDLINE stripping \"%s\"\n",
boot_image );
*boot_image = '\0';
}
}
DBGC ( image, "CMDLINE using \"%s\"\n", cmdline );