Skip to content

Commit

Permalink
Merge #1947 #1961
Browse files Browse the repository at this point in the history
1947: Target table r=rtzoeller a=JonathanWoollett-Light

Put targets into a table.

<table>
<tr><th>Before</th><th>After</th></tr>
<tr><td><img alt="image" src="https://user-images.githubusercontent.com/16856679/208483287-e39c218c-0a5c-4cf8-9fc2-b9ab5408ce28.png"></td><td><img alt="image" src="https://user-images.githubusercontent.com/16856679/208483421-53743623-e43b-40d4-8b36-83e570326b56.png"></td></tr>
</table>


1961: feat: I/O safety `ftruncate` r=rtzoeller a=JonathanWoollett-Light

Uses `AsFd` for `unistd::ftruncate`.

Co-authored-by: Jonathan Woollett-Light <jonathanwoollettlight@gmail.com>
Co-authored-by: Jonathan <jonathanwoollettlight@gmail.com>
  • Loading branch information
bors[bot] and JonathanWoollett-Light committed Jan 8, 2023
3 parents 67f8770 + dbd5d1b + b7f8f93 commit bbb97bf
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 50 deletions.
93 changes: 53 additions & 40 deletions README.md
Expand Up @@ -46,46 +46,59 @@ limitations. Support for platforms is split into three tiers:

The following targets are supported by `nix`:

Tier 1:
* aarch64-apple-darwin
* aarch64-unknown-linux-gnu
* arm-unknown-linux-gnueabi
* armv7-unknown-linux-gnueabihf
* i686-unknown-freebsd
* i686-unknown-linux-gnu
* i686-unknown-linux-musl
* mips-unknown-linux-gnu
* mips64-unknown-linux-gnuabi64
* mips64el-unknown-linux-gnuabi64
* mipsel-unknown-linux-gnu
* powerpc64le-unknown-linux-gnu
* x86_64-unknown-freebsd
* x86_64-unknown-linux-gnu
* x86_64-unknown-linux-musl

Tier 2:
* aarch64-apple-ios
* aarch64-linux-android
* arm-linux-androideabi
* arm-unknown-linux-musleabi
* armv7-linux-androideabi
* i686-linux-android
* powerpc-unknown-linux-gnu
* s390x-unknown-linux-gnu
* x86_64-apple-ios
* x86_64-linux-android
* x86_64-apple-darwin
* x86_64-unknown-illumos
* x86_64-unknown-netbsd

Tier 3:
* armv7-unknown-linux-uclibceabihf
* x86_64-fuchsia
* x86_64-unknown-dragonfly
* x86_64-unknown-haiku
* x86_64-unknown-linux-gnux32
* x86_64-unknown-openbsd
* x86_64-unknown-redox
<table>
<tr>
<th>Tier 1</th>
<th>Tier 2</th>
<th>Tier 3</th>
</tr>
<tr>
<td>
<ul>
<li>aarch64-apple-darwin</li>
<li>aarch64-unknown-linux-gnu</li>
<li>arm-unknown-linux-gnueabi</li>
<li>armv7-unknown-linux-gnueabihf</li>
<li>i686-unknown-freebsd</li>
<li>i686-unknown-linux-gnu</li>
<li>i686-unknown-linux-musl</li>
<li>mips-unknown-linux-gnu</li>
<li>mips64-unknown-linux-gnuabi64</li>
<li>mips64el-unknown-linux-gnuabi64</li>
<li>mipsel-unknown-linux-gnu</li>
<li>powerpc64le-unknown-linux-gnu</li>
<li>x86_64-unknown-freebsd</li>
<li>x86_64-unknown-linux-gnu</li>
<li>x86_64-unknown-linux-musl</li>
</ul>
</td>
<td>
<ul>
<li>aarch64-apple-ios</li>
<li>aarch64-linux-android</li>
<li>arm-linux-androideabi</li>
<li>arm-unknown-linux-musleabi</li>
<li>armv7-linux-androideabi</li>
<li>i686-linux-android</li>
<li>powerpc-unknown-linux-gnu</li>
<li>s390x-unknown-linux-gnu</li>
<li>x86_64-apple-ios</li>
<li>x86_64-linux-android</li>
<li>x86_64-apple-darwin</li>
<li>x86_64-unknown-illumos</li>
<li>x86_64-unknown-netbsd</li>
</td>
<td>
<li>armv7-unknown-linux-uclibceabihf</li>
<li>x86_64-fuchsia</li>
<li>x86_64-unknown-dragonfly</li>
<li>x86_64-unknown-haiku</li>
<li>x86_64-unknown-linux-gnux32</li>
<li>x86_64-unknown-openbsd</li>
<li>x86_64-unknown-redox</li>
</td>
</tr>
</table>

## Minimum Supported Rust Version (MSRV)

Expand Down
5 changes: 3 additions & 2 deletions src/unistd.rs
Expand Up @@ -35,6 +35,7 @@ use std::ffi::{CString, OsStr};
use std::os::unix::ffi::OsStrExt;
use std::os::unix::ffi::OsStringExt;
use std::os::unix::io::RawFd;
use std::os::unix::io::{AsFd, AsRawFd};
use std::path::PathBuf;
use std::{fmt, mem, ptr};

Expand Down Expand Up @@ -1255,8 +1256,8 @@ pub fn truncate<P: ?Sized + NixPath>(path: &P, len: off_t) -> Result<()> {
///
/// See also
/// [ftruncate(2)](https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html)
pub fn ftruncate(fd: RawFd, len: off_t) -> Result<()> {
Errno::result(unsafe { libc::ftruncate(fd, len) }).map(drop)
pub fn ftruncate<Fd: AsFd>(fd: Fd, len: off_t) -> Result<()> {
Errno::result(unsafe { libc::ftruncate(fd.as_fd().as_raw_fd(), len) }).map(drop)
}

pub fn isatty(fd: RawFd) -> Result<bool> {
Expand Down
13 changes: 5 additions & 8 deletions test/test_unistd.rs
Expand Up @@ -772,15 +772,12 @@ fn test_ftruncate() {
let tempdir = tempdir().unwrap();
let path = tempdir.path().join("file");

let tmpfd = {
let mut tmp = File::create(&path).unwrap();
const CONTENTS: &[u8] = b"12345678";
tmp.write_all(CONTENTS).unwrap();
tmp.into_raw_fd()
};
let mut file = File::create(&path).unwrap();
const CONTENTS: &[u8] = b"12345678";
file.write_all(CONTENTS).unwrap();

ftruncate(tmpfd, 2).unwrap();
close(tmpfd).unwrap();
ftruncate(&file, 2).unwrap();
drop(file);

let metadata = fs::metadata(&path).unwrap();
assert_eq!(2, metadata.len());
Expand Down

0 comments on commit bbb97bf

Please sign in to comment.