From 5e503e841953fe549a35c1b90aa13d123c452684 Mon Sep 17 00:00:00 2001 From: liutong Date: Tue, 27 Jun 2023 23:04:24 +0800 Subject: [PATCH] add usage for ulimit --- bash-5.1/builtins_rust/cd/src/lib.rs | 15 +++++++++++++-- bash-5.1/builtins_rust/complete/src/lib.rs | 5 +++++ bash-5.1/builtins_rust/declare/src/lib.rs | 7 ++++++- bash-5.1/builtins_rust/fc/src/lib.rs | 11 ++++++----- bash-5.1/builtins_rust/mapfile/src/intercdep.rs | 1 + bash-5.1/builtins_rust/mapfile/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/printf/src/intercdep.rs | 1 + bash-5.1/builtins_rust/printf/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/read/src/intercdep.rs | 2 +- bash-5.1/builtins_rust/read/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/set/src/lib.rs | 15 ++++++++++++--- bash-5.1/builtins_rust/setattr/src/intercdep.rs | 1 + bash-5.1/builtins_rust/setattr/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/suspend/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/trap/src/intercdep.rs | 1 + bash-5.1/builtins_rust/trap/src/lib.rs | 4 ++++ bash-5.1/builtins_rust/type/src/lib.rs | 12 ++++++++---- bash-5.1/builtins_rust/ulimit/src/lib.rs | 8 ++------ bash-5.1/builtins_rust/umask/src/lib.rs | 8 +++++++- bash-5.1/builtins_rust/wait/src/lib.rs | 5 +++++ record.txt | 1 + 21 files changed, 94 insertions(+), 23 deletions(-) diff --git a/bash-5.1/builtins_rust/cd/src/lib.rs b/bash-5.1/builtins_rust/cd/src/lib.rs index 1025580e..a44fe505 100644 --- a/bash-5.1/builtins_rust/cd/src/lib.rs +++ b/bash-5.1/builtins_rust/cd/src/lib.rs @@ -344,7 +344,9 @@ extern "C" { fn same_file (path1:*const c_char, path2:*const c_char, stp1:*mut libc::stat, stp2:*mut libc::stat)->i32; fn make_absolute (str1:*const c_char, dot_path:*const c_char)->* mut c_char; fn sh_canonpath (path:* mut c_char, flags:i32)->* mut c_char; - fn set_working_directory (path:* mut c_char); + fn set_working_directory (path:* mut c_char); + fn builtin_help(); + } pub static mut xattrfd:i32=-1; @@ -499,6 +501,10 @@ pub extern "C" fn r_cd_builtin (mut list:*mut WordList)->i32 { 'L'=>{no_symlinks = 0;} 'e'=>{eflag = 1;} _=>{ + if opt == -99 { + builtin_help(); + return EX_USAGE; + } builtin_usage (); return EX_USAGE; } @@ -660,7 +666,12 @@ pub extern "C" fn r_pwd_builtin (list:* mut WordList)->i32 { 'P'=>{verbatim_pwd =1; pflag = 1;} 'L'=>{verbatim_pwd = 0;} - _=>{builtin_usage (); + _=>{ + if opt == -99 { + builtin_help(); + return EX_USAGE; + } + builtin_usage (); return EX_USAGE; } } diff --git a/bash-5.1/builtins_rust/complete/src/lib.rs b/bash-5.1/builtins_rust/complete/src/lib.rs index 9dd58df4..a3254b4f 100644 --- a/bash-5.1/builtins_rust/complete/src/lib.rs +++ b/bash-5.1/builtins_rust/complete/src/lib.rs @@ -554,6 +554,7 @@ extern "C" { fn sh_invalidid (value:* mut c_char); fn sh_invalidoptname (value:* mut c_char); fn builtin_usage(); + fn builtin_help(); static list_optarg:* mut c_char; fn builtin_error(err:*const c_char,...); fn check_identifier (w:* mut WordDesc, f:i32)->i32; @@ -822,6 +823,10 @@ pub extern "C" fn r_build_actions (list : *mut WordList, flagp:* mut _optflags, Xarg = list_optarg; } _=>{ + if opt == -99 { + builtin_help(); + return EX_USAGE; + } builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/declare/src/lib.rs b/bash-5.1/builtins_rust/declare/src/lib.rs index eede3a82..6da37b12 100644 --- a/bash-5.1/builtins_rust/declare/src/lib.rs +++ b/bash-5.1/builtins_rust/declare/src/lib.rs @@ -716,7 +716,12 @@ pub extern "C" fn r_declare_internal (list:* mut WordList, local_var:i32)->i32 } } 'I'=>{ inherit_flag = MKLOC_INHERIT!();} - _=>{ builtin_usage (); + _=>{ + if opt == -99 { + builtin_help(); + return EX_USAGE; + } + builtin_usage (); return EX_USAGE; } } diff --git a/bash-5.1/builtins_rust/fc/src/lib.rs b/bash-5.1/builtins_rust/fc/src/lib.rs index 5d0eb3fc..66bbbfc7 100644 --- a/bash-5.1/builtins_rust/fc/src/lib.rs +++ b/bash-5.1/builtins_rust/fc/src/lib.rs @@ -400,17 +400,19 @@ pub extern "C" fn r_set_verbose_flag (){ #[no_mangle] pub extern "C" fn r_fc_number (list:* mut WordList)->i32 { - let mut s:*mut c_char; + let mut s:*mut c_char = 0 as *mut i8; if list == std::ptr::null_mut(){ return 0; } unsafe { - s = (*(*list).word).word; - if char::from(*s as u8 ) == '-' { - s=(s as u8 +1) as *mut c_char; + if (*list).word != std::ptr::null_mut() { + s = (*(*list).word).word; + if char::from(*s as u8 ) == '-' { + s= s.offset(1) ; } + } return legal_number (s, std::ptr::null_mut()); } } @@ -536,7 +538,6 @@ pub extern "C" fn r_fc_builtin (list:* mut WordList)->i32 opt = internal_getopt (list, CString::new(":e:lnrs").unwrap().as_ptr() as * mut c_char); ret= ret && (opt !=-1); } - let mut llist:* mut WordList = loptend.clone(); if ename != std::ptr::null_mut() && char::from(*ename as u8 ) == '-' && char::from(*((ename as usize +4) as * mut c_char) as u8 )== '\0'{ diff --git a/bash-5.1/builtins_rust/mapfile/src/intercdep.rs b/bash-5.1/builtins_rust/mapfile/src/intercdep.rs index 8450248d..a3ebfc37 100644 --- a/bash-5.1/builtins_rust/mapfile/src/intercdep.rs +++ b/bash-5.1/builtins_rust/mapfile/src/intercdep.rs @@ -71,6 +71,7 @@ extern "C" { pub fn reset_internal_getopt(); pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int; pub fn builtin_usage(); + fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn legal_identifier(arg1: *const c_char) -> c_int; diff --git a/bash-5.1/builtins_rust/mapfile/src/lib.rs b/bash-5.1/builtins_rust/mapfile/src/lib.rs index 4fa35f5b..c4d9530d 100644 --- a/bash-5.1/builtins_rust/mapfile/src/lib.rs +++ b/bash-5.1/builtins_rust/mapfile/src/lib.rs @@ -94,6 +94,10 @@ unsafe { } } _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/printf/src/intercdep.rs b/bash-5.1/builtins_rust/printf/src/intercdep.rs index db66567d..1f133a6f 100644 --- a/bash-5.1/builtins_rust/printf/src/intercdep.rs +++ b/bash-5.1/builtins_rust/printf/src/intercdep.rs @@ -56,6 +56,7 @@ extern "C" { pub fn reset_internal_getopt(); pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int; pub fn builtin_usage(); + fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn builtin_warning(format: *const c_char, ...); pub fn builtin_bind_variable(name: *mut c_char, value: *mut c_char, flags: c_int) -> *mut SHELL_VAR; diff --git a/bash-5.1/builtins_rust/printf/src/lib.rs b/bash-5.1/builtins_rust/printf/src/lib.rs index 1a29c02d..23bf4584 100644 --- a/bash-5.1/builtins_rust/printf/src/lib.rs +++ b/bash-5.1/builtins_rust/printf/src/lib.rs @@ -140,6 +140,10 @@ unsafe { } } _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/read/src/intercdep.rs b/bash-5.1/builtins_rust/read/src/intercdep.rs index 4ea450bc..5c9570a0 100644 --- a/bash-5.1/builtins_rust/read/src/intercdep.rs +++ b/bash-5.1/builtins_rust/read/src/intercdep.rs @@ -271,7 +271,7 @@ extern "C" { pub fn rl_get_keymap() -> Keymap; pub fn rl_insert(count: c_int, key: c_int) -> c_int; pub fn rl_newline(count: c_int, key: c_int) -> c_int; - + fn builtin_help(); } extern "C" { diff --git a/bash-5.1/builtins_rust/read/src/lib.rs b/bash-5.1/builtins_rust/read/src/lib.rs index 5ca4bd4c..3fcc4683 100644 --- a/bash-5.1/builtins_rust/read/src/lib.rs +++ b/bash-5.1/builtins_rust/read/src/lib.rs @@ -193,6 +193,10 @@ unsafe { } _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/set/src/lib.rs b/bash-5.1/builtins_rust/set/src/lib.rs index 32066f4e..715d32d6 100644 --- a/bash-5.1/builtins_rust/set/src/lib.rs +++ b/bash-5.1/builtins_rust/set/src/lib.rs @@ -852,6 +852,7 @@ extern "C" { fn with_input_from_stream (_:libc::FILE , _: *const i8); fn stupidly_hack_special_variables (_ : *mut i8); fn builtin_error(_: *const i8, _: ...); + fn builtin_help(); static mut posixly_correct : i32; static mut enable_history_list : i32; static mut ignoreeof : i32 ; @@ -1434,13 +1435,17 @@ unsafe fn reset_shell_options () { } _ => { if opt == -99 { - unsafe { + unsafe { + builtin_help(); + } + return EX_USAGE; + } + unsafe { builtin_usage (); + } return EX_USAGE; - } } } - } // opt = unsafe {internal_getopt(list, optflags.as_ptr() as *mut i8)}; opt = unsafe {internal_getopt (list, optflags.as_mut_ptr())}; } @@ -1646,6 +1651,10 @@ pub extern "C" fn r_unset_builtin(mut list: *mut WordList) -> i32 { 'v'=>{global_unset_var = 0;} 'n'=>{nameref = 1;} _=>{ + if opt == -99 { + builtin_help(); + return EX_USAGE; + } builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/setattr/src/intercdep.rs b/bash-5.1/builtins_rust/setattr/src/intercdep.rs index 8c465593..a6bf5817 100644 --- a/bash-5.1/builtins_rust/setattr/src/intercdep.rs +++ b/bash-5.1/builtins_rust/setattr/src/intercdep.rs @@ -345,6 +345,7 @@ extern "C" { pub fn reset_internal_getopt(); pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int; pub fn builtin_usage(); + fn builtin_help(); pub fn builtin_error(arg1: *const c_char, ...); pub fn find_function(name: *const c_char) -> *mut SHELL_VAR; pub fn exportable_function_name(string: *const c_char) -> c_int; diff --git a/bash-5.1/builtins_rust/setattr/src/lib.rs b/bash-5.1/builtins_rust/setattr/src/lib.rs index 2d8def22..3fa36f73 100644 --- a/bash-5.1/builtins_rust/setattr/src/lib.rs +++ b/bash-5.1/builtins_rust/setattr/src/lib.rs @@ -43,6 +43,10 @@ unsafe { 'a' => arrays_only = 1, 'A' => assoc_only = 1, _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/suspend/src/lib.rs b/bash-5.1/builtins_rust/suspend/src/lib.rs index bf5b428f..bce08787 100644 --- a/bash-5.1/builtins_rust/suspend/src/lib.rs +++ b/bash-5.1/builtins_rust/suspend/src/lib.rs @@ -21,6 +21,10 @@ unsafe { match opt_char { 'f' => force += 1, _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/trap/src/intercdep.rs b/bash-5.1/builtins_rust/trap/src/intercdep.rs index 93e2d8a2..fba354db 100644 --- a/bash-5.1/builtins_rust/trap/src/intercdep.rs +++ b/bash-5.1/builtins_rust/trap/src/intercdep.rs @@ -37,6 +37,7 @@ extern "C" { pub fn reset_internal_getopt(); pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int; pub fn builtin_usage(); + fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn sh_chkwrite(s: c_int) -> c_int; diff --git a/bash-5.1/builtins_rust/trap/src/lib.rs b/bash-5.1/builtins_rust/trap/src/lib.rs index 7e101651..f5dddb3b 100644 --- a/bash-5.1/builtins_rust/trap/src/lib.rs +++ b/bash-5.1/builtins_rust/trap/src/lib.rs @@ -24,6 +24,10 @@ unsafe { 'l' => list_signal_names += 1, 'p' => display += 1, _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/type/src/lib.rs b/bash-5.1/builtins_rust/type/src/lib.rs index ddf85bf6..497a021c 100644 --- a/bash-5.1/builtins_rust/type/src/lib.rs +++ b/bash-5.1/builtins_rust/type/src/lib.rs @@ -356,6 +356,7 @@ extern "C" { fn reset_internal_getopt(); fn internal_getopt (list:*mut WordList , opts:*mut i8)->i32; fn builtin_usage(); + fn builtin_help(); fn sh_notfound (name:* mut i8); fn sh_chkwrite (ret:i32)->i32; fn find_alias(alia :*mut i8) ->alias_t; @@ -421,6 +422,9 @@ pub unsafe extern "C" fn r_type_builtin (mut list :*mut WordList) -> i32 { if (*this).next != std::ptr::null_mut(){ this = (*this).next; } + else { + break; + } } } reset_internal_getopt(); @@ -441,10 +445,10 @@ pub unsafe extern "C" fn r_type_builtin (mut list :*mut WordList) -> i32 { dflags = dflags& !(CDESC_TYPE!()|CDESC_SHORTDESC!()); } _ =>{ - if opt == -99 { - builtin_usage(); - return EX_USAGE; - } + if opt == -99 { + builtin_help(); + return EX_USAGE; + } unsafe { builtin_usage (); return EX_USAGE; diff --git a/bash-5.1/builtins_rust/ulimit/src/lib.rs b/bash-5.1/builtins_rust/ulimit/src/lib.rs index 2ed26a22..6acb9796 100644 --- a/bash-5.1/builtins_rust/ulimit/src/lib.rs +++ b/bash-5.1/builtins_rust/ulimit/src/lib.rs @@ -483,17 +483,13 @@ pub unsafe extern "C" fn r_ulimit_builtin(mut list: *mut WordList) -> i32{ 'S' => { mode = mode | LIMIT_SOFT!() ; } 'H' => { mode = mode | LIMIT_HARD!();} '?'=> { - builtin_help(); + builtin_usage(); return EX_USAGE; } - // => { - // builtin_usage(); - // return EX_USAGE; - // } _ => { //println!("enter switch default,opt is {}",opt); if opt == -99 { - builtin_usage(); + builtin_help(); return EX_USAGE; } if ncmd >= cmdlistsz { diff --git a/bash-5.1/builtins_rust/umask/src/lib.rs b/bash-5.1/builtins_rust/umask/src/lib.rs index 6e153736..2cca8c7b 100644 --- a/bash-5.1/builtins_rust/umask/src/lib.rs +++ b/bash-5.1/builtins_rust/umask/src/lib.rs @@ -160,6 +160,7 @@ extern "C" { fn reset_internal_getopt(); fn internal_getopt (list:*mut WordList, opts:*mut c_char)->i32; fn builtin_usage(); + fn builtin_help(); // fn read_octal(string:*mut c_char)->i32; fn sh_erange(s:*mut c_char,desc:*mut c_char); fn sh_chkwrite(s:i32)->i32; @@ -212,7 +213,12 @@ pub extern "C" fn r_umask_builtin(mut list:*mut WordList) ->i32{ match opt_char { 'S' => {print_symbolically = print_symbolically +1;} 'p' => {pflag = pflag + 1;} - _ => { builtin_usage(); + _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } + builtin_usage(); return EX_USAGE; } } diff --git a/bash-5.1/builtins_rust/wait/src/lib.rs b/bash-5.1/builtins_rust/wait/src/lib.rs index 79362038..8eb61965 100644 --- a/bash-5.1/builtins_rust/wait/src/lib.rs +++ b/bash-5.1/builtins_rust/wait/src/lib.rs @@ -212,6 +212,7 @@ extern "C" { fn wait_for_background_pids(ps:*mut procstat); fn wait_for_single_pid(pid:pid_t,flags:i32)->i32; fn wait_for_job(job:i32,flags:i32,ps:*mut procstat)->i32; + fn builtin_help(); } unsafe fn DIGIT(c:c_char)->bool{ @@ -274,6 +275,10 @@ pub extern "C" fn r_wait_builtin(mut list:*mut WordList)->i32{ 'f' => wflags |= JWAIT_FORCE!(), 'p' => vname = list_optarg, _ => { + if opt == -99 { + builtin_help(); + return EX_USAGE; + } r_builtin_usage(); return EX_USAGE; } diff --git a/record.txt b/record.txt index d4b98abc..79f8b7ed 100644 --- a/record.txt +++ b/record.txt @@ -33,3 +33,4 @@ 55 56 57 +58 -- Gitee