1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 /* This source code was extracted from the Q8 package created and placed
7 in the PUBLIC DOMAIN by Doug Gwyn <gwyn@arl.mil>
8 last edit: 1999/11/05 gwyn@arl.mil
9
10 Implements subclause 7.24 of ISO/IEC 9899:1999 (E).
11
12 It supports an encoding where all char codes are mapped
13 to the *same* code values within a wchar_t or wint_t,
14 so long as no other wchar_t codes are used by the program.
15
16 */
17
18 #define __CRT__NO_INLINE
19 #include <wchar.h>
20
21 #if 0
22 int
23 wmemcmp(s1, s2, n)
24 register const wchar_t *s1;
25 register const wchar_t *s2;
26 size_t n;
27 {
28 if ( n == 0 || s1 == s2 )
29 return 0; /* even for NULL pointers */
30
31 if ( (s1 != NULL) != (s2 != NULL) )
32 return s2 == NULL ? 1 : -1; /* robust */
33
34 for ( ; n > 0; ++s1, ++s2, --n )
35 if ( *s1 != *s2 )
36 return *s1 - *s2;
37
38 return 0;
39 }
40 #endif
41
wmemcmp(const wchar_t * _S1,const wchar_t * _S2,size_t _N)42 int __cdecl wmemcmp(const wchar_t *_S1,const wchar_t *_S2,size_t _N)
43 {
44 if (_N == 0 || _S1 == _S2)
45 return 0; /* even for NULL pointers */
46
47 if ((_S1 != NULL) != (_S2 != NULL))
48 return _S2 == NULL ? 1 : -1; /* robust */
49
50 for ( ; 0 < _N; ++_S1, ++_S2, --_N)
51 if (*_S1 != *_S2)
52 return (*_S1 < *_S2 ? -1 : +1);
53
54 return 0;
55 }
56
57