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