From 03109eb013c4603de2b074af9a43649ef74ee35b Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 8 Jul 2021 15:53:58 +0200 Subject: [PATCH] newlib: add C++ guards to the platform-specific dirent.h Before newlib 3.3.0, bundled in newlib did not include any function declarations. Instead, the file included the platform- specific . This inclusion was inside a C++ guard block. ESP-IDF provided sys/dirent.h inside newlib component, and this file contained all the necessary function and structure declarations. Since https://github.com/espressif/newlib-esp32/commit/da418955f5dca2f8570561c5dd6e79e25ebaeba2, common function declarations have been added to in newlib. However, the inclusion of sys/dirent.h has been moved out of the C++ guard block. However we didn't notice this change and did not update sys/dirent.h in ESP-IDF newlib component to and the now-required C++ guards there. This commit adds the missing C++ guards to the platform-specific sys/dirent.h. The declarations of common dirent.h functions are now present both in (provided by newlib) and in sys/dirent.h (provided by IDF). We keep the declarations in sys/dirent.h for compatibility, since some ESP-IDF files and applications may include directly, rather than . Closes https://github.com/espressif/esp-idf/issues/7204 --- components/newlib/platform_include/sys/dirent.h | 11 ++++++++++- tools/ci/check_public_headers_exceptions.txt | 2 -- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/components/newlib/platform_include/sys/dirent.h b/components/newlib/platform_include/sys/dirent.h index 4626ae14d2..bfa49f5ea4 100644 --- a/components/newlib/platform_include/sys/dirent.h +++ b/components/newlib/platform_include/sys/dirent.h @@ -19,11 +19,16 @@ /** * This header file provides POSIX-compatible definitions of directory - * access functions and related data types. + * access data types. Starting with newlib 3.3, related functions are defined + * in 'dirent.h' bundled with newlib. * See http://pubs.opengroup.org/onlinepubs/7908799/xsh/dirent.h.html * for reference. */ +#ifdef __cplusplus +extern "C" { +#endif + /** * @brief Opaque directory structure */ @@ -57,3 +62,7 @@ void seekdir(DIR* pdir, long loc); void rewinddir(DIR* pdir); int closedir(DIR* pdir); int readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent); + +#ifdef __cplusplus +} +#endif diff --git a/tools/ci/check_public_headers_exceptions.txt b/tools/ci/check_public_headers_exceptions.txt index fe42aecfcd..b0756d1141 100644 --- a/tools/ci/check_public_headers_exceptions.txt +++ b/tools/ci/check_public_headers_exceptions.txt @@ -34,8 +34,6 @@ components/lwip/port/esp32/include/arch/cc.h components/lwip/port/esp32/include/debug/lwip_debug.h components/lwip/port/esp32/include/arch/cc.h -components/vfs/include/sys/dirent.h - components/esp_wifi/esp32/include/phy_init_data.h components/spi_flash/include/spi_flash_chip_issi.h