blob: 10414d358424bf014d50700b55295f1c31c3290e [file] [log] [blame]
Jari Aalto31859422009-01-12 13:36:28 +00001/* strnlen - return length of passed string, with length limit */
2
Jari Aalto95732b42005-12-07 14:08:12 +00003/* Copyright (C) 2004 Free Software Foundation, Inc.
4
Jari Aalto31859422009-01-12 13:36:28 +00005 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.
Jari Aalto95732b42005-12-07 14:08:12 +000011
Jari Aalto31859422009-01-12 13:36:28 +000012 Bash is distributed in the hope that it will be useful,
Jari Aalto95732b42005-12-07 14:08:12 +000013 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
Jari Aalto31859422009-01-12 13:36:28 +000018 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
Jari Aalto95732b42005-12-07 14:08:12 +000020
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. */
37size_t
38strnlen (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