summaryrefslogtreecommitdiff
path: root/library/std/src/sys/unix/process/process_unix.rs
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2021-08-24 18:56:24 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2021-08-24 19:24:07 +0100
commit848a38ac9d9bc956cded893bdd55e1171a2706dd (patch)
tree2917447f42f4470a34e9ef5b586a0d4ee7cb415c /library/std/src/sys/unix/process/process_unix.rs
parent47ab5f7ce27397310bd8359b8db1504fbf8a9b59 (diff)
downloadrust-848a38ac9d9bc956cded893bdd55e1171a2706dd.tar.gz
Manual Debug for Unix ExitCode ExitStatus ExitStatusError
These structs have misleading names. An ExitStatus[Error] is actually a Unix wait status; an ExitCode is actually an exit status. The Display impls are fixed, but the Debug impls are still misleading, as reported in #74832. Fix this by pretending that these internal structs are called `unix_exit_status` and `unix_wait_status` as applicable. (We can't actually rename the structs because of the way that the cross-platform machinery works: the names are cross-platform.) Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'library/std/src/sys/unix/process/process_unix.rs')
-rw-r--r--library/std/src/sys/unix/process/process_unix.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/library/std/src/sys/unix/process/process_unix.rs b/library/std/src/sys/unix/process/process_unix.rs
index 12edf04a4e2..7b8230d89da 100644
--- a/library/std/src/sys/unix/process/process_unix.rs
+++ b/library/std/src/sys/unix/process/process_unix.rs
@@ -607,9 +607,15 @@ impl Process {
}
/// Unix exit statuses
-#[derive(PartialEq, Eq, Clone, Copy, Debug)]
+#[derive(PartialEq, Eq, Clone, Copy)]
pub struct ExitStatus(c_int);
+impl fmt::Debug for ExitStatus {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_tuple("unix_wait_status").field(&self.0).finish()
+ }
+}
+
impl ExitStatus {
pub fn new(status: c_int) -> ExitStatus {
ExitStatus(status)
@@ -683,7 +689,7 @@ impl fmt::Display for ExitStatus {
}
}
-#[derive(PartialEq, Eq, Clone, Copy, Debug)]
+#[derive(PartialEq, Eq, Clone, Copy)]
pub struct ExitStatusError(NonZero_c_int);
impl Into<ExitStatus> for ExitStatusError {
@@ -692,6 +698,12 @@ impl Into<ExitStatus> for ExitStatusError {
}
}
+impl fmt::Debug for ExitStatusError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_tuple("unix_wait_status").field(&self.0).finish()
+ }
+}
+
impl ExitStatusError {
pub fn code(self) -> Option<NonZeroI32> {
ExitStatus(self.0.into()).code().map(|st| st.try_into().unwrap())