REFIT_FILE File;
CHAR16 **TokenList;
CHAR16 *FlagName;
+ CHAR16 *SelfPath = NULL;
UINTN TokenCount, i;
// Set a few defaults only if we're loading the default file.
if (StriCmp(FileName, CONFIG_FILE_NAME) == 0) {
+ MyFreePool(GlobalConfig.AlsoScan);
+ GlobalConfig.AlsoScan = StrDuplicate(ALSO_SCAN_DIRS);
MyFreePool(GlobalConfig.DontScanDirs);
- GlobalConfig.DontScanDirs = StrDuplicate(SelfDirPath);
+ if (SelfVolume) {
+ if (SelfVolume->VolName) {
+ SelfPath = StrDuplicate(SelfVolume->VolName);
+ } else {
+ SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
+ if (SelfPath != NULL)
+ SPrint(SelfPath, 255, L"fs%d", SelfVolume->VolNumber);
+ } // if/else
+ }
+ MergeStrings(&SelfPath, SelfDirPath, L':');
+ GlobalConfig.DontScanDirs = SelfPath;
MyFreePool(GlobalConfig.DontScanFiles);
GlobalConfig.DontScanFiles = StrDuplicate(DONT_SCAN_FILES);
}
} else if (StriCmp(FlagName, L"label") == 0) {
GlobalConfig.HideUIFlags |= HIDEUI_FLAG_LABEL;
} else if (StriCmp(FlagName, L"singleuser") == 0) {
- GlobalConfig.HideUIFlags |= HIDEUI_FLAG_SINGLEUSER;
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_SINGLEUSER;
} else if (StriCmp(FlagName, L"hwtest") == 0) {
- GlobalConfig.HideUIFlags |= HIDEUI_FLAG_HWTEST;
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_HWTEST;
} else if (StriCmp(FlagName, L"arrows") == 0) {
GlobalConfig.HideUIFlags |= HIDEUI_FLAG_ARROWS;
} else if (StriCmp(FlagName, L"hints") == 0) {
GlobalConfig.HideUIFlags |= HIDEUI_FLAG_HINTS;
+ } else if (StriCmp(FlagName, L"editor") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_EDITOR;
+ } else if (StriCmp(FlagName, L"safemode") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_SAFEMODE;
} else if (StriCmp(FlagName, L"all") == 0) {
- GlobalConfig.HideUIFlags = HIDEUI_ALL;
+ GlobalConfig.HideUIFlags = HIDEUI_FLAG_ALL;
} else {
Print(L" unknown hideui flag: '%s'\n", FlagName);
}
} else if (StriCmp(TokenList[0], L"also_scan_dirs") == 0) {
HandleStrings(TokenList, TokenCount, &(GlobalConfig.AlsoScan));
+ } else if ((StriCmp(TokenList[0], L"don't_scan_volumes") == 0) || (StriCmp(TokenList[0], L"dont_scan_volumes") == 0)) {
+ HandleStrings(TokenList, TokenCount, &(GlobalConfig.AlsoScan));
+ // Note: Don't use HandleStrings() because it modifies slashes, which might be present in volume name
+ MyFreePool(GlobalConfig.DontScanVolumes);
+ GlobalConfig.DontScanVolumes = NULL;
+ for (i = 1; i < TokenCount; i++) {
+ MergeStrings(&GlobalConfig.DontScanVolumes, TokenList[i], L',');
+ }
+
} else if ((StriCmp(TokenList[0], L"don't_scan_dirs") == 0) || (StriCmp(TokenList[0], L"dont_scan_dirs") == 0)) {
HandleStrings(TokenList, TokenCount, &(GlobalConfig.DontScanDirs));
} else if (StriCmp(TokenList[0], L"textmode") == 0) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.RequestedTextMode));
- } else if ((StriCmp(TokenList[0], L"resolution") == 0) && (TokenCount == 3)) {
+ } else if ((StriCmp(TokenList[0], L"resolution") == 0) && ((TokenCount == 2) || (TokenCount == 3))) {
GlobalConfig.RequestedScreenWidth = Atoi(TokenList[1]);
- GlobalConfig.RequestedScreenHeight = Atoi(TokenList[2]);
+ if (TokenCount == 3)
+ GlobalConfig.RequestedScreenHeight = Atoi(TokenList[2]);
+ else
+ GlobalConfig.RequestedScreenHeight = 0;
} else if (StriCmp(TokenList[0], L"use_graphics_for") == 0) {
GlobalConfig.GraphicsFor = 0;
CHAR16 *Title = NULL;
UINTN TokenCount, size;
LOADER_ENTRY *Entry;
-// REFIT_MENU_SCREEN *SubScreen;
if (FileExists(SelfDir, CONFIG_FILE_NAME)) {
Status = ReadFile(SelfDir, CONFIG_FILE_NAME, &File, &size);