Skip to content

Commit e6bfbbb

Browse files
committed
Use cfg_if to branch code in WaitStatus decode
1 parent 8de4cfb commit e6bfbbb

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/sys/wait.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,23 @@ fn decode(pid : pid_t, status: i32) -> WaitStatus {
191191
} else if status::signaled(status) {
192192
WaitStatus::Signaled(pid, status::term_signal(status), status::dumped_core(status))
193193
} else if status::stopped(status) {
194-
#[cfg(any(target_os = "linux", target_os = "android"))] {
195-
let status_additional = status::stop_additional(status);
196-
if status_additional != 0 {
197-
return WaitStatus::PtraceEvent(pid, status::stop_signal(status), status::stop_additional(status))
194+
cfg_if! {
195+
if #[cfg(any(target_os = "linux", target_os = "android"))] {
196+
fn decode_stopped(pid: pid_t, status: i32) -> WaitStatus {
197+
let status_additional = status::stop_additional(status);
198+
if status_additional == 0 {
199+
WaitStatus::Stopped(pid, status::stop_signal(status))
200+
} else {
201+
WaitStatus::PtraceEvent(pid, status::stop_signal(status), status::stop_additional(status))
202+
}
203+
}
204+
} else {
205+
fn decode_stopped(pid: pid_t, status: i32) -> WaitStatus {
206+
WaitStatus::Stopped(pid, status::stop_signal(status))
207+
}
198208
}
199209
}
200-
WaitStatus::Stopped(pid, status::stop_signal(status))
210+
decode_stopped(pid, status)
201211
} else {
202212
assert!(status::continued(status));
203213
WaitStatus::Continued(pid)

0 commit comments

Comments
 (0)