xref: /netbsd-src/external/gpl3/gcc/dist/libiberty/strnlen.c (revision 48fb7bfab72acd4281a53bbee5ccf3f809019e75)
1*48fb7bfaSmrg /* Portable version of strnlen.
2*48fb7bfaSmrg    This function is in the public domain.  */
3*48fb7bfaSmrg 
4*48fb7bfaSmrg /*
5*48fb7bfaSmrg 
6*48fb7bfaSmrg @deftypefn Supplemental size_t strnlen (const char *@var{s}, size_t @var{maxlen})
7*48fb7bfaSmrg 
8*48fb7bfaSmrg Returns the length of @var{s}, as with @code{strlen}, but never looks
9*48fb7bfaSmrg past the first @var{maxlen} characters in the string.  If there is no
10*48fb7bfaSmrg '\0' character in the first @var{maxlen} characters, returns
11*48fb7bfaSmrg @var{maxlen}.
12*48fb7bfaSmrg 
13*48fb7bfaSmrg @end deftypefn
14*48fb7bfaSmrg 
15*48fb7bfaSmrg */
16*48fb7bfaSmrg 
17*48fb7bfaSmrg #include "config.h"
18*48fb7bfaSmrg 
19*48fb7bfaSmrg #include <stddef.h>
20*48fb7bfaSmrg 
21*48fb7bfaSmrg size_t
strnlen(const char * s,size_t maxlen)22*48fb7bfaSmrg strnlen (const char *s, size_t maxlen)
23*48fb7bfaSmrg {
24*48fb7bfaSmrg   size_t i;
25*48fb7bfaSmrg 
26*48fb7bfaSmrg   for (i = 0; i < maxlen; ++i)
27*48fb7bfaSmrg     if (s[i] == '\0')
28*48fb7bfaSmrg       break;
29*48fb7bfaSmrg   return i;
30*48fb7bfaSmrg }
31