Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | /* memcmp -- compare two memory regions. |
2 | This function is in the public domain. */ | |
3 | ||
4 | /* | |
252b5132 | 5 | |
d4d868a2 RW |
6 | @deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @ |
7 | size_t @var{count}) | |
39423523 DD |
8 | |
9 | Compares the first @var{count} bytes of two areas of memory. Returns | |
10 | zero if they are the same, a value less than zero if @var{x} is | |
11 | lexically less than @var{y}, or a value greater than zero if @var{x} | |
12 | is lexically greater than @var{y}. Note that lexical order is determined | |
13 | as if comparing unsigned char arrays. | |
14 | ||
15 | @end deftypefn | |
252b5132 | 16 | |
252b5132 RH |
17 | */ |
18 | ||
19 | #include <ansidecl.h> | |
252b5132 | 20 | #include <stddef.h> |
252b5132 RH |
21 | |
22 | int | |
49b1fae4 | 23 | memcmp (const PTR str1, const PTR str2, size_t count) |
252b5132 | 24 | { |
eb383413 L |
25 | register const unsigned char *s1 = (const unsigned char*)str1; |
26 | register const unsigned char *s2 = (const unsigned char*)str2; | |
252b5132 RH |
27 | |
28 | while (count-- > 0) | |
29 | { | |
30 | if (*s1++ != *s2++) | |
31 | return s1[-1] < s2[-1] ? -1 : 1; | |
32 | } | |
33 | return 0; | |
34 | } | |
35 |