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