blob: 098fded283976c79d44a21159a9c850aaa6fa6e8 [file] [log] [blame]
/*
* Copyright (c) 2012-2017 Roberto E. Vargas Caballero
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* Portions copyright (c) 2018-2025, Arm Limited and Contributors.
* Portions copyright (c) 2023, Intel Corporation. All rights reserved.
* All rights reserved.
*/
#ifndef STRING_H
#define STRING_H
#include <stddef.h>
/*
* When conditions are right, the compiler may have a baked-in call that can be
* inlined and that will be much more optimal than our generic implementation.
* When it doesn't, it will emit a call to the original function for which we
* provide an implementation.
*/
#define memcpy __builtin_memcpy
#define memset __builtin_memset
#define memcmp __builtin_memcmp
#define memchr __builtin_memchr
#define strcmp __builtin_strcmp
#define strncmp __builtin_strncmp
#define strchr __builtin_strchr
#define strlen __builtin_strlen
#define strrchr __builtin_strrchr
int memcpy_s(void *dst, size_t dsize, void *src, size_t ssize);
void *memmove(void *dst, const void *src, size_t len);
void *memrchr(const void *src, int c, size_t len);
size_t strnlen(const char *s, size_t maxlen);
size_t strlcpy(char * dst, const char * src, size_t dsize);
size_t strlcat(char * dst, const char * src, size_t dsize);
char *strtok_r(char *s, const char *delim, char **last);
size_t strnlen_secure(const char *str, size_t maxlen);
int strcpy_secure(char *restrict dest, size_t dest_size, const char *restrict src);
#endif /* STRING_H */