[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:
parent
cc7c2a9dcd
commit
be600ed996
|
@ -66,7 +66,8 @@ static void cmdline_init ( void ) {
|
||||||
struct image *image = &cmdline_image;
|
struct image *image = &cmdline_image;
|
||||||
userptr_t cmdline_user;
|
userptr_t cmdline_user;
|
||||||
char *cmdline;
|
char *cmdline;
|
||||||
char *tmp;
|
char *boot_image;
|
||||||
|
char *boot_image_end;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
/* Do nothing if no command line was specified */
|
/* 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 */
|
/* Check for unwanted cruft in the command line */
|
||||||
while ( isspace ( *cmdline ) )
|
while ( isspace ( *cmdline ) )
|
||||||
cmdline++;
|
cmdline++;
|
||||||
if ( ( tmp = strstr ( cmdline, "BOOT_IMAGE=" ) ) != NULL ) {
|
if ( ( boot_image = strstr ( cmdline, "BOOT_IMAGE=" ) ) != NULL ) {
|
||||||
DBGC ( image, "CMDLINE stripping \"%s\"\n", tmp );
|
boot_image_end = strchr ( boot_image, ' ' );
|
||||||
*tmp = '\0';
|
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 );
|
DBGC ( image, "CMDLINE using \"%s\"\n", cmdline );
|
||||||
|
|
||||||
|
|
Reference in New Issue