]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
tools/nolibc: add tolower() and toupper()
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Fri, 11 Apr 2025 09:00:42 +0000 (11:00 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Tue, 22 Apr 2025 08:56:26 +0000 (10:56 +0200)
The kselftest harness uses these functions.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Acked-by: Willy Tarreau <w@1wt.eu>
tools/include/nolibc/string.h
tools/testing/selftests/nolibc/nolibc-test.c

index ba84ab700e3001a7d105e1c9e40c01bf45db9d8c..f0d335f0e467ec870066811289dfd11e46e60a92 100644 (file)
@@ -289,6 +289,23 @@ char *strrchr(const char *s, int c)
        return (char *)ret;
 }
 
+static __attribute__((unused))
+int tolower(int c)
+{
+       if (c >= 'A' && c <= 'Z')
+               return c - 'A' + 'a';
+       return c;
+}
+
+static __attribute__((unused))
+int toupper(int c)
+{
+       if (c >= 'a' && c <= 'z')
+               return c - 'a' + 'A';
+       return c;
+}
+
+
 /* make sure to include all global symbols */
 #include "nolibc.h"
 
index 143dddfcd01a4b35ae7642387911e0f3a3ca606c..b6f736fdeadf3b99b5e203824d3c211e22ee92f4 100644 (file)
@@ -39,6 +39,7 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <limits.h>
+#include <ctype.h>
 #endif
 #endif
 
@@ -1280,6 +1281,10 @@ int run_stdlib(int min, int max)
                CASE_TEST(strerror_EINVAL);         EXPECT_STREQ(is_nolibc, strerror(EINVAL), "errno=22"); break;
                CASE_TEST(strerror_int_max);        EXPECT_STREQ(is_nolibc, strerror(INT_MAX), "errno=2147483647"); break;
                CASE_TEST(strerror_int_min);        EXPECT_STREQ(is_nolibc, strerror(INT_MIN), "errno=-2147483648"); break;
+               CASE_TEST(tolower);                 EXPECT_EQ(1, tolower('A'), 'a'); break;
+               CASE_TEST(tolower_noop);            EXPECT_EQ(1, tolower('a'), 'a'); break;
+               CASE_TEST(toupper);                 EXPECT_EQ(1, toupper('a'), 'A'); break;
+               CASE_TEST(toupper_noop);            EXPECT_EQ(1, toupper('A'), 'A'); break;
 
                case __LINE__:
                        return ret; /* must be last */