From 7cf0664d8ec4207c7da1bcb85b2c30f8660b446c Mon Sep 17 00:00:00 2001 From: zhanghuanhuan Date: Mon, 31 Jul 2023 10:59:34 +0800 Subject: [PATCH] print '\n' for function has multiline --- bash-5.1/builtins_rust/alias/src/lib.rs | 21 ++++--- bash-5.1/r_print_cmd/src/lib.rs | 79 ++++++++++++++----------- 2 files changed, 57 insertions(+), 43 deletions(-) diff --git a/bash-5.1/builtins_rust/alias/src/lib.rs b/bash-5.1/builtins_rust/alias/src/lib.rs index a08c179d..614dde50 100644 --- a/bash-5.1/builtins_rust/alias/src/lib.rs +++ b/bash-5.1/builtins_rust/alias/src/lib.rs @@ -93,7 +93,7 @@ pub unsafe extern "C" fn r_alias_builtin(mut list: *mut WordList) -> libc::c_int } match offset as u8 { b'p' => { - pflag = 1 ; + pflag = 1; dflags |= AL_REUSABLE; } _ => { @@ -243,16 +243,19 @@ unsafe extern "C" fn print_alias(alias: *mut AliasT, flags: libc::c_int) { } //); } - println!("{}={}", CStr::from_ptr((*alias).name).to_string_lossy().into_owned(), CStr::from_ptr(value).to_string_lossy().into_owned()); + println!( + "{}={}", + CStr::from_ptr((*alias).name).to_string_lossy().into_owned(), + CStr::from_ptr(value).to_string_lossy().into_owned() + ); free(value as *mut libc::c_void); } -unsafe fn legal_alias_rust(name :*mut libc::c_char,value :*mut libc::c_char ) -> libc::c_int { - - let name_w:*mut libc::c_char; - let value_w:*mut libc::c_char; - let new_value:*mut libc::c_char; - let mut new_value_2:*mut libc::c_char; - let mut _shell_bui : *mut libc::c_char; +unsafe fn legal_alias_rust(name: *mut libc::c_char, value: *mut libc::c_char) -> libc::c_int { + let name_w: *mut libc::c_char; + let value_w: *mut libc::c_char; + let new_value: *mut libc::c_char; + let mut new_value_2: *mut libc::c_char; + let mut _shell_bui: *mut libc::c_char; let mut t: *mut AliasT; let dflags ; dflags = if posixly_correct != 0 { 0 as libc::c_int } else { 0x1 as libc::c_int }; diff --git a/bash-5.1/r_print_cmd/src/lib.rs b/bash-5.1/r_print_cmd/src/lib.rs index b87ca877..4006efb7 100644 --- a/bash-5.1/r_print_cmd/src/lib.rs +++ b/bash-5.1/r_print_cmd/src/lib.rs @@ -1523,40 +1523,51 @@ pub unsafe extern "C" fn print_function_def(func: *mut FUNCTION_DEF) #[no_mangle] pub unsafe extern "C" fn r_named_function_string(name:*mut c_char, command:*mut COMMAND, flags:c_int)-> *mut c_char { - // println!("r_named_function_string"); - r_print_command(command); - let mut result:*mut c_char; - let old_indent:c_int; - let old_amount:c_int; - let mut cmdcopy:*mut COMMAND; - let mut func_redirects:*mut REDIRECT; - - old_indent = indentation; - old_amount = indentation_amount; - command_string_index = was_heredoc; - command_string_index = 0; - was_heredoc = 0; - deferred_heredocs = std::ptr::null_mut(); - - if !name.is_null() && *name as c_int != 0 - { - if find_reserved_word(name) >= 0 - { - cprintf_1(b"function \0" as *const u8 as *const c_char); - } - cprintf_1(name); - } - cprintf_1(b"() \0" as *const u8 as *const c_char); - if (flags & FUNC_MULTILINE) == 0 - { - indentation = 1; - indentation_amount = 0; - } - else - { - cprintf_1(b"\n\0" as *const u8 as *const c_char); - indentation += indentation_amount; - } + // println!("r_named_function_string"); + r_print_command(command); + let mut result:*mut c_char; + let old_indent:c_int; + let old_amount:c_int; + let mut cmdcopy:*mut COMMAND; + let mut func_redirects:*mut REDIRECT; + + old_indent = indentation; + old_amount = indentation_amount; + command_string_index = was_heredoc; + command_string_index = 0; + was_heredoc = 0; + deferred_heredocs = std::ptr::null_mut(); + + if !name.is_null() && *name as c_int != 0 + { + if find_reserved_word(name) >= 0 + { + cprintf_1(b"function \0" as *const u8 as *const c_char); + } + cprintf_1(name); + } + cprintf_1(b"() \0" as *const u8 as *const c_char); + if (flags & FUNC_MULTILINE) == 0 + { + indentation = 1; + indentation_amount = 0; + } + else + { + cprintf_1(b"\n\0" as *const u8 as *const c_char); + indentation += indentation_amount; + } + + inside_function_def += 1; + cprintf_1(if (flags & FUNC_MULTILINE) == 0 { + b"{ \n\0" as *const u8 as *const c_char + } + else { + b"{ \0" as *const u8 as *const c_char + }, + ); + + cmdcopy = copy_command(command); } -- Gitee