12a6b7db3Sskrll /* strncmp -- compare two strings, stop after n bytes.
22a6b7db3Sskrll    This function is in the public domain.  */
32a6b7db3Sskrll 
42a6b7db3Sskrll /*
52a6b7db3Sskrll 
6*05caefcfSchristos @deftypefn Supplemental int strncmp (const char *@var{s1}, @
7*05caefcfSchristos   const char *@var{s2}, size_t @var{n})
82a6b7db3Sskrll 
92a6b7db3Sskrll Compares the first @var{n} bytes of two strings, returning a value as
102a6b7db3Sskrll @code{strcmp}.
112a6b7db3Sskrll 
122a6b7db3Sskrll @end deftypefn
132a6b7db3Sskrll 
142a6b7db3Sskrll */
152a6b7db3Sskrll 
162a6b7db3Sskrll #include <ansidecl.h>
172a6b7db3Sskrll #include <stddef.h>
182a6b7db3Sskrll 
192a6b7db3Sskrll int
strncmp(const char * s1,const char * s2,register size_t n)202a6b7db3Sskrll strncmp(const char *s1, const char *s2, register size_t n)
212a6b7db3Sskrll {
222a6b7db3Sskrll   register unsigned char u1, u2;
232a6b7db3Sskrll 
242a6b7db3Sskrll   while (n-- > 0)
252a6b7db3Sskrll     {
262a6b7db3Sskrll       u1 = (unsigned char) *s1++;
272a6b7db3Sskrll       u2 = (unsigned char) *s2++;
282a6b7db3Sskrll       if (u1 != u2)
292a6b7db3Sskrll 	return u1 - u2;
302a6b7db3Sskrll       if (u1 == '\0')
312a6b7db3Sskrll 	return 0;
322a6b7db3Sskrll     }
332a6b7db3Sskrll   return 0;
342a6b7db3Sskrll }
35