summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-04Remove several deprecated constants and functionsAlan Somers
* `unistd::daemon` on Apple * `unistd::pipe2` on Apple * `sys::event::FilterFlag::NOTE_EXIT_REPARENTED` on Apple * `sys::event::FilterFlag::NOTE_REAP` on Apple * `sys::ptrace::ptrace` on Android and Linux All have been deprecated for more than two releases and one year.
2020-05-31fixup to "Convert the crate to edition 2018"Alan Somers
2020-05-31Fix test_ptymaster_drop after PR #1098Alan Somers
This test cannot be compiled under Redox. PR #1098 attempted to disable it for Redox, but actually disabled it everywhere. AFAICT, Cargo has no syntax to conditionally enable a target, except based on features. Instead, use conditional compilation within the test.
2020-05-31Convert the crate to edition 2018Alan Somers
2020-05-31Merge #1252bors[bot]
1252: Add EV_DISPATCH, EV_RECEIPT items for EventFlags, and fix build on OpenBSD r=asomers a=nickpelone This pull request: - Adds `EV_DISPATCH` and `EV_RECEIPT` to `EventFlags`. OpenBSD supports these now. c379d1a - Fixes a regression that caused `nix` to be unable to build on OpenBSD since #1208. dd0a990 - Makes a change to avoid a deprecation warning from `libc` crate, which breaks tests. 0f9fcbd Since I know y'all don't have OpenBSD in CI right now, I've attached the results of a `cargo test` run on OpenBSD 6.7. Thanks for your time! [testresults.txt](https://github.com/nix-rust/nix/files/4684597/testresults.txt) Fixes #1251 Co-authored-by: Nick Pelone <nick.pelone@calyptix.com>
2020-05-26Update CHANGELOG.md now that I have a PR numberNick Pelone
2020-05-26Fix use of deprecated libc type, needed in order to run the tests ↵Nick Pelone
successfully. This type was deprecated in libc 0.2.55.
2020-05-26Fix build on OpenBSD caused by erroneous inclusion in allowed OS list for ↵Nick Pelone
sendmmsg() / recvmmsg() in #1208. In #1208, sendmmsg() / recvmmsg() were added, but OpenBSD(who doesn't support these) was included on the list of allowed operating systems for sendmmsg() related things. This broke the build on OpenBSD. For more Rust-world examples, see: https://github.com/rust-lang/libc/commit/6f6297301d49ff67b8ca044d651f36a56950298c
2020-05-26Add EV_DISPATCH and EV_RECEIPT EventFlag items for OpenBSD.Nick Pelone
2020-05-20Merge #1098bors[bot]
1098: Add Redox support for most of the modules r=asomers a=AdminXVII Some things are not implemented yet in redox, so a lot of annotations were added to remove functions when compiling for redox. Those functions will hopefully be added in time, but for now it's better to have partial support than none. Blocked by https://github.com/rust-lang/libc/pull/1438 Co-authored-by: Xavier L'Heureux <xavier.lheureux@icloud.com> Co-authored-by: Xavier L'Heureux <dev.xlheureux@gmail.com>
2020-05-19Add Redox to Tier 3Xavier L'Heureux
2020-05-17Simply disable the dir module, since only the entry struct is availableXavier L'Heureux
2020-05-17Fix test and remove group & user for redoxXavier L'Heureux
- Make sure all tests pass the CI - Redox does not (yet) have passwd functions, so remove it
2020-05-17Add wait, fdatasync, poll and pause for RedoxXavier L'Heureux
2020-05-17Remove warnings when compiling for RedoxXavier L'Heureux
2020-05-17Add redoxer testing for travisXavier L'Heureux
2020-05-17Disable mkfifo for RedoxXavier L'Heureux
FIFOs are not supported (yet?) by RedoxFS, so disable it
2020-05-17Remove temporarily the failing tests for RedoxXavier L'Heureux
TODO: Fix them in Relibc
2020-05-17Make sure to leave the values as-is in openXavier L'Heureux
2020-05-17Add pollXavier L'Heureux
2020-05-17Add termio supportXavier L'Heureux
2020-05-17Remove more unsupported functions and make it possible to run testsXavier L'Heureux
2020-05-17Add Redox support for most of the modulesXavier L'Heureux
Some things are not implemented yet in redox, so a lot of annotations were added to remove functions when compiling for redox. Those functions will hopefully be added in time, but for now it's better to have partial support than none. Blocked by https://github.com/rust-lang/libc/pull/1438
2020-05-17Merge #1239bors[bot]
1239: Replace void crate with Rust standard lib Infallible type r=asomers a=oherrala [`std::convert::Infallible`](https://doc.rust-lang.org/stable/std/convert/enum.Infallible.html) has been available since Rust 1.34 and nix currently targets Rust 1.36 or later so this should not cause problems. Fixes #1238 Co-authored-by: Ossi Herrala <oherrala@iki.fi>
2020-05-17Replace void crate with Rust standard lib Infallible typeOssi Herrala
std::convert::Infallible has been available since Rust 1.34 and nix currently targets Rust 1.36 or later so this should not cause problems. Fixes #1238
2020-05-17Merge #1242bors[bot]
1242: Don't implement `NixPath` for `Option<&P> where P: NixPath` r=asomers a=asomers Most Nix functions that accept `NixPath` arguments can't do anything useful with `None`. The exceptions (`mount` and `quotactl_sync`) already take explicitly optional arguments. Also, this changes the behavior of `mount` with `None` arguments. Previously, it would call mount(2) with empty strings for those arguments. Now, it will use null pointers. Co-authored-by: Alan Somers <asomers@gmail.com>
2020-05-17Merge #1245bors[bot]
1245: Make ptrace::write unsafe on Linux r=asomers a=asomers It always should've been unsafe, because it dereferences a user-provided pointer. Co-authored-by: Alan Somers <asomers@gmail.com>
2020-05-16Merge #1243bors[bot]
1243: Apply `repr(transparent)` to several FFI types r=asomers a=asomers repr(transparent) is required in order to safely cast between an FFI type and its NewType. This commit applies that attribute to PollFd, EpollEvent, IpMembershipRequest, Ipv6MembershipRequest, TimeVal, and IoVec. Fixes #1241 Co-authored-by: Alan Somers <asomers@gmail.com>
2020-05-16Make ptrace::write unsafe on LinuxAlan Somers
It always should've been unsafe, because it dereferences a user-provided pointer.
2020-05-16Apply `repr(transparent)` to several FFI typesAlan Somers
repr(transparent) is required in order to safely cast between an FFI type and its NewType. This commit applies that attribute to PollFd, EpollEvent, IpMembershipRequest, Ipv6MembershipRequest, TimeVal, and IoVec. Fixes #1241
2020-05-16Don't implement `NixPath` for `Option<&P> where P: NixPath`Alan Somers
Most Nix functions that accept `NixPath` arguments can't do anything useful with `None`. The exceptions (`mount` and `quotactl_sync`) already take explicitly optional arguments. Also, this changes the behavior of `mount` with `None` arguments. Previously, it would call mount(2) with empty strings for those arguments. Now, it will use null pointers.
2020-05-16Merge #1232bors[bot]
1232: Document O_DIRECT flag for pipe2 r=asomers a=hberntsen From the man page linked in the description Co-authored-by: Harm Berntsen <git@harmberntsen.nl>
2020-05-15Document additional OS-specific flags for pipe2Harm Berntsen
See https://netbsd.gw.com/cgi-bin/man-cgi?pipe2+2+NetBSD-current and http://man7.org/linux/man-pages/man2/pipe.2.html
2020-05-12Merge #1231bors[bot]
1231: Add support for reading symlinks longer than `PATH_MAX` to `readlink` and `readlinkat` r=asomers a=SolraBizna This is in response to issue #1178. The new logic uses the following approach. - At any time, if `readlink` returns an error, or a value ≥ 0 and < (not ≤!) the buffer size, we're done. - Attempt to `readlink` into a `PATH_MAX` sized buffer. (This will almost always succeed, and saves a system call over calling `lstat` first.) - Try to `lstat` the link. If it succeeds and returns a sane value, allocate the buffer to be that large plus one byte. Otherwise, allocate the buffer to be `PATH_MAX.max(128) << 1` bytes. - Repeatedly attempt to `readlink`. Any time its result is ≥ (not >!) the buffer size, double the buffer size and try again. While testing this, I discovered that ext4 doesn't allow creation of a symlink > 4095 (Linux's `PATH_MAX` minus one) bytes long. This is in spite of Linux happily allowing paths in other contexts to be longer than this—including on ext4! This was probably instated to avoid breaking programs that assume `PATH_MAX` will always be enough, but ironically hindered my attempt to test support for *not* assuming. I tested the code using an artificially small `PATH_MAX` and (separately) a wired-to-fail `lstat`. `strace` showed the code behaving precisely as expected. Unfortunately, I can't add an automatic test for this. Other changes made by this PR: - `wrap_readlink_result` now calls `shrink_to_fit` on the buffer before returning, potentially reclaiming kilobytes of memory per call. This could be very important if the returned buffer is long-lived. - `readlink` and `readlink_at` now both call an `inner_readlink` function that contains the bulk of the logic, avoiding copy-pasting of code. (This is much more important now that the logic is more than a few lines long.) Notably, this PR does *not* add support for systems that don't define `PATH_MAX` at all. As far as I know, I don't have access to any POSIX-ish OS that doesn't have `PATH_MAX`, and I suspect it would have other compatibility issues with `nix` anyway. Co-authored-by: Solra Bizna <solra@bizna.name>
2020-05-10Add support for reading symlinks longer than `PATH_MAX` to `readlink` and ↵Solra Bizna
`readlinkat`
2020-05-08Merge #1233bors[bot]
1233: Add SO_BINDTODEVICE sockopt r=asomers a=jeandudey This is available only on Linux as far I know, [socket(7)](https://linux.die.net/man/7/socket) has some information about the `SO_BINDTODEVICE` sockopt. In simple words it binds a socket to an specific network device (specified as an string like "wlo1", "eth0", etc.), to only process packets from that device. Note: this is untested (for now, i'll test it today), but should work out of the box. Co-authored-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-05-08Add SO_BINDTODEVICE sockoptJean Pierre Dudey
This is available only on Linux as far I know, [socket(7)](https://linux.die.net/man/7/socket) has some information about the `SO_BINDTODEVICE` sockopt. In simple words it binds a socket to an specific network device (specified as an string like "wlo1", "eth0", etc.), to only process packets from that device. Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-05-03Fix an "unused import" warning on FreeBSD in test_scm_credentialsAlan Somers
2020-05-02Merge #1216bors[bot]
1216: Add UnixCredentials support on FreeBSD/DragonFly r=asomers a=myfreeweb This allows working with `SCM_CREDS` messages, which are like `SCM_CREDENTIALS` on Linux, but slightly different (always overwritten by the kernel, contain a bit more info — euid and groups). With this PR, it is possible to write portable code that would use the appropriate message for the platform, but one remaining quirk is that `PassCred` thing still has to be present and `cfg`'d to Linux. Adding the `SCM_CREDS` constant to libc: https://github.com/rust-lang/libc/pull/1740 Co-authored-by: Greg V <greg@unrelenting.technology>
2020-05-02Merge #1227 #1228bors[bot]
1227: Test on Rust stable again r=asomers a=asomers This commit reverts eba3b516f7f76465e2fbe1c16724786144f01e8e, which worked around a Travis CI bug that has since been fixed. The effect is to resume testing on the latest Rust stable. 1228: Fix an "unused macro" warning on non-Linux platforms r=asomers a=asomers cc @glebpom Co-authored-by: Alan Somers <asomers@gmail.com>
2020-05-02Add UnixCredentials support on FreeBSD/DragonFly (cmsgcred/SCM_CREDS)Greg V
2020-05-02Fix an "unused macro" warning on non-Linux platformsAlan Somers
2020-05-02Test on Rust stable againAlan Somers
This commit reverts eba3b516f7f76465e2fbe1c16724786144f01e8e, which worked around a Travis CI bug that has since been fixed. The effect is to resume testing on the latest Rust stable.
2020-05-01Merge #1215bors[bot]
1215: Remove sys::socket::addr::from_libc_sockaddr from the public API r=posborne a=asomers This function never should've been public, since it's basically impossible to use directly. It's only public due to an oversight from PR #667 . Co-authored-by: Alan Somers <asomers@gmail.com>
2020-04-26Merge #1208bors[bot]
1208: Support sendmmsg/recvmmsg r=asomers a=glebpom This pull request adds `sendmmsg` and `recvmmsg` functions. They are used to send and receive multiple messages per one call. Additionally, `AsMut` implemented for both `TimeSpec` and `TimeVal`. This is still WIP, because we need to find the best way on how to pass multiple values to *mmsg functions. Current approach with iterators doesn't seem ergonomic. Co-authored-by: Gleb Pomykalov <gleb@lancastr.com> Co-authored-by: Alan Somers <asomers@gmail.com>
2020-04-26Eliminate a mem::zeroed() in recvmmsgAlan Somers
2020-04-26Support sendmmsg/recvmmsgGleb Pomykalov
2020-04-25Merge #1209bors[bot]
1209: Support UDP GSO and GRO on linux r=asomers a=glebpom This PR implements support for UDP GSO and GRO on Linux. It provides the way to send/receive UDP payloads bigger than interface MTU. The goal is to improve UDP performance. GSO was introduced in Linux 4.18, GRO in 5.3 Co-authored-by: Gleb Pomykalov <gleb@lancastr.com>
2020-04-25Merge #1221bors[bot]
1221: Fix compilation on DragonFly (statfs) r=asomers a=mneumann Co-authored-by: Michael Neumann <mneumann@ntecs.de>
2020-04-25Support UDP GSO and GRO on linuxGleb Pomykalov