Browse Source

libc/newlib: Wrap <string.h> to define strnlen and strtok_r when needed

Newlib doesn't have Zephyr support, so we need to define these functions
when the application doesn't ask for the right level of POSIX support.

Signed-off-by: Keith Packard <keithp@keithp.com>
pull/68443/head
Keith Packard 2 years ago committed by Carles Cufí
parent
commit
e569a13d39
  1. 37
      lib/libc/newlib/include/string.h

37
lib/libc/newlib/include/string.h

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
/*
* Copyright © 2024 Keith Packard <keithp@keithp.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_LIB_LIBC_NEWLIB_INCLUDE_STRING_H_
#define ZEPHYR_LIB_LIBC_NEWLIB_INCLUDE_STRING_H_
/* This should work on GCC and clang.
*
* If we need to support a toolchain without #include_next the CMake
* infrastructure should be used to identify it and provide an
* alternative solution.
*/
#include_next <string.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Define these two Zephyr APIs when _POSIX_C_SOURCE is not set to expose
* them from newlib
*/
#if !__MISC_VISIBLE && !__POSIX_VISIBLE
char *strtok_r(char *__restrict, const char *__restrict, char **__restrict);
#endif
#if __POSIX_VISIBLE < 200809L
size_t strnlen(const char *, size_t);
#endif
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_LIB_LIBC_NEWLIB_INCLUDE_STRING_H_ */
Loading…
Cancel
Save