blob: 6c3e2cc274c5546ce64709e444701bdec582390b [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Arnaldo Carvalho de Melo4ddd3272015-11-16 11:36:29 -03002#ifndef _TOOLS_LINUX_STRING_H_
3#define _TOOLS_LINUX_STRING_H_
4
Arnaldo Carvalho de Melo4ddd3272015-11-16 11:36:29 -03005#include <linux/types.h> /* for size_t */
Arnaldo Carvalho de Melo8e99b6d2017-07-20 15:27:39 -03006#include <string.h>
Arnaldo Carvalho de Melo4ddd3272015-11-16 11:36:29 -03007
8void *memdup(const void *src, size_t len);
9
Wang Nan7d85c432015-11-16 11:42:05 -030010int strtobool(const char *s, bool *res);
11
Vineet Gupta0215d592016-08-18 09:28:23 -070012/*
13 * glibc based builds needs the extern while uClibc doesn't.
14 * However uClibc headers also define __GLIBC__ hence the hack below
15 */
16#if defined(__GLIBC__) && !defined(__UCLIBC__)
Josh Poimboeufce990912015-12-15 09:39:33 -060017extern size_t strlcpy(char *dest, const char *src, size_t size);
18#endif
19
Arnaldo Carvalho de Meloc8b5f2c2016-07-06 11:56:20 -030020char *str_error_r(int errnum, char *buf, size_t buflen);
21
Arnaldo Carvalho de Melo8e99b6d2017-07-20 15:27:39 -030022/**
23 * strstarts - does @str start with @prefix?
24 * @str: string to examine
25 * @prefix: prefix to look for.
26 */
27static inline bool strstarts(const char *str, const char *prefix)
28{
29 return strncmp(str, prefix, strlen(prefix)) == 0;
30}
Arnaldo Carvalho de Melo96395cb2017-04-26 15:49:21 -030031
Arnaldo Carvalho de Melo4ddd3272015-11-16 11:36:29 -030032#endif /* _LINUX_STRING_H_ */