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