Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Update OpenOptions::as_flags docs, and minor styling
  • Loading branch information
Federico Ponzi committed Aug 31, 2020
commit 7c1e5c1dcd25c945f619eda289f639dbe2b002da
17 changes: 8 additions & 9 deletions library/std/src/sys/unix/ext/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -346,9 +346,13 @@ pub trait OpenOptionsExt {
#[stable(feature = "open_options_ext", since = "1.10.0")]
fn custom_flags(&mut self, flags: i32) -> &mut Self;

/// Get the flags of this OpenOptions as libc::c_int.
/// Get the flags of this OpenOptions as [`libc::c_int`].
/// With: [`libc::open`]
///
/// This method allows the reuse of the OpenOptions as flags argument for `libc::open()`.
/// This method allows the reuse of the OpenOptions as flags argument for [`fs::OpenOptions`].
///
/// [`libc::c_int`]: https://docs.rs/libc/*/libc/type.c_int.html
/// [`libc::open`]: https://docs.rs/libc/*/libc/fn.open.html
///
/// # Examples
///
Expand All @@ -359,16 +363,10 @@ pub trait OpenOptionsExt {
/// use std::fs::OpenOptions;
/// use std::os::unix::fs::OpenOptionsExt;
///
/// # fn main() {
/// let mut options = OpenOptions::new();
/// options.write(true).read(true);
/// if cfg!(unix) {
/// options.custom_flags(libc::O_NOFOLLOW);
/// }
/// let file_name = CString::new("foo.txt").unwrap();
/// let file = unsafe{ libc::open(file_name.as_c_str().as_ptr(), options.as_flags().unwrap()) };
///
/// # }
/// let file = unsafe { libc::open(file_name.as_c_str().as_ptr(), options.as_flags().unwrap()) };
/// ```
#[stable(feature = "open_options_ext_as_flags", since = "1.47.0")]
fn as_flags(&self) -> io::Result<libc::c_int>;
Expand All @@ -385,6 +383,7 @@ impl OpenOptionsExt for OpenOptions {
self.as_inner_mut().custom_flags(flags);
self
}

fn as_flags(&self) -> io::Result<libc::c_int> {
self.as_inner().as_flags()
}
Expand Down
1 change: 1 addition & 0 deletions library/std/src/sys/unix/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,7 @@ impl OpenOptions {
let creation_mode = self.get_creation_mode()?;
Ok(creation_mode | access_mode | self.custom_flags)
}

fn get_access_mode(&self) -> io::Result<c_int> {
match (self.read, self.write, self.append) {
(true, false, false) => Ok(libc::O_RDONLY),
Expand Down