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