]> code.delx.au - refind/blobdiff - refind/lib.c
Fixed very minor GUID-interpretation bug and adjusted
[refind] / refind / lib.c
index 0c4089f5ff3fc49268d7bb4d94ba21f5bf8111b6..12b5ce389f2dc1f6bcfd7592aba47e1032a9c2fc 100644 (file)
@@ -1061,8 +1061,9 @@ VOID ScanVolumes(VOID)
             Volume->BlockIO != Volume->WholeDiskBlockIO) {
             for (VolumeIndex2 = 0; VolumeIndex2 < VolumesCount; VolumeIndex2++) {
                 if (Volumes[VolumeIndex2]->BlockIO == Volume->WholeDiskBlockIO &&
-                    Volumes[VolumeIndex2]->BlockIOOffset == 0)
+                    Volumes[VolumeIndex2]->BlockIOOffset == 0) {
                     WholeDiskVolume = Volumes[VolumeIndex2];
+                }
             }
         }
 
@@ -1862,9 +1863,26 @@ BOOLEAN IsIn(IN CHAR16 *SmallString, IN CHAR16 *List) {
             Found = TRUE;
       } // while
    } // if
-      return Found;
+   return Found;
 } // BOOLEAN IsIn()
 
+// Returns TRUE if any element of List can be found as a substring of
+// BigString, FALSE otherwise. Performs comparisons case-insensitively.
+BOOLEAN IsInSubstring(IN CHAR16 *BigString, IN CHAR16 *List) {
+   UINTN   i = 0, ElementLength;
+   BOOLEAN Found = FALSE;
+   CHAR16  *OneElement;
+
+   if (BigString && List) {
+      while (!Found && (OneElement = FindCommaDelimited(List, i++))) {
+         ElementLength = StrLen(OneElement);
+         if ((ElementLength <= StrLen(BigString)) && (StriSubCmp(OneElement, BigString)))
+            Found = TRUE;
+      } // while
+   } // if
+   return Found;
+} // BOOLEAN IsSubstringIn()
+
 // Returns TRUE if specified Volume, Directory, and Filename correspond to an
 // element in the comma-delimited List, FALSE otherwise. Note that Directory and
 // Filename must *NOT* include a volume or path specification (that's part of
@@ -2007,11 +2025,12 @@ BOOLEAN IsGuid(CHAR16 *UnknownString) {
 
    for (i = 0; i < Length; i++) {
       a = UnknownString[i];
-      if (((i == 8) || (i == 13) || (i == 18) || (i == 23)) && (a != '-')) {
-         retval = FALSE;
+      if ((i == 8) || (i == 13) || (i == 18) || (i == 23)) {
+         if (a != '-')
+            retval = FALSE;
       } else if (((a < 'a') || (a > 'f')) && ((a < 'A') || (a > 'F')) && ((a < '0') && (a > '9'))) {
          retval = FALSE;
-      } // if/else
+      } // if/else if
    } // for
    return retval;
 } // BOOLEAN IsGuid()