summaryrefslogtreecommitdiff
path: root/src/sys/epoll.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-12-06 19:38:40 +0000
committerGitHub <noreply@github.com>2022-12-06 19:38:40 +0000
commit64b5d3374ed88fdcda413dcfded47d94137577dd (patch)
tree68554b2dd8ef795440be030eec0737ac45737680 /src/sys/epoll.rs
parenta989fd581791ebc7d1965af92860d7baf7f404f4 (diff)
parent7058bcef55ecdab7e7df463d450fda1beff3e92b (diff)
downloadnix-64b5d3374ed88fdcda413dcfded47d94137577dd.zip
Merge #1919
1919: feat: I/O safety for 'sys/statfs' r=asomers a=SteveLauC ### What this PR does: 1. Adds I/O safety for module `sys/statfs`. This PR is pretty small as all we need to do is to change the interface of `fstatfs(2)`: from: ```rust pub fn fstatfs<T: AsRawFd>(fd: &T) -> Result<Statfs> ``` to: ```rust pub fn fstatfs<Fd: AsFd>(fd: &Fd) -> Result<Statfs> ``` ------ ~Besides from the changes in module `sys/statfs`, there are two extra places where care needs to be taken:~ ```shell $ cd nix # Search for the usage of `fstatfs(2)` in `nix` $ rg "fstatfs\(" test/test_fcntl.rs 386: let statfs = nix::sys::statfs::fstatfs(&tmp).unwrap(); 424: let statfs = nix::sys::statfs::fstatfs(&tmp).unwrap(); CHANGELOG.md 849:- Now functions `statfs()` and `fstatfs()` return result with `Statfs` wrapper src/sys/statfs.rs 769: check_fstatfs("/tmp"); 770: check_fstatfs("/dev"); 771: check_fstatfs("/run"); 772: check_fstatfs("/"); 775: fn check_fstatfs(path: &str) { 781: let fs = fstatfs(&file).unwrap(); 830: let fs = fstatfs(&file); ``` ~As you can see, `fstatfs(2)` is used in the tests in `test/test_fcntl.rs`:~ ```rust // Test code that involves `fstatfs(2)` let tmp: NamedTempFile = NamedTempFile::new().unwrap(); let fd = tmp.as_raw_fd(); let statfs = nix::sys::statfs::fstatfs(&tmp).unwrap(); ``` ~`tmp` is of type [`NamedTempFile`](https://docs.rs/tempfile/latest/tempfile/struct.NamedTempFile.html), which does not implement `AsFd` in the current implementation of `tempfile`, but the implementation should be easy as it contains `std::fs::File` internally:~ ```rust pub struct NamedTempFile { path: TempPath, file: File, } ``` ~So I am thinking about making a PR to `tempfile` to make `NamedTempFile` `AsFd`, any thoughts on this?~ Co-authored-by: Steve Lau <stevelauc@outlook.com>
Diffstat (limited to 'src/sys/epoll.rs')
0 files changed, 0 insertions, 0 deletions