Age | Commit message (Collapse) | Author |
|
|
|
|
|
These were both recently added to libc, add wrappers.
Signed-off-by: Dylan Reid <dgreid@chromium.org>
---
Changes since v2:
Updated function comments and CHANGELOG
Changes since v1:
Add function comments, update CHANGELOG
|
|
|
|
Don't use it for FilterFlag, because it triggers recursion limit reached error
|
|
Add Mkstemp (fixed for rust 1.2)
I fixed @antifuchs addition of `mkstmp` in https://github.com/nix-rust/nix/pull/365 by making it compile in Rust 1.2 and adding documentation.
A few remarks:
- made it working with Rust 1.2 which needed `to_bytes_with_nul()`. I think the implementation is memory safe but would like to have a pair of eyes checking that
- replaced Path by PathBuf so it's more in line with getcwd
- I didn't move it into another module. If this still the consensus then I would like to do that but in a separate PR (probably moving all stdio methods out)
- it's true that unistd doesn't need mkstmp since there is the crate tempdir and tempfile, but I'd love to see this here for completeness
|
|
|
|
OsString::from_vec on existing path var rather than construct string from pointer
|
|
readability
|
|
|
|
|
|
Fixed a bug where UnixAddr::new_abstract forgot to count the null-byte.
|
|
call pipe2 directly on Linux
A first shot at fixing https://github.com/nix-rust/nix/issues/414. This approach keeps the old implementation for platforms other than `notbsd`, because `libc` only exposes `pipe2` in the `notbsd` module.
I've tested this by hand on my Linux machine in a couple ways:
- Create a toy program that opens a pipe and passes it to `cat`, which hags if `O_CLOEXEC` doesn't get set properly. Confirm that it doesn't hang, but that it does if I pass `0` as the flags to `libc::pipe2`.
- Delete the new implementation entirely, and delete the `cfg` guards on the old implementation, and confirm that above is still true.
I haven't actually tested a cross compilation build though. Is there a standard way to do that?
|
|
|
|
Add epoll_create1
In order to get @kubo39's PR #384 forward, I cleaned up the commit history a bit and added `EpollEvent` back.
Since this module is used by mio, maybe @carllerche could comment on these changes.
|
|
*mut u8 whereas x86_64 and i686 expect it to be *mut i8)
|
|
|
|
|
|
|
|
|
|
|
|
Fixes #421.
|
|
|
|
The final version of libc's PR #379 removed a few definitions, and fixed
OpenBSD's definition of fn kevent.
|
|
|
|
|
|
|
|
|
|
|
|
add unistd::getcwd and unistd::mkdir
As a (late) followup of [this withdrawn PR](https://github.com/rust-lang/libc/pull/326) I have added getcwd (wrapper around `libc::getcwd`) and mkdir (wrapper around `libc::mkdir`) and added testing.
A few notes:
- I'm new to rust so I would appreciate some pair of eyes testing the code, plus I'm open for revision of code or general remarks about my coding style
- I have run the tests both on OSX as on Linux (Ubuntu)
- I've run `clippy` to see if my code is well formatted, however clippy issues many warnings about the project. I think I didn't add any more warnings
- the methods in unistd are not documented so I also left out the documentation of `getcwd` and `mkdir`, although I think it'd probably be good to add some documentation, especially some example code how to use the methods
- the base idea of `getcwd` is [taken from std](https://github.com/rust-lang/rust/blob/1.9.0/src/libstd/sys/unix/os.rs#L95-L119), should I mention that somewhere?
|
|
1.2.0 error in doc-test
|
|
|
|
against std::env::current_dir
|
|
|
|
the implementation in std
|
|
|
|
expect into proper try handling), needs testing still
|
|
Change 11aa1f34243d5bbb7d6327a6607bd9d2530f3954 to libc added kqueue-related
definitions. They are more accurate and more complete than nix's own
definitions. Use them where possible.
Also, rationalize Nix's definitions so its public API will be as similar as
possible across all OSes.
|
|
Replace ffi module by libc functions in mqueue.rs
This is almost finished. I still need to check if I introduced any breaking changes by changing signatures. I would want to record this in the change log, however, for that we still need to merge #391.
- [x] update change log
- [x] run rustfmt on `src/mqueue.rs`
|
|
|
|
|
|
|
|
|
|
Add FcntlArg::F_FULLFSYNC
https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fsync.2.html
|
|
https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fsync.2.html
|
|
|
|
On Linux, the cmsg_len field of struct cmsghdr has type size_t, but it
has size socklen_t on POSIX-compliant operating systems. So on
POSIX-compliant 64-bit operating systems, struct cmsghdr has padding
gaps that aren't present on Linux. Most of the issues fixed by this
commit related to those gaps.
src/sys/socket/ffi.rs
Fix the type of the cmsg_data field so the struct layout will be
correct.
src/sys/socket/mod.rs
In CmsgIterator.next, only return a single file descriptor.
sendmsg(2) can only stuff a single file descriptor into each
cmsg.
In cmsg_align, fix the rounding calculation, and eliminate a
division instruction.
Add a missing cmsg_align call in ControlMessage.len
In ControlMessage.encode_into, add any necessary padding bytes
between the cmsghdr and the data.
In sendmsg, fix some len<->capacity confusion.
|
|
Rules for generic types were located above rules for specific types, so the
rules for specific types never got matched. This caused the
sys::socket::sockopt::test::can_get_listen_on_tcp_socket test to fail on
FreeBSD. The solution is to put all of the generic rules at the bottom.
|
|
|
|
|