]> code.delx.au - refind/blobdiff - refind/config.c
New "Reboot to Firmware User Interface" feature.
[refind] / refind / config.c
index ffe1970f562dc5b7a1858a9d14f1724f07dee382..36f0464ae4ea06aebb8f343cbc78851cdb59b02f 100644 (file)
@@ -220,7 +220,6 @@ static CHAR16 *ReadLine(REFIT_FILE *File)
 static BOOLEAN KeepReading(IN OUT CHAR16 *p, IN OUT BOOLEAN *IsQuoted) {
    BOOLEAN MoreToRead = FALSE;
    CHAR16  *Temp = NULL;
-//            while (*p && *p != '"' && ((*p != ' ' && *p != '\t' && *p != '=' && *p != '#' && *p != ',') || IsQuoted)) {
 
    if ((p == NULL) || (IsQuoted == NULL))
       return FALSE;
@@ -351,7 +350,7 @@ VOID ReadConfig(CHAR16 *FileName)
        MyFreePool(GlobalConfig.DontScanDirs);
        if (SelfVolume) {
           if (SelfVolume->VolName) {
-             SelfPath = StrDuplicate(SelfVolume->VolName);
+             SelfPath = SelfVolume->VolName ? StrDuplicate(SelfVolume->VolName) : NULL;
           } else {
              SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
              if (SelfPath != NULL)
@@ -362,6 +361,9 @@ VOID ReadConfig(CHAR16 *FileName)
        GlobalConfig.DontScanDirs = SelfPath;
        MyFreePool(GlobalConfig.DontScanFiles);
        GlobalConfig.DontScanFiles = StrDuplicate(DONT_SCAN_FILES);
+       MergeStrings(&(GlobalConfig.DontScanFiles), MOK_NAMES, L',');
+       MyFreePool(GlobalConfig.DontScanVolumes);
+       GlobalConfig.DontScanVolumes = StrDuplicate(DONT_SCAN_VOLUMES);
     } // if
 
     if (!FileExists(SelfDir, FileName)) {
@@ -425,7 +427,6 @@ VOID ReadConfig(CHAR16 *FileName)
             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;
@@ -462,6 +463,8 @@ VOID ReadConfig(CHAR16 *FileName)
                    GlobalConfig.ShowTools[i - 1] = TAG_APPLE_RECOVERY;
                 } else if (StriCmp(FlagName, L"mok_tool") == 0) {
                    GlobalConfig.ShowTools[i - 1] = TAG_MOK_TOOL;
+                } else if (StriCmp(FlagName, L"firmware") == 0) {
+                   GlobalConfig.ShowTools[i - 1] = TAG_FIRMWARE;
                 } else {
                    Print(L" unknown showtools flag: '%s'\n", FlagName);
                 }
@@ -496,6 +499,9 @@ VOID ReadConfig(CHAR16 *FileName)
            else
               GlobalConfig.RequestedScreenHeight = 0;
 
+        } else if (StriCmp(TokenList[0], L"screensaver") == 0) {
+           HandleInt(TokenList, TokenCount, &(GlobalConfig.ScreensaverTime));
+
         } else if (StriCmp(TokenList[0], L"use_graphics_for") == 0) {
            GlobalConfig.GraphicsFor = 0;
            for (i = 1; i < TokenCount; i++) {
@@ -512,6 +518,9 @@ VOID ReadConfig(CHAR16 *FileName)
               }
            } // for (graphics_on tokens)
 
+        } else if ((StriCmp(TokenList[0], L"font") == 0) && (TokenCount == 2)) {
+           egLoadFont(TokenList[1]);
+
         } else if (StriCmp(TokenList[0], L"scan_all_linux_kernels") == 0) {
            if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) {
               GlobalConfig.ScanAllLinux = FALSE;
@@ -681,7 +690,7 @@ static LOADER_ENTRY * AddStanzaEntries(REFIT_FILE *File, REFIT_VOLUME *Volume, C
 
       } else if ((StriCmp(TokenList[0], L"icon") == 0) && (TokenCount > 1)) {
          MyFreePool(Entry->me.Image);
-         Entry->me.Image = LoadIcns(CurrentVolume->RootDir, TokenList[1], 128);
+         Entry->me.Image = egLoadIcon(CurrentVolume->RootDir, TokenList[1], 128);
          if (Entry->me.Image == NULL) {
             Entry->me.Image = DummyImage(128);
          }
@@ -724,7 +733,7 @@ static LOADER_ENTRY * AddStanzaEntries(REFIT_FILE *File, REFIT_VOLUME *Volume, C
    } // if
 
    if (!DefaultsSet)
-      SetLoaderDefaults(Entry, L"\\EFI\\BOOT\\nemo.efi", CurrentVolume); // user included no entry; use bogus one
+      SetLoaderDefaults(Entry, L"\\EFI\\BOOT\\nemo.efi", CurrentVolume); // user included no "loader" line; use bogus one
 
    return(Entry);
 } // static VOID AddStanzaEntries()