From 769e31df761af029e7f7d8d3d2e1e6aa76ed469b Mon Sep 17 00:00:00 2001 From: wangmengc Date: Mon, 30 Oct 2023 17:42:54 +0800 Subject: [PATCH] add unwind_protect_int macro TRAP_STRING macro builtin status function --- bash-5.1/r_execute_cmd/src/lib.rs | 85 +++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/bash-5.1/r_execute_cmd/src/lib.rs b/bash-5.1/r_execute_cmd/src/lib.rs index 8b6603a2..d29c004a 100644 --- a/bash-5.1/r_execute_cmd/src/lib.rs +++ b/bash-5.1/r_execute_cmd/src/lib.rs @@ -4822,3 +4822,88 @@ unsafe extern "C" fn execute_simple_command( this_command_name = 0 as *mut libc::c_char; return result; } + +unsafe extern "C" fn builtin_status(mut result: libc::c_int) -> libc::c_int { + let mut r: libc::c_int = 0; + + match result as libc::c_uint{ + EX_USAGE | EX_BADSYNTAX => { + r = EX_BADUSAGE as libc::c_int; + } + EX_REDIRFAIL | EX_BADASSIGN | EX_EXPFAIL => { + r = EXECUTION_FAILURE as libc::c_int; + } + _ => { + r = if result > EX_SHERRBASE as libc::c_int { + EXECUTION_FAILURE as libc::c_int + } else { + 0 as libc::c_int + }; + } + } + return r; +} + + + +#[macro_export] +macro_rules! TRAP_STRING { + ($s:expr) => { + if signal_is_trapped($s) != 0 + && signal_is_ignored($s) == 0 + { + *trap_list + .as_mut_ptr() + .offset( + ($s) as isize, + ) + } else { + 0 as *mut libc::c_char + } + }; +} + +#[macro_export] +macro_rules! unwind_protect_int { + ($var:expr) => { + unwind_protect_mem( + &mut $var as *mut libc::c_int as *mut libc::c_char, + ::std::mem::size_of::() as libc::c_ulong as libc::c_int, + ); + }; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Gitee