1 #ifndef _TOOLS_LINUX_STRING_H_ 2 #define _TOOLS_LINUX_STRING_H_ 3 4 #include <linux/types.h> /* for size_t */ 5 #include <string.h> 6 7 void *memdup(const void *src, size_t len); 8 9 int strtobool(const char *s, bool *res); 10 11 /* 12 * glibc based builds needs the extern while uClibc doesn't. 13 * However uClibc headers also define __GLIBC__ hence the hack below 14 */ 15 #if defined(__GLIBC__) && !defined(__UCLIBC__) 16 extern size_t strlcpy(char *dest, const char *src, size_t size); 17 #endif 18 19 char *str_error_r(int errnum, char *buf, size_t buflen); 20 21 /** 22 * strstarts - does @str start with @prefix? 23 * @str: string to examine 24 * @prefix: prefix to look for. 25 */ 26 static inline bool strstarts(const char *str, const char *prefix) 27 { 28 return strncmp(str, prefix, strlen(prefix)) == 0; 29 } 30 31 #endif /* _LINUX_STRING_H_ */ 32