Upload Tizen:Base source
[external/bash.git] / lib / sh / strnlen.c
1 /* strnlen - return length of passed string, with length limit */
2
3 /* Copyright (C) 2004 Free Software Foundation, Inc.
4
5    This file is part of GNU Bash, the Bourne Again SHell.
6    
7    Bash is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    Bash is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #ifdef HAVE_CONFIG_H
22 # include <config.h>
23 #endif
24
25 #if !defined (HAVE_STRNLEN)
26
27 #include <sys/types.h>
28
29 #if defined (HAVE_UNISTD_H)
30 #  include <unistd.h>
31 #endif
32
33 #include <stdc.h>
34
35 /* Find the length of S, but scan at most MAXLEN characters.  If no '\0'
36    terminator is found within the first MAXLEN characters, return MAXLEN. */
37 size_t
38 strnlen (s, maxlen)
39      register const char *s;
40      size_t maxlen;
41 {
42   register const char *e;
43   size_t n;
44
45   for (e = s, n = 0; *e && n < maxlen; e++, n++)
46     ;
47   return n;
48 }
49 #endif