Match c_char definitions and enable signal reset for L4Re
* Match definition of c_char in os/raw.rs with the libc definition Due to historic reasons, os/raw.rs redefines types for c_char from libc, but these didn't match. Now they do :). * Enable signal reset on exec for L4Re L4Re has full signal emulation and hence it needs to reset the signal set of the child with sigemptyset. However, gid and uid should *not* be set.
This commit is contained in:
parent
d6ad402a64
commit
2cf0a4ad46
4 changed files with 19 additions and 13 deletions
|
@ -21,6 +21,7 @@ use fmt;
|
|||
target_arch = "s390x")),
|
||||
all(target_os = "android", any(target_arch = "aarch64",
|
||||
target_arch = "arm")),
|
||||
all(target_os = "l4re", target_arch = "x86_64"),
|
||||
all(target_os = "fuchsia", target_arch = "aarch64")))]
|
||||
#[stable(feature = "raw_os", since = "1.1.0")] pub type c_char = u8;
|
||||
#[cfg(not(any(all(target_os = "linux", any(target_arch = "aarch64",
|
||||
|
@ -30,6 +31,7 @@ use fmt;
|
|||
target_arch = "s390x")),
|
||||
all(target_os = "android", any(target_arch = "aarch64",
|
||||
target_arch = "arm")),
|
||||
all(target_os = "l4re", target_arch = "x86_64"),
|
||||
all(target_os = "fuchsia", target_arch = "aarch64"))))]
|
||||
#[stable(feature = "raw_os", since = "1.1.0")] pub type c_char = i8;
|
||||
#[stable(feature = "raw_os", since = "1.1.0")] pub type c_schar = i8;
|
||||
|
|
|
@ -36,6 +36,7 @@ pub mod fs;
|
|||
pub mod process;
|
||||
pub mod raw;
|
||||
pub mod thread;
|
||||
#[cfg(not(target_os = "l4re"))]
|
||||
pub mod net;
|
||||
|
||||
/// A prelude for conveniently writing platform-specific code.
|
||||
|
|
|
@ -44,6 +44,7 @@ pub mod fd;
|
|||
pub mod fs;
|
||||
pub mod memchr;
|
||||
pub mod mutex;
|
||||
#[cfg(not(target_os = "l4re"))]
|
||||
pub mod net;
|
||||
pub mod os;
|
||||
pub mod os_str;
|
||||
|
|
|
@ -160,6 +160,7 @@ impl Command {
|
|||
t!(cvt_r(|| libc::dup2(fd, libc::STDERR_FILENO)));
|
||||
}
|
||||
|
||||
if cfg!(not(any(target_os = "l4re"))) {
|
||||
if let Some(u) = self.get_gid() {
|
||||
t!(cvt(libc::setgid(u as gid_t)));
|
||||
}
|
||||
|
@ -175,6 +176,7 @@ impl Command {
|
|||
|
||||
t!(cvt(libc::setuid(u as uid_t)));
|
||||
}
|
||||
}
|
||||
if let Some(ref cwd) = *self.get_cwd() {
|
||||
t!(cvt(libc::chdir(cwd.as_ptr())));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue