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