[FREELDR] Limit the usage of DiskStopFloppyMotor() in hardware/platform-specific...
[reactos.git] / boot / freeldr / freeldr / options.c
index ebb7709..ac30225 100644 (file)
@@ -42,6 +42,9 @@ PCSTR OptionsMenuList[] =
     NULL,
 
     "Start ReactOS normally",
+#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
+    "Edit Boot Command Line (F10)",
+#endif
 #ifdef HAS_OPTION_MENU_CUSTOM_BOOT
     "Custom Boot",
 #endif
@@ -50,6 +53,7 @@ PCSTR OptionsMenuList[] =
 #endif
 };
 
+const
 PCSTR FrldrDbgMsg = "Enable FreeLdr debug channels\n"
                     "Acceptable syntax: [level1]#channel1[,[level2]#channel2]\n"
                     "level can be one of: trace,warn,fixme,err\n"
@@ -78,8 +82,6 @@ enum BootOption
     DIRECTORY_SERVICES_RESTORE_MODE,
 };
 
-ULONG OptionsMenuItemCount = sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]);
-
 static enum BootOption BootOptionChoice = NO_OPTION;
 static BOOLEAN BootLogging = FALSE;
 static BOOLEAN VgaMode = FALSE;
@@ -87,20 +89,20 @@ static BOOLEAN DebuggingMode = FALSE;
 
 /* FUNCTIONS ******************************************************************/
 
-VOID DoOptionsMenu(VOID)
+VOID DoOptionsMenu(IN OperatingSystemItem* OperatingSystem)
 {
     ULONG SelectedMenuItem;
     CHAR  DebugChannelString[100];
 
-    if (!UiDisplayMenu("Select an option:", "",
+    if (!UiDisplayMenu("Select an option:", NULL,
                        TRUE,
                        OptionsMenuList,
-                       OptionsMenuItemCount,
+                       sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]),
                        11, // Use "Start ReactOS normally" as default; see the switch below.
                        -1,
                        &SelectedMenuItem,
                        TRUE,
-                       NULL))
+                       NULL, NULL))
     {
         /* The user pressed ESC */
         return;
@@ -158,13 +160,18 @@ VOID DoOptionsMenu(VOID)
             VgaMode = FALSE;
             DebuggingMode = FALSE;
             break;
+#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
+        case 12: // Edit command line
+            EditOperatingSystemEntry(OperatingSystem);
+            break;
+#endif
 #ifdef HAS_OPTION_MENU_CUSTOM_BOOT
-        case 12: // Custom Boot
+        case 13: // Custom Boot
             OptionMenuCustomBoot();
             break;
 #endif
 #ifdef HAS_OPTION_MENU_REBOOT
-        case 13: // Reboot
+        case 14: // Reboot
             OptionMenuReboot();
             break;
 #endif
@@ -247,15 +254,15 @@ VOID AppendBootTimeOptions(PCHAR BootOptions)
     switch (BootOptionChoice)
     {
         case SAFE_MODE:
-            strcat(BootOptions, " /SAFEBOOT:MINIMAL /SOS"); // FIXME: NOGUIBOOT should also be specified
+            strcat(BootOptions, " /SAFEBOOT:MINIMAL /SOS /NOGUIBOOT");
             break;
 
         case SAFE_MODE_WITH_NETWORKING:
-            strcat(BootOptions, " /SAFEBOOT:NETWORK /SOS"); // FIXME: NOGUIBOOT should also be specified
+            strcat(BootOptions, " /SAFEBOOT:NETWORK /SOS /NOGUIBOOT");
             break;
 
         case SAFE_MODE_WITH_COMMAND_PROMPT:
-            strcat(BootOptions, " /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS"); // FIXME: NOGUIBOOT should also be specified
+            strcat(BootOptions, " /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /NOGUIBOOT");
             break;
 
         case LAST_KNOWN_GOOD_CONFIGURATION: