From 89d355d0cb034b090860dc2fddfd83b3a4f19a5a Mon Sep 17 00:00:00 2001 From: zhanghuanhuan Date: Mon, 31 Jul 2023 11:08:03 +0800 Subject: [PATCH] Add print redirect function name info --- bash-5.1/builtins_rust/alias/src/lib.rs | 35 ++++++++++++++++--------- bash-5.1/r_print_cmd/src/lib.rs | 15 ++++++++++- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/bash-5.1/builtins_rust/alias/src/lib.rs b/bash-5.1/builtins_rust/alias/src/lib.rs index 43a25252..197b3dd0 100644 --- a/bash-5.1/builtins_rust/alias/src/lib.rs +++ b/bash-5.1/builtins_rust/alias/src/lib.rs @@ -278,30 +278,41 @@ unsafe fn legal_alias_rust(name: *mut libc::c_char, value: *mut libc::c_char) -> } t = find_alias(name); if !t.is_null() { - println!("{} is already in alias", CStr::from_ptr(name).to_string_lossy().into_owned()); + println!( + "{} is already in alias", + CStr::from_ptr(name).to_string_lossy().into_owned() + ); print_alias(t, dflags); return 0; } name_w = find_user_command(name); new_value = sh_single_quote(value); // 按照空格区分 - new_value_2 = libc::strtok(value, CString::new(" ").unwrap().as_ptr() as *mut libc::c_char) ; + new_value_2 = libc::strtok( + value, + CString::new(" ").unwrap().as_ptr() as *mut libc::c_char, + ); t = find_alias(new_value_2); while t != std::ptr::null_mut() { - new_value_2 = libc::strtok((*t).value, CString::new(" ").unwrap().as_ptr() as *mut libc::c_char) ; - if libc::strcmp((*t).name,new_value_2) == 0 { + new_value_2 = libc::strtok( + (*t).value, + CString::new(" ").unwrap().as_ptr() as *mut libc::c_char, + ); + if libc::strcmp((*t).name, new_value_2) == 0 { break; } t = find_alias(new_value_2); } - let arr:[ *mut libc::c_char;7] = [CString::new("exec").unwrap().into_raw() as *mut libc::c_char, - CString::new("eval").unwrap().into_raw() as *mut libc::c_char, - CString::new("builtin").unwrap().into_raw() as *mut libc::c_char, - CString::new("command").unwrap().into_raw() as *mut libc::c_char, - CString::new("function").unwrap().into_raw() as *mut libc::c_char, - CString::new("source").unwrap().into_raw() as *mut libc::c_char, - CString::new(".").unwrap().into_raw() as *mut libc::c_char ]; - + let arr: [*mut libc::c_char; 7] = [ + CString::new("exec").unwrap().into_raw() as *mut libc::c_char, + CString::new("eval").unwrap().into_raw() as *mut libc::c_char, + CString::new("builtin").unwrap().into_raw() as *mut libc::c_char, + CString::new("command").unwrap().into_raw() as *mut libc::c_char, + CString::new("function").unwrap().into_raw() as *mut libc::c_char, + CString::new("source").unwrap().into_raw() as *mut libc::c_char, + CString::new(".").unwrap().into_raw() as *mut libc::c_char, + ]; + for index in 0..7 { if libc::strcmp(new_value_2, arr[index]) == 0 { println!("command {} will raise an unsafe operation",CStr::from_ptr(arr[index]).to_string_lossy().into_owned()); diff --git a/bash-5.1/r_print_cmd/src/lib.rs b/bash-5.1/r_print_cmd/src/lib.rs index 1e15de60..3e5937cc 100644 --- a/bash-5.1/r_print_cmd/src/lib.rs +++ b/bash-5.1/r_print_cmd/src/lib.rs @@ -1581,9 +1581,22 @@ pub unsafe extern "C" fn r_named_function_string(name:*mut c_char, command:*mut cmdcopy }, ); - + PRINT_DEFERRED_HEREDOCS!(b"\0" as *const u8 as *const c_char); + indentation = old_indent; + indentation = old_amount; + indentation_amount = old_amount; + inside_function_def -= 1; + if !func_redirects.is_null() + { + newline(b"} \0" as *const u8 as *const c_char as *mut c_char); + print_redirection_list(func_redirects); + (*cmdcopy).redirects = func_redirects; + } + else{ + newline(b"}\0" as *const u8 as *const c_char as *mut c_char); + } } -- Gitee