Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion libc-test/semver/emscripten.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@ getgrnam
getgrnam_r
getpwnam_r
getpwuid_r
posix_fallocate64
66 changes: 55 additions & 11 deletions src/unix/linux_like/emscripten/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,44 @@ pub type fsfilcnt_t = u32;
pub type rlim_t = u64;
pub type nlink_t = u32;

pub type ino64_t = crate::ino_t;
pub type off64_t = off_t;
pub type blkcnt64_t = crate::blkcnt_t;
pub type rlim64_t = crate::rlim_t;

pub type rlimit64 = crate::rlimit;
pub type flock64 = crate::flock;
pub type stat64 = crate::stat;
pub type statfs64 = crate::statfs;
pub type statvfs64 = crate::statvfs;
pub type dirent64 = crate::dirent;
macro_rules! deprecate_lfs64 {
($($it:item)+) => {
$(
#[cfg_attr(
not(gnu_file_offset_bits64),
deprecated(
since = "0.2.187",
note = "Use the unsuffixed variant instead. This type is meant to provide an \
LFS64-compliant interface that was once exposed through \
`_LARGEFIL64_SOURCE` but is currently exposed through \
`FILE_OFFSET_BITS=64`",
)
)]
$it
)+
};
}

deprecate_lfs64! {
pub type off64_t = off_t;
pub type blkcnt64_t = crate::blkcnt_t;
pub type rlim64_t = crate::rlim_t;

pub type rlimit64 = crate::rlimit;
pub type flock64 = crate::flock;
pub type stat64 = crate::stat;
pub type statfs64 = crate::statfs;
pub type statvfs64 = crate::statvfs;
pub type dirent64 = crate::dirent;
}

extern_ty! {
#[cfg_attr(not(gnu_file_offset_bits64), deprecated(
since = "0.2.187",
note = "Use `fpos_t`. This type is meant to provide a suffixed 64-bit alternative for \
32-bit systems where handling files larger than 2 GiB is not possible without \
compatibility shims."
))]
pub enum fpos64_t {} // FIXME(emscripten): fill this out with a struct
}

Expand Down Expand Up @@ -1449,5 +1474,24 @@ extern "C" {
}

// Alias <foo> to <foo>64 to mimic glibc's LFS64 support
#[cfg(not(gnu_file_offset_bits64))]
#[allow(deprecated)]
#[deprecated(
since = "0.2.187",
note = "This module was previously accessed by any emscripten user, but that is only \
possible when the `_GNU_SOURCE` and `_LARGEFILE64_SOURCE` feature test macros are \
defined. Note the latter is deprecated and instead should be issued to this crate \
with the `gnu_file_offset_bits64` `cfg` option."
)]
mod lfs64;

#[cfg(not(gnu_file_offset_bits64))]
#[allow(deprecated)]
#[deprecated(
since = "0.2.187",
note = "This module was previously accessed by any emscripten user, but that is only \
possible when the `_GNU_SOURCE` and `_LARGEFILE64_SOURCE` feature test macros are \
defined. Note the latter is deprecated and instead should be issued to this crate \
with the `gnu_file_offset_bits64` `cfg` option."
)]
pub use self::lfs64::*;
1 change: 1 addition & 0 deletions src/unix/linux_like/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,7 @@ cfg_if! {
if #[cfg(target_os = "android")] {
pub const RLIM64_INFINITY: c_ulonglong = !0;
} else {
#[cfg_attr(target_os = "emscripten", allow(deprecated))]
pub const RLIM64_INFINITY: crate::rlim64_t = !0;
}
}
Expand Down
Loading