WolfSSL: Use a custom UTF-8 aware _stat on Windows

This commit is contained in:
Silent 2022-01-15 12:20:48 +01:00 committed by Megamouse
parent 791ee013ac
commit c5748983f6
4 changed files with 18 additions and 7 deletions

View File

@ -7,7 +7,7 @@ if(USE_SYSTEM_CURL)
target_link_libraries(libcurl INTERFACE CURL::libcurl) target_link_libraries(libcurl INTERFACE CURL::libcurl)
else() else()
message("-- RPCS3: building libcurl + wolfssl submodules") message("-- RPCS3: building libcurl + wolfssl submodules")
add_compile_definitions(HAVE_SNI) add_compile_definitions(HAVE_SNI OPENSSL_EXTRA)
option(BUILD_CURL_EXE "Set to ON to build curl executable." OFF) option(BUILD_CURL_EXE "Set to ON to build curl executable." OFF)
option(CMAKE_USE_WOLFSSL "enable wolfSSL for SSL/TLS" ON) option(CMAKE_USE_WOLFSSL "enable wolfSSL for SSL/TLS" ON)
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" ON) option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" ON)

View File

@ -67,7 +67,9 @@ extern FILE* wolfSSL_fopen_utf8(const char* name, const char* mode);
#define XFFLUSH fflush #define XFFLUSH fflush
#include <sys/stat.h> #include <sys/stat.h>
#define XSTAT _stat extern int wolfSSL_stat_utf8(const char* path, struct _stat* buffer);
#define XSTAT wolfSSL_stat_utf8
#define XSTAT_TYPE struct _stat
#define XS_ISREG(s) (s & _S_IFREG) #define XS_ISREG(s) (s & _S_IFREG)
#define SEPARATOR_CHAR ';' #define SEPARATOR_CHAR ';'

View File

@ -101,9 +101,7 @@
<ClCompile Include="wolfssl\wolfcrypt\src\ge_low_mem.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\ge_low_mem.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\ge_operations.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\ge_operations.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\hash.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\hash.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\hc128.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\hmac.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\hmac.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\idea.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\integer.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\integer.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\kdf.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\kdf.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\logging.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\logging.c" />
@ -115,10 +113,11 @@
<ClCompile Include="wolfssl\wolfcrypt\src\pkcs12.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\pkcs12.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\poly1305.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\poly1305.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\pwdbased.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\pwdbased.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\rabbit.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\random.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\random.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\rc2.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\ripemd.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\ripemd.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\rsa.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\rsa.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\sakke.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\sha.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\sha.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\sha256.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\sha256.c" />
<ClCompile Include="wolfssl\wolfcrypt\src\sha3.c" /> <ClCompile Include="wolfssl\wolfcrypt\src\sha3.c" />

View File

@ -67,9 +67,19 @@ std::string curl_handle::get_verbose_error(CURLcode code)
} }
#ifdef _WIN32 #ifdef _WIN32
// Function exported from our user_settings.h in WolfSSL, implemented in RPCS3 // Functions exported from our user_settings.h in WolfSSL, implemented in RPCS3
extern "C" FILE* wolfSSL_fopen_utf8(const char* name, const char* mode) extern "C"
{
FILE* wolfSSL_fopen_utf8(const char* name, const char* mode)
{ {
return _wfopen(utf8_to_wchar(name).c_str(), utf8_to_wchar(mode).c_str()); return _wfopen(utf8_to_wchar(name).c_str(), utf8_to_wchar(mode).c_str());
} }
int wolfSSL_stat_utf8(const char* path, struct _stat* buffer)
{
return _wstat(utf8_to_wchar(path).c_str(), buffer);
}
}
#endif #endif