From c361b60dc9cd6ccd6adb2bbb47f1e7c4f97a1b50 Mon Sep 17 00:00:00 2001 From: zhanghuanhuan Date: Mon, 13 Nov 2023 17:45:32 +0800 Subject: [PATCH] add get random for variables file --- bash-5.1/r_variables/src/lib.rs | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/bash-5.1/r_variables/src/lib.rs b/bash-5.1/r_variables/src/lib.rs index 7cfe90c6..c6f46462 100644 --- a/bash-5.1/r_variables/src/lib.rs +++ b/bash-5.1/r_variables/src/lib.rs @@ -1024,3 +1024,48 @@ pub unsafe extern "C" fn get_random_number() -> libc::c_int { return last_random_value; } +unsafe extern "C" fn get_random(mut var: *mut SHELL_VAR) -> *mut SHELL_VAR { + let mut rv: libc::c_int = 0; + let mut p: *mut libc::c_char = 0 as *mut libc::c_char; + rv = get_random_number(); + p = itos(rv as intmax_t); + if !(value_cell!(var).is_null()) { + free(value_cell!(var) as *mut libc::c_void); + } + + VSETATTR! (var,att_integer); + var_setvalue!(var,p); + return var; +} + +unsafe extern "C" fn get_urandom(var: *mut SHELL_VAR) -> *mut SHELL_VAR { + let mut rv: libc::c_uint = 0; + let mut p: *mut libc::c_char = 0 as *mut libc::c_char; + + rv = get_urandom32(); + p = itos(rv as intmax_t); + if !(value_cell!(var)).is_null() { + libc::free(value_cell!(var) as *mut libc::c_void); + } + VSETATTR!(var, att_integer); + var_setvalue!(var,p); + return var; +} + +unsafe extern "C" fn assign_lineno( + + mut var: *mut SHELL_VAR, + mut value: *mut libc::c_char, + mut unused: arrayind_t, + mut key: *mut libc::c_char +) -> *mut SHELL_VAR { + let mut new_value: intmax_t = 0; + if value.is_null() || *value as libc::c_int == '\0' as i32 + || legal_number(value, &mut new_value) == 0 as libc::c_int + { + new_value = 0 as libc::c_int as intmax_t; + } + line_number_base = new_value as libc::c_int; + line_number = line_number_base; + return var; +} -- Gitee