]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Add strncasecmpa helper function
authorJan Janssen <medhefgo@web.de>
Thu, 2 Dec 2021 12:06:07 +0000 (13:06 +0100)
committerJan Janssen <medhefgo@web.de>
Sat, 11 Dec 2021 19:50:03 +0000 (20:50 +0100)
src/boot/efi/util.c
src/boot/efi/util.h

index 04e390b0fa79382db7a6fec57d2d3f3909b4cd78..443a3bd38001f745f7e57fd8fee19668caef15c5 100644 (file)
@@ -649,6 +649,27 @@ UINTN strnlena(const CHAR8 *p, UINTN maxlen) {
         return c;
 }
 
+INTN strncasecmpa(const CHAR8 *a, const CHAR8 *b, UINTN maxlen) {
+        if (!a || !b)
+                return CMP(a, b);
+
+        while (maxlen > 0) {
+                CHAR8 ca = *a, cb = *b;
+                if (ca >= 'A' && ca <= 'Z')
+                        ca += 'a' - 'A';
+                if (cb >= 'A' && cb <= 'Z')
+                        cb += 'a' - 'A';
+                if (!ca || ca != cb)
+                        return ca - cb;
+
+                a++;
+                b++;
+                maxlen--;
+        }
+
+        return 0;
+}
+
 CHAR8 *xstrndup8(const CHAR8 *p, UINTN sz) {
         CHAR8 *n;
 
index 425d25d73f9b0d8d889c80322efb51b0d078d7df..07ffcdc1ef904c2131dc0530243ddbdae0558f10 100644 (file)
@@ -130,6 +130,10 @@ EFI_STATUS readdir_harder(EFI_FILE_HANDLE handle, EFI_FILE_INFO **buffer, UINTN
 
 UINTN strnlena(const CHAR8 *p, UINTN maxlen);
 CHAR8 *xstrndup8(const CHAR8 *p, UINTN sz);
+INTN strncasecmpa(const CHAR8 *a, const CHAR8 *b, UINTN maxlen);
+static inline BOOLEAN strncaseeqa(const CHAR8 *a, const CHAR8 *b, UINTN maxlen) {
+        return strncasecmpa(a, b, maxlen) == 0;
+}
 
 BOOLEAN is_ascii(const CHAR16 *f);