merge from gcc
[platform/upstream/binutils.git] / libiberty / strncmp.c
1 /* strncmp -- compare two strings, stop after n bytes.
2    This function is in the public domain.  */
3
4 /*
5
6 @deftypefn Supplemental int strncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})
7
8 Compares the first @var{n} bytes of two strings, returning a value as
9 @code{strcmp}.
10
11 @end deftypefn
12
13 */
14
15 #include <ansidecl.h>
16 #ifdef __STDC__
17 #include <stddef.h>
18 #else
19 #define size_t unsigned long
20 #endif
21
22 int
23 strncmp(s1, s2, n)
24      const char *s1, *s2;
25      register size_t n;
26 {
27   register unsigned char u1, u2;
28
29   while (n-- > 0)
30     {
31       u1 = (unsigned char) *s1++;
32       u2 = (unsigned char) *s2++;
33       if (u1 != u2)
34         return u1 - u2;
35       if (u1 == '\0')
36         return 0;
37     }
38   return 0;
39 }