ReactOS 0.4.16-dev-297-gc569aee
options.c File Reference
#include <freeldr.h>
#include <debug.h>
Include dependency graph for options.c:

Go to the source code of this file.

Enumerations

enum  BootOption {
  NO_OPTION = 0 , SAFE_MODE , SAFE_MODE_WITH_NETWORKING , SAFE_MODE_WITH_COMMAND_PROMPT ,
  LAST_KNOWN_GOOD_CONFIGURATION , DIRECTORY_SERVICES_RESTORE_MODE
}
 

Functions

VOID DoOptionsMenu (IN OperatingSystemItem *OperatingSystem)
 
VOID DisplayBootTimeOptions (VOID)
 
VOID AppendBootTimeOptions (PCHAR BootOptions)
 

Variables

PCSTR OptionsMenuList []
 
const PCSTR FrldrDbgMsg
 
static enum BootOption BootOptionChoice = NO_OPTION
 
static BOOLEAN BootLogging = FALSE
 
static BOOLEAN VgaMode = FALSE
 
static BOOLEAN DebuggingMode = FALSE
 

Enumeration Type Documentation

◆ BootOption

Enumerator
NO_OPTION 
SAFE_MODE 
SAFE_MODE_WITH_NETWORKING 
SAFE_MODE_WITH_COMMAND_PROMPT 
LAST_KNOWN_GOOD_CONFIGURATION 
DIRECTORY_SERVICES_RESTORE_MODE 

Definition at line 73 of file options.c.

74{
75 NO_OPTION = 0,
76
80
83};
@ SAFE_MODE
Definition: options.c:77
@ DIRECTORY_SERVICES_RESTORE_MODE
Definition: options.c:82
@ SAFE_MODE_WITH_COMMAND_PROMPT
Definition: options.c:79
@ LAST_KNOWN_GOOD_CONFIGURATION
Definition: options.c:81
@ NO_OPTION
Definition: options.c:75
@ SAFE_MODE_WITH_NETWORKING
Definition: options.c:78

Function Documentation

◆ AppendBootTimeOptions()

VOID AppendBootTimeOptions ( PCHAR  BootOptions)

Definition at line 252 of file options.c.

253{
254 switch (BootOptionChoice)
255 {
256 case SAFE_MODE:
257 strcat(BootOptions, " /SAFEBOOT:MINIMAL /SOS /NOGUIBOOT");
258 break;
259
261 strcat(BootOptions, " /SAFEBOOT:NETWORK /SOS /NOGUIBOOT");
262 break;
263
265 strcat(BootOptions, " /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /NOGUIBOOT");
266 break;
267
269 DbgPrint("Last known good configuration is not supported yet!\n");
270 break;
271
273 strcat(BootOptions, " /SAFEBOOT:DSREPAIR /SOS");
274 break;
275
276 default:
277 break;
278 }
279
280 if (BootLogging)
281 strcat(BootOptions, " /BOOTLOG");
282
283 if (VgaMode)
284 strcat(BootOptions, " /BASEVIDEO");
285
286 if (DebuggingMode)
287 strcat(BootOptions, " /DEBUG");
288}
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
@ BootOptions
Definition: bl.h:898
static BOOLEAN DebuggingMode
Definition: options.c:88
static BOOLEAN VgaMode
Definition: options.c:87
static BOOLEAN BootLogging
Definition: options.c:86
static enum BootOption BootOptionChoice
Definition: options.c:85
#define DbgPrint
Definition: hal.h:12

Referenced by LoadAndBootWindows().

◆ DisplayBootTimeOptions()

VOID DisplayBootTimeOptions ( VOID  )

Definition at line 181 of file options.c.

