# -*- shell-script -*- # Copyright (C) 2011 Rocky Bernstein # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place, Suite 330, Boston, # MA 02111 USA. _Dbg_help_add export \ '**export** *var1* [**var2** ...] Marks **var1**, **var2***, to get reassigned with their current values after on subshell exit. The values are set by the debugger only after it notices that the current shell is left. Nothing is done if you aren not in a subshell. ' proc _Dbg_do_export { if (( $# == 0 )) { _Dbg_errmsg "Expecting at least one variable name; got none." return 1 } if (( 0 == BASH_SUBSHELL )) { _Dbg_errmsg "You are not in a subshell, so no value(s) need saving." return 2 } typeset var_name for var_name in [$ifsjoin(Argv)] { _Dbg_defined $var_name if (( $? == 0 )) { typeset val typeset val_cmd="val=\${$var_name}" eval $val_cmd _Dbg_write_journal "$(var_name)=$(val)" } else { _Dbg_errmsg "name: $var_name is not known to be a variable." } } return 0 } (CommandList children: [ (C {(_Dbg_help_add)} {(export)} { (SQ <"**export** *var1* [**var2** ...]\n"> <"\n"> <"Marks **var1**, **var2***, to get reassigned with their current values after on\n"> <"subshell exit. The values are set by the debugger only after it\n"> <"notices that the current shell is left.\n"> <"\n"> <"Nothing is done if you aren not in a subshell.\n"> ) } ) (FuncDef name: _Dbg_do_export body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Expecting at least one variable name; got none."))}) (ControlFlow token: arg_word:{(1)}) ] spids: [-1 91] ) ] spids: [-1 106] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{(Lit_Digits 0)}) right: (ArithVarRef name:BASH_SUBSHELL) ) ) terminator: ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("You are not in a subshell, so no value(s) need saving."))}) (ControlFlow token: arg_word:{(2)}) ] spids: [-1 125] ) ] spids: [-1 140] ) (C {(typeset)} {(var_name)}) (ForEach iter_name: var_name iter_words: [{($ VSub_At "$@")}] do_arg_iter: False body: (DoGroup children: [ (C {(_Dbg_defined)} {($ VSub_Name "$var_name")}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_QMark "$?")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: ) ] action: [ (C {(typeset)} {(val)}) (C {(typeset)} {(Lit_VarLike "val_cmd=") (DQ ("val=") (EscapedLiteralPart token:) ("{") ($ VSub_Name "$var_name") ("}") ) } ) (C {(eval)} {(DQ ($ VSub_Name "$val_cmd"))}) (C {(_Dbg_write_journal)} {(DQ (${ VSub_Name var_name) ("=") (${ VSub_Name val))} ) ] spids: [-1 182] ) ] else_action: [ (C {(_Dbg_errmsg)} { (DQ ("name: ") ($ VSub_Name "$var_name") (" is not known to be a variable.") ) } ) ] spids: [222 234] ) ] spids: [159 237] ) spids: [154 157] ) (ControlFlow token: arg_word:{(0)}) ] spids: [72] ) spids: [68 71] ) ] )