(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ME_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ (./) ($ VSub_Number '$0'))} {(Lit_Other ':')} {(SQ <'.*/\\(.*\\)$'>)} ) ] ) left_token: <Left_Backtick '`'> spids: [164 177] ) } spids: [163] ) ] spids: [163] ) (FuncDef name: Exit body: (BraceGroup children: [ (Sentence child:(C {(set)} {(Lit_Other '+') (e)}) terminator:<Op_Semi ';'>) (Sentence child: (Subshell child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Number '$1')}) spids: [208 212] ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Number '$1')}) terminator: <Op_Semi ';'> ) ] spids: [200] ) spids: [195 199] ) (C {(Lit_Other ':')} { (BracedVarSub token: <VSub_Name stderr_fileno_> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(2)}) spids: [243 247] ) } ) (FuncDef name: warn_ body: (BraceGroup children: [ (Case to_match: {($ VSub_Name '$IFS')} arms: [ (case_arm pat_list: [{(SQ <' '>) (Lit_Other '*')}] action: [ (SimpleCommand words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Star '$*'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[297])] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {($ VSub_Name '$stderr_fileno_')} {(Lit_Other '=')} {(2)}) (BraceGroup children: [ (Sentence child: (Pipeline children: [ (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Star '$*'))}) (SimpleCommand words: [{(sed)} {(1q)}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {($ VSub_Name '$stderr_fileno_')} spids: [331] ) ] ) ] negated: F ) terminator: <Op_Semi ';'> ) ] spids: [313] ) ] ) ] spids: [282 285 338 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Subshell child: (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(SQ <' '>)} spids: [345] ) ] spids: [345] ) terminator: <Op_Semi ';'> ) (C {(warn_)} {(DQ ($ VSub_At '$@'))}) ] ) spids: [344 356] ) ] spids: [341 342 357 16777215] ) ] spids: [274 278 360] ) ] spids: [267] ) spids: [262 266] ) (FuncDef name: fail_ body: (BraceGroup children: [ (Sentence child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': failed test: ') ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (Sentence child:(C {(Exit)} {(1)}) terminator:<Op_Semi ';'>) ] spids: [369] ) spids: [364 368] ) (FuncDef name: skip_ body: (BraceGroup children: [ (Sentence child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': skipped test: ') ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (Sentence child:(C {(Exit)} {(77)}) terminator:<Op_Semi ';'>) ] spids: [392] ) spids: [387 391] ) (FuncDef name: fatal_ body: (BraceGroup children: [ (Sentence child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': hard error: ') ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (Sentence child:(C {(Exit)} {(99)}) terminator:<Op_Semi ';'>) ] spids: [415] ) spids: [410 414] ) (FuncDef name: framework_failure_ body: (BraceGroup children: [ (Sentence child: (C {(warn_)} {(DQ ($ VSub_Name '$ME_') (': set-up failure: ') ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (Sentence child:(C {(Exit)} {(99)}) terminator:<Op_Semi ';'>) ] spids: [438] ) spids: [433 437] ) (FuncDef name: returns_ body: (BraceGroup children: [ (BraceGroup children: [(Sentence child:(C {(set)} {(Lit_Other '+') (x)}) terminator:<Op_Semi ';'>)] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[497])] spids: [487] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:exp_exit) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [504] ) ] spids: [502] ) (C {(shift)}) (C {(DQ ($ VSub_At '$@'))}) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(test)} {($ VSub_QMark '$?')} {(-eq)} {($ VSub_Name '$exp_exit')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ret_) op:Equal rhs:{(0)} spids:[528])] spids: [528] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ret_) op:Equal rhs:{(1)} spids:[533])] spids: [533] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other '=')} {(yes)}) (C {(test)} {(DQ ($ VSub_Name '$gl_set_x_corrupts_stderr_'))} {(Lit_Other '=')} {(false)} ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(set)} {(-x)})] spids: [16777215 563] ) ] spids: [16777215 571] ) (BraceGroup children: [ (Sentence child: (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$ret_')} ) terminator: <Op_Semi ';'> ) ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[583])] spids: [574] ) ] spids: [480] ) spids: [475 479] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DUALCASE) op:Equal rhs:{(1)} spids:[592])] spids: [592] ) terminator: <Op_Semi ';'> ) (C {(export)} {(DUALCASE)}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} { (DQ (BracedVarSub token: <VSub_Name ZSH_VERSION> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(set)}) spids: [607 611] ) ) } ) (Subshell child: (C {(emulate)} {(sh)}) redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [622] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [625] ) ] spids: [616 620] ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(emulate)} {(sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NULLCMD) op: Equal rhs: {(Lit_Other ':')} spids: [637] ) ] spids: [637] ) (C {(alias)} {(-g)} {(SQ <'${1+"$@"}'>) (Lit_Other '=') (SQ <'"$@"'>)}) (C {(setopt)} {(NO_GLOB_SUBST)}) ] spids: [16777215 629] ) ] else_action: [ (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (Subshell child: (C {(set)} {(-o)}) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[670])] spids: [664 668] ) ] ) left_token: <Left_Backtick '`'> spids: [663 672] ) } arms: [ (case_arm pat_list: [{(Lit_Other '*') (posix) (Lit_Other '*')}] action: [(C {(set)} {(-o)} {(posix)})] spids: [677 680 688 16777215] ) ] spids: [661 674 691] ) ] spids: [658 693] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_shell_test_script_) op: Equal rhs: { (SQ <'\n'> <'test $(echo y) = y || exit 1\n'> <'f_local_() { local v=1; }; f_local_ || exit 1\n'> <'score_=10\n'> <'if test "$VERBOSE" = yes; then\n'> <' test -n "$( (exec 3>&1; set -x; P=1 true 2>&3) 2> /dev/null)" && score_=9\n'> <'fi\n'> <'test -z "$EXEEXT" && exit $score_\n'> <'shopt -s expand_aliases\n'> <'alias a-b="echo zoo"\n'> <'v=abx\n'> <' test ${v%x} = ab \\\n'> <' && test ${v#a} = bx \\\n'> <' && test $(a-b) = zoo \\\n'> <' && exit $score_\n'> ) } spids: [757] ) ] spids: [757] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (x--no-reexec))}) terminator: <Op_Semi ';'> ) ] action: [(C {(shift)})] spids: [16777215 793] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_set_x_corrupts_stderr_) op: Equal rhs: {(false)} spids: [805] ) ] spids: [805] ) (C {(export)} {(gl_set_x_corrupts_stderr_)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:marginal_) op:Equal rhs:{(EmptyPart)} spids:[819])] spids: [819] ) (ForEach iter_name: re_shell_ iter_words: [ {(__current__)} { (DQ (BracedVarSub token: <VSub_Name CONFIG_SHELL> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(no_shell)}) spids: [836 840] ) ) } {(/bin/sh)} {(bash)} {(dash)} {(zsh)} {(pdksh)} {(fail)} ] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} {(no_shell)}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} {(fail)}) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$marginal_'))}) (C {(skip_)} {(failed)} {(to)} {(find)} {(an)} {(adequate)} {(shell)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:re_shell_) op: Equal rhs: {($ VSub_Name '$marginal_')} spids: [926] ) ] spids: [926] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 898] ) ] spids: [16777215 933] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(Lit_Other '=')} {(__current__)} ) terminator: <Op_Semi ';'> ) ] action: [ (Subshell child: (C {(eval)} {(DQ ($ VSub_Name '$gl_shell_test_script_'))}) redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [983] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [987] ) ] spids: [973 981] ) ] spids: [16777215 958] ) ] else_action: [ (SimpleCommand words: [ {(DQ ($ VSub_Name '$re_shell_'))} {(-c)} {(DQ ($ VSub_Name '$gl_shell_test_script_'))} ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1004])] ) ] spids: [991 1008] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:st_) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1012] ) ] spids: [1012] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name '$st_')} {(Lit_Other '=')} {(10)}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_set_x_corrupts_stderr_) op: Equal rhs: {(false)} spids: [1035] ) ] spids: [1035] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 1032] ) ] spids: [16777215 1042] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$st_') (':') ($ VSub_Name '$marginal_'))} {(Lit_Other '=')} {(9) (Lit_Other ':')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:marginal_) op: Equal rhs: {(DQ ($ VSub_Name '$re_shell_'))} spids: [1070] ) ] spids: [1070] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_set_x_corrupts_stderr_) op: Equal rhs: {(true)} spids: [1076] ) ] spids: [1076] ) ] spids: [16777215 1067] ) ] spids: [16777215 1080] ) ] spids: [858 1083] ) spids: [832 16777215] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$re_shell_'))} {(KW_Bang '!') (Lit_Other '=')} {(__current__)} ) terminator: <Op_Semi ';'> ) ] action: [ (Case to_match: {($ VSub_Hyphen '$-')} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (v) (Lit_Other '*') (x) (Lit_Other '*')} {(Lit_Other '*') (x) (Lit_Other '*') (v) (Lit_Other '*')} ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts_) op: Equal rhs: {(-vx)} spids: [1130] ) ] spids: [1130] ) ] spids: [1115 1128 1133 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (v) (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts_) op: Equal rhs: {(-v)} spids: [1141] ) ] spids: [1141] ) ] spids: [1136 1139 1144 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (x) (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts_) op: Equal rhs: {(-x)} spids: [1152] ) ] spids: [1152] ) ] spids: [1147 1150 1155 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts_) op: Equal rhs: {(EmptyPart)} spids: [1161] ) ] spids: [1161] ) ] spids: [1158 1159 1163 16777215] ) ] spids: [1108 1112 1166] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:re_shell) op: Equal rhs: {($ VSub_Name '$re_shell_')} spids: [1169] ) ] spids: [1169] ) (C {(export)} {(re_shell)}) (C {(exec)} {(DQ ($ VSub_Name '$re_shell_'))} {($ VSub_Name '$opts_')} {(DQ ($ VSub_Number '$0'))} {(--no-reexec)} {(DQ ($ VSub_At '$@'))} ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$ME_') (': exec failed'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[1204])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(127)}) ] spids: [16777215 1101] ) ] spids: [16777215 1213] ) ] spids: [798 1215] ) (AndOr ops: [Op_DAmp] children: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$BASH_VERSION'))}) (C {(unalias)} {(-a)})] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$EXEEXT'))}) (C {(shopt)} {(-s)} {(expand_aliases)}) ] ) (C {(Lit_Other ':')} { (BracedVarSub token: <VSub_Name MALLOC_PERTURB_> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(87)}) spids: [1282 1286] ) } ) (C {(export)} {(MALLOC_PERTURB_)}) (FuncDef name: cleanup_ body: (BraceGroup children: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] spids: [1307] ) spids: [1302 1306] ) (FuncDef name: emit_diff_u_header_ body: (BraceGroup children: [ (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ('diff -u ') ($ VSub_Star '$*'))} {(DQ ('--- ') ($ VSub_Number '$1') ('\t1970-01-01'))} {(DQ ('+++ ') ($ VSub_Number '$2') ('\t1970-01-01'))} ) ] spids: [1326] ) spids: [1321 1325] ) (FuncDef name: compare_dev_null_ body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(2)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(x/dev/null)}) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Number '$2'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (Sentence child: (C {(emit_diff_u_header_)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (C {(sed)} {(SQ <'s/^/+/'>)} {(DQ ($ VSub_Number '$2'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 1415] ) ] spids: [16777215 1456] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ (x) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(x/dev/null)}) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (Sentence child: (C {(emit_diff_u_header_)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (C {(sed)} {(SQ <'s/^/-/'>)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 1474] ) ] spids: [16777215 1515] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] spids: [1382] ) spids: [1377 1381] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:diff_out_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (SimpleCommand words: [{(exec)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1532] ) ] ) terminator: <Op_Semi ';'> ) (SimpleCommand words: [ {(diff)} {(-u)} {(DQ ($ VSub_Number '$0'))} {(DQ ($ VSub_Number '$0'))} ] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(/dev/null)} spids: [1548] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [1529 1551] ) } spids: [1528] ) ] spids: [1528] ) (Pipeline children: [ (SimpleCommand words: [{(diff)} {(-u)} {(Makefile)} {(DQ ($ VSub_Number '$0'))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1567] ) ] ) (SimpleCommand words: [{(grep)} {(SQ <'^[+]#!'>)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [1578] ) ] ) ] negated: F ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$diff_out_'))}) terminator: <Op_Semi ';'> ) ] action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (Sentence child: (C {(diff)} {(-u)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) ] spids: [1612] ) spids: [1607 1611] ) ] spids: [16777215 1604] ) ] else_action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(diff)} {(-u)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(diff.out)} spids: [1648] ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})] spids: [16777215 1653] ) ] else_action: [ (C {(cat)} {(diff.out)}) (C {(rm)} {(-f)} {(diff.out)}) (C {(false)}) ] spids: [1674 1692] ) ] spids: [1635] ) spids: [1629 1633] ) ] spids: [1626 1698] ) ] spids: [16777215 1582] ) (if_arm cond: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:diff_out_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (SimpleCommand words: [{(exec)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1706] ) ] ) terminator: <Op_Semi ';'> ) (SimpleCommand words: [ {(diff)} {(-c)} {(DQ ($ VSub_Number '$0'))} {(DQ ($ VSub_Number '$0'))} ] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(/dev/null)} spids: [1722] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [1703 1725] ) } spids: [1702] ) ] spids: [1702] ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$diff_out_'))}) terminator: <Op_Semi ';'> ) ] action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (Sentence child: (C {(diff)} {(-c)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) ] spids: [1750] ) spids: [1745 1749] ) ] spids: [16777215 1742] ) ] else_action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(diff)} {(-c)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(diff.out)} spids: [1786] ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})] spids: [16777215 1791] ) ] else_action: [ (C {(cat)} {(diff.out)}) (C {(rm)} {(-f)} {(diff.out)}) (C {(false)}) ] spids: [1816 1834] ) ] spids: [1773] ) spids: [1767 1771] ) ] spids: [1764 1840] ) ] spids: [1700 1728] ) (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(cmp)} {(-s)} {(/dev/null)} {(/dev/null)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1852])] ) terminator: <Op_Semi ';'> ) ] action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (Sentence child: (C {(cmp)} {(-s)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) ] spids: [1864] ) spids: [1859 1863] ) ] spids: [1842 1856] ) ] else_action: [ (FuncDef name: compare_ body: (BraceGroup children: [(Sentence child:(C {(cmp)} {(DQ ($ VSub_At '$@'))}) terminator:<Op_Semi ';'>)] spids: [1885] ) spids: [1880 1884] ) ] spids: [1877 1896] ) (FuncDef name: compare body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(compare_dev_null_)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1940] ) ] else_action: [ (Case to_match: {($ VSub_QMark '$?')} arms: [ (case_arm pat_list: [{(1)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1958 1959 1964 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(compare_)} {(DQ ($ VSub_At '$@'))})] spids: [1967 1968 1975 16777215] ) ] spids: [1951 1955 1978] ) ] spids: [1948 1981] ) ] spids: [1916] ) spids: [1911 1915] ) (FuncDef name: testdir_prefix_ body: (BraceGroup children: [(Sentence child:(C {(printf)} {(gt)}) terminator:<Op_Semi ';'>)] spids: [1994] ) spids: [1989 1993] ) (FuncDef name: remove_tmp_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:__st) op: Equal rhs: {($ VSub_QMark '$?')} spids: [2018] ) ] spids: [2018] ) (C {(cleanup_)}) (AndOr ops: [Op_DPipe Op_DPipe] children: [ (C {(cd)} {(DQ ($ VSub_Name '$initial_cwd_'))}) (C {(cd)} {(/)}) (C {(cd)} {(/tmp)}) ] ) (C {(chmod)} {(-R)} {(u) (Lit_Other '+') (rwx)} {(DQ ($ VSub_Name '$test_dir_'))}) (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$test_dir_'))}) (BraceGroup children: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$__st')} {(Lit_Other '=')} {(0)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:__st) op: Equal rhs: {(1)} spids: [2087] ) ] spids: [2087] ) ] ) terminator: <Op_Semi ';'> ) ] spids: [2075] ) ] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$__st')}) ] spids: [2015] ) spids: [2010 2014] ) (FuncDef name: find_exe_basenames_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_dir_) op: Equal rhs: {($ VSub_Number '$1')} spids: [2121] ) ] spids: [2121] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:feb_fail_) op:Equal rhs:{(0)} spids:[2125])] spids: [2125] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_result_) op: Equal rhs: {(EmptyPart)} spids: [2129] ) ] spids: [2129] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_sp_) op: Equal rhs: {(EmptyPart)} spids: [2132] ) ] spids: [2132] ) (ForEach iter_name: feb_file_ iter_words: [{($ VSub_Name '$feb_dir_') (/) (Lit_Other '*') (.exe)}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(DQ (x) ($ VSub_Name '$feb_file_'))} {(Lit_Other '=')} {(DQ (x) ($ VSub_Name '$feb_dir_') ('/*.exe'))} ) (C {(test)} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$feb_file_'))}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ (x) ($ VSub_Name '$feb_file_'))} {(Lit_Other '=')} {(DQ (x) ($ VSub_Name '$feb_dir_') ('/[.exe'))} ) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (Case to_match: {($ VSub_Name '$feb_file_')} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (Lit_Other '[') (KW_Bang '!') (-a-zA-Z/0-9_.) (Lit_Other '+') (Lit_Other ']') (Lit_Other '*') } ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_fail_) op: Equal rhs: {(1)} spids: [2240] ) ] spids: [2240] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [2231 2238 2245 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_file_) op: Equal rhs: { (BracedVarSub token: <VSub_Name feb_file_> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [2256 2261] ) } spids: [2255] ) ] spids: [2255] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_file_) op: Equal rhs: { (BracedVarSub token: <VSub_Name feb_file_> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.exe)}) spids: [2265 2269] ) } spids: [2264] ) ] spids: [2264] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_result_) op: Equal rhs: { (DQ ($ VSub_Name '$feb_result_') ($ VSub_Name '$feb_sp_') ($ VSub_Name '$feb_file_') ) } spids: [2272] ) ] spids: [2272] ) ] spids: [2248 2249 2278 16777215] ) ] spids: [2224 2228 2281] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_sp_) op: Equal rhs: {(SQ <' '>)} spids: [2284] ) ] spids: [2284] ) ] spids: [2147 2290] ) spids: [2140 2145] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$feb_fail_')} {(Lit_Other '=')} {(0)}) (C {(printf)} {(Lit_Other '%') (s)} {(DQ ($ VSub_Name '$feb_result_'))}) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$feb_fail_')} ) ] spids: [2118] ) spids: [2113 2117] ) (FuncDef name: create_exe_shims_ body: (BraceGroup children: [ (Case to_match: {($ VSub_Name '$EXEEXT')} arms: [ (case_arm pat_list: [{(SQ )}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 2352 2358 16777215] ) (case_arm pat_list:[{(.exe)}] spids:[2361 2362 2364 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Sentence child: (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Number '$0') (': unexpected ') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('EXEEXT value: ') ($ VSub_Name '$EXEEXT') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2380])] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2367 2368 2388 16777215] ) ] spids: [2343 2347 2391] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:base_names_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(find_exe_basenames_)} {($ VSub_Number '$1')})] ) left_token: <Left_Backtick '`'> spids: [2396 2400] ) } spids: [2395] ) ] spids: [2395] ) (BraceGroup children: [ (Sentence child: (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Number '$0') (' (exe_shim): skipping directory: ') ($ VSub_Number '$1') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[2416])] ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) terminator: <Op_Semi ';'> ) ] spids: [2406] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-n)} {(DQ ($ VSub_Name '$base_names_'))}) terminator: <Op_Semi ';'> ) ] action: [ (ForEach iter_name: base_ iter_words: [{($ VSub_Name '$base_names_')}] do_arg_iter: F body: (DoGroup children: [ (C {(alias)} {(DQ ($ VSub_Name '$base_')) (Lit_Other '=') (DQ ($ VSub_Name '$base_') ($ VSub_Name '$EXEEXT')) } ) ] spids: [2452 2467] ) spids: [2448 2450] ) ] spids: [16777215 2440] ) ] spids: [16777215 2470] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2340] ) spids: [2335 2339] ) (FuncDef name: path_prepend_ body: (BraceGroup children: [ (While cond: [ (Sentence child: (C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path_dir_) op: Equal rhs: {($ VSub_Number '$1')} spids: [2510] ) ] spids: [2510] ) (Case to_match: {($ VSub_Name '$path_dir_')} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(fail_)} {(DQ ("invalid path dir: '") ($ VSub_Number '$1') ("'"))}) ] spids: [16777215 2523 2532 16777215] ) (case_arm pat_list: [{(/) (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:abs_path_dir_) op: Equal rhs: {($ VSub_Name '$path_dir_')} spids: [2539] ) ] spids: [2539] ) ] spids: [2535 2537 2541 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:abs_path_dir_) op: Equal rhs: {($ VSub_Name '$initial_cwd_') (/) ($ VSub_Name '$path_dir_')} spids: [2547] ) ] spids: [2547] ) ] spids: [2544 2545 2551 16777215] ) ] spids: [2514 2518 2554] ) (Case to_match: {($ VSub_Name '$abs_path_dir_')} arms: [ (case_arm pat_list: [{(Lit_Other '*') (Lit_Other ':') (Lit_Other '*')}] action: [ (C {(fail_)} {(DQ ("invalid path dir: '") ($ VSub_Name '$abs_path_dir_') ("'"))} ) ] spids: [2564 2567 2576 16777215] ) ] spids: [2557 2561 2579] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(DQ ($ VSub_Name '$abs_path_dir_') (':') ($ VSub_Name '$PATH'))} spids: [2582] ) ] spids: [2582] ) (AndOr ops: [Op_DPipe] children: [ (C {(create_exe_shims_)} {(DQ ($ VSub_Name '$abs_path_dir_'))}) (C {(fail_)} {(DQ ('something failed (above): ') ($ VSub_Name '$abs_path_dir_'))} ) ] ) (C {(shift)}) ] spids: [2507 2616] ) ) (C {(export)} {(PATH)}) ] spids: [2492] ) spids: [2487 2491] ) (FuncDef name: setup_ body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other '=')} {(yes)}) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {($ VSub_Name '$gl_set_x_corrupts_stderr_')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(warn_)} { (DQ ('using SHELL=') ($ VSub_Name '$SHELL') (" with 'set -x' corrupts stderr") ) } ) ] spids: [16777215 2675] ) ] else_action: [(C {(set)} {(-x)})] spids: [2687 2695] ) ] spids: [16777215 2647] ) ] spids: [16777215 2698] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:initial_cwd_) op: Equal rhs: {($ VSub_Name '$PWD')} spids: [2702] ) ] spids: [2702] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(0)} spids:[2706])] spids: [2706] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pfx_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(testdir_prefix_)})]) left_token: <Left_Backtick '`'> spids: [2712 2714] ) } spids: [2711] ) ] spids: [2711] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_dir_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(mktempd_)} {(DQ ($ VSub_Name '$initial_cwd_'))} {(DQ ($ VSub_Name '$pfx_') (-) ($ VSub_Name '$ME_') (.XXXX))} ) ] ) left_token: <Left_Backtick '`'> spids: [2718 2731] ) } spids: [2717] ) ] spids: [2717] ) (C {(fail_)} {(DQ ('failed to create temporary directory in ') ($ VSub_Name '$initial_cwd_'))} ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {(DQ ($ VSub_Name '$test_dir_'))}) (C {(fail_)} {(DQ ('failed to cd to temporary directory'))}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_init_sh_nl_) op: Equal rhs: {(SQ <'\n'>)} spids: [2769] ) ] spids: [2769] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(DQ (' ')) (DQ ('\t') ($ VSub_Name '$gl_init_sh_nl_'))} spids: [2775] ) ] spids: [2775] ) (ForEach iter_name: sig_ iter_words: [{(1)} {(2)} {(3)} {(13)} {(15)}] do_arg_iter: F body: (DoGroup children: [ (C {(eval)} { (DQ ("trap 'Exit ") (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$sig_')} {(Lit_Other '+')} {(128)}) ] ) left_token: <Left_CommandSub '$('> spids: [2822 2830] ) ("' ") ($ VSub_Name '$sig_') ) } ) ] spids: [2815 2836] ) spids: [2803 2813] ) ] spids: [2631] ) spids: [2626 2630] ) (FuncDef name: rand_bytes_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:n_) op: Equal rhs: {($ VSub_Number '$1')} spids: [2895] ) ] spids: [2895] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:chars_) op: Equal rhs: {(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)} spids: [2909] ) ] spids: [2909] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dev_rand_) op: Equal rhs: {(/dev/urandom)} spids: [2913] ) ] spids: [2913] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$dev_rand_'))}) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (SimpleCommand words: [ {(dd)} {(Lit_VarLike 'ibs=') ($ VSub_Name '$n_')} {(Lit_VarLike 'count=') (1)} {(Lit_VarLike 'if=') ($ VSub_Name '$dev_rand_')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2946] ) ] ) (SimpleCommand words: [ {(tr)} {(-c)} {($ VSub_Name '$chars_')} {(01234567) ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') } ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[2953])] ) ] negated: F ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2928] ) ] spids: [16777215 2971] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:n_plus_50_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(expr)} {($ VSub_Name '$n_')} {(Lit_Other '+')} {(50)})] ) left_token: <Left_Backtick '`'> spids: [2976 2984] ) } spids: [2975] ) ] spids: [2975] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmds_) op: Equal rhs: {(SQ <'date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n'>)} spids: [2987] ) ] spids: [2987] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:data_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (Subshell child: (C {(eval)} {(DQ ($ VSub_Name '$cmds_'))}) redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [3004] ) ] spids: [2996 3002] ) (C {(gzip)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [2994 3011] ) } spids: [2993] ) ] spids: [2993] ) (While cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:len_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$data_'))}) (C {(wc)} {(-c)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3028 3038] ) } spids: [3027] ) ] spids: [3027] ) (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$n_plus_50_')} {(-le)} {($ VSub_Name '$len_')}) (ControlFlow token:<ControlFlow_Break break>) ] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:data_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name '$data_'))}) terminator: <Op_Semi ';'> ) (C {(eval)} {(DQ ($ VSub_Name '$cmds_'))}) ] ) redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [3073] ) ] spids: [3058 3071] ) (C {(gzip)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3056 3080] ) } spids: [3055] ) ] spids: [3055] ) ] spids: [3024 3083] ) ) (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$data_'))}) (SimpleCommand words: [ {(dd)} {(Lit_VarLike 'bs=') (1)} {(Lit_VarLike 'skip=') (50)} {(Lit_VarLike 'count=') ($ VSub_Name '$n_')} ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[3108])] ) (SimpleCommand words: [ {(tr)} {(-c)} {($ VSub_Name '$chars_')} {(01234567) ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') ($ VSub_Name '$chars_') } ] more_env: [(env_pair name:LC_ALL val:{(C)} spids:[3115])] ) ] negated: F ) ] spids: [2892] ) spids: [2887 2891] ) (FuncDef name: mktempd_ body: (BraceGroup children: [ (Case to_match: {($ VSub_Pound '$#')} arms: [ (case_arm pat_list:[{(2)}] spids:[3147 3148 3149 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(fail_)} {(DQ ('Usage: mktempd_ DIR TEMPLATE'))})] spids: [3152 3153 3160 16777215] ) ] spids: [3140 3144 3163] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:destdir_) op: Equal rhs: {($ VSub_Number '$1')} spids: [3167] ) ] spids: [3167] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:template_) op: Equal rhs: {($ VSub_Number '$2')} spids: [3171] ) ] spids: [3171] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MAX_TRIES_) op:Equal rhs:{(4)} spids:[3176])] spids: [3176] ) (Case to_match: {($ VSub_Name '$destdir_')} arms: [ (case_arm pat_list:[{(/)}] spids:[3196 3197 3199 16777215]) (case_arm pat_list: [{(Lit_Other '*') (/)}] action: [(C {(fail_)} {(DQ ('invalid destination dir: remove trailing slash(es)'))})] spids: [3202 3204 3211 16777215] ) ] spids: [3189 3193 3214] ) (Case to_match: {($ VSub_Name '$template_')} arms: [ (case_arm pat_list: [{(Lit_Other '*') (XXXX)}] spids: [3225 3227 3229 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(fail_)} { (DQ ('invalid template: ') ($ VSub_Name '$template_') (" (must have a suffix of at least 4 X's)") ) } ) ] spids: [3232 3233 3244 16777215] ) ] spids: [3218 3222 3247] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (C {(unset)} {(TMPDIR)}) terminator: <Op_Semi ';'> ) (BraceGroup children: [ (Sentence child: (C {(mktemp)} {(-d)} {(-t)} {(-p)} {(DQ ($ VSub_Name '$destdir_'))} {(DQ ($ VSub_Name '$template_'))} ) terminator: <Op_Semi ';'> ) ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [3283] ) ] spids: [3262] ) ] ) left_token: <Left_Backtick '`'> spids: [3256 3285] ) } spids: [3255] ) ] spids: [3255] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3291])] spids: [3291] ) ] ) (Case to_match: {($ VSub_Name '$d')} arms: [ (case_arm pat_list: [{(DQ ($ VSub_Name '$destdir_')) (Lit_Other '*')}] spids: [3307 3310 3311 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3316])] spids: [3316] ) ] spids: [3313 3314 3318 16777215] ) ] spids: [3300 3304 3320] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-d)} {(DQ ($ VSub_Name '$d'))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3338])] spids: [3338] ) ] ) (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:perms) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [{(ls)} {(-dgo)} {(DQ ($ VSub_Name '$d'))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [3357] ) ] ) (C {(tr)} {(S)} {(-)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3348 3365] ) } spids: [3347] ) ] spids: [3347] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3369])] spids: [3369] ) ] ) (Case to_match: {($ VSub_Name '$perms')} arms: [ (case_arm pat_list: [{(drwx------) (Lit_Other '*')}] spids: [3379 3381 3383 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3388])] spids: [3388] ) ] spids: [3385 3386 3390 16777215] ) ] spids: [3373 3377 3392] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$fail')} {(Lit_Other '=')} {(0)}) (BraceGroup children: [ (C {(echo)} {(DQ ($ VSub_Name '$d'))}) (ControlFlow token:<ControlFlow_Return return>) ] spids: [3406] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:base_template_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$template_'))}) (C {(sed)} {(SQ <'s/XX*$//'>)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3433 3445] ) } spids: [3432] ) ] spids: [3432] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:template_length_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$template_'))}) (C {(wc)} {(-c)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3454 3466] ) } spids: [3453] ) ] spids: [3453] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nx_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$base_template_'))}) (C {(wc)} {(-c)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3470 3482] ) } spids: [3469] ) ] spids: [3469] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nx_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$template_length_')} {(-)} {($ VSub_Name '$nx_')} ) ] ) left_token: <Left_Backtick '`'> spids: [3486 3494] ) } spids: [3485] ) ] spids: [3485] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:err_) op:Equal rhs:{(EmptyPart)} spids:[3498])] spids: [3498] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:i_) op:Equal rhs:{(1)} spids:[3501])] spids: [3501] ) (While cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:X_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(rand_bytes_)} {($ VSub_Name '$nx_')})] ) left_token: <Left_Backtick '`'> spids: [3514 3518] ) } spids: [3513] ) ] spids: [3513] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:candidate_dir_) op: Equal rhs: { (DQ ($ VSub_Name '$destdir_') (/) ($ VSub_Name '$base_template_') ($ VSub_Name '$X_') ) } spids: [3521] ) ] spids: [3521] ) (AndOr ops: [Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:err_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(mkdir)} {(-m)} {(0700)} {(DQ ($ VSub_Name '$candidate_dir_'))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [3542] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [3531 3544] ) } spids: [3530] ) ] spids: [3530] ) (BraceGroup children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name '$candidate_dir_'))}) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Return return>) terminator: <Op_Semi ';'> ) ] spids: [3550] ) ] ) (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_Name '$MAX_TRIES_')} {(-le)} {($ VSub_Name '$i_')}) (ControlFlow token:<ControlFlow_Break break>) ] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i_) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$i_')} {(Lit_Other '+')} {(1)}) ] ) left_token: <Left_Backtick '`'> spids: [3580 3588] ) } spids: [3579] ) ] spids: [3579] ) ] spids: [3510 3591] ) ) (C {(fail_)} {(DQ ($ VSub_Name '$err_'))}) ] spids: [3137] ) spids: [3132 3136] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-f)} {(DQ ($ VSub_Name '$srcdir') (/init.cfg))}) (C {(.)} {(DQ ($ VSub_Name '$srcdir') (/init.cfg))}) ] ) (C {(setup_)} {(DQ ($ VSub_At '$@'))}) (C {(trap)} {(remove_tmp_)} {(0)}) ] )