(command.CommandList children: [ (command.ShFunction name: __gtar_parse_help_opt body: (BraceGroup children: [ (C {<local>} {<opttype>} {<arg>} {<opt>} {<separator>} {<optvar>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opttype) op: assign_op.Equal rhs: {<long>} spids: [138] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [142] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [148] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:separator) op: assign_op.Equal rhs: {(DQ <' '>)} spids: [154] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$opt'))} arms: [ (case_arm pat_list:[{<--> <Id.Lit_Star '*'>}] spids:[170 172 175 -1]) (case_arm pat_list: [{<-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'>)}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [178 180 185 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opttype) op: assign_op.Equal rhs: {<short>} spids: [193] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.Unary tok:<Id.VOp1_DPound '##'> arg_word:{<->}) ) } spids: [197] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:separator) op: assign_op.Equal rhs: (word.Empty) spids: [205] ) ] ) ] spids: [188 190 208 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Simple words: [{<echo>} {(DQ <'not an option '> ($ Id.VSub_DollarName '$opt'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [211 212 231 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\['>) <'*'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [242] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.PatSub pat: {<'=*'>} replace: {<'='>} replace_mode: Id.Lit_Slash ) ) } spids: [253] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'*'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [269] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) <'*'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [280] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.PatSub pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'>) <'*'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [291] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:optvar) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$opttype') (SQ <_arg_>) ($ Id.VSub_DollarName '$arg')} spids: [303] ) ] ) (C {<eval>} { (DQ ($ Id.VSub_DollarName '$optvar') <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_DollarName '$optvar') ($ Id.VSub_DollarName '$separator') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$opt') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) ] ) ) (command.ShFunction name: __gtar_parse_help_line body: (BraceGroup children: [ (C {<local>} {<i>}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_Number '$1')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$i'))} arms: [ (case_arm pat_list: [{<--> <Id.Lit_Star '*'>} {<-> <Id.Lit_Star '*'>}] action: [ (C {<__gtar_parse_help_opt>} {(DQ ($ Id.VSub_DollarName '$i'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] spids: [369 374 388 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [396 397 -1 404] ) ] ) ] ) ) ] ) ) (command.ShFunction name: __gnu_tar_parse_help body: (BraceGroup children: [ (C {<local>} {<str>} {<line>} {<arg>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<read>} {<line>}] more_env: [(env_pair name:IFS val:(word.Empty) spids:[431])] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$line'))} right: {<Id.Lit_Other '^'> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '{'> <1> <Id.Lit_Other ','> <10> <Id.Lit_Other '}'> <Id.Lit_Other '('> <Id.Lit_Other '('> <Id.Lit_Other '('> <Id.Lit_Other ','> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other ')'> <Id.Lit_Other '?'> <Id.Lit_Other '('> <--> <Id.Lit_Other '?'> <Id.Lit_Other '('> <Id.Lit_Other '['> <Id.Lit_RegexMeta '\\]'> <Id.Lit_RegexMeta '\\['> <a-zA-Z0-9> <Id.Lit_Other '?'> <-> <Id.Lit_Other '='> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other ')'> <Id.Lit_Other ')'> <Id.Lit_Other '('> <Id.Lit_Other ','> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <space> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other ')'> <Id.Lit_Other '?'> <Id.Lit_Other ')'> <Id.Lit_Other '+'> <Id.Lit_Other ')'> <Id.Lit_Other .> <Id.Lit_Other '*'> <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name BASH_REMATCH> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) } spids: [535] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:str) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name line> suffix_op: (suffix_op.PatSub pat: {<','>} replace: {<' '>} replace_mode: Id.Lit_Slash ) ) ) } spids: [544] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arg) op: assign_op.Equal rhs: {<none>} spids: [574] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$line'))} right: {<--> <Id.Lit_Other '['> <A-Za-z0-9-> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '('> <Id.Lit_RegexMeta '\\['> <Id.Lit_Other '?'> <Id.Lit_Other ')'> <Id.Lit_Other '='> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name BASH_REMATCH> bracket_op: (bracket_op.ArrayIndex expr: {<Id.Lit_Digits 1>} ) ) ) } ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arg) op: assign_op.Equal rhs: {<opt>} spids: [622] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:arg) op: assign_op.Equal rhs: {<req>} spids: [627] ) ] ) ] ) ] spids: [578 602] ) ] ) (C {<__gtar_parse_help_line>} {(DQ ($ Id.VSub_DollarName '$str'))} {(DQ ($ Id.VSub_DollarName '$arg'))} ) ] spids: [457 531] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<tar>} {<--help>}) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:long_opts) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$long_arg_none') <' '> ($ Id.VSub_DollarName '$long_arg_opt') <' '> ($ Id.VSub_DollarName '$long_arg_req') ) } spids: [662] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_opts) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$short_arg_none') ($ Id.VSub_DollarName '$short_arg_opt') ($ Id.VSub_DollarName '$short_arg_req') ) } spids: [677] ) ] ) ] ) ) (command.ShFunction name: __gtar_parse_warnings body: (BraceGroup children: [ (C {<local>} {<line>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<read>} {<line>}] more_env: [(env_pair name:IFS val:(word.Empty) spids:[705])] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$line')} right: {<Id.Lit_Other '^'> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <-> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <Id.Lit_Other '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ) <Id.Lit_Other ']'> <Id.Lit_Other '('> <Id.Lit_Other '['> <a-zA-Z0-9-> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other ')'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ (braced_var_sub token: <Id.VSub_Name BASH_REMATCH> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) <' no-'> (braced_var_sub token: <Id.VSub_Name BASH_REMATCH> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) ) } ) ] spids: [715 757] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<tar>} {<--warning> <Id.Lit_Equals '='>}] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[787])] do_fork: T ) ) ) } ) ] ) ] ) ) (command.ShFunction name: __tar_last_char body: (BraceGroup children: [ (C {<echo>} { (DQ (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Slice begin: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub token: <Id.VSub_Number 1> prefix_op: (Id.VSub_Pound) ) } right: {<Id.Lit_Digits 1>} ) ) } ) ) ) } ) ] ) ) (command.ShFunction name: __tar_parse_old_opt body: (BraceGroup children: [ (C {<local>} {<first_word>} {<char>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$cword'))} right: {<1>} ) right: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$cur'))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (DQ (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) ) } right: {(SQ <->)} ) ) ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_opt_progress) op: assign_op.Equal rhs: {<1>} spids: [901] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first_word) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) } spids: [910] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$first_word'))} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (DQ (braced_var_sub token: <Id.VSub_Name first_word> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) ) } right: {(DQ <->)} ) ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_opt_used) op: assign_op.Equal rhs: {<1>} spids: [951] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$old_opt_used')} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:char) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name first_word> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } spids: [980] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$char'))} ) ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<__tar_is_argreq>} {(DQ ($ Id.VSub_DollarName '$char'))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_opt_parsed) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_DollarName '$char'))}] ) } spids: [1018] ) ] ) ] spids: [1006 1015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first_word) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name first_word> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {($ Id.VSub_DollarName '$char')} ) ) } spids: [1029] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:char) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name first_word> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } spids: [1037] ) ] ) ] ) ) ] spids: [964 977] ) ] ) ] ) ) (command.ShFunction name: __tar_preparse_cmdline body: (BraceGroup children: [ (C {<local>} {<first_arg>} {<my_args>} {<tmparg>} {<i>} {<Id.Lit_VarLike 'modes='> (DQ <ctxurdA>)} ) (C {<shift>}) (C {<__tar_parse_old_opt>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first_arg) op: assign_op.Equal rhs: {<1>} spids: [1094] ) ] ) (command.ForEach iter_name: i iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$i'))} arms: [ (case_arm pat_list: [{<--delete>} {<--test-label>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name i> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 2>} length: {<Id.Lit_Digits 100>} ) ) } spids: [1127] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode_arg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$i')} spids: [1137] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1121 1124 1144 -1] ) (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] spids: [1147 1149 1156 -1] ) (case_arm pat_list: [ {<-> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> ($ Id.VSub_DollarName '$modes') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name i> suffix_op: (suffix_op.PatSub pat: {<'[^'> ($ Id.VSub_DollarName '$modes') <']'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name tar_mode> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } spids: [1180] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode_arg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$i')} spids: [1190] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1159 1165 1197 -1] ) (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> ($ Id.VSub_DollarName '$modes') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$first_arg')} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name i> suffix_op: (suffix_op.PatSub pat: {<'[^'> ($ Id.VSub_DollarName '$modes') <']'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1228] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name tar_mode> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) ) } spids: [1240] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode_arg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$i')} spids: [1250] ) ] ) ] spids: [1212 1225] ) ] ) ] spids: [1200 1205 1257 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first_arg) op: assign_op.Equal rhs: {<0>} spids: [1263] ) ] ) ] ) ) ] ) ) (command.ShFunction name: __tar_file_option body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'ext='> (DQ ($ Id.VSub_Number '$1'))}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} arms: [ (case_arm pat_list: [{<c>}] action: [(C {<_filedir>} {<-d>})] spids: [1301 1302 1314 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<_filedir>} {(DQ ($ Id.VSub_DollarName '$ext'))})] spids: [1317 1318 1328 -1] ) ] ) ] ) ) (command.ShFunction name: __tar_is_argreq body: (BraceGroup children: [ (C {<local>} {<opt>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1355] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$opt'))} arms: [ (case_arm pat_list: [ {<-> <Id.Lit_LBracket '['> <A-Za-z0-9> <Id.Lit_QMark '?'> <Id.Lit_RBracket ']'>} ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$short_arg_req'))} right: { (braced_var_sub token: <Id.VSub_Name opt> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<->} ) ) } ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [1368 1373 1399 -1] ) (case_arm pat_list: [ {<Id.Lit_LBracket '['> <A-Za-z0-9> <Id.Lit_QMark '?'> <Id.Lit_RBracket ']'>} ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$short_arg_req'))} right: {(${ Id.VSub_Name opt)} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [1402 1406 1430 -1] ) (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$long_arg_req'))} right: {<Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> ($ Id.VSub_DollarName '$opt') <Id.Lit_Other '='> <Id.Lit_Other '['> <Id.Lit_Other '['> <Id.Lit_Other ':'> <blank> <Id.Lit_Other ':'> <Id.Lit_Other ']'> <Id.Lit_Other ']'> } ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [1433 1435 1472 -1] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: __tar_complete_mode body: (BraceGroup children: [ (C {<local>} {<short_modes>} {<has_mode>} {<rawopt>} {<generated>} {<allshort_raw_unused>} {<allshort_raw>} {<filler>} {<i>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_modes) op: assign_op.Equal rhs: {(DQ <ctx>)} spids: [1521] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$basic_tar'))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_modes) op: assign_op.Equal rhs: {(DQ <ctxurdA>)} spids: [1539] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rawopt) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name cur> suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<->}) ) } spids: [1550] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:allshort_raw) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name short_opts> suffix_op: (suffix_op.PatSub pat: {<'[- ]'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1563] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {<none>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filler) op: assign_op.Equal rhs: (word.Empty) spids: [1601] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$cur'))} ) right: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$basic_tar'))} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filler) op: assign_op.Equal rhs: {<->} spids: [1628] ) ] ) ] spids: [1604 1625] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.Equal rhs: {(DQ )} spids: [1636] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: {<Id.Lit_Digits 1>} update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'c='> (DQ (braced_var_sub token: <Id.VSub_Name short_modes> suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName '$i')} length: {<Id.Lit_Digits 1>} ) ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$c'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.PlusEqual rhs: { (DQ <' '> ($ Id.VSub_DollarName '$filler') ($ Id.VSub_DollarName '$cur') ($ Id.VSub_DollarName '$c') ) } spids: [1693] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$generated'))}) ) } ] ) } spids: [1706] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1578 1593] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$old_opt_progress'))} right: {<0>} ) ) (C {<__tar_is_argreq>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<__tar_last_char>} {(DQ ($ Id.VSub_DollarName '$cur'))}) ) ) } ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_DollarName '$cur'))}] ) } spids: [1774] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [1740 1771] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:allshort_raw_unused) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name allshort_raw> suffix_op: (suffix_op.PatSub pat: {<'['> ($ Id.VSub_DollarName '$rawopt') <']'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1794] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {<none>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:allshort_raw_unused) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name allshort_raw_unused> suffix_op: (suffix_op.PatSub pat: {<'['> ($ Id.VSub_DollarName '$short_modes') <']'>} replace_mode: Id.Lit_Slash ) ) } spids: [1824] ) ] ) ] spids: [1806 1821] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.Equal rhs: (word.Empty) spids: [1839] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: {<Id.Lit_Digits 1>} update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'c='> (DQ (braced_var_sub token: <Id.VSub_Name allshort_raw_unused> suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName '$i')} length: {<Id.Lit_Digits 1>} ) ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$c'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.PlusEqual rhs: {(DQ <' '> ($ Id.VSub_DollarName '$cur') ($ Id.VSub_DollarName '$c'))} spids: [1894] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$generated'))}) ) } ] ) } spids: [1906] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: __gtar_complete_lopts body: (BraceGroup children: [ (C {<local>} {<rv>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$long_opts'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [1945] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rv) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1969] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$COMPREPLY')} right: {<Id.Lit_Other '*'> <Id.BoolBinary_GlobEqual '='>} ) ) (C {<compopt>} {<-o>} {<nospace>}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$rv')} ) ] ) ) (command.ShFunction name: __gtar_complete_sopts body: (BraceGroup children: [ (C {<local>} {<generated>} {<short_mode_opts>} {<i>} {<c>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_mode_opts) op: assign_op.Equal rhs: {(DQ <ctxurdA>)} spids: [2019] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name short_opts> suffix_op: (suffix_op.PatSub pat: {<'['> ($ Id.VSub_DollarName '$short_mode_opts') <']'>} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [2025] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: {<Id.Lit_Digits 1>} update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:c) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name allshort_raw_unused> suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName '$i')} length: {<Id.Lit_Digits 1>} ) ) ) } spids: [2061] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$c'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:generated) op: assign_op.PlusEqual rhs: {(DQ <' '> ($ Id.VSub_DollarName '$cur') ($ Id.VSub_DollarName '$c'))} spids: [2088] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(DQ ($ Id.VSub_DollarName '$generated'))} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [2100] ) ] ) ] ) ) (command.ShFunction name: __tar_try_mode body: (BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cur'))} arms: [ (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$basic_tar'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<__gtar_complete_lopts>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] spids: [2143 2145 2177 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$basic_tar'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_complete_mode>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [2181 2183 2217 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$cword'))} right: {<1>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {<none>} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_complete_mode>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [2225 2250] ) ] ) ] spids: [2221 2222 2265 -1] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: __tar_adjust_PREV_from_old_option body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$old_opt_used'))} right: {<1>} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_gt left: {(DQ ($ Id.VSub_DollarName '$cword'))} right: {<1>} ) right: (bool_expr.Binary op_id: Id.BoolBinary_lt left: {(DQ ($ Id.VSub_DollarName '$cword'))} right: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: { (braced_var_sub token: <Id.VSub_Name old_opt_parsed> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) } right: {<Id.Lit_Digits 2>} ) ) } ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (DQ <-> (braced_var_sub token: <Id.VSub_Name old_opt_parsed> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$cword')} right: {<Id.Lit_Digits 2>} ) ) ) ) } spids: [2358] ) ] ) ] spids: [2298 2351] ) ] ) ] ) ) (command.ShFunction name: __tar_extract_like_mode body: (BraceGroup children: [ (C {<local>} {<i>}) (command.ForEach iter_name: i iter_words: [{<x>} {<d>} {<t>} {<delete>}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {(DQ ($ Id.VSub_DollarName '$i'))} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] ) ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: __tar_try_list_archive body: (BraceGroup children: [ (C {<local>} {<tarball>} {<tarbin>} {<untar>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<__tar_extract_like_mode>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<set>} {<-->} { (DQ (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tarbin) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2494] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:untar) op: assign_op.Equal rhs: {(DQ <tf>)} spids: [2498] ) ] ) (C {<shift>}) (command.Simple words: [{<read>} {<tarball>}] redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<printf>} {<-->} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_At '$@'))}) (C {<sed>} {<-n>} { (DQ <'/^.'> <Id.Lit_BadBackslash '\\'> <'{1,'> <Id.Lit_BadBackslash '\\'> <'}'> ($ Id.VSub_DollarName '$regex') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/p'> ) } ) (C {<tee>} {<'/tmp/jetel'>}) ] negated: F ) ) ) } ) ] 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: {(DQ ($ Id.VSub_DollarName '$tarball'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'IFS='> (single_quoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_OneChar '\\n'>] multiline: F ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-o>} {<filenames>} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<line>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<printf>} { (DQ <'%q'> <Id.Lit_BadBackslash '\\'> <n>) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {<Id.Lit_Other '%'> <q> (DQ <Id.Lit_BadBackslash '\\'> <n> ) } {(DQ ($ Id.VSub_DollarName '$line'))} ) ) ) } ) ] ) redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ { ($ Id.VSub_DollarName '$tarbin' ) } { ($ Id.VSub_DollarName '$untar' ) } { (DQ ($ Id.VSub_DollarName '$tarball' ) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ) } ) ] ) ) ) } {<-->} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <'%q'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) ) } ) ) } ] ) } spids: [2579] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2555 2568] ) ] ) ] ) ) (command.ShFunction name: __tar_cleanup_prev body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$prev'))} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '['> <a-zA-Z0-9> <Id.Lit_Other '?'> <Id.Lit_Other ']'> <Id.Lit_Other '*'> <Id.Lit_Other '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (DQ <-> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<__tar_last_char>} {(DQ ($ Id.VSub_DollarName '$prev'))}) ) ) } spids: [2719] ) ] ) ] spids: [2690 2712] ) ] ) ] ) ) (command.ShFunction name: __tar_detect_ext body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'tars='> (SQ <'@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))'>) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$tars'))} spids: [2752] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ < '\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)' > ) } spids: [2758] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$tar_mode_arg'))} arms: [ (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] spids: [2774 2776 2783 -1] ) (case_arm pat_list: [ {(word_part.ExtGlob op:<Id.ExtGlob_QMark '?('> arms:[{<->}]) <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <cr> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <f> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'@(tar|gem|spkg)'>)} spids: [2798] ) ] ) (command.Case to_match: { (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) ) } arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <a> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$tars'))} spids: [2821] ) ] ) ] spids: [2816 2819 2826 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'> <z> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'t?(ar.)gz'>)} spids: [2834] ) ] ) ] spids: [2829 2832 2839 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'> <Z> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'ta@(r.Z|z)'>)} spids: [2847] ) ] ) ] spids: [2842 2845 2852 -1] ) (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <jy> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'t@(?(ar.)bz?(2)|b2)'>)} spids: [2862] ) ] ) ] spids: [2855 2860 2867 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'> <J> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'t?(ar.)xz'>)} spids: [2875] ) ] ) ] spids: [2870 2873 2880 -1] ) ] ) ] spids: [2786 2795 2886 -1] ) (case_arm pat_list: [{(word_part.ExtGlob op:<Id.ExtGlob_Plus '+('> arms:[{<'[^ZzJjy]'>}]) <f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$tars'))} spids: [2896] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ < '\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)' > ) } spids: [2902] ) ] ) ] spids: [2889 2893 2908 -1] ) (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Zz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <f> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)'>)} spids: [2920] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ <'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\|spkg\\.\\)\\(gz\\|Z\\)\\|taz\\)'> ) } spids: [2926] ) ] ) ] spids: [2911 2917 2932 -1] ) (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <jy> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <f> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)'>)} spids: [2944] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: {(SQ <'\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\)bz2\\?\\|spkg\\|tb2\\)'>)} spids: [2950] ) ] ) ] spids: [2935 2941 2956 -1] ) (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <J> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <f> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {(SQ <'@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)'>)} spids: [2968] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: {(SQ <'\\(\\(tar\\|gem\\|spkg\\)\\.\\(lzma\\|xz\\)\\|t[lx]z\\)'>)} spids: [2974] ) ] ) ] spids: [2959 2965 2980 -1] ) ] ) ] ) ) (command.ShFunction name: _gtar body: (BraceGroup children: [ (C {<local>} {<long_opts>} {<short_opts>} {<long_arg_none>} {<long_arg_opt>} {<long_arg_req>} {<short_arg_none>} {<short_arg_opt>} {<short_arg_req>} {<tar_mode>} {<tar_mode_arg>} {<Id.Lit_VarLike 'old_opt_progress='> <0>} {<Id.Lit_VarLike 'old_opt_used='> <0>} {<Id.Lit_VarLike 'old_opt_parsed='> (sh_array_literal left:<Id.Op_LParen _>)} ) (C {<local>} {<Id.Lit_VarLike 'tar_mode='> <none>}) (C {<local>} {<Id.Lit_VarLike 'tar_mode_arg='>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$_TAR_OPT_DEBUG'))} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<set>} {<-x>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PS4) op: assign_op.Equal rhs: { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'BASH_SOURCE:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'LINENO: '> ) } spids: [3086] ) ] ) ] spids: [3063 3078] ) ] ) (C {<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>} {<-s>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<__gnu_tar_parse_help>}) (C {<__tar_preparse_cmdline>} { (DQ (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) (C {<local>} {<ext>} {<regex>} {<tar>} {<untar>}) (C {<__tar_detect_ext>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (C {<__tar_adjust_PREV_from_old_option>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_posix_prev_handle>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (C {<__tar_cleanup_prev>}) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{<-C>} {<--directory>}] action: [ (C {<_filedir>} {<-d>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3204 3207 3218 -1] ) (case_arm pat_list: [{<--atime-preserve>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'replace system'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3225] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3221 3222 3252 -1] ) (case_arm pat_list: [{<--group>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-g>} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3259] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3255 3256 3282 -1] ) (case_arm pat_list: [{<--owner>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-u>} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3289] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3285 3286 3312 -1] ) (case_arm pat_list: [ {<-F>} {<--info-script>} {<--new-volume-script>} {<--rmt-command>} {<--rsh-command>} {<-I>} {<--use-compress-program>} ] action: [ (C {<compopt>} {<-o>} {<filenames>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-c>} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3340] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3315 3330 3363 -1] ) (case_arm pat_list: [ {<--volno-file>} {<--add-file>} {<-T>} {<--files-from>} {<-X>} {<--exclude-from>} {<--index-file>} {<--listed-incremental>} {<-g>} ] action: [ (C {<_filedir>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3366 3385 3394 -1] ) (case_arm pat_list: [{<-H>} {<--format>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'gnu oldgnu pax posix ustar v7'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3403] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3397 3400 3432 -1] ) (case_arm pat_list: [{<--quoting-style>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (SQ <'literal shell shell-always c c-maybe\n'> <' escape locale clocale'> ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3439] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3435 3436 3467 -1] ) (case_arm pat_list: [{<--totals>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} {(SQ <'SIGHUP SIGQUIT SIGINT SIGUSR1 SIGUSR2'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3474] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3470 3471 3503 -1] ) (case_arm pat_list: [{<--warning>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<compgen>} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<__gtar_parse_warnings>}) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ) } ] ) } spids: [3510] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3506 3507 3539 -1] ) (case_arm pat_list: [ {<--file>} {<-f>} {<-> (word_part.ExtGlob op: <Id.ExtGlob_Bang '!('> arms: [{<-> <Id.Lit_Other '*'>}] ) <f> } ] action: [ (C {<__tar_file_option>} {(DQ ($ Id.VSub_DollarName '$ext'))}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3542 3552 3565 -1] ) (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ <' '> ($ Id.VSub_DollarName '$long_arg_req') <' '>)} right: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) ($ Id.VSub_DollarName '$prev') <Id.Lit_Other '='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) } ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ <' '> ($ Id.VSub_DollarName '$long_arg_opt') <' '>)} right: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) ($ Id.VSub_DollarName '$prev') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) } ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$split')}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [3568 3570 3658 -1] ) (case_arm pat_list: [ {<-> <Id.Lit_LBracket '['> <a-zA-Z0-9> <Id.Lit_QMark '?'> <Id.Lit_RBracket ']'> } ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$short_arg_req'))} right: { (braced_var_sub token: <Id.VSub_Name prev> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<->} ) ) } ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [3661 3666 3694 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cur'))} arms: [ (case_arm pat_list: [ {<-> <Id.Lit_LBracket '['> <a-zA-Z0-9> <Id.Lit_ArrayLhsClose ']='> <Id.Lit_Star '*'> } ] action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [3714 3719 3729 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_try_mode>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cur'))} arms: [ (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] action: [ (C {<__gtar_complete_lopts>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3765 3767 3776 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (C {<__gtar_complete_sopts>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3779 3781 3794 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {(DQ ($ Id.VSub_DollarName '$cword'))} right: {<1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_try_list_archive>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$tar_mode')} right: {<none>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<_filedir>})] spids: [3839 3852] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Break break>) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$_TAR_OPT_DEBUG'))} right: {<1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<set>} {<Id.Lit_Other '+'> <x>}) (C {<unset>} {<PS4>})] spids: [3872 3887] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: __tar_posix_prev_handle body: (BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$prev'))} arms: [ (case_arm pat_list: [{<-f>}] action: [ (C {<__tar_file_option>} {(DQ ($ Id.VSub_DollarName '$ext'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3929 3930 3945 -1] ) (case_arm pat_list: [{<-b>}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [3948 3949 -1 3957] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: _posix_tar body: (BraceGroup children: [ (C {<local>} {<long_opts>} {<short_opts>} {<basic_tar>} {<long_arg_none>} {<long_arg_opt>} {<long_arg_req>} {<short_arg_none>} {<short_arg_opt>} {<short_arg_req>} {<tar_mode>} {<tar_mode_arg>} {<Id.Lit_VarLike 'old_opt_progress='> <0>} {<Id.Lit_VarLike 'old_opt_used='> <1>} {<Id.Lit_VarLike 'old_opt_parsed='> (sh_array_literal left:<Id.Op_LParen _>)} ) (C {<local>} {<Id.Lit_VarLike 'tar_mode='> <none>}) (C {<local>} {<Id.Lit_VarLike 'tar_mode_arg='>}) (C {<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>} {<-s>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basic_tar) op: assign_op.Equal rhs: {<yes>} spids: [4065] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: {<none>} spids: [4069] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_arg_req) op: assign_op.Equal rhs: {(DQ <fb>)} spids: [4082] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_arg_none) op: assign_op.Equal rhs: {(DQ <wmv>)} spids: [4088] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_opts) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$short_arg_req') ($ Id.VSub_DollarName '$short_arg_none') ) } spids: [4094] ) ] ) (C {<__tar_preparse_cmdline>} { (DQ (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) (C {<local>} {<ext>} {<regex>} {<tar>} {<untar>}) (C {<__tar_detect_ext>}) (C {<__tar_adjust_PREV_from_old_option>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_posix_prev_handle>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_try_mode>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<__tar_try_list_archive>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_filedir>}) ] ) ) (command.ShFunction name: _tar body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'cmd='> (braced_var_sub token: <Id.VSub_Name COMP_WORDS> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) ) } {<output>} {<line>} ) (command.Simple words: [{<read>} {<line>}] redirects: [ (redir op: <Id.Redir_TLess '<<<'> loc: (redir_loc.Fd fd:0) arg: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName '$cmd')} {<--version>}) ) ) } ) ] do_fork: T ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$line'))} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <GNU> <Id.Lit_Star '*'>}] action: [(C {<_gtar>} {(DQ ($ Id.VSub_At '$@'))})] spids: [4216 4219 4229 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<_posix_tar>} {(DQ ($ Id.VSub_At '$@'))})] spids: [4232 4233 4243 -1] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name COMP_TAR_INTERNAL_PATHS> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<complete>} {<-F>} {<_tar>} {<-o>} {<dirnames>} {<tar>}) (C {<complete>} {<-F>} {<_gtar>} {<-o>} {<dirnames>} {<gtar>}) (C {<complete>} {<-F>} {<_posix_tar>} {<-o>} {<dirnames>} {<bsdtar>}) (C {<complete>} {<-F>} {<_posix_tar>} {<-o>} {<dirnames>} {<star>}) ] spids: [4252 4268] ) ] else_action: [ (C {<complete>} {<-F>} {<_tar>} {<tar>}) (C {<complete>} {<-F>} {<_gtar>} {<gtar>}) (C {<complete>} {<-F>} {<_posix_tar>} {<bsdtar>}) (C {<complete>} {<-F>} {<_posix_tar>} {<star>}) ] ) ] )