Skip to content

Commit df3e0ef

Browse files
committed
chore: wip
1 parent 790d3f9 commit df3e0ef

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

src/windows/mod.rs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -395,11 +395,33 @@ extern "C" {
395395
pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;
396396
pub fn raise(signum: c_int) -> c_int;
397397

398+
// By default, the following link to 64-bit variants where the expected
399+
// `time_t` is also 64-bits.
400+
//
401+
// Under Windows x86 with GNU, `time_t` is still 32-bit wide on stable, so
402+
// these routines have to link with their 32-bit variants.
403+
cfg_if! {
404+
if #[cfg(all(target_arch = "x86", target_env = "gnu", not(gnu_time_bits64)))] {
405+
#[link_name = "_ctime32"]
406+
pub fn ctime(sourceTime: *const time_t) -> *mut c_char;
407+
#[link_name = "_difftime32"]
408+
pub fn difftime(timeEnd: time_t, timeStart: time_t) -> c_double;
409+
#[link_name = "_gmtime32_s"]
410+
pub fn gmtime_s(destTime: *mut tm, srcTime: *const time_t) -> c_int;
411+
#[link_name = "_localtime32_s"]
412+
pub fn localtime_s(tmDest: *mut tm, sourceTime: *const time_t) -> crate::errno_t;
413+
#[link_name = "_time32"]
414+
pub fn time(destTime: *mut time_t) -> time_t;
415+
} else {
416+
pub fn ctime(sourceTime: *const time_t) -> *mut c_char;
417+
pub fn difftime(timeEnd: time_t, timeStart: time_t) -> c_double;
418+
pub fn gmtime_s(destTime: *mut tm, srcTime: *const time_t) -> c_int;
419+
pub fn localtime_s(tmDest: *mut tm, sourceTime: *const time_t) -> crate::errno_t;
420+
pub fn time(destTime: *mut time_t) -> time_t;
421+
}
422+
}
423+
398424
pub fn clock() -> clock_t;
399-
pub fn ctime(sourceTime: *const time_t) -> *mut c_char;
400-
pub fn difftime(timeEnd: time_t, timeStart: time_t) -> c_double;
401-
#[link_name = "_gmtime64_s"]
402-
pub fn gmtime_s(destTime: *mut tm, srcTime: *const time_t) -> c_int;
403425
#[link_name = "_get_daylight"]
404426
pub fn get_daylight(hours: *mut c_int) -> errno_t;
405427
#[link_name = "_get_dstbias"]
@@ -413,10 +435,6 @@ extern "C" {
413435
size_in_bytes: size_t,
414436
index: c_int,
415437
) -> errno_t;
416-
#[link_name = "_localtime64_s"]
417-
pub fn localtime_s(tmDest: *mut tm, sourceTime: *const time_t) -> crate::errno_t;
418-
#[link_name = "_time64"]
419-
pub fn time(destTime: *mut time_t) -> time_t;
420438
#[link_name = "_tzset"]
421439
pub fn tzset();
422440
#[link_name = "_chmod"]

0 commit comments

Comments
 (0)