]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/String.c
Rename BaseLib internal functions by adding InternalBaseLib.
[mirror_edk2.git] / MdePkg / Library / BaseLib / String.c
index bdd31766b94c7bc3e09e748791225400ab6b5862..31ea36de414d36c4670b66403c20c6d135da1730 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Unicode and ASCII string primatives.\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
+  Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
   All rights reserved. This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -95,9 +95,11 @@ StrCpy (
   If Length > 0 and Source is NULL, then ASSERT().\r
   If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
+  If PcdMaximumUnicodeStringLength is not zero, and Length is greater than \r
+  PcdMaximumUnicodeStringLength, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and Source contains more than\r
   PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
-  and Length is greater than PcdMaximumUnicodeStringLength, then ASSERT().\r
+  then ASSERT().\r
 \r
   @param  Destination Pointer to a Null-terminated Unicode string.\r
   @param  Source      Pointer to a Null-terminated Unicode string.\r
@@ -277,12 +279,13 @@ StrCmp (
   If Length > 0 and FirstString is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and SecondString is NULL, then ASSERT().\r
   If Length > 0 and SecondString is not aligned on a 16-bit boundary, then ASSERT().\r
-  If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more\r
-  than PcdMaximumUnicodeStringLength Unicode characters, not including the\r
-  Null-terminator, then ASSERT().\r
-  If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more\r
-  than PcdMaximumUnicodeStringLength Unicode characters, not including the\r
-  Null-terminator, and Length is greater than PcdMaximumUnicodeStringLength,\r
+  If PcdMaximumUnicodeStringLength is not zero, and Length is greater than\r
+  PcdMaximumUnicodeStringLength, then ASSERT().\r
+  If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more than\r
+  PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
+  then ASSERT().\r
+  If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more than\r
+  PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,\r
   then ASSERT().\r
 \r
   @param  FirstString   Pointer to a Null-terminated Unicode string.\r
@@ -394,6 +397,8 @@ StrCat (
   If Length > 0 and Source is NULL, then ASSERT().\r
   If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
+  If PcdMaximumUnicodeStringLength is not zero, and Length is greater than \r
+  PcdMaximumUnicodeStringLength, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and Destination contains more\r
   than PcdMaximumUnicodeStringLength Unicode characters, not including the\r
   Null-terminator, then ASSERT().\r
@@ -401,10 +406,8 @@ StrCat (
   PcdMaximumUnicodeStringLength Unicode characters, not including the\r
   Null-terminator, then ASSERT().\r
   If PcdMaximumUnicodeStringLength is not zero, and concatenating Destination\r
-  and Source results in a Unicode string with more than\r
-  PcdMaximumUnicodeStringLength Unicode characters, not including the\r
-  Null-terminator, and Length is greater than PcdMaximumUnicodeStringLength,\r
-  then ASSERT().\r
+  and Source results in a Unicode string with more than PcdMaximumUnicodeStringLength\r
+  Unicode characters, not including the Null-terminator, then ASSERT().\r
 \r
   @param  Destination Pointer to a Null-terminated Unicode string.\r
   @param  Source      Pointer to a Null-terminated Unicode string.\r
@@ -475,29 +478,29 @@ StrStr (
   ASSERT (StrSize (String) != 0);\r
   ASSERT (StrSize (SearchString) != 0);\r
 \r
-  while (*String != '\0') {\r
+  if (*SearchString == L'\0') {\r
+    return (CHAR16 *) String;\r
+  }\r
+\r
+  while (*String != L'\0') {\r
     SearchStringTmp = SearchString;\r
     FirstMatch = String;\r
     \r
     while ((*String == *SearchStringTmp) \r
-            && (*SearchStringTmp != '\0') \r
-            && (*String != '\0')) {\r
+            && (*String != L'\0')) {\r
       String++;\r
       SearchStringTmp++;\r
     } \r
     \r
-    if (*SearchStringTmp == '\0') {\r
+    if (*SearchStringTmp == L'\0') {\r
       return (CHAR16 *) FirstMatch;\r
     }\r
 \r
-    if (SearchStringTmp == SearchString) {\r
-      //\r
-      // If no character from SearchString match,\r
-      // move the pointer to the String under search\r
-      // by one character.\r
-      //\r
-      String++;\r
+    if (*String == L'\0') {\r
+      return NULL;\r
     }\r
+\r
+    String = FirstMatch + 1;\r
   }\r
 \r
   return NULL;\r
@@ -1142,9 +1145,11 @@ AsciiStrCpy (
   If Destination is NULL, then ASSERT().\r
   If Source is NULL, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
+  If PcdMaximumAsciiStringLength is not zero, and Length is greater than \r
+  PcdMaximumAsciiStringLength, then ASSERT().\r
   If PcdMaximumAsciiStringLength is not zero, and Source contains more than\r
   PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
-  and Length is greater than PcdMaximumAsciiStringLength, then ASSERT().\r
+  then ASSERT().\r
 \r
   @param  Destination Pointer to a Null-terminated ASCII string.\r
   @param  Source      Pointer to a Null-terminated ASCII string.\r
@@ -1320,7 +1325,7 @@ AsciiStrCmp (
 **/\r
 CHAR8\r
 EFIAPI\r
-AsciiToUpper (\r
+InternalBaseLibAsciiToUpper (\r
   IN      CHAR8                     Chr\r
   )\r
 {\r
@@ -1350,7 +1355,7 @@ InternalAsciiHexCharToUintn (
     return Char - '0';\r
   }\r
 \r
-  return (UINTN) (10 + AsciiToUpper (Char) - 'A');\r
+  return (UINTN) (10 + InternalBaseLibAsciiToUpper (Char) - 'A');\r
 }\r
 \r
 \r
@@ -1399,13 +1404,13 @@ AsciiStriCmp (
   ASSERT (AsciiStrSize (FirstString));\r
   ASSERT (AsciiStrSize (SecondString));\r
 \r
-  UpperFirstString  = AsciiToUpper (*FirstString);\r
-  UpperSecondString = AsciiToUpper (*SecondString);\r
+  UpperFirstString  = InternalBaseLibAsciiToUpper (*FirstString);\r
+  UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
   while ((*FirstString != '\0') && (UpperFirstString == UpperSecondString)) {\r
     FirstString++;\r
     SecondString++;\r
-    UpperFirstString  = AsciiToUpper (*FirstString);\r
-    UpperSecondString = AsciiToUpper (*SecondString);\r
+    UpperFirstString  = InternalBaseLibAsciiToUpper (*FirstString);\r
+    UpperSecondString = InternalBaseLibAsciiToUpper (*SecondString);\r
   }\r
 \r
   return UpperFirstString - UpperSecondString;\r
@@ -1424,12 +1429,14 @@ AsciiStriCmp (
 \r
   If Length > 0 and FirstString is NULL, then ASSERT().\r
   If Length > 0 and SecondString is NULL, then ASSERT().\r
-  If PcdMaximumAsciiStringLength is not zero and FirstString contains more than\r
+  If PcdMaximumAsciiStringLength is not zero, and Length is greater than \r
+  PcdMaximumAsciiStringLength, then ASSERT().\r
+  If PcdMaximumAsciiStringLength is not zero, and FirstString contains more than\r
   PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
   then ASSERT().\r
-  If PcdMaximumAsciiStringLength is not zero and SecondString contains more than\r
+  If PcdMaximumAsciiStringLength is not zero, and SecondString contains more than\r
   PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
-  and Length is greater than PcdMaximumAsciiStringLength, then ASSERT().\r
+  then ASSERT().\r
 \r
   @param  FirstString   Pointer to a Null-terminated ASCII string.\r
   @param  SecondString  Pointer to a Null-terminated ASCII string.\r
@@ -1531,6 +1538,8 @@ AsciiStrCat (
   If Length > 0 and Destination is NULL, then ASSERT().\r
   If Length > 0 and Source is NULL, then ASSERT().\r
   If Source and Destination overlap, then ASSERT().\r
+  If PcdMaximumAsciiStringLength is not zero, and Length is greater than\r
+  PcdMaximumAsciiStringLength, then ASSERT().\r
   If PcdMaximumAsciiStringLength is not zero, and Destination contains more than\r
   PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,\r
   then ASSERT().\r
@@ -1539,8 +1548,7 @@ AsciiStrCat (
   then ASSERT().\r
   If PcdMaximumAsciiStringLength is not zero, and concatenating Destination and\r
   Source results in a ASCII string with more than PcdMaximumAsciiStringLength\r
-  ASCII characters, not including the Null-terminator, and Length is greater than \r
-  PcdMaximumAsciiStringLength, then ASSERT()..\r
+  ASCII characters, not including the Null-terminator, then ASSERT().\r
 \r
   @param  Destination Pointer to a Null-terminated ASCII string.\r
   @param  Source      Pointer to a Null-terminated ASCII string.\r
@@ -1608,12 +1616,15 @@ AsciiStrStr (
   ASSERT (AsciiStrSize (String) != 0);\r
   ASSERT (AsciiStrSize (SearchString) != 0);\r
 \r
+  if (*SearchString == '\0') {\r
+    return (CHAR8 *) String;\r
+  }\r
+\r
   while (*String != '\0') {\r
     SearchStringTmp = SearchString;\r
     FirstMatch = String;\r
     \r
     while ((*String == *SearchStringTmp) \r
-            && (*SearchStringTmp != '\0') \r
             && (*String != '\0')) {\r
       String++;\r
       SearchStringTmp++;\r
@@ -1623,15 +1634,11 @@ AsciiStrStr (
       return (CHAR8 *) FirstMatch;\r
     }\r
 \r
-    if (SearchStringTmp == SearchString) {\r
-      //\r
-      // If no character from SearchString match,\r
-      // move the pointer to the String under search\r
-      // by one character.\r
-      //\r
-      String++;\r
+    if (*String == '\0') {\r
+      return NULL;\r
     }\r
 \r
+    String = FirstMatch + 1;\r
   }\r
 \r
   return NULL;\r
@@ -1851,7 +1858,7 @@ AsciiStrHexToUintn (
     String++;\r
   }\r
 \r
-  if (AsciiToUpper (*String) == 'X') {\r
+  if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
     ASSERT (*(String - 1) == '0');\r
     if (*(String - 1) != '0') {\r
       return 0;\r
@@ -1946,7 +1953,7 @@ AsciiStrHexToUint64 (
     String++;\r
   }\r
 \r
-  if (AsciiToUpper (*String) == 'X') {\r
+  if (InternalBaseLibAsciiToUpper (*String) == 'X') {\r
     ASSERT (*(String - 1) == '0');\r
     if (*(String - 1) != '0') {\r
       return 0;\r