1 1.1 christos /* $NetBSD: wcsncasecmp.c,v 1.1 2006/08/22 20:50:46 christos Exp $ */ 2 1.1 christos 3 1.1 christos #include <sys/cdefs.h> 4 1.1 christos #if defined(LIBC_SCCS) && !defined(lint) 5 1.1 christos __RCSID("$NetBSD: wcsncasecmp.c,v 1.1 2006/08/22 20:50:46 christos Exp $"); 6 1.1 christos #endif /* LIBC_SCCS and not lint */ 7 1.1 christos 8 1.1 christos #include "namespace.h" 9 1.1 christos #include <assert.h> 10 1.1 christos #include <wchar.h> 11 1.1 christos #include <wctype.h> 12 1.1 christos 13 1.1 christos __weak_alias(wcsncasecmp,_wcsncasecmp) 14 1.1 christos 15 1.1 christos int 16 1.1 christos wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n) 17 1.1 christos { 18 1.1 christos int lc1 = 0; 19 1.1 christos int lc2 = 0; 20 1.1 christos int diff = 0; 21 1.1 christos 22 1.1 christos _DIAGASSERT(s1); 23 1.1 christos _DIAGASSERT(s2); 24 1.1 christos 25 1.1 christos while (n--) { 26 1.1 christos lc1 = towlower (*s1); 27 1.1 christos lc2 = towlower (*s2); 28 1.1 christos 29 1.1 christos diff = lc1 - lc2; 30 1.1 christos if (diff) 31 1.1 christos return diff; 32 1.1 christos 33 1.1 christos if (!lc1) 34 1.1 christos return 0; 35 1.1 christos 36 1.1 christos ++s1; 37 1.1 christos ++s2; 38 1.1 christos } 39 1.1 christos 40 1.1 christos return 0; 41 1.1 christos } 42