From 0cc9cf3c9133a944319ccc8e41f7fe7c05f85ab2 Mon Sep 17 00:00:00 2001 From: liutong Date: Sun, 2 Jul 2023 14:29:14 +0800 Subject: [PATCH] fix pushd -l, popd -l, dirs command --- bash-5.1/builtins_rust/alias/Cargo.toml | 2 +- bash-5.1/builtins_rust/alias/src/lib.rs | 6 ++--- bash-5.1/builtins_rust/bind/Cargo.toml | 1 + bash-5.1/builtins_rust/bind/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/break_1/Cargo.toml | 1 + bash-5.1/builtins_rust/break_1/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/builtin/Cargo.toml | 2 +- bash-5.1/builtins_rust/caller/Cargo.toml | 1 + bash-5.1/builtins_rust/caller/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/cd/Cargo.toml | 1 + bash-5.1/builtins_rust/cd/src/lib.rs | 7 +++--- bash-5.1/builtins_rust/cmd/src/lib.rs | 1 - bash-5.1/builtins_rust/colon/Cargo.toml | 1 + bash-5.1/builtins_rust/command/Cargo.toml | 1 + bash-5.1/builtins_rust/command/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/common/Cargo.toml | 1 + bash-5.1/builtins_rust/complete/Cargo.toml | 3 +-- bash-5.1/builtins_rust/complete/src/lib.rs | 5 ++-- bash-5.1/builtins_rust/declare/Cargo.toml | 1 + bash-5.1/builtins_rust/declare/src/lib.rs | 19 ++++++++------- bash-5.1/builtins_rust/echo/Cargo.toml | 1 + bash-5.1/builtins_rust/echo/src/lib.rs | 2 +- bash-5.1/builtins_rust/enable/Cargo.toml | 1 + bash-5.1/builtins_rust/enable/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/eval/Cargo.toml | 1 + bash-5.1/builtins_rust/eval/src/lib.rs | 1 + bash-5.1/builtins_rust/exec/Cargo.toml | 1 + bash-5.1/builtins_rust/exec/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/exit/Cargo.toml | 2 +- bash-5.1/builtins_rust/exit/src/lib.rs | 6 ++--- bash-5.1/builtins_rust/fc/Cargo.toml | 1 + bash-5.1/builtins_rust/fc/src/lib.rs | 5 ++-- bash-5.1/builtins_rust/fg_bg/Cargo.toml | 1 + bash-5.1/builtins_rust/fg_bg/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/getopts/Cargo.toml | 1 + bash-5.1/builtins_rust/getopts/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/hash/Cargo.toml | 1 + bash-5.1/builtins_rust/hash/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/help/src/lib.rs | 20 ++++------------ bash-5.1/builtins_rust/history/Cargo.toml | 1 + .../builtins_rust/history/src/intercdep.rs | 1 - bash-5.1/builtins_rust/history/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/jobs/Cargo.toml | 1 + bash-5.1/builtins_rust/jobs/src/lib.rs | 7 +++--- bash-5.1/builtins_rust/kill/Cargo.toml | 1 + bash-5.1/builtins_rust/kill/src/intercdep.rs | 2 +- bash-5.1/builtins_rust/kill/src/lib.rs | 2 +- bash-5.1/builtins_rust/mapfile/Cargo.toml | 1 + .../builtins_rust/mapfile/src/intercdep.rs | 3 +-- bash-5.1/builtins_rust/mapfile/src/lib.rs | 2 +- bash-5.1/builtins_rust/printf/Cargo.toml | 1 + .../builtins_rust/printf/src/intercdep.rs | 3 +-- bash-5.1/builtins_rust/printf/src/lib.rs | 2 +- bash-5.1/builtins_rust/pushd/Cargo.toml | 1 + bash-5.1/builtins_rust/pushd/src/lib.rs | 23 +++++++++---------- bash-5.1/builtins_rust/read/Cargo.toml | 1 + bash-5.1/builtins_rust/read/src/intercdep.rs | 3 +-- bash-5.1/builtins_rust/read/src/lib.rs | 2 +- bash-5.1/builtins_rust/rlet/Cargo.toml | 1 + bash-5.1/builtins_rust/rlet/src/intercdep.rs | 3 +-- bash-5.1/builtins_rust/rlet/src/lib.rs | 2 +- bash-5.1/builtins_rust/rreturn/Cargo.toml | 1 + .../builtins_rust/rreturn/src/intercdep.rs | 1 - bash-5.1/builtins_rust/rreturn/src/lib.rs | 3 ++- bash-5.1/builtins_rust/set/Cargo.toml | 2 ++ bash-5.1/builtins_rust/set/src/lib.rs | 10 ++++---- bash-5.1/builtins_rust/setattr/Cargo.toml | 1 + .../builtins_rust/setattr/src/intercdep.rs | 1 - bash-5.1/builtins_rust/setattr/src/lib.rs | 5 ++-- bash-5.1/builtins_rust/shift/Cargo.toml | 2 ++ bash-5.1/builtins_rust/shift/src/intercdep.rs | 1 - bash-5.1/builtins_rust/shift/src/lib.rs | 3 ++- bash-5.1/builtins_rust/shopt/Cargo.toml | 1 + bash-5.1/builtins_rust/shopt/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/source/Cargo.toml | 1 + bash-5.1/builtins_rust/source/src/lib.rs | 2 +- bash-5.1/builtins_rust/suspend/Cargo.toml | 1 + .../builtins_rust/suspend/src/intercdep.rs | 1 - bash-5.1/builtins_rust/suspend/src/lib.rs | 4 ++-- bash-5.1/builtins_rust/test/Cargo.toml | 1 + bash-5.1/builtins_rust/test/src/lib.rs | 1 + bash-5.1/builtins_rust/times/Cargo.toml | 1 + bash-5.1/builtins_rust/trap/Cargo.toml | 1 + 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/Cargo.toml | 1 + bash-5.1/builtins_rust/type/src/lib.rs | 6 ++--- bash-5.1/builtins_rust/ulimit/Cargo.toml | 1 + bash-5.1/builtins_rust/ulimit/src/lib.rs | 5 ++-- bash-5.1/builtins_rust/umask/Cargo.toml | 1 + bash-5.1/builtins_rust/umask/src/lib.rs | 5 ++-- bash-5.1/builtins_rust/wait/Cargo.toml | 2 +- bash-5.1/builtins_rust/wait/src/lib.rs | 6 ++--- record.txt | 1 + 94 files changed, 146 insertions(+), 135 deletions(-) diff --git a/bash-5.1/builtins_rust/alias/Cargo.toml b/bash-5.1/builtins_rust/alias/Cargo.toml index a77df038..455c2939 100644 --- a/bash-5.1/builtins_rust/alias/Cargo.toml +++ b/bash-5.1/builtins_rust/alias/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.0" edition = "2018" authors = ["liutong"] - [lib] name = "ralias" crate-type = ["staticlib","rlib"] @@ -13,4 +12,5 @@ crate-type = ["staticlib","rlib"] libc = "*" rcmd = {path="../cmd"} rcommon= {path="../common"} +rhelp = {path ="../help"} # nix = "*" diff --git a/bash-5.1/builtins_rust/alias/src/lib.rs b/bash-5.1/builtins_rust/alias/src/lib.rs index 2ff7814f..8cdfc225 100644 --- a/bash-5.1/builtins_rust/alias/src/lib.rs +++ b/bash-5.1/builtins_rust/alias/src/lib.rs @@ -3,6 +3,7 @@ use std::ffi::CStr; //extern crate rcommon; use rcommon::r_sh_notfound; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE,r_builtin_usage}; +use rhelp::r_builtin_help; extern "C" { fn free(__ptr: *mut libc::c_void); @@ -25,7 +26,6 @@ extern "C" { fn builtin_usage(); fn sh_notfound(_: *mut libc::c_char); fn sh_chkwrite(_: libc::c_int) -> libc::c_int; - fn builtin_help(); static mut loptend: *mut WordList; fn internal_getopt(_: *mut WordList, _: *mut libc::c_char) -> libc::c_int; fn reset_internal_getopt(); @@ -91,7 +91,7 @@ pub unsafe extern "C" fn r_alias_builtin(mut list: *mut WordList) -> libc::c_int } _ => { if offset == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); @@ -178,7 +178,7 @@ pub unsafe extern "C" fn r_unalias_builtin(mut list: *mut WordList) -> libc::c_i } _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage(); diff --git a/bash-5.1/builtins_rust/bind/Cargo.toml b/bash-5.1/builtins_rust/bind/Cargo.toml index deb8ab73..22f987f4 100644 --- a/bash-5.1/builtins_rust/bind/Cargo.toml +++ b/bash-5.1/builtins_rust/bind/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/bind/src/lib.rs b/bash-5.1/builtins_rust/bind/src/lib.rs index cb162188..7dab6829 100644 --- a/bash-5.1/builtins_rust/bind/src/lib.rs +++ b/bash-5.1/builtins_rust/bind/src/lib.rs @@ -8,6 +8,7 @@ use std::fs::File; use nix::errno::errno; use rcommon::{r_builtin_usage,r_sh_chkwrite}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; #[repr (C)] pub struct _keymap_entry{ @@ -142,7 +143,6 @@ extern "C"{ fn strvec_len(array:*mut *mut c_char)->i32; fn rl_parse_and_bind(string:*mut c_char)->i32; fn strvec_search(array:*mut *mut c_char,name:*mut c_char)->i32; - fn builtin_help(); } @@ -246,7 +246,7 @@ pub extern "C" fn r_bind_builtin(mut list:*mut WordList)->i32{ 'X' => flags |= XXFLAG!(), _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); diff --git a/bash-5.1/builtins_rust/break_1/Cargo.toml b/bash-5.1/builtins_rust/break_1/Cargo.toml index cbdf261c..5800923f 100644 --- a/bash-5.1/builtins_rust/break_1/Cargo.toml +++ b/bash-5.1/builtins_rust/break_1/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/break_1/src/lib.rs b/bash-5.1/builtins_rust/break_1/src/lib.rs index 1240b951..d49fca3e 100644 --- a/bash-5.1/builtins_rust/break_1/src/lib.rs +++ b/bash-5.1/builtins_rust/break_1/src/lib.rs @@ -7,6 +7,7 @@ use std::ffi::CString; use libc::c_long; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; type intmax_t = c_long; @@ -33,7 +34,7 @@ fn checkhelp(l: *mut WordList) -> i32{ let tmp=CString::new("--help").unwrap(); if l!=std::ptr::null_mut() && (*l).word !=std::ptr::null_mut() && libc::strcmp((*((*l).word)).word, tmp.as_ptr()) == 0 { - builtin_help(); + r_builtin_help(); } return EX_USAGE; } @@ -41,7 +42,6 @@ fn checkhelp(l: *mut WordList) -> i32{ extern "C" { fn get_numeric_arg(list :*mut WordList, i: i32 , intmax :*mut intmax_t) -> i32; - fn builtin_help (); // fn get_loop_level() -> i32; //fn set_continuing(cont : i32); //fn set_breaking(breaking : i32); diff --git a/bash-5.1/builtins_rust/builtin/Cargo.toml b/bash-5.1/builtins_rust/builtin/Cargo.toml index 4304ddee..2ae8bc19 100644 --- a/bash-5.1/builtins_rust/builtin/Cargo.toml +++ b/bash-5.1/builtins_rust/builtin/Cargo.toml @@ -12,4 +12,4 @@ crate-type = ["staticlib","rlib"] libc = "*" rcmd = {path="../cmd"} rcommon = {path="../common"} - +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/caller/Cargo.toml b/bash-5.1/builtins_rust/caller/Cargo.toml index 4811682b..985bf88e 100644 --- a/bash-5.1/builtins_rust/caller/Cargo.toml +++ b/bash-5.1/builtins_rust/caller/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" rread = {path="../read"} rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","lib"] diff --git a/bash-5.1/builtins_rust/caller/src/lib.rs b/bash-5.1/builtins_rust/caller/src/lib.rs index bcc97b3a..1f936922 100644 --- a/bash-5.1/builtins_rust/caller/src/lib.rs +++ b/bash-5.1/builtins_rust/caller/src/lib.rs @@ -6,6 +6,7 @@ use libc::{c_char,c_int,PT_NULL,c_long,}; use std::ffi::{CStr,CString}; use rread::{SHELL_VAR,ARRAY,intmax_t,}; +use rhelp::r_builtin_help; #[macro_export] macro_rules! att_array { @@ -60,7 +61,7 @@ macro_rules! GET_ARRAY_FROM_VAR { macro_rules! CHECK_HELPOPT { ($l:expr) => { if $l != std::ptr::null_mut() && (*($l)).word != std::ptr::null_mut() && ISHELP((*(*($l)).word).word) == true{ - builtin_help(); + r_builtin_help(); return EX_USAGE; } }; @@ -71,7 +72,6 @@ type arrayind_t = intmax_t; extern "C" { static loptend:*mut WordList; - fn builtin_help(); fn find_variable(str:*const c_char)->*mut SHELL_VAR; fn array_reference(a:*mut ARRAY,i:arrayind_t)->*mut c_char; fn builtin_usage(); diff --git a/bash-5.1/builtins_rust/cd/Cargo.toml b/bash-5.1/builtins_rust/cd/Cargo.toml index 2d92dc87..d22bd9c4 100644 --- a/bash-5.1/builtins_rust/cd/Cargo.toml +++ b/bash-5.1/builtins_rust/cd/Cargo.toml @@ -11,6 +11,7 @@ lazy_static = "*" libc = "*" rcommon = {path="../common"} nix = "*" +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/cd/src/lib.rs b/bash-5.1/builtins_rust/cd/src/lib.rs index a44fe505..ea364e91 100644 --- a/bash-5.1/builtins_rust/cd/src/lib.rs +++ b/bash-5.1/builtins_rust/cd/src/lib.rs @@ -4,7 +4,7 @@ use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE use libc::{c_char, c_long, c_void}; use std::{ffi::{CString, CStr}}; - +use rhelp::r_builtin_help; #[repr(i8)] pub enum JOB_STATE { @@ -345,7 +345,6 @@ extern "C" { 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 builtin_help(); } @@ -502,7 +501,7 @@ pub extern "C" fn r_cd_builtin (mut list:*mut WordList)->i32 { 'e'=>{eflag = 1;} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); @@ -668,7 +667,7 @@ pub extern "C" fn r_pwd_builtin (list:* mut WordList)->i32 { 'L'=>{verbatim_pwd = 0;} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); diff --git a/bash-5.1/builtins_rust/cmd/src/lib.rs b/bash-5.1/builtins_rust/cmd/src/lib.rs index 53b51454..67bb8d76 100644 --- a/bash-5.1/builtins_rust/cmd/src/lib.rs +++ b/bash-5.1/builtins_rust/cmd/src/lib.rs @@ -1,6 +1,5 @@ use std::collections::HashMap; use std::sync::Mutex; - #[macro_use] extern crate lazy_static; diff --git a/bash-5.1/builtins_rust/colon/Cargo.toml b/bash-5.1/builtins_rust/colon/Cargo.toml index a6c28aa2..0c4d7f8d 100644 --- a/bash-5.1/builtins_rust/colon/Cargo.toml +++ b/bash-5.1/builtins_rust/colon/Cargo.toml @@ -12,3 +12,4 @@ name = "rcolon" [dependencies] libc = "*" rcommon = {path ="../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/command/Cargo.toml b/bash-5.1/builtins_rust/command/Cargo.toml index d390905e..2f967ae7 100644 --- a/bash-5.1/builtins_rust/command/Cargo.toml +++ b/bash-5.1/builtins_rust/command/Cargo.toml @@ -8,6 +8,7 @@ edition = "2018" [dependencies] libc ="*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib", "rlib"] diff --git a/bash-5.1/builtins_rust/command/src/lib.rs b/bash-5.1/builtins_rust/command/src/lib.rs index 3c2347ac..16f70b10 100644 --- a/bash-5.1/builtins_rust/command/src/lib.rs +++ b/bash-5.1/builtins_rust/command/src/lib.rs @@ -1,6 +1,7 @@ use std::ffi::*; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; extern "C" { fn copy_word_list(_: *mut WordList) -> *mut WordList; fn begin_unwind_frame(_: *mut libc::c_char); @@ -16,7 +17,6 @@ extern "C" { fn builtin_usage(); fn sh_notfound(_: *mut libc::c_char); fn sh_restricted(_: *mut libc::c_char); - fn builtin_help(); fn describe_command(_: *mut libc::c_char, _: libc::c_int) -> libc::c_int; //type Function = fn ()->i32; } @@ -313,7 +313,7 @@ pub unsafe extern "C" fn r_command_builtin(mut list: *mut WordList) -> libc::c_i } _ => { if opt ==-99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage(); diff --git a/bash-5.1/builtins_rust/common/Cargo.toml b/bash-5.1/builtins_rust/common/Cargo.toml index 12b06063..23d172e1 100644 --- a/bash-5.1/builtins_rust/common/Cargo.toml +++ b/bash-5.1/builtins_rust/common/Cargo.toml @@ -13,3 +13,4 @@ unic-langid = "*" [lib] crate-type = ["staticlib","rlib"] name = "rcommon" +rhelp = {path ="../help"} \ No newline at end of file diff --git a/bash-5.1/builtins_rust/complete/Cargo.toml b/bash-5.1/builtins_rust/complete/Cargo.toml index d08f34ae..03b811a9 100644 --- a/bash-5.1/builtins_rust/complete/Cargo.toml +++ b/bash-5.1/builtins_rust/complete/Cargo.toml @@ -2,15 +2,14 @@ authors = ["huzhengming"] name = "rcomplete" version = "0.0.1" - edition = "2018" - [dependencies] lazy_static = "*" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/complete/src/lib.rs b/bash-5.1/builtins_rust/complete/src/lib.rs index a3254b4f..5b8c1318 100644 --- a/bash-5.1/builtins_rust/complete/src/lib.rs +++ b/bash-5.1/builtins_rust/complete/src/lib.rs @@ -4,7 +4,7 @@ extern crate nix; use libc::{c_char, c_int, c_ulong, c_void}; use std::{ffi::CString}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; - +use rhelp::r_builtin_help; #[repr(u8)] enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, @@ -554,7 +554,6 @@ 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; @@ -824,7 +823,7 @@ pub extern "C" fn r_build_actions (list : *mut WordList, flagp:* mut _optflags, } _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); diff --git a/bash-5.1/builtins_rust/declare/Cargo.toml b/bash-5.1/builtins_rust/declare/Cargo.toml index f8f4e21a..01673f70 100644 --- a/bash-5.1/builtins_rust/declare/Cargo.toml +++ b/bash-5.1/builtins_rust/declare/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/declare/src/lib.rs b/bash-5.1/builtins_rust/declare/src/lib.rs index 7c70152f..74559b7e 100644 --- a/bash-5.1/builtins_rust/declare/src/lib.rs +++ b/bash-5.1/builtins_rust/declare/src/lib.rs @@ -4,7 +4,7 @@ extern crate nix; use libc::{c_char, c_long, c_void}; use std::{ffi::CString}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; - +use rhelp::r_builtin_help; #[repr(u8)] enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, @@ -450,7 +450,6 @@ pub union Functions { } extern "C" { - fn builtin_help (); static variable_context:i32; fn builtin_error(err:*const c_char,...); fn builtin_warning(err:*const c_char,...); @@ -530,7 +529,7 @@ pub extern "C" fn r_local_builtin (list:* mut WordList)->i32 unsafe { /* Catch a straight `local --help' before checking function context */ if list !=std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && STREQ ((*(*list).word).word, CString::new("--help").unwrap().as_ptr()) { - builtin_help (); + r_builtin_help (); return EX_USAGE; } @@ -643,7 +642,7 @@ pub extern "C" fn r_declare_internal (list:* mut WordList, local_var:i32)->i32 let mut assign_error:i32=0; let mut pflag:i32=0; let mut nodefs:i32=0; - let opt:i32; + let mut opt:i32; let mut onref:i32; let mut offref:i32; let mut mkglobal:i32=0; @@ -662,15 +661,15 @@ pub extern "C" fn r_declare_internal (list:* mut WordList, local_var:i32)->i32 unsafe { reset_internal_getopt (); - let tmp = DECLARE_OPTS().as_ptr(); - opt = internal_getopt (list, tmp as * mut c_char); + let tmp = DECLARE_OPTS(); + opt = internal_getopt (list, tmp.as_ptr() as * mut c_char); while opt != -1 { if list_opttype == '+' as i32 { flags= &mut flags_off; } else { flags= &mut flags_on; } - + let optu8:u8= opt as u8; let optChar:char=char::from(optu8); @@ -678,7 +677,7 @@ pub extern "C" fn r_declare_internal (list:* mut WordList, local_var:i32)->i32 the loop in subst.c:shell_expand_word_list() */ match optChar { 'a'=>{ *flags |= att_array!();} - 'A'=>{ *flags |= att_assoc!();} + 'A'=>{ *flags |= att_assoc!();} 'p'=>{ pflag+=1;} 'F'=>{ nodefs+=1; *flags |= att_function!(); @@ -719,14 +718,14 @@ pub extern "C" fn r_declare_internal (list:* mut WordList, local_var:i32)->i32 'I'=>{ inherit_flag = MKLOC_INHERIT!();} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); return EX_USAGE; } } - internal_getopt (list, tmp as * mut c_char); + opt = internal_getopt (list, tmp.as_ptr() as * mut c_char); } let mut llist:* mut WordList = loptend.clone(); diff --git a/bash-5.1/builtins_rust/echo/Cargo.toml b/bash-5.1/builtins_rust/echo/Cargo.toml index cbbe87e6..5aeb52ef 100644 --- a/bash-5.1/builtins_rust/echo/Cargo.toml +++ b/bash-5.1/builtins_rust/echo/Cargo.toml @@ -8,6 +8,7 @@ edition = "2018" [dependencies] libc = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/echo/src/lib.rs b/bash-5.1/builtins_rust/echo/src/lib.rs index 3302a38b..ac3446bf 100644 --- a/bash-5.1/builtins_rust/echo/src/lib.rs +++ b/bash-5.1/builtins_rust/echo/src/lib.rs @@ -5,7 +5,7 @@ use std::ffi::{CString,CStr,}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; // use std::io::{stdout, Write}; use std::ptr::read_volatile; - +use rhelp::r_builtin_help; //结构体 //枚举 diff --git a/bash-5.1/builtins_rust/enable/Cargo.toml b/bash-5.1/builtins_rust/enable/Cargo.toml index 14ec0946..82bcc61a 100644 --- a/bash-5.1/builtins_rust/enable/Cargo.toml +++ b/bash-5.1/builtins_rust/enable/Cargo.toml @@ -13,3 +13,4 @@ libc = "*" libloading = "*" rcmd = {path="../cmd"} rcommon = {path="../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/enable/src/lib.rs b/bash-5.1/builtins_rust/enable/src/lib.rs index 1edb8123..7c910008 100644 --- a/bash-5.1/builtins_rust/enable/src/lib.rs +++ b/bash-5.1/builtins_rust/enable/src/lib.rs @@ -5,6 +5,7 @@ use std::path::Path; use libloading::Library; use rcmd::*; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; /* #define ENABLED 1 #define DISABLED 2 @@ -98,7 +99,6 @@ extern "C" { fn sh_notbuiltin(_: *mut libc::c_char); fn builtin_address_internal(_: *mut libc::c_char, _: libc::c_int) -> *mut builtin; fn initialize_shell_builtins(); - fn builtin_help(); static mut list_optarg: *mut libc::c_char; static mut loptend: *mut WordList; fn internal_getopt(_: *const WordList, _: *const libc::c_char) -> i32; @@ -189,7 +189,7 @@ pub unsafe extern "C" fn r_enable_builtin(mut list: *mut WordList) -> i32 { } _ => { if opt ==-99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage(); diff --git a/bash-5.1/builtins_rust/eval/Cargo.toml b/bash-5.1/builtins_rust/eval/Cargo.toml index d1622760..262098b5 100644 --- a/bash-5.1/builtins_rust/eval/Cargo.toml +++ b/bash-5.1/builtins_rust/eval/Cargo.toml @@ -8,6 +8,7 @@ edition = "2018" [dependencies] libc = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/eval/src/lib.rs b/bash-5.1/builtins_rust/eval/src/lib.rs index 6d80d5e6..da559eaf 100644 --- a/bash-5.1/builtins_rust/eval/src/lib.rs +++ b/bash-5.1/builtins_rust/eval/src/lib.rs @@ -5,6 +5,7 @@ use libc::{c_char,c_int}; use std::ffi::{CString}; use rcommon::{r_no_options}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; #[macro_export] macro_rules! SEVAL_NOHIST { diff --git a/bash-5.1/builtins_rust/exec/Cargo.toml b/bash-5.1/builtins_rust/exec/Cargo.toml index 47a86be6..f5b8a47b 100644 --- a/bash-5.1/builtins_rust/exec/Cargo.toml +++ b/bash-5.1/builtins_rust/exec/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/exec/src/lib.rs b/bash-5.1/builtins_rust/exec/src/lib.rs index df518d0d..c5954bbd 100644 --- a/bash-5.1/builtins_rust/exec/src/lib.rs +++ b/bash-5.1/builtins_rust/exec/src/lib.rs @@ -7,6 +7,7 @@ use std::ffi::{CString,CStr}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; use nix::errno::errno; use rcommon::r_sh_restricted; +use rhelp::r_builtin_help; #[repr(C)] struct redirect{ @@ -79,7 +80,6 @@ extern "C" { static interactive:i32; static default_buffered_input:i32; static no_exit_on_failed_exec:i32; - fn builtin_help(); fn xmalloc(n:size_t)->*mut c_void; fn reset_internal_getopt(); fn internal_getopt(list:*mut WordList,opts:*mut c_char)->i32; @@ -159,7 +159,7 @@ pub extern "C" fn r_exec_builtin(mut list:*mut WordList)->i32{ 'a' => argv0 = list_optarg, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); diff --git a/bash-5.1/builtins_rust/exit/Cargo.toml b/bash-5.1/builtins_rust/exit/Cargo.toml index f8ca1674..d71a2b83 100644 --- a/bash-5.1/builtins_rust/exit/Cargo.toml +++ b/bash-5.1/builtins_rust/exit/Cargo.toml @@ -11,7 +11,7 @@ libc = "*" nix = "*" rjobs = {path="../jobs"} rcommon = {path="../common"} - +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/exit/src/lib.rs b/bash-5.1/builtins_rust/exit/src/lib.rs index e5346295..3734e5d3 100644 --- a/bash-5.1/builtins_rust/exit/src/lib.rs +++ b/bash-5.1/builtins_rust/exit/src/lib.rs @@ -8,6 +8,7 @@ use std::ffi::CString; use rjobs::{PROCESS, COMMAND, r_jobs_builtin, JLIST_STANDARD }; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; #[repr(C)] pub struct JOB { @@ -109,7 +110,6 @@ extern "C"{ static mut last_command_exit_value:i32; static subshell_environment:i32; - fn builtin_help(); fn builtin_error(err:*const c_char,...); fn list_all_jobs(form:i32); fn get_exitstat(list:*mut WordList) -> i32; @@ -138,7 +138,7 @@ pub extern "C" fn r_exit_builtin(list:*mut WordList) -> i32{ let c_ptr = c_str.as_ptr(); if list != std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && STREQ((*(*list).word).word, c_ptr){ - builtin_help(); + r_builtin_help(); return EX_USAGE; } @@ -167,7 +167,7 @@ pub extern "C" fn r_logout_builtin(list:*mut WordList)->i32{ let c_ptr = c_str.as_ptr(); if list != std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && STREQ((*(*list).word).word, c_ptr){ - builtin_help(); + r_builtin_help(); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/fc/Cargo.toml b/bash-5.1/builtins_rust/fc/Cargo.toml index 5e9a0244..9610daba 100644 --- a/bash-5.1/builtins_rust/fc/Cargo.toml +++ b/bash-5.1/builtins_rust/fc/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/fc/src/lib.rs b/bash-5.1/builtins_rust/fc/src/lib.rs index 357b603d..aa0e6c0e 100644 --- a/bash-5.1/builtins_rust/fc/src/lib.rs +++ b/bash-5.1/builtins_rust/fc/src/lib.rs @@ -5,6 +5,7 @@ use libc::{c_char, c_long, c_void, c_int}; use nix::sys::termios::SpecialCharacterIndices; use std::{ffi::{CString,CStr}, i32, io::{Write, stdout}, ops::Add, string, u32}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE,r_builtin_usage}; +use rhelp::r_builtin_help; #[repr(i8)] pub enum JOB_STATE { @@ -388,8 +389,6 @@ extern "C" { fn run_unwind_frame (filename:* mut c_char); static mut echo_input_at_read:i32; static mut verbose_flag:i32; - fn builtin_help(); - } #[no_mangle] @@ -524,7 +523,7 @@ pub extern "C" fn r_fc_builtin (mut list:* mut WordList)->i32 'e' => ename = list_optarg, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); diff --git a/bash-5.1/builtins_rust/fg_bg/Cargo.toml b/bash-5.1/builtins_rust/fg_bg/Cargo.toml index 886c7c3c..32bfbaa8 100644 --- a/bash-5.1/builtins_rust/fg_bg/Cargo.toml +++ b/bash-5.1/builtins_rust/fg_bg/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/fg_bg/src/lib.rs b/bash-5.1/builtins_rust/fg_bg/src/lib.rs index b86636cc..b81128cf 100644 --- a/bash-5.1/builtins_rust/fg_bg/src/lib.rs +++ b/bash-5.1/builtins_rust/fg_bg/src/lib.rs @@ -4,6 +4,7 @@ extern crate nix; use libc::{c_char, c_long}; use std::{ffi::CString, ops::Add}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE,r_builtin_usage}; +use rhelp::r_builtin_help; #[repr(i8)] pub enum JOB_STATE { @@ -313,7 +314,7 @@ macro_rules! ISHELP { macro_rules! CHECK_HELPOPT { ($l:expr) => { if $l !=std::ptr::null_mut() && (*$l).word !=std::ptr::null_mut() && ISHELP!((*(*$l).word).word) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } } @@ -329,7 +330,6 @@ extern "C" { static mut loptend:*mut WordList; fn sh_nojobs (str:*mut c_char); fn no_options (list:*mut WordList)->i32; - fn builtin_help (); static mut job_control:i32; static mut last_asynchronous_pid:i32; fn start_job (job:i32, foreground:i32)->i32; diff --git a/bash-5.1/builtins_rust/getopts/Cargo.toml b/bash-5.1/builtins_rust/getopts/Cargo.toml index 025be6ce..800bb4eb 100644 --- a/bash-5.1/builtins_rust/getopts/Cargo.toml +++ b/bash-5.1/builtins_rust/getopts/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/getopts/src/lib.rs b/bash-5.1/builtins_rust/getopts/src/lib.rs index 12491386..1878b816 100644 --- a/bash-5.1/builtins_rust/getopts/src/lib.rs +++ b/bash-5.1/builtins_rust/getopts/src/lib.rs @@ -3,6 +3,7 @@ extern crate nix; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE,GETOPT_HELP, r_builtin_usage}; use libc::{c_char, c_long, c_void}; use std::{ffi::CString}; +use rhelp::r_builtin_help; #[repr(u8)] enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, @@ -260,7 +261,6 @@ extern "C" { static sh_optopt:i32; fn reset_internal_getopt(); fn internal_getopt (list:*mut WordList , opts:*mut c_char)->i32; - fn builtin_help (); static mut loptend:*mut WordList; fn make_builtin_argv (list:* mut WordList, ac:* mut i32)->*mut*mut c_char; } @@ -498,7 +498,7 @@ pub extern "C" fn r_getopts_builtin(list: * mut WordList)->i32 ret = internal_getopt(list, CString::new ("").unwrap().as_ptr() as * mut c_char); if ret != -1 { if ret == GETOPT_HELP!() { - builtin_help(); + r_builtin_help(); } else { builtin_usage(); } diff --git a/bash-5.1/builtins_rust/hash/Cargo.toml b/bash-5.1/builtins_rust/hash/Cargo.toml index 94e70327..49fe8115 100644 --- a/bash-5.1/builtins_rust/hash/Cargo.toml +++ b/bash-5.1/builtins_rust/hash/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" rread = {path = "../read"} rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/hash/src/lib.rs b/bash-5.1/builtins_rust/hash/src/lib.rs index f31ff564..c3fac6ec 100644 --- a/bash-5.1/builtins_rust/hash/src/lib.rs +++ b/bash-5.1/builtins_rust/hash/src/lib.rs @@ -8,6 +8,7 @@ use std::io::{stdout, Write}; use rread::{SHELL_VAR}; use rcommon::{r_find_shell_builtin,r_builtin_usage}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; +use rhelp::r_builtin_help; type PTR_T=c_void; #[repr (C)] @@ -128,7 +129,6 @@ extern "C"{ fn hash_walk(table:*mut HASH_TABLE,func:*mut hash_wfunc); fn phash_search(filename:*const c_char)->*mut c_char; fn printable_filename(f:*mut c_char,flage:i32)->*mut c_char; - fn builtin_help(); } //rust @@ -174,7 +174,7 @@ pub extern "C" fn r_hash_builtin(mut list:*mut WordList)->i32{ 't' => list_targets = 1, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); diff --git a/bash-5.1/builtins_rust/help/src/lib.rs b/bash-5.1/builtins_rust/help/src/lib.rs index a5512bab..f1f28737 100644 --- a/bash-5.1/builtins_rust/help/src/lib.rs +++ b/bash-5.1/builtins_rust/help/src/lib.rs @@ -99,7 +99,6 @@ extern "C"{ static mut static_shell_builtin : [builtin ; 100]; static shell_builtins:*mut builtin; static mut current_builtin :*mut builtin; - fn builtin_help(); } #[no_mangle] @@ -134,7 +133,7 @@ pub extern "C" fn r_help_builtin(mut list:*mut WordList)->i32 { _=>{ unsafe { if i == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); @@ -259,9 +258,7 @@ unsafe fn QUIT () } } - -#[no_mangle] -pub extern "C" fn r_builtin_help (){ +pub extern "C" fn r_builtin_help (){ // print all command usage let mut ind: i32 = 5; let d: i32; @@ -273,18 +270,11 @@ pub extern "C" fn r_builtin_help (){ d = (current_builtin as usize - shell_builtins as usize) as i32; } - ind = d ; - /* - #if defined (__STDC__) - ind = (int)d; - #else - ind = (int)d / sizeof (struct builtin); - #endif - */ + ind = d/BUILTIN_SIZEOF!() ; unsafe { - let builtin1 = &(*((shell_builtins as usize + (ind*BUILTIN_SIZEOF!()) as usize) as *mut builtin)); - println!("{:?} : {:?}",this_command_name, CStr::from_ptr(builtin1.short_doc)); + print!("{:?} : ",CStr::from_ptr(this_command_name)); } + show_helpsynopsis(ind); show_longdoc (ind); } diff --git a/bash-5.1/builtins_rust/history/Cargo.toml b/bash-5.1/builtins_rust/history/Cargo.toml index 8bb8f51a..c85a7d30 100644 --- a/bash-5.1/builtins_rust/history/Cargo.toml +++ b/bash-5.1/builtins_rust/history/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/history/src/intercdep.rs b/bash-5.1/builtins_rust/history/src/intercdep.rs index a1c6d3d1..e284a89d 100644 --- a/bash-5.1/builtins_rust/history/src/intercdep.rs +++ b/bash-5.1/builtins_rust/history/src/intercdep.rs @@ -68,7 +68,6 @@ extern "C" { pub fn sh_erange(s: *mut c_char, desc: *mut c_char); pub fn sh_restricted(s: *mut c_char) -> c_void; - fn builtin_help(); pub static mut list_optarg : *mut libc::c_char; pub static mut loptend : *mut WordList; diff --git a/bash-5.1/builtins_rust/history/src/lib.rs b/bash-5.1/builtins_rust/history/src/lib.rs index 246a68e6..12b3a906 100644 --- a/bash-5.1/builtins_rust/history/src/lib.rs +++ b/bash-5.1/builtins_rust/history/src/lib.rs @@ -2,7 +2,7 @@ use std::{ffi::{CString, CStr}, io::Write}; use libc::{size_t, c_int, c_char, c_long, c_void, PT_NULL}; use rcommon::{r_builtin_usage,r_sh_erange,r_sh_restricted,r_sh_chkwrite,r_get_numeric_arg,WordList}; - +use rhelp::r_builtin_help; include!(concat!("intercdep.rs")); pub const AFLAG: c_int = 0x01; @@ -47,7 +47,7 @@ unsafe { 'p' => flags |= PFLAG, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/jobs/Cargo.toml b/bash-5.1/builtins_rust/jobs/Cargo.toml index 8d523cf3..7b46577d 100644 --- a/bash-5.1/builtins_rust/jobs/Cargo.toml +++ b/bash-5.1/builtins_rust/jobs/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/jobs/src/lib.rs b/bash-5.1/builtins_rust/jobs/src/lib.rs index 44ddcfda..ec27930e 100644 --- a/bash-5.1/builtins_rust/jobs/src/lib.rs +++ b/bash-5.1/builtins_rust/jobs/src/lib.rs @@ -4,7 +4,7 @@ extern crate nix; use libc::{c_char, c_long}; use std::ffi::CString; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE}; - +use rhelp::r_builtin_help; #[repr(i8)] pub enum JOB_STATE { JNONE = -1, @@ -368,7 +368,6 @@ extern "C" { fn nohup_job (job_index:i32); fn nohup_all_jobs (running_only:i32); fn delete_all_jobs(running_only:i32); - fn builtin_help(); } #[no_mangle] @@ -452,7 +451,7 @@ pub extern "C" fn r_jobs_builtin(mut list:*mut WordList)->i32 { 's'=>{state = JSTATE_STOPPED!();} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); @@ -527,7 +526,7 @@ pub extern "C" fn r_disown_builtin (list:* mut WordList)->libc::c_int { 'r'=>{running_jobs = 1;} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); diff --git a/bash-5.1/builtins_rust/kill/Cargo.toml b/bash-5.1/builtins_rust/kill/Cargo.toml index 484a3256..66d055f0 100644 --- a/bash-5.1/builtins_rust/kill/Cargo.toml +++ b/bash-5.1/builtins_rust/kill/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/kill/src/intercdep.rs b/bash-5.1/builtins_rust/kill/src/intercdep.rs index 48b59a20..4b037c56 100644 --- a/bash-5.1/builtins_rust/kill/src/intercdep.rs +++ b/bash-5.1/builtins_rust/kill/src/intercdep.rs @@ -1,4 +1,5 @@ use rcommon::{r_builtin_usage,r_sh_invalidsig,r_sh_badpid,r_sh_badjob,r_get_job_spec,r_display_signal_list,WordList,WordDesc}; +use rhelp::r_builtin_help; // #[repr(C)] // #[derive(Copy, Clone)] // pub struct word_desc { @@ -299,7 +300,6 @@ extern "C" { pub fn get_job_spec(list: *mut WordList) -> c_int; // pub fn builtin_usage(); - pub fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn legal_number(string: *mut c_char, result: c_long) -> c_int; diff --git a/bash-5.1/builtins_rust/kill/src/lib.rs b/bash-5.1/builtins_rust/kill/src/lib.rs index c47bd9b7..c6e8bf2f 100644 --- a/bash-5.1/builtins_rust/kill/src/lib.rs +++ b/bash-5.1/builtins_rust/kill/src/lib.rs @@ -21,7 +21,7 @@ unsafe { if !list.is_null() && !(*list).word.is_null() && libc::strcmp((*((*list).word)).word, "--help\0".as_ptr() as *const c_char) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/mapfile/Cargo.toml b/bash-5.1/builtins_rust/mapfile/Cargo.toml index 6c79fbb6..22557bb7 100644 --- a/bash-5.1/builtins_rust/mapfile/Cargo.toml +++ b/bash-5.1/builtins_rust/mapfile/Cargo.toml @@ -16,3 +16,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/mapfile/src/intercdep.rs b/bash-5.1/builtins_rust/mapfile/src/intercdep.rs index a3ebfc37..f893afc1 100644 --- a/bash-5.1/builtins_rust/mapfile/src/intercdep.rs +++ b/bash-5.1/builtins_rust/mapfile/src/intercdep.rs @@ -1,5 +1,5 @@ use rcommon::{WordList}; - +use rhelp::r_builtin_help; pub type arrayind_t = c_long; pub type sh_var_value_func_t = @@ -71,7 +71,6 @@ 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 4bb49f9a..31979bbe 100644 --- a/bash-5.1/builtins_rust/mapfile/src/lib.rs +++ b/bash-5.1/builtins_rust/mapfile/src/lib.rs @@ -94,7 +94,7 @@ unsafe { } _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/printf/Cargo.toml b/bash-5.1/builtins_rust/printf/Cargo.toml index 09eb4713..af161f97 100644 --- a/bash-5.1/builtins_rust/printf/Cargo.toml +++ b/bash-5.1/builtins_rust/printf/Cargo.toml @@ -14,3 +14,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/printf/src/intercdep.rs b/bash-5.1/builtins_rust/printf/src/intercdep.rs index 1f133a6f..d0016ee8 100644 --- a/bash-5.1/builtins_rust/printf/src/intercdep.rs +++ b/bash-5.1/builtins_rust/printf/src/intercdep.rs @@ -1,5 +1,5 @@ use rcommon::{WordList}; - +use rhelp::r_builtin_help; pub type __intmax_t = c_long; pub type intmax_t = __intmax_t; pub type arrayind_t = intmax_t; @@ -56,7 +56,6 @@ 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 76c65a41..e4cdd99e 100644 --- a/bash-5.1/builtins_rust/printf/src/lib.rs +++ b/bash-5.1/builtins_rust/printf/src/lib.rs @@ -140,7 +140,7 @@ unsafe { } _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/pushd/Cargo.toml b/bash-5.1/builtins_rust/pushd/Cargo.toml index 52119df6..0cc07842 100644 --- a/bash-5.1/builtins_rust/pushd/Cargo.toml +++ b/bash-5.1/builtins_rust/pushd/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path ="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/pushd/src/lib.rs b/bash-5.1/builtins_rust/pushd/src/lib.rs index 4355cfe1..70fa17da 100644 --- a/bash-5.1/builtins_rust/pushd/src/lib.rs +++ b/bash-5.1/builtins_rust/pushd/src/lib.rs @@ -2,10 +2,10 @@ extern crate libc; extern crate nix; use libc::{c_char, c_long, c_void}; -use std::{ffi::CString}; +use std::{ffi::{CString,CStr}}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; - +use rhelp::r_builtin_help; #[repr(u8)] enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, cm_connection, cm_function_def, cm_until, cm_group, @@ -213,7 +213,6 @@ macro_rules! CLEARSTAK { } extern "C" { - fn builtin_help (); fn builtin_error(err:*const c_char,...); fn get_working_directory (path:* mut c_char)-> * mut c_char; fn sh_invalidopt (value:* mut c_char); @@ -246,7 +245,7 @@ unsafe fn ISHELP(s:* const c_char)->bool unsafe fn ISOPTION(s:* const c_char, c:c_char)->bool { - return *s == '-' as c_char && *((s as usize + 1)as * mut c_char) == c && *((s as usize + 8)as * mut c_char) != 0; + return *s == '-' as c_char && *(s.offset(1)) == c && *(s.offset(2)) == 0; } unsafe fn savestring(x:* const c_char)->* mut c_char @@ -273,7 +272,7 @@ pub extern "C" fn r_pushd_builtin (listt:* mut WordList)->i32 orig_list = list.clone(); if list != std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && ISHELP((*((*list).word)).word) { - builtin_help (); + r_builtin_help (); return EX_USAGE; } @@ -455,7 +454,7 @@ let mut which_word:* mut c_char; unsafe { let mut list:* mut WordList=listt.clone(); if list != std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && ISHELP((*((*list).word)).word) { - builtin_help (); + r_builtin_help (); return EX_USAGE; } @@ -568,7 +567,7 @@ pub extern "C" fn r_dirs_builtin (listt:* mut WordList)->i32 unsafe { let mut list:* mut WordList=listt.clone(); if list != std::ptr::null_mut() && (*list).word != std::ptr::null_mut() && ISHELP((*((*list).word)).word) { - builtin_help (); + r_builtin_help (); return EX_USAGE; } @@ -586,15 +585,15 @@ pub extern "C" fn r_dirs_builtin (listt:* mut WordList)->i32 break; } else if *((*((*list).word)).word) == '+' as c_char || *((*((*list).word)).word) == '-' as c_char { let sign:i32; - w = ((*((*list).word)).word as usize +1) as * mut c_char; - if legal_number (w, &mut i) == 0 { + w = (*(*list).word).word.offset(1); + if legal_number (w, &mut i) == 0 { sh_invalidnum ((*((*list).word)).word); builtin_usage (); return EX_USAGE; } - if *((*((*list).word)).word) == '+' as c_char { - sign = -1; + if *((*(*list).word).word) == '+' as c_char{ + sign = 1; } else { sign = -1; } @@ -783,7 +782,7 @@ pub extern "C" fn r_get_dirstack_index (ind:libc::c_long, sign:i32, indexp:* mut if sign > 0 { *indexp=1; } else { - *indexp=0; + *indexp=2; } } /* dirs +0 prints the current working directory. */ diff --git a/bash-5.1/builtins_rust/read/Cargo.toml b/bash-5.1/builtins_rust/read/Cargo.toml index b13cb8c5..a4fc7430 100644 --- a/bash-5.1/builtins_rust/read/Cargo.toml +++ b/bash-5.1/builtins_rust/read/Cargo.toml @@ -14,3 +14,4 @@ crate-type = ["staticlib", "rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/read/src/intercdep.rs b/bash-5.1/builtins_rust/read/src/intercdep.rs index 5c9570a0..3229d823 100644 --- a/bash-5.1/builtins_rust/read/src/intercdep.rs +++ b/bash-5.1/builtins_rust/read/src/intercdep.rs @@ -1,6 +1,6 @@ use rcommon::{r_builtin_usage,r_sh_invalidid,r_builtin_bind_variable,WordList,WordDesc}; pub type SHELL_VAR = rcommon::SHELL_VAR; - +use rhelp::r_builtin_help; pub type __intmax_t = c_long; pub type intmax_t = __intmax_t; pub type arrayind_t = intmax_t; @@ -271,7 +271,6 @@ 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 bbc3c10e..87fd9125 100644 --- a/bash-5.1/builtins_rust/read/src/lib.rs +++ b/bash-5.1/builtins_rust/read/src/lib.rs @@ -193,7 +193,7 @@ unsafe { _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/rlet/Cargo.toml b/bash-5.1/builtins_rust/rlet/Cargo.toml index 1365a552..26608406 100644 --- a/bash-5.1/builtins_rust/rlet/Cargo.toml +++ b/bash-5.1/builtins_rust/rlet/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/rlet/src/intercdep.rs b/bash-5.1/builtins_rust/rlet/src/intercdep.rs index d37ae34b..221190e1 100644 --- a/bash-5.1/builtins_rust/rlet/src/intercdep.rs +++ b/bash-5.1/builtins_rust/rlet/src/intercdep.rs @@ -1,5 +1,5 @@ use rcommon::{WordList}; - +use rhelp::r_builtin_help; pub const EXECUTION_SUCCESS : c_int = 0; pub const EXECUTION_FAILURE : c_int = 1; pub const EX_USAGE: c_int = 258; @@ -20,7 +20,6 @@ extern "C" { pub fn string_list(list: *mut WordList) -> *mut c_char; pub fn builtin_usage(); - pub fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn evalexp (expr: *mut c_char, flags: c_int, validp: *mut c_int) -> c_long; diff --git a/bash-5.1/builtins_rust/rlet/src/lib.rs b/bash-5.1/builtins_rust/rlet/src/lib.rs index 629da2ef..5c126131 100644 --- a/bash-5.1/builtins_rust/rlet/src/lib.rs +++ b/bash-5.1/builtins_rust/rlet/src/lib.rs @@ -12,7 +12,7 @@ unsafe { if !list.is_null() && !(*list).word.is_null() && libc::strcmp((*((*list).word)).word, "--help\0".as_ptr() as *const c_char) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/rreturn/Cargo.toml b/bash-5.1/builtins_rust/rreturn/Cargo.toml index 5968cac3..04386c2e 100644 --- a/bash-5.1/builtins_rust/rreturn/Cargo.toml +++ b/bash-5.1/builtins_rust/rreturn/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/rreturn/src/intercdep.rs b/bash-5.1/builtins_rust/rreturn/src/intercdep.rs index 42b6d10d..0ca17eb8 100644 --- a/bash-5.1/builtins_rust/rreturn/src/intercdep.rs +++ b/bash-5.1/builtins_rust/rreturn/src/intercdep.rs @@ -38,7 +38,6 @@ pub type sigjmp_buf = [__jmp_buf_tag; 1usize]; extern "C" { pub fn builtin_usage(); - pub fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn get_exitstat(list: *mut WordList) -> c_int; diff --git a/bash-5.1/builtins_rust/rreturn/src/lib.rs b/bash-5.1/builtins_rust/rreturn/src/lib.rs index f05ecc58..b9ca0f45 100644 --- a/bash-5.1/builtins_rust/rreturn/src/lib.rs +++ b/bash-5.1/builtins_rust/rreturn/src/lib.rs @@ -1,6 +1,7 @@ use libc::{c_int, c_char, c_long, c_ulong}; use rcommon::{r_get_exitstat,WordList}; include!(concat!("intercdep.rs")); +use rhelp::r_builtin_help; #[no_mangle] pub extern "C" fn r_return_builtin(list: *mut WordList) -> i32 { @@ -8,7 +9,7 @@ pub extern "C" fn r_return_builtin(list: *mut WordList) -> i32 { unsafe { if !list.is_null() && !(*list).word.is_null() && libc::strcmp((*((*list).word)).word, "--help\0".as_ptr() as *const c_char) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/set/Cargo.toml b/bash-5.1/builtins_rust/set/Cargo.toml index 33c1629d..f6f50464 100644 --- a/bash-5.1/builtins_rust/set/Cargo.toml +++ b/bash-5.1/builtins_rust/set/Cargo.toml @@ -10,6 +10,8 @@ libc="*" nix="*" lazy_static = "*" rcommon = {path ="../common"} +rhelp = {path ="../help"} + [lib] crate-type = ["staticlib","rlib"] name = "rset" diff --git a/bash-5.1/builtins_rust/set/src/lib.rs b/bash-5.1/builtins_rust/set/src/lib.rs index c7bf273a..10ec77b7 100644 --- a/bash-5.1/builtins_rust/set/src/lib.rs +++ b/bash-5.1/builtins_rust/set/src/lib.rs @@ -7,6 +7,7 @@ use std::ptr; use std::mem; use std::io; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; +use rhelp::r_builtin_help; #[macro_export] macro_rules! FLAG_UNKNOWN { @@ -852,7 +853,6 @@ extern "C" { fn with_input_from_stream (_:libc::FILE , _: *const libc::c_char); fn stupidly_hack_special_variables (_ : *mut libc::c_char); fn builtin_error(_: *const libc::c_char, _: ...); - fn builtin_help(); static mut posixly_correct : i32; static mut enable_history_list : i32; static mut ignoreeof : i32 ; @@ -1433,10 +1433,8 @@ unsafe fn reset_shell_options () { } } _ => { - if opt == -99 { - unsafe { - builtin_help(); - } + if opt == -99{ + r_builtin_help(); return EX_USAGE; } // unsafe { @@ -1651,7 +1649,7 @@ pub extern "C" fn r_unset_builtin(mut list: *mut WordList) -> i32 { 'n'=>{nameref = 1;} _=>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); diff --git a/bash-5.1/builtins_rust/setattr/Cargo.toml b/bash-5.1/builtins_rust/setattr/Cargo.toml index e6ca0fe5..92f9f82b 100644 --- a/bash-5.1/builtins_rust/setattr/Cargo.toml +++ b/bash-5.1/builtins_rust/setattr/Cargo.toml @@ -19,3 +19,4 @@ libc = "*" nix = "*" rdeclare = {path = "../declare"} rcommon = {path = "../common"} +rhelp = {path ="../help"} \ No newline at end of file diff --git a/bash-5.1/builtins_rust/setattr/src/intercdep.rs b/bash-5.1/builtins_rust/setattr/src/intercdep.rs index a6bf5817..8c465593 100644 --- a/bash-5.1/builtins_rust/setattr/src/intercdep.rs +++ b/bash-5.1/builtins_rust/setattr/src/intercdep.rs @@ -345,7 +345,6 @@ 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 e8a9cce8..e6e76681 100644 --- a/bash-5.1/builtins_rust/setattr/src/lib.rs +++ b/bash-5.1/builtins_rust/setattr/src/lib.rs @@ -1,7 +1,7 @@ use std::mem::size_of_val; use libc::{c_int, c_uint, c_char, c_long, PT_NULL, c_void}; - +use rhelp::r_builtin_help; include!(concat!("intercdep.rs")); #[no_mangle] @@ -40,9 +40,10 @@ unsafe { 'f' => functions_only = true, 'a' => arrays_only = 1, 'A' => assoc_only = 1, + 'p' => break, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage (); diff --git a/bash-5.1/builtins_rust/shift/Cargo.toml b/bash-5.1/builtins_rust/shift/Cargo.toml index f9a623de..39d77f2d 100644 --- a/bash-5.1/builtins_rust/shift/Cargo.toml +++ b/bash-5.1/builtins_rust/shift/Cargo.toml @@ -11,7 +11,9 @@ authors = ["lvgenggeng"] name = "rshift" crate-type = ["staticlib","rlib"] + [dependencies] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} \ No newline at end of file diff --git a/bash-5.1/builtins_rust/shift/src/intercdep.rs b/bash-5.1/builtins_rust/shift/src/intercdep.rs index 7130cc61..5ea7ff65 100644 --- a/bash-5.1/builtins_rust/shift/src/intercdep.rs +++ b/bash-5.1/builtins_rust/shift/src/intercdep.rs @@ -6,7 +6,6 @@ pub const EX_USAGE: c_int = 258; extern "C" { pub fn builtin_usage(); - pub fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn get_numeric_arg(list: *mut WordList, fatal: c_int, count: c_long) -> c_int; diff --git a/bash-5.1/builtins_rust/shift/src/lib.rs b/bash-5.1/builtins_rust/shift/src/lib.rs index 47e92555..affc5e79 100644 --- a/bash-5.1/builtins_rust/shift/src/lib.rs +++ b/bash-5.1/builtins_rust/shift/src/lib.rs @@ -1,5 +1,6 @@ use libc::{c_int, c_char, c_long, PT_NULL}; use rcommon::{r_sh_erange,}; +use rhelp::r_builtin_help; include!(concat!("intercdep.rs")); @@ -11,7 +12,7 @@ pub extern "C" fn r_shift_builtin(list: *mut WordList) -> i32 { unsafe { if !list.is_null() && !(*list).word.is_null() && libc::strcmp((*((*list).word)).word, "--help\0".as_ptr() as *const c_char) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } diff --git a/bash-5.1/builtins_rust/shopt/Cargo.toml b/bash-5.1/builtins_rust/shopt/Cargo.toml index f7f08f7e..41839527 100644 --- a/bash-5.1/builtins_rust/shopt/Cargo.toml +++ b/bash-5.1/builtins_rust/shopt/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" libc = "*" rset = {path="../set"} rcommon = {path="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/shopt/src/lib.rs b/bash-5.1/builtins_rust/shopt/src/lib.rs index 583437e0..4642964d 100644 --- a/bash-5.1/builtins_rust/shopt/src/lib.rs +++ b/bash-5.1/builtins_rust/shopt/src/lib.rs @@ -4,6 +4,7 @@ use rset::r_set_shellopts; use libc::*; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; +use rhelp::r_builtin_help; /* /* First, the user-visible attributes */ #define att_exported 0x0000001 /* export to environment */ @@ -123,7 +124,6 @@ extern "C" { fn builtin_usage(); fn sh_invalidoptname(_: *mut libc::c_char); fn sh_chkwrite(_: i32) -> libc::c_int; - fn builtin_help(); fn minus_o_option_value(_: *mut libc::c_char) -> i32; fn list_minus_o_opts(_: i32, _: i32); fn set_minus_o_option(_: i32, _: *mut libc::c_char) -> libc::c_int; @@ -950,7 +950,7 @@ pub unsafe extern "C" fn r_shopt_builtin(mut list: *mut WordList) -> i32 { _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage(); diff --git a/bash-5.1/builtins_rust/source/Cargo.toml b/bash-5.1/builtins_rust/source/Cargo.toml index 4c5eb608..5637fcd4 100644 --- a/bash-5.1/builtins_rust/source/Cargo.toml +++ b/bash-5.1/builtins_rust/source/Cargo.toml @@ -10,6 +10,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path ="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/source/src/lib.rs b/bash-5.1/builtins_rust/source/src/lib.rs index 76371ffd..ac2ebe11 100644 --- a/bash-5.1/builtins_rust/source/src/lib.rs +++ b/bash-5.1/builtins_rust/source/src/lib.rs @@ -4,7 +4,7 @@ extern crate nix; use libc::{c_char, c_long, c_void}; use std::{ffi::CString}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; - +use rhelp::r_builtin_help; #[repr(u8)] enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, diff --git a/bash-5.1/builtins_rust/suspend/Cargo.toml b/bash-5.1/builtins_rust/suspend/Cargo.toml index b8ca8887..e1f8bcca 100644 --- a/bash-5.1/builtins_rust/suspend/Cargo.toml +++ b/bash-5.1/builtins_rust/suspend/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/suspend/src/intercdep.rs b/bash-5.1/builtins_rust/suspend/src/intercdep.rs index b7a9c02c..a8d98254 100644 --- a/bash-5.1/builtins_rust/suspend/src/intercdep.rs +++ b/bash-5.1/builtins_rust/suspend/src/intercdep.rs @@ -25,7 +25,6 @@ extern "C" { pub fn reset_internal_getopt(); pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int; pub fn builtin_usage(); - pub fn builtin_help(); pub fn builtin_error(format: *const c_char, ...); pub fn sh_nojobs(s: *mut c_char); diff --git a/bash-5.1/builtins_rust/suspend/src/lib.rs b/bash-5.1/builtins_rust/suspend/src/lib.rs index 574c8b4d..182dcaad 100644 --- a/bash-5.1/builtins_rust/suspend/src/lib.rs +++ b/bash-5.1/builtins_rust/suspend/src/lib.rs @@ -1,6 +1,6 @@ use libc::{c_int, c_char, c_long, PT_NULL}; use rcommon::{r_no_args,WordList,r_builtin_usage}; - +use rhelp::r_builtin_help; include!(concat!("intercdep.rs")); pub static mut old_cont: *mut SigHandler = PT_NULL as *mut SigHandler; @@ -21,7 +21,7 @@ unsafe { 'f' => force += 1, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/test/Cargo.toml b/bash-5.1/builtins_rust/test/Cargo.toml index b4162c5c..13f2c636 100644 --- a/bash-5.1/builtins_rust/test/Cargo.toml +++ b/bash-5.1/builtins_rust/test/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/test/src/lib.rs b/bash-5.1/builtins_rust/test/src/lib.rs index 0112ec18..5b82ccb3 100644 --- a/bash-5.1/builtins_rust/test/src/lib.rs +++ b/bash-5.1/builtins_rust/test/src/lib.rs @@ -1,6 +1,7 @@ use libc::{c_int, c_char, c_void}; use rcommon::{r_make_builtin_argv,WordList}; include!(concat!("intercdep.rs")); +use rhelp::r_builtin_help; #[no_mangle] pub extern "C" fn r_test_builtin(list: *mut WordList) -> i32 { diff --git a/bash-5.1/builtins_rust/times/Cargo.toml b/bash-5.1/builtins_rust/times/Cargo.toml index e9e88365..24062627 100644 --- a/bash-5.1/builtins_rust/times/Cargo.toml +++ b/bash-5.1/builtins_rust/times/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/trap/Cargo.toml b/bash-5.1/builtins_rust/trap/Cargo.toml index 2405fb78..79cdfff4 100644 --- a/bash-5.1/builtins_rust/trap/Cargo.toml +++ b/bash-5.1/builtins_rust/trap/Cargo.toml @@ -15,3 +15,4 @@ crate-type = ["staticlib","rlib"] libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} diff --git a/bash-5.1/builtins_rust/trap/src/intercdep.rs b/bash-5.1/builtins_rust/trap/src/intercdep.rs index fba354db..93e2d8a2 100644 --- a/bash-5.1/builtins_rust/trap/src/intercdep.rs +++ b/bash-5.1/builtins_rust/trap/src/intercdep.rs @@ -37,7 +37,6 @@ 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 cdc9a5fb..93598c24 100644 --- a/bash-5.1/builtins_rust/trap/src/lib.rs +++ b/bash-5.1/builtins_rust/trap/src/lib.rs @@ -2,7 +2,7 @@ use std::{ffi::CString}; use libc::{c_int, c_char, c_void, PT_NULL}; use rcommon::{r_builtin_usage,r_display_signal_list,WordList,r_sh_invalidsig,r_sh_chkwrite}; - +use rhelp::r_builtin_help; include!(concat!("intercdep.rs")); @@ -24,7 +24,7 @@ unsafe { 'p' => display += 1, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage (); diff --git a/bash-5.1/builtins_rust/type/Cargo.toml b/bash-5.1/builtins_rust/type/Cargo.toml index 8b98ea33..44b8949e 100644 --- a/bash-5.1/builtins_rust/type/Cargo.toml +++ b/bash-5.1/builtins_rust/type/Cargo.toml @@ -11,6 +11,7 @@ version = "0.0.1" libc = "*" nix = "*" rcommon = {path ="../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/type/src/lib.rs b/bash-5.1/builtins_rust/type/src/lib.rs index fc4c26dd..5f1eab4f 100644 --- a/bash-5.1/builtins_rust/type/src/lib.rs +++ b/bash-5.1/builtins_rust/type/src/lib.rs @@ -6,6 +6,7 @@ use std::ffi::CStr; use std::ffi::CString; use std::ptr; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; +use rhelp::r_builtin_help; #[macro_export] macro_rules! CDESC_ALL{ @@ -64,7 +65,7 @@ macro_rules! CDESC_STDPATH{ macro_rules! CHECK_HELPOPT { ($l:expr) => { if $l !=std::ptr::null_mut() && (*$l).word !=std::ptr::null_mut() && ISHELP!((*(*$l).word).word) == 0 { - builtin_help (); + r_builtin_help (); return EX_USAGE; } } @@ -356,7 +357,6 @@ extern "C" { fn reset_internal_getopt(); fn internal_getopt (list:*mut WordList , opts:*mut libc::c_char)->i32; fn builtin_usage(); - fn builtin_help(); fn sh_notfound (name:* mut libc::c_char); fn sh_chkwrite (ret:i32)->i32; fn find_alias(alia :*mut libc::c_char) ->alias_t; @@ -446,7 +446,7 @@ pub unsafe extern "C" fn r_type_builtin (mut list :*mut WordList) -> i32 { } _ =>{ if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } unsafe { diff --git a/bash-5.1/builtins_rust/ulimit/Cargo.toml b/bash-5.1/builtins_rust/ulimit/Cargo.toml index fd642b19..075af9f4 100644 --- a/bash-5.1/builtins_rust/ulimit/Cargo.toml +++ b/bash-5.1/builtins_rust/ulimit/Cargo.toml @@ -12,6 +12,7 @@ lazy_static = "*" libc = "*" nix = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/ulimit/src/lib.rs b/bash-5.1/builtins_rust/ulimit/src/lib.rs index 283ed16c..481ff72a 100644 --- a/bash-5.1/builtins_rust/ulimit/src/lib.rs +++ b/bash-5.1/builtins_rust/ulimit/src/lib.rs @@ -6,7 +6,7 @@ use std::ffi::CString; use std::ptr; use std::mem; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; - +use rhelp::r_builtin_help; #[derive(Copy, Clone)] #[repr(C)] @@ -388,7 +388,6 @@ extern "C" { fn sprintf(_: *mut libc::c_char, _: *const libc::c_char, _: ...) -> i32; fn string_to_rlimtype(_: *mut libc::c_char ) -> rlim_t; fn getdtablesize() -> i32; - fn builtin_help (); fn builtin_usage(); fn sh_erange (s:* mut libc::c_char, desc:* mut libc::c_char); fn sh_invalidnum(arg1: *mut libc::c_char); @@ -489,7 +488,7 @@ pub unsafe extern "C" fn r_ulimit_builtin(mut list: *mut WordList) -> i32{ _ => { //println!("enter switch default,opt is {}",opt); if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } if ncmd >= cmdlistsz { diff --git a/bash-5.1/builtins_rust/umask/Cargo.toml b/bash-5.1/builtins_rust/umask/Cargo.toml index 6c809514..03234e79 100644 --- a/bash-5.1/builtins_rust/umask/Cargo.toml +++ b/bash-5.1/builtins_rust/umask/Cargo.toml @@ -9,6 +9,7 @@ edition = "2018" [dependencies] libc = "*" rcommon = {path = "../common"} +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/umask/src/lib.rs b/bash-5.1/builtins_rust/umask/src/lib.rs index 5ad75042..3f523850 100644 --- a/bash-5.1/builtins_rust/umask/src/lib.rs +++ b/bash-5.1/builtins_rust/umask/src/lib.rs @@ -5,7 +5,7 @@ use std::ffi::{CString}; use rcommon::{r_read_octal}; use rcommon::{WordList, WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN,r_builtin_usage}; - +use rhelp::r_builtin_help; //结构体 @@ -152,7 +152,6 @@ 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; @@ -206,7 +205,7 @@ pub extern "C" fn r_umask_builtin(mut list:*mut WordList) ->i32{ 'p' => {pflag = pflag + 1;} _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } builtin_usage(); diff --git a/bash-5.1/builtins_rust/wait/Cargo.toml b/bash-5.1/builtins_rust/wait/Cargo.toml index ce4f668d..a84d272a 100644 --- a/bash-5.1/builtins_rust/wait/Cargo.toml +++ b/bash-5.1/builtins_rust/wait/Cargo.toml @@ -12,7 +12,7 @@ nix = "*" rjobs = {path = "../jobs"} rread = {path = "../read"} rcommon = {path = "../common"} - +rhelp = {path ="../help"} [lib] crate-type = ["staticlib","rlib"] diff --git a/bash-5.1/builtins_rust/wait/src/lib.rs b/bash-5.1/builtins_rust/wait/src/lib.rs index d48e5d7d..03f1a9c9 100644 --- a/bash-5.1/builtins_rust/wait/src/lib.rs +++ b/bash-5.1/builtins_rust/wait/src/lib.rs @@ -14,7 +14,7 @@ use rread::{SHELL_VAR,sh_var_value_func_t,sh_var_assign_func_t, use rcommon::{r_builtin_unbind_variable,r_builtin_usage,r_get_job_spec,WordList}; use rcommon::{ WordDesc, EX_USAGE, EXECUTION_SUCCESS, EXECUTION_FAILURE, EX_NOTFOUND, EX_NOEXEC, SUBSHELL_PAREN}; - +use rhelp::r_builtin_help; // 结构体 #[repr(C)] pub struct procstat{ @@ -191,7 +191,6 @@ extern "C" { static assoc_expand_once:i32; static mut last_command_exit_signal:i32; static posixly_correct:i32; - // fn sigsetjmp(env:sigjmp_buf,val:c_int)->i32; fn internal_getopt (list:*mut WordList, opts:*mut c_char)->i32; // fn builtin_usage(); @@ -212,7 +211,6 @@ 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{ @@ -276,7 +274,7 @@ pub extern "C" fn r_wait_builtin(mut list:*mut WordList)->i32{ 'p' => vname = list_optarg, _ => { if opt == -99 { - builtin_help(); + r_builtin_help(); return EX_USAGE; } r_builtin_usage(); diff --git a/record.txt b/record.txt index f34e96dc..9fe2e200 100644 --- a/record.txt +++ b/record.txt @@ -66,3 +66,4 @@ 88 89 90 +91 -- Gitee