Introduction
Introduction Statistics Contact Development Disclaimer Help
libc/wchar: Add wcsncmp() - scc - simple c99 compiler
git clone git://git.simple-cc.org/scc
Log
Files
Refs
Submodules
README
LICENSE
---
commit 01921365fc084e3b592c00bdd090d0d457502904
parent e5399b363bcd8af06edc6bb4ba9edb034bcbe728
Author: Roberto E. Vargas Caballero <[email protected]>
Date: Fri, 21 Mar 2025 19:21:44 +0100
libc/wchar: Add wcsncmp()
Diffstat:
M src/libc/objs/common-objs.mk | 1 +
A src/libc/wchar/wcsncmp.c | 18 ++++++++++++++++++
M tests/libc/execute/.gitignore | 1 +
A tests/libc/execute/0046-wcsncmp.c | 30 ++++++++++++++++++++++++++++++
M tests/libc/execute/libc-tests.lst | 1 +
5 files changed, 51 insertions(+), 0 deletions(-)
---
diff --git a/src/libc/objs/common-objs.mk b/src/libc/objs/common-objs.mk
@@ -128,6 +128,7 @@ COMMON_OBJS =\
wchar/wcrtomb.$O\
wchar/wcslen.$O\
wchar/wcscmp.$O\
+ wchar/wcsncmp.$O\
wchar/wcsrtombs.$O\
wchar/wcwidth.$O\
wchar/putwc.$O\
diff --git a/src/libc/wchar/wcsncmp.c b/src/libc/wchar/wcsncmp.c
@@ -0,0 +1,18 @@
+#include <wchar.h>
+
+#undef wcsncmp
+
+int
+wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n)
+{
+ unsigned long l1, l2;
+
+ for ( ; n > 0 && *s1 == *s2; --n)
+ ++s1, ++s2;
+
+ if (n == 0)
+ return 0;
+ l1 = *s1, l2 = *s2;
+
+ return l1 - l2;
+}
diff --git a/tests/libc/execute/.gitignore b/tests/libc/execute/.gitignore
@@ -41,4 +41,5 @@
0041-mbrlen
0044-wcslen
0045-wcscmp
+0046-wcsncmp
test.log
diff --git a/tests/libc/execute/0046-wcsncmp.c b/tests/libc/execute/0046-wcsncm…
@@ -0,0 +1,30 @@
+#include <assert.h>
+#include <stdio.h>
+#include <wchar.h>
+
+/*
+output:
+testing
+done
+end:
+*/
+
+int
+main(void)
+{
+ wchar_t t1[] = {0};
+ wchar_t t2[] = {0};
+ wchar_t t3[] = {0x31, 0};
+ wchar_t t4[] = {0x31, 0};
+ wchar_t t5[] = {0x32, 0x33, 0};
+
+ puts("testing");
+ assert(wcsncmp(t1, t1, 0) == 0);
+ assert(wcsncmp(t1, t2, 0) == 0);
+ assert(wcsncmp(t3, t4, 1) == 0);
+ assert(wcsncmp(t3, t5, 1) < 0);
+ assert(wcsncmp(t5, t3, 1) > 0);
+ puts("done");
+
+ return 0;
+}
diff --git a/tests/libc/execute/libc-tests.lst b/tests/libc/execute/libc-tests.…
@@ -40,3 +40,4 @@
0041-mbrlen
0044-wcslen
0045-wcscmp
+0046-wcsncmp
You are viewing proxied material from gopher.simple-cc.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.