diff options
author | bors <bors@rust-lang.org> | 2022-08-08 11:26:21 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-08-08 11:26:21 +0000 |
commit | af34f07aa75b8bc1255ed00c963971f8eb79ab30 (patch) | |
tree | b965be4da02c8a83f5aa45da82ae8576b072d606 | |
parent | 9d4e7802112e3d3186bdd0191a036281506c28b7 (diff) | |
parent | 2ec8995d01e8190d56220552538234215fa3d293 (diff) | |
download | rust-libc-af34f07aa75b8bc1255ed00c963971f8eb79ab30.tar.gz |
Auto merge of #2861 - Tastaturtaste:master, r=Amanieu
Fix for https://github.com/rust-lang/libc/issues/2860
This PR is intended to fix https://github.com/rust-lang/libc/issues/2860.
As indicated in the issue, this fix requires linking against "legacy_stdio_definitions.lib", [which is only provided with Visual Studio >=15](https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp?view=msvc-170#libraries). I don't know how this could be checked conditionally at compile time though.
-rw-r--r-- | src/windows/mod.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/windows/mod.rs b/src/windows/mod.rs index 08cba4edd0..acb0de9895 100644 --- a/src/windows/mod.rs +++ b/src/windows/mod.rs @@ -277,6 +277,16 @@ impl ::Clone for fpos_t { } } +// Special handling for all print and scan type functions because of https://github.com/rust-lang/libc/issues/2860 +#[cfg_attr( + all(windows, target_env = "msvc"), + link(name = "legacy_stdio_definitions") +)] +extern "C" { + pub fn printf(format: *const c_char, ...) -> ::c_int; + pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int; +} + extern "C" { pub fn isalnum(c: c_int) -> c_int; pub fn isalpha(c: c_int) -> c_int; @@ -319,8 +329,6 @@ extern "C" { pub fn feof(stream: *mut FILE) -> c_int; pub fn ferror(stream: *mut FILE) -> c_int; pub fn perror(s: *const c_char); - pub fn printf(format: *const c_char, ...) -> ::c_int; - pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int; pub fn atoi(s: *const c_char) -> c_int; pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double; pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float; |