Skip to content

Commit

Permalink
Make std::os::darwin public
Browse files Browse the repository at this point in the history
This includes `std::os::darwin::fs`, which is re-exported under
`std::os::macos::fs` and `std::os::ios::fs`.

`std::os::darwin::raw` is not exposed, which means that
`MetadataExt::as_raw_stat` isn't available on tvOS, visionOS and
watchOS.
  • Loading branch information
madsmtm committed Aug 13, 2024
1 parent 37017c0 commit c370665
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 15 deletions.
17 changes: 11 additions & 6 deletions std/src/os/darwin/fs.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#![allow(dead_code)]
//! Darwin-specific extension traits to [`fs`].
//!
//! [`fs`]: crate::fs
#![stable(feature = "metadata_ext", since = "1.1.0")]

#[allow(deprecated)]
use super::raw;
use crate::fs::{self, Metadata};
use crate::sealed::Sealed;
use crate::sys_common::{AsInner, AsInnerMut, IntoInner};
Expand All @@ -25,7 +26,10 @@ pub trait MetadataExt {
methods of this trait"
)]
#[allow(deprecated)]
fn as_raw_stat(&self) -> &raw::stat;
// Only available on macOS and iOS, since they were stably exposed there.
#[cfg(any(doc, target_os = "macos", target_os = "ios"))]
#[doc(cfg(any(target_os = "macos", target_os = "ios")))]
fn as_raw_stat(&self) -> &super::raw::stat;

#[stable(feature = "metadata_ext2", since = "1.8.0")]
fn st_dev(&self) -> u64;
Expand Down Expand Up @@ -77,8 +81,9 @@ pub trait MetadataExt {
#[stable(feature = "metadata_ext", since = "1.1.0")]
impl MetadataExt for Metadata {
#[allow(deprecated)]
fn as_raw_stat(&self) -> &raw::stat {
unsafe { &*(self.as_inner().as_inner() as *const libc::stat as *const raw::stat) }
#[cfg(any(doc, target_os = "macos", target_os = "ios"))]
fn as_raw_stat(&self) -> &super::raw::stat {
unsafe { &*(self.as_inner().as_inner() as *const libc::stat as *const super::raw::stat) }
}
fn st_dev(&self) -> u64 {
self.as_inner().as_inner().st_dev as u64
Expand Down
5 changes: 4 additions & 1 deletion std/src/os/darwin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
//! `aarch64-apple-darwin` target names, which are mostly named that way for
//! legacy reasons.

pub(crate) mod fs;
#![stable(feature = "os_darwin", since = "CURRENT_RUSTC_VERSION")]
#![doc(cfg(target_vendor = "apple"))]

pub mod fs;
// deprecated, but used for public reexport under `std::os::unix::raw`, as
// well as `std::os::macos`/`std::os::ios`, because those modules precede the
// decision to remove these.
Expand Down
2 changes: 0 additions & 2 deletions std/src/os/ios/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@

#[stable(feature = "metadata_ext", since = "1.1.0")]
pub mod fs {
#[doc(inline)]
#[stable(feature = "file_set_times", since = "1.75.0")]
pub use crate::os::darwin::fs::FileTimesExt;
#[doc(inline)]
#[stable(feature = "metadata_ext", since = "1.1.0")]
pub use crate::os::darwin::fs::MetadataExt;
}
Expand Down
2 changes: 0 additions & 2 deletions std/src/os/macos/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@

#[stable(feature = "metadata_ext", since = "1.1.0")]
pub mod fs {
#[doc(inline)]
#[stable(feature = "file_set_times", since = "1.75.0")]
pub use crate::os::darwin::fs::FileTimesExt;
#[doc(inline)]
#[stable(feature = "metadata_ext", since = "1.1.0")]
pub use crate::os::darwin::fs::MetadataExt;
}
Expand Down
24 changes: 21 additions & 3 deletions std/src/os/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,16 @@ pub mod raw;
// documented don't compile (missing things in `libc` which is empty),
// so just omit them with an empty module and add the "unstable" attribute.

// unix, linux, wasi and windows are handled a bit differently.
// darwin, unix, linux, wasi and windows are handled a bit differently.
#[cfg(all(
doc,
any(
all(target_arch = "wasm32", not(target_os = "wasi")),
all(target_vendor = "fortanix", target_env = "sgx")
)
))]
#[unstable(issue = "none", feature = "std_internals")]
pub mod darwin {}
#[cfg(all(
doc,
any(
Expand Down Expand Up @@ -53,6 +62,17 @@ pub mod wasi {}
#[unstable(issue = "none", feature = "std_internals")]
pub mod windows {}

// darwin
#[cfg(not(all(
doc,
any(
all(target_arch = "wasm32", not(target_os = "wasi")),
all(target_vendor = "fortanix", target_env = "sgx")
)
)))]
#[cfg(any(target_vendor = "apple", doc))]
pub mod darwin;

// unix
#[cfg(not(all(
doc,
Expand Down Expand Up @@ -105,8 +125,6 @@ pub mod windows;
pub mod aix;
#[cfg(target_os = "android")]
pub mod android;
#[cfg(target_vendor = "apple")]
pub(crate) mod darwin;
#[cfg(target_os = "dragonfly")]
pub mod dragonfly;
#[cfg(target_os = "emscripten")]
Expand Down
2 changes: 1 addition & 1 deletion std/src/os/unix/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ mod platform {
#[cfg(target_os = "android")]
pub use crate::os::android::*;
#[cfg(target_vendor = "apple")]
pub(super) use crate::os::darwin::*;
pub use crate::os::darwin::*;
#[cfg(target_os = "dragonfly")]
pub use crate::os::dragonfly::*;
#[cfg(target_os = "emscripten")]
Expand Down

0 comments on commit c370665

Please sign in to comment.