xref: /openbsd-src/gnu/lib/libiberty/src/strncmp.c (revision 150b7e42cfa21e6546d96ae514ca23e80d970ac7)
12e0724c7Sespie /* strncmp -- compare two strings, stop after n bytes.
22e0724c7Sespie    This function is in the public domain.  */
32e0724c7Sespie 
49588ddcfSespie /*
59588ddcfSespie 
69588ddcfSespie @deftypefn Supplemental int strncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})
79588ddcfSespie 
89588ddcfSespie Compares the first @var{n} bytes of two strings, returning a value as
99588ddcfSespie @code{strcmp}.
109588ddcfSespie 
119588ddcfSespie @end deftypefn
129588ddcfSespie 
139588ddcfSespie */
149588ddcfSespie 
152e0724c7Sespie #include <ansidecl.h>
162e0724c7Sespie #include <stddef.h>
172e0724c7Sespie 
182e0724c7Sespie int
strncmp(const char * s1,const char * s2,register size_t n)19*150b7e42Smiod strncmp(const char *s1, const char *s2, register size_t n)
202e0724c7Sespie {
212e0724c7Sespie   register unsigned char u1, u2;
222e0724c7Sespie 
232e0724c7Sespie   while (n-- > 0)
242e0724c7Sespie     {
252e0724c7Sespie       u1 = (unsigned char) *s1++;
262e0724c7Sespie       u2 = (unsigned char) *s2++;
272e0724c7Sespie       if (u1 != u2)
282e0724c7Sespie 	return u1 - u2;
292e0724c7Sespie       if (u1 == '\0')
302e0724c7Sespie 	return 0;
312e0724c7Sespie     }
322e0724c7Sespie   return 0;
332e0724c7Sespie }
34