(command.CommandList children: [ (command.ShFunction name: __gtar_parse_help_opt body: (command.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: (Token id:Id.Lit_EscapedChar val:'\\?' span_id:179) ) } ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:183) ) ] 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: (Token id:Id.VSub_Name val:opt span_id:199) suffix_op: (suffix_op.Unary op_id: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.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:217) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:226) 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: (Token id:Id.VSub_Name val:opt span_id:244) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\[' span_id:247) ) ('*') } 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: (Token id:Id.VSub_Name val:opt span_id:255) 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: (Token id:Id.VSub_Name val:opt span_id:271) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:274) ) ('*') } 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: (Token id:Id.VSub_Name val:opt span_id:282) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:"\\'" span_id:285) ) ('*') } 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: (Token id:Id.VSub_Name val:opt span_id:293) suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\;' span_id:296) ) ('*') } 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 (Token id:Id.Lit_Chars val:_arg_ span_id:306)) ($ Id.VSub_DollarName '$arg') } spids: [303] ) ] ) (C {(eval)} { (DQ ($ Id.VSub_DollarName '$optvar') ('=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:317) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:318)) ($ Id.VSub_DollarName '$optvar') ($ Id.VSub_DollarName '$separator') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:321) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:322)) ($ Id.VSub_DollarName '$opt') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:324)) ) } ) ] ) ) (command.ShFunction name: __gtar_parse_help_line body: (command.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: (Token id:Id.ControlFlow_Break val:break span_id:400) ) terminator: (Token id:Id.Op_Semi val:';' span_id:401) ) ] spids: [396 397 -1 404] ) ] ) ] ) ) ] ) ) (command.ShFunction name: __gnu_tar_parse_help body: (command.BraceGroup children: [ (C {(local)} {(str)} {(line)} {(arg)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:429) cond: [ (command.Sentence child: (command.Simple words: [{(read)} {(line)}] more_env: [(env_pair name:IFS val:(word.Empty) spids:[431])] ) terminator: (Token id:Id.Op_Semi val:';' span_id:436) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:529) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_REMATCH span_id:537) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(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: (Token id:Id.VSub_Name val:line span_id:547) 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: [ (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: (Token id:Id.Op_Semi val:';' span_id:600) ) ] 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: (Token id: Id.VSub_Name val: BASH_REMATCH span_id: 611 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(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.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:651) fd: -1 arg_word: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:653) command_list: (command.CommandList children:[(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: (command.BraceGroup children: [ (C {(local)} {(line)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:703) cond: [ (command.Sentence child: (command.Simple words: [{(read)} {(line)}] more_env: [(env_pair name:IFS val:(word.Empty) spids:[705])] ) terminator: (Token id:Id.Op_Semi val:';' span_id:710) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (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:(Token id:Id.Lit_EscapedChar val:'\\`' span_id:742)) (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: "\\'" span_id: 743 ) ) (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:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:751)) (Id.Lit_Other '$') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:755) ) ] action: [ (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_REMATCH span_id:764) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) (' no-') (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_REMATCH span_id:771) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } ) ] spids: [715 757] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:784) fd: -1 arg_word: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:786) command_list: (command.CommandList children: [ (command.Simple words: [{(tar)} {(--warning) (Id.Lit_Equals '=')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:795) fd: 2 arg_word: {(1)} ) ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[787])] ) ] ) ) ) } ) ] ) ] ) ) (command.ShFunction name: __tar_last_char body: (command.BraceGroup children: [ (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:818) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:825) prefix_op: (Id.VSub_Pound) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) ) ) ) } ) ] ) ) (command.ShFunction name: __tar_parse_old_opt body: (command.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: (Token id:Id.VSub_Name val:cur span_id:881) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) } right: {(SQ (Token id:Id.Lit_Chars val:- span_id:892))} ) ) ) ) (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: (Token id:Id.VSub_Name val:words span_id:912) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(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: (Token id:Id.VSub_Name val:first_word span_id:931) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(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: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$old_opt_used')} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:975) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:char) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:first_word span_id:982) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [980] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:990) cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$char'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1001) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(__tar_is_argreq)} {(DQ ($ Id.VSub_DollarName '$char'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1013) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_opt_parsed) op: assign_op.PlusEqual rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:1019) 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: (Token id:Id.VSub_Name val:first_word span_id:1031) suffix_op: (suffix_op.Unary op_id: 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: (Token id:Id.VSub_Name val:first_word span_id:1039) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [1037] ) ] ) ] ) ) ] spids: [964 977] ) ] ) ] ) ) (command.ShFunction name: __tar_preparse_cmdline body: (command.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: (Token id:Id.VSub_Name val:i span_id:1129) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) length: (arith_expr.ArithWord w:{(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: (Token id:Id.ControlFlow_Break val:break span_id:1141) ) ] 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: (Token id:Id.VSub_Name val:i span_id:1170) 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: (Token id:Id.VSub_Name val:tar_mode span_id:1182) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(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: (Token id:Id.ControlFlow_Break val:break span_id:1194) ) ] 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: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$first_arg')} right: {(1)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1223) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tar_mode) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:i span_id:1230) 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: (Token id: Id.VSub_Name val: tar_mode span_id: 1242 ) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w: {(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: (command.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: (command.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: (Token id:Id.VSub_Name val:opt span_id:1385) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{(-)}) ) } ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1394) 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: (Token id:Id.ControlFlow_Return val:return span_id:1425) 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: (Token id:Id.ControlFlow_Return val:return span_id:1467) arg_word: {(0)} ) ] ) ] spids: [1433 1435 1472 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1479) arg_word: {(1)} ) ] ) ) (command.ShFunction name: __tar_complete_mode body: (command.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: (Token id:Id.VSub_Name val:cur span_id:1552) suffix_op: (suffix_op.Unary op_id: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: (Token id:Id.VSub_Name val:short_opts span_id:1565) suffix_op: (suffix_op.PatSub pat: {('[- ]')} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1563] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {(none)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1591) ) ] 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: [ (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: (Token id:Id.Op_Semi val:';' span_id:1623) ) ] 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: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (C {(local)} {(Id.Lit_VarLike 'c=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:short_modes span_id:1669) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')}) length: (arith_expr.ArithWord w:{(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: (Token id:Id.ControlFlow_Break val:break span_id:1690) ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:1707) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1709 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$generated'))} ) ] ) ) } ] ) } spids: [1706] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1723) arg_word: {(0)} ) ] spids: [1578 1593] ) ] ) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Left_DollarParen val:'$(' span_id:1761) command_list: (command.CommandList children: [ (C {(__tar_last_char)} {(DQ ($ Id.VSub_DollarName '$cur'))}) ] ) ) ) } ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1769) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:1775) words: [{(DQ ($ Id.VSub_DollarName '$cur'))}] ) } spids: [1774] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1785) 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: (Token id:Id.VSub_Name val:allshort_raw span_id:1796) suffix_op: (suffix_op.PatSub pat: {('[') ($ Id.VSub_DollarName '$rawopt') (']')} replace: {} replace_mode: Id.Lit_Slash ) ) } spids: [1794] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {(DQ ($ Id.VSub_DollarName '$tar_mode'))} right: {(none)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1819) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:allshort_raw_unused) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:allshort_raw_unused span_id:1826) 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: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children: [ (C {(local)} {(Id.Lit_VarLike 'c=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:allshort_raw_unused span_id:1870) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')}) length: (arith_expr.ArithWord w:{(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: (Token id:Id.ControlFlow_Break val:break span_id:1891) ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:1907) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1909) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$generated'))}) ] ) ) } ] ) } spids: [1906] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1925) arg_word: {(0)} ) ] ) ) (command.ShFunction name: __gtar_complete_lopts body: (command.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: (Token id:Id.Op_LParen val:'(' span_id:1946) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1948) command_list: (command.CommandList children: [ (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: (Token id:Id.ControlFlow_Return val:return span_id:1993) arg_word: {($ Id.VSub_DollarName '$rv')} ) ] ) ) (command.ShFunction name: __gtar_complete_sopts body: (command.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: (Token id:Id.VSub_Name val:short_opts span_id:2027) 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: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name: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: (Token id:Id.VSub_Name val:allshort_raw_unused span_id:2064) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')}) length: (arith_expr.ArithWord w:{(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: (Token id:Id.ControlFlow_Break val:break span_id:2085) ) ] ) (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: (Token id:Id.Op_LParen val:'(' span_id:2101) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2103) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$generated'))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [2100] ) ] ) ] ) ) (command.ShFunction name: __tar_try_mode body: (command.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: (Token id:Id.ControlFlow_Return val:return span_id:2164) arg_word: {(0)} ) ] ) (C {(__gtar_complete_lopts)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2172) 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: (Token id:Id.ControlFlow_Return val:return span_id:2202) arg_word: {(0)} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_complete_mode)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2212) arg_word: {(0)} ) ] ) ] spids: [2181 2183 2217 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:2248) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_complete_mode)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2257) arg_word: {(0)} ) ] ) ] spids: [2225 2250] ) ] ) ] spids: [2221 2222 2265 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2271) arg_word: {(1)} ) ] ) ) (command.ShFunction name: __tar_adjust_PREV_from_old_option body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (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: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id: Id.VSub_Name val: old_opt_parsed span_id: 2334 ) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) } ) ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2348) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (DQ (-) (braced_var_sub token: (Token id:Id.VSub_Name val:old_opt_parsed span_id:2362) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$cword')} ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) ) ) } spids: [2358] ) ] ) ] spids: [2298 2351] ) ] ) ] ) ) (command.ShFunction name: __tar_extract_like_mode body: (command.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: (Token id:Id.ControlFlow_Return val:return span_id:2428) arg_word: {(0)} ) ] ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2436) arg_word: {(1)} ) ] ) ) (command.ShFunction name: __tar_try_list_archive body: (command.BraceGroup children: [ (C {(local)} {(tarball)} {(tarbin)} {(untar)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(__tar_extract_like_mode)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2465) arg_word: {(1)} ) ] ) (C {(Id.KW_Set set)} {(--)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:2486) 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.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:2512) fd: -1 arg_word: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2514) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} {(--)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2520))} {(DQ ($ Id.VSub_At '$@'))} ) (C {(sed)} {(-n)} { (DQ ('/^.') (Id.Lit_Other '\\') ('{1,') (Id.Lit_Other '\\') ('}') ($ Id.VSub_DollarName '$regex') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:2542)) (/p) ) } ) (C {(tee)} {(/tmp/jetel)}) ] negated: F ) ] ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$tarball'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:2566) ) ] action: [ (C {(local)} {(Id.Lit_VarLike 'IFS=') (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:2574) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:2575)] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:2580) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2581 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-o)} {(filenames)} {(-W)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2591 ) command_list: (command.CommandList children: [ (command.WhileUntil keyword: (Token id: Id.KW_While val: while span_id: 2594 ) cond: [ (command.Sentence child: (C {(read)} {(line)}) terminator: (Token id: Id.Op_Semi val: ';' span_id: 2599 ) ) ] body: (command.DoGroup children: [ (C {(printf)} { (DQ ('%q') (Id.Lit_Other '\\') (n) ) } { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2613 ) command_list: (command.CommandList children: [ (C {(printf)} { (Id.Lit_Other '%' ) (q) (DQ (Id.Lit_Other '\\') (n)) } {(DQ ($ Id.VSub_DollarName '$line'))} ) ] ) ) ) } ) ] ) redirects: [ (redir.Redir op: (Token id: Id.Redir_TLess val: '<<<' span_id: 2632 ) fd: -1 arg_word: { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2634 ) command_list: (command.CommandList children: [ (command.Simple words: [ { ($ Id.VSub_DollarName '$tarbin' ) } { ($ Id.VSub_DollarName '$untar' ) } { (DQ ($ Id.VSub_DollarName '$tarball' ) ) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 2643 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) ) } ) ] ) ] ) ) ) } {(--)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2655 ) command_list: (command.CommandList children: [ (C {(printf)} {(DQ ('%q') (Id.Lit_Other '\\') (n))} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) ) } ) ] ) ) } ] ) } spids: [2579] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2673) arg_word: {(0)} ) ] spids: [2555 2568] ) ] ) ] ) ) (command.ShFunction name: __tar_cleanup_prev body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:2710) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prev) op: assign_op.Equal rhs: { (DQ (-) (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2722) command_list: (command.CommandList children: [ (C {(__tar_last_char)} {(DQ ($ Id.VSub_DollarName '$prev'))}) ] ) ) ) } spids: [2719] ) ] ) ] spids: [2690 2712] ) ] ) ] ) ) (command.ShFunction name: __tar_detect_ext body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'tars=') (SQ (Token id: Id.Lit_Chars val: '@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))' span_id: 2748 ) ) } ) (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 (Token id: Id.Lit_Chars val: '\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)' span_id: 2760 ) ) } 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: (Token id:Id.ExtGlob_QMark val:'?(' span_id:2786) 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 (Token id:Id.Lit_Chars val:'@(tar|gem|spkg)' span_id:2800))} spids: [2798] ) ] ) (command.Case to_match: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:2807) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(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 (Token id:Id.Lit_Chars val:'t?(ar.)gz' span_id:2836))} 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 (Token id:Id.Lit_Chars val:'ta@(r.Z|z)' span_id:2849))} 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 (Token id: Id.Lit_Chars val: 't@(?(ar.)bz?(2)|b2)' span_id: 2864 ) ) } 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 (Token id:Id.Lit_Chars val:'t?(ar.)xz' span_id:2877))} spids: [2875] ) ] ) ] spids: [2870 2873 2880 -1] ) ] ) ] spids: [2786 2795 2886 -1] ) (case_arm pat_list: [ { (word_part.ExtGlob op: (Token id:Id.ExtGlob_Plus val:'+(' span_id:2889) 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 (Token id: Id.Lit_Chars val: '\\(\\(tar\\|gem\\|spkg\\)\\(\\.\\(Z\\|[bgx]z\\|bz2\\|lz\\(ma\\)\\?\\)\\)\\?\\|t\\([abglx]z\\|bz\\?2\\)\\)' span_id: 2904 ) ) } 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 (Token id: Id.Lit_Chars val: '@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)' span_id: 2922 ) ) } spids: [2920] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: '\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\|spkg\\.\\)\\(gz\\|Z\\)\\|taz\\)' span_id: 2928 ) ) } 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 (Token id: Id.Lit_Chars val: '@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)' span_id: 2946 ) ) } spids: [2944] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: '\\(\\(t\\(ar\\.\\)\\?\\|gem\\.\\)bz2\\?\\|spkg\\|tb2\\)' span_id: 2952 ) ) } 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 (Token id: Id.Lit_Chars val: '@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)' span_id: 2970 ) ) } spids: [2968] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:regex) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: '\\(\\(tar\\|gem\\|spkg\\)\\.\\(lzma\\|xz\\)\\|t[lx]z\\)' span_id: 2976 ) ) } spids: [2974] ) ] ) ] spids: [2959 2965 2980 -1] ) ] ) ] ) ) (command.ShFunction name: _gtar body: (command.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:(Token id:Id.Op_LParen val:'(' span_id:3033)) } ) (C {(local)} {(Id.Lit_VarLike 'tar_mode=') (none)}) (C {(local)} {(Id.Lit_VarLike 'tar_mode_arg=')}) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:3076) ) ] action: [ (C {(Id.KW_Set set)} {(-x)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PS4) op: assign_op.Equal rhs: { (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3088) ) ('BASH_SOURCE:') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3090)) ('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: (Token id:Id.ControlFlow_Return val:return span_id:3119) ) ] ) (C {(__gnu_tar_parse_help)}) (C {(__tar_preparse_cmdline)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:3135) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) (C {(local)} {(ext)} {(regex)} {(tar)} {(untar)}) (C {(__tar_detect_ext)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:3160) cond: [ (command.Sentence child: (C {(true)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3163) ) ] 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: (Token id:Id.ControlFlow_Break val:break span_id:3178) ) ] ) (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: (Token id:Id.ControlFlow_Break val:break span_id:3215) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3226) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3228 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'replace system' span_id: 3235 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3225] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3249) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3260) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3262 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-g)} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3259] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3279) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3290) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3292 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-u)} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3289] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3309) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3341) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3343 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-c)} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3340] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3360) ) ] 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: (Token id:Id.ControlFlow_Break val:break span_id:3391) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3404) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3406 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'gnu oldgnu pax posix ustar v7' span_id: 3413 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3403] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3429) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3440) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3442 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'literal shell shell-always c c-maybe\n' span_id: 3449 ) (Token id:Id.Lit_Chars val:' escape locale clocale' span_id:3450) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3439] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3464) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3475) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3477 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'SIGHUP SIGQUIT SIGINT SIGUSR1 SIGUSR2' span_id: 3484 ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3474] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3500) ) ] 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: (Token id:Id.Op_LParen val:'(' span_id:3511) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3513 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 3520 ) command_list: (command.CommandList children: [ (C {(__gtar_parse_warnings)}) ] ) ) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [3510] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3536) ) ] spids: [3506 3507 3539 -1] ) (case_arm pat_list: [ {(--file)} {(-f)} {(-) (word_part.ExtGlob op: (Token id:Id.ExtGlob_Bang val:'!(' span_id:3547) arms: [{(-) (Id.Lit_Other '*')}] ) (f) } ] action: [ (C {(__tar_file_option)} {(DQ ($ Id.VSub_DollarName '$ext'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3562) ) ] 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: (Token id: Id.Lit_EscapedChar val: '\\ ' span_id: 3587 ) ) ($ Id.VSub_DollarName '$prev') (Id.Lit_Other '=') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\ ' span_id: 3590 ) ) } ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3596) ) ] ) (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: (Token id: Id.Lit_EscapedChar val: '\\ ' span_id: 3618 ) ) ($ Id.VSub_DollarName '$prev') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\ ' span_id: 3620 ) ) } ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3626) ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$split')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3646) ) ] ) ] 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: (Token id:Id.VSub_Name val:prev span_id:3682) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {(-)} ) ) } ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3691) ) ] ) ] 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: (Token id:Id.ControlFlow_Break val:break span_id:3726) ) ] spids: [3714 3719 3729 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_try_mode)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3748) ) ] ) (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: (Token id:Id.ControlFlow_Break val:break span_id:3773) ) ] spids: [3765 3767 3776 -1] ) (case_arm pat_list: [{(-) (Id.Lit_Star '*')}] action: [ (C {(__gtar_complete_sopts)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3791) ) ] 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: (Token id:Id.ControlFlow_Break val:break span_id:3823) ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_try_list_archive)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3831) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName '$tar_mode')} right: {(none)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:3850) ) ] action: [(C {(_filedir)})] spids: [3839 3852] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:3862) ) ] ) ) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:3885) ) ] action: [(C {(Id.KW_Set set)} {(Id.Lit_Other '+') (x)}) (C {(unset)} {(PS4)})] spids: [3872 3887] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3905) arg_word: {(0)} ) ] ) ) (command.ShFunction name: __tar_posix_prev_handle body: (command.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: (Token id:Id.ControlFlow_Return val:return span_id:3940) arg_word: {(0)} ) ] spids: [3929 3930 3945 -1] ) (case_arm pat_list: [{(-b)}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3952) arg_word: {(0)} ) ] spids: [3948 3949 -1 3957] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3961) arg_word: {(1)} ) ] ) ) (command.ShFunction name: _posix_tar body: (command.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:(Token id:Id.Op_LParen val:'(' span_id:4015)) } ) (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: (Token id:Id.ControlFlow_Return val:return span_id:4061) ) ] ) (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: (Token id:Id.VSub_Name val:words span_id:4106) 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: (Token id:Id.ControlFlow_Return val:return span_id:4139) arg_word: {(0)} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_try_mode)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4149) ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(__tar_try_list_archive)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4157) ) ] ) (C {(_filedir)}) ] ) ) (command.ShFunction name: _tar body: (command.BraceGroup children: [ (C {(local)} {(Id.Lit_VarLike 'cmd=') (braced_var_sub token: (Token id:Id.VSub_Name val:COMP_WORDS span_id:4182) bracket_op: (bracket_op.ArrayIndex expr:(arith_expr.ArithWord w:{(Id.Lit_Digits 0)})) ) } {(output)} {(line)} ) (command.Simple words: [{(read)} {(line)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:4197) fd: -1 arg_word: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4199) command_list: (command.CommandList children: [(C {($ Id.VSub_DollarName '$cmd')} {(--version)})] ) ) ) } ) ] ) (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: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:COMP_TAR_INTERNAL_PATHS span_id:4260) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4266) ) ] 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)}) ] ) ] )