[FREELOADER]

- Fix DoOptionsMenu and implement AppendBootOptions to support F8 boot options
- Fixes bug 5363

svn path=/trunk/; revision=47387
This commit is contained in:
Cameron Gutman 2010-05-28 22:54:27 +00:00
parent 18c065e00d
commit 799b6ad5b8
4 changed files with 55 additions and 0 deletions

View file

@ -20,3 +20,4 @@
#pragma once
VOID DoOptionsMenu(VOID);
VOID AppendBootTimeOptions(PCHAR BootOptions);

View file

@ -69,6 +69,15 @@ enum OptionMenuItems
ULONG OptionsMenuItemCount = sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]);
BOOLEAN SafeMode = FALSE;
BOOLEAN SafeModeWithNetworking = FALSE;
BOOLEAN SafeModeWithCommandPrompt = FALSE;
BOOLEAN BootLogging = FALSE;
BOOLEAN VgaMode = FALSE;
BOOLEAN LastKnownGoodConfiguration = FALSE;
BOOLEAN DirectoryServicesRepairMode = FALSE;
BOOLEAN DebuggingMode = FALSE;
VOID DoOptionsMenu(VOID)
{
ULONG SelectedMenuItem;
@ -85,22 +94,33 @@ VOID DoOptionsMenu(VOID)
switch (SelectedMenuItem)
{
case SAFE_MODE:
SafeMode = TRUE;
BootLogging = TRUE;
break;
case SAFE_MODE_WITH_NETWORKING:
SafeModeWithNetworking = TRUE;
BootLogging = TRUE;
break;
case SAFE_MODE_WITH_COMMAND_PROMPT:
SafeModeWithCommandPrompt = TRUE;
BootLogging = TRUE;
break;
//case SEPARATOR1:
// break;
case ENABLE_BOOT_LOGGING:
BootLogging = TRUE;
break;
case ENABLE_VGA_MODE:
VgaMode = TRUE;
break;
case LAST_KNOWN_GOOD_CONFIGURATION:
LastKnownGoodConfiguration = TRUE;
break;
case DIRECTORY_SERVICES_RESTORE_MODE:
DirectoryServicesRepairMode = TRUE;
break;
case DEBUGGING_MODE:
DebuggingMode = TRUE;
break;
//case SEPARATOR2:
// break;
@ -117,3 +137,29 @@ VOID DoOptionsMenu(VOID)
}
}
VOID AppendBootTimeOptions(PCHAR BootOptions)
{
if (SafeMode)
strcat(BootOptions, " /SAFEBOOT:MINIMAL /SOS"); //FIXME: NOGUIBOOT should also be specified
if (SafeModeWithNetworking)
strcat(BootOptions, " /SAFEBOOT:NETWORK /SOS"); //FIXME: NOGUIBOOT should also be specified
if (SafeModeWithCommandPrompt)
strcat(BootOptions, " /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS"); //FIXME: NOGUIBOOT should also be specified
if (BootLogging)
strcat(BootOptions, " /BOOTLOG");
if (VgaMode)
strcat(BootOptions, " /BASEVIDEO");
if (LastKnownGoodConfiguration)
DbgPrint("Last known good configuration is not supported yet!\n");
if (DirectoryServicesRepairMode)
strcat(BootOptions, " /SAFEBOOT:DSREPAIR /SOS");
if (DebuggingMode)
strcat(BootOptions, " /DEBUG");
}

View file

@ -606,6 +606,11 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
//
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
{
//
// Append boot-time options
//
AppendBootTimeOptions(value);
//
// Check if a ramdisk file was given
//

View file

@ -475,6 +475,9 @@ LoadAndBootWindows(PCSTR OperatingSystemName,
DPRINTM(DPRINT_WINDOWS,"BootOptions: '%s'\n", BootOptions);
}
/* Append boot-time options */
AppendBootTimeOptions(BootOptions);
//
// Check if a ramdisk file was given
//