diff --git a/components/esp_libc/platform_include/stdio.h b/components/esp_libc/platform_include/stdio.h index 2322f9a8dd..46ac1bae27 100644 --- a/components/esp_libc/platform_include/stdio.h +++ b/components/esp_libc/platform_include/stdio.h @@ -4,16 +4,39 @@ * SPDX-License-Identifier: Apache-2.0 */ #pragma once +#include "sdkconfig.h" + +#if CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY +#include +#include +/* Undefine __BSD_VISIBLE to set proper funopen declaration */ +#pragma push_macro("__BSD_VISIBLE") +#undef __BSD_VISIBLE +#endif #include_next -#include "sdkconfig.h" +#if CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY +#pragma pop_macro("__BSD_VISIBLE") +#endif #ifdef __cplusplus extern "C" { #endif #if CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY -#include + +#if __BSD_VISIBLE +FILE *funopen(const void *cookie, + int (*readfn)(void *cookie, char *buf, + int n), + int (*writefn)(void *cookie, const char *buf, + int n), + __off_t (*seekfn)(void *cookie, __off_t off, int whence), + int (*closefn)(void *cookie)); +# define fropen(__cookie, __fn) funopen(__cookie, __fn, NULL, NULL, NULL) +# define fwopen(__cookie, __fn) funopen(__cookie, NULL, __fn, NULL, NULL) +#endif /*__BSD_VISIBLE */ + void flockfile(FILE *); void funlockfile(FILE *); FILE *open_memstream(char **, size_t *);