diff --git a/README.md b/README.md index 97ca145f1a..72f7486d2e 100644 --- a/README.md +++ b/README.md @@ -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 + + + + + + + + + + + +
Tier 1Tier 2Tier 3
+
    +
  • 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
  • +
+
+
    +
  • 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
  • +
+
  • 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
  • +
    ## Minimum Supported Rust Version (MSRV) diff --git a/src/unistd.rs b/src/unistd.rs index ae1cca9542..8cad67f4a4 100644 --- a/src/unistd.rs +++ b/src/unistd.rs @@ -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}; @@ -1255,8 +1256,8 @@ pub fn truncate(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: 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 { diff --git a/test/test_unistd.rs b/test/test_unistd.rs index 1d50c5fa48..10284e4127 100644 --- a/test/test_unistd.rs +++ b/test/test_unistd.rs @@ -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());