OSDN Git Service

127ae0c8019d237429add30809d2a4016855e86d
[pf3gnuchains/gcc-fork.git] / libiberty / memcmp.c
1 /* memcmp -- compare two memory regions.
2    This function is in the public domain.  */
3
4 /*
5 NAME
6         memcmp -- compare two memory regions
7
8 SYNOPSIS
9         int memcmp (const void *from, const void *to, size_t count)
10
11 DESCRIPTION
12         Compare two memory regions and return less than,
13         equal to, or greater than zero, according to lexicographical
14         ordering of the compared regions.
15 */
16
17 #include <ansidecl.h>
18 #ifdef __STDC__
19 #include <stddef.h>
20 #else
21 #define size_t unsigned long
22 #endif
23
24 int
25 DEFUN(memcmp, (str1, str2, count),
26       const PTR str1 AND const PTR str2 AND size_t count)
27 {
28   register unsigned char *s1 = (unsigned char*)str1;
29   register unsigned char *s2 = (unsigned char*)str2;
30
31   while (count-- > 0)
32     {
33       if (*s1++ != *s2++)
34           return s1[-1] < s2[-1] ? -1 : 1;
35     }
36   return 0;
37 }
38