Disable printing of error message on file descriptor 2 on CloudABI.
As CloudABI is a capability-based runtime environment, file descriptors are the mechanism that grants rights to a process. These file descriptors may be passed into processes on startup using a utility called cloudabi-run. Unlike the POSIX shell, cloudabi-run does not follow the UNIX model where file descriptors 0, 1 and 2 represent stdin, stdout and stderr. There can be arbitrary many (or few) file descriptors that can be provided. For this reason, CloudABI's C library also doesn't define STD*_FILENO. liblibc should also not declare these. Disable the code in liballoc_system that tries to print error messages over file descriptor 2. For now, let's keep this function quiet. We'll see if we can think of some other way to log this in the future.
This commit is contained in:
parent
503153e950
commit
838fb4a6a0
@ -213,6 +213,16 @@ mod platform {
|
|||||||
struct Stderr;
|
struct Stderr;
|
||||||
|
|
||||||
impl Write for Stderr {
|
impl Write for Stderr {
|
||||||
|
#[cfg(target_os = "cloudabi")]
|
||||||
|
fn write_str(&mut self, _: &str) -> fmt::Result {
|
||||||
|
// CloudABI does not have any reserved file descriptor
|
||||||
|
// numbers. We should not attempt to write to file
|
||||||
|
// descriptor #2, as it may be associated with any kind of
|
||||||
|
// resource.
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(target_os = "cloudabi"))]
|
||||||
fn write_str(&mut self, s: &str) -> fmt::Result {
|
fn write_str(&mut self, s: &str) -> fmt::Result {
|
||||||
unsafe {
|
unsafe {
|
||||||
libc::write(libc::STDERR_FILENO,
|
libc::write(libc::STDERR_FILENO,
|
||||||
|
Loading…
Reference in New Issue
Block a user