xref: /reactos/sdk/lib/crt/mem/memicmp.c (revision 0b366ea1)
1 /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
2 #include <precomp.h>
3 
4 /*
5  * @implemented
6  */
7 int
8 CDECL
9 _memicmp(const void *s1, const void *s2, size_t n)
10 {
11     if (NtCurrentPeb()->OSMajorVersion >= 6)
12     {
13         if (!s1 || !s2)
14         {
15             if (n != 0)
16             {
17                 MSVCRT_INVALID_PMT(NULL, EINVAL);
18                 return _NLSCMPERROR;
19             }
20             return 0;
21         }
22     }
23 
24   if (n != 0)
25   {
26     const unsigned char *p1 = s1, *p2 = s2;
27 
28     do {
29       if (toupper(*p1) != toupper(*p2))
30 	return (*p1 - *p2);
31       p1++;
32       p2++;
33     } while (--n != 0);
34   }
35   return 0;
36 }
37