(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] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DUALCASE) op:Equal rhs:{(1)} spids:[460])] spids: [460] ) 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: [475 479] ) ) } ) (Subshell child: (C {(emulate)} {(sh)}) redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [490] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [493] ) ] spids: [484 488] ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(emulate)} {(sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NULLCMD) op: Equal rhs: {(Lit_Other ':')} spids: [505] ) ] spids: [505] ) (C {(alias)} {(-g)} {(SQ <'${1+"$@"}'>) (Lit_Other '=') (SQ <'"$@"'>)}) (C {(setopt)} {(NO_GLOB_SUBST)}) ] spids: [16777215 497] ) ] 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:[538])] spids: [532 536] ) ] ) left_token: <Left_Backtick '`'> spids: [531 540] ) } arms: [ (case_arm pat_list: [{(Lit_Other '*') (posix) (Lit_Other '*')}] action: [(C {(set)} {(-o)} {(posix)})] spids: [545 548 556 16777215] ) ] spids: [529 542 559] ) ] spids: [526 561] ) (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'> <'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: [625] ) ] spids: [625] ) (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 660] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_set_x_corrupts_stderr_) op: Equal rhs: {(false)} spids: [672] ) ] spids: [672] ) (C {(export)} {(gl_set_x_corrupts_stderr_)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:marginal_) op:Equal rhs:{(EmptyPart)} spids:[686])] spids: [686] ) (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: [703 707] ) ) } {(/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: [793] ) ] spids: [793] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 765] ) ] spids: [16777215 800] ) (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: [850] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [854] ) ] spids: [840 848] ) ] spids: [16777215 825] ) ] 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:[871])] ) ] spids: [858 875] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:st_) op: Equal rhs: {($ VSub_QMark '$?')} spids: [879] ) ] spids: [879] ) (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: [902] ) ] spids: [902] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 899] ) ] spids: [16777215 909] ) (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: [937] ) ] spids: [937] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gl_set_x_corrupts_stderr_) op: Equal rhs: {(true)} spids: [943] ) ] spids: [943] ) ] spids: [16777215 934] ) ] spids: [16777215 947] ) ] spids: [725 950] ) spids: [699 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: [997] ) ] spids: [997] ) ] spids: [982 995 1000 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: [1008] ) ] spids: [1008] ) ] spids: [1003 1006 1011 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: [1019] ) ] spids: [1019] ) ] spids: [1014 1017 1022 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts_) op: Equal rhs: {(EmptyPart)} spids: [1028] ) ] spids: [1028] ) ] spids: [1025 1026 1030 16777215] ) ] spids: [975 979 1033] ) (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:[1062])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(127)}) ] spids: [16777215 968] ) ] spids: [16777215 1071] ) ] spids: [665 1073] ) (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: [1140 1144] ) } ) (C {(export)} {(MALLOC_PERTURB_)}) (FuncDef name: cleanup_ body: (BraceGroup children: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] spids: [1165] ) spids: [1160 1164] ) (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: [1184] ) spids: [1179 1183] ) (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 1273] ) ] spids: [16777215 1314] ) (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 1332] ) ] spids: [16777215 1373] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] spids: [1240] ) spids: [1235 1239] ) (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: [1390] ) ] ) 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: [1406] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [1387 1409] ) } spids: [1386] ) ] spids: [1386] ) (Pipeline children: [ (SimpleCommand words: [{(diff)} {(-u)} {(Makefile)} {(DQ ($ VSub_Number '$0'))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1425] ) ] ) (SimpleCommand words: [{(grep)} {(SQ <'^[+]#!'>)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [1436] ) ] ) ] 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: [1470] ) spids: [1465 1469] ) ] spids: [16777215 1462] ) ] 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: [1506] ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})] spids: [16777215 1511] ) ] else_action: [ (C {(cat)} {(diff.out)}) (C {(rm)} {(-f)} {(diff.out)}) (C {(false)}) ] spids: [1532 1550] ) ] spids: [1493] ) spids: [1487 1491] ) ] spids: [1484 1556] ) ] spids: [16777215 1440] ) (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: [1564] ) ] ) 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: [1580] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [1561 1583] ) } spids: [1560] ) ] spids: [1560] ) 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: [1608] ) spids: [1603 1607] ) ] spids: [16777215 1600] ) ] 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: [1644] ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {(-f)} {(diff.out)}) (C {(true)})] spids: [16777215 1649] ) ] else_action: [ (C {(cat)} {(diff.out)}) (C {(rm)} {(-f)} {(diff.out)}) (C {(false)}) ] spids: [1674 1692] ) ] spids: [1631] ) spids: [1625 1629] ) ] spids: [1622 1698] ) ] spids: [1558 1586] ) (if_arm cond: [ (Sentence child: (Subshell child: (Pipeline children: [ (SimpleCommand words: [{(cmp)} {(--version)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(/dev/null)} spids: [1708] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1712] ) ] ) (C {(grep)} {(GNU)}) ] negated: F ) redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [1723] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1727]) ] spids: [1702 1721] ) terminator: <Op_Semi ';'> ) ] action: [ (FuncDef name: compare_ body: (BraceGroup children: [ (Sentence child: (C {(cmp)} {(-s)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) ] spids: [1739] ) spids: [1734 1738] ) ] spids: [1700 1731] ) ] else_action: [ (FuncDef name: compare_ body: (BraceGroup children: [(Sentence child:(C {(cmp)} {(DQ ($ VSub_At '$@'))}) terminator:<Op_Semi ';'>)] spids: [1760] ) spids: [1755 1759] ) ] spids: [1752 1771] ) (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 1815] ) ] else_action: [ (Case to_match: {($ VSub_QMark '$?')} arms: [ (case_arm pat_list: [{(1)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1833 1834 1839 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(compare_)} {(DQ ($ VSub_At '$@'))})] spids: [1842 1843 1850 16777215] ) ] spids: [1826 1830 1853] ) ] spids: [1823 1856] ) ] spids: [1791] ) spids: [1786 1790] ) (FuncDef name: testdir_prefix_ body: (BraceGroup children: [(Sentence child:(C {(printf)} {(gt)}) terminator:<Op_Semi ';'>)] spids: [1869] ) spids: [1864 1868] ) (FuncDef name: remove_tmp_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:__st) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1893] ) ] spids: [1893] ) (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: [1962] ) ] spids: [1962] ) ] ) terminator: <Op_Semi ';'> ) ] spids: [1950] ) ] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$__st')}) ] spids: [1890] ) spids: [1885 1889] ) (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: [1996] ) ] spids: [1996] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:feb_fail_) op:Equal rhs:{(0)} spids:[2000])] spids: [2000] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_result_) op: Equal rhs: {(EmptyPart)} spids: [2004] ) ] spids: [2004] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_sp_) op: Equal rhs: {(EmptyPart)} spids: [2007] ) ] spids: [2007] ) (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: [2115] ) ] spids: [2115] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [2106 2113 2120 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: [2131 2136] ) } spids: [2130] ) ] spids: [2130] ) (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: [2140 2144] ) } spids: [2139] ) ] spids: [2139] ) (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: [2147] ) ] spids: [2147] ) ] spids: [2123 2124 2153 16777215] ) ] spids: [2099 2103 2156] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:feb_sp_) op: Equal rhs: {(SQ <' '>)} spids: [2159] ) ] spids: [2159] ) ] spids: [2022 2165] ) spids: [2015 2020] ) (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: [1993] ) spids: [1988 1992] ) (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 2227 2233 16777215] ) (case_arm pat_list:[{(.exe)}] spids:[2236 2237 2239 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:[2255])] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2242 2243 2263 16777215] ) ] spids: [2218 2222 2266] ) (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: [2271 2275] ) } spids: [2270] ) ] spids: [2270] ) (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:[2291])] ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) terminator: <Op_Semi ';'> ) ] spids: [2281] ) ] ) (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: [2327 2342] ) spids: [2323 2325] ) ] spids: [16777215 2315] ) ] spids: [16777215 2345] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2215] ) spids: [2210 2214] ) (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: [2385] ) ] spids: [2385] ) (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 2398 2407 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: [2414] ) ] spids: [2414] ) ] spids: [2410 2412 2416 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: [2422] ) ] spids: [2422] ) ] spids: [2419 2420 2426 16777215] ) ] spids: [2389 2393 2429] ) (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: [2439 2442 2451 16777215] ) ] spids: [2432 2436 2454] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(DQ ($ VSub_Name '$abs_path_dir_') (':') ($ VSub_Name '$PATH'))} spids: [2457] ) ] spids: [2457] ) (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: [2382 2491] ) ) (C {(export)} {(PATH)}) ] spids: [2367] ) spids: [2362 2366] ) (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 2550] ) ] else_action: [(C {(set)} {(-x)})] spids: [2562 2570] ) ] spids: [16777215 2522] ) ] spids: [16777215 2573] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:initial_cwd_) op: Equal rhs: {($ VSub_Name '$PWD')} spids: [2577] ) ] spids: [2577] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(0)} spids:[2581])] spids: [2581] ) (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: [2587 2589] ) } spids: [2586] ) ] spids: [2586] ) (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: [2593 2606] ) } spids: [2592] ) ] spids: [2592] ) (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: [2644] ) ] spids: [2644] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(DQ (' ')) (DQ ('\t') ($ VSub_Name '$gl_init_sh_nl_'))} spids: [2650] ) ] spids: [2650] ) (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: [2697 2705] ) ("' ") ($ VSub_Name '$sig_') ) } ) ] spids: [2690 2711] ) spids: [2678 2688] ) ] spids: [2506] ) spids: [2501 2505] ) (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: [2770] ) ] spids: [2770] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:chars_) op: Equal rhs: {(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)} spids: [2784] ) ] spids: [2784] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dev_rand_) op: Equal rhs: {(/dev/urandom)} spids: [2788] ) ] spids: [2788] ) (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: [2821] ) ] ) (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:[2828])] ) ] negated: F ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2803] ) ] spids: [16777215 2846] ) (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: [2851 2859] ) } spids: [2850] ) ] spids: [2850] ) (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: [2862] ) ] spids: [2862] ) (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: [2879] ) ] spids: [2871 2877] ) (C {(gzip)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [2869 2886] ) } spids: [2868] ) ] spids: [2868] ) (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: [2903 2913] ) } spids: [2902] ) ] spids: [2902] ) (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: [2948] ) ] spids: [2933 2946] ) (C {(gzip)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [2931 2955] ) } spids: [2930] ) ] spids: [2930] ) ] spids: [2899 2958] ) ) (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:[2983])] ) (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:[2990])] ) ] negated: F ) ] spids: [2767] ) spids: [2762 2766] ) (FuncDef name: mktempd_ body: (BraceGroup children: [ (Case to_match: {($ VSub_Pound '$#')} arms: [ (case_arm pat_list:[{(2)}] spids:[3022 3023 3024 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(fail_)} {(DQ ('Usage: mktempd_ DIR TEMPLATE'))})] spids: [3027 3028 3035 16777215] ) ] spids: [3015 3019 3038] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:destdir_) op: Equal rhs: {($ VSub_Number '$1')} spids: [3042] ) ] spids: [3042] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:template_) op: Equal rhs: {($ VSub_Number '$2')} spids: [3046] ) ] spids: [3046] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MAX_TRIES_) op:Equal rhs:{(4)} spids:[3051])] spids: [3051] ) (Case to_match: {($ VSub_Name '$destdir_')} arms: [ (case_arm pat_list:[{(/)}] spids:[3071 3072 3074 16777215]) (case_arm pat_list: [{(Lit_Other '*') (/)}] action: [(C {(fail_)} {(DQ ('invalid destination dir: remove trailing slash(es)'))})] spids: [3077 3079 3086 16777215] ) ] spids: [3064 3068 3089] ) (Case to_match: {($ VSub_Name '$template_')} arms: [ (case_arm pat_list: [{(Lit_Other '*') (XXXX)}] spids: [3100 3102 3104 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: [3107 3108 3119 16777215] ) ] spids: [3093 3097 3122] ) (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: [3158] ) ] spids: [3137] ) ] ) left_token: <Left_Backtick '`'> spids: [3131 3160] ) } spids: [3130] ) ] spids: [3130] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3166])] spids: [3166] ) ] ) (Case to_match: {($ VSub_Name '$d')} arms: [ (case_arm pat_list: [{(DQ ($ VSub_Name '$destdir_')) (Lit_Other '*')}] spids: [3182 3185 3186 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3191])] spids: [3191] ) ] spids: [3188 3189 3193 16777215] ) ] spids: [3175 3179 3195] ) (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:[3213])] spids: [3213] ) ] ) (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: [3232] ) ] ) (C {(tr)} {(S)} {(-)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [3223 3240] ) } spids: [3222] ) ] spids: [3222] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3244])] spids: [3244] ) ] ) (Case to_match: {($ VSub_Name '$perms')} arms: [ (case_arm pat_list: [{(drwx------) (Lit_Other '*')}] spids: [3254 3256 3258 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[3263])] spids: [3263] ) ] spids: [3260 3261 3265 16777215] ) ] spids: [3248 3252 3267] ) (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: [3281] ) ] ) (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: [3308 3320] ) } spids: [3307] ) ] spids: [3307] ) (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: [3329 3341] ) } spids: [3328] ) ] spids: [3328] ) (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: [3345 3357] ) } spids: [3344] ) ] spids: [3344] ) (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: [3361 3369] ) } spids: [3360] ) ] spids: [3360] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:err_) op:Equal rhs:{(EmptyPart)} spids:[3373])] spids: [3373] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:i_) op:Equal rhs:{(1)} spids:[3376])] spids: [3376] ) (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: [3389 3393] ) } spids: [3388] ) ] spids: [3388] ) (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: [3396] ) ] spids: [3396] ) (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: [3417] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [3406 3419] ) } spids: [3405] ) ] spids: [3405] ) (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: [3425] ) ] ) (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: [3455 3463] ) } spids: [3454] ) ] spids: [3454] ) ] spids: [3385 3466] ) ) (C {(fail_)} {(DQ ($ VSub_Name '$err_'))}) ] spids: [3012] ) spids: [3007 3011] ) (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)}) ] )