// constants
#define CONFIG_FILE_NAME L"refind.conf"
-#define LINUX_OPTIONS_FILENAMES L"refind_linux.conf,linux.conf"
+#define LINUX_OPTIONS_FILENAMES L"refind_linux.conf,refind-linux.conf,linux.conf"
#define MAXCONFIGFILESIZE (128*1024)
#define ENCODING_ISO8859_1 (0)
if (StriCmp(TokenList[0], L"timeout") == 0) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.Timeout));
-
- } else if (StriCmp(TokenList[0], L"disable") == 0) {
+
+ // Note: I'm using "disable" as equivalent to "hideui" for the moment (as of rEFInd 0.2.4)
+ // because I've folded two options into one and removed some values, so I want to catch
+ // existing configurations as much as possible. The "disable" equivalency to "hideui" will
+ // be removed sooner or later, leaving only "hideui".
+ } else if ((StriCmp(TokenList[0], L"hideui") == 0) || (StriCmp(TokenList[0], L"disable") == 0)) {
for (i = 1; i < TokenCount; i++) {
FlagName = TokenList[i];
- if (StriCmp(FlagName, L"shell") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_SHELL;
- } else if (StriCmp(FlagName, L"tools") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_TOOLS;
+ if (StriCmp(FlagName, L"banner") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_BANNER;
+ } else if (StriCmp(FlagName, L"label") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_LABEL;
} else if (StriCmp(FlagName, L"singleuser") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_SINGLEUSER;
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_SINGLEUSER;
} else if (StriCmp(FlagName, L"hwtest") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_HWTEST;
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_HWTEST;
+ } else if (StriCmp(FlagName, L"arrows") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_ARROWS;
} else if (StriCmp(FlagName, L"all") == 0) {
- GlobalConfig.DisableFlags = DISABLE_ALL;
+ GlobalConfig.HideUIFlags = HIDEUI_ALL;
} else {
Print(L" unknown disable flag: '%s'\n", FlagName);
}
else
GlobalConfig.ScanFor[i] = ' ';
}
- } else if (StriCmp(TokenList[0], L"hideui") == 0) {
- for (i = 1; i < TokenCount; i++) {
+ } else if (StriCmp(TokenList[0], L"showtools") == 0) {
+ SetMem(GlobalConfig.ShowTools, NUM_TOOLS * sizeof(UINTN), 0);
+ for (i = 1; (i < TokenCount) && (i < NUM_TOOLS); i++) {
FlagName = TokenList[i];
- if (StriCmp(FlagName, L"banner") == 0) {
- GlobalConfig.HideUIFlags |= HIDEUI_FLAG_BANNER;
- } else if (StriCmp(FlagName, L"shell") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_SHELL;
- } else if (StriCmp(FlagName, L"tools") == 0) {
- GlobalConfig.DisableFlags |= DISABLE_FLAG_TOOLS;
- } else if (StriCmp(FlagName, L"funcs") == 0) {
- GlobalConfig.HideUIFlags |= HIDEUI_FLAG_FUNCS;
- } else if (StriCmp(FlagName, L"label") == 0) {
- GlobalConfig.HideUIFlags |= HIDEUI_FLAG_LABEL;
- } else if (StriCmp(FlagName, L"all") == 0) {
- GlobalConfig.HideUIFlags = HIDEUI_ALL;
- GlobalConfig.DisableFlags |= DISABLE_FLAG_SHELL | DISABLE_FLAG_TOOLS;
+ if (StriCmp(FlagName, L"shell") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_SHELL;
+ } else if (StriCmp(FlagName, L"gptsync") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_GPTSYNC;
+ } else if (StriCmp(FlagName, L"about") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_ABOUT;
+ } else if (StriCmp(FlagName, L"exit") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_EXIT;
+ } else if (StriCmp(FlagName, L"reboot") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_REBOOT;
+ } else if (StriCmp(FlagName, L"shutdown") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_SHUTDOWN;
} else {
- Print(L" unknown hideui flag: '%s'\n", FlagName);
+ Print(L" unknown showtools flag: '%s'\n", FlagName);
}
- }
-
+ } // showtools options
+
} else if (StriCmp(TokenList[0], L"banner") == 0) {
HandleString(TokenList, TokenCount, &(GlobalConfig.BannerFileName));
} else if ((StriCmp(TokenList[0], L"}") == 0) || (StriCmp(TokenList[0], L"loader") == 0) ||
(StriCmp(TokenList[0], L"icon") == 0) || (StriCmp(TokenList[0], L"options") == 0)) {
// Do nothing; handled by ScanUserConfigured()
+ } else if ((StriCmp(TokenList[0], L"max_tags") == 0) && (TokenCount > 1)) {
+ GlobalConfig.MaxTags = Atoi(TokenList[1]);
}
FreeTokenLine(&TokenList, &TokenCount);
}
-
FreePool(File.Buffer);
} /* VOID ReadConfig() */
File = AllocateZeroPool(sizeof(REFIT_FILE));
Status = ReadFile(Volume->RootDir, FullFilename, File);
GoOn = FALSE;
- if (CheckError(Status, L"while loading the Linux options file"))
+ if (CheckError(Status, L"while loading the Linux options file")) {
+ if (File != NULL)
+ FreePool(File);
File = NULL;
- } // if
- } else {
+ GoOn = TRUE;
+ } // if error
+ } // if file exists
+ } else { // a filename string is NULL
GoOn = FALSE;
} // if/else
if (OptionsFilename != NULL)
OptionsFilename = FullFilename = NULL;
} while (GoOn);
return (File);
-} // static REFIT_FILE * FindLinuxOptionsFile()
+} // static REFIT_FILE * ReadLinuxOptionsFile()
// Retrieve a single line of options from a Linux kernel options file
CHAR16 * GetFirstOptionsFromFile(IN CHAR16 *LoaderPath, IN REFIT_VOLUME *Volume) {