1 /*-------------------------------------------------------------------------
2 *
3 * strnlen.c
4 * Fallback implementation of strnlen().
5 *
6 *
7 * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * IDENTIFICATION
11 * src/port/strnlen.c
12 *
13 *-------------------------------------------------------------------------
14 */
15
16 #include "c.h"
17
18 /*
19 * Implementation of posix' strnlen for systems where it's not available.
20 *
21 * Returns the number of characters before a null-byte in the string pointed
22 * to by str, unless there's no null-byte before maxlen. In the latter case
23 * maxlen is returned.
24 */
25 size_t
strnlen(const char * str,size_t maxlen)26 strnlen(const char *str, size_t maxlen)
27 {
28 const char *p = str;
29
30 while (maxlen-- > 0 && *p)
31 p++;
32 return p - str;
33 }
34