1 /*
2  * Copyright (C) 2002     Manuel Novoa III
3  * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
4  *
5  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
6  */
7 
8 #include "_string.h"
9 
10 #ifdef WANT_WIDE
11 # define Wstrncmp wcsncmp
12 #else
13 # define Wstrncmp strncmp
14 #endif
15 
Wstrncmp(register const Wchar * s1,register const Wchar * s2,size_t n)16 int Wstrncmp(register const Wchar *s1, register const Wchar *s2, size_t n)
17 {
18 #ifdef WANT_WIDE
19 	while (n && (*((Wuchar *)s1) == *((Wuchar *)s2))) {
20 		if (!*s1++) {
21 			return 0;
22 		}
23 		++s2;
24 		--n;
25 	}
26 
27 	return (n == 0) ? 0 : (*((Wuchar *)s1) - *((Wuchar *)s2));
28 #else
29 	int r = 0;
30 
31 	while (n--
32 		   && ((r = ((int)(*((unsigned char *)s1))) - *((unsigned char *)s2++))
33 			== 0)
34 		   && *s1++);
35 
36 	return r;
37 #endif
38 }
39 #ifndef WANT_WIDE
40 libc_hidden_weak(strncmp)
41 #endif
42