diff --git a/bash-5.1/r_jobs/src/lib.rs b/bash-5.1/r_jobs/src/lib.rs index 07648c43c5dfc4c6c004635dc0423851cbe2e4b9..7b0219513f45983ab8ffdb72b0389b99a4eae2fd 100644 --- a/bash-5.1/r_jobs/src/lib.rs +++ b/bash-5.1/r_jobs/src/lib.rs @@ -357,3 +357,54 @@ macro_rules! QUEUE_SIGCHLD { queue_sigchld += 1; }; } + +#[no_mangle] +pub unsafe extern "C" fn UNQUEUE_SIGCHLD(os: c_int) { + queue_sigchld -= 1; + if queue_sigchld == 0 && os != sigchld { + queue_sigchld = 1; + waitchld(-1, 0); + queue_sigchld = 0; + } +} + + + +#[no_mangle] +pub unsafe extern "C" fn PSTOPPED(p:*mut PROCESS) -> c_int +{ + if (*p).status & 0xff == 0x7f { + return 1; + } else { + return 0; + } +} + +#[macro_export] +macro_rules! DEADJOB { + ($j:expr) => { + (**jobs.offset($j as isize)).state as c_int == JDEAD + }; +} + +#[macro_export] +macro_rules! IS_NOTIFIED { + ($j:expr) => { + (**jobs.offset($j as isize)).flags & J_NOTIFIED as c_int != 0 as c_int + }; +} + + +#[macro_export] +macro_rules! JOBSTATE { + ($job:expr) => { + (**jobs.offset($job as isize)).state + }; +} + +#[macro_export] +macro_rules! STOPPED { + ($job:expr) => { + (**jobs.offset($job as isize)).state == JSTOPPED + }; +}