182{
183 CHAR BootOptions[260] = "";
184
185 switch (BootOptionChoice)
186 {
187 case SAFE_MODE:
189 break;
190
193 break;
194
197 break;
198
201 break;
202
205 break;
206
207 default:
208 break;
209 }
210
211 if (BootLogging)
212 {
213 if ( (BootOptionChoice != SAFE_MODE) &&
216 {
218 {
219 strcat(BootOptions, ", ");
220 }
222 }
223 }
224
225 if (VgaMode)
226 {
227 if ((BootOptionChoice != NO_OPTION) ||
229 {
230 strcat(BootOptions, ", ");
231 }
233 }
234
235 if (DebuggingMode)
236 {
237 if ((BootOptionChoice != NO_OPTION) ||
239 {
240 strcat(BootOptions, ", ");
241 }
243 }
244
245 /* Display the chosen boot options */
246 UiDrawText(0,
247 UiScreenHeight - 2,
250}
#define COLOR_LIGHTBLUE
Definition: ui.h:332
VOID UiDrawText(_In_ ULONG X, _In_ ULONG Y, _In_ PCSTR Text, _In_ UCHAR Attr)
Definition: ui.c:254
UCHAR UiMenuBgColor
Definition: ui.c:35
#define ATTR(cFore, cBack)
Definition: ui.h:317
ULONG UiScreenHeight
Definition: ui.c:55
PCSTR OptionsMenuList[]
Definition: options.c:27
char CHAR
Definition: xmlstorage.h:175

Referenced by MiniTuiDrawMenu(), and TuiDrawMenu().

◆ DoOptionsMenu()

VOID DoOptionsMenu ( IN OperatingSystemItem OperatingSystem)

Definition at line 92 of file options.c.

93{
94 ULONG SelectedMenuItem;
95 CHAR DebugChannelString[100];
96
97 if (!UiDisplayMenu("Select an option:", NULL,
98 TRUE,
100 sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]),
101 11, // Use "Start ReactOS normally" as default; see the switch below.
102 -1,
103 &SelectedMenuItem,
104 TRUE,
105 NULL, NULL))
106 {
107 /* The user pressed ESC */
108 return;
109 }
110
111 /* Clear the backdrop */
113
114 switch (SelectedMenuItem)
115 {
116 case 0: // Safe Mode
119 break;
120 case 1: // Safe Mode with Networking
123 break;
124 case 2: // Safe Mode with Command Prompt
127 break;
128 // case 3: // Separator
129 // break;
130 case 4: // Enable Boot Logging
132 break;
133 case 5: // Enable VGA Mode
134 VgaMode = TRUE;
135 break;
136 case 6: // Last Known Good Configuration
138 break;
139 case 7: // Directory Services Restore Mode
141 break;
142 case 8: // Debugging Mode
144 break;
145 case 9: // FreeLdr debugging
146 DebugChannelString[0] = 0;
148 DebugChannelString,
149 sizeof(DebugChannelString) / sizeof(DebugChannelString[0])))
150 {
151 DbgParseDebugChannels(DebugChannelString);
152 }
153 break;
154 // case 10: // Separator
155 // break;
156 case 11: // Start ReactOS normally
157 // Reset all the parameters to their default values.
160 VgaMode = FALSE;
162 break;
163#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
164 case 12: // Edit command line
165 EditOperatingSystemEntry(OperatingSystem);
166 break;
167#endif
168#ifdef HAS_OPTION_MENU_CUSTOM_BOOT
169 case 13: // Custom Boot
171 break;
172#endif
173#ifdef HAS_OPTION_MENU_REBOOT
174 case 14: // Reboot
176 break;
177#endif
178 }
179}
#define DbgParseDebugChannels(val)
Definition: debug.h:124
BOOLEAN UiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length)
Definition: ui.c:634
BOOLEAN UiDisplayMenu(IN PCSTR MenuHeader, IN PCSTR MenuFooter OPTIONAL, IN BOOLEAN ShowBootOptions, IN PCSTR MenuItemList[], IN ULONG MenuItemCount, IN ULONG DefaultMenuItem, IN LONG MenuTimeOut, OUT PULONG SelectedMenuItem, IN BOOLEAN CanEscape, IN UiMenuKeyPressFilterCallback KeyPressFilter OPTIONAL, IN PVOID Context OPTIONAL)
Definition: ui.c:605
VOID UiDrawBackdrop(VOID)
Definition: ui.c:233
const PCSTR FrldrDbgMsg
Definition: options.c:57
VOID OptionMenuCustomBoot(VOID)
VOID OptionMenuReboot(VOID)
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
uint32_t ULONG
Definition: typedefs.h:59

Referenced by MainBootMenuKeyPressFilter().

Variable Documentation

◆ BootLogging

BOOLEAN BootLogging = FALSE
static

Definition at line 86 of file options.c.

Referenced by AppendBootTimeOptions(), DisplayBootTimeOptions(), and DoOptionsMenu().

◆ BootOptionChoice

enum BootOption BootOptionChoice = NO_OPTION
static

Definition at line 85 of file options.c.

Referenced by AppendBootTimeOptions(), DisplayBootTimeOptions(), and DoOptionsMenu().

◆ DebuggingMode

BOOLEAN DebuggingMode = FALSE
static

Definition at line 88 of file options.c.

Referenced by AppendBootTimeOptions(), DisplayBootTimeOptions(), and DoOptionsMenu().

◆ FrldrDbgMsg

const PCSTR FrldrDbgMsg
Initial value:
= "Enable FreeLdr debug channels\n"
"Acceptable syntax: [level1]#channel1[,[level2]#channel2]\n"
"level can be one of: trace,warn,fixme,err\n"
" if the level is omitted all levels\n"
" are enabled for the specified channel\n"
"# can be either + or -\n"
"channel can be one of the following:\n"
" all,warning,memory,filesystem,inifile,ui,disk,cache,registry,\n"
" reactos,linux,hwdetect,windows,peloader,scsiport,heap\n"
"Examples:\n"
" trace+windows,trace+reactos\n"
" +hwdetect,err-disk\n"
" +peloader\n"
"NOTE: all letters must be lowercase, no spaces allowed."

Definition at line 57 of file options.c.

Referenced by DoOptionsMenu().

◆ OptionsMenuList

PCSTR OptionsMenuList[]
Initial value:
=
{
"Safe Mode",
"Safe Mode with Networking",
"Safe Mode with Command Prompt",
"Enable Boot Logging",
"Enable VGA Mode",
"Last Known Good Configuration",
"Directory Services Restore Mode",
"Debugging Mode",
"FreeLdr debugging",
"Start ReactOS normally",
}

Definition at line 27 of file options.c.

Referenced by DisplayBootTimeOptions(), and DoOptionsMenu().

◆ VgaMode