1 /*
2 * Copyright 2014, General Dynamics C4 Systems
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7 #include <config.h>
8 #include <assert.h>
9 #include <string.h>
10
strnlen(const char * s,word_t maxlen)11 word_t strnlen(const char *s, word_t maxlen)
12 {
13 word_t len;
14 for (len = 0; len < maxlen && s[len]; len++);
15 return len;
16 }
17
strlcpy(char * dest,const char * src,word_t size)18 word_t strlcpy(char *dest, const char *src, word_t size)
19 {
20 word_t len;
21 for (len = 0; len + 1 < size && src[len]; len++) {
22 dest[len] = src[len];
23 }
24 dest[len] = '\0';
25 return len;
26 }
27
strlcat(char * dest,const char * src,word_t size)28 word_t strlcat(char *dest, const char *src, word_t size)
29 {
30 word_t len;
31 /* get to the end of dest */
32 for (len = 0; len < size && dest[len]; len++);
33 /* check that dest was at least 'size' length to prevent inserting
34 * a null byte when we shouldn't */
35 if (len < size) {
36 for (; len + 1 < size && *src; len++, src++) {
37 dest[len] = *src;
38 }
39 dest[len] = '\0';
40 }
41 return len;
42 }
43