mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 09:39:52 +08:00
Update nix to 0.29
This commit is contained in:
parent
f59cdfaa8d
commit
ad73dcc308
46
Cargo.lock
generated
46
Cargo.lock
generated
|
@ -20,12 +20,6 @@ version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
|
checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
|
@ -34,9 +28,9 @@ checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.97"
|
version = "1.0.98"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
|
checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jobserver",
|
"jobserver",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -49,6 +43,12 @@ version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg_aliases"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dashmap"
|
name = "dashmap"
|
||||||
version = "5.5.3"
|
version = "5.5.3"
|
||||||
|
@ -92,7 +92,7 @@ source = "git+https://github.com/fish-shell/fast-float-rust?branch=fish#9590c33a
|
||||||
name = "fish"
|
name = "fish"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags",
|
||||||
"cc",
|
"cc",
|
||||||
"errno",
|
"errno",
|
||||||
"fast-float",
|
"fast-float",
|
||||||
|
@ -161,9 +161,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.151"
|
version = "0.2.155"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
|
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
|
@ -204,13 +204,13 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.25.1"
|
version = "0.29.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
|
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"bitflags",
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
|
"cfg_aliases",
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -241,9 +241,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot"
|
name = "parking_lot"
|
||||||
version = "0.12.2"
|
version = "0.12.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb"
|
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lock_api",
|
"lock_api",
|
||||||
"parking_lot_core",
|
"parking_lot_core",
|
||||||
|
@ -343,9 +343,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.82"
|
version = "1.0.85"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
|
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
@ -404,7 +404,7 @@ version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
|
checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -470,9 +470,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.63"
|
version = "2.0.66"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704"
|
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -628,5 +628,5 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.63",
|
"syn 2.0.66",
|
||||||
]
|
]
|
||||||
|
|
|
@ -26,12 +26,12 @@ fast-float = { git = "https://github.com/fish-shell/fast-float-rust", branch="fi
|
||||||
bitflags = "2.4.0"
|
bitflags = "2.4.0"
|
||||||
errno = "0.2.8"
|
errno = "0.2.8"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
libc = "= 0.2.151"
|
libc = "0.2.155"
|
||||||
# lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo.
|
# lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo.
|
||||||
# disabling default features uses the stdlib instead, but it doubles the time to rewrite the history
|
# disabling default features uses the stdlib instead, but it doubles the time to rewrite the history
|
||||||
# files as of 22 April 2024.
|
# files as of 22 April 2024.
|
||||||
lru = "0.10.0"
|
lru = "0.10.0"
|
||||||
nix = { version = "0.25.0", default-features = false, features = ["inotify", "resource", "fs"] }
|
nix = { version = "0.29.0", default-features = false, features = ["inotify", "resource", "fs"] }
|
||||||
num-traits = "0.2.15"
|
num-traits = "0.2.15"
|
||||||
once_cell = "1.17.0"
|
once_cell = "1.17.0"
|
||||||
printf = { path = "./printf" }
|
printf = { path = "./printf" }
|
||||||
|
|
|
@ -4,5 +4,5 @@ edition = "2021"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libc = "= 0.2.151"
|
libc = "0.2.155"
|
||||||
widestring = "1.0.2"
|
widestring = "1.0.2"
|
||||||
|
|
|
@ -1525,7 +1525,7 @@ pub fn write_loop<Fd: AsRawFd>(fd: &Fd, buf: &[u8]) -> std::io::Result<usize> {
|
||||||
let fd = fd.as_raw_fd();
|
let fd = fd.as_raw_fd();
|
||||||
let mut total = 0;
|
let mut total = 0;
|
||||||
while total < buf.len() {
|
while total < buf.len() {
|
||||||
match nix::unistd::write(fd, &buf[total..]) {
|
match nix::unistd::write(unsafe { BorrowedFd::borrow_raw(fd) }, &buf[total..]) {
|
||||||
Ok(written) => {
|
Ok(written) => {
|
||||||
total += written;
|
total += written;
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,7 @@ impl FdEventSignaller {
|
||||||
let mut ret;
|
let mut ret;
|
||||||
loop {
|
loop {
|
||||||
let bytes = c.to_ne_bytes();
|
let bytes = c.to_ne_bytes();
|
||||||
ret = nix::unistd::write(self.write_fd(), &bytes);
|
ret = nix::unistd::write(unsafe { BorrowedFd::borrow_raw(self.write_fd()) }, &bytes);
|
||||||
|
|
||||||
match ret {
|
match ret {
|
||||||
Ok(_) => break,
|
Ok(_) => break,
|
||||||
|
|
13
src/fds.rs
13
src/fds.rs
|
@ -40,7 +40,7 @@ impl Read for AutoCloseFd {
|
||||||
|
|
||||||
impl Write for AutoCloseFd {
|
impl Write for AutoCloseFd {
|
||||||
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
|
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
|
||||||
nix::unistd::write(self.as_raw_fd(), buf).map_err(std::io::Error::from)
|
nix::unistd::write(self, buf).map_err(std::io::Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn flush(&mut self) -> std::io::Result<()> {
|
fn flush(&mut self) -> std::io::Result<()> {
|
||||||
|
@ -161,8 +161,8 @@ pub fn make_autoclose_pipes() -> nix::Result<AutoClosePipes> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let readp = unsafe { OwnedFd::from_raw_fd(pipes.0) };
|
let readp = pipes.0;
|
||||||
let writep = unsafe { OwnedFd::from_raw_fd(pipes.1) };
|
let writep = pipes.1;
|
||||||
|
|
||||||
// Ensure our fds are out of the user range.
|
// Ensure our fds are out of the user range.
|
||||||
let readp = heightenize_fd(readp, already_cloexec)?;
|
let readp = heightenize_fd(readp, already_cloexec)?;
|
||||||
|
@ -271,17 +271,16 @@ mod o_search {
|
||||||
/// where O_EXEC is 0x40000000. This is only on macOS 12.0+ or later; however
|
/// where O_EXEC is 0x40000000. This is only on macOS 12.0+ or later; however
|
||||||
/// prior macOS versions ignores O_EXEC so it is treated the same as O_RDONLY.
|
/// prior macOS versions ignores O_EXEC so it is treated the same as O_RDONLY.
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub const BEST_O_SEARCH: OFlag =
|
pub const BEST_O_SEARCH: OFlag = OFlag::from_bits_truncate(libc::O_DIRECTORY | 0x40000000);
|
||||||
unsafe { OFlag::from_bits_unchecked(libc::O_DIRECTORY | 0x40000000) };
|
|
||||||
|
|
||||||
/// On FreeBSD, we have O_SEARCH = 0x00040000.
|
/// On FreeBSD, we have O_SEARCH = 0x00040000.
|
||||||
#[cfg(target_os = "freebsd")]
|
#[cfg(target_os = "freebsd")]
|
||||||
pub const BEST_O_SEARCH: OFlag = unsafe { OFlag::from_bits_unchecked(0x00040000) };
|
pub const BEST_O_SEARCH: OFlag = OFlag::from_bits_truncate(0x00040000);
|
||||||
|
|
||||||
/// On Linux we can use O_PATH, it has nearly the same semantics. we can use the fd for openat / fchdir, with only requiring
|
/// On Linux we can use O_PATH, it has nearly the same semantics. we can use the fd for openat / fchdir, with only requiring
|
||||||
/// x permission on the directory.
|
/// x permission on the directory.
|
||||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||||
pub const BEST_O_SEARCH: OFlag = unsafe { OFlag::from_bits_unchecked(libc::O_PATH) };
|
pub const BEST_O_SEARCH: OFlag = OFlag::from_bits_truncate(libc::O_PATH);
|
||||||
|
|
||||||
/// Fall back to O_RDONLY.
|
/// Fall back to O_RDONLY.
|
||||||
#[cfg(not(any(
|
#[cfg(not(any(
|
||||||
|
|
|
@ -208,7 +208,7 @@ impl binary_semaphore_t {
|
||||||
Self::Pipes(pipes) => {
|
Self::Pipes(pipes) => {
|
||||||
// Write exactly one byte.
|
// Write exactly one byte.
|
||||||
loop {
|
loop {
|
||||||
match unistd::write(pipes.write.as_raw_fd(), &[0]) {
|
match unistd::write(&pipes.write, &[0]) {
|
||||||
Err(Errno::EINTR) => continue,
|
Err(Errno::EINTR) => continue,
|
||||||
Err(_) => self.die("write"),
|
Err(_) => self.die("write"),
|
||||||
Ok(_) => break,
|
Ok(_) => break,
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::wchar::prelude::*;
|
||||||
use crate::wutil::{wbasename, wdirname};
|
use crate::wutil::{wbasename, wdirname};
|
||||||
use nix::sys::inotify::{AddWatchFlags, InitFlags, Inotify};
|
use nix::sys::inotify::{AddWatchFlags, InitFlags, Inotify};
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::os::fd::{AsRawFd, RawFd};
|
use std::os::fd::{AsFd, AsRawFd, RawFd};
|
||||||
|
|
||||||
/// A notifier based on inotify.
|
/// A notifier based on inotify.
|
||||||
pub struct InotifyNotifier {
|
pub struct InotifyNotifier {
|
||||||
|
@ -50,13 +50,13 @@ impl UniversalNotifier for InotifyNotifier {
|
||||||
|
|
||||||
// Returns the fd from which to watch for events.
|
// Returns the fd from which to watch for events.
|
||||||
fn notification_fd(&self) -> Option<RawFd> {
|
fn notification_fd(&self) -> Option<RawFd> {
|
||||||
Some(self.inotify.as_raw_fd())
|
Some(self.inotify.as_fd().as_raw_fd())
|
||||||
}
|
}
|
||||||
|
|
||||||
// The notification_fd is readable; drain it. Returns true if a notification is considered to
|
// The notification_fd is readable; drain it. Returns true if a notification is considered to
|
||||||
// have been posted.
|
// have been posted.
|
||||||
fn notification_fd_became_readable(&self, fd: RawFd) -> bool {
|
fn notification_fd_became_readable(&self, fd: RawFd) -> bool {
|
||||||
assert_eq!(fd, self.inotify.as_raw_fd(), "unexpected fd");
|
assert_eq!(fd, self.inotify.as_fd().as_raw_fd(), "unexpected fd");
|
||||||
let Ok(evts) = self.inotify.read_events() else {
|
let Ok(evts) = self.inotify.read_events() else {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
|
@ -492,7 +492,7 @@ pub fn wrename(old_name: &wstr, new_name: &wstr) -> libc::c_int {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_to_fd(input: &[u8], fd: RawFd) -> nix::Result<usize> {
|
pub fn write_to_fd(input: &[u8], fd: RawFd) -> nix::Result<usize> {
|
||||||
nix::unistd::write(fd, input)
|
nix::unistd::write(unsafe { BorrowedFd::borrow_raw(fd) }, input)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Write a wide string to a file descriptor. This avoids doing any additional allocation.
|
/// Write a wide string to a file descriptor. This avoids doing any additional allocation.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user