Age | Commit message (Collapse) | Author |
|
Abstract paths should always be N-1 in length where N is the length of
the `sun_path` field (first byte is \0). Given that,
`UnixAddr::new_abstract()` should always return this N-1 length, not
just the length of the string provided (the rest of the array will be
\0s).
|
|
Derive Clone, Copy, Eq, Hash, and PartialEq for all types. Not all
traits are supported by all types, which is why many are missing
some.
|
|
MSG_WAITALL can be useful with recv() to wait the full amount of data
requested.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
It's not sufficient to check for root privileges. In a container, the
euid may be root even though the user lacks some capabilities. Replace
this test's root check with a check for the CAP_NET_ADMIN capability
instead.
|
|
|
|
libc just changed the signedness of sigaction.sa_flags for Android.
https://github.com/rust-lang/libc/commit/841b3eb01644283c3c41ac1d1a2ddcec141f15f2
|
|
libc just undefined MADV_SOFT_OFFLINE on mips.
https://github.com/rust-lang/libc/pull/1365
Fixes #1074
|
|
|
|
|
|
|
|
Finish off the work started in 8c9ac5a70 allowing the use of macros
without needing to import local inner macros.
|
|
libc just removed some symbols on linux/arm32 and linux/s390x that never
should've been defined in the first place.
https://github.com/rust-lang/libc/commit/24f8972b8d2d915b1687fc8197e1ed95e349a82e
https://github.com/rust-lang/libc/commit/d2695436ba5072078796c76f727a296e0f43caa6
|
|
received using recvmsg.
|
|
1041: allow importing macros without helpers in the 2018 edition r=asomers a=euclio
~This PR adds the `$crate::` prefix to all uses of helper macros, which will allow users of the 2018 edition to import the macros without needing to also import their helpers.~
See https://doc.rust-lang.org/edition-guide/rust-2018/macros/macro-changes.html#macros-with-crate-prefix for more info.
~While this is a cleaner solution than using `#[macro_export(local_inner_macros)]`, it also requires bumping the minimum supported compiler version to 1.30. If this is acceptable, I'll add a commit to update the Travis configuration and docs.~
This PR now uses `local_inner_macros` to preserve compatibility with the current minimum Rust version.
Co-authored-by: Andy Russell <arussell123@gmail.com>
|
|
|
|
This will allow users of the 2018 edition to import the macros without
needing to also import their helpers.
|
|
|
|
|
|
1016: Added inotify bindings. r=asomers a=vdagonneau
Hi !
I needed inotify bindings and noticed that nix did not have any so here is a PR to add it.
There was another PR from 2015 to add support for inotify that was never merged. I took some of the feedback and applied it here.
Co-authored-by: Vincent Dagonneau <vincentdagonneau@gmail.com>
|
|
It was disabled long ago and nobody remembered to reenable it. I'm
guessing it's fixed by now.
|
|
|
|
Previous versions of Cargo would create and destroy a new thread for
each test. Cargo 1.33.0 instead creates a thread pool and reuses the
same thread for multiple tests. Some Nix tests that changed the
per-thread sigmask began to fail as a result, because they didn't do any
cleanup.
The easiest solution is to spawn a new thread for each of those tests.
|
|
Several symbols are now marked as deprecated on OSX. Fix the build by
marking these symbols' Nix wrappers as deprecated, too.
|
|
|
|
This was an oversight from PR #1002
|
|
On some platforms the alignment of cmsg_data could be less than the
alignment of the messages that it contains. That led to unaligned
reads
on those platforms. This change fixes the issue by always copying the
message contents into aligned objects. The change is not 100%
backwards
compatible when using recvmsg. Users may have to replace code like
this:
```rust
if let ControlMessage::ScmRights(&fds) = cmsg {
```
with this:
```rust
if let ControlMessageOwned::ScmRights(fds) = cmsg {
```
Fixes #999
|
|
CmsgSpace had three problems:
1) It would oversize buffers that expect multiple control messages
2) It didn't use the libc CMSG_SPACE(3) macro, so it might actually
undersize a buffer for a single control message.
3) It could do bad things on drop, if you instantiate it with a type
that implements Drop (which none of the currently supported
ControlMessage types do).
Fixes #994
|
|
There were two problems:
1) It would always return Ok, even on error
2) It could panic if there was an error, because
sockaddr_storage_to_addr would be called on uninitialized memory.
|
|
Our hand-rolled logic had subtle alignment bugs that caused
test_scm_rights to fail on OpenBSD (and probably could cause problems on
other platforms too). Using cmsg(3) is much cleaner, shorter, and more
portable. No user-visible changes.
|
|
Include IP_PKTINFO and IP6_PKTINFO on netbsd/openbsd.
|
|
|
|
1) lutimes doesn't exist on OpenBSD so it needs to be under conditional
compilation.
The only "reference" that I could find related to this is the discussion
here: https://github.com/rust-lang/libc/pull/790 .
2) fexecve doesn't exist on OpenBSD so add conditional compilation for it
in unistd and in related tests.
The only "reference" that I could find is a mention that fexecve is
not implemented on OpenBSD in the manual pages for signal(3) and
sigaction(2):
Official repository (search for "fexecve"):
https://cvsweb.openbsd.org/src/lib/libc/sys/sigaction.2?rev=1.75&content-type=text/x-cvsweb-markup
Github mirror:
https://github.com/openbsd/src/blob/master/lib/libc/sys/sigaction.2#L619
3) AIO doesn't work on OpenBSD so put test_aio_drop under conditional
compilation.
4) Add relevant changelog entries.
P.S. On OpenBSD remains the issue of test_scm_rights which builds
correctly but fails at runtime.
|
|
Closes #476
|
|
|
|
The old test made assumptions about the responsiveness of the test
environment. The new test does not, and it's simpler too.
|
|
993: Don't reference packed structs. r=asomers a=pusateri
Fixes #992.
Don't merge this yet. I have more testing to do. I just am pushing it up for others.
Co-authored-by: Tom Pusateri <pusateri@bangj.com>
|
|
990: Add cmsg PKTINFO for IPv4 and IPv6. r=asomers a=pusateri
Replaces #891 and attempts to address all previous concerns.
Co-authored-by: Tom Pusateri <pusateri@bangj.com>
|
|
Some tests have been disabled and will need further review.
|
|
ignore pktinfo tests on qemu mips,mips64,powerpc64
Original work by @mcginty.
|
|
try! is not available in Rust 2018
|
|
|
|
These constants have the same value on sparc64, so need to be removed as enums
in Rust can't have multiple names for the same value.
|
|
|
|
|
|
|
|
|
|
I previously advocated for the latter syntax on stylistic grounds. But
it generates less efficient code, because it creates a new lambda
function for each usage. The optimizer does not combine them. This
change saves about 6KB of code.
|
|
967: Add a wrapper for lutimes(2) r=asomers a=jmmv
PR #944 added wrappers for the more-modern futimens(2) and utimesat(2),
but unfortunately these APIs are not available on old-ish systems.
In particular, macOS Sierra and below don't implement them, making the
new APIs unusable. Whether we should care about such "old" systems is
debatable, but the problem is that, at the moment, this is the only
macOS version usable on Travis to test kexts and, thus, to test FUSE
file systems.
This should have been part of PR #946, which added a wrapper for
utimes(2) following this same rationale, but missed lutimes(2) because
I simply didn't notice it existed.
Co-authored-by: Julio Merino <julio@meroh.net>
|
|
Makes it easier for newcomers :)
|
|
PR #944 added wrappers for the more-modern futimens(2) and utimesat(2),
but unfortunately these APIs are not available on old-ish systems.
In particular, macOS Sierra and below don't implement them, making the
new APIs unusable. Whether we should care about such "old" systems is
debatable, but the problem is that, at the moment, this is the only
macOS version usable on Travis to test kexts and, thus, to test FUSE
file systems.
This should have been part of PR #946, which added a wrapper for
utimes(2) following this same rationale, but missed lutimes(2) because
I simply didn't notice it existed.
|