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