Age | Commit message (Collapse) | Author |
|
Prefer libc_bitflags! over bitflags!. Prefer libc::CONSTANTS over
writing the constant manually.
|
|
Signed-off-by: Paul Osborne <paul.osborne@smartthings.com>
|
|
|
|
This prevents us breaking builds under newer Rust versions with
additional warnings.
|
|
|
|
Add context module.
The module wraps context handling related functions and structs.
|
|
We define many bitflags types with values from the libc crate. Currently
these look like this:
bitflags!{
flags ProtFlags: libc::c_int {
const PROT_NONE = libc::PROT_NONE,
const PROT_READ = libc::PROT_READ,
const PROT_WRITE = libc::PROT_WRITE,
const PROT_EXEC = libc::PROT_EXEC,
#[cfg(any(target_os = "linux", target_os = "android"))]
const PROT_GROWSDOWN = libc::PROT_GROWSDOWN,
#[cfg(any(target_os = "linux", target_os = "android"))]
const PROT_GROWSUP = libc::PROT_GROWSUP,
}
}
There's some repetition which is tedious. With the new macro, the above
can instead be written
libc_bitflags!{
flags ProtFlags: libc::c_int {
PROT_NONE,
PROT_READ,
PROT_WRITE,
PROT_EXEC,
#[cfg(any(target_os = "linux", target_os = "android"))]
PROT_GROWSDOWN,
#[cfg(any(target_os = "linux", target_os = "android"))]
PROT_GROWSUP,
}
}
Thanks to Daniel Keep for the Little Book of Rust Macros, and for
helping with this macro.
Refs https://github.com/nix-rust/nix/issues/264
|
|
The module wraps context handling related functions and structs.
|
|
With rust 1.7, the following warning was being emitted by the compiler:
warning: `pub extern crate` does not work as expected and should
not be used. Likely to become an error. Prefer `extern crate` and
`pub use`.
Based on https://github.com/rust-lang/rust/issues/26775 it appears that
the warning in 1.7 which was to be escalated to an error is going away
but in older versions of rust it is still the case that `pub extern crate`
will not work as expected. Instead, we use a somewhat creative hack to
export the libc root as a module in nix. Down the line, it may make
sense to either eliminate the need to export libc (by chaning the ioctl
macros) or to move toward deprecated older versions of rustc.
Signed-off-by: Paul Osborne <osbpau@gmail.com>
|
|
Refs https://github.com/nix-rust/nix/issues/264
|
|
|
|
|
|
|
|
|
|
|
|
This is a stop gap improvement until the NixPath reform is figured out.
refs #221
|
|
The functions defined are POSIX and should exist on all platforms nix
supports.
|
|
|
|
This makes NixPath more versatile while waiting to see if there will be
a NixPath overhaul.
Refs https://github.com/carllerche/nix-rust/issues/221
|
|
|
|
|
|
|
|
|
|
- Add From implementaion for io::Error, so nix::Error can be turned into
a std::io::Error.
- Add From from Errno - a little more idiomatic than from_errno these days
- Implement std::error::Error for nix::Error
|
|
|
|
|
|
|
|
As described in #117, the `AsExtStr` trait is defined to return a raw `*const
libc::c_char`. Its impl for `OsStr` simply borrowed the byte slice from its
`OsStr` argument and cast it to a `*const libc::c_char`, which does not
construct a proper null-terminated C string.
Given this, the `AsExtStr` is not necessary and is removed. `NixPath` is
updated to yield `CStr`.
Fixes #117, #120
Thanks to @dead10ck
|
|
|
|
|
|
|
|
|
|
Initially support this by assuming the lowest common denominator. The long
term solution is to improve the build system to allow pulling in more specific
features that are available on the target system.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|