string/strchr/strnul.h \
string/strchr/strrspn.c \
string/strchr/strrspn.h \
+ string/strcmp/strcaseeq.c \
+ string/strcmp/strcaseeq.h \
string/strcmp/streq.c \
string/strcmp/streq.h \
string/strcpy/stpecpy.c \
--- /dev/null
+// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+#include <config.h>
+
+#include <stdbool.h>
+
+#include "string/strcmp/strcaseeq.h"
+
+
+extern inline bool strcaseeq(const char *s1, const char *s2);
--- /dev/null
+// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+#ifndef SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEEQ_H_
+#define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEEQ_H_
+
+
+#include <config.h>
+
+#include <stdbool.h>
+#include <strings.h>
+
+#include "attr.h"
+
+
+ATTR_STRING(1) ATTR_STRING(2)
+inline bool strcaseeq(const char *s1, const char *s2);
+
+
+// streq(), but case-insensitive.
+inline bool
+strcaseeq(const char *s1, const char *s2)
+{
+ return strcasecmp(s1, s2) == 0;
+}
+
+
+#endif // include guard