116dce513Schristos /* memcmp -- compare two memory regions. 216dce513Schristos This function is in the public domain. */ 316dce513Schristos 416dce513Schristos /* 516dce513Schristos 616dce513Schristos @deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @ 716dce513Schristos size_t @var{count}) 816dce513Schristos 916dce513Schristos Compares the first @var{count} bytes of two areas of memory. Returns 1016dce513Schristos zero if they are the same, a value less than zero if @var{x} is 1116dce513Schristos lexically less than @var{y}, or a value greater than zero if @var{x} 1216dce513Schristos is lexically greater than @var{y}. Note that lexical order is determined 1316dce513Schristos as if comparing unsigned char arrays. 1416dce513Schristos 1516dce513Schristos @end deftypefn 1616dce513Schristos 1716dce513Schristos */ 1816dce513Schristos 1916dce513Schristos #include <ansidecl.h> 2016dce513Schristos #include <stddef.h> 2116dce513Schristos 2216dce513Schristos int memcmp(const void * str1,const void * str2,size_t count)23*e992f068Schristosmemcmp (const void *str1, const void *str2, size_t count) 2416dce513Schristos { 2516dce513Schristos register const unsigned char *s1 = (const unsigned char*)str1; 2616dce513Schristos register const unsigned char *s2 = (const unsigned char*)str2; 2716dce513Schristos 2816dce513Schristos while (count-- > 0) 2916dce513Schristos { 3016dce513Schristos if (*s1++ != *s2++) 3116dce513Schristos return s1[-1] < s2[-1] ? -1 : 1; 3216dce513Schristos } 3316dce513Schristos return 0; 3416dce513Schristos } 3516dce513Schristos 36