(command.CommandList children: [ (C {<typeset>} {<Id.Lit_VarLike '_Dbg_bogus_file='> (SQ <' A really bogus file'>)}) (C {<typeset>} {<-A>} {<_Dbg_file2canonic>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_file2canonic) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [75] ) ] ) (C {<typeset>} {<-A>} {<_Dbg_fileinfo>}) (C {<typeset>} {<-A>} {<_Dbg_filenames>}) (command.ShFunction name: _Dbg_filecache_reset body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_filenames) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [110] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_fileinfo) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [115] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_file2canonic) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [120] ) ] ) ] ) ) (C {<_Dbg_filecache_reset>}) (command.ShFunction name: _Dbg_check_line body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 2>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'line_number='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number '$2'))}) (C {<typeset>} {<-i>} {<max_line>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:max_line) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_get_maxline>} {(DQ ($ Id.VSub_DollarName '$filename'))}) ) } spids: [183] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '$?')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} { (DQ <'internal error getting number of lines in '> ($ Id.VSub_DollarName '$filename') ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [193 208] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: <Id.Lit_ArithVarLike line_number> right: <Id.Lit_ArithVarLike max_line> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: <Id.Lit_ArithVarLike _Dbg_set_basename> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name filename> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) ) } spids: [255] ) ] ) ] ) (C {<_Dbg_errmsg>} {(DQ <'Line '> ($ Id.VSub_DollarName '$line_number') <' is too large.'>)} { (DQ <'File '> ($ Id.VSub_DollarName '$filename') <' has only '> ($ Id.VSub_DollarName '$max_line') <' lines.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [228 243] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_file_not_read_in body: (BraceGroup children: [ (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'filename='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_Number '$1'))}) ) } ) (C {<_Dbg_errmsg>} { (DQ <'File '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$filename') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' not found in read-in files.'> ) } ) (C {<_Dbg_errmsg>} {(DQ <'See \'info files\' for a list of known files and'>)}) (C {<_Dbg_errmsg>} {(DQ <'\'load\' to read in a file.'>)}) ] ) ) (command.ShFunction name: _Dbg_get_maxline body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<-1>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_Number '$1'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] ) (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'line_count_cmd='> (DQ <'line_count='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{#'> ($ Id.VSub_DollarName '$_Dbg_source_array_var') <'[@]}'> ) } ) (C {<eval>} {($ Id.VSub_DollarName '$line_count_cmd')}) (C {<eval>} { (DQ <'typeset last_line; last_line='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _Dbg_source_array_var) <'['> ($ Id.VSub_DollarName '$line_count') <']}'> ) } ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'last_not_null='> <0>}) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike line_count> right: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike line_count> right: <Id.Lit_ArithVarLike last_line_is_null> ) ) ) (C {<echo>} {($ Id.VSub_DollarName '$line_count')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ) (command.ShFunction name: _Dbg_get_source_line body: (BraceGroup children: [ (C {<typeset>} {<-i>} {<lineno>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lineno) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$_Dbg_frame_last_lineno')} spids: [517] ) ] ) ] spids: [500 514] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lineno) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [524] ) ] ) (C {<shift>}) ] ) (C {<typeset>} {<filename>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))} spids: [557] ) ] ) ] spids: [539 554] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [566] ) ] ) ] ) (C {<_Dbg_readin_if_new>} {(DQ ($ Id.VSub_DollarName '$filename'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_set_highlight')} ) ) (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_highlight_array_var')} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <'typeset -i count='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'{#'> ($ Id.VSub_DollarName '$_Dbg_highlight_array_var') <'[@]}'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child:<Id.Lit_ArithVarLike count>) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'{'> ($ Id.VSub_DollarName '$_Dbg_highlight_array_var') <'[lineno]}'> ) } ) ] spids: [617 628] ) ] else_action: [ (C {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'{'> ($ Id.VSub_DollarName '$_Dbg_source_array_var') <'['> ($ Id.VSub_DollarName '$lineno') <']}'> ) } ) ] ) ] spids: [582 603] ) ] else_action: [ (C {<eval>} { (DQ <'_Dbg_source_line='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'{'> ($ Id.VSub_DollarName '$_Dbg_source_array_var') <'['> ($ Id.VSub_DollarName '$lineno') <']}'> ) } ) ] ) ] ) ) (command.ShFunction name: _Dbg_is_file body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(DQ <'Internal debug error _Dbg_is_file(): null file to find'>)}) (C {<echo>} {(SQ )}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [695 710] ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'find_file='> (DQ ($ Id.VSub_Number '$1'))}) (C {<typeset>} {<try_find_file>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$find_file')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(DQ <'Internal debug error _Dbg_is_file(): file argument null'>)} ) (C {<echo>} {(SQ )}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [748 760] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name find_file> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } right: {(SQ <'/'>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:try_find_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_DollarName '$find_file'))}) ) } spids: [814] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$try_find_file')} ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$try_find_file'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [824 841] ) ] ) ] spids: [785 807] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name find_file> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } right: {(SQ <.>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:try_find_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_expand_filename>} { (DQ (${ Id.VSub_Name _Dbg_init_cwd) <'/'> ($ Id.VSub_DollarName '$find_file') ) } ) ) } spids: [888] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$try_find_file')} ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$try_find_file'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [906 923] ) ] ) ] spids: [859 881] ) ] else_action: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'n='> (braced_var_sub token: <Id.VSub_Name _Dbg_dir> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) (C {<typeset>} {<-i>} {<i>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: <Id.Lit_ArithVarLike n> ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (C {<typeset>} {<Id.Lit_VarLike 'basename='> (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_dir> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike i>) ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$basename')} right: {(SQ <'\\$cdir'>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basename) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$_Dbg_cdir')} spids: [1029] ) ] ) ] spids: [1010 1026] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$basename')} right: {(SQ <'\\$cwd'>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basename) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<pwd>}) ) } spids: [1052] ) ] ) ] spids: [1033 1049] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:try_find_file) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$basename') <'/'> ($ Id.VSub_DollarName '$find_file') ) } spids: [1061] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_f child: {(DQ ($ Id.VSub_DollarName '$try_find_file'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$try_find_file'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1069 1083] ) ] ) ] ) ) ] ) (C {<echo>} {(SQ )}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: _Dbg_readin body: (BraceGroup children: [ (C {<typeset>} {<filename>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [1163] ) ] ) ] spids: [1147 1160] ) ] else_action: [ (C {<_Dbg_frame_file>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_filename'))} spids: [1175] ) ] ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'line_count='> <0>}) (command.Sentence child: (C {<typeset>} {<-i>} {<next>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:next) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } spids: [1202] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_source_array_var) op: assign_op.Equal rhs: {(DQ <_Dbg_source_> (${ Id.VSub_Name next))} spids: [1212] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_set_highlight')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_highlight_array_var) op: assign_op.Equal rhs: {(DQ <_Dbg_highlight_> (${ Id.VSub_Name next))} spids: [1236] ) ] ) ] spids: [1221 1233] ) ] ) (C {<typeset>} {<filevar>}) (C {<typeset>} {<source_array>}) (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'NOT_SMALLFILE='> <1000>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$filename')} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$filename')} right: {(DQ ($ Id.VSub_DollarName '$_Dbg_bogus_file'))} ) ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ (${ Id.VSub_Name _Dbg_source_array_var) <'[0]='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$Dbg_EXECUTION_STRING') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ) } ) ] spids: [1268 1294] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullname) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_resolve_expand_filename>} {(DQ ($ Id.VSub_DollarName '$filename'))} ) ) } spids: [1313] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName '$fullname')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'progress_prefix='> (DQ <'Reading '> ($ Id.VSub_DollarName '$filename')) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_file2canonic index: {($ Id.VSub_DollarName '$filename')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$fullname'))} spids: [1349] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_file2canonic index: {($ Id.VSub_DollarName '$fullname')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$fullname'))} spids: [1359] ) ] ) (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'BIGFILE='> <30000>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<wc>} {<-l>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line_count) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<wc>} {<-l>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ (${ Id.VSub_Name fullname))} ) ] do_fork: T ) ) } spids: [1402] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: <Id.Lit_ArithVarLike line_count> right: <Id.Lit_ArithVarLike NOT_SMALLFILE> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_msg_nocr>} {(DQ (${ Id.VSub_Name progress_prefix) <' '>)} ) ] spids: [1418 1433] ) ] ) ] spids: [1381 1399] ) ] ) (command.Simple words: [ {<builtin>} {<readarray>} {<-t>} {<-O>} {<1>} {<-c>} {($ Id.VSub_DollarName '$BIGFILE')} {<-C>} { (DQ <'_Dbg_progess_show '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (${ Id.VSub_Name progress_prefix) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (${ Id.VSub_Name line_count) ) } {($ Id.VSub_DollarName '$_Dbg_source_array_var')} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$fullname'))} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_set_highlight')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opts) op: assign_op.Equal rhs: {(DQ <'--bg='> (${ Id.VSub_Name _Dbg_set_highlight))} spids: [1509] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_set_style')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opts) op: assign_op.Equal rhs: {(DQ <'--style='> (${ Id.VSub_Name _Dbg_set_style))} spids: [1533] ) ] ) ] spids: [1518 1530] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:highlight_cmd) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _Dbg_libdir) <'/lib/term-highlight.py '> ($ Id.VSub_DollarName '$opts') <' '> ($ Id.VSub_DollarName '$fullname') ) } spids: [1545] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tempfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{($ Id.VSub_DollarName '$highlight_cmd')}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1557] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {<Id.Lit_Digits 0>} right: {($ Id.VSub_QMark '$?')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<builtin>} {<readarray>} {<-t>} {<-O>} {<1>} {<-c>} {($ Id.VSub_DollarName '$BIGFILE')} {<-C>} { (DQ <'_Dbg_progess_show '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (${ Id.VSub_Name progress_prefix) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (${ Id.VSub_Name line_count) ) } {($ Id.VSub_DollarName '$_Dbg_highlight_array_var')} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$tempfile'))} ) ] do_fork: T ) ] spids: [1566 1581] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName '$tempfile')} ) ) (C {<rm>} {($ Id.VSub_DollarName '$tempfile')}) ] ) ] spids: [1494 1506] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: <Id.Lit_ArithVarLike line_count> right: <Id.Lit_ArithVarLike BIGFILE> ) ) (C {<_Dbg_progess_done>}) ] ) ] spids: [1323 1335] ) ] else_action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'line_count_cmd='> (DQ <'line_count='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{#'> (braced_var_sub token: <Id.VSub_Name _Dbg_source_array_var> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) <'}'> ) } ) (C {<eval>} {($ Id.VSub_DollarName '$line_count_cmd')}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: <Id.Lit_ArithVarLike line_count> right: <Id.Lit_ArithVarLike NOT_SMALLFILE> ) ) (C {<_Dbg_msg>} {(DQ <done.>)}) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_filenames index: {($ Id.VSub_DollarName '$fullname')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$_Dbg_source_array_var')} spids: [1727] ) ] ) terminator: <Id.Op_Semi _> ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_readin_if_new body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number '$1'))}) (C {<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_DollarName '$filename'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$fullname'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_readin>} {(DQ ($ Id.VSub_DollarName '$filename'))}) (C {<typeset>} {<Id.Lit_VarLike 'rc='> ($ Id.VSub_QMark '$?')}) (C {<set>} {<Id.Lit_Other '+'> <xv>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '$?')} right: {<Id.Lit_Digits 0>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$fullname')} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_set_source_array_var>} {(DQ ($ Id.VSub_DollarName '$filename'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] spids: [1789 1803] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_set_source_array_var body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number '$1'))}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$filename')} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullname) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _Dbg_file2canonic> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$filename')}) ) } spids: [1938] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$fullname')} ) ) (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$filename')} ) ) } ) ) (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullname) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$filename'))} spids: [1975] ) ] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$fullname')} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_source_array_var) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')}) ) } spids: [1999] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$_Dbg_set_highlight')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_highlight_array_var) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_source_array_var> suffix_op: (suffix_op.PatSub pat: {<_Dbg_source_>} replace: {<_Dbg_highlight_>} replace_mode: Id.Undefined_Tok ) ) ) } spids: [2023] ) ] ) ] spids: [2008 2020] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_source_array_var) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _Dbg_filenames> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')}) ) } spids: [2038] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$_Dbg_source_array_var')} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) ] )