Home | History | Annotate | Download | only in libiberty
      1 /* memcmp -- compare two memory regions.
      2    This function is in the public domain.  */
      3 
      4 /*
      5 
      6 @deftypefn Supplemental int memcmp (const void *@var{x}, const void *@var{y}, @
      7   size_t @var{count})
      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
     16 
     17 */
     18 
     19 #include <ansidecl.h>
     20 #include <stddef.h>
     21 
     22 int
     23 memcmp (const PTR str1, const PTR str2, size_t count)
     24 {
     25   register const unsigned char *s1 = (const unsigned char*)str1;
     26   register const unsigned char *s2 = (const unsigned char*)str2;
     27 
     28   while (count-- > 0)
     29     {
     30       if (*s1++ != *s2++)
     31 	  return s1[-1] < s2[-1] ? -1 : 1;
     32     }
     33   return 0;
     34 }
     35 
     36