(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {<package>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Hyphen -) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName BASH_VERSION)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <x> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<bash>} {<set>} {<-x>} {<is>} {<broken>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<Id.Lit_Other '+'> <ex>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <checksh> name: checksh body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {(SQ <'Version.*(88|1993)'>)} {($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [{($ Id.VSub_Number 1)} {<-c>} {(SQ <'(( .sh.version >= 20111111 ))'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _AST_BIN_PACKAGE_) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName SHELL) <Id.Lit_Colon ':'> ($ Id.VSub_Number 0) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'/bin/sh'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_AST_BIN_PACKAGE_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_AST_BIN_PACKAGE_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_AST_BIN_PACKAGE_='> name: _AST_BIN_PACKAGE_ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<_AST_BIN_PACKAGE_>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <checksh> more_env: [] words: [{<checksh>} {($ Id.VSub_DollarName SHELL)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<no>} {<-lcmd>} {<conflict>} {<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] spids: [208 215] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_Star '*') <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' debug '>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <' DEBUG '>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <' show '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName SHELL) <Id.Lit_Colon ':'>} {<warning> <Id.Lit_Colon ':'>} {<possible>} {<-lcmd>} {<conflict>} {<-->} {<falling>} {<back>} {<to>} {<'/bin/sh'>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: {<'/bin/sh'>} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<SHELL>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <exec> more_env: [] words: [ {<exec>} {($ Id.VSub_DollarName SHELL)} {(DQ ($ Id.VSub_Number 0))} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LC_ALL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LC_ALL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LC_ALL='> name:LC_ALL) op: assign_op.Equal rhs: {<C>} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<LC_ALL>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'src='> name:src) op: assign_op.Equal rhs: {(DQ <'cmd contrib etc lib'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'use='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'use='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'use='> name:use) op: assign_op.Equal rhs: {(DQ <'/usr/common /exp /usr/local /usr/add-on /usr/addon /usr/tools /usr /opt'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'usr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'usr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'usr='> name:usr) op: assign_op.Equal rhs: {(DQ <'/home'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lib='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lib='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lib='> name:lib) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ccs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ccs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ccs='> name:ccs) op: assign_op.Equal rhs: {(DQ <'/usr/kvm /usr/ccs/bin'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'org='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'org='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'org='> name:org) op: assign_op.Equal rhs: {(DQ <'gnu GNU'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'makefiles='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makefiles='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'makefiles='> name:makefiles) op: assign_op.Equal rhs: {(DQ <'Mamfile Nmakefile nmakefile Makefile makefile'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'env='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'env='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'env='> name:env) op: assign_op.Equal rhs: {(DQ <'HOSTTYPE NPROC PACKAGEROOT INSTALLROOT PATH'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'checksum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'checksum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checksum='> name:checksum) op: assign_op.Equal rhs: {<md5sum>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'checksum_commands='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'checksum_commands='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checksum_commands='> name:checksum_commands) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName checksum) <' md5'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'checksum_empty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'checksum_empty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checksum_empty='> name:checksum_empty) op: assign_op.Equal rhs: {(DQ <d41d8cd98f00b204e9800998ecf8427e>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package_use='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_use='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package_use='> name:package_use) op: assign_op.Equal rhs: {(SQ <'=$HOSTTYPE=$PACKAGEROOT=$INSTALLROOT=$EXECROOT=$CC='>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGE_admin_tail_timeout='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGE_admin_tail_timeout='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGE_admin_tail_timeout='> name: PACKAGE_admin_tail_timeout ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PACKAGE_admin_tail_timeout> var_name: PACKAGE_admin_tail_timeout suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <1m>)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CROSS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CROSS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CROSS='> name:CROSS) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_db='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_db='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_db='> name:admin_db) op: assign_op.Equal rhs: {<admin.db>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_env='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_env='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_env='> name:admin_env) op: assign_op.Equal rhs: {<admin.env>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_ditto='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ditto='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_ditto='> name:admin_ditto) op: assign_op.Equal rhs: {(DQ <'ditto --checksum --delete --verbose'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_ditto_update='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ditto_update='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_ditto_update='> name:admin_ditto_update) op: assign_op.Equal rhs: {<--update>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_ditto_skip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ditto_skip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_ditto_skip='> name:admin_ditto_skip) op: assign_op.Equal rhs: {(DQ <'OFFICIAL|core|old|*.core|*.tmp|.nfs*'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_list='> name:admin_list) op: assign_op.Equal rhs: {(SQ <'PACKAGE.$type.lst'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_ping='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ping='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_ping='> name:admin_ping) op: assign_op.Equal rhs: {(DQ <'ping -c 1 -w 5'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'default_url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'default_url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'default_url='> name:default_url) op: assign_op.Equal rhs: {<default.url>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MAKESKIP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAKESKIP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKESKIP='> name:MAKESKIP) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MAKESKIP> var_name: MAKESKIP suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <'*[-.]*'>)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'RATZ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RATZ='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RATZ='> name:RATZ) op: assign_op.Equal rhs: {<ratz>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SED='> name:SED) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TAR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TAR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TAR='> name:TAR) op: assign_op.Equal rhs: {<tar>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TARFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARFLAGS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARFLAGS='> name:TARFLAGS) op: assign_op.Equal rhs: {<xv>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TARPROBE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARPROBE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARPROBE='> name:TARPROBE) op: assign_op.Equal rhs: {<B>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TR='> name:TR) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'all_types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'all_types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'all_types='> name:all_types) op: assign_op.Equal rhs: {(SQ <'*.*|sun4'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: package (AT&T Research) 2012-06-28 $\n'> <Id.Char_Literals ']'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?package - source and binary package control]\n'> <Id.Char_Literals '[+DESCRIPTION?The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' command controls source and binary\n'> <Id.Char_Literals ' packages. It is a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) script coded for maximal portability. All\n'> <Id.Char_Literals ' package files are in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory tree.\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' must at minumum contain a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'bin/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' command or a\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'lib/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory. Binary package files are in the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/arch/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals hosttype> <Id.Char_OneChar '\\a'> <Id.Char_Literals ') tree, where\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals hosttpe> <Id.Char_OneChar '\\a'> <Id.Char_Literals '=`'> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '`. All '> <Id.Char_OneChar '\\a'> <Id.Char_Literals actions> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' but '> <Id.Char_OneChar '\\b'> <Id.Char_Literals host> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals use> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' require the current directory to be under '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. See\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals DETAILS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' for more information.]\n'> <Id.Char_Literals '[+?Note that no environment variables need be set by the user;\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' determines the environment based on the current working\n' > <Id.Char_Literals ' directory. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals use> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action starts a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) with the environment\n'> <Id.Char_Literals ' initialized. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals CC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals CCFLAGS> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals SHELL> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' may be set\n'> <Id.Char_Literals ' by explicit command argument assignments to override the defaults.]\n' > <Id.Char_Literals '[+?Packages are composed of components. Each component is built and\n' > <Id.Char_Literals ' installed by an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) makefile. Each package is also\n'> <Id.Char_Literals ' described by an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' makefile that lists its components and\n'> <Id.Char_Literals ' provides a content description. The package makefile and component\n' > <Id.Char_Literals ' makefiles provide all the information required to read, write, build\n' > <Id.Char_Literals ' and install packages.]\n'> <Id.Char_Literals '[+?Package recipients only need '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) to build and\n'> <Id.Char_Literals ' install source packages, and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to install binary packages.\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh93> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are required to write new packages. An\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/bin/cc'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' script may be supplied for some architectures.\n'> <Id.Char_Literals ' This script supplies a reasonable set of default options for compilers\n' > <Id.Char_Literals ' that accept multiple dialects or generate multiple object/executable\n' > <Id.Char_Literals ' formats.]\n'> <Id.Char_Literals '[+?The command arguments are composed of a sequence of words: zero or\n' > <Id.Char_Literals ' more '> <Id.Char_OneChar '\\a'> <Id.Char_Literals qualifiers> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', one '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', and zero or more action-specific\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals arguments> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', and zero or more '> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'name=value'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' definitions. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' names a particular package. The naming scheme is a ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' separated\n'> <Id.Char_Literals ' hierarchy; the leftmost parts describe ownership, e.g.,\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gnu-fileutils> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast-base> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. If no packages are specified then all\n'> <Id.Char_Literals ' packages are operated on. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals optget> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(3) documentation options are also\n'> <Id.Char_Literals ' supported. The default with no arguments is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'host type'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[+?The qualifiers are:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+authorize '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Remote authorization user name or license\n'> <Id.Char_Literals ' acceptance phrase.]\n'> <Id.Char_Literals ' [+debug|environment?Show environment and actions but do not\n' > <Id.Char_Literals ' execute.]\n'> <Id.Char_Literals ' [+flat?Collapse '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' { bin fun include lib } onto\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+force?Force the action to override saved state.]\n' > <Id.Char_Literals ' [+never?Run make -N and show other actions.]\n'> <Id.Char_Literals ' [+only?Only operate on the specified packages.]\n' > <Id.Char_Literals ' [+password '> <Id.Char_OneChar '\\a'> <Id.Char_Literals password> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?Remote authorization or license\n'> <Id.Char_Literals '\t acceptance password.]\n'> <Id.Char_Literals ' [+quiet?Do not list captured action output.]\n'> <Id.Char_Literals ' [+show?Run make -n and show other actions.]\n'> <Id.Char_Literals ' [+verbose?Provide detailed action output.]\n'> <Id.Char_Literals ' [+DEBUG?Trace the package script actions in detail.]\n' > <Id.Char_Literals ' }\n'> <Id.Char_Literals '[+?The actions are:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+admin'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals all> <Id.Char_OneChar '\\b'> <Id.Char_Literals ']] ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals db> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']] ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals on> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]['> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...]]?Apply\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... to the hosts listed in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' omitted then '> <Id.Char_OneChar '\\b'> <Id.Char_Literals admin.db> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is assumed. The caller must have\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rcp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rsh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals scp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ssh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) access\n'> <Id.Char_Literals ' to the hosts. Output for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is saved per-host in the\n'> <Id.Char_Literals ' file '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.log/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Logs can be viewed by\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package admin'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals on> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']] '> <Id.Char_OneChar '\\b'> <Id.Char_Literals results> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']].\n'> <Id.Char_Literals ' By default only local PACKAGEROOT hosts are selected from\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '; '> <Id.Char_OneChar '\\b'> <Id.Char_Literals all> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' selects all hosts. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals on> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' selects\n'> <Id.Char_Literals ' only hosts matching the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '|'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' separated '> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' contains four types of lines. Blank lines and lines beginning\n' > <Id.Char_Literals ' with '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '#'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are ignored. Lines starting with '> <Id.Char_OneChar '\\a'> <Id.Char_Literals id> <Id.Char_OneChar '\\a'> <Id.Char_Literals '='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' are variable assignments. Set admin_ping to local conventions\n' > <Id.Char_Literals ' if '> <Id.Char_OneChar '\\"'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName admin_ping) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_OneChar '\\"'> <Id.Char_Literals ' fails. If a package list is not specified\n'> <Id.Char_Literals ' on the command line the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' applies to all packages; a\n'> <Id.Char_Literals ' variable assigment '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals '='> <Id.Char_OneChar '\\"'> <Id.Char_OneChar '\\a'> <Id.Char_Literals list> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\"'> <Id.Char_Literals ' applies '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' to the packages in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals list> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for subsequent hosts in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.\n'> <Id.Char_Literals ' The remaining line type is a host description consisting of 6\n' > <Id.Char_Literals ' tab separated fields. The first 3 are mandatory; the remaining\n' > <Id.Char_Literals ' 3 are updated by the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals admin> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is saved in\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .old> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' before update. The fields are:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+hosttype?The host type as reported by\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\"'> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\"'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+[user@]]host?The host name and optionally user name\n' > <Id.Char_Literals ' for '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rcp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rsh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) access.]\n'> <Id.Char_Literals ' [+[remote::[[master]]::]]]]PACKAGEROOT?The absolute remote package\n' > <Id.Char_Literals ' root directory and optionally the remote protocol (rsh\n' > <Id.Char_Literals ' or ssh) if the directory is on a different server than\n' > <Id.Char_Literals ' the master package root directory. If\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'lib/package/admin/'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName admin_env) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_OneChar '\\b'> <Id.Char_Literals ' exists under this\n'> <Id.Char_Literals ' directory then it is sourced by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) before\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is done. If this field begins with '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' then the host is ignored. If this field contains ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals ':'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' then '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ditto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) is used to sync the remote '> <Id.Char_OneChar '\\b'> <Id.Char_Literals src> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' directory hierarchy to the local one. If [' > <Id.Char_OneChar '\\a'> <Id.Char_Literals master> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]:\n'> <Id.Char_Literals '\t\t is specified then the sync is deferred to the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals master> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t\t host. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals master> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted (two :) then the sync is\n'> <Id.Char_Literals '\t\t disabled. These directories must exist on the remote side:\n' > <Id.Char_Literals '\t\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'lib/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'src/cmd'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'src/lib'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+date?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYMMDD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' of the last action.]\n'> <Id.Char_Literals ' [+time?Elapsed wall time for the last action.]\n' > <Id.Char_Literals ' [+M T W?The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals admin> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action '> <Id.Char_OneChar '\\b'> <Id.Char_Literals make> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals test> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals write> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action error counts. A non-numeric value in\n'> <Id.Char_Literals ' any of these fields disables the corresponding action.]\n' > <Id.Char_Literals '\t \t[+owner?The owner contact information.]\n'> <Id.Char_Literals '\t\t[+attributes?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'name=value'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' attributes. Should at least contain\n'> <Id.Char_Literals '\t\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '='> <Id.Char_OneChar '\\a'> <Id.Char_Literals compiler-version> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' }\n'> <Id.Char_Literals '\t[+clean | clobber?Delete the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'arch/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' hierarchy; this\n'> <Id.Char_Literals '\t deletes all generated files and directories for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.\n'> <Id.Char_Literals '\t The heirarchy can be rebuilt by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package make'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+contents'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?List description and\n'> <Id.Char_Literals ' components for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on the standard output.]\n'> <Id.Char_Literals ' [+copyright'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?List the general copyright\n'> <Id.Char_Literals ' notice(s) for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on the standard output. Note that\n'> <Id.Char_Literals ' individual components in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may contain additional or\n'> <Id.Char_Literals ' replacement notices.]\n'> <Id.Char_Literals ' [+export'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals variable> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...]]?List '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '='> <Id.Char_OneChar '\\a'> <Id.Char_Literals value> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals variable> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', one per line. If the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals only> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' attribute is\n'> <Id.Char_Literals ' specified then only the variable values are listed. If no\n' > <Id.Char_Literals '\t variables are specified then '> <Id.Char_OneChar '\\b'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName env) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are assumed.]\n'> <Id.Char_Literals ' [+help'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Display help text on the standard\n'> <Id.Char_Literals ' error (standard output for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ').]\n'> <Id.Char_Literals ' [+host'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals attribute> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?List\n'> <Id.Char_Literals ' architecture/implementation dependent host information on the\n' > <Id.Char_Literals ' standard output. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals type> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is listed if no attributes are\n'> <Id.Char_Literals ' specified. Information is listed on a single line in\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals attribute> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' order. The attributes are:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+canon '> <Id.Char_OneChar '\\a'> <Id.Char_Literals name> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?An external host type name to be\n'> <Id.Char_Literals ' converted to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' syntax.]\n'> <Id.Char_Literals ' [+cpu?The number of cpus; 1 if the host is not a\n' > <Id.Char_Literals ' multiprocessor.]\n'> <Id.Char_Literals ' [+name?The host name.]\n'> <Id.Char_Literals ' [+rating?The cpu rating in pseudo mips; the value is\n' > <Id.Char_Literals ' useful useful only in comparisons with rating values of\n' > <Id.Char_Literals ' other hosts. Other than a vax rating (mercifully) fixed\n' > <Id.Char_Literals ' at 1, ratings can vary wildly but consistently from\n' > <Id.Char_Literals ' vendor mips ratings. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) may be required to\n'> <Id.Char_Literals ' determine the rating.]\n'> <Id.Char_Literals ' [+type?The host type, usually in the form\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals vendor> <Id.Char_OneChar '\\a'> <Id.Char_Literals .> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', with an optional trailing\n'> <Id.Char_Literals ' -'> <Id.Char_OneChar '\\a'> <Id.Char_Literals version> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. The main theme is that type names within\n'> <Id.Char_Literals ' a family of architectures are named in a similar,\n' > <Id.Char_Literals ' predictable style. OS point release information is\n' > <Id.Char_Literals ' avoided as much as possible, but vendor resistance to\n' > <Id.Char_Literals ' release incompatibilities has for the most part been\n' > <Id.Char_Literals ' futile.]\n'> <Id.Char_Literals ' }\n'> <Id.Char_Literals ' [+html'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Display html help text on the standard\n'> <Id.Char_Literals ' error (standard output for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals action> <Id.Char_OneChar '\\a'> <Id.Char_Literals ').]\n'> <Id.Char_Literals ' [+install'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Copy\n'> <Id.Char_Literals ' the package binary hierarchy to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then all architectures are\n'> <Id.Char_Literals ' installed. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then exactly one\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' must be specified; this architecture will be\n'> <Id.Char_Literals ' installed in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' without the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'arch/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' directory prefixes. Otherwise each architecture will be\n' > <Id.Char_Literals ' installed in a separate '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'arch/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' subdirectory of\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. The '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' names the current\n'> <Id.Char_Literals ' architecture. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals directory> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' must be an existing directory. If\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then all binary packages are installed.\n'> <Id.Char_Literals ' This action requires '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+license'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?List the source license(s) for\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on the standard output. Note that individual\n'> <Id.Char_Literals ' components in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may contain additional or replacement\n'> <Id.Char_Literals ' licenses.]\n'> <Id.Char_Literals ' [+list'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?List the name, version and\n'> <Id.Char_Literals ' prerequisites for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' on the standard output.]\n'> <Id.Char_Literals ' [+make'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals option> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals target> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Build\n'> <Id.Char_Literals '\t and install. The default '> <Id.Char_OneChar '\\a'> <Id.Char_Literals target> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals install> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', which makes\n'> <Id.Char_Literals '\t and installs '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If the standard output is a terminal\n'> <Id.Char_Literals '\t then the output is also captured in\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/package/gen/make.out'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The build is done in\n'> <Id.Char_Literals ' the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory tree viewpathed on top of the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory tree. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then\n'> <Id.Char_Literals ' the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' { bin fun include lib } directories are\n'> <Id.Char_Literals ' linked to the same directories in the package root. Only one\n' > <Id.Char_Literals ' architecture may be '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Leaf directory names matching the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '|'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '-separated shell pattern '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$MAKESKIP'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are ignored. The\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals view> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action is done before making. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals option> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' operands are\n'> <Id.Char_Literals '\t passed to the underlying make command.]\n'> <Id.Char_Literals ' [+read'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... | '> <Id.Char_OneChar '\\a'> <Id.Char_Literals archive> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Read the named\n'> <Id.Char_Literals ' package or archive(s). Must be run from the package root\n' > <Id.Char_Literals ' directory. Archives are searched for in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals .> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'lib/package/tgz'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Each package archive is read only once.\n'> <Id.Char_Literals ' The file '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'lib/package/tgz/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[.'> <Id.Char_OneChar '\\a'> <Id.Char_Literals type> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tim> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' tracks the read time. See the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals write> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action for archive\n'> <Id.Char_Literals ' naming conventions. Text file archive member are assumed to be\n' > <Id.Char_Literals ' ASCII or UTF-8 encoded.]\n'> <Id.Char_Literals ' [+regress?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals diff> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) the current and previous '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package test'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' results.]\n'> <Id.Char_Literals ' [+release'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals CC> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals YY-MM-DD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals cc> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals yy-mm-dd> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Display\n'> <Id.Char_Literals ' recent changes for the date range ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals CC> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals YY-MM-DD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' (up to\n'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals cc> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals yy-mm-dd> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.), where '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' means lowest (or highest.)\n'> <Id.Char_Literals ' If no dates are specified then changes for the last 4 months\n' > <Id.Char_Literals ' are listed. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be a package or component name.]\n'> <Id.Char_Literals ' [+remove'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Remove files installed for\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+results'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals failed> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals path> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\b'> <Id.Char_Literals old> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]] ['> <Id.Char_OneChar '\\b'> <Id.Char_Literals make> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals test> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\b'> <Id.Char_Literals write> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ]]?List\n'> <Id.Char_Literals ' results and interesting messages captured by the most recent\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals make> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (default), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals test> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals write> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals old> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' specifies the previous results, if any (current and previous\n' > <Id.Char_Literals ' results are retained.) '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOME/.pkgresults'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', if it exists,\n'> <Id.Char_Literals ' must contain an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals egrep> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) expression of result lines to be\n'> <Id.Char_Literals ' ignored. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals failed> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' lists failures only and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals path> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' lists the\n'> <Id.Char_Literals ' results file path name only.]\n'> <Id.Char_Literals ' [+setup'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ beta ]] [ binary ]] [ source ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals url> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?This\n'> <Id.Char_Literals ' action initializes the current directory as a package root, runs the\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals update> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action to download new or out of date packages, and runs the\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals read> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action on those packages. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' { bin fun include lib } directories are linked to the\n' > <Id.Char_Literals ' same directories in the package root. Only one architecture may be\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. See the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals update> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals read> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action descriptions for\n'> <Id.Char_Literals ' argument details.]\n'> <Id.Char_Literals ' [+test'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Run the regression tests for\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If the standard output is a terminal then the\n'> <Id.Char_Literals ' output is also captured in\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/package/gen/test.out'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. In general a package\n'> <Id.Char_Literals ' must be made before it can be tested. Components tested with\n' > <Id.Char_Literals ' the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals regress> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command require '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh93> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals only> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals '\t also specified then only the listed package components are\n' > <Id.Char_Literals '\t tested, otherwise the closure of the components is tested.]\n' > <Id.Char_Literals ' [+update'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ beta ]] [ binary ]] [ source ]] ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals url> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... ]]?Download\n'> <Id.Char_Literals ' the latest release of the selected and required packages from ' > <Id.Char_OneChar '\\a'> <Id.Char_Literals url> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' (e.g., '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'http://www.research.att.com/sw/download'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ') into the directory\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/tgz'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals beta> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' acesses beta packages;\n'> <Id.Char_Literals ' download these at your own risk. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then\n'> <Id.Char_Literals ' only architectures already present in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tgz> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory will be\n'> <Id.Char_Literals ' downloaded. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals architecture> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then all posted architectures\n'> <Id.Char_Literals ' will be downloaded. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals url> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' matches '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*.url'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then it is interpreted\n'> <Id.Char_Literals ' as a file containing shell variable assignments for ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals url> <Id.Char_OneChar '\\b'> <Id.Char_Literals ',\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals authorize> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals password> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals url> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then the\n'> <Id.Char_Literals ' definitions for '> <Id.Char_OneChar '\\b'> <Id.Char_Literals url> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals authorize> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals password> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' in\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/tgz/default.url'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', if it exists, are used.\n'> <Id.Char_Literals ' If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/tgz/default.url'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' does not exist then it\n'> <Id.Char_Literals ' is initialized with the current '> <Id.Char_OneChar '\\b'> <Id.Char_Literals url> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals authorize> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals password> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' values and read permission for the current user only. If ' > <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' omitted then only packages already present in the tgz directory will be\n' > <Id.Char_Literals ' downloaded. If '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' then all posted packages will be\n'> <Id.Char_Literals ' downloaded. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals source> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals binary> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' are omitted then both source\n'> <Id.Char_Literals ' and binary packages will be downloaded. If ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals only> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then\n'> <Id.Char_Literals ' only the named packages are updated; otherwise the closure of required\n' > <Id.Char_Literals ' packages is updated. This action requires '> <Id.Char_OneChar '\\b'> <Id.Char_Literals wget> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals lynx> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals curl> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) or a shell that supports io to\n'> <Id.Char_Literals '\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/dev/tcp/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals host> <Id.Char_OneChar '\\a'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals port> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]\n'> <Id.Char_Literals ' [+use'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals uid> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' | . [ 32 | 64 ]] | 32 | 64 | - ]] [ command ...]]?Run\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', or an interactive shell if '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted,\n'> <Id.Char_Literals ' with the environment initialized for using the package (can you\n' > <Id.Char_Literals ' say '> <Id.Char_OneChar '\\a'> <Id.Char_Literals shared> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals library> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dll> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' without cussing?) If\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals uid> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\a'> <Id.Char_Literals .> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is specified then it is used\n'> <Id.Char_Literals '\t to determine a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', possibly different from\n'> <Id.Char_Literals '\t the current directory. For example, to try out bozo`s package:\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package use bozo'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals use> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action may be run from any\n'> <Id.Char_Literals ' directory. If the file '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/package/profile'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' readable then it is sourced to initialize the environment. 32 or 64\n' > <Id.Char_Literals '\t implies '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' of . and specifies the target architecture\n'> <Id.Char_Literals '\t word size (which may be silently ignored.)]\n'> <Id.Char_Literals ' [+verify'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]]?Verify installed binary files\n'> <Id.Char_Literals ' against the checksum files in\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '/gen/*.sum'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The checksum\n'> <Id.Char_Literals ' files contain mode, user and group information. If the checksum\n' > <Id.Char_Literals ' matches for a given file then the mode, user and group are\n' > <Id.Char_Literals ' changed as necessary to match the checksum entry. A warning is\n' > <Id.Char_Literals ' printed on the standard error for each mismatch. Requires the\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' package '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cksum> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command.]\n'> <Id.Char_Literals ' [+view'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '?Initialize the architecture specific viewpath\n'> <Id.Char_Literals ' hierarchy. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' bin fun include lib } directories are linked to the same\n' > <Id.Char_Literals ' directories in the package root. Only one architecture may be\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals flat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals make> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' action implicitly calls this action.]\n'> <Id.Char_Literals ' [+write'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']] '> <Id.Char_OneChar '\\a'> <Id.Char_Literals type> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ... [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ...]]?Write\n'> <Id.Char_Literals ' a package archive for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. All work is done in the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals '-specific\n'> <Id.Char_Literals ' files are placed in the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' subdirectory. A\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[.'> <Id.Char_OneChar '\\a'> <Id.Char_Literals type> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .tim> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file in this directory tracks\n'> <Id.Char_Literals ' the write time and prevents a package from being read in the\n' > <Id.Char_Literals ' same root it was written. If more than one file is generated\n' > <Id.Char_Literals ' for a particular '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' then those files are placed in the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals '/'> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' subdirectory. File names in the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' subdirectory will contain the package name, a\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals yyyy-mm-dd> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' date, and for binary packages, '> <Id.Char_OneChar '\\a'> <Id.Char_Literals HOSTTYPE> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. If\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted then an ordered list of previously\n'> <Id.Char_Literals ' written packages is generated. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals only> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then\n'> <Id.Char_Literals ' only the named packages will be written; otherwise prerequisite\n' > <Id.Char_Literals ' packages are written first. Package components must be listed\n' > <Id.Char_Literals ' in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .pkg> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals format> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' may be one of:]\n'> <Id.Char_Literals ' {\n'> <Id.Char_Literals ' [+cyg?Generate a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cygwin> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' package.]\n'> <Id.Char_Literals ' [+exp?Generate an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals exptools> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' maintainer source\n'> <Id.Char_Literals ' archive and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals NPD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' file, suitable for '> <Id.Char_OneChar '\\b'> <Id.Char_Literals expmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> <Id.Char_Literals ' [+lcl?Generate a package archive suitable for\n' > <Id.Char_Literals ' restoration into the local source tree (i.e., the\n' > <Id.Char_Literals ' source is not annotated for licencing.)]\n' > <Id.Char_Literals ' [+pkg?Generate a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pkgmk> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) package suitable for\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pkgadd> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals ' [+rpm?Generate an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rpm> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) package.]\n'> <Id.Char_Literals ' [+tgz?Generate a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gzip> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tar> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) package\n'> <Id.Char_Literals ' archive. This is the default.]\n'> <Id.Char_Literals ' [+tst?Generate a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tgz> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' format package archive in the\n'> <Id.Char_Literals '\t\t '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tst> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' subdirectory. Version state files are not updated.]\n'> <Id.Char_Literals ' }\n'> <Id.Char_Literals ' [+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals type> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' specifies the package type which must be one of\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals source> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals binary> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals runtime> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. A source package\n'> <Id.Char_Literals ' contains the source needed to build the corresponding binary\n' > <Id.Char_Literals ' package. A binary package includes the libraries and headers\n' > <Id.Char_Literals ' needed for compiling and linking against the public interfaces.\n' > <Id.Char_Literals ' A runtime package contains the commands and required dynamic\n' > <Id.Char_Literals ' libraries.]\n'> <Id.Char_Literals ' [+?A package may be either a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals base> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals delta> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. A base\n'> <Id.Char_Literals ' package contains a complete copy of all components. A delta\n' > <Id.Char_Literals ' package contains only changes from a previous base package.\n' > <Id.Char_Literals ' Delta recipients must have the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pax> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command (in\n'> <Id.Char_Literals ' the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast-base> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' package.) If neither '> <Id.Char_OneChar '\\b'> <Id.Char_Literals base> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' nor '> <Id.Char_OneChar '\\b'> <Id.Char_Literals delta> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' specified, then the current base is overwritten if there are no\n' > <Id.Char_Literals ' deltas referring to the current base. Only the ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals tgz> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals lcl> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' formats support '> <Id.Char_OneChar '\\b'> <Id.Char_Literals delta> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals base> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified\n'> <Id.Char_Literals ' then a new base and two delta archives are generated: one delta\n' > <Id.Char_Literals ' to generate the new base from the old, and one delta to\n' > <Id.Char_Literals ' generate the old base from the new; the old base is then\n' > <Id.Char_Literals ' removed. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals delta> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then a new delta referring\n'> <Id.Char_Literals ' to the current base is written.]\n'> <Id.Char_Literals ' [+?'> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .pkg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' may reference other packages. By default\n'> <Id.Char_Literals ' a pointer to those packages is written. The recipient ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package\n'> <Id.Char_Literals ' read'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' will then check that all required packages have been\n' > <Id.Char_Literals ' downloaded. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals closure> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is specified then the components for\n'> <Id.Char_Literals ' all package references are included in the generated package.\n' > <Id.Char_Literals ' This may be useful for '> <Id.Char_OneChar '\\b'> <Id.Char_Literals lcl> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and versioning.]\n'> <Id.Char_Literals ' [+?All formats but '> <Id.Char_OneChar '\\b'> <Id.Char_Literals lcl> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' annotate each '> <Id.Char_OneChar '\\b'> <Id.Char_Literals source> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file (not\n'> <Id.Char_Literals ' already annotated) with a license comment as it is written to\n' > <Id.Char_Literals ' the package archive using '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals ' }\n'> <Id.Char_Literals '[+DETAILS?The package directory hierarchy is rooted at\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. All source and binaries reside under this tree. A two\n' > <Id.Char_Literals ' level viewpath is used to separate source and binaries. The top view is\n' > <Id.Char_Literals ' architecture specific, the bottom view is shared source. All building\n' > <Id.Char_Literals ' is done in the architecture specific view; no source view files are\n' > <Id.Char_Literals ' intentionally changed. This means that many different binary\n' > <Id.Char_Literals ' architectures can be made from a single copy of the source.]\n' > <Id.Char_Literals '[+?Independent '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' hierarchies can be combined by\n'> <Id.Char_Literals ' appending '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT:$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' pairs to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals VPATH> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals VPATH> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' viewing order is from left to right. Each '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' must have a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory.]\n'> <Id.Char_Literals '[+?Each package contains one or more components. Component source for\n' > <Id.Char_Literals ' the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals foo> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' command is in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/src/cmd/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals foo> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', and source\n'> <Id.Char_Literals ' for the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals bar> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' library is in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/src/lib/lib'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals bar> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. This\n'> <Id.Char_Literals ' naming is for convenience only; the underlying makefiles handle\n' > <Id.Char_Literals ' inter-component build order. The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' component, which contains\n'> <Id.Char_Literals ' generic package support files, is always made first, then the\n' > <Id.Char_Literals ' components named '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals '*, then the component order determined by the\n'> <Id.Char_Literals ' closure of component makefile dependencies.]\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' contains package specific files. The\n'> <Id.Char_Literals ' package naming convention is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals group> <Id.Char_OneChar '\\a'> <Id.Char_Literals '[-'> <Id.Char_OneChar '\\a'> <Id.Char_Literals part> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]; e.g., '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast-base> <Id.Char_OneChar '\\b'> <Id.Char_Literals ',\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gnu-fileutils> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. The *'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .pkg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files are ast '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) makefiles\n'> <Id.Char_Literals ' that contain the package name, package components, references to other\n' > <Id.Char_Literals ' packages, and a short package description. *'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .pkg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files are used by\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package write'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' to generate new source and binary packages.]\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/'> <Id.Char_OneChar '\\b'> <Id.Char_OneChar '\\a'> <Id.Char_Literals group> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .lic> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files contain license\n'> <Id.Char_Literals ' information that is used by the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals ' commands to generate source and binary license strings. ' > <Id.Char_OneChar '\\a'> <Id.Char_Literals group> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is\n'> <Id.Char_Literals ' determined by the first '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ':PACKAGE:'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' operator name listed in the\n'> <Id.Char_Literals ' component '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' makefile. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals group> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .lic> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files are part of the\n'> <Id.Char_Literals ' licensing documentation. Each component may have its own ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals LICENSE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file\n'> <Id.Char_Literals ' that overrides the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals group> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .lic> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' file. The full text of the licenses\n'> <Id.Char_Literals ' are in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/LICENSES'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/package/LICENSES'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directories.]\n'> <Id.Char_Literals '[+?A few files are generated in '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/lib/package/gen'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT/lib/package/gen'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .ver> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' contains one line\n'> <Id.Char_Literals ' consisting of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals 'package version release'> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' for the most recent\n'> <Id.Char_Literals ' instance of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' read into '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' is the package name, '> <Id.Char_OneChar '\\a'> <Id.Char_Literals version> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is the '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYY-MM-DD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' base version,\n'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals release> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals version> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' for the base release or '> <Id.Char_OneChar '\\a'> <Id.Char_Literals YYYY-MM-DD> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals ' for delta releases. '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .req> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' contains *'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .ver> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' entries for\n'> <Id.Char_Literals ' the packages required by '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', except that the fourth field is\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 0> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' instead of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 1> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. All packages except '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' require the\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals INIT> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' package. A simple sort of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .pkg> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and *'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .ver> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' determines if the required package have been read in. Finally,\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\b'> <Id.Char_Literals .README> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_OneChar '\\a'> <Id.Char_Literals .html> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' contain the README text\n'> <Id.Char_Literals ' for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals package> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and all its components. Included are all changes added\n' > <Id.Char_Literals ' to the component '> <Id.Char_OneChar '\\b'> <Id.Char_Literals RELEASE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals CHANGES> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ChangeLog> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files dated\n'> <Id.Char_Literals ' since the two most recent base releases. Component ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals RELEASE> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' files\n'> <Id.Char_Literals ' contain tag lines of the form ['> <Id.Char_OneChar '\\a'> <Id.Char_Literals YY> <Id.Char_OneChar '\\a'> <Id.Char_Literals ']]'> <Id.Char_OneChar '\\a'> <Id.Char_Literals YY-MM-DD> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' [ '> <Id.Char_OneChar '\\a'> <Id.Char_Literals text> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' ]] (or\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals date> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) format dates) followed by README text, in reverse\n' > <Id.Char_Literals ' chronological order (newer entries at the top of the file.) ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package\n'> <Id.Char_Literals ' release'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' lists this information, and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package contents ...'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' lists\n'> <Id.Char_Literals ' the descriptions and components.]\n'> <Id.Char_Literals '[+?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOSTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' names the current binary architecture and is determined\n' > <Id.Char_Literals ' by the output of '> <Id.Char_OneChar '\\b'> <Id.Char_Literals package> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (no arguments.) The '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOSTTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' naming\n'> <Id.Char_Literals ' scheme is used to separate incompatible executable and object formats.\n' > <Id.Char_Literals ' All architecture specific binaries are placed under ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/arch/$HOSTTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.) There are a few places that match\n'> <Id.Char_Literals ' against '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOSTTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' when making binaries; these are limited to\n'> <Id.Char_Literals ' makefile compiler workarounds, e.g., if '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOSTTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' matches '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'hp.*'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' then turn off the optimizer for these objects. All other architecture\n' > <Id.Char_Literals ' dependent logic is handled either by the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals iffe> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command or\n'> <Id.Char_Literals ' by component specific configure scripts. Explicit '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$HOSTYPE'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' values matching *,*cc*[,-*,...]] optionally set the default ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals CC> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals CCFLAGS> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. This is handy for build farms that support different\n' > <Id.Char_Literals ' compilers on the same architecture.]\n'> <Id.Char_Literals '[+?Each component contains an '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) makefile (either\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals Nmakefile> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals Makefile> <Id.Char_OneChar '\\b'> <Id.Char_Literals ') and a '> <Id.Char_OneChar '\\b'> <Id.Char_Literals MAM> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (make abstract machine)\n'> <Id.Char_Literals ' file ('> <Id.Char_OneChar '\\b'> <Id.Char_Literals Mamfile> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.) A Mamfile contains a portable makefile description\n' > <Id.Char_Literals ' that is used by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) to simulate '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '. Currently there is\n'> <Id.Char_Literals ' no support for old-make/gnu-make makefiles; if the binaries are just\n' > <Id.Char_Literals ' being built then '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' will suffice; if source or makefile\n'> <Id.Char_Literals ' modifications are anticipated then '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast-base> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' package) should be used. Mamfiles are automatically generated by\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package write'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '[+?Most component C source is prototyped. If '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$CC'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' (default value\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cc> <Id.Char_OneChar '\\b'> <Id.Char_Literals ') is not a prototyping C compiler then '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package make'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' runs\n'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) on portions of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/src'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' tree and places\n'> <Id.Char_Literals ' the converted output files in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT/proto/src'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' tree.\n'> <Id.Char_Literals ' Converted files are then viewpathed over the original source.\n' > <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) converts an ANSI C subset to code that is compatible with\n' > <Id.Char_Literals ' K&R, ANSI, and C++ dialects.]\n'> <Id.Char_Literals '[+?All scripts and commands under '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' use '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals ' relative pathnames (via the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pathpath> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(3) function); there\n'> <Id.Char_Literals ' are no imbedded absolute pathnames. This means that binaries generated\n' > <Id.Char_Literals ' under '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PACKAGEROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' may be copied to a different root; users need\n'> <Id.Char_Literals ' only change their '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' variable to reference the new installation\n'> <Id.Char_Literals ' root '> <Id.Char_OneChar '\\b'> <Id.Char_Literals bin> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' directory. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals 'package install'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' installs binary packages in\n'> <Id.Char_Literals ' a new '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '.]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals autoconfig> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals cksum> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals execrate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals expmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals gzip> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals make> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals mamake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals nmake> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pax> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals pkgadd> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals pkgmk> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals proto> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ratz> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals rpm> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals tar> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals optget> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(3)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Star '*')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <help> pattern: (pat.Words words:[{<help>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {<--man>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {<-a>} {($ Id.VSub_DollarName command)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {($ Id.VSub_DollarName OPTIND) <-1>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName AR)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'AR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AR='> name:AR) op: assign_op.Equal rhs: {<ar>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName LD)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LD='> name:LD) op: assign_op.Equal rhs: {<ld>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NM)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NM='> name:NM) op: assign_op.Equal rhs: {<nm>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_all='> name:admin_all) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_on='> name:admin_on) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'authorize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'authorize='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'authorize='> name:authorize) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bit='> name:bit) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'flat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'flat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flat='> name:flat) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'force='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'force='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'global='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'global='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'global='> name:global) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hi='> name:hi) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'html='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'html='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'html='> name:html) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ifs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifs='> name:ifs) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name IFS> var_name: IFS suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{(SQ <'\n'> <'\t '>)}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lo='> name:lo) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'make='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'make='> name:make) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'makeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makeflags='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'makeflags='> name:makeflags) op: assign_op.Equal rhs: {(SQ <'-k -K'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nmakeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nmakeflags='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nmakeflags='> name:nmakeflags) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nmakesep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nmakesep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nmakesep='> name:nmakesep) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(DQ <'\n'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'noexec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'noexec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noexec='> name:noexec) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'only='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'only='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'only='> name:only) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'output='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'output='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package_src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package_src='> name:package_src) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'password='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'password='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'password='> name:password) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'quiet='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quiet='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'quiet='> name:quiet) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'show='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tab='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tab='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab='> name:tab) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'verbose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'verbose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'AUTHORIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTHORIZE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AUTHORIZE='> name:AUTHORIZE) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DEBUG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DEBUG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'HURL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HURL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HURL='> name:HURL) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PROTOROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROTOROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTOROOT='> name:PROTOROOT) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELLMAGIC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELLMAGIC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELLMAGIC='> name:SHELLMAGIC) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <unset> more_env: [] words: [ {<unset>} {<FIGNORE>} {<BINDIR>} {<DLLDIR>} {<ETCDIR>} {<FUNDIR>} {<INCLUDEDIR>} {<LIBDIR>} {<LOCALEDIR>} {<MANDIR>} {<SHAREDIR>} ] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok:<true> more_env:[] words:[{<true>}] redirects:[] do_fork:T) ] ops: [<Id.Op_DPipe _>] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<host>} {<type>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words: [ {<admin>} {<clean>} {<clobber>} {<contents>} {<copyright>} {<export>} {<host>} {<install>} {<license>} {<list>} {<make>} {<read>} {<regress>} {<release>} {<remove>} {<results>} {<setup>} {<test>} {<update>} {<use>} {<verify>} {<view>} {<write>} {<TEST>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Break break>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <authorize> pattern: (pat.Words words:[{<authorize>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<authorization>} {<user>} {<name>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'authorize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'authorize='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'authorize='> name:authorize) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <debug> pattern: (pat.Words words:[{<debug>} {<environment>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'make='> name:make) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <flat> pattern: (pat.Words words:[{<flat>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'flat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'flat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flat='> name:flat) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <force> pattern: (pat.Words words:[{<force>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'force='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'force='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <never> pattern: (pat.Words words:[{<never>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'noexec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noexec='> name:noexec) op: assign_op.Equal rhs: {<-N>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <only> pattern: (pat.Words words:[{<only>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'only='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'only='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'only='> name:only) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <password> pattern: (pat.Words words:[{<password>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<authorization>} {<password>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'password='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'password='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'password='> name:password) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <quiet> pattern: (pat.Words words:[{<quiet>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'quiet='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quiet='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'quiet='> name:quiet) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <show> pattern: (pat.Words words:[{<show>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'noexec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'noexec='> name:noexec) op: assign_op.Equal rhs: {<-n>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <verbose> pattern: (pat.Words words:[{<verbose>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'verbose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'verbose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <DEBUG> pattern: (pat.Words words:[{<DEBUG>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DEBUG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DEBUG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PS4='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PS4='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PS4='> name:PS4) op: assign_op.Equal rhs: {(SQ <'+$LINENO:$SECONDS+ '>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <help> pattern: (pat.Words words: [ {<help>} {<HELP>} {<html>} {<man>} {<--> <Id.Lit_LBracket '['> <Id.Lit_QMark '?'> <m> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <help> pattern: (pat.Words words:[{<help>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <html> pattern: (pat.Words words:[{<html>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) (AssignPair left: <Id.Lit_VarLike 'html='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'html='> name:html) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName html)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bO='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bO='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bO='> name:bO) op: assign_op.Equal rhs: { (DQ <'<HTML>\n'> <'<HEAD>\n'> <'<TITLE>'> ($ Id.VSub_Number 2) <' package installation instructions</TITLE>\n'> <'<HEAD>\n'> <'<BODY bgcolor=white link=teal vlink=dimgray>'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'eO='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'eO='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eO='> name:eO) op: assign_op.Equal rhs: {(SQ <'</BODY>\n'> <'</HTML>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bH='> name:bH) op: assign_op.Equal rhs: {(DQ <'<CENTER><H3><FONT face=courier color=red>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'eH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'eH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eH='> name:eH) op: assign_op.Equal rhs: {(SQ <'</FONT></H3></CENTER>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bP='> name:bP) op: assign_op.Equal rhs: {(SQ <'<P>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bL='> name:bL) op: assign_op.Equal rhs: {(SQ <'<P><TABLE cellpadding=0 cellspacing=2>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bL2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bL2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bL2='> name:bL2) op: assign_op.Equal rhs: {(SQ <'<P><TABLE border=0 cellpadding=0 cellspacing=2>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'eL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'eL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eL='> name:eL) op: assign_op.Equal rhs: {(SQ <'</TABLE><P>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bT='> name:bT) op: assign_op.Equal rhs: {(SQ <'<TR><TD align=right valign=top><B>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bD='> name:bD) op: assign_op.Equal rhs: {(SQ <'</B></TD><TD align=left>'>)} ) (AssignPair left: <Id.Lit_VarLike 'eD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eD='> name:eD) op: assign_op.Equal rhs: {(SQ <'</TD></TR>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bB='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bB='> name:bB) op: assign_op.Equal rhs: {(SQ <'<B>'>)} ) (AssignPair left: <Id.Lit_VarLike 'eB='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eB='> name:eB) op: assign_op.Equal rhs: {(SQ <'</B>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bI='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bI='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bI='> name:bI) op: assign_op.Equal rhs: {(SQ <'<I>'>)} ) (AssignPair left: <Id.Lit_VarLike 'eI='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eI='> name:eI) op: assign_op.Equal rhs: {(SQ <'</I>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bX='> name:bX) op: assign_op.Equal rhs: {(SQ <'<PRE>'>)} ) (AssignPair left: <Id.Lit_VarLike 'eX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eX='> name:eX) op: assign_op.Equal rhs: {(SQ <'</PRE>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bF='> name:bF) op: assign_op.Equal rhs: {(SQ <'<TT>'>)} ) (AssignPair left: <Id.Lit_VarLike 'eF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eF='> name:eF) op: assign_op.Equal rhs: {(SQ <'</TT>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Camp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Camp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Camp='> name:Camp) op: assign_op.Equal rhs: {(SQ <'&'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mcurl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mcurl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mcurl='> name:Mcurl) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/curl.html>curl</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mdate='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mdate='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mdate='> name:Mdate) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/date.html>date</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mfile='> name:Mfile) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/file.html>file</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mgunzip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mgunzip='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'Mgunzip='> name: Mgunzip ) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/gzip.html>gunzip</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mhurl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mhurl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mhurl='> name:Mhurl) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/hurl.html>hurl</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mlynx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mlynx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mlynx='> name:Mlynx) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/lynx.html>lynx</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mnmake='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mnmake='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mnmake='> name:Mnmake) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/nmake.html>nmake</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mpackage='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mpackage='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'Mpackage='> name: Mpackage ) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/package.html>package</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mproto='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mproto='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mproto='> name:Mproto) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/proto.html>proto</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mratz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mratz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mratz='> name:Mratz) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/ratz.html>ratz</A>'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mtar='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mtar='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mtar='> name:Mtar) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/tar.html>tar</A>(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mwget='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mwget='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mwget='> name:Mwget) op: assign_op.Equal rhs: {(SQ <'<A href=../../man/man1/wget.html>wget</A>(1)'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bO='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bO='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bO='> name:bO) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eO='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eO='> name:eO) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bH='> name:bH) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eH='> name:eH) op: assign_op.Equal rhs: {(SQ <':'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bP='> name:bP) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bL='> name:bL) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eL='> name:eL) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bL2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bL2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bL2='> name:bL2) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bT='> name:bT) op: assign_op.Equal rhs: {(SQ <' '>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bD='> name:bD) op: assign_op.Equal rhs: {(SQ <' '>)} ) (AssignPair left: <Id.Lit_VarLike 'eD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eD='> name:eD) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bB='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bB='> name:bB) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eB='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eB='> name:eB) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bI='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bI='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bI='> name:bI) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eI='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eI='> name:eI) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bX='> name:bX) op: assign_op.Equal rhs: {(SQ )} ) (AssignPair left: <Id.Lit_VarLike 'eX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eX='> name:eX) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'bF='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bF='> name:bF) op: assign_op.Equal rhs: {(SQ <'"'>)} ) (AssignPair left: <Id.Lit_VarLike 'eF='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eF='> name:eF) op: assign_op.Equal rhs: {(SQ <'"'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Camp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Camp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Camp='> name:Camp) op: assign_op.Equal rhs: {(SQ <'&'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mcurl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mcurl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mcurl='> name:Mcurl) op: assign_op.Equal rhs: {(SQ <'curl(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mdate='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mdate='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mdate='> name:Mdate) op: assign_op.Equal rhs: {(SQ <'date(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mfile='> name:Mfile) op: assign_op.Equal rhs: {(SQ <'file(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mgunzip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mgunzip='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'Mgunzip='> name: Mgunzip ) op: assign_op.Equal rhs: {(SQ <'gunzip(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mhurl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mhurl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mhurl='> name:Mhurl) op: assign_op.Equal rhs: {(SQ <'hurl(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mlynx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mlynx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mlynx='> name:Mlynx) op: assign_op.Equal rhs: {(SQ <'lynx(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mnmake='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mnmake='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mnmake='> name:Mnmake) op: assign_op.Equal rhs: {(SQ <'nmake(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mpackage='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mpackage='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'Mpackage='> name: Mpackage ) op: assign_op.Equal rhs: {(SQ <'package(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mproto='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mproto='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mproto='> name:Mproto) op: assign_op.Equal rhs: {(SQ <'proto(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mratz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mratz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mratz='> name:Mratz) op: assign_op.Equal rhs: {(SQ <ratz>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mtar='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mtar='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mtar='> name:Mtar) op: assign_op.Equal rhs: {(SQ <'tar(1)'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Mwget='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Mwget='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Mwget='> name:Mwget) op: assign_op.Equal rhs: {(SQ <'wget(1)'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name bO) <'\n'> (${ Id.VSub_Name bH) <'Binary Package Installation Instructions'> (${ Id.VSub_Name eH) <'\n'> (${ Id.VSub_Name bL) <'\n'> (${ Id.VSub_Name bT) <'(1)'> (${ Id.VSub_Name bD) <'Do not install packages as '> (${ Id.VSub_Name bI) <'root/super-user'> (${ Id.VSub_Name eI) <'. Although some components may\n'> <' have setuid executables, few must be owned by '> (${ Id.VSub_Name bI) <root> (${ Id.VSub_Name eI) <'. These are best\n'> < ' changed manually when the security implications are understood.' > (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(2)'> (${ Id.VSub_Name bD) < 'Choose a package root directory and cd to it. This will be a local work\n' > <' area for all packages.'> (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(3)'> (${ Id.VSub_Name bD) <'These instructions bypass the '> (${ Id.VSub_Name bI) <'click to download'> (${ Id.VSub_Name eI) <' package links on the\n'> <' download site. If you already clicked, or if your system does not have\n'> <' '> (${ Id.VSub_Name Mcurl) <', '> (${ Id.VSub_Name Mhurl) <', '> (${ Id.VSub_Name Mlynx) <' or '> (${ Id.VSub_Name Mwget) <' then use the alternate instructions\n'> <' for (3),(4),(5) in plan '> (${ Id.VSub_Name bB) <B> (${ Id.VSub_Name eB) <' below. Plan '> (${ Id.VSub_Name bB) <B> (${ Id.VSub_Name eB) <' installs the '> (${ Id.VSub_Name Mhurl) <'\n'> < ' script which works with ksh and modern bash. The top level URL is:' > (${ Id.VSub_Name bX) <'\n'> <'\t\tURL=http://www.research.att.com/sw/download'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(4)'> (${ Id.VSub_Name bD) <'If the '> (${ Id.VSub_Name bB) <'bin/package'> (${ Id.VSub_Name eB) <' script does not exist then run:'> (${ Id.VSub_Name bX) <'\n'> <'\t\ttest -d bin || mkdir bin\n'> <'\t\turl='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'URL/package\n'> <'\t\t(wget -O - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'url||curl -L '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'url||hurl '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'url) > bin/package\n'> <'\t\tchmod +x bin/package'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(5)'> (${ Id.VSub_Name bD) <'Determine the list of package names you want from the download site, then\n'> <' use the '> (${ Id.VSub_Name Mpackage) <' command to do the actual download:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package authorize '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' password '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t\t\tsetup binary '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'URL '> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) <' ...'> (${ Id.VSub_Name eX) <'\n'> <' (Refer to the '> (${ Id.VSub_Name bB) <AUTHORIZATION> (${ Id.VSub_Name eB) <' paragraph on the main download page for\n'> <' '> (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) <'/'> (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) <' details.) This downloads the closure of the latest\n'> <' binary package(s); covered and up-to-date packages are not downloaded again unless\n'> <' '> (${ Id.VSub_Name bB) <'package force ...'> (${ Id.VSub_Name eB) <' is specified. Package content is verified using '> (${ Id.VSub_Name bB) (${ Id.VSub_Name checksum) (${ Id.VSub_Name eB) <'.\n'> < ' If the package root will contain only one architecture then you can install in ' > (${ Id.VSub_Name bB) <bin> (${ Id.VSub_Name eB) <' and\n'> <' '> (${ Id.VSub_Name bB) <lib> (${ Id.VSub_Name eB) <' instead of '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/bin'> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/lib'> (${ Id.VSub_Name eB) <' by running this\n'> <' instead:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package authorize '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' password '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t\t\tflat setup binary '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'URL '> (${ Id.VSub_Name bB) <PACKAGE> (${ Id.VSub_Name eB) <' ...'> (${ Id.VSub_Name eX) <'\n'> <' To update the same packages from the same URL run:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package setup binary'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(6)'> (${ Id.VSub_Name bD) < 'The packaged binaries are position independent, i.e., they do not\n' > <' contain hard-coded paths. However, commands with related files, like\n'> <' '> (${ Id.VSub_Name Mfile) <' and '> (${ Id.VSub_Name Mnmake) <', require the path of the bin directory to be\n'> <' exported in '> (${ Id.VSub_Name bB) <PATH> (${ Id.VSub_Name eb) <.> (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(7)'> (${ Id.VSub_Name bD) <'You can run the binaries directly from the package root, or you can\n'> <' install them in a public root (requires the '> (${ Id.VSub_Name bI) <AT> (${ Id.VSub_Name Camp) <T> (${ Id.VSub_Name eI) <' '> (${ Id.VSub_Name Mnmake) <' command):'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package flat install '> (${ Id.VSub_Name bI) <'DIRECTORY PACKAGE'> (${ Id.VSub_Name eI) (${ Id.VSub_Name eX) <'\n'> <' This will install in '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/bin'> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/lib'> (${ Id.VSub_Name eB) <'. If you want to\n'> <' preserve the '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) <' hierarchy under '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) <' then omit the\n'> <' '> (${ Id.VSub_Name bB) <flat> (${ Id.VSub_Name eB) <' argument. If you don\'t have '> (${ Id.VSub_Name Mnmake) <' then the following will do a\n'> <' flat install:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tcd '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT\n'> <'\t\tcp -p -r bin lib include '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(8)'> (${ Id.VSub_Name bD) < 'To summarize, after the first time, the download cycle for the latest\n' > <' binary release is:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package setup binary'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) (${ Id.VSub_Name eL) <'\n'> <'\n'> (${ Id.VSub_Name bH) <'Binary Package Installation Instructions -- Plan B'> (${ Id.VSub_Name eH) <'\n'> (${ Id.VSub_Name bL) <'\n'> (${ Id.VSub_Name bT) <'(3)'> (${ Id.VSub_Name bD) <'Create the subdirectory '> (${ Id.VSub_Name bB) <'lib/package/tgz'> (${ Id.VSub_Name eB) <' and download all package archives\n'> <' into that directory.'> (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(4)'> (${ Id.VSub_Name bD) <'If the '> (${ Id.VSub_Name bB) <'bin/package'> (${ Id.VSub_Name eB) <' script does not exist then manually read the '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <'\n'> <' binary package:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tgunzip < lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <YYYY-MM-DD.HOSTTYPE> (${ Id.VSub_Name eI) <'.tgz |\n'> <'\t\t\t'> (${ Id.VSub_Name TAR) <' '> (${ Id.VSub_Name TARFLAGS) <'f -'> (${ Id.VSub_Name eX) <'\n'> < ' Note that some browsers automatically unzip downloaded without warning.\n' > <' If the gunzip fails try:\n'> <'\t\t'> (${ Id.VSub_Name TAR) <' '> (${ Id.VSub_Name TARFLAGS) <'f -'> (${ Id.VSub_Name eX) <' lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <YYYY-MM-DD.HOSTTYPE> (${ Id.VSub_Name eI) <'.tgz\n'> <' If your system does not have '> (${ Id.VSub_Name Mtar) <' or '> (${ Id.VSub_Name Mgunzip) <' then download the '> (${ Id.VSub_Name Mratz) <'\n'> <' binary package:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tmkdir bin\n'> <'\t\tcp lib/package/tgz/ratz.'> (${ Id.VSub_Name bI) <YYYY-MM-DD.HOSTTYPE> (${ Id.VSub_Name eI) <'.exe bin/ratz\n'> <'\t\tchmod +x bin/ratz\n'> <'\t\tbin/ratz -lm < lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <'YYYY-MM-DD/HOSTTYPE'> (${ Id.VSub_Name eI) <'.tgz\n'> (${ Id.VSub_Name bT) <'(5)'> (${ Id.VSub_Name bD) <'Read all unread package archive(s):'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package read'> (${ Id.VSub_Name eX) <'\n'> < ' Both source and binary packages will be read by this step.' > (${ Id.VSub_Name eD) (${ Id.VSub_Name eL) (${ Id.VSub_Name eO) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <intro> pattern: (pat.Words words:[{<intro>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name bO) <'\n'> (${ Id.VSub_Name bH) <'Package Hierarchy Details'> (${ Id.VSub_Name eH) <'\n'> (${ Id.VSub_Name bP) <'\n'> <'The package directory hierarchy is rooted at '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PACKAGEROOT> (${ Id.VSub_Name eB) <'. All source and\n'> <'binaries reside under this tree. A two level viewpath is used to separate\n'> < 'source and binaries. The top view is architecture specific, the bottom view\n' > <'is shared source. All building is done in the architecture specific view;\n'> < 'no source view files are intentionally changed. This means that many\n' > <'different binary architectures can be made from a single copy of the source.\n'> (${ Id.VSub_Name bP) <'\n'> <'Each package contains one or more components. Component source for the '> (${ Id.VSub_Name bI) <FOO> (${ Id.VSub_Name eI) <'\n'> <'command is in '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/src/cmd/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <FOO> (${ Id.VSub_Name eI) <', and source for the '> (${ Id.VSub_Name bI) <BAR> (${ Id.VSub_Name eI) <' library is\n'> <'in '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/src/lib/lib'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <BAR> (${ Id.VSub_Name eI) <'. This naming is for convenience only; the\n'> <'underlying makefiles handle inter-component build order. The '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <' component,\n'> <'which contains generic package support files, is always made first, then the\n'> <'components named '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <'*, then the order determined by the closure of component\n'> <'makefile dependencies.\n'> (${ Id.VSub_Name bP) <'\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/lib/package'> (${ Id.VSub_Name eB) <' contains package specific files. The package naming\n'> <'convention is '> (${ Id.VSub_Name bI) <GROUP> (${ Id.VSub_Name eI) <'['> (${ Id.VSub_Name bI) <-PART> (${ Id.VSub_Name eI) <']; e.g., '> (${ Id.VSub_Name bB) <ast-base> (${ Id.VSub_Name eB) <', '> (${ Id.VSub_Name bB) <gnu-fileutils> (${ Id.VSub_Name eB) <'. The *'> (${ Id.VSub_Name bB) <.pkg> (${ Id.VSub_Name eB) <' files\n'> <'are '> (${ Id.VSub_Name bB) <ast> (${ Id.VSub_Name eB) <' '> (${ Id.VSub_Name Mnmake) < ' makefiles that contain the package name, package components,\n' > <'references to other packages, and a short package description. *'> (${ Id.VSub_Name bB) <.pkg> (${ Id.VSub_Name eB) <' files\n'> <'are used by '> (${ Id.VSub_Name bF) <'package write'> (${ Id.VSub_Name eF) <' to generate new source and binary packages.\n'> (${ Id.VSub_Name bP) <'\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/lib/package/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <GROUP> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.lic> (${ Id.VSub_Name eB) <' files contain license information that\n'> <'is used by the '> (${ Id.VSub_Name bB) <ast> (${ Id.VSub_Name eB) <' '> (${ Id.VSub_Name Mproto) <' and '> (${ Id.VSub_Name Mnmake) <' commands to generate source and\n'> <'binary license strings. '> (${ Id.VSub_Name bI) <GROUP> (${ Id.VSub_Name eI) <' is determined by the first '> (${ Id.VSub_Name bB) <':PACKAGE:'> (${ Id.VSub_Name eB) <' operator\n'> <'name listed in the component '> (${ Id.VSub_Name bB) <nmake> (${ Id.VSub_Name eB) <' makefile. '> (${ Id.VSub_Name bI) <GROUP> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.lic> (${ Id.VSub_Name eB) <' files are part of the\n'> <'licensing documentation. Each component may have its own '> (${ Id.VSub_Name bB) <LICENSE> (${ Id.VSub_Name eB) <' file that\n'> <'overrides the '> (${ Id.VSub_Name bI) <GROUP> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.lic> (${ Id.VSub_Name eB) <' file. The full text of the licenses are in the\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT/lib/package/LICENSES'> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/lib/package/LICENSES'> (${ Id.VSub_Name eB) <'\n'> <'directories.\n'> (${ Id.VSub_Name bP) <'\n'> <'A few files are generated in '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/lib/package/gen'> (${ Id.VSub_Name eB) <' and\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/lib/package/gen'> (${ Id.VSub_Name eB) <'. '> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.ver> (${ Id.VSub_Name eB) <' contains one line consisting of'> (${ Id.VSub_Name bX) <'\n'> <'\t'> (${ Id.VSub_Name bI) <'PACKAGE VERSION RELEASE'> (${ Id.VSub_Name eI) <' 1'> (${ Id.VSub_Name eX) <'\n'> <'for the most recent instance of '> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) <' read into '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PACKAGEROOT> (${ Id.VSub_Name eB) <', where\n'> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) <' is the package name, '> (${ Id.VSub_Name bI) <VERSION> (${ Id.VSub_Name eI) <' is the '> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <' base version,\n'> <'and '> (${ Id.VSub_Name bI) <RELEASE> (${ Id.VSub_Name eI) <' is '> (${ Id.VSub_Name bI) <VERSION> (${ Id.VSub_Name eI) <' for the base release or '> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <' for delta releases.\n'> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.req> (${ Id.VSub_Name eB) <' contains *'> (${ Id.VSub_Name bB) <.ver> (${ Id.VSub_Name eB) <' entries for the packages required by\n'> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) <', except that the fourth field is 0 instead of 1. All packages\n'> <'except '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name Mratz) <' require the '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <' package. A simple sort of '> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.pkg> (${ Id.VSub_Name eB) <'\n'> <'and *'> (${ Id.VSub_Name bB) <.ver> (${ Id.VSub_Name eB) <' determines if the required package have been read in. Finally,\n'> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <.README> (${ Id.VSub_Name eB) <' contains the '> (${ Id.VSub_Name bB) <README> (${ Id.VSub_Name eB) <' text for '> (${ Id.VSub_Name bI) <PACKAGE> (${ Id.VSub_Name eI) <' and all its\n'> <'components. Included are all changes added to the component '> (${ Id.VSub_Name bB) <RELEASE> (${ Id.VSub_Name eB) <',\n'> (${ Id.VSub_Name bB) <CHANGES> (${ Id.VSub_Name eB) <' or '> (${ Id.VSub_Name bB) <ChangeLog> (${ Id.VSub_Name eB) <' files dated since the two most recent base\n'> <'releases. Component '> (${ Id.VSub_Name bB) <RELEASE> (${ Id.VSub_Name eB) <' files contain tag lines of the form\n'> <'['> (${ Id.VSub_Name bI) <CC> (${ Id.VSub_Name eI) <']'> (${ Id.VSub_Name bI) <YY-MM-DD> (${ Id.VSub_Name eI) <' [ '> (${ Id.VSub_Name bI) <TEXT> (${ Id.VSub_Name eI) <' ] (or '> (${ Id.VSub_Name Mdate) <' format dates) followed by README\n'> <'text, in reverse chronological order (newer entries at the top of the\n'> <'file.) '> (${ Id.VSub_Name bF) <'package release'> (${ Id.VSub_Name eF) <' generates this information, and\n'> (${ Id.VSub_Name bF) <'package contents ...'> (${ Id.VSub_Name eF) <' lists the descriptions and components.\n'> (${ Id.VSub_Name bP) <'\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <HOSTYPE> (${ Id.VSub_Name eB) < ' names the current binary architecture and is determined by the\n' > <'output of '> (${ Id.VSub_Name bF) <package> (${ Id.VSub_Name eF) <' (no arguments.) The '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <HOSTTYPE> (${ Id.VSub_Name eB) <' naming scheme is used\n'> <'to separate incompatible executable and object formats. All architecture\n'> <'specific binaries are placed under '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <INSTALLROOT> (${ Id.VSub_Name eB) <' ('> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT/arch/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <HOSTTYPE> (${ Id.VSub_Name eB) <'.)\n'> <'There are a few places that match against '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <HOSTTYPE> (${ Id.VSub_Name eB) <' when making binaries; these\n'> <'are limited to makefile compiler workarounds, e.g., if '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <HOSTTYPE> (${ Id.VSub_Name eB) <' matches\n'> <'\'hp.*\' then turn off the optimizer for these objects. All other architecture\n'> <'dependent logic is handled either by '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'INSTALLROOT/bin/iffe'> (${ Id.VSub_Name eB) <' or by component\n'> <'specific configure scripts. Explicit '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <HOSTYPE> (${ Id.VSub_Name eB) <' values matching *,*cc*[,-*,...]\n'> <'optionally set the default '> (${ Id.VSub_Name bB) <CC> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bB) <CCFLAGS> (${ Id.VSub_Name eB) <'. This is handy for build\n'> < 'farms that support different compilers on the same architecture.\n' > (${ Id.VSub_Name bP) <'\n'> <'Each component contains an '> (${ Id.VSub_Name bB) <ast> (${ Id.VSub_Name eB) <' '> (${ Id.VSub_Name Mnmake) <' makefile (either '> (${ Id.VSub_Name bB) <Nmakefile> (${ Id.VSub_Name eB) <' or '> (${ Id.VSub_Name bB) <Makefile> (${ Id.VSub_Name eB) <')\n'> <'and a '> (${ Id.VSub_Name bI) <MAM> (${ Id.VSub_Name eI) <' (make abstract machine) file ('> (${ Id.VSub_Name bB) <Mamfile> (${ Id.VSub_Name eB) <'.) A Mamfile contains a portable\n'> <'makefile description that is used by '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/bin/mamake'> (${ Id.VSub_Name eB) <' to simulate\n'> (${ Id.VSub_Name bB) <nmake> (${ Id.VSub_Name eB) <'. Currently there is no support for old-make/gnu-make makefiles; if\n'> <'the binaries are just being built then '> (${ Id.VSub_Name bB) <mamake> (${ Id.VSub_Name eB) <' will suffice; if source or\n'> <'makefile modifications are anticipated then '> (${ Id.VSub_Name bB) <nmake> (${ Id.VSub_Name eB) <' (from the '> (${ Id.VSub_Name bB) <ast-open> (${ Id.VSub_Name eB) <' or\n'> (${ Id.VSub_Name bB) <ast-base> (${ Id.VSub_Name eB) < ' package) should be used. Mamfiles are automatically generated by\n' > (${ Id.VSub_Name bF) <'package write'> (${ Id.VSub_Name eF) <'.\n'> (${ Id.VSub_Name bP) <'\n'> <'Most component C source is prototyped. If '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <CC> (${ Id.VSub_Name eB) <' (default value '> (${ Id.VSub_Name bB) <cc> (${ Id.VSub_Name eB) <') is not a\n'> <'prototyping C compiler then '> (${ Id.VSub_Name bF) <'package make'> (${ Id.VSub_Name eF) <' runs '> (${ Id.VSub_Name Mproto) <' on portions of the\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT/src'> (${ Id.VSub_Name eB) <' tree and places the converted output files in the\n'> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/proto/src'> (${ Id.VSub_Name eB) <' tree. Converted files are then viewpathed over the\n'> <'original source. The '> (${ Id.VSub_Name bB) <ast> (${ Id.VSub_Name eB) <' '> (${ Id.VSub_Name Mproto) <' command converts an ANSI C subset to code\n'> <'that is compatible with K&R, ANSI, and C++ dialects.\n'> (${ Id.VSub_Name bP) <'\n'> <'All scripts and commands under '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PACKAGEROOT> (${ Id.VSub_Name eB) <' use '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PATH> (${ Id.VSub_Name eB) <' relative pathnames;\n'> < 'there are no imbedded absolute pathnames. This means that binaries generated\n' > <'under '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PACKAGEROOT> (${ Id.VSub_Name eB) <' may be copied to a different root; users need only change\n'> <'their '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <PATH> (${ Id.VSub_Name eB) < ' variable to reference the new instalation root bin directory.\n' > (${ Id.VSub_Name bF) <'package install'> (${ Id.VSub_Name eF) <' installs binary packages in a new '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <INSTALLROOT> (${ Id.VSub_Name eB) <'.\n'> (${ Id.VSub_Name eO) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <source> pattern: (pat.Words words:[{<source>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name bO) <'\n'> (${ Id.VSub_Name bH) <'Source Package Installation Instructions'> (${ Id.VSub_Name eH) <'\n'> (${ Id.VSub_Name bL) <'\n'> (${ Id.VSub_Name bT) <'(1)'> (${ Id.VSub_Name bD) <'Do not install packages as '> (${ Id.VSub_Name bI) <'root/super-user'> (${ Id.VSub_Name eI) <'. Although some components may\n'> <' have setuid executables, few must be owned by '> (${ Id.VSub_Name bI) <root> (${ Id.VSub_Name eI) <'. These are best\n'> < ' changed manually when the security implications are understood.' > (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(2)'> (${ Id.VSub_Name bD) < 'Choose a package root directory and cd to it. This will be a local work\n' > <' area for all packages.\n'> (${ Id.VSub_Name bT) <'(3)'> (${ Id.VSub_Name bD) <'These instructions bypass the '> (${ Id.VSub_Name bI) <'click to download'> (${ Id.VSub_Name eI) <' package links on the\n'> < ' download site. If you already clicked, or if your system does not have\n' > <' '> (${ Id.VSub_Name Mcurl) <', '> (${ Id.VSub_Name Mhurl) <', '> (${ Id.VSub_Name Mlynx) <' or '> (${ Id.VSub_Name Mwget) <' then use the alternate instructions\n'> <' for (3),(4),(5) in plan '> (${ Id.VSub_Name bB) <B> (${ Id.VSub_Name eB) <' below. Plan '> (${ Id.VSub_Name bB) <B> (${ Id.VSub_Name eB) <' installs the '> (${ Id.VSub_Name Mhurl) <'\n'> <' script which works with ksh and modern bash. The top level URL is:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tURL=http://www.research.att.com/sw/download'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(4)'> (${ Id.VSub_Name bD) <'If the '> (${ Id.VSub_Name bB) <'bin/package'> (${ Id.VSub_Name eB) <' script does not exist then run:'> (${ Id.VSub_Name bX) <'\n'> <'\t\ttest -d bin || mkdir bin\n'> <'\t\turl='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'URL/package\n'> <'\t\t(wget -O - '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'url||curl -L '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'url||hurl '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'url) > bin/package\n'> <'\t\tchmod +x bin/package'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(5)'> (${ Id.VSub_Name bD) < 'Determine the list of package names you want from the download site, then\n' > <' use the '> (${ Id.VSub_Name Mpackage) <' command to do the actual download:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package authorize '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' password '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t\t\tsetup source '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'URL '> (${ Id.VSub_Name bB) <PACKAGE> (${ Id.VSub_Name eB) <' ...'> (${ Id.VSub_Name eX) <'\n'> <' (Refer to the '> (${ Id.VSub_Name bB) <AUTHORIZATION> (${ Id.VSub_Name eB) <' paragraph on the main download page for\n'> <' '> (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) <'/'> (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) <' details.) This downloads the closure of the latest\n'> <' source package(s); covered and up-to-date packages are not downloaded again unless\n'> <' '> (${ Id.VSub_Name bB) <'package force ...'> (${ Id.VSub_Name eB) <' is specified. Package content is verified using '> (${ Id.VSub_Name bB) (${ Id.VSub_Name checksum) (${ Id.VSub_Name eB) <'.\n'> < ' If the package root will contain only one architecture then you can install in ' > (${ Id.VSub_Name bB) <bin> (${ Id.VSub_Name eB) <' and\n'> <' '> (${ Id.VSub_Name bB) <lib> (${ Id.VSub_Name eB) <' instead of '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/bin'> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/lib'> (${ Id.VSub_Name eB) <' by running this\n'> <' instead:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package authorize '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (${ Id.VSub_Name bI) <NAME> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' password '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name bI) <PASSWORD> (${ Id.VSub_Name eI) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t\t\tflat setup source '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'URL '> (${ Id.VSub_Name bB) <PACKAGE> (${ Id.VSub_Name eB) <' ...'> (${ Id.VSub_Name eX) <'\n'> <' To update the same packages from the same URL run:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package setup source'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(6)'> (${ Id.VSub_Name bD) <'Build and install; all generated files are placed under '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) <'\n'> <' ('> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <INSTALLROOT> (${ Id.VSub_Name eB) <'), where '> (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) <' is the output of '> (${ Id.VSub_Name bB) <'bin/package'> (${ Id.VSub_Name eB) <' (with no\n'> <' arguments.) '> (${ Id.VSub_Name bI) <'name=value'> (${ Id.VSub_Name eI) <' arguments are supported; '> (${ Id.VSub_Name bB) <CC> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bB) <'debug=1'> (${ Id.VSub_Name eB) <' (compile\n'> < ' with -g instead of -O) are likely candidates. The output is written to\n' > <' the terminal and captured in '> (${ Id.VSub_Name bB) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/lib/package/gen/make.out'> (${ Id.VSub_Name eB) <':'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package make'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(7)'> (${ Id.VSub_Name bD) <'List make results and interesting errors:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package results'> (${ Id.VSub_Name eX) <'\n'> <' Run the regression tests:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package test'> (${ Id.VSub_Name eX) <'\n'> <' List test results and errors:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package results test'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(8)'> (${ Id.VSub_Name bD) < 'The generated binaries are position independent, i.e., they do not\n' > <' contain hard-coded paths. However, commands with related files, like\n'> <' '> (${ Id.VSub_Name Mfile) <' and '> (${ Id.VSub_Name Mnmake) <', require the path of the bin directory to be\n'> <' exported in '> (${ Id.VSub_Name bB) <PATH> (${ Id.VSub_Name eb) <.> (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(9)'> (${ Id.VSub_Name bD) <'You can run the binaries directly from the package root, or you can\n'> < ' install them in a public root after you are satisfied with the make and\n' > <' test actions (requires the '> (${ Id.VSub_Name bI) <AT> (${ Id.VSub_Name Camp) <T> (${ Id.VSub_Name eI) <' '> (${ Id.VSub_Name Mnmake) <' command):'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package flat install '> (${ Id.VSub_Name bI) <'DIRECTORY PACKAGE'> (${ Id.VSub_Name eI) (${ Id.VSub_Name eX) <'\n'> <' This will install in '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/bin'> (${ Id.VSub_Name eB) <' and '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name bB) <'/lib'> (${ Id.VSub_Name eB) <'. If you want to\n'> <' preserve the '> (${ Id.VSub_Name bB) <'arch/'> (${ Id.VSub_Name eB) (${ Id.VSub_Name bI) <HOSTTYPE> (${ Id.VSub_Name eI) <' hierarchy under '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) <' then omit the\n'> <' '> (${ Id.VSub_Name bB) <flat> (${ Id.VSub_Name eB) <' argument. If you don\'t have '> (${ Id.VSub_Name Mnmake) <' then the following will do a\n'> <' flat install:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tcd '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT\n'> <'\t\tcp -p -r bin lib include '> (${ Id.VSub_Name bI) <DIRECTORY> (${ Id.VSub_Name eI) (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(10)'> (${ Id.VSub_Name bD) < 'To summarize, after the first time the download, build, and test cycle\n' > <' for the latest source release is:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package setup source\n'> <'\t\tbin/package make\n'> <'\t\tbin/package test'> (${ Id.VSub_Name eX) (${ Id.VSub_Name eD) (${ Id.VSub_Name eL) <'\n'> <'\n'> (${ Id.VSub_Name bH) <'Source Package Installation Instructions -- Plan B'> (${ Id.VSub_Name eH) <'\n'> (${ Id.VSub_Name bL) <'\n'> (${ Id.VSub_Name bT) <'(3)'> (${ Id.VSub_Name bD) <'Create the subdirectory '> (${ Id.VSub_Name bB) <'lib/package/tgz'> (${ Id.VSub_Name eB) <' and download all package archives\n'> <' into that directory.'> (${ Id.VSub_Name eD) <'\n'> (${ Id.VSub_Name bT) <'(4)'> (${ Id.VSub_Name bD) <'If the '> (${ Id.VSub_Name bB) <'bin/package'> (${ Id.VSub_Name eB) <' script does not exist then manually read the '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <'\n'> <' source package:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tgunzip < lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <'.tgz | '> (${ Id.VSub_Name TAR) <' '> (${ Id.VSub_Name TARFLAGS) <'f -'> (${ Id.VSub_Name eX) <'\n'> < ' Note that some browsers automatically unzip downloaded without warning.\n' > <' If the gunzip fails try:\n'> <'\t\t'> (${ Id.VSub_Name TAR) <' '> (${ Id.VSub_Name TARFLAGS) <'f -'> (${ Id.VSub_Name eX) <' lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <'.tgz\n'> <' If your system does not have '> (${ Id.VSub_Name Mtar) <' or '> (${ Id.VSub_Name Mgunzip) <' then download the '> (${ Id.VSub_Name Mratz) <'\n'> <' source package, compile it, and manually read the '> (${ Id.VSub_Name bB) <INIT> (${ Id.VSub_Name eB) <'\n'> <' source package:'> (${ Id.VSub_Name bX) <'\n'> <'\t\tmkdir bin\n'> <'\t\tcp lib/package/tgz/ratz.'> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <'.c lib/package/tgz/ratz.c\n'> <'\t\tcc -o bin/ratz lib/package/tgz/ratz.c\n'> <'\t\tbin/ratz -lm < lib/package/tgz/INIT.'> (${ Id.VSub_Name bI) <YYYY-MM-DD> (${ Id.VSub_Name eI) <'.tgz\n'> (${ Id.VSub_Name bT) <'(5)'> (${ Id.VSub_Name bD) <'Read all unread package archive(s):'> (${ Id.VSub_Name bX) <'\n'> <'\t\tbin/package read'> (${ Id.VSub_Name eX) <'\n'> < ' Both source and binary packages will be read by this step.' > (${ Id.VSub_Name eD) (${ Id.VSub_Name eL) (${ Id.VSub_Name eO) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Usage: '> ($ Id.VSub_DollarName command) <' [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]\n'> <'\n'> <' The '> ($ Id.VSub_DollarName command) < ' command controls source and binary packages. It must be run\n' > <' within the package root directory tree. See '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName command) <' help intro'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' for\n'> <' details. In the following, PACKAGE names either a package or a component\n'> < ' within a package; if omitted, all packages are operated on. The default\n' > <' action is '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'host type'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'.\n'> <'\n'> <' qualifier:\n'> < '\tauthorize NAME Remote authorization name or license acceptance phrase.\n' > <'\tdebug|environment Show environment and actions; do not execute.\n'> <'\tflat Collapse '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT { bin fun include lib } onto '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT.\n'> <'\tforce\tForce the action to override saved state.\n'> <'\tnever\tRun make -N; otherwise show other actions.\n'> <'\tonly\tOnly operate on the specified packages.\n'> < '\tpassword PASSWORD Remote authorization or license acceptance password.\n' > <'\tquiet\tDo not list captured make and test action output.\n'> <'\tshow\tRun make -n; otherwise show other actions.\n'> <'\tDEBUG\tTrace the package script actions in detail for debugging.\n'> <' action:\n'> <'\tadmin [ all ] [ db FILE ] [ on PATTERN ] [ action ... ]\n'> <'\t\tApply ACTION ... to the hosts listed in FILE. If FILE is\n'> <'\t\tomitted then '> ) <admin.db> (DQ <' is assumed. The caller must have rcp(1)\n'> < '\t\tand rsh(1) or scp(1) and ssh(1) access to the hosts. Output\n' > <'\t\tfor the action is saved per-host in ACTION.log/HOST. Logs\n'> <'\t\tcan be viewed by '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'package admin [on HOST] results [ACTION]'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'.\n'> <'\t\tBy default only local PACKAGEROOT hosts are selected from FILE;\n'> <'\t\t'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <all> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' selects all hosts. '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'on PATTERN'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' selects only\n'> < '\t\thosts matching the | separated PATTERN. FILE contains four\n' > <'\t\ttypes of lines. Blank lines and lines beginning with # are\n'> < '\t\tignored. Lines starting with id=value are variable assignments.\n' > <'\t\tSet admin_ping to local conventions if '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName admin_ping) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' fails.\n'> <'\t\tIf a package list is not specified on the command line the\n'> <'\t\taction applies to all packages; a variable assigment\n'> <'\t\tpackage=list applies action to the packages in list for\n'> < '\t\tsubsequent hosts in FILE. The remaining line type is a host\n' > <'\t\tdescription consisting of 6 tab separated fields. The first 3\n'> < '\t\tare mandatory; the remaining 3 are updated by the admin action:\n' > <'\t\t hosttype\n'> <'\t\t\t The host type as reported by package.\n'> <'\t\t [user@]host\n'> <'\t\t\t The host name and optionally user name for rcp(1)\n'> <'\t\t\t and rsh(1) access.\n'> <'\t\t [remote:[[master]:]]PACKAGEROOT\n'> <'\t\t\t The absolute remote package root directory and\n'> <'\t\t\t optionally the remote prorocol (rsh or ssh) if\n'> <'\t\t\t the directory is on a different server than the\n'> <'\t\t\t master package root directory. If\n'> <'\t\t\t lib/package/admin/'> ($ Id.VSub_DollarName admin_env) <' exists under\n'> <'\t\t\t this directory then it is sourced by sh(1)\n'> < '\t\t\t before ACTION is done. If this field begins with -\n' > <'\t\t\t then the host is ignored. If this field contains\n'> <'\t\t\t : then ditto(1) is used to sync the remote src\n'> <'\t\t\t directory hierarchy to the local one. If [master]:\n'> <'\t\t\t is specified then the sync is deferred to the\n'> <'\t\t\t master host. If master is omitted (two :) then\n'> < '\t\t\t the sync is disabled. These directories must exist\n' > <'\t\t\t on the remote side: lib/package, src/cmd, src/lib.\n'> <'\t\t date YYMMDD of the last action.\n'> <'\t\t date Elapsed wall time of the last action.\n'> < '\t\t M T W The admin action make, test and write action error\n' > <'\t\t\t counts. A non-numeric value in any of these fields\n'> <'\t\t\t disables the corresponding action.\n'> <'\t \t owner The owner contact information.\n'> <'\t\t attributes\n'> < '\t\t NAME=VALUE attributes. Should at least contain\n' > <'\t\t\t cc=compiler-version.\n'> <'\tclean | clobber\n'> < '\t Delete the arch/HOSTTYPE hierarchy; this deletes all generated\n' > <'\t files and directories for HOSTTYPE. The heirarchy can be rebuilt\n'> <'\t by package make.]\n'> <'\tcontents [ package ... ]\n'> <'\t\tList description and components for PACKAGE on the standard\n'> <'\t\toutput.\n'> <'\tcopyright [ package ... ]\n'> <'\t\tList the general copyright notice(s) for PACKAGE on the\n'> < '\t\tstandard output. Note that individual components in PACKAGE\n' > <'\t\tmay contain additional or replacement notices.\n'> <'\texport [ VARIABLE ... ]\n'> < '\t\tList NAME=VALUE for each VARIABLE, one per line. If the\n' > <'\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <only> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' attribute is specified then only the variable\n'> <'\t\tvalues are listed. If no variables are specified then\n'> <'\t\t'> ($ Id.VSub_DollarName env) <' are assumed.\n'> <'\thelp [ ACTION ]\n'> < '\t\tDisplay help text on the standard error [ standard output\n' > <'\t\tfor ACTION ].\n'> <'\thost [ canon cpu name rating type ... ]\n'> < '\t\tList architecture/implementation dependent host information\n' > <'\t\ton the standard output. type is listed if no attributes are\n'> < '\t\tspecified. Information is listed on a single line in attributes\n' > <'\t\torder. The attributes are:\n'> <'\t\t canon The next argument is a host type name to be\n'> <'\t\t\t converted to package syntax.\n'> <'\t\t cpu The number of cpus; 1 if the host is not a\n'> <'\t\t\t multiprocessor.\n'> <'\t\t name The host name.\n'> <'\t\t rating The cpu rating in pseudo mips; the value is useful\n'> <'\t\t\t useful only in comparisons with rating values of\n'> <'\t\t\t other hosts. Other than a vax rating fixed at 1,\n'> <'\t\t\t ratings can vary wildly but consistently from\n'> <'\t\t\t vendor mips ratings. cc(1) may be required to\n'> <'\t\t\t determine the rating.\n'> <'\t type The host type, usually of the form\n'> <'\t\t\t vendor.architecture, with an optional trailing\n'> < '\t\t\t -version. The main theme is that type names within\n' > <'\t\t\t a family of architectures are named in a similar,\n'> < '\t\t\t predictable style. Os point release information is\n' > <'\t\t\t avoided as much as possible, but vendor resistance\n'> < '\t\t\t to release incompatibilities has for the most part\n' > <'\t\t\t been futile.\n'> <'\thtml [ ACTION ]\n'> < '\t\tDisplay html help text on the standard error [ standard output\n' > <'\t\tfor ACTION ].\n'> <'\tinstall [ ARCHITECTURE ... ] DIR [ PACKAGE ... ]\n'> < '\t\tCopy the package binary hierarchy to DIR. If ARCHITECTURE is\n' > <'\t\tomitted then all architectures are installed. If the '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <flat> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> < '\t\tattribute is specified then exactly one ARCHITECTURE must be\n' > <'\t\tspecified; this architecture will be installed in DIR without\n'> <'\t\tthe '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'arch/HOSTTYPE'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' directory prefixes. Otherwise each\n'> <'\t\tarchitecture will be installed in a separate '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'arch/HOSTTYPE'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> < '\t\tsubdirectory of DIR. The ARCHITECTURE - names the current\n' > <'\t\tarchitecture. DIR must be an existing directory. If PACKAGE\n'> < '\t\tis omitted then all binary packages are installed. This action\n' > <'\t\trequires nmake.\n'> <'\tlicense [ package ... ]\n'> < '\t\tList the source license(s) for PACKAGE on the standard output.\n' > <'\t\tNote that individual components in PACKAGE may contain\n'> <'\t\tadditional or replacement licenses.\n'> <'\tlist [ PACKAGE ... ]\n'> <'\t\tList the name, version and prerequisites for PACKAGE on the\n'> <'\t\tstandard output.\n'> <'\tmake [ PACKAGE ] [ OPTION ... ] [ TARGET ... ]\n'> < '\t\tBuild and install. The default TARGET is install, which\n' > <'\t\tmakes and installs all packages. If the standard output\n'> <'\t\tis a terminal then the output is also captured in\n'> <'\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'INSTALLROOT/lib/package/gen/make.out. The build is done\n'> <'\t\tin the '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'INSTALLROOT directory tree viewpathed on top of\n'> <'\t\tthe '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT directory tree. If '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <flat> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' is specified then\n'> <'\t\tthe '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT { bin fun include lib } directories are\n'> < '\t\tlinked to the same directories in the package root. Only\n' > <'\t\tone architecture may be flat. Leaf directory names matching\n'> <'\t\tthe |-separated shell pattern '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'MAKESKIP are ignored. The\n'> <'\t\tview action is done before making. OPTION operands are\n'> <'\t\tpassed to the underlying make command.\n'> <'\tread [ package ... | archive ... ]\n'> < '\t\tRead the named package archive(s). Must be run from the\n' > <'\t\tpackage root directory. Archives are searched for in .\n'> < '\t\tand lib/package/tgz. Each package is read only once. The\n' > <'\t\tfile lib/package/tgz/package[.type].tim tracks the read time.\n'> < '\t\tSee the write action for archive naming conventions. Text\n' > <'\t\tfile archive member are assumed to be ASCII or UTF-8 encoded.\n'> < '\tregress diff(1) the current and previous package test results.\n' > <'\trelease [ [CC]YY-MM-DD [ [cc]yy-mm-dd ] ] [ package ]\n'> < '\t\tDisplay recent changes since [CC]YY-MM-DD (up to [cc]yy-mm-dd),\n' > <'\t\twhere - means lowest (or highest.) If no dates are specified\n'> < '\t\tthen changes for the last 4 months are listed. PACKAGE may\n' > <'\t\tbe a package or component name.\n'> <'\tremove PACKAGE\n'> <'\t\tRemove files installed for PACKAGE.\n'> <'\tresults [ path ] [ old ] [ make | test ]\n'> < '\t\tList results and interesting messages captured by the most\n' > <'\t\trecent make (default), test or write action. old specifies the\n'> < '\t\tprevious results, if any (current and previous results are\n' > <'\t\tretained.) '> ($ Id.VSub_DollarName HOME) <'/.pkgresults, if it exists, must contain an\n'> < '\t\tegrep(1) expression of result lines to be ignored. failed lists\n' > <'\t\tfailures only and path lists the results file path only.\n'> < '\tsetup [ beta ] [ binary ] [ source ] [ ARCHITECTURE ... ] [ URL ] [ PACKAGE ... ]\n' > <'\t\tThe action initializes the current directory as a package root,\n'> < '\t\truns the update action to download new or out of date packages,\n' > <'\t\tand runs the read action on those packages. If '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <flat> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' is\n'> <'\t\tspecified then the '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'INSTALLROOT { bin fun include lib }\n'> <'\t\tdirectories are linked to the same directories in the package\n'> < '\t\troot. Only one architecture may be flat. See the update and\n' > <'\t\tread actions for argument details.\n'> <'\ttest [ PACKAGE ]\n'> < '\t\tRun the regression tests for PACKAGE. If the standard output\n' > <'\t\tis a terminal then the output is also captured in\n'> <'\t\t'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/lib/package/gen/test.out. In general a package\n'> < '\t\tmust be made before it can be tested. Components tested with\n' > <'\t\tthe '> <Id.Lit_BadBackslash '\\'> <bregress> <Id.Lit_BadBackslash '\\'> <'b(1) command require '> <Id.Lit_BadBackslash '\\'> <bksh93> <Id.Lit_BadBackslash '\\'> <'b. If only is\n'> < '\t\talso specified then only the listed package components are\n' > <'\t\ttested, otherwise the closure of the components is tested.\n'> < '\tupdate [ beta ] [ binary ] [ source ] [ ARCHITECTURE ... ] [ URL ] [ PACKAGE ... ]\n' > <'\t\tDownload the latest release of the selected and required\n'> <'\t\tpackages from URL (e.g.,\n'> < '\t\thttp://www.research.att.com/sw/download) into the directory\n' > <'\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT/lib/package/tgz. beta acesses beta packages;\n'> <'\t\tdownload these at your own risk. If ARCHITECTURE is omitted\n'> < '\t\tthen only architectures already present in the tgz directory\n' > <'\t\twill be downloaded. If ARCHITECTURE is - then all posted\n'> < '\t\tarchitectures will be downloaded. If URL matches *.url then\n' > <'\t\tit is interpreted as a file containing shell variable\n'> <'\t\tassignments for url, authorize and password. If URL is\n'> <'\t\tomitted then the definitions for url, authorize and password\n'> <'\t\tin '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/lib/package/tgz/'> ($ Id.VSub_DollarName default_url) <', if it exists,\n'> <'\t\tare used. If '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PACKAGEROOT/lib/package/tgz/'> ($ Id.VSub_DollarName default_url) <' does\n'> <'\t\tnot exist then it is initialized with the current url,\n'> < '\t\tauthorize and password values and read permission for the\n' > <'\t\tcurrent user only. If PACKAGE is omitted then only\n'> <'\t\tpackages already present in the tgz directory will be\n'> <'\t\tdownloaded. If PACKAGE is - then all posted packages will be\n'> < '\t\tdownloaded. If source and binary are omitted then both source\n' > <'\t\tand binary packages will be downloaded. If '> <Id.Lit_BadBackslash '\\'> <bonly> <Id.Lit_BadBackslash '\\'> <'b is\n'> <'\t\tspecified then only the named packages are updated; otherwise\n'> < '\t\tthe closure of required packages is updated. This action\n' > <'\t\trequires wget(1), lynx(1), curl(1) or a shell that supports\n'> <'\t\tio to /dev/tcp/HOST/PORT.\n'> <' \tuse [ uid | PACKAGE | . [ 32 | 64 ] | 32 | 64 | - ] [ COMMAND ... ]\n'> < ' \t\tRun COMMAND or an interactive shell if COMMAND is omitted, with\n' > <'\t\tthe environment initialized for using the package (can you say\n'> < '\t\tshared library without cussing?) If uid or PACKAGE or . is\n' > <'\t\tspecified then it is used to determine a '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT,\n'> <'\t\tpossibly different from the current directory. For example, to\n'> <'\t\ttry out bozo\'s package: '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'package use bozo'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'. In this case the\n'> <'\t\tcommand may be run from any directory. If the file\n'> <'\t\t'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'INSTALLROOT/lib/package/profile is readable then it is\n'> < '\t\tsourced to initialize the environment. 32 or 64 implies\n' > <'\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') < 'PACKAGEROOT of . and specifies the target architecture word\n' > <'\t\tsize (which may be silently ignored.)\n'> <'\tverify [ PACKAGE ]\n'> < '\t\tVerify installed binary files against the checksum files in\n' > <'\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') < 'INSTALLROOT/lib/package/gen/*.sum. The checksum files contain\n' > <'\t\tmode, user and group information. If the checksum matches\n'> < '\t\tfor a given file then the mode, user and group are changed\n' > <'\t\tas necessary to match the checksum entry. A warning is printed\n'> < '\t\ton the standard error for each mismatch. Requires the ast\n' > <'\t\tpackage cksum(1) command.\n'> <'\tview\n'> < '\t\tInitialize the architecture specific viewpath hierarchy. The\n' > <'\t\tmake action implicitly calls this action. If '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <flat> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' is specified\n'> <'\t\tthen the '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'INSTALLROOT { bin fun include lib } directories are\n'> <'\t\tlinked to the same directories in the package root. Only one\n'> <'\t\tarchitecture may be flat.\n'> <'\twrite [closure] [cyg|exp|lcl|pkg|rpm|tgz|tst] [base|delta]\n'> <'\t\t\t[binary|runtime|source] PACKAGE\n'> <'\t\tWrite a package archive for PACKAGE. All work is done in the\n'> <'\t\t'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'PACKAGEROOT/lib/package directory. FORMAT-specific files\n'> < '\t\tare placed in the FORMAT subdirectory. A PACKAGE[.TYPE].tim\n' > <'\t\tfile in this directory tracksthe write time and prevents a\n'> < '\t\tpackage from being read in the same root it was written. If\n' > <'\t\tmore than one file is generated for a particular FORMAT then\n'> < '\t\tthose files are placed in the FORMAT/PACKAGE subdirectory.\n' > <'\t\tFile names in the FORMAT subdirectory will contain the package\n'> < '\t\tname, a YYYY-MM-DD date, and for binary packages, HOSTTYPE.\n' > <'\t\tIf PACKAGE is omitted then an ordered list of previously\n'> <'\t\twritten packages is generated. If '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <only> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' is specified then\n'> <'\t\tonly the named packages will be written; otherwise\n'> < '\t\tprerequisite packages are written first. Package components\n' > <'\t\tmust be listed in PACKAGE.pkg. FORMAT may be one of:\n'> <'\t\t cyg generate a cygwin package\n'> <'\t\t exp generate an exptools(1) maintainer source archive\n'> < '\t\t and NPD file in the exp subdirectory, suitable for\n' > <'\t\t\texpmake(1); support files are placed in the\n'> <'\t\t\texp/PACKAGE subdirectory\n'> <'\t\t lcl\tgenerate a package archive or delta in the lcl\n'> <'\t\t\tsubdirectory, suitable for restoration into the\n'> <'\t\t\tprimary source tree (no source licence annotation)\n'> <'\t\t pkg\tgenerate a pkgmk(1) package, suitable for pkgadd(1)\n'> <'\t\t rpm generate an rpm(1) package\n'> <'\t\t tgz generate a gzip(1) tar(1) package archive; this is\n'> <'\t\t\tthe default\n'> <'\t\t tst generate tgz FORMAT package archive in the tst\n'> <'\t\t\tsubdirectory; version state files are not updated\n'> < '\t\tThe package type must be one of source, binary or runtime.\n' > <'\t\tA source package contains the source needed to build the\n'> < '\t\tcorresponding binary package. A binary package includes the\n' > <'\t\tlibraries and headers needed for compiling and linking\n'> < '\t\tagainst the public interfaces. A runtime package contains\n' > <'\t\tthe commands and required dynamic libraries. A package may\n'> <'\t\tbe either a base or delta. A base package contains a\n'> <'\t\tcomplete copy of all components. A delta package contains\n'> < '\t\tonly changes from a previous base package. Delta recipients\n' > <'\t\tmust have the ast pax(1) command (in the ast-base package.)\n'> < '\t\tIf neither base nor delta is specified, then the current\n' > <'\t\tbase is overwritten if there are no deltas referring to the\n'> < '\t\tcurrent base. Only the tgz and lcl formats support delta.\n' > <'\t\tIf base is specified then a new base and two delta archives\n'> < '\t\tare generated: one delta to generate the new base from the\n' > <'\t\told, and one delta to generate the old base from the new;\n'> < '\t\tthe old base is then removed. If delta is specified then a\n' > <'\t\tnew delta referring to the current base is written.\n'> <'\t\tpackage.pkg may reference other packages. By default a\n'> <'\t\tpointer to those packages is written. The recipient package\n'> < '\t\tread will then check that all required packages have been\n' > <'\t\tdownloaded. If closure is specified then the components for\n'> <'\t\tall package references are included in the generated\n'> <'\t\tpackage. This may be useful for lcl and versioning. All\n'> <'\t\tformats but lcl annotate each source file (not already\n'> <'\t\tannotated) with a license comment as it is written to the\n'> <'\t\tpackage archive using proto(1).\n'> <' name=value:\n'> <'\tvariable definition: typically CC=cc or CCFLAGS=-g.'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<DEFAULT>} {<host>} {<type>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Usage: '> ($ Id.VSub_DollarName command) <' [ options ] [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'global='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'global='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'global='> name:global) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName global) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShFunction name_tok: <hostopts> name: hostopts body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_ifs_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_ifs_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_ifs_='> name:_ifs_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName IFS)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Comma ','>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName HOSTTYPE)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _ifs_)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <cc> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName assign_CCFLAGS)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign_CCFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign_CCFLAGS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign_CCFLAGS='> name: assign_CCFLAGS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign_CCFLAGS) <' '> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'assign_CCFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign_CCFLAGS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign_CCFLAGS='> name: assign_CCFLAGS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign_CCFLAGS) ($ Id.VSub_Number 2) ) } ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _PACKAGE_HOSTTYPE_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTTYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HOSTTYPE='> name:HOSTTYPE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _PACKAGE_HOSTTYPE_)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEEP_HOSTTYPE='> name:KEEP_HOSTTYPE) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEEP_HOSTTYPE='> name:KEEP_HOSTTYPE) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEEP_PACKAGEROOT='> name:KEEP_PACKAGEROOT) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEEP_SHELL='> name:KEEP_SHELL) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USER_VPATH='> name:USER_VPATH) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'assign_CCFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign_CCFLAGS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign_CCFLAGS='> name:assign_CCFLAGS) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName args) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' '>)} {(DQ ($ Id.VSub_DollarName i))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s,^[ \t]*\\([^=]*\\)=\\(.*\\),n=\\1 v='>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <'\\2'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <','>) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_VarLike 'AR='> pattern: (pat.Words words: [ {<Id.Lit_VarLike 'AR='> <Id.Lit_Star '*'>} {<Id.Lit_VarLike 'LD='> <Id.Lit_Star '*'>} {<Id.Lit_VarLike 'NM='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' '> ($ Id.VSub_DollarName n) <'=\''> ($ Id.VSub_DollarName v) <'\''> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'CC='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'CC='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'CCFLAGS='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'CCFLAGS='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'assign_CCFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign_CCFLAGS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign_CCFLAGS='> name: assign_CCFLAGS ) op: assign_op.Equal rhs: { (DQ <'CCFLAGS='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <CCFLAGS> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'HOSTTYPE='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'HOSTTYPE='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'HURL='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'HURL='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'PACKAGEROOT='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'PACKAGEROOT='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PACKAGEROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> name: KEEP_PACKAGEROOT ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'SHELL='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'SHELL='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_SHELL='> name: KEEP_SHELL ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'TAR='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'TAR='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'TARFLAGS='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'TARFLAGS='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_VarLike 'VPATH='> pattern: (pat.Words words:[{<Id.Lit_VarLike 'VPATH='> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<USER_> ($ Id.VSub_DollarName n) <Id.Lit_Equals '='> (SQ <'$'>) <v>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'debug=1'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'makeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makeflags='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'makeflags='> name:makeflags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName makeflags) <' --debug-symbols'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'strip=1'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'makeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makeflags='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'makeflags='> name:makeflags) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName makeflags) <' --strip-symbols'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' '> ($ Id.VSub_DollarName n) <'=\''> ($ Id.VSub_DollarName v) <'\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName args) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Id.Lit_Comma ','> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostopts> more_env: [] words: [{<hostopts>} {($ Id.VSub_DollarName HOSTTYPE)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName assign_CCFLAGS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName assign) <' '> ($ Id.VSub_DollarName assign_CCFLAGS))} ) ] redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<cc>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<CC>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words:[{<admin>}]) middle: <Id.Right_CasePat _> action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<list>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <all> pattern: (pat.Words words:[{<all>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_all='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_all='> name: admin_all ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <db> pattern: (pat.Words words:[{<db>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<db>} {<file>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_db='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_db='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_db='> name: admin_db ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <on> pattern: (pat.Words words:[{<on>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<host>} {<pattern>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_on='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_on='> name: admin_on ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_action='> name:admin_action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_args='> name:admin_args) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <debug> pattern: (pat.Words words: [ {<debug>} {<environment>} {<force>} {<never>} {<only>} {<quiet>} {<show>} {<DEBUG>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_action='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_action='> name: admin_action ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <setup> pattern: (pat.Words words:[{<setup>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PACKAGEROOT='> name:PACKAGEROOT) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PACKAGEROOT>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_PACKAGEROOT='> name: KEEP_PACKAGEROOT ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <use> pattern: (pat.Words words:[{<use>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>} {<32>} {<64>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <32> pattern: (pat.Words words:[{<32>} {<64>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bit='> name:bit) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <win32.> pattern: (pat.Words words:[{<win32.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sys='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sys='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sys='> name:sys) op: assign_op.Equal rhs: {<uwin>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'wow='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'wow='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wow='> name:wow) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-i>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName bit)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <32> pattern: (pat.Words words:[{<32>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-64>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HOSTTYPE='> name: HOSTTYPE ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name HOSTTYPE> var_name: HOSTTYPE suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<-64>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName wow)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/32'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {<'/'>} {<'/'> ($ Id.VSub_DollarName bit)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <64> pattern: (pat.Words words:[{<64>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-64>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HOSTTYPE='> name: HOSTTYPE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE) <-64>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName wow)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/32'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'> } {<cannot>} {<build>} {($ Id.VSub_DollarName bit) <-bit>} {<on>} {($ Id.VSub_DollarName wow)} {($ Id.VSub_DollarName sys)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {<'/'>} {<'/'> ($ Id.VSub_DollarName bit)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName bit)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PS1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PS1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PS1='> name: PS1 ) op: assign_op.Equal rhs: {(DQ <'('> ($ Id.VSub_DollarName sys) <') '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PS1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PS1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PS1='> name: PS1 ) op: assign_op.Equal rhs: { (DQ <'('> ($ Id.VSub_DollarName sys) <-> ($ Id.VSub_DollarName bit) <') '> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<umask>} {<002>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<unset>} {<MAKESKIP>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'P='> ($ Id.VSub_DollarName PWD)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'A='> ($ Id.VSub_DollarName P) <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'CDPATH='> <Id.Lit_Colon ':'> <..> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName A) <'/src/cmd'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName A) <'/src/lib'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName A) <'/src/uwin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName P) <'/lib/package'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'INSTALLROOT='> ($ Id.VSub_DollarName A)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'PACKAGEROOT='> ($ Id.VSub_DollarName P)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'PATH='> ($ Id.VSub_DollarName A) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName P) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'PS1='> (DQ ($ Id.VSub_DollarName PS1))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'VPATH='> ($ Id.VSub_DollarName A) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName P) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'nativepp='> <'/usr/lib'>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName INSTALLROOT))} {<-a>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/include/ast'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'PACKAGE_ast='> ($ Id.VSub_DollarName INSTALLROOT) } ] redirects: [] do_fork: T ) ] spids: [8562 8584] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <'/ast/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<export>} {<Id.Lit_VarLike 'PACKAGE_ast='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <'/ast/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ] redirects: [] do_fork: T ) ] spids: [8594 8610] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName show)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <':'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<exec>} {($ Id.VSub_DollarName SHELL)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<exec>} {($ Id.VSub_DollarName SHELL)} {<-c>} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<PACKAGEROOT>}] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <packageroot> name: packageroot body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_Number 1) <'/lib/'> ($ Id.VSub_DollarName command)} {<-o>} {<-x>} {($ Id.VSub_Number 1) <'/bin/'> ($ Id.VSub_DollarName command)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <executable> name: executable body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'!'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-x>} {(DQ ($ Id.VSub_Number 2))} {<-a>} {<Id.KW_Bang '!'>} {<-x>} {(DQ ($ Id.VSub_Number 2) <.exe>)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {(DQ ($ Id.VSub_Number 1))} {<-o>} {<-x>} {(DQ ($ Id.VSub_Number 1) <.exe>)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <shellmagic> name: shellmagic body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELLMAGIC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<'/emx/bin/sh.exe'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELLMAGIC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELLMAGIC='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELLMAGIC='> name: SHELLMAGIC ) op: assign_op.Equal rhs: {(SQ <'#!/emx/bin/sh.exe'>) ($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] spids: [8879 8888] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<'/bin/env.exe'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELLMAGIC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELLMAGIC='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELLMAGIC='> name: SHELLMAGIC ) op: assign_op.Equal rhs: {(SQ <'#!/bin/env sh'>) ($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] spids: [8897 8906] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELLMAGIC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELLMAGIC='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELLMAGIC='> name: SHELLMAGIC ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <onpath> name: onpath body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_onpath_b='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_onpath_b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_onpath_b='> name:_onpath_b) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _onpath_b)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName _onpath_b)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_onpath_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_onpath_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_onpath_='> name: _onpath_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_b)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [8960 8967] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <':'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName PATH)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_onpath_d] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _onpath_d)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_onpath_d='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_onpath_d='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_onpath_d='> name: _onpath_d ) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} { (DQ ($ Id.VSub_DollarName _onpath_d) <'/'> ($ Id.VSub_DollarName _onpath_b) ) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_onpath_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_onpath_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_onpath_='> name: _onpath_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_d) <'/'> ($ Id.VSub_DollarName _onpath_b) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [9040 9051] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <nonmake> name: nonmake body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_nonmake_version='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_nonmake_version='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_nonmake_version='> name: _nonmake_version ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [ {($ Id.VSub_Number 1)} {<-n>} {<-f>} {<->} { (SQ < 'print $(MAKEVERSION:@/.*AT&T.* //:/-//G:@/.* .*/19960101/)' > ) } {<.>} ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<19840919>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_DollarName _nonmake_version)} {<-lt>} {<20001031>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [9127 9138] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <hostinfo> name: hostinfo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName DEBUG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-x>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'map='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'map='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'map='> name:map) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'something='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'something='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'something='> name:something) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ccs)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName use)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName org)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName j) <'/bin'> } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) <'/bin'> } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SED)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SED='> name:SED) op: assign_op.Equal rhs: {<sed>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [{($ Id.VSub_DollarName SED)} {<1d>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{<'/bin'>} {<'/usr/bin'>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName SED) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SED='> name: SED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName SED) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [9313 9324] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'TR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TR='> name:TR) op: assign_op.Equal rhs: {<tr>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$TR'> more_env: [] words: [{($ Id.VSub_DollarName TR)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words:[{<'/bin'>} {<'/usr/bin'>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName TR) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TR='> name: TR ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName TR) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [9374 9385] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PACKAGE_PATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName PACKAGE_PATH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [{($ Id.VSub_DollarName SED)} {(SQ <'s,:, ,g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) <'/bin'> } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'canon='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'canon='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'canon='> name:canon) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName CC)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [info] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName canon)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'canon='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'canon='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'canon='> name:canon) op: assign_op.Equal rhs: {($ Id.VSub_DollarName info)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName info)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <cC> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <cC> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName info)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <canon> pattern: (pat.Words words:[{<canon>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'canon='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'canon='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'canon='> name: canon ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'something='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'something='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'something='> name: something ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cpu> pattern: (pat.Words words:[{<cpu>} {<name>} {<rating>} {<type>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'something='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'something='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'something='> name: something ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': '> ($ Id.VSub_DollarName info) <': unknown attribute'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName canon)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': canon: host type name expected'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName something)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ ($ Id.VSub_At '@'))} {<type>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName DEBUG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_hostinfo_='> name:_hostinfo_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [info] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName info)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cpu> pattern: (pat.Words words:[{<cpu>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NPROC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName NPROC) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cpu='> name:cpu) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-ic>} {(SQ <'^processor[ \t][ \t]*:[ \t]*[0123456789]'>)} {<'/proc/cpuinfo'>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName cpu) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cpu='> name:cpu) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<hinv>} {(SQ <'^Processor [0123456789]'>)} {<psrinfo>} {(SQ <on-line>)} { (SQ < 'cat /reg/LOCAL_MACHINE/Hardware/Description/System/CentralProcessor' > ) } {(SQ <.>)} { (SQ < 'cat /proc/registry/HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor' > ) } {(SQ <.>)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [{($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-c>} {(DQ ($ Id.VSub_Number 2))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<'/bin/mpstat'>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [{($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-ic>} {(SQ <'^cpu '>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1' > more_env: [] words: [ { ($ Id.VSub_Number 1 ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-ic>} { (SQ < '^ *[0123456789][0123456789]* ' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [9965 9972] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<'/usr/kvm/mpstat'>} {(SQ <'cpu[0123456789]'>)} {<'/usr/etc/cpustatus'>} {(SQ <enable>)} {<'/usr/alliant/showsched'>} {(SQ <CE>)} {(SQ <'ls /config/hw/system/cpu'>)} {(SQ <cpu>)} {<prtconf>} {(SQ <cpu-unit>)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [{($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$TR'> more_env: [] words: [ {($ Id.VSub_DollarName TR)} {(SQ <' \t'>)} {(SQ <'\n'> <'\n'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-c>} {(DQ <'^'> ($ Id.VSub_Number 2))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<hinv>} {(SQ <'/^[0123456789][0123456789]* .* Processors*$/'>)} {(SQ <'/[ \t].*//'>)} {<'/usr/bin/hostinfo'>} { (SQ < '/^[0123456789][0123456789]* .* physically available\\.*$/' > ) } {(SQ <'/[ \t].*//'>)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_Number '$1'> more_env: [] words: [{($ Id.VSub_Number 1)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(DQ (${ Id.VSub_Number 2) <'!d'>)} {<-e>} {(DQ <s> (${ Id.VSub_Number 3))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tmp='> name: tmp ) op: assign_op.Equal rhs: {<hi> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} {(SQ <'rm -f $tmp.*'>)} {<0>} {<1>} {<2>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'#include <stdio.h>\n'> <'#include <pthread.h>\n'> <'int main()\n'> <'{\n'> <'\tprintf('> <Id.Right_DoubleQuote '"'> <'%d'> <Id.Lit_BadBackslash '\\'> <n> <Id.Right_DoubleQuote '"'> < ', pthread_num_processors_np());\n' > <'\treturn 0;\n'> <'}\n'> ] ) ) ] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [o] iterable: (for_iter.Words words: [{<-lpthread>} {(SQ )}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: < Id.VSub_DollarName '$CC' > more_env: [] words: [ { ($ Id.VSub_DollarName CC ) } { ($ Id.VSub_DollarName o ) } {<-O>} {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.c> } { ($ Id.VSub_DollarName o ) } ] redirects: [ (Redir op: < Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { < '/dev/null' > } ) (Redir op: < Id.Redir_GreatAnd '2>&' > loc: (redir_loc.Fd fd: 2 ) arg: {<1>} ) ] do_fork: T ) (command.Simple blame_tok: <gcc> more_env: [] words: [ {<gcc>} { ($ Id.VSub_DollarName o ) } {<-O>} {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.c> } { ($ Id.VSub_DollarName o ) } ] redirects: [ (Redir op: < Id.Redir_Great '>' > loc: (redir_loc.Fd fd: 1 ) arg: { < '/dev/null' > } ) (Redir op: < Id.Redir_GreatAnd '2>&' > loc: (redir_loc.Fd fd: 2 ) arg: {<1>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <'./'> more_env: [] words: [ {<'./'> ($ Id.VSub_DollarName tmp ) <.exe> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break > ) ] spids: [10473 10523] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cpu)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cpu='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cpu='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cpu='> name: cpu ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName cpu) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <name> pattern: (pat.Words words:[{<name>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_name_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_name_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_name_='> name:_name_) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-n>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/etc/whoami'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<local>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _> <Id.Op_DPipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName _name_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <rating> pattern: (pat.Words words:[{<rating>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [rating] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-i>} {<Id.Lit_Other '^'> <bogomips>} {<'/proc/cpuinfo'>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s,.*:[ \t]*,,'>)} {<-e>} {(SQ <'s,\\(...*\\)\\..*,\\1,'>)} {<-e>} {(SQ <'s,\\(\\..\\).*,\\1,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rating)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rating)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tmp='> name: tmp ) op: assign_op.Equal rhs: {<hi> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'rm -f $tmp.*'>)} {<0>} {<1>} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'#include <stdio.h>\n'> <'#include <sys/types.h>\n'> <'#if TD || TZ\n'> <'#include <sys/time.h>\n'> <'#else\n'> <'extern time_t\ttime();\n'> <'#endif\n'> <'int main()\n'> <'{\n'> <'\tregister unsigned long\ti;\n'> <'\tregister unsigned long\tj;\n'> <'\tregister unsigned long\tk;\n'> <'\tunsigned long\t\tl;\n'> <'\tunsigned long\t\tm;\n'> <'\tunsigned long\t\tt;\n'> <'\tint\t\t\tx;\n'> <'#if TD || TZ\n'> <'\tstruct timeval\t\tb;\n'> <'\tstruct timeval\t\te;\n'> <'#if TZ\n'> <'\tstruct timezone\t\tz;\n'> <'#endif\n'> <'#endif\n'> <'\tl = 500;\n'> <'\tm = 890;\n'> <'\tx = 0;\n'> <'\tfor (;;)\n'> <'\t{\n'> <'#if TD || TZ\n'> <'#if TZ\n'> <'\t\tgettimeofday(&b, &z);\n'> <'#else\n'> <'\t\tgettimeofday(&b);\n'> <'#endif\n'> <'#else\n'> <'\t\tt = (unsigned long)time((time_t*)0);\n'> <'#endif\n'> <'\t\tk = 0;\n'> <'\t\tfor (i = 0; i < l; i++)\n'> <'\t\t\tfor (j = 0; j < 50000; j++)\n'> <'\t\t\t\tk += j;\n'> <'#if TD || TZ\n'> <'#if TZ\n'> <'\t\tgettimeofday(&e, &z);\n'> <'#else\n'> <'\t\tgettimeofday(&e);\n'> <'#endif\n'> < '\t\tt = (e.tv_sec - b.tv_sec) * 1000 + (e.tv_usec - b.tv_usec) / 1000;\n' > <'\t\tif (!x++ && t < 1000)\n'> <'\t\t{\n'> <'\t\t\tt = 10000 / t;\n'> <'\t\t\tl = (l * t) / 10;\n'> <'\t\t\tcontinue;\n'> <'\t\t}\n'> <'#else\n'> < '\t\tt = ((unsigned long)time((time_t*)0) - t) * 1000;\n' > <'\t\tif (!x++ && t < 20000)\n'> <'\t\t{\n'> <'\t\t\tt = 200000l / t;\n'> <'\t\t\tl = (l * t) / 10;\n'> <'\t\t\tcontinue;\n'> <'\t\t}\n'> <'#endif\n'> <'#if PR\n'> <'\t\tprintf('> <Id.Right_DoubleQuote '"'> <'[ k=%lu l=%lu m=%lu t=%lu ] '> <Id.Right_DoubleQuote '"'> <', k, l, m, t);\n'> <'#endif\n'> <'\t\tif (t == 0)\n'> <'\t\t\tt = 1;\n'> <'\t\tbreak;\n'> <'\t}\n'> <'\tprintf('> <Id.Right_DoubleQuote '"'> <'%lu'> <Id.Lit_BadBackslash '\\'> <n> <Id.Right_DoubleQuote '"'> <', ((l * m) / 10) / t);\n'> <'\treturn k == 0;\n'> <'}\n'> ] ) ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'rating='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rating='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rating='> name: rating ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [o] iterable: (for_iter.Words words:[{<-DTZ>} {<-DTD>} {(SQ )}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {($ Id.VSub_DollarName o)} {<-O>} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.Simple blame_tok: <gcc> more_env: [] words: [ {<gcc>} {($ Id.VSub_DollarName o)} {<-O>} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rating='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rating='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rating='> name: rating ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <'./'> more_env: [] words: [ {<'./'> ($ Id.VSub_DollarName tmp) <.exe> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [10880 10926] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rating)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rating='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rating='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rating='> name: rating ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName rating) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <type> pattern: (pat.Words words:[{<type>} {<canon>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName CROSS) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName canon) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cc> pattern: (pat.Words words:[{<cc>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName KEEP_HOSTTYPE) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName HOSTTYPE) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [ {<0> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PACKAGEROOT> var_name: PACKAGEROOT suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _ > arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE=' > name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [11036 11051] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName KEEP_HOSTTYPE)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName HOSTTYPE) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-dumpmachine>} {($ Id.VSub_DollarName CCFLAGS)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName CCFLAGS)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-dumpmachine>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {<Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName a) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName canon)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'canon='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'canon='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'canon='> name: canon ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName a) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<'/'> ($ Id.VSub_DollarName IFS) ($ Id.VSub_DollarName PATH)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {<'../lib/hostinfo/typemap'>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName canon)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words: [{<'/'> <Id.Lit_Star '*'>} {<cc>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName cc) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$i' > more_env: [] words: [ { ($ Id.VSub_DollarName i ) <'/'> ($ Id.VSub_DollarName cc) } {<-dumpmachine>} { ($ Id.VSub_DollarName CCFLAGS ) } ] redirects: [ (Redir op: <Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName CCFLAGS ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'a=' > name: a ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Simple blame_tok: < Id.VSub_DollarName '$cc' > more_env: [] words: [ { ($ Id.VSub_DollarName cc ) } { < -dumpmachine > } ] redirects: [ (Redir op: < Id.Redir_Great '2>' > loc: (redir_loc.Fd fd: 2 ) arg: { < '/dev/null' > } ) ] do_fork: T ) right: < Id.Backtick_Right '`' > ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {<Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'canon='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'canon='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'canon=' > name: canon ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName a) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_=' > pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_=' > name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_ ) <' '> ($ Id.VSub_DollarName a) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue > arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [11360 11369] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { (DQ ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName f) ) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'map='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'map='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'map='> name: map ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName f) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' '> ($ Id.VSub_DollarName map) ) } ) ] redirects: [] ) ] spids: [11510 11523] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{<-> (${ Id.VSub_Name canon) <->}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words: [{<-->} {<Id.Lit_Star '*'> <-powerpc-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Simple blame_tok: <hostname> more_env: [] words: [{<hostname>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-n>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'/etc/whoami'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName h)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'h='> name: h ) op: assign_op.Equal rhs: {<local>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Simple blame_tok: <arch> more_env: [] words: [{<arch>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-m>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <att> more_env: [] words: [{<att>} {<uname>} {<-m>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-s>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <att> more_env: [] words: [{<att>} {<uname>} {<-s>}] redirects: [] do_fork: T ) ] ops: [ <Id.Op_DPipe _> <Id.Op_DPipe _> <Id.Op_DPipe _> <Id.Op_DPipe _> ] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {(DQ <'s/[ \t]/-/g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: {<unknown>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Simple blame_tok: <mach> more_env: [] words: [{<mach>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <machine> more_env: [] words: [{<machine>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-p>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <att> more_env: [] words: [{<att>} {<uname>} {<-p>}] redirects: [] do_fork: T ) ] ops: [ <Id.Op_DPipe _> <Id.Op_DPipe _> <Id.Op_DPipe _> ] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName m)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName m)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {(DQ <'s/[ \t]/-/g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName m)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: {<unknown>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.AndOr children: [ (command.Simple blame_tok: <uname> more_env: [] words: [{<uname>} {<-a>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <att> more_env: [] words: [{<att>} {<uname>} {<-a>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ <'unknown '> ($ Id.VSub_DollarName host) <' unknown unknown unknown unknown unknown'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(DQ )} {($ Id.VSub_DollarName h)} {($ Id.VSub_DollarName a)} {($ Id.VSub_DollarName m)} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'expected='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expected='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'expected='> name: expected ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {($ Id.VSub_Number 4)} ) (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'os='> name:os) op: assign_op.Equal rhs: {($ Id.VSub_Number 5)} ) (AssignPair left: <Id.Lit_VarLike 'sys='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sys='> name: sys ) op: assign_op.Equal rhs: {($ Id.VSub_Number 6)} ) (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) op: assign_op.Equal rhs: {($ Id.VSub_Number 7)} ) (AssignPair left: <Id.Lit_VarLike 'ver='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ver='> name: ver ) op: assign_op.Equal rhs: {($ Id.VSub_Number 8)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName canon)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ )} {($ Id.VSub_DollarName canon)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'os='> name: os ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) (AssignPair left: <Id.Lit_VarLike 'sys='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sys='> name: sys ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'os='> name: os ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) (AssignPair left: <Id.Lit_VarLike 'sys='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sys='> name: sys ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName os)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName os)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} { (SQ < 's/^\\([^0123456789.]*\\)\\.*\\(.*\\)/os=\\1 rel=\\2/' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName canon)} ) (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'os='> name: os ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'sys='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sys='> name: sys ) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'rel='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rel='> name: rel ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {<unknown>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName host)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/\\..*//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <unknown> pattern: (pat.Words words:[{<unknown>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {<mips1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <4> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {<mips2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <56789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {<mips4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <pc> pattern: (pat.Words words:[{<pc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {<i386>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Pp> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ww> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Pp> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Cc> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {<ppc>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <34> pattern: (pat.Words words: [ {<34> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'os='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'os='> name: os ) op: assign_op.Equal rhs: {<ncr>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {<i386>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName canon)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<'/NextDeveloper'>} {<-d>} {<next>} {<->} {<'/config/hw/system/cpu'>} {<-d>} {<tandem>} {<mach>} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'os='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'os='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'os='> name: os ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 4)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <arch> pattern: (pat.Words words:[{<arch>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arch)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mach> pattern: (pat.Words words:[{<mach>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [12357 12366] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName os)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <AIX> pattern: (pat.Words words: [{<AIX> <Id.Lit_Star '*'>} {<aix> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<ibm.risc>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <HP-UX> pattern: (pat.Words words:[{<HP-UX>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'9000/'> pattern: (pat.Words words: [ {<'9000/'> <Id.Lit_LBracket '['> <78> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<hp.pa>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<hp.> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName arch)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {(SQ <'s,/,_,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<hp.> ($ Id.VSub_DollarName arch)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Xx> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<xx>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <hinv> more_env: [] words: [{<hinv>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'/^CPU:/!d'>)} {<-e>} { (SQ < 's/CPU:[ \t]*\\([^ \t]*\\)[ \t]*\\([^ \t]*\\).*/\\1 \\2/' > ) } {<-e>} {<q>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$TR'> more_env: [] words: [ {($ Id.VSub_DollarName TR)} {<ABCDEFGHIJKLMNOPQRSTUVWXYZ>} {<abcdefghijklmnopqrstuvwxyz>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_ArrayLhsOpen 'r['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'r['> <0123> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 'r['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'r['> <4> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 'r['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'r['> <4> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_ArrayLhsOpen 'r['> <5> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 'r['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'r['> <6789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_ArrayLhsOpen 'r['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rel)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01234> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'> } {<5.> <Id.Lit_LBracket '['> <012> <Id.Lit_RBracket ']'>} {<5.> <Id.Lit_LBracket '['> <012> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName n)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <5.> pattern: (pat.Words words:[{<5.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName n)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName cc)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName cc)} ) ] redirects: [] ) ] spids: [12803 12810] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<'/'> ($ Id.VSub_DollarName IFS) ($ Id.VSub_DollarName PATH) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName cc) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName a)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [12849 12856] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'split='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'split='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'split='> name: split ) op: assign_op.Equal rhs: {(SQ <'\n'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <strings> more_env: [] words: [{<strings>} {($ Id.VSub_DollarName a)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} { (SQ < 's/[^abcdefghijklmnopqrstuvwxyz0123456789]/ /g' > ) } {<-e>} {(SQ <'s/[ \t][ \t]*/\\'>) (DQ ($ Id.VSub_DollarName split)) (SQ <'/g'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} { (DQ <'/^'> (${ Id.VSub_Name type) <'[0123456789]'> <Id.Lit_Dollar '$'> <'/!d'> ) } {<-e>} {(DQ <'s/^'> (${ Id.VSub_Name type) <'//'>)} {<-e>} {<q>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName n)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <4> pattern: (pat.Words words:[{<4>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-> (${ Id.VSub_Name type) <3>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <unknown> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <install> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <conflict> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-show>} {<F0oB> <Id.Lit_Splice '@r'> <.c>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName n) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName a) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Id.KW_Bang '!'> <2> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <mips2> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Id.KW_Bang '!'> <23> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <mips3> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Id.KW_Bang '!'> <234> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <mips4> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {<4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName n) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName a) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Id.KW_Bang '!'> <2> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <32> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: {<-o32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Id.KW_Bang '!'> <3> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <32> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: {<-n32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: {(${ Id.VSub_Name type) ($ Id.VSub_DollarName n)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sgi.> ($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <OSx> pattern: (pat.Words words: [ {<OSx> <Id.Lit_Star '*'>} {<SMP> <Id.Lit_Star '*'>} {<pyramid>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<pyr>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'OS/390'> pattern: (pat.Words words:[{<'OS/390'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<mvs.390>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Cc> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sco>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <ol> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName rel)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/^[25]\\.//'>)} {<-e>} {(SQ <'s/\\.[^.]*$//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <6789> <Id.Lit_RBracket ']'>} {<Id.Lit_LBracket '['> <1-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'v='> name: v ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {<sun4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sparc> pattern: (pat.Words words:[{<sparc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {<sun4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sol> ($ Id.VSub_DollarName v) <.> ($ Id.VSub_DollarName arch) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <un> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName arch)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/\\(sun.\\).*/\\1/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sparc> pattern: (pat.Words words:[{<sparc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sun4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rel)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01234> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName os)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sol.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName mach)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sparc> pattern: (pat.Words words: [{<sparc> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sun4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'v='> name: v ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName rel)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/^[25]\\.//'>)} {<-e>} {(SQ <'s/\\.[^.]*$//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <6789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <1-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'v='> name: v ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sol> ($ Id.VSub_DollarName v) <.> ($ Id.VSub_DollarName type) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sun> pattern: (pat.Words words: [ {<sun> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sun.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Uu> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Xx> <Id.Lit_RBracket ']'> <Id.Lit_ArrayLhsOpen '_['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Vv> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<unixware>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <UTS> pattern: (pat.Words words: [{<UTS> <Id.Lit_Star '*'>} {<uts> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {<'/bin/u370'>} {<-o>} {<-x>} {<'/bin/u390'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<uts.390>} ) ] redirects: [] ) ] spids: [13680 13695] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<uts.> ($ Id.VSub_DollarName arch)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$host'> pattern: (pat.Words words:[{($ Id.VSub_DollarName host)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arch)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <86> } {<Id.Lit_Star '*'> <68> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <86> } {<Id.Lit_Star '*'> <68> <Id.Lit_Star '*'>} {<mips>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName mach) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <unknown> pattern: (pat.Words words:[{<unknown>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sun> pattern: (pat.Words words: [{<sun> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arch)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName mach) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ver)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <FTX> pattern: (pat.Words words: [ {<FTX> <Id.Lit_Star '*'>} {<ftx> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mach='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mach='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mach='> name: mach ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName mach ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ { ($ Id.VSub_DollarName SED) } {<-e>} { (SQ < 's/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*$//' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<stratus.> ($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <'-/.'> <Id.Lit_RBracket ']'> <2> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<os2>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName rel)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName os)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ { ($ Id.VSub_DollarName SED) } {<-e>} { (SQ <'s/[0123456789].*//'> ) } {<-e>} { (SQ < 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789.].*//' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Cc> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Gg> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ww> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_Underscore _> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<cygwin>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Uu> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ww> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_LBracket '['> <Ww> <Id.Lit_RBracket ']'> <Id.Lit_ArrayLhsOpen 'indows_['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <Ww> <Id.Lit_RBracket ']'> <Id.Lit_ArrayLhsOpen 'indows_['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<win32>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arch='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'arch='> name: arch ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName arch ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ { ($ Id.VSub_DollarName SED) } {<-e>} {(SQ <'s/_[^_]*$//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName mach)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName mach) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName arch) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName mach)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/MC'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<ncr.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <86> } {<Id.Lit_Star '*'> <68> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rel)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <34> <Id.Lit_RBracket ']'> <.> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<att.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <abcdefghijklmnopqrstuvwxyz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$type'> pattern: (pat.Words words:[{($ Id.VSub_DollarName type)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName ver)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Fault> pattern: (pat.Words words: [ {<Fault> <Id.Lit_Star '*'>} {<fault> <Id.Lit_Star '*'>} {<FAULT> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<ft.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName mach) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName arch) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-_> <Id.Lit_RBracket ']'> <32> } {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-_> <Id.Lit_RBracket ']'> <64> } {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-_> <Id.Lit_RBracket ']'> <128> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bits='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bits='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'bits='> name: bits ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName type)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {(SQ <'s,.*[-_],,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName type)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {(SQ <'s,[-_][0-9]*$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bits='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bits='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'bits='> name: bits ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName type)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s%[-+/].*%%'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$TR'> more_env: [] words: [ {($ Id.VSub_DollarName TR)} {<ABCDEFGHIJKLMNOPQRSTUVWXYZ>} {<abcdefghijklmnopqrstuvwxyz>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName type)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/\\..*//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName type)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/.*\\.//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <x0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <86> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<i> ($ Id.VSub_DollarName rhs)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <68> pattern: (pat.Words words:[{<68> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<m> ($ Id.VSub_DollarName rhs)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_ArrayLhsOpen 'i['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'i['> <x23456789> <Id.Lit_RBracket ']'> <86> } {<i> <Id.Lit_QMark '?'> <Id.Lit_LBracket '['> <x23456789> <Id.Lit_RBracket ']'> <86> } {<Id.Lit_Star '*'> <86pc>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<i386>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <powerpc> pattern: (pat.Words words:[{<powerpc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<ppc>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 's['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 's['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <x> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName rhs)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} {(SQ <'s/x$/-64/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_ArrayLhsOpen 'arm['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'arm['> <abcdefghijklmnopqrstuvwxyz_> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<arm>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hppa> pattern: (pat.Words words:[{<hppa>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<pa>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <coff>} {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <dwarf>} {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <elf>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <coff>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<coff>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <dwarf>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<coff>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <elf>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<elf>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name lhs) <XXX>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ {($ Id.VSub_DollarName SED)} {<-e>} { (DQ <'s/'> (${ Id.VSub_Name x) <'XXX//'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <bsdi> pattern: (pat.Words words:[{<bsdi>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: {<bsd>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <darwin> pattern: (pat.Words words:[{<darwin>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rel)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01234567> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: {(${ Id.VSub_Name lhs) <7>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <freebsd> pattern: (pat.Words words:[{<freebsd>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName rel)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01234> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: {(${ Id.VSub_Name lhs) <4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: {(${ Id.VSub_Name lhs) (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName rel) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$SED'> more_env: [] words: [ { ($ Id.VSub_DollarName SED) } {<-e>} {(SQ <'s/\\..*//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hpux> pattern: (pat.Words words:[{<hpux>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lhs='> name: lhs ) op: assign_op.Equal rhs: {<hp>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mvs> pattern: (pat.Words words:[{<mvs>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rhs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rhs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rhs='> name: rhs ) op: assign_op.Equal rhs: {<390>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lhs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName rhs)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$rhs'> pattern: (pat.Words words:[{($ Id.VSub_DollarName rhs)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName lhs)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName lhs) <.> ($ Id.VSub_DollarName rhs) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sgi.mips> pattern: (pat.Words words:[{<sgi.mips> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mach)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <mips2> pattern: (pat.Words words:[{<mips2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sgi.> ($ Id.VSub_DollarName mach)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: {<-o32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <mips3> pattern: (pat.Words words:[{<mips3>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sgi.> ($ Id.VSub_DollarName mach)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: {<-n32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_ArrayLhsOpen 'mips['> pattern: (pat.Words words: [ {<Id.Lit_ArrayLhsOpen 'mips['> <456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {<sgi.> ($ Id.VSub_DollarName mach)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName abi)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <-n32>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: {<-64>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pwd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pwd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pwd='> name: pwd ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tmp='> name: tmp ) op: assign_op.Equal rhs: {<hi> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'rm -f $tmp.*'>)} {<0>} {<1>} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.a.c>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'extern int b();\n'> <'int main() { return b(); }\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.b.c>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'int b() { return 0; }\n'>] ) ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-c>} {($ Id.VSub_DollarName tmp) <.a.c>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<-n32>} {<-o32>} {<-64>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc' > more_env: [] words: [ { ($ Id.VSub_DollarName cc ) } { ($ Id.VSub_DollarName i ) } {<-c>} { ($ Id.VSub_DollarName tmp ) <.b.c> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$cc' > more_env: [] words: [ { ($ Id.VSub_DollarName cc ) } {<-o>} { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.a.o> } { ($ Id.VSub_DollarName tmp ) <.b.o> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi=' > name: abi ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName i) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<2>} {<3>} {<4>} {<5>} {<6>} {<7>} {<8>} {<9>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { ($ Id.VSub_DollarName i ) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName abi) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <2> pattern: (pat.Words words: [ {<2> < Id.Lit_Colon ':' > <-n32> } {<2> < Id.Lit_Colon ':' > <-64> } {<3> < Id.Lit_Colon ':' > <-64> } ] ) middle: < Id.Right_CasePat _ > action: [ (command.ControlFlow keyword: < Id.ControlFlow_Continue continue > ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: < Id.VSub_DollarName '$cc' > more_env: [] words: [ { ($ Id.VSub_DollarName cc ) } { ($ Id.VSub_DollarName abi ) } { < -mips > ($ Id.VSub_DollarName i) } { < -c > } { ($ Id.VSub_DollarName tmp ) <.b.c> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$cc' > more_env: [] words: [ { ($ Id.VSub_DollarName cc ) } { < -o > } { ($ Id.VSub_DollarName tmp ) <.exe> } { ($ Id.VSub_DollarName tmp ) <.a.o> } { ($ Id.VSub_DollarName tmp ) <.b.o> } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_DAmp _ > ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: < Id.Lit_VarLike 'type=' > pairs: [ (AssignPair left: < Id.Lit_VarLike 'type=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'type=' > name: type ) op: assign_op.Equal rhs: { (CommandSub left_token: < Id.Left_Backtick '`' > child: (command.Pipeline children: [ (command.Simple blame_tok: < echo > more_env: [] words: [ { < echo > } { ($ Id.VSub_DollarName type ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: < Id.VSub_DollarName '$SED' > more_env: [] words: [ { ($ Id.VSub_DollarName SED ) } { < -e > } { (SQ < 's/.$//' > ) } ] redirects: [] do_fork: T ) ] ops: [ < Id.Op_Pipe _ > ] ) right: < Id.Backtick_Right '`' > ) ($ Id.VSub_DollarName i) } ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] spids: [15268 15299] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [15177 15205] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [15150 15160] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {<->} {<0>} {<1>} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName pwd)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName type) ($ Id.VSub_DollarName abi)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sgi.mips2-o32> pattern: (pat.Words words:[{<sgi.mips2-o32>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <sgi.mips3> pattern: (pat.Words words:[{<sgi.mips3>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <-o32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sgi.mips3-n32> pattern: (pat.Words words:[{<sgi.mips3-n32>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <sgi.mips4> pattern: (pat.Words words:[{<sgi.mips4>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <-o32>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <sgi.mips> pattern: (pat.Words words: [ {<sgi.mips> <Id.Lit_LBracket '['> <456789> <Id.Lit_RBracket ']'> <-64> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) ($ Id.VSub_DollarName abi) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName bits)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/bin/sh'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <universal> <Id.Lit_Star '*'> <64> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pwd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pwd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pwd='> name: pwd ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tmp='> name: tmp ) op: assign_op.Equal rhs: {<hi> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} {(SQ <'rm -f $tmp.*'>)} {<0>} {<1>} {<2>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.a.c>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<Id.KW_Bang '!'>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'int main() { return 0; }\n'> ] ) ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-o>} {($ Id.VSub_DollarName tmp) <.a.exe> } {($ Id.VSub_DollarName tmp) <.a.c> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <file> more_env: [] words: [ {<file>} { ($ Id.VSub_DollarName tmp ) <.a.exe> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <64> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bits='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bits='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'bits=' > name: bits ) op: assign_op.Equal rhs: {<64>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [15545 15558] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.> <Id.Lit_Star '*'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {<->} {<0>} {<1>} {<2>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName pwd)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName bits)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <32> pattern: (pat.Words words:[{<32>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.i386>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'bits='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'bits='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'bits='> name: bits ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName bits)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'type='> name: type ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName type) <-> ($ Id.VSub_DollarName bits) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ )} {(DQ )} {($ Id.VSub_DollarName map)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <012> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'type in\n'> <'\t\t\t\t'> ($ Id.VSub_Number 1) <')\ttype='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'2; break ;;\n'> <'\t\t\t\tesac'> ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_hostinfo_='> name: _hostinfo_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _hostinfo_) <' '> ($ Id.VSub_DollarName type) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName _hostinfo_)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike '_hostinfo_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_hostinfo_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_hostinfo_='> name:_hostinfo_) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName path)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName DEBUG)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<9>} ) ] do_fork: T ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {<->} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <note> name: note body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {(DQ ($ Id.VSub_At '@'))} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <checkcc> name: checkcc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName CC)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_)} ) ] redirects: [] ) ] spids: [15892 15899] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cc> pattern: (pat.Words words:[{<cc>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {<gcc>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {<gcc>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cc='> name:cc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_)} ) ] redirects: [] ) ] spids: [15917 15924] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <make> pattern: (pat.Words words:[{<make>} {<test>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {(DQ ($ Id.VSub_DollarName CC) <': not found'>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {(DQ <'warning: '> ($ Id.VSub_DollarName CC) <': not found'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <host> pattern: (pat.Words words:[{<host>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName package_use)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName u)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$PACKAGE_USE'> pattern: (pat.Words words:[{($ Id.VSub_DollarName PACKAGE_USE)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _onpath_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE) <'/bin/package'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [16045 16052] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName _hostinfo_)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <export> pattern: (pat.Words words:[{<export>} {<setup>} {<use>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike 'u='> ($ Id.VSub_DollarName package_use)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName u)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$PACKAGE_USE'> pattern: (pat.Words words:[{($ Id.VSub_DollarName PACKAGE_USE)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName LIBPATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName SHLIB_PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run='> name:run) op: assign_op.Equal rhs: {<->} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<accept>} {<the>} {<current>} {<package>} {<use>} {<environment>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'OK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OK='> name:OK) op: assign_op.Equal rhs: {<ok>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KSH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KSH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KSH='> name:KSH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/ksh'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKE='> name:MAKE) op: assign_op.Equal rhs: {<nmake>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NMAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NMAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NMAKE='> name:NMAKE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/'> ($ Id.VSub_DollarName MAKE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUM='> name:SUM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/sum'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEE='> name:TEE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/tee'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INITROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INITROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INITROOT='> name:INITROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/INIT'>} ) ] redirects: [] ) (command.Simple blame_tok: <checkcc> more_env: [] words: [{<checkcc>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hosttype='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosttype='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosttype='> name:hosttype) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName KEEP_PACKAGEROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <use> pattern: (pat.Words words:[{<use>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName show)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <echo> pattern: (pat.Words words:[{<echo>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'exec='> name: exec ) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'make='> name: make ) op: assign_op.Equal rhs: {<echo>} ) (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'show='> name: show ) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->} {<.>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<Id.Lit_TildeLike '~'> ($ Id.VSub_Number 1) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [ {<packageroot>} {($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] spids: [16427 16434] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName HOME)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,/[^/]*$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {($ Id.VSub_DollarName usr)} {($ Id.VSub_DollarName use)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [ {<packageroot>} {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_Number 1) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT=' > name: PACKAGEROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_Number 1) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [16473 16482] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName PACKAGEROOT)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hosttype='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosttype='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hosttype='> name: hosttype ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run='> name:run) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '@'))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PACKAGEROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<X> ($ Id.VSub_DollarName PACKAGEROOT)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<'/'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <X> pattern: (pat.Words words:[{<X>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PACKAGEROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'//'> pattern: (pat.Words words:[{<'//'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {<'/'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <home> pattern: (pat.Words words:[{<home>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <arch> pattern: (pat.Words words:[{<arch>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'k='> name: k ) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [ {<packageroot>} {($ Id.VSub_DollarName d)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PACKAGEROOT='> name: PACKAGEROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d)} ) ] redirects: [] ) ] spids: [16774 16781] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INITROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INITROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INITROOT='> name:INITROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/INIT'>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'PACKAGEROOT='> ($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<PACKAGEROOT>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PACKAGEROOT>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName KEEP_HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<type>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTTYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HOSTTYPE='> name:HOSTTYPE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _hostinfo_)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_PACKAGE_HOSTTYPE_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_PACKAGE_HOSTTYPE_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_PACKAGE_HOSTTYPE_='> name: _PACKAGE_HOSTTYPE_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<_PACKAGE_HOSTTYPE_>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'HOSTTYPE='> ($ Id.VSub_DollarName HOSTTYPE)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<HOSTTYPE>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<HOSTTYPE>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INSTALLROOT='> name:INSTALLROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words: [ {<admin>} {<install>} {<make>} {<read>} {<remove>} {<test>} {<verify>} {<view>} {<write>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLROOT='> name: INSTALLROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT)} ) ] redirects: [] ) ] spids: [16937 16948] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'INSTALLROOT='> ($ Id.VSub_DollarName INSTALLROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<INSTALLROOT>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<INSTALLROOT>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <export> pattern: (pat.Words words:[{<export>} {<use>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [{<packageroot>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName PACKAGEROOT) <': invalid package root directory'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName KEEP_HOSTTYPE) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName hosttype) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words: [{<0> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PACKAGEROOT> var_name: PACKAGEROOT suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <'/arch/'> ($ Id.VSub_DollarName hosttype) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEEP_HOSTTYPE='> name: KEEP_HOSTTYPE ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'HOSTTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HOSTTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HOSTTYPE='> name: HOSTTYPE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName hosttype)} ) ] redirects: [] ) ] spids: [17045 17060] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName hosttype) <': package root not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [{<packageroot>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName KEEP_PACKAGEROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName PACKAGEROOT) <': must be in the package root directory tree'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words:[{<admin>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<arch>} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<lib>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName INITROOT)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<execrate>} {<ignore>} {<mamprobe>} {<silent>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-h>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.sh> } {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ { (DQ ($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.sh> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<update>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shellmagic> more_env: [] words: [{<shellmagic>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName SHELLMAGIC)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.sh> } {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName exec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName SHELLMAGIC ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} { ($ Id.VSub_DollarName INITROOT ) <'/'> ($ Id.VSub_DollarName i) <.sh> } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { ($ Id.VSub_DollarName PACKAGEROOT ) <'/bin/'> ($ Id.VSub_DollarName i) } ) ] right: <Id.Lit_RBrace '}'> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'{\n'> <'echo '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"' > ch: '"' ) ($ Id.VSub_DollarName SHELLMAGIC) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> <'cat '> ($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <'.sh\n'> <'} > '> ($ Id.VSub_DollarName PACKAGEROOT ) <'/bin/'> ($ Id.VSub_DollarName i) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [17263 17272] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] redirects: [] ) (command.Simple blame_tok: <checkcc> more_env: [] words: [{<checkcc>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName path)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/hello.c'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'/tmp'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<3>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {($ Id.VSub_DollarName INITROOT) <'/hello.c'>} {<pkg> ($ Id.VSub_Dollar '$') <.c>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<3>} ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-o>} {<pkg> ($ Id.VSub_Dollar '$') <.exe>} {<pkg> ($ Id.VSub_Dollar '$') <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<pkg> ($ Id.VSub_Dollar '$') <.e>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$cc'> more_env: [] words: [ {($ Id.VSub_DollarName cc)} {<-Dnew> <Id.Lit_Equals '='> <old>} {<-o>} {<pkg> ($ Id.VSub_Dollar '$') <.exe>} {<pkg> ($ Id.VSub_Dollar '$') <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> (${ Id.VSub_Name warn) ($ Id.VSub_DollarName CC) <': must be a C compiler (not C++)'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [17614 17640] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<pkg> ($ Id.VSub_Dollar '$') <.e>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> (${ Id.VSub_Name warn) ($ Id.VSub_DollarName CC) <': failed to compile and link '> ($ Id.VSub_DollarName INITROOT) <'/hello.c -- is it a C compiler?'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<2>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <'./pkg'> more_env: [] words: [{<'./pkg'> ($ Id.VSub_Dollar '$') <.exe>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [17696 17709] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {<pkg> ($ Id.VSub_Dollar '$') <.> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName code)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CROSS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CROSS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CROSS='> name: CROSS ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [17540 17550] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXECTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXECTYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXECTYPE='> name:EXECTYPE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXECROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXECROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXECROOT='> name:EXECROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CROSS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sgi.mips> pattern: (pat.Words words: [ {<sgi.mips> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {<rld>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<'/lib32/'> ($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<'/lib64/'> ($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName INSTALLROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/sgi.mips'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { ($ Id.VSub_DollarName INSTALLROOT) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,-[^-/]*$,,'>)} {<-e>} {(SQ <'s,.$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words: [ {(DQ <'n=2 v= l='>)} {(DQ <'n=3 v=N32 l=lib32'>)} {(DQ <'n=4-n32 v=N32 l=lib32'>)} {(DQ <'n=4 v=64 l=lib64'>)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName v)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <N32> pattern: (pat.Words words:[{<N32>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName n) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName HOSTTYPE) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-n32> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <-n32> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <-n32> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <-n32> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName l)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<Id.KW_Bang '!'>} {<'/'> ($ Id.VSub_DollarName l) <'/'> ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [17994 18006] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName u)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName HOSTTYPE)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <sgi.mips> pattern: (pat.Words words: [ {<sgi.mips> ($ Id.VSub_DollarName n)} {<sgi.mips> ($ Id.VSub_DollarName n) <-> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName abi) <' \'d='> ($ Id.VSub_DollarName INSTALLROOT) <' v='> ($ Id.VSub_DollarName v) <'\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName u) ($ Id.VSub_DollarName n) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'abi='> name: abi ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName abi) <' \'d='> ($ Id.VSub_DollarName u) ($ Id.VSub_DollarName n) <' v='> ($ Id.VSub_DollarName v) <'\''> ) } ) ] redirects: [] ) ] spids: [18080 18090] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [17819 17834] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName abi)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: {(DQ <'\'d='> ($ Id.VSub_DollarName INSTALLROOT) <' v=\''>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'\n'> <'\t\t\tfor a in '> ($ Id.VSub_DollarName abi) <'\n'> <'\t\t\tdo\teval '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'a\n'> <'\t\t\t\teval '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'\n'> <'\t\t\t\t\tcase '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <LD_LIBRARY> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{v}_PATH: in\n'> <'\t\t\t\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'d/lib:*)\n'> <'\t\t\t\t\t\t;;\n'> <'\t\t\t\t\t*)\tx='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <LD_LIBRARY> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{v}_PATH\n'> <'\t\t\t\t\t\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'x in\n'> <'\t\t\t\t\t\t\'\'|:*)\t;;\n'> <'\t\t\t\t\t\t*)\tx=:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'x ;;\n'> <'\t\t\t\t\t\tesac\n'> <'\t\t\t\t\t\tLD_LIBRARY'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{v}_PATH='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'d/lib'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'x\n'> <'\t\t\t\t\t\texport LD_LIBRARY'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{v}_PATH\n'> <'\t\t\t\t\t\tp=1\n'> <'\t\t\t\t\t\t;;\n'> <'\t\t\t\t\tesac\n'> <'\t\t\t\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> <'\t\t\tdone\n'> <'\t\t'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName LD_LIBRARY_PATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName lib)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <64>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {(${ Id.VSub_Name d) <64>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'd='> name: d ) op: assign_op.Equal rhs: {(${ Id.VSub_Name d) <64>} ) ] redirects: [] ) ] spids: [18254 18266] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName LD_LIBRARY_PATH) <Id.Lit_Colon ':'> } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName d) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName d)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> name: LD_LIBRARY_PATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName LD_LIBRARY_PATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName d) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [18306 18315] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'LD_LIBRARY_PATH='> ($ Id.VSub_DollarName LD_LIBRARY_PATH) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<LD_LIBRARY_PATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<LD_LIBRARY_PATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName LIBPATH) <Id.Lit_Colon ':'>}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName LIBPATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'LIBPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LIBPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LIBPATH='> name: LIBPATH ) op: assign_op.Equal rhs: {<'/usr/lib'> <Id.Lit_Colon ':'> <'/lib'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LIBPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LIBPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LIBPATH='> name: LIBPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName LIBPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'LIBPATH='> ($ Id.VSub_DollarName LIBPATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<LIBPATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<LIBPATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName SHLIB_PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHLIB_PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHLIB_PATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHLIB_PATH='> name: SHLIB_PATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/lib'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SHLIB_PATH> var_name: SHLIB_PATH suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<':'> ($ Id.VSub_DollarName SHLIB_PATH)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'SHLIB_PATH='> ($ Id.VSub_DollarName SHLIB_PATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<SHLIB_PATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<SHLIB_PATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName DYLD_LIBRARY_PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/lib'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DYLD_LIBRARY_PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DYLD_LIBRARY_PATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DYLD_LIBRARY_PATH='> name: DYLD_LIBRARY_PATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/lib'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name DYLD_LIBRARY_PATH> var_name: DYLD_LIBRARY_PATH suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<':'> ($ Id.VSub_DollarName DYLD_LIBRARY_PATH)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'DYLD_LIBRARY_PATH='> ($ Id.VSub_DollarName DYLD_LIBRARY_PATH) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<DYLD_LIBRARY_PATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<DYLD_LIBRARY_PATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD_ROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [{($ Id.VSub_DollarName INSTALLROOT) <'/arch'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <':'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_RLD_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_RLD_ROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_RLD_ROOT='> name: _RLD_ROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/arch'> <Id.Lit_Colon ':'> <'/'> } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/'> pattern: (pat.Words words: [{<'/'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'/'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_RLD_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_RLD_ROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_RLD_ROOT='> name: _RLD_ROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/arch'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName _RLD_ROOT) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_RLD_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_RLD_ROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_RLD_ROOT='> name: _RLD_ROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/arch'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName _RLD_ROOT) <Id.Lit_Colon ':'> <'/'> } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike '_RLD_ROOT='> ($ Id.VSub_DollarName _RLD_ROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<_RLD_ROOT>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<_RLD_ROOT>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'>}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$PACKAGEROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName PACKAGEROOT) <'/bin'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'>}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'PATH='> ($ Id.VSub_DollarName PATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<PATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<package>} {<proto>} {<nmake>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'EXECROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXECROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXECROOT='> name: EXECROOT ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _onpath_)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,//*[^/]*//*[^/]*$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'EXECTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXECTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXECTYPE='> name: EXECTYPE ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName EXECROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s,.*/,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [18772 18779] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$EXECTYPE'> pattern: (pat.Words words:[{($ Id.VSub_DollarName EXECTYPE)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'OCC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OCC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OCC='> name:OCC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName CC)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<type>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'EXECTYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'EXECTYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXECTYPE='> name: EXECTYPE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _hostinfo_)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$EXECTYPE'> pattern: (pat.Words words:[{($ Id.VSub_DollarName EXECTYPE)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName CC) <': seems to be a cross-compiler'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': set HOSTTYPE to something other than the native '> ($ Id.VSub_DollarName EXECTYPE) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'EXECTYPE='> ($ Id.VSub_DollarName EXECTYPE)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<EXECTYPE>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<EXECTYPE>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'EXECROOT='> ($ Id.VSub_DollarName EXECROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<EXECROOT>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<EXECROOT>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'OK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OK='> name:OK) op: assign_op.Equal rhs: {<ok>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'KSH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'KSH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KSH='> name:KSH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/ksh'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKE='> name:MAKE) op: assign_op.Equal rhs: {<nmake>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'NMAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NMAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NMAKE='> name:NMAKE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/'> ($ Id.VSub_DollarName MAKE)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SUM='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SUM='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUM='> name:SUM) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/sum'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEE='> name:TEE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName EXECROOT) <'/bin/tee'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName KEEP_SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {(DQ ($ Id.VSub_DollarName SHELL))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <checksh> more_env: [] words: [{<checksh>} {($ Id.VSub_DollarName SHELL)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELL='> name: SHELL ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {<'/bin/'> <Id.Lit_Star '*'>} {<'/usr/bin/'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELL='> name: SHELL ) op: assign_op.Equal rhs: {<'/bin/sh'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<ksh>} {<sh>} {<bash>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <checksh> more_env: [] words: [ {<checksh>} {($ Id.VSub_DollarName _onpath_)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELL='> name: SHELL ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [19093 19106] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <ksh>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName KSH)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELL='> name: SHELL ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName KSH)} ) ] redirects: [] ) ] spids: [19130 19137] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName SHELL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/bin/sh'> pattern: (pat.Words words:[{<'/bin/sh'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: {<'/bin/sh'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$SHELL'> more_env: [] words: [{($ Id.VSub_DollarName SHELL)} {<-c>} {(SQ <'trap "exit 0" 0; exit 1'>)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_QMark '?')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: {<'/bin/sh'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$SHELL'> more_env: [] words: [ {($ Id.VSub_DollarName SHELL)} {<-c>} {(DQ <'date | '> ($ Id.VSub_DollarName SHELL) <' -c \'read x\''>)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_QMark '?')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SHELL='> name: SHELL ) op: assign_op.Equal rhs: {<'/bin/sh'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<SHELL>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'SHELL='> ($ Id.VSub_DollarName SHELL)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<SHELL>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COSHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COSHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COSHELL='> name:COSHELL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName SHELL)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<COSHELL>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'COSHELL='> ($ Id.VSub_DollarName COSHELL)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<COSHELL>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <use> pattern: (pat.Words words:[{<use>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ENV='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ENV='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENV='> name:ENV) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ERROR_OPTIONS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ERROR_OPTIONS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ERROR_OPTIONS='> name: ERROR_OPTIONS ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<ENV>} {<ERROR_OPTIONS>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName USER_VPATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName VPATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <':'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName VPATH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH='> name: USER_VPATH ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/arch/'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/arch/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <packageroot> more_env: [] words: [{<packageroot>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName USER_VPATH)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH='> name: USER_VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH='> name: USER_VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName USER_VPATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [19452 19459] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName USER_VPATH)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <':'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName USER_VPATH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USER_VPATH='> name:USER_VPATH) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> name: USER_VPATH_CHAIN ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName INSTALLROOT)} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH='> name: USER_VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName USER_VPATH) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_VPATH_CHAIN='> name: USER_VPATH_CHAIN ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName USER_VPATH_CHAIN) <' '> ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PROTOROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName i) <'/bin/mamake'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'PROTOROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROTOROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROTOROOT='> name: PROTOROOT ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGESRC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGESRC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PACKAGESRC='> name:PACKAGESRC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PACKAGEBIN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PACKAGEBIN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PACKAGEBIN='> name:PACKAGEBIN) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName run)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <use> pattern: (pat.Words words:[{<use> <Id.Lit_Colon ':'> <->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'run='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'run='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run='> name:run) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '@'))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-r>} {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package/profile'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package/profile'>}] redirects: [] do_fork: T ) ] spids: [19716 19725] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cygwin.> pattern: (pat.Words words:[{<cygwin.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lose='> name:lose) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CYGWIN)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <nontsec> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lose='> name:lose) op: assign_op.Equal rhs: {<ntsec>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <ntsec> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exe='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exe='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exe='> name:exe) op: assign_op.Equal rhs: {<'/tmp/pkg'> ($ Id.VSub_Dollar '$') <.exe>} ) ] redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName exe)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName exe)} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {($ Id.VSub_DollarName exe)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lose='> name:lose) op: assign_op.Equal rhs: {<ntsec>} ) ] redirects: [] ) ] spids: [19803 19812] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CYGWIN)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <nobinmode> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lose='> name:lose) op: assign_op.Equal rhs: {<binmode>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lose='> name:lose) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName lose) <' binmode'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName lose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName HOSTTYPE) <': export \''> ($ Id.VSub_DollarName lose) <'\' in CYGWIN or languish in windows'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'VIEW_bin='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VIEW_bin='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_bin='> name:VIEW_bin) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT)} ) (AssignPair left: <Id.Lit_VarLike 'VIEW_src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_src='> name:VIEW_src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT)} ) (AssignPair left: <Id.Lit_VarLike 'VIEW_all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_all='> name:VIEW_all) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName INSTALLROOT) <' '> ($ Id.VSub_DollarName PACKAGEROOT))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName USER_VPATH_CHAIN)} ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName USER_VPATH_CHAIN)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName USER_VPATH_CHAIN)} ] redirects: [] do_fork: T ) ] spids: [19937 19966] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VPATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VPATH='> name:VPATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) ($ Id.VSub_DollarName USER_VPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'VPATH='> ($ Id.VSub_DollarName VPATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<VPATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<VPATH>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <':'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName VPATH)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/arch/'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VIEW_src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VIEW_src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_src='> name:VIEW_src) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName VIEW_src) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/arch/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VIEW_bin='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VIEW_bin='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_bin='> name:VIEW_bin) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName VIEW_bin) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VIEW_src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VIEW_src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_src='> name:VIEW_src) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName VIEW_src) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'VIEW_all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VIEW_all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VIEW_all='> name:VIEW_all) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName VIEW_all) <' '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShFunction name_tok: <view> name: view body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [{<-> <Id.Lit_LBracket '['> <dfsx> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike '_view_T_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_T_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_T_='> name:_view_T_) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_T_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_T_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_T_='> name:_view_T_) op: assign_op.Equal rhs: {<-f>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_t_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_t_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_t_='> name:_view_t_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_t_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_t_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_t_='> name:_view_t_) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <all> pattern: (pat.Words words:[{<all>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike '_view_v_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_v_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_v_='> name:_view_v_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_all)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <bin> pattern: (pat.Words words:[{<bin>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike '_view_v_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_v_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_v_='> name:_view_v_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_bin)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <src> pattern: (pat.Words words:[{<src>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike '_view_v_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_v_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_v_='> name:_view_v_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_src)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_v_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_v_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_v_='> name:_view_v_) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_all)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName _view_T_)} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_='> name:_view_) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [20250 20259] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [_view_d_] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName _view_v_)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName _view_T_)} {($ Id.VSub_DollarName _view_d_) <'/'> ($ Id.VSub_Number 1) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_view_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_view_='> name: _view_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _view_d_) <'/'> ($ Id.VSub_Number 1) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [20290 20301] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_view_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_view_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_view_='> name:_view_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _view_t_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName _view_t_)} {<not>} {<found>} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words:[{<admin>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <results> pattern: (pat.Words words:[{<results>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_DollarName admin_action)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName admin_args)}] redirects: [] do_fork: T ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_args='> name:admin_args) op: assign_op.Equal rhs: {(DQ <'admin '> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_on)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {($ Id.VSub_DollarName admin_args)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: { (DQ <'on '> ($ Id.VSub_DollarName admin_on) <' '> ($ Id.VSub_DollarName admin_args) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <release> pattern: (pat.Words words:[{<release>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<->} {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName target) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <setup> pattern: (pat.Words words:[{<setup>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types='> name:types) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <flat> pattern: (pat.Words words:[{<flat>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'flat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'flat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flat='> name:flat) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'//'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <.url>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types='> name:types) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName types) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [20713 20725] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName types) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' source '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_Star '*') <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <' '>)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> (DQ <' INIT '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [{<view>} {<->} {<all>} {<'src/cmd/INIT'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<INIT>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'packages='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'packages='> name:packages) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_Number '$0'> more_env: [] words: [ {($ Id.VSub_Number 0)} {($ Id.VSub_DollarName global)} {<authorize>} {(DQ ($ Id.VSub_DollarName authorize))} {<password>} {(DQ ($ Id.VSub_DollarName password))} {<update>} {<setup>} {($ Id.VSub_DollarName types)} {($ Id.VSub_DollarName url)} {(DQ ($ Id.VSub_At '@'))} {<Id.Lit_VarLike 'PACKAGEROOT='> ($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName packages)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_Number '$0'> more_env: [] words: [ {($ Id.VSub_Number 0)} {($ Id.VSub_DollarName global)} {<read>} {($ Id.VSub_DollarName packages)} {<Id.Lit_VarLike 'PACKAGEROOT='> ($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName target) <' '> ($ Id.VSub_DollarName package) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package='> name: package ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {(DQ <'lib/package/'> ($ Id.VSub_Number 1) <.pkg>)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package='> name: package ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName package) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] spids: [20971 20986] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'target='> name: target ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName target) <' '> ($ Id.VSub_DollarName package) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package='> name: package ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName flat)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <make> pattern: (pat.Words words: [{<make>} {<read>} {<setup>} {<update>} {<use>} {<view>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {($ Id.VSub_DollarName INSTALLROOT)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [21062 21073] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<bin>} {<include>} {<lib>} {<fun>} {<man>} {<share>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/../../'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/../../'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] spids: [21112 21125] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-h>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<ln>} {<-s>} {<'../../'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] spids: [21154 21167] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [21139 21152] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-h>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [x] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) <'/.'> <Id.Lit_LBracket '['> <a-z> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) <'/'> <Id.Lit_Star '*'> } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName x)} {<-o>} {<-d>} {($ Id.VSub_DollarName x)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} { ($ Id.VSub_DollarName INSTALLROOT ) <'/'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} { ($ Id.VSub_DollarName INSTALLROOT ) <'/../../'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName x) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mv>} {($ Id.VSub_DollarName x)} {($ Id.VSub_DollarName INSTALLROOT) <'/../../'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] spids: [21242 21271] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [21225 21240] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<rm>} {<-rf>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<ln>} {<-s>} {<'../../'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] spids: [21186 21199] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <checkaout> name: checkaout body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName PROTOROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PROTOROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROTOROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROTOROOT='> name:PROTOROOT) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Star '*')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ratz> pattern: (pat.Words words:[{<ratz>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/ratz.c'>} {<-a>} {<-w>} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/hello.c'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName INITROOT) <'/hello.c'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <'!'>)} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'#ifndef printf\n'> <'#include <stdio.h>\n'> <'#endif\n'> < 'int main() { int new = 0; printf("hello world\\n"); return new;}\n' > ] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/p.c'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName INITROOT) <'/p.c'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <'!'>)} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'/*\n'> <' * small test for prototyping cc\n'> <' */\n'> <'\n'> < 'int main(int argc, char** argv) { return argc || argv; }\n' > ] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [21372 21388] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/hello.c'>} {<-a>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/p.c'>} {<-a>} {<-w>} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': command not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_PACKAGE_cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_PACKAGE_cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_PACKAGE_cc='> name: _PACKAGE_cc ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_PACKAGE_cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_PACKAGE_cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_PACKAGE_cc='> name: _PACKAGE_cc ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/hello.c'>} {<-a>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/p.c'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName INITROOT) <': INIT package source not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/nmake'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {<-c>} {($ Id.VSub_DollarName INITROOT) <'/p.c'>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<p.> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<0>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName c))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<proto>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'PROTOROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PROTOROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROTOROOT='> name: PROTOROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/proto'>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'PROTOROOT='> ($ Id.VSub_DollarName PACKAGEROOT) <'/proto'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PROTOROOT>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INITPROTO='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INITPROTO='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INITPROTO='> name: INITPROTO ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PROTOROOT) <'/src/cmd/INIT'> } ) ] redirects: [] ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<proto>} {<convert>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src'>} {<into>} {($ Id.VSub_DollarName PROTOROOT) <'/src'>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/nmake'> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dirs='> name: dirs ) op: assign_op.Equal rhs: { (DQ < 'src/cmd/INIT src/lib/libast src/lib/libardir src/lib/libcoshell src/lib/libpp src/cmd/probe src/cmd/cpp src/cmd/nmake' > ) } ) ] redirects: [] ) ] spids: [21711 21721] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dirs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dirs='> name: dirs ) op: assign_op.Equal rhs: {(DQ <src>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { ($ Id.VSub_DollarName PROTOROOT) <'/UPDATE'> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'newer='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'newer='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'newer='> name: newer ) op: assign_op.Equal rhs: { (DQ <'-newer '> ($ Id.VSub_DollarName PROTOROOT ) <'/UPDATE'> ) } ) ] redirects: [] ) ] spids: [21743 21753] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'newer='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'newer='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'newer='> name: newer ) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName exec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {($ Id.VSub_DollarName dirs)} {<-name>} {(SQ <'*.[CcHh]'>)} {($ Id.VSub_DollarName newer)} {<-print>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <proto> more_env: [] words: [ {<proto>} {<-v>} {<-L>} {<->} {<-C>} {<proto>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cd>} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ <'find '> ($ Id.VSub_DollarName dirs) <' -name \'*.[CcHh]\' '> ($ Id.VSub_DollarName newer) <' -print | proto -L - -C proto'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<touch>} {($ Id.VSub_DollarName PROTOROOT) <'/UPDATE'>} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} { ($ Id.VSub_DollarName INSTALLROOT ) } {<->} { ($ Id.VSub_DollarName INSTALLROOT ) } { ($ Id.VSub_DollarName PROTOROOT) } { ($ Id.VSub_DollarName PROTOROOT) } { ($ Id.VSub_DollarName PACKAGEROOT ) } ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {<->} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PROTOROOT)} {($ Id.VSub_DollarName PROTOROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PROTOROOT)} {($ Id.VSub_DollarName PROTOROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName USER_VPATH_CHAIN)} ] redirects: [] do_fork: T ) ] spids: [21859 21901] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VPATH='> name: VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PROTOROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) ($ Id.VSub_DollarName USER_VPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'VPATH='> ($ Id.VSub_DollarName VPATH) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<VPATH>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<arch>} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE)} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE) <'/bin'>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _PACKAGE_cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_PACKAGE_cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_PACKAGE_cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_PACKAGE_cc='> name: _PACKAGE_cc ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_PACKAGE_cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_PACKAGE_cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_PACKAGE_cc='> name: _PACKAGE_cc ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'j='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <_PACKAGE_AOUT_> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<_PACKAGE_AOUT_> ($ Id.VSub_DollarName i) <Id.Lit_Equals '='> <1>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _PACKAGE_cc)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.c> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(${ Id.VSub_Name k) <1>} ) ] redirects: [] ) ] spids: [22102 22114] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(${ Id.VSub_Name k) <0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName EXECROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(${ Id.VSub_Name k) <1>} ) ] redirects: [] ) ] spids: [22135 22144] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(${ Id.VSub_Name k) <0>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {($ Id.VSub_DollarName k)} {<Id.Lit_Colon ':'>} {<compiler>} {<Id.Lit_Colon ':'>} {<source>} {<Id.Lit_Colon ':'>} {<binary>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <00>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [{<view>} {<->} {<'bin/'> ($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <000> pattern: (pat.Words words:[{<000>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': not found: download the INIT package '> ($ Id.VSub_DollarName HOSTTYPE) <' binary to continue'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <010> pattern: (pat.Words words:[{<010>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': not found: set CC=C-compiler or download the INIT package '> ($ Id.VSub_DollarName HOSTTYPE) <' binary to continue'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <100> pattern: (pat.Words words:[{<100>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': not found: download the INIT package source or '> ($ Id.VSub_DollarName HOSTTYPE) <' binary to continue'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <110> pattern: (pat.Words words:[{<110>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CROSS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': not found: make the local '> ($ Id.VSub_DollarName EXECTYPE) <' binary package before '> ($ Id.VSub_DollarName HOSTTYPE) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <01>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<accept>} {<binary>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <011> pattern: (pat.Words words:[{<011>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<accept>} {<binary>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CROSS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.c> } {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName i) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ { (DQ ($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.c> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<update>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<proto>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName i))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/proto'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$INSTALLROOT'> more_env: [] words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/bin/proto'> } {<-p>} {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.c> } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName i) <.c>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ ($ Id.VSub_DollarName INSTALLROOT) <'/bin/proto -p '> ($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <'.c > '> ($ Id.VSub_DollarName i) <.c> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName CC)} {($ Id.VSub_DollarName CCFLAGS)} {<-o>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName i) } {($ Id.VSub_DollarName i) <.c>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName i) <.c>} ] redirects: [] do_fork: T ) ] spids: [22446 22467] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words: [ {<arch>} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE)} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE) <'/bin'>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName j) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName j) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [22556 22568] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName PROTOROOT))} {<-a>} {<-f>} {($ Id.VSub_DollarName INITPROTO) <'/'> ($ Id.VSub_DollarName i) <.c> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName CC)} {($ Id.VSub_DollarName CCFLAGS)} {<-o>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName i) } {($ Id.VSub_DollarName INITPROTO) <'/'> ($ Id.VSub_DollarName i) <.c> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [22617 22641] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName CC)} {($ Id.VSub_DollarName CCFLAGS)} {<-o>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName i) } {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName i) <.c> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName i) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName exec) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <proto> pattern: (pat.Words words:[{<proto> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/include'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/include'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <Id.VSub_DollarName '$INSTALLROOT'> more_env: [] words: [ {($ Id.VSub_DollarName INSTALLROOT) <'/bin/proto'>} {<-f>} {<'/dev/null'>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName i) <.c>} ) ] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {($ Id.VSub_DollarName i) <.c>} {($ Id.VSub_DollarName INSTALLROOT) <'/include/prototyped.h'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {($ Id.VSub_DollarName i) <.c>} {($ Id.VSub_DollarName INSTALLROOT) <'/include/prototyped.h'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {($ Id.VSub_DollarName i) <.c>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName i) <.o>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName i) <.o>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PATH)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {<'/bin'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <requirements> name: requirements body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_BIN)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <source> pattern: (pat.Words words:[{<source>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_SRC)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'r='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'r='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r='> name:r) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VIEW_ALL)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName r)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName d) <'/gen/'> <Id.Lit_Star '*'> <.ver>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName d) <'/gen/'> <Id.Lit_Star '*'> <.req>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [p] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName x)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName d) <'/gen/'> ($ Id.VSub_DollarName p) <.req> } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName x)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,.*/,,'>)} {<-e>} {(SQ <'s,\\....$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName y) <' '> ($ Id.VSub_DollarName p))} ) ] redirects: [] ) ] spids: [23056 23065] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'*'>)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName n) <' '> ($ Id.VSub_DollarName p))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName n)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName y) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': must read or write package'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName e)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<0>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Pound '#'))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'release='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'release='> name:release) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-r>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'q='> name:q) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'e='> name:e) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<p>} {<v>} {<r>} {<s>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'q='> name: q ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName q) <'\n'> ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName r) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$o'> pattern: (pat.Words words: [{($ Id.VSub_DollarName o)}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName s)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'e='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'e='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'e='> name: e ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName r)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <base> pattern: (pat.Words words:[{<base>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': base package '> ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) <' or newer required'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': delta package '> ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) <.> ($ Id.VSub_DollarName r) <' or newer required'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'o='> name: o ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName e)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName q))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<v>} {<r>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<v>} {<r>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName v)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<ERROR>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName release)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ERROR> pattern: (pat.Words words:[{<ERROR>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName force)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName release)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,\\(.*\\)-\\(.*\\)-\\(.*\\),yy=\\1 mm=\\2 dd=\\3,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName mm)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <01> pattern: (pat.Words words:[{<01>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<09>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <02> pattern: (pat.Words words:[{<02>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<10>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <03> pattern: (pat.Words words:[{<03>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<11>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <04> pattern: (pat.Words words:[{<04>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<12>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <05> pattern: (pat.Words words:[{<05>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<01>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <06> pattern: (pat.Words words:[{<06>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<02>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <07> pattern: (pat.Words words:[{<07>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<03>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <08> pattern: (pat.Words words:[{<08>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<04>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <09> pattern: (pat.Words words:[{<09>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<05>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <10> pattern: (pat.Words words:[{<10>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<06>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <11> pattern: (pat.Words words:[{<11>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<07>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <12> pattern: (pat.Words words:[{<12>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mm='> name:mm) op: assign_op.Equal rhs: {<08>} ) (AssignPair left: <Id.Lit_VarLike 'dd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd='> name:dd) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName dd)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'yy='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'yy='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yy='> name:yy) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [{<expr>} {($ Id.VSub_DollarName yy)} {<->} {<1>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'release='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'release='> name:release) op: assign_op.Equal rhs: {($ Id.VSub_DollarName yy) <-> ($ Id.VSub_DollarName mm) <-01>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lo='> name:lo) op: assign_op.Equal rhs: {($ Id.VSub_DollarName release)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'release='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'release='> name:release) op: assign_op.Equal rhs: { (DQ <'-f '> ($ Id.VSub_DollarName release) <' -r '> ($ Id.VSub_DollarName count) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <order> name: order body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_order_t_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_t_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_order_t_='> name:_order_t_) op: assign_op.Equal rhs: {<'lib/package/tgz'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_order_a_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_a_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_order_a_='> name:_order_a_) op: assign_op.Equal rhs: {<.> ($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_order_a_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_a_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_order_a_='> name:_order_a_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_order_n_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_n_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_order_n_='> name:_order_n_) op: assign_op.Equal rhs: {($ Id.VSub_Pound '#')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _order_n_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_order_p_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_p_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_order_p_='> name:_order_p_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_order_v_] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName VIEW_all)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [_order_f_] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName _order_v_) <'/lib/package/'> <Id.Lit_Star '*'> <.pkg> } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName _order_f_)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_order_p_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_p_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_order_p_='> name: _order_p_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _order_p_) <' '> ($ Id.VSub_DollarName _order_f_) ) } ) ] redirects: [] ) ] spids: [23844 23853] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName _order_p_)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<ratz>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Star '*'))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [_order_f_] iterable: (for_iter.Words words:[{<ratz>} {<INIT>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<-s>} {<->} {<src>} {($ Id.VSub_DollarName _order_t_) <'/'> ($ Id.VSub_DollarName _order_f_) ($ Id.VSub_DollarName _order_a_) <.tim> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _order_f_)} {($ Id.VSub_DollarName _order_f_)} ] redirects: [] do_fork: T ) ] spids: [23918 23935] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [23889 23903] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_order_f_] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {($ Id.VSub_DollarName _order_f_)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DAmp _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _order_f_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.pkg>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike '_order_f_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_f_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_order_f_='> name: _order_f_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _order_f_) <.pkg>} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {($ Id.VSub_DollarName _order_f_)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _order_f_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike '_order_f_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_f_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_order_f_='> name: _order_f_ ) op: assign_op.Equal rhs: {<'lib/package/'> ($ Id.VSub_DollarName _order_f_) } ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {($ Id.VSub_DollarName _order_f_)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName _order_f_) <': not a package'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> arg_word: {<2>} ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_order_f_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_f_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_order_f_='> name: _order_f_ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _view_)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike '_order_p_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_order_p_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_order_p_='> name: _order_p_ ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName _order_f_)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,.*/,,'>)} {<-e>} {(SQ <'s,\\.pkg$,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _order_n_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<-s>} {<->} {<src>} {($ Id.VSub_DollarName _order_t_) <'/'> ($ Id.VSub_DollarName _order_p_) ($ Id.VSub_DollarName _order_a_) <.tim> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _order_p_)} {($ Id.VSub_DollarName _order_p_)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _order_p_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INIT> pattern: (pat.Words words:[{<INIT>} {<ratz>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<INIT>} {($ Id.VSub_DollarName _order_p_)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'req='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'req='> name:req) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'req_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req_sep='> name: req_sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {(SQ <' \t\\\\'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName line)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'op='> name: op ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT> pattern: (pat.Words words: [ {<INIT>} {(SQ <'$('>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <')'>)} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName op)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <REQUIRES> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'req='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req='> name: req ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName req) ($ Id.VSub_DollarName req_sep) ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'req_sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req_sep=' > name: req_sep ) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_order_i_] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName req)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {<'lib/package/'> ($ Id.VSub_DollarName _order_i_) <.pkg> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName _order_u_)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<-s>} {<->} {<src>} {($ Id.VSub_DollarName _order_t_) <'/'> ($ Id.VSub_DollarName _order_i_) ($ Id.VSub_DollarName _order_a_) <.tim> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _order_i_)} {($ Id.VSub_DollarName _order_i_)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<INIT>} {($ Id.VSub_DollarName _order_i_)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName _order_i_)} {($ Id.VSub_DollarName _order_p_)} ] redirects: [] do_fork: T ) ] spids: [24350 24363] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName _order_f_)} ) ] right: <Id.Lit_RBrace '}'> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <tsort> more_env: [] words: [{<tsort>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <components> name: components body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike '_components_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_components_='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_components_='> name:_components_) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [p] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT> pattern: (pat.Words words:[{<INIT>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName _components_) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName p) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_components_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_components_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_components_='> name: _components_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _components_) <' '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {<'lib/package/'> ($ Id.VSub_DollarName p) <.pkg>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _view_)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName p)} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {(SQ <' \t\\\\'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName line)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'op='> name: op ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT> pattern: (pat.Words words: [ {<INIT>} {(SQ <'$('>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <')'>)} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName op)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <PACKAGE> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName _components_ ) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number 1 ) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_components_=' > pairs: [ (AssignPair left: <Id.Lit_VarLike '_components_=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike '_components_=' > name: _components_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _components_ ) <' '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) ] spids: [24531 24544] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/'> ($ Id.VSub_DollarName p) } {<-o>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/lib/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_components_='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_components_='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_components_='> name: _components_ ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName _components_) <' '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) ] spids: [24733 24752] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName p) <': package or component not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <showenv> name: showenv body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<make>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [__i__] iterable: (for_iter.Words words: [{<CC>} {<SHELL>} {($ Id.VSub_DollarName env)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<echo>} {($ Id.VSub_DollarName __i__) <Id.Lit_Equals '='> (SQ <'$'>) ($ Id.VSub_DollarName __i__) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <capture> name: capture body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName make) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName noexec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <install> pattern: (pat.Words words:[{<install>} {<make>} {<view>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName action)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )} {<Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName action)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName package)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <write> pattern: (pat.Words words:[{<write>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGESRC) <'/gen'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEBIN) <'/gen'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName o)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$output'> pattern: (pat.Words words:[{($ Id.VSub_DollarName output)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName o) <.out>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'output='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'output='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output) op: assign_op.Equal rhs: {($ Id.VSub_DollarName o)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName o) <.old>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName o) <.old>} {($ Id.VSub_DollarName o) <.out.1>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName o) <.out>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName o) <.out>} {($ Id.VSub_DollarName o) <.out.2>} ] redirects: [] do_fork: T ) ] spids: [25051 25061] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [25030 25040] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName o) <.out>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {($ Id.VSub_DollarName o) <.out.> <Id.Lit_QMark '?'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.3>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<4>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.4>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<5>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.5>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<6>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.6>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<7>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.7>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<8>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.8>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<9>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName o) <.out>} {($ Id.VSub_DollarName o) <.out.> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) ] spids: [25075 25085] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {($ Id.VSub_DollarName o) <.out>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName o)} ) ] do_fork: T ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {($ Id.VSub_DollarName action)} {<output>} {<captured>} {<Id.KW_In in>} {($ Id.VSub_DollarName o)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <' start at '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [{<date>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' in '> ($ Id.VSub_DollarName INSTALLROOT) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName quiet)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} { (DQ <'echo '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <' done at '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <date> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' in '> ($ Id.VSub_DollarName INSTALLROOT) <' 2>&1 | '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'TEE -a '> ($ Id.VSub_DollarName o) ) } {<0>} {<1>} {<2>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} { (DQ <'echo '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <' done at '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <date> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' in '> ($ Id.VSub_DollarName INSTALLROOT) <' >> '> ($ Id.VSub_DollarName o) ) } {<0>} {<1>} {<2>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName quiet)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName TEE)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEE='> name: TEE ) op: assign_op.Equal rhs: {<tee>} ) ] redirects: [] ) ] spids: [25360 25369] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName s)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName s))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <showenv> more_env: [] words: [{<showenv>} {($ Id.VSub_DollarName action)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <Id.VSub_DollarName '$TEE'> more_env: [] words: [{($ Id.VSub_DollarName TEE)} {<-a>} {($ Id.VSub_DollarName o)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName s)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName s))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <showenv> more_env: [] words: [{<showenv>} {($ Id.VSub_DollarName action)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName o)} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] right: <Id.Lit_RBrace '}'> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [{($ Id.VSub_DollarName make)} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <package_install> name: package_install body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'dest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sum='> name:sum) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ot='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ot='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ot='> name:ot) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/ /!d'>)} {<-e>} {(SQ <'s,[^ ]* ,,'>)} {<-e>} {(SQ <'s, \\(arch/[^/]*\\)/, \\1 ,'>)} {<-e>} {(SQ <'/ arch\\//!s,^[^ ]* [^ ]* [^ ]*,& .,'>)} {<-e>} {(SQ <'s,/\\([^ /]*\\)$, \\1,'>)} {($ Id.VSub_DollarName sum)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<mode>} {<user>} {<group>} {<arch>} {<dir>} {<file>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName flat) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName arch) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_QMark '?'> <Id.Lit_Colon ':'> <.>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dest) <'/'> ($ Id.VSub_DollarName dir)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dest) <'/'> ($ Id.VSub_DollarName arch) <'/'> ($ Id.VSub_DollarName dir) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$ot'> pattern: (pat.Words words:[{($ Id.VSub_DollarName ot)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [25652 25665] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ot='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ot='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ot='> name:ot) op: assign_op.Equal rhs: {($ Id.VSub_DollarName t)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName arch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName arch) <'/'> ($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName t) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName quiet)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName t))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {<-f>} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {($ Id.VSub_DollarName mode)} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [25740 25751] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName code)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <package_verify> name: package_verify body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName SUM)} {<-cp>} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <make_recurse> name: make_recurse body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [_make_recurse_j] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName makefiles)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {($ Id.VSub_Number 1) <'/'> ($ Id.VSub_DollarName _make_recurse_j)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] spids: [25878 25889] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<Id.Lit_Colon ':'> <MAKE> <Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_Number 1) <'/Makefile'>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {(DQ <'echo :MAKE: > '> ($ Id.VSub_Number 1) <'/Makefile'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [25900 25909] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <get> name: get body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HURL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'HURL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HURL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HURL='> name:HURL) op: assign_op.Equal rhs: {<.>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<wget>} {<lynx>} {<curl>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'HURL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HURL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HURL='> name: HURL ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) terminator: <Id.Op_Semi _> ) ] spids: [26002 26009] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'AUTHORIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTHORIZE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AUTHORIZE='> name:AUTHORIZE) op: assign_op.Equal rhs: { (DQ <'User-Agent: package AT&T Research'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <r> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <n> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName HURL) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName authorize) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words: [{<.> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'AUTHORIZE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTHORIZE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'AUTHORIZE='> name: AUTHORIZE ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name AUTHORIZE) <'Authorization: Basic '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-n>} {<-r>} {<-->} {($ Id.VSub_DollarName authorize) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName password) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <uuencode> more_env: [] words: [{<uuencode>} {<-h>} {<-x>} {<base64>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <r> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <n> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'getfd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'getfd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'getfd='> name:getfd) op: assign_op.Equal rhs: {<8>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 3)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HURL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'exec '> ($ Id.VSub_DollarName getfd) <'<> /dev/tcp/'> ($ Id.VSub_DollarName host) <'/80'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName path)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: {<'/'> ($ Id.VSub_DollarName path)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (DQ <'GET '> ($ Id.VSub_DollarName path) <' HTTP/1.0'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <r> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'nHost: '> ($ Id.VSub_DollarName host) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <r> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <n> ($ Id.VSub_DollarName AUTHORIZE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <r> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName getfd)} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {<8>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'got='> name: got ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {<1q>} {<get.tmp>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName got)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '>) <200> (DQ <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'got='> name: got ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'1,/^.$/d'>)} {<-e>} { (SQ < '/^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]/!d' > ) } {<get.tmp>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '>) <30> <Id.Lit_LBracket '['> <123> <Id.Lit_RBracket ']'> (DQ <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'got='> name: got ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/^Location: /!d'>)} {<-e>} { (SQ < 's,^Location: \\(.*\\)://\\([^/]*\\)\\(/.*\\),prot=' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\1'>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <' host='>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\2'>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <' path='>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ <'\\3'>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <','>) } {<get.tmp>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName got)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<get.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': '> ($ Id.VSub_DollarName url) <': redirect error'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName got)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<get.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': '> ($ Id.VSub_DollarName url) <': '> ($ Id.VSub_DollarName got) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )} {(DQ ($ Id.VSub_DollarName got))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <curl> pattern: (pat.Words words:[{<curl>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-s>} {<-L>} {<-o>} {<get.tmp>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-s>} {<-L>} {<-o>} {<get.tmp>} {<-u>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ < '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' > ) } {<get.tmp>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName code)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {(SQ <'^<H1>Authorization Required</H1>'>)} {<get.tmp>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [26598 26613] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hurl> pattern: (pat.Words words:[{<hurl>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <hurl> more_env: [] words: [ {<hurl>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <hurl> more_env: [] words: [ {<hurl>} {<-a>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ < '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' > ) } {<get.tmp>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <lynx> pattern: (pat.Words words:[{<lynx>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <lynx> more_env: [] words: [ {<lynx>} {<-source>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <lynx> more_env: [] words: [ {<lynx>} {<-source>} {<-auth>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ < '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' > ) } {<get.tmp>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <wget> pattern: (pat.Words words:[{<wget>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <wget> more_env: [] words: [ {<wget>} {<-nv>} {<-O>} {<get.tmp>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name authorize> var_name: authorize suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<'--http-user='> (DQ ($ Id.VSub_DollarName authorize))} ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name password> var_name: password suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<'--http-passwd='> (DQ ($ Id.VSub_DollarName password))} ) right: <Id.Right_DollarBrace '}'> ) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'got='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'got='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'got='> name:got) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ < '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' > ) } {<get.tmp>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName HURL) <Id.Lit_Colon ':'>} {<url>} {<get>} {<command>} {<not>} {<found>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<0>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName code))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<get.err>} {<get.tmp>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Uu> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <SsZz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<authorization>} {<required>} {<-->} {<see>} {($ Id.VSub_DollarName url)} {<Id.KW_For for>} {<license>} {<acceptance>} {<authorization>} {<name>} {<and>} {<password>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<get.err>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<get.tmp>} {<get.err>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 2) <Id.Lit_Colon ':'>} {<download>} {<failed>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [26929 26943] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<get.tmp>} {<get.err>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_Number 3) <' ('> ($ Id.VSub_Number 4) <' bytes):'>)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HURL)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ <'exec '> ($ Id.VSub_DollarName getfd) <'<> /dev/tcp/'> ($ Id.VSub_Number 1) <'/80'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName path)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: {<'/'> ($ Id.VSub_DollarName path)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} { (DQ <'GET '> ($ Id.VSub_DollarName path) <' HTTP/1.0'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <r> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'nHost: '> ($ Id.VSub_DollarName host) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <r> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <n> ($ Id.VSub_DollarName AUTHORIZE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <r> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName getfd)} ) ] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<got>}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName getfd)} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName got)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' 200 '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )} {(DQ ($ Id.VSub_DollarName got))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<got>}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName getfd)} ) ] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName got)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ )} {<Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName getfd)} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <curl> pattern: (pat.Words words:[{<curl>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-s>} {<-L>} {<-o>} {<get.tmp>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <curl> more_env: [] words: [ {<curl>} {<-s>} {<-L>} {<-o>} {<get.tmp>} {<-u>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName code)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ <'^<H1>Authorization Required</H1>'> ) } {<get.tmp>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.err>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [27434 27449] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <hurl> pattern: (pat.Words words:[{<hurl>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <ksh> more_env: [] words: [ {<ksh>} {<-x>} {<hurl>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <ksh> more_env: [] words: [ {<ksh>} {<-x>} {<hurl>} {<-a>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <lynx> pattern: (pat.Words words:[{<lynx>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <lynx> more_env: [] words: [ {<lynx>} {<-source>} {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <lynx> more_env: [] words: [ {<lynx>} {<-source>} {<-auth>} {(DQ ($ Id.VSub_DollarName authorize)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName password)) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<get.tmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <wget> pattern: (pat.Words words:[{<wget>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <wget> more_env: [] words: [ {<wget>} {<-nv>} {<-O>} {<get.tmp>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name authorize> var_name: authorize suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<'--http-user='> (DQ ($ Id.VSub_DollarName authorize)) } ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name password> var_name: password suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<'--http-passwd='> (DQ ($ Id.VSub_DollarName password)) } ) right: <Id.Right_DollarBrace '}'> ) } {<http> <Id.Lit_Colon ':'> <'//'> ($ Id.VSub_Number 1) <'/'> ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 3) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<get.err>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName HURL) <Id.Lit_Colon ':'>} {<url>} {<get>} {<command>} {<not>} {<found>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<0>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName code))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<get.err>} {<get.tmp>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Uu> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Hh> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <SsZz> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ii> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<authorization>} {<required>} {<-->} {<see>} {($ Id.VSub_DollarName url)} {<Id.KW_For for>} {<license>} {<acceptance>} {<authorization>} {<name>} {<and>} {<password>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<get.err>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<get.tmp>} {<get.err>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 3) <Id.Lit_Colon ':'>} {<download>} {<failed>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [27738 27752] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<get.err>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName checksum) <Id.Lit_Colon ':'> ($ Id.VSub_Number 5) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <->} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'z='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<get.tmp>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName z) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number 4) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<get.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 3) <Id.Lit_Colon ':'>} {<download>} {<error> <Id.Lit_Colon ':'>} {<expected>} {($ Id.VSub_Number 4)} {<bytes> <Id.Lit_Comma ','>} {<got>} {($ Id.VSub_DollarName z)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'z='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$checksum'> more_env: [] words: [{($ Id.VSub_DollarName checksum)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<get.tmp>} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^[ \t][ \t]*,,'>)} {<-e>} {(SQ <'s,[ \t].*,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName z) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number 5) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<get.tmp>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 3) <Id.Lit_Colon ':'>} {<download>} {($ Id.VSub_DollarName checksum)} {<error> <Id.Lit_Colon ':'>} {<expected>} {($ Id.VSub_Number 5) <Id.Lit_Comma ','>} {<got>} {($ Id.VSub_DollarName z)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<get.tmp>} {($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_Number 3) <' ('> ($ Id.VSub_Number 4) <' bytes)'>)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <copyright> name: copyright body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_Number 1) <.lic>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_Number 1)} {<package>} {<general>} {<copyright>} {<notice>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <proto> more_env: [] words: [ {<proto>} {<-c> (SQ <'#'>)} {<-p>} {<-s>} {<-l>} {($ Id.VSub_Number 1) <.lic>} {<-o>} {<Id.Lit_VarLike 'type='> <verbose> <Id.Lit_Comma ','> <Id.Lit_VarLike 'author='> (SQ <'*'>) } {<'/dev/null'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [28180 28190] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s/\\([^-]*\\)-\\(.*\\)/__j__="\\1" __i__="\\2"/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <copyright> more_env: [] words: [{<copyright>} {($ Id.VSub_DollarName __i__)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <copyright> more_env: [] words: [{<copyright>} {($ Id.VSub_DollarName __j__)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [28291 28304] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <remote> name: remote body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'background='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'background='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'background='> name:background) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'name='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_name> } {<Id.Lit_VarLike 'user='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_user> } {<Id.Lit_VarLike 'snarf='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_snarf> } {<Id.Lit_VarLike 'type='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_type> } {<Id.Lit_VarLike 'rsh='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_rsh> } {<Id.Lit_VarLike 'root='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_root> } {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_keep> } {<Id.Lit_VarLike 'log='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_log> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$main'> pattern: (pat.Words words:[{($ Id.VSub_DollarName main)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName log)} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'exec > '> ($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName log) <' 2>&1'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$admin_ping'> more_env: [] words: [{($ Id.VSub_DollarName admin_ping)} {($ Id.VSub_DollarName name)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$admin_ping'> more_env: [] words: [{($ Id.VSub_DollarName admin_ping)} {($ Id.VSub_DollarName name)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: {(DQ <'. ./.profile'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'root='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'root='> name:root) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cmd) <' && cd '> ($ Id.VSub_DollarName root) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'root='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'root='> name:root) op: assign_op.Equal rhs: {($ Id.VSub_DollarName root) <'/'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cmd) <' && { test -f lib/package/admin/'> ($ Id.VSub_DollarName admin_env) <' && . ./lib/package/admin/'> ($ Id.VSub_DollarName admin_env) <' || true ;} && PATH='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{PWD:-'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') <pwd> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <'}/bin:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'PATH '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{SHELL:-/bin/sh} -c \'package '> ($ Id.VSub_DollarName admin_args) <' PACKAGEROOT='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{PWD:-'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') <pwd> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\`'> ch: '`' ) <'} HOSTTYPE='> ($ Id.VSub_DollarName type) <' VPATH=\''> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'snarf='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'snarf='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'snarf='> name:snarf) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName snarf)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName rsh)} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName name)} {(DQ ($ Id.VSub_DollarName cmd))} {($ Id.VSub_DollarName background)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rcp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rcp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rcp='> name:rcp) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName rsh)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/\\(.\\).*/\\1/'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) <cp> } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName background)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {(DQ <'{'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName rsh)} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName name)} {(DQ ($ Id.VSub_DollarName cmd))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'lst='> ($ Id.VSub_DollarName admin_list)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_pkgs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'filter='> name: filter ) op: assign_op.Equal rhs: {<cat>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'filter='> name: filter ) op: assign_op.Equal rhs: { (DQ <'egrep lib/package/tgz/('> ($ Id.VSub_DollarName admin_pkgs) <')'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <.> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName rcp)} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName name) <Id.Lit_Colon ':'> (${ Id.VSub_Name root) <'lib/package/tgz/'> ($ Id.VSub_DollarName lst) } {($ Id.VSub_DollarName PACKAGESRC) <'/tgz'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName rcp)} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$filter'> more_env: [] words: [ {($ Id.VSub_DollarName filter)} {($ Id.VSub_DollarName PACKAGESRC) <'/tgz/'> ($ Id.VSub_DollarName lst) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (DQ <'s,^,'> ($ Id.VSub_DollarName user) ($ Id.VSub_DollarName name) <':,'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } {($ Id.VSub_DollarName PACKAGESRC) <'/tgz'>} ] redirects: [] do_fork: T ) ] spids: [28753 28772] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName user) ($ Id.VSub_DollarName name) <':'> (${ Id.VSub_Name root) <'lib/package/tgz/'> ($ Id.VSub_DollarName lst) <': not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName background)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {(DQ <'} '> ($ Id.VSub_DollarName background))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [28499 28524] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName name) <': down'>) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <checksrc> name: checksrc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package_src)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package_src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_src='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_src='> name: package_src ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName src)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [_i_] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGESRC)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<Id.Lit_Star '*'> <.def>} {<Id.Lit_Star '*'> <.lic>} {<Id.Lit_Star '*'> <.pkg>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/[-.].*//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName package_src) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName _i_) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package_src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_src='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_src='> name: package_src ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName package_src) <' '> ($ Id.VSub_DollarName _i_) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike '__isascii__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__isascii__='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__isascii__='> name:__isascii__) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShFunction name_tok: <isascii> name: isascii body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName __isascii__)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<A>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <od> more_env: [] words: [{<od>} {<-o>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s/[ \t]*$//'>)} {<-e>} {(SQ <'/[ \t]/!d'>)} {<-e>} {(SQ <'s/.*[ \t]//'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <005101> pattern: (pat.Words words:[{<005101>} {<040412>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__isascii__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__isascii__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__isascii__='> name: __isascii__ ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike '__isascii__='> pairs: [ (AssignPair left: <Id.Lit_VarLike '__isascii__='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '__isascii__='> name: __isascii__ ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName __isascii__)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <admin> pattern: (pat.Words words:[{<admin>}]) middle: <Id.Right_CasePat _> action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName admin_db)}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_db)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName admin_db) <Id.Lit_Colon ':'>} {<Id.KW_Data data>} {<file>} {<not>} {<found>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<file>} {<src>} {<'lib/package/admin/'> ($ Id.VSub_DollarName admin_db)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_db='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_db='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_db='> name:admin_db) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _view_)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_components='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_components='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_components='> name: admin_components ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <list> pattern: (pat.Words words:[{<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName admin_db)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <test> pattern: (pat.Words words:[{<test>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {($ Id.VSub_DollarName admin_args)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_components='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_components='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_components='> name: admin_components ) op: assign_op.Equal rhs: {<-> ($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<all>} {<work>} {<Id.KW_Done done>} {<Id.KW_In in>} {($ Id.VSub_DollarName PACKAGESRC) <'/admin'>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGESRC) <'/admin'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <checksrc> more_env: [] words: [{<checksrc>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'packages='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'packages='> name:packages) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_log='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_log='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_log='> name:admin_log) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_action) (${ Id.VSub_Name admin_components) <.log>} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName admin_db)} ) ] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName admin_log)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName admin_log)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_on)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_on='> name:admin_on) op: assign_op.Equal rhs: {(DQ <'*'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hostname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hostname='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'logs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'logs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'logs='> name:logs) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'local_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local_hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'local_hosts='> name:local_hosts) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'local_types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local_types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'local_types='> name:local_types) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pids='> name:pids) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'remote_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remote_hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remote_hosts='> name:remote_hosts) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sync_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync_hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sync_hosts='> name:sync_hosts) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_host='> name:admin_host) op: assign_op.Equal rhs: {<_admin_host_>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_out='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_out='> name:admin_out) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName admin_args) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' write binary '>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (DQ <' write '>) <Id.Lit_Star '*'> (DQ <' binary '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_binary='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_binary='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_binary='> name: admin_binary ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_binary='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_binary='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_binary='> name: admin_binary ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_args='> name:admin_args) op: assign_op.Equal rhs: {(DQ <'only '> ($ Id.VSub_DollarName admin_args))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(SQ <'kill $pids >/dev/null 2>&1'>)} {<1>} {<2>} {<3>} {<15>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<type>} {<host>} {<root>} {<date>} {<Id.KW_Time time>} {<make>} {<test>} {<write>} {<owner>} {<attributes>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <'#'>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (DQ ($ Id.VSub_DollarName type) <' '> ($ Id.VSub_DollarName host) <' '> ($ Id.VSub_DollarName root) <' '> ($ Id.VSub_DollarName date) <' '> ($ Id.VSub_DollarName time) <' '> ($ Id.VSub_DollarName make) <' '> ($ Id.VSub_DollarName test) <' '> ($ Id.VSub_DollarName write) <' '> ($ Id.VSub_DollarName owner) <' '> ($ Id.VSub_DollarName attributes) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <make> pattern: (pat.Words words:[{<make>} {<test>} {<write>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'f='> (SQ <'$'>) ($ Id.VSub_DollarName admin_action) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rsh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rsh='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rsh='> name:rsh) op: assign_op.Equal rhs: {<rsh>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_At '@'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {<Id.Lit_At '@'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName host)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'user='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user='> name: user ) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2) <Id.Lit_At '@'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'user='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'user='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'user='> name: user ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<Id.Lit_VarLike 'type='> ($ Id.VSub_DollarName type)} {<Id.Lit_VarLike 'host='> ($ Id.VSub_DollarName host)} {<Id.Lit_VarLike 'root='> ($ Id.VSub_DollarName root)} {<Id.Lit_VarLike 'date='> ($ Id.VSub_DollarName date)} {<Id.Lit_VarLike 'time='> ($ Id.VSub_DollarName time)} {<Id.Lit_VarLike 'make='> ($ Id.VSub_DollarName make)} {<Id.Lit_VarLike 'test='> ($ Id.VSub_DollarName test)} {<Id.Lit_VarLike 'write='> ($ Id.VSub_DollarName write)} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'name='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name) op: assign_op.Equal rhs: {($ Id.VSub_DollarName host)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName name)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789],__,g' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'x='> (SQ <'$'>) (${ Id.VSub_Name host) <_index>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_index='> <1>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$index'> pattern: (pat.Words words: [{($ Id.VSub_DollarName index)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'h='> name: h ) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {($ Id.VSub_DollarName i)} {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'h='> (SQ <'$'>) (${ Id.VSub_Name admin_host) (${ Id.VSub_Name i) <_name> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName h)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$host'> pattern: (pat.Words words: [{($ Id.VSub_DollarName host)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_host) (${ Id.VSub_Name i) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'user='> (SQ <'$'>) (${ Id.VSub_Name host) <_user> } {<Id.Lit_VarLike 'root='> (SQ <'$'>) (${ Id.VSub_Name host) <_rsh> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName host) <Id.Lit_Colon ':'> (SQ <'$'>) (${ Id.VSub_Name host) <_root> } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName name) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'root='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'root='> name: root ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ )} {($ Id.VSub_DollarName root)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,:.*,:,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'index='> name: index ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {($ Id.VSub_DollarName index)} {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_host) ($ Id.VSub_DollarName index) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName sync_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '> (${ Id.VSub_Name admin_host) ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {(SQ )} {($ Id.VSub_DollarName sync_hosts)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$name'> pattern: (pat.Words words: [{($ Id.VSub_DollarName name)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'index='> name: index ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {($ Id.VSub_DollarName index)} {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_host) ($ Id.VSub_DollarName index) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sync_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync_hosts='> name: sync_hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName sync_hosts) <' '> ($ Id.VSub_DollarName name) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'index='> name: index ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {($ Id.VSub_DollarName index)} {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'host='> name: host ) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_host) ($ Id.VSub_DollarName index) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_all)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'root='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'root='> name: root ) op: assign_op.Equal rhs: {(${ Id.VSub_Name root) <.>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName root)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sync='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync='> name: sync ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName host)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName hostname)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<name>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hostname='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hostname='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hostname='> name: hostname ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _hostinfo_)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'root='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'root='> name: root ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <2> pattern: (pat.Words words:[{<2>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rsh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rsh='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rsh='> name: rsh ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'root='> name: root ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rsh='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rsh='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rsh='> name: rsh ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'sync='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync='> name: sync ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) (AssignPair left: <Id.Lit_VarLike 'root='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'root='> name: root ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sync)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DollarBrace '${'> pattern: (pat.Words words: [ {(${ Id.VSub_Name admin_host) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName sync_hosts) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName sync) <' '> (${ Id.VSub_Name admin_host) ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {(SQ )} {($ Id.VSub_DollarName sync_hosts)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Number 1)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$sync' > pattern: (pat.Words words: [ { ($ Id.VSub_DollarName sync ) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sync=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync=' > lhs: (sh_lhs_expr.Name left: < Id.Lit_VarLike 'sync=' > name: sync ) op: assign_op.Equal rhs: { ($ Id.VSub_Number 2 ) } ) ] redirects: [] ) (command.ControlFlow keyword: < Id.ControlFlow_Break break > ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'index='> name: index ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} { ($ Id.VSub_DollarName index ) } {<Id.Lit_Other '+'>} {<1>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: {(${ Id.VSub_Name admin_host) ($ Id.VSub_DollarName index) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sync_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync_hosts=' > name: sync_hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName sync_hosts ) <' '> ($ Id.VSub_DollarName sync) <' '> ($ Id.VSub_DollarName x) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sync='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync='> name: sync ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sync='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sync='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync='> name: sync ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName name)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$admin_on'> pattern: (pat.Words words:[{($ Id.VSub_DollarName admin_on)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep='> name: keep ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_on) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep='> name: keep ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keep='> name: keep ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_out) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'log='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'log='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'log='> name: log ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName type) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_out='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_out='> name: admin_out ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName admin_out) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'log='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'log='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'log='> name: log ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sync)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'local_types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local_types='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'local_types='> name: local_types ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName local_types) <' '> ($ Id.VSub_DollarName type) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sync)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$host'> pattern: (pat.Words words:[{($ Id.VSub_DollarName host)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'remote_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remote_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'remote_hosts='> name: remote_hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName remote_hosts) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name sync) <Id.Lit_VarLike '_share='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') (${ Id.VSub_Name sync) <_share> } {($ Id.VSub_DollarName host) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'local_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'local_hosts='> name: local_hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName local_hosts) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_name='> (SQ <'$'>) <name>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_type='> (SQ <'$'>) <type>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_user='> (SQ <'$'>) <user>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_sync='> (SQ <'$'>) <sync>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_snarf='> (SQ <'$'>) <sync>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_rsh='> (SQ <'$'>) <rsh>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_root='> (SQ <'$'>) <root>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_keep='> (SQ <'$'>) <keep>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_log='> (SQ <'$'>) <log>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName admin_args)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName i) <' '> ($ Id.VSub_DollarName p))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_pkgs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_pkgs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'admin_pkgs='> name:admin_pkgs) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName p)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<src>} {(DQ <'lib/package/'> ($ Id.VSub_DollarName i) <.pkg>)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_pkgs)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_pkgs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_pkgs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_pkgs='> name: admin_pkgs ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_pkgs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_pkgs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_pkgs='> name: admin_pkgs ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName admin_pkgs) <'|'> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [30802 30817] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {(DQ <'admin_binary :'>)} {($ Id.VSub_DollarName admin_binary)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {(DQ <'admin_args :'>)} {($ Id.VSub_DollarName admin_args)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {(DQ <'admin_pkgs :'>)} {($ Id.VSub_DollarName admin_pkgs)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {(DQ <'admin_on :'>)} {(DQ ($ Id.VSub_DollarName admin_on))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {(DQ <'local_hosts :'>)} {($ Id.VSub_DollarName local_hosts)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {(DQ <'local_types :'>)} {($ Id.VSub_DollarName local_types)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {(DQ <'remote_hosts :'>)} {($ Id.VSub_DollarName remote_hosts)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {(DQ <'sync_hosts :'>)} {($ Id.VSub_DollarName sync_hosts)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {(DQ <'sync_share :'>)} {($ Id.VSub_DollarName sync_share)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_bin_types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_bin_types='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_bin_types='> name: admin_bin_types ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_bin_main='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_bin_main='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_bin_main='> name: admin_bin_main ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [main] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName local_hosts)} {($ Id.VSub_DollarName remote_hosts)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'share='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name main) <_share> } {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name main) <_keep> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName main)} {($ Id.VSub_DollarName share)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_bin_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName host) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'type='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_type> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_bin_types) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName types) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <' '>)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_bin_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_bin_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_bin_hosts='> name: admin_bin_hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName admin_bin_hosts) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'admin_bin_types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_bin_types='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_bin_types='> name: admin_bin_types ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName admin_bin_types) <' '> ($ Id.VSub_DollarName type) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_bin_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName main) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName admin_bin_main) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName main) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_bin_main='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_bin_main='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_bin_main='> name: admin_bin_main ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName admin_bin_main) <' '> ($ Id.VSub_DollarName main) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'local='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'local='> name:local) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'remote='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remote='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remote='> name:remote) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName admin_bin_main)} {($ Id.VSub_DollarName admin_bin_hosts)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName local_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName host) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'local='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'local='> name: local ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName local) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName remote_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName host) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'remote='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remote='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'remote='> name: remote ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName remote) <' '> ($ Id.VSub_DollarName host) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'local_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'local_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'local_hosts='> name: local_hosts ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName local)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'remote_hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remote_hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'remote_hosts='> name: remote_hosts ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName remote)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName remote_hosts)} {($ Id.VSub_DollarName local_hosts)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'share='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_share> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName share)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'oshare='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'oshare='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'oshare='> name: oshare ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName share)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName share)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'r='> (SQ <'$'>) (${ Id.VSub_Name s) <_share> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName r)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName share) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName r) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'share='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'share='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'share='> name: share ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName share) <' '> ($ Id.VSub_DollarName r) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName share)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$oshare'> pattern: (pat.Words words: [{($ Id.VSub_DollarName oshare)}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_share='> (DQ <'\''> ($ Id.VSub_DollarName share) <'\''>) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName remote_hosts)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'type='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_type> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName local_types) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_snarf='>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'name='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_name> } {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_keep> } {<Id.Lit_VarLike 'share='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_share> } ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [share] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName share)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'type='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name share) <_type> } {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <keep> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') (${ Id.VSub_Name share) <_keep> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName local_types) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name share) <Id.Lit_VarLike '_snarf='>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Star '*'> <1> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep='> name:keep) op: assign_op.Equal rhs: {<2> ($ Id.VSub_DollarName keep)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <1> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep='> name:keep) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(${ Id.VSub_Name host) <Id.Lit_VarLike '_keep='> ($ Id.VSub_DollarName keep)} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [host] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName remote_hosts)} {($ Id.VSub_DollarName local_hosts)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'name='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_name> } {<Id.Lit_VarLike 'user='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_user> } {<Id.Lit_VarLike 'type='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_type> } {<Id.Lit_VarLike 'sync='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_sync> } {<Id.Lit_VarLike 'snarf='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_snarf> } {<Id.Lit_VarLike 'share='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_share> } {<Id.Lit_VarLike 'rsh='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_rsh> } {<Id.Lit_VarLike 'root='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_root> } {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name host) <_keep> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sync)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ditto> pattern: (pat.Words words:[{<ditto>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Star '*'>} {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <1> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'main_log='> (SQ <'$'>) (${ Id.VSub_Name host) <_log>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'main='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'main='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'main='> name:main) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'share_keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'share_keep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'share_keep='> name:share_keep) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName share)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'n='> (SQ <'$'>) (${ Id.VSub_Name i) <_name>} {<Id.Lit_VarLike 't='> (SQ <'$'>) (${ Id.VSub_Name i) <_type>} {<Id.Lit_VarLike 'q='> (SQ <'$'>) (${ Id.VSub_Name i) <_sync>} {<Id.Lit_VarLike 's='> (SQ <'$'>) (${ Id.VSub_Name i) <_snarf>} {<Id.Lit_VarLike 'l='> (SQ <'$'>) (${ Id.VSub_Name i) <_log>} {<Id.Lit_VarLike 'k='> (SQ <'$'>) (${ Id.VSub_Name i) <_keep>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName main) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName k) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <0>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName s) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName q) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName admin_bin_hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName main)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'main='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'main='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'main='> name: main ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'share_keep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'share_keep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'share_keep='> name: share_keep ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName share_keep) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<package>} {(DQ ($ Id.VSub_DollarName admin_args))} { (DQ <'[ '> ($ Id.VSub_DollarName n) <' '> ($ Id.VSub_DollarName t) <' ]'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName l) } ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ <': > '> ($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName l) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'host='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'host='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host) op: assign_op.Equal rhs: {($ Id.VSub_DollarName main)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'share='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'share='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'share='> name:share) op: assign_op.Equal rhs: {($ Id.VSub_DollarName share_keep)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName force)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_ditto_update='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ditto_update='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_ditto_update='> name: admin_ditto_update ) op: assign_op.Equal rhs: {<--update>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'admin_ditto_update='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'admin_ditto_update='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'admin_ditto_update='> name: admin_ditto_update ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName admin_binary) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName sync) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'syncname='> (SQ <'$'>) (${ Id.VSub_Name sync) <_name> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$admin_ditto'> more_env: [] words: [ {($ Id.VSub_DollarName admin_ditto)} {($ Id.VSub_DollarName admin_ditto_update)} {<--remote> <Id.Lit_Equals '='> ($ Id.VSub_DollarName rsh) } {<--expr> <Id.Lit_Equals '='> (DQ <'name==\'package\''>) } {($ Id.VSub_DollarName PACKAGEROOT) <'/bin'>} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName syncname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName root) <'/bin'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGESRC)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$admin_ditto'> more_env: [] words: [ {($ Id.VSub_DollarName admin_ditto)} {($ Id.VSub_DollarName admin_ditto_update)} {<--remote> <Id.Lit_Equals '='> ($ Id.VSub_DollarName rsh) } {<--expr> <Id.Lit_Equals '='> (DQ < 'if(level>1&&path!=\'LICENSES/*\')status=SKIP;path==\'LICENSES*|*.(pkg|lic|def)\'' > ) } {($ Id.VSub_DollarName PACKAGESRC)} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName syncname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName root) <'/lib/package'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName package_src)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName MAKESKIP)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'expr='> name: expr ) op: assign_op.Equal rhs: { (DQ <'--expr=if(name==\''> ($ Id.VSub_DollarName admin_ditto_skip ) <'\')status=SKIP'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'expr='> name: expr ) op: assign_op.Equal rhs: { (DQ <'--expr=if(name==\''> ($ Id.VSub_DollarName admin_ditto_skip ) <'\'||level==1&&name==\''> ($ Id.VSub_DollarName MAKESKIP) <'\')status=SKIP'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/'> ($ Id.VSub_DollarName dir) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$admin_ditto'> more_env: [] words: [ {($ Id.VSub_DollarName admin_ditto)} { ($ Id.VSub_DollarName admin_ditto_update ) } {<--remote> <Id.Lit_Equals '='> ($ Id.VSub_DollarName rsh) } {(DQ ($ Id.VSub_DollarName expr))} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/'> ($ Id.VSub_DollarName dir) } {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName syncname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName root) <'/src/'> ($ Id.VSub_DollarName dir) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ditto> pattern: (pat.Words words:[{<ditto>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pids='> name: pids ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName share)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <remote> more_env: [] words: [{<remote>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <remote> more_env: [] words: [ {<remote>} {($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Amp _> ) (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pids='> name: pids ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName pids) <' '> ($ Id.VSub_Bang '!') ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName pids)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>} {($ Id.VSub_DollarName pids)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName main_log) } ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] right: <Id.Lit_RBrace '}'> ) terminator: <Id.Op_Amp _> ) (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pids='> name:pids) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName pids) <' '> ($ Id.VSub_Bang '!'))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'{'>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName admin_binary) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName sync) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'syncname='> (SQ <'$'>) (${ Id.VSub_Name sync) <_name> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName PACKAGESRC)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName admin_ditto)} {($ Id.VSub_DollarName admin_ditto_update)} {<--remote> <Id.Lit_Equals '='> ($ Id.VSub_DollarName rsh)} {<--expr> <Id.Lit_Equals '='> (DQ <'if(level>1)status=SKIP;name==\'*.(pkg|lic|def)\''> ) } {($ Id.VSub_DollarName PACKAGESRC)} {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName syncname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName root) <'/lib/package'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [dir] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName package_src)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName MAKESKIP)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'expr='> name: expr ) op: assign_op.Equal rhs: { (DQ <'--expr=if(name==\''> ($ Id.VSub_DollarName admin_ditto_skip ) <'\')status=SKIP'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'expr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'expr='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'expr='> name: expr ) op: assign_op.Equal rhs: { (DQ <'--expr=if(name==\''> ($ Id.VSub_DollarName admin_ditto_skip ) <'\'||level==1&&name==\''> ($ Id.VSub_DollarName MAKESKIP) <'\')status=SKIP'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/'> ($ Id.VSub_DollarName dir) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName admin_ditto)} {($ Id.VSub_DollarName admin_ditto_update)} {<--remote> <Id.Lit_Equals '='> ($ Id.VSub_DollarName rsh) } {(DQ ($ Id.VSub_DollarName expr))} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/'> ($ Id.VSub_DollarName dir) } {($ Id.VSub_DollarName user) ($ Id.VSub_DollarName syncname) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName root) <'/src/'> ($ Id.VSub_DollarName dir) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName admin_action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ditto> pattern: (pat.Words words:[{<ditto>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pids='> name: pids ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName share)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <remote> more_env: [] words: [{<remote>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <remote> more_env: [] words: [ {<remote>} {($ Id.VSub_Number 1)} {(DQ <'&'>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'pids='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pids='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pids='> name: pids ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName pids)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<wait>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'} < /dev/null > '> ($ Id.VSub_DollarName admin_log) <'/'> ($ Id.VSub_DollarName main_log) <' 2>&1 &'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'name='> (SQ <'$'>) (${ Id.VSub_Name main) <_name>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName hosts) <' '> ($ Id.VSub_DollarName name))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'logs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'logs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'logs='> name:logs) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName logs) <' '> ($ Id.VSub_DollarName main_log))} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [share] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName share)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'keep='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name share) <_keep> } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName keep)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'name='> (SQ <'$'>) (${ Id.VSub_Name share) <_name> } {<Id.Lit_VarLike 'log='> (SQ <'$'>) (${ Id.VSub_Name share) <_log> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'hosts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hosts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hosts='> name: hosts ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName hosts) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'logs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'logs='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'logs='> name: logs ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName logs) <' '> ($ Id.VSub_DollarName log) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName quiet)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName admin_log)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tail> more_env: [] words: [ {<tail>} {<-t>} {($ Id.VSub_DollarName PACKAGE_admin_tail_timeout)} {<-f>} {($ Id.VSub_DollarName logs)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<..>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <wait> more_env: [] words: [{<wait>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {<->} {<1>} {<2>} {<3>} {<15>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName admin_db)} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '9>&'> loc: (redir_loc.Fd fd:9) arg: {<1>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'D='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'D='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'D='> name:D) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <y> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> <d> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName line)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {(SQ <'#'>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName hosts) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number 2) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<ast>} {<date>} {<command>} {<assumed>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<date>} {<-E>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} { (SQ < '[ \t](start|done)[ \t][ \t]*at[ \t]' > ) } { ($ Id.VSub_DollarName admin_log ) <'/'> ($ Id.VSub_Number 2) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's/.*[ \t][ \t]*at[ \t][ \t]*//' > ) } {<-e>} { (SQ < 's/[ \t][ \t]*in[ \t].*$//' > ) } {<-e>} {(SQ <'s/.*/"&"/'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {($ Id.VSub_Number 6)} ) (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: {($ Id.VSub_Number 7)} ) (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: {($ Id.VSub_Number 8)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName admin_action)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <make> pattern: (pat.Words words:[{<make>} {<view>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} {<-c>} { (SQ < ']:.* (\\*\\*\\*.* code|don' > ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') (SQ < 't know) | \\*\\*\\* termination code ' > ) } { ($ Id.VSub_DollarName admin_log ) <'/'> ($ Id.VSub_Number 2) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <test> pattern: (pat.Words words:[{<test>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'T='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-ci>} {(SQ <'fail[es]'>)} { ($ Id.VSub_DollarName admin_log ) <'/'> ($ Id.VSub_Number 2) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (SQ < '^[abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyz]*:.' > ) } { ($ Id.VSub_DollarName admin_log ) <'/'> ($ Id.VSub_Number 2) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} {<-cv>} { (SQ < 'start at|done at|output captured|warning:|: package not found|whence: command not found' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't1='> name: t1 ) op: assign_op.Equal rhs: {(SQ <'\t\t'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't1='> name: t1 ) op: assign_op.Equal rhs: {(SQ <'\t'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't1='> name: t1 ) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't2='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't2='> name: t2 ) op: assign_op.Equal rhs: {(SQ <'\t'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't2='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't2='> name: t2 ) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 3)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't3='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't3='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't3='> name: t3 ) op: assign_op.Equal rhs: {(SQ <'\t'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't3='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't3='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't3='> name: t3 ) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName E)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName E))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName E))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName E))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName E))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'E='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'E='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'E='> name: E ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName E))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName M)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName M))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName M))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName M))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'M='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'M='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'M='> name: M ) op: assign_op.Equal rhs: {(DQ <' 0'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName T)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'T='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName T))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'T='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName T))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'T='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName T))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'T='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'T='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'T='> name: T ) op: assign_op.Equal rhs: {(DQ <' 0'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName W)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName W))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_QMark '?'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName W))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: {(DQ <' '> ($ Id.VSub_DollarName W))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'W='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'W='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'W='> name: W ) op: assign_op.Equal rhs: {(DQ <' 0'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'A='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'A='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'A='> name: A ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1) ($ Id.VSub_DollarName t1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'H='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'H='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'H='> name: H ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2) ($ Id.VSub_DollarName t2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'R='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'R='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'R='> name: R ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3) ($ Id.VSub_DollarName t3)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0-8> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'O='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'O='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'O='> name: O ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'K='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'K='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'K='> name: K ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {<8>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'O='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'O='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'O='> name: O ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'K='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'K='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'K='> name: K ) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName O)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {<Id.Lit_QMark '?'>} {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'K='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'K='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'K='> name: K ) op: assign_op.Equal rhs: { (DQ <'\t'> ($ Id.VSub_DollarName K) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0-2> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'K='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'K='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'K='> name: K ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName K) <' '> ($ Id.VSub_Star '*') ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName A) <'\t'> ($ Id.VSub_DollarName H) <'\t'> ($ Id.VSub_DollarName R) <'\t'> ($ Id.VSub_DollarName D) <'\t'> ($ Id.VSub_DollarName E) <'\t'> ($ Id.VSub_DollarName M) <' '> ($ Id.VSub_DollarName T) <' '> ($ Id.VSub_DollarName W) <' '> ($ Id.VSub_DollarName O) <'\t'> ($ Id.VSub_DollarName K) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName A) <'\t'> ($ Id.VSub_DollarName H) <'\t'> ($ Id.VSub_DollarName R) <'\t'> ($ Id.VSub_DollarName D) <'\t'> ($ Id.VSub_DollarName E) <'\t'> ($ Id.VSub_DollarName M) <' '> ($ Id.VSub_DollarName T) <' '> ($ Id.VSub_DollarName W) <' '> ($ Id.VSub_DollarName O) <'\t'> ($ Id.VSub_DollarName K) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<9>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName line))}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName admin_db) <.new>} ) ] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName admin_db)} {($ Id.VSub_DollarName admin_db) <.old>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {($ Id.VSub_DollarName admin_db) <.new>} {($ Id.VSub_DollarName admin_db)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <clean> pattern: (pat.Words words:[{<clean>} {<clobber>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<rm>} {<-rf>} {($ Id.VSub_DollarName INSTALLROOT)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) (CaseArm left: <contents> pattern: (pat.Words words:[{<contents>} {<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGESRC)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'argc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argc='> name:argc) op: assign_op.Equal rhs: {($ Id.VSub_Pound '#')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<Id.Lit_Star '*'> <.pkg>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'*.pkg'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<no>} {<packages>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_Star '*')}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,\\.pkg,,g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sep='> name:sep) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName nl) <' '>)} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<packages>} {<Id.KW_In in>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <list> pattern: (pat.Words words:[{<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <NAME> (${ Id.VSub_Name nl) <VERSION> (${ Id.VSub_Name nl) <RELEASE> (${ Id.VSub_Name nl) <TYPE> (${ Id.VSub_Name nl) <STATUS> (${ Id.VSub_Name nl) <REQUIRES> (${ Id.VSub_Name nl) <----> (${ Id.VSub_Name nl) <-------> (${ Id.VSub_Name nl) <-------> (${ Id.VSub_Name nl) <----> (${ Id.VSub_Name nl) <------> (${ Id.VSub_Name nl) <--------> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <pr> more_env: [] words: [{<pr>} {<-6>} {<-a>} {<-o4>} {<-t>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Pipeline children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'omit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'omit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'omit='> name:omit) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [pkg] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName pkg) <.pkg>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName pkg) <Id.Lit_Colon ':'>} {<not>} {<a>} {<package>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [34390 34402] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {<'gen/'> ($ Id.VSub_DollarName pkg) <.ver>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {<'gen/'> ($ Id.VSub_DollarName pkg) <.ver>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 3)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_Number '$2'> pattern: (pat.Words words:[{($ Id.VSub_Number 2)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ver='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ver='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ver='> name: ver ) op: assign_op.Equal rhs: {<base>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ver='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ver='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ver='> name: ver ) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {<'tgz/'> ($ Id.VSub_DollarName pkg) <.tim>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sts='> name: sts ) op: assign_op.Equal rhs: {<local>} ) ] redirects: [] ) ] spids: [34484 34495] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sts='> name: sts ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [34427 34438] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ver='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ver='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ver='> name: ver ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sts='> name: sts ) op: assign_op.Equal rhs: {<unwritten>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'typ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'typ='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'typ='> name:typ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'txt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'txt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'txt='> name:txt) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmp='> name:cmp) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'cmp_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmp_sep='> name: cmp_sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'req='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'req='> name:req) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'req_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req_sep='> name: req_sep ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName pkg) <.pkg>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {(SQ <' \t\\\\'>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName line)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'op='> name: op ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT> pattern: (pat.Words words: [ {<INIT>} {(SQ <'$('>) <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> (SQ <')'>)} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName op)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <DESCRIPTION> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'txt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'txt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'txt='> name: txt ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName txt) ($ Id.VSub_DollarName sep) ($ Id.VSub_DollarName line) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <PACKAGE> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmp='> name: cmp ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cmp) ($ Id.VSub_DollarName cmp_sep) ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cmp_sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cmp_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmp_sep=' > name: cmp_sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <REQUIRES> <Id.Lit_Colon ':'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'req='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req='> name: req ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName req) ($ Id.VSub_DollarName req_sep) ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'req_sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req_sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req_sep=' > name: req_sep ) op: assign_op.Equal rhs: {(DQ <' '>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName txt)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'txt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'txt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'txt='> name: txt ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName txt) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName ver) <Id.Lit_Colon ':'> } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <list> pattern: (pat.Words words:[{<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName sts)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} { (DQ <'tgz/'> ($ Id.VSub_DollarName pkg ) <.> ($ Id.VSub_DollarName ver) <.base> ) } { (DQ <'tgz/'> ($ Id.VSub_DollarName pkg ) <.tim> ) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ { (DQ <'tgz/'> ($ Id.VSub_DollarName pkg) <.tim> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sts='> name: sts ) op: assign_op.Equal rhs: {<read>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sts='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sts='> name: sts ) op: assign_op.Equal rhs: {<unread>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName pkg) (${ Id.VSub_Name nl) ($ Id.VSub_DollarName ver) (${ Id.VSub_Name nl) <base> (${ Id.VSub_Name nl) ($ Id.VSub_DollarName typ) (${ Id.VSub_Name nl) ($ Id.VSub_DollarName sts) (${ Id.VSub_Name nl) ($ Id.VSub_DollarName req) ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName typ)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'omit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'omit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'omit='> name: omit ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName omit) ($ Id.VSub_DollarName pkg) <.> ($ Id.VSub_DollarName ver) <.base> <Id.Lit_Colon ':'> } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName req)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'req='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'req='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'req='> name: req ) op: assign_op.Equal rhs: { (DQ <': '> ($ Id.VSub_DollarName req) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName pkg)} {($ Id.VSub_DollarName ver)} {($ Id.VSub_DollarName req)} {(DQ ($ Id.VSub_DollarName txt))} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName cmp)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ (${ Id.VSub_Name sep) <'Components in this package:'> ($ Id.VSub_DollarName nl) ) } ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName cmp))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <pr> more_env: [] words: [{<pr>} {<-4>} {<-o4>} {<-t>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName argc) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName action) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0> <Id.Lit_Colon ':'> <list>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {<tgz>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<tgz>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {<.>} {<-name>} { (SQ < '*?[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]*' > ) } {<-print>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,^\\./,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-r>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName f))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,\\.c$,,'>)} {<-e>} {(SQ <'s,\\.gz$,,'>)} {<-e>} {(SQ <'s,\\.exe$,,'>)} {<-e>} {(SQ <'s,\\.tgz$,,'>)} {<-e>} { (SQ < 's,\\([^_.]*\\)[_.]\\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\\)[_.]\\([0123456789][0123456789][0123456789][0123456789][^_.]*\\)[_.]*\\(.*\\),p=\\1 v=\\2 r=\\3 t=\\4,' > ) } {<-e>} { (SQ < 's,\\([^_.]*\\)[_.]\\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\\)[_.]*\\(.*\\),p=\\1 v=\\2 r=base t=\\3,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName omit)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) <.> ($ Id.VSub_DollarName r) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) <.tim>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName t) <.tim> } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName u))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: {<local>} ) ] redirects: [] ) ] spids: [35265 35276] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName u))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName u))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName u)) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: {<read>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: {<unread>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [35282 35293] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: {<unread>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName p) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName v) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName r) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName t) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName s) ($ Id.VSub_DollarName nl) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [35040 35049] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <list> pattern: (pat.Words words:[{<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <pr> more_env: [] words: [{<pr>} {<-6>} {<-a>} {<-o4>} {<-t>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName argc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/arch'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<architectures>} {<Id.KW_In in>} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {($ Id.VSub_DollarName PACKAGEROOT) <'/arch'>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName i) <'/lib/package/gen/host'> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'h='> name: h ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} { ($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName i) <'/lib/package/gen/host'> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [35480 35492] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'h='> name: h ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName h)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <pr> more_env: [] words: [{<pr>} {<-4>} {<-a>} {<-o4>} {<-t>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] spids: [35435 35445] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <copyright> pattern: (pat.Words words:[{<copyright>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGESRC)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'argc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argc='> name:argc) op: assign_op.Equal rhs: {($ Id.VSub_Pound '#')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<Id.Lit_Star '*'> <.lic>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,\\.lic,,g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'*'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<no>} {<packages>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<proto>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <copyright> more_env: [] words: [{<copyright>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <export> pattern: (pat.Words words:[{<export>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName INSTALLROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$PACKAGEROOT'> pattern: (pat.Words words:[{($ Id.VSub_DollarName PACKAGEROOT)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLROOT='> name: INSTALLROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/arch/'> ($ Id.VSub_DollarName HOSTTYPE) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: {(SQ <'$i='>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName env)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<echo>} {(${ Id.VSub_Name v) (SQ <'$'>) (${ Id.VSub_Name i)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <install> pattern: (pat.Words words:[{<install>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <order> more_env: [] words: [{<order>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName command) <': at least one package name expected'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<->} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <flat> pattern: (pat.Words words:[{<flat>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'flat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'flat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flat='> name:flat) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': target directory argument expected'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'directory='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'directory='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'directory='> name: directory ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName target) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName directory)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': '> ($ Id.VSub_DollarName directory) <': target directory not found'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [36060 36071] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName target)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<arch>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<..>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'makecheck='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makecheck='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'makecheck='> name:makecheck) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName target)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName flat) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName a)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_QMark '?'> <Id.Lit_Colon ':'> <.>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName directory)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName directory) <'/arch/'> ($ Id.VSub_DollarName a) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName exec))} {<-a>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName dest)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName dest)}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName dest) <': destination directory must exist'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [36209 36231] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName package)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <ratz>)} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName i))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<skip>}] redirects: [] do_fork: T ) ] spids: [36285 36300] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {<'arch/'> ($ Id.VSub_DollarName a) <'/lib/package/gen/'> ($ Id.VSub_DollarName i) <.sum> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <package_install> more_env: [] words: [ {<package_install>} {($ Id.VSub_DollarName directory)} {<'arch/'> ($ Id.VSub_DollarName a) <'/lib/package/gen/'> ($ Id.VSub_DollarName i) <.sum> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [36307 36320] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {<'arch/'> ($ Id.VSub_DollarName a) <'/bin'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName a) <': invalid architecture'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [36338 36351] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName dest)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName dest) <': destination directory must exist'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [36366 36377] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName makecheck))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAKE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MAKE='> name: MAKE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_)} ) ] redirects: [] ) ] spids: [36411 36418] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName MAKE) <': not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'makecheck='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makecheck='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'makecheck='> name: makecheck ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [36394 36409] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName exec))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {<->} {<0>} {<1>} {<2>} {<15>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'=== '> ($ Id.VSub_DollarName i) <' installation manifest ==='> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'arch/'> ($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'lib/package'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLROOT=' > name: INSTALLROOT ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName PACKAGEROOT ) <'/arch/'> ($ Id.VSub_DollarName a) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VPATH='> name: VPATH ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName INSTALLROOT ) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName VPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<INSTALLROOT>} {<VPATH>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$MAKE'> more_env: [] words: [ {($ Id.VSub_DollarName MAKE)} {<-s>} {($ Id.VSub_DollarName makeflags)} {<-f>} {($ Id.VSub_DollarName i) <.pkg>} {($ Id.VSub_DollarName qualifier)} {<list.installed>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) ] spids: [36453 36468] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<->}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'arch/'> ($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<'lib/package'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLROOT='> name: INSTALLROOT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName a) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VPATH='> name: VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName VPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<INSTALLROOT>} {<VPATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<'lib/'> ($ Id.VSub_DollarName command)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$MAKE'> more_env: [] words: [ {($ Id.VSub_DollarName MAKE)} {<-s>} {($ Id.VSub_DollarName makeflags)} {<-f>} {($ Id.VSub_DollarName i) <.pkg>} {($ Id.VSub_DollarName qualifier)} {<list.installed>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <pax> more_env: [] words: [ {<pax>} {<-drw>} {<-ps>} {($ Id.VSub_DollarName dest)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <license> pattern: (pat.Words words:[{<license>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGESRC) <'/LICENSES'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'argc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'argc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'argc='> name:argc) op: assign_op.Equal rhs: {($ Id.VSub_Pound '#')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'*'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<no>} {<licenses>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<proto>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {<'../'> ($ Id.VSub_DollarName i) <.lic>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'j='> name: j ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <proto> more_env: [] words: [ {<proto>} {<-df>} {<-l>} {<'../'> ($ Id.VSub_DollarName i) <.lic>} {<-o>} {<Id.Lit_VarLike 'query='> <type>} {<'/dev/null'>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName a) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName j) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName a ) <' '> ($ Id.VSub_DollarName j) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [36853 36862] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [36803 36814] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/-[^-]*$//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <': package license not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName a)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'\t\t--- '> ($ Id.VSub_DollarName i) <' source license ---'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName PACKAGESRC) <'/LICENSES/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <make> pattern: (pat.Words words:[{<make>} {<view>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lic='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lic='> name:lic) op: assign_op.Equal rhs: {(DQ <'lib/package/*.lic'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName package)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'lic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lic='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lic='> name:lic) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName lic) <' lib/package/'> ($ Id.VSub_DollarName i) <.lic> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lic='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lic='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lic='> name: lic ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName lic) <' lib/package/'>) (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,-.*,,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) (DQ <.lic>) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <checksrc> more_env: [] words: [{<checksrc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<source>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <components> more_env: [] words: [{<components>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _components_)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'must='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'must='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'must='> name:must) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName AR))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'warn='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'warn='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'warn='> name:warn) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName NM) <' yacc bison'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test='> name:test) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName must) <' '> ($ Id.VSub_DollarName warn))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'have='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'have='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'have='> name:have) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<'/'> ($ Id.VSub_DollarName IFS) ($ Id.VSub_DollarName PATH)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [t] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName test)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName t)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'have='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'have='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'have='> name:have) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName have) <' '> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) ] spids: [37245 37252] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [t] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName test)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName have) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName t) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName d) <'/'> ($ Id.VSub_DollarName t) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'have='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'have='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'have='> name: have ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName have) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] spids: [37313 37322] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName have) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (DQ <' bison '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (DQ <' yacc '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'have='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'have='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'have='> name:have) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName have) <' bison'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName have) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (DQ <' yacc '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (DQ <' bison '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'have='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'have='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'have='> name:have) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName have) <' yacc'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [t] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName test)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName have) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName t) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName must) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName t) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName t) <': not found -- must be on PATH to '> ($ Id.VSub_DollarName action) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': warning: '> ($ Id.VSub_DollarName t) <': not found -- some '> ($ Id.VSub_DollarName action) <' actions may fail'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {<no>} {<source>} {<packages>} {<to>} {<make>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [37547 37559] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/src'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<initialize>} {<the>} {($ Id.VSub_DollarName INSTALLROOT)} {<view>} ] redirects: [] do_fork: T ) ] spids: [37579 37591] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{<arch>} {<'arch/'> ($ Id.VSub_DollarName HOSTTYPE)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<bin>} {<'bin/'> ($ Id.VSub_DollarName OK)} {<'bin/'> ($ Id.VSub_DollarName OK) <'/lib'>} {<fun>} {<include>} {<lib>} {<'lib/package'>} {<'lib/package/gen'>} {<src>} {<man>} {<'man/man1'>} {<'man/man3'>} {<'man/man8'>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <make_recurse> more_env: [] words: [{<make_recurse>} {<src>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName makefiles)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName o)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName o) <' -o'>)} ) (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName k) <'|'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName o) <' -name '> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName k) ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'o='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'o='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'o='> name:o) op: assign_op.Equal rhs: {(DQ <'( '> ($ Id.VSub_DollarName o) <' ) -print'>)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName package_src)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<'src/'> ($ Id.VSub_DollarName d)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) (command.Simple blame_tok: <make_recurse> more_env: [] words: [{<make_recurse>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {<.>} {($ Id.VSub_DollarName o)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^\\./,,'>)} {<-e>} {(SQ <'/\\//!d'>)} {<-e>} {(SQ <'s,/[^/]*$,,'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$k'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName k)} {($ Id.VSub_DollarName MAKESKIP)} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName j) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName j) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [37803 37812] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName lic)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^. .*\\.def$'>)} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <.> pattern: (pat.Words words:[{<.>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName def) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'def='> name: def ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName def) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName def)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<'lib/package/'> ($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name HOSTTYPE) <' '> (${ Id.VSub_Name HOSTTYPE) <'.*'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName HOSTTYPE)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/[.][^.]*//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName h) <' '> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName t)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s/[0123456789]*$//'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName h) <' '> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cc> pattern: (pat.Words words:[{<cc>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName c)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package/gen/'> ($ Id.VSub_DollarName c) <.tim> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'intercept='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'intercept='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'intercept='> name:intercept) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [k] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName h)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName c) <.> ($ Id.VSub_DollarName k) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName s))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {(DQ ($ Id.VSub_DollarName s))} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'intercept='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'intercept='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'intercept='> name: intercept ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> arg_word: {<2>} ) ] spids: [38352 38373] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {(DQ ($ Id.VSub_DollarName t))} {(DQ ($ Id.VSub_DollarName b))} {(DQ ($ Id.VSub_DollarName s))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$t'> pattern: (pat.Words words: [{($ Id.VSub_DollarName t) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$b'> pattern: (pat.Words words: [{($ Id.VSub_DollarName b) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cc='> name: cc ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName b)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$s'> pattern: (pat.Words words: [{($ Id.VSub_DollarName s) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package/gen'> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tmp='> name: tmp ) op: assign_op.Equal rhs: {<pkg> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'$'>) <exec>} {<echo>} { (DQ <'\'int main(){return 0;}\' > '> ($ Id.VSub_DollarName tmp) <.c> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName s)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {($ Id.VSub_DollarName tmp) <.exe>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName HOSTTYPE)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.mips> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$s'> more_env: [] words: [ {($ Id.VSub_DollarName s)} {<-version>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 's='> name: s ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName s)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<sed>} { (DQ <'s/^HOSTTYPE=.*/HOSTTYPE='> ($ Id.VSub_DollarName HOSTTYPE) <'/'> ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { (DQ ($ Id.VSub_DollarName s) ) } ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: { (DQ ($ Id.VSub_DollarName b) ) } ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'cc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cc='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cc='> name: cc ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName b)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'intercept='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'intercept='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'intercept='> name: intercept ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<update>} {($ Id.VSub_DollarName b)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [38464 38495] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<touch>} {(DQ ($ Id.VSub_DollarName t))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> arg_word: {<2>} ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName intercept)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: {<ld>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName c) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [k] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName h)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName c) <.> ($ Id.VSub_DollarName k) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName s))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {(DQ ($ Id.VSub_DollarName b))} {(DQ ($ Id.VSub_DollarName s))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$b'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName b) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$s'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName s) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {(DQ ($ Id.VSub_DollarName s))} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<update>} {($ Id.VSub_DollarName b)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: {<ldd>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName c)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [t] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName h)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 's='> pairs: [ (AssignPair left: <Id.Lit_VarLike 's='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INITROOT) <'/'> ($ Id.VSub_DollarName c) <.> ($ Id.VSub_DollarName t) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName s))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName c)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {(DQ ($ Id.VSub_DollarName b))} {(DQ ($ Id.VSub_DollarName s))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$b'> pattern: (pat.Words words: [{($ Id.VSub_DollarName b) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$s'> pattern: (pat.Words words: [{($ Id.VSub_DollarName s) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {(DQ ($ Id.VSub_DollarName s))} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {<update>} {($ Id.VSub_DollarName b)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName cc)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName CC) <': not found -- set CC=C-compiler'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/lib/package/gen'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tmp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tmp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmp='> name:tmp) op: assign_op.Equal rhs: {<pkg> ($ Id.VSub_Dollar '$')} ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'int main(){return 0;}'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tmp) <.c>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$CC'> more_env: [] words: [ {($ Id.VSub_DollarName CC)} {<-o>} {($ Id.VSub_DollarName tmp) <.exe>} {($ Id.VSub_DollarName tmp) <.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName tmp) <.err>} ) ] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {($ Id.VSub_DollarName tmp) <.exe>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<ok>}] redirects: [] do_fork: T ) ] spids: [39028 39060] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName CC) <': failed to compile this program:'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp) <.c>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {($ Id.VSub_DollarName tmp) <.err>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tmp) <.err>}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [39091 39101] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName CC) <': not a C compiler'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName tmp) <.> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cc> pattern: (pat.Words words:[{<cc>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-x>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/cc'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<1q>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/cc'>} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [{(DQ <': '> ($ Id.VSub_DollarName CC) <' :'>)}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<CC>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign='> name: assign ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' CC='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <CC> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [39189 39199] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CROSS)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign='> name: assign ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' CC='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <CC> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <': '> ($ Id.VSub_DollarName CC) <' :'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName CC) <' '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'@'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/cc'>} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <chmod> more_env: [] words: [ {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/cc'>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<generate>} {<a>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/cc'>} {<wrapper>} {<Id.KW_For for>} {($ Id.VSub_DollarName CC)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {<cc>} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<CC>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName INITROOT)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<'lib/probe'>} {<'lib/probe/C'>} {<'lib/probe/C/make'>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/lib/probe/C/make/probe'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INITROOT) <'/C'> <Id.Lit_Other '+'> <probe>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INITROOT) <'/make.probe'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName j)} {($ Id.VSub_DollarName k)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$i'> pattern: (pat.Words words:[{($ Id.VSub_DollarName i) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName j)} {<-a>} {<-f>} {($ Id.VSub_DollarName k)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {<update>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shellmagic> more_env: [] words: [{<shellmagic>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName SHELLMAGIC)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName SHELLMAGIC) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName j)} {($ Id.VSub_DollarName k)} ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName i)} ) ] right: <Id.Lit_RBrace '}'> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'{\n'> <'echo '> ($ Id.VSub_DollarName SHELLMAGIC) <'\n'> <'cat '> ($ Id.VSub_DollarName j) <' '> ($ Id.VSub_DollarName k) <'\n'> <'} > '> ($ Id.VSub_DollarName i) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [39503 39518] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [39396 39405] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<mamake>} {<proto>} {<ratz>} {<release>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <execrate> more_env: [] words: [{<execrate>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'execrate='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'execrate='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'execrate='> name:execrate) op: assign_op.Equal rhs: {<execrate>} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [ {($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin'>} ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<chmod>} {<chgrp>} {<cmp>} {<cp>} {<ln>} {<mv>} {<rm>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-x>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i)} {<-a>} {<-x>} {<'/bin/'> ($ Id.VSub_DollarName i) <.exe>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <shellmagic> more_env: [] words: [{<shellmagic>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName SHELLMAGIC)) (SQ <'execrate /bin/'>) ($ Id.VSub_DollarName i) (SQ <' "$@"'>) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ) ] do_fork: T ) (command.Simple blame_tok: <chmod> more_env: [] words: [ {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<echo>} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (DQ ($ Id.VSub_DollarName SHELLMAGIC)) (SQ <'execrate /bin/'>) ($ Id.VSub_DollarName i) (SQ <' "$@"'>) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (SQ <' >'>) } {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [39717 39738] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PATH>}] redirects: [] do_fork: T ) ] spids: [39667 39680] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'execrate='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'execrate='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'execrate='> name:execrate) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <view> pattern: (pat.Words words:[{<view>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [{($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/src'>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName noexec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<name>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName _hostinfo_))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,\\..*,,'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName PACKAGEBIN) <'/gen/host'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NPROC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<cpu>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _hostinfo_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NPROC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NPROC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NPROC='> name:NPROC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _hostinfo_)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'NPROC='> ($ Id.VSub_DollarName NPROC)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<NPROC>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<NPROC>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName target)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [t] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName target)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_LBracket '['> <eiknFKNV> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<--> <Id.Lit_Star '*'> <-symbols>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'makeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'makeflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'makeflags='> name: makeflags ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName makeflags) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-> pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'nmakeflags='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nmakeflags='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'nmakeflags='> name: nmakeflags ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName nmakeflags) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName a) <' '> ($ Id.VSub_DollarName t) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName NMAKE)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/nmake'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <nonmake> more_env: [] words: [{<nonmake>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {<make>} {($ Id.VSub_DollarName NMAKE)} {<with>} {<mamake>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'c='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'c='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c) op: assign_op.Equal rhs: {($ Id.VSub_DollarName CC)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName assign)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName HOSTTYPE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <win32> pattern: (pat.Words words: [{<win32> <Id.Lit_Star '*'>} {<cygwin> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName CC) <' -D_BLD_STATIC'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'accept='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'accept='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'accept='> name: accept ) op: assign_op.Equal rhs: {(DQ <libast>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName assign)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (SQ <' CC='>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'assign='> name: assign ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' CC='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <CC> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'accept='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'accept='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'accept='> name: accept ) op: assign_op.Equal rhs: {<nmake>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {<mamake>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec> } {<install>} {<nmake>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName c)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName make) ($ Id.VSub_DollarName noexec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName NMAKE)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': errors making '> ($ Id.VSub_DollarName NMAKE) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [40299 40308] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'make='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'make='> name: make ) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName PROTOROOT))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {<->} {($ Id.VSub_DollarName PROTOROOT)} {<->} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <vpath> more_env: [] words: [ {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {<->} {($ Id.VSub_DollarName PROTOROOT)} {<->} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<vpath>} {($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)} {($ Id.VSub_DollarName USER_VPATH_CHAIN)} ] redirects: [] do_fork: T ) ] spids: [40365 40407] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VPATH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VPATH='> name: VPATH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PACKAGEROOT) ($ Id.VSub_DollarName USER_VPATH) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'VPATH='> ($ Id.VSub_DollarName VPATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<VPATH>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [40348 40363] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<believe>} {<generated>} {<files>} {<Id.KW_For for>} {($ Id.VSub_DollarName accept)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <NMAKE> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec> } {<recurse>} {<believe>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakesep> } {($ Id.VSub_DollarName accept)} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<touch>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {<make>} {<the>} {<remaining>} {<targets>} {<with>} {($ Id.VSub_DollarName NMAKE)} ] redirects: [] do_fork: T ) ] spids: [40149 40156] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {($ Id.VSub_DollarName MAKE)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec> } {<install>} {<nmake>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName make) ($ Id.VSub_DollarName noexec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName NMAKE)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': errors making '> ($ Id.VSub_DollarName NMAKE) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [40546 40555] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'make='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'make='> name:make) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [40129 40147] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <nonmake> more_env: [] words: [{<nonmake>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<no>} {<need>} {<to>} {<generate>} {<ksh>} {<next>} {<-->} {<it>} {<could>} {<be>} {<the>} {<only>} {<package>} ] redirects: [] do_fork: T ) ] spids: [40607 40614] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName KEEP_SHELL))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<1>} {<-a>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/ksh93'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName KSH)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {<nmake>} {($ Id.VSub_DollarName nmakeflags)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec>} {<install>} {<ksh93>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName make) ($ Id.VSub_DollarName noexec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName KSH)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': errors making '> ($ Id.VSub_DollarName KSH) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [40709 40718] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'make='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'make='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'make='> name:make) op: assign_op.Equal rhs: {<echo>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [40645 40674] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} {<-o>} {<-w>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'N='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'N='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N='> name:N) op: assign_op.Equal rhs: {(SQ <'\n'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u='> name:u) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'B='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'B='> name:B) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'L='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<x>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName x)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ <'#'>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName h)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'h='> name: h ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_VarLike 'BUILTIN_LIB='> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_VarLike 'FPATH='> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'f='> name: f ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_VarLike 'PLUGIN_LIB='> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName u)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName u) ($ Id.VSub_DollarName N) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName u) ($ Id.VSub_DollarName x) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [40822 40832] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ifs='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ifs='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifs='> name:ifs) op: assign_op.Equal rhs: {($ Id.VSub_DollarName IFS)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName b)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {(SQ <'='>)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {($ Id.VSub_DollarName b)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {(DQ <'PLUGIN_LIB='> ($ Id.VSub_Star '*'))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName b)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {<no> ($ Id.VSub_DollarName p)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {(DQ <'FPATH=../fun'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName h)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'h='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'h='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'h='> name:h) op: assign_op.Equal rhs: {(SQ <'# use { no NO } prefix to permanently disable #'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {(DQ <'PLUGIN_LIB=cmd'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {(SQ <'^setv mam_cc_DIALECT .* EXPORT=[AD]LL'>)} {($ Id.VSub_DollarName INSTALLROOT) <'/lib/probe/C/mam/'> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {<no> ($ Id.VSub_DollarName p)} ) ] redirects: [] ) ] spids: [41130 41149] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName m)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName u)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'u='> name: u ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName N) ($ Id.VSub_DollarName u) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName h) ($ Id.VSub_DollarName N) ($ Id.VSub_DollarName p) ($ Id.VSub_DollarName N) ($ Id.VSub_DollarName f) ($ Id.VSub_DollarName N) ($ Id.VSub_DollarName u) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/.paths'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [40778 40797] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName EXECROOT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$INSTALLROOT'> pattern: (pat.Words words:[{($ Id.VSub_DollarName INSTALLROOT)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [ {($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/bin'>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<'/bin/cp'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cp='> name:cp) op: assign_op.Equal rhs: {<'/bin/cp'>} ) ] redirects: [] ) ] spids: [41258 41265] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cp='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cp='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cp='> name:cp) op: assign_op.Equal rhs: {<cp>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<'/bin/mv'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mv='> name:mv) op: assign_op.Equal rhs: {<'/bin/mv'>} ) ] redirects: [] ) ] spids: [41280 41287] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'mv='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'mv='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mv='> name:mv) op: assign_op.Equal rhs: {<mv>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<'/bin/rm'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rm='> name:rm) op: assign_op.Equal rhs: {<'/bin/rm'>} ) ] redirects: [] ) ] spids: [41302 41309] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rm='> name:rm) op: assign_op.Equal rhs: {<rm>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<ksh>} {<nmake>} {<tee>} {<cp>} {<ln>} {<mv>} {<rm>} {<Id.Lit_Star '*'> <ast> <Id.Lit_Star '*'> <.dll>} {<Id.Lit_Star '*'> <cmd> <Id.Lit_Star '*'> <.dll>} {<Id.Lit_Star '*'> <dll> <Id.Lit_Star '*'> <.dll>} {<Id.Lit_Star '*'> <shell> <Id.Lit_Star '*'> <.dll>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName execrate)} {($ Id.VSub_DollarName rm)} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName execrate)} {($ Id.VSub_DollarName mv)} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) <.old> } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName exec) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName i) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <nmake>} {<Id.Lit_Colon ':'> <ksh>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) < ': cannot update [may be in use by a running process] remove manually and try again' > ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName execrate)} {($ Id.VSub_DollarName cp)} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName OK) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<'../lib/make/makerules.mo'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <cmp> more_env: [] words: [ {<cmp>} {<-s>} {<'../lib/make/makerules.mo'>} {($ Id.VSub_DollarName OK) <'/lib/makerules.mo'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName execrate)} {($ Id.VSub_DollarName cp)} {<-p>} {<'../lib/make/makerules.mo'>} {($ Id.VSub_DollarName OK) <'/lib/makerules.mo'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName execrate)} {($ Id.VSub_DollarName cp)} {<'../lib/make/makerules.mo'>} {($ Id.VSub_DollarName OK) <'/lib/makerules.mo'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] spids: [41529 41538] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName OK) <'/nmake'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAKE='> name:MAKE) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <'/nmake LOCALRULESPATH='> ($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <'/lib'> ) } ) ] redirects: [] ) ] spids: [41583 41591] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName OK) <'/tee'>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEE='> name:TEE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <'/tee'> } ) ] redirects: [] ) ] spids: [41609 41617] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName KEEP_SHELL))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {($ Id.VSub_DollarName OK) <'/ksh'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHELL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <'/ksh'> } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<SHELL>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'COSHELL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COSHELL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'COSHELL='> name: COSHELL ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName SHELL)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<COSHELL>}] redirects: [] do_fork: T ) ] spids: [41629 41650] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) <Id.Lit_Colon ':'>} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT) <'/bin/'> ($ Id.VSub_DollarName OK) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [ {($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/src'>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <nonmake> more_env: [] words: [{<nonmake>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <note> more_env: [] words: [{<note>} {<make>} {<with>} {<mamake>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName target)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {(DQ <install>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {<mamake>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <target>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] spids: [41740 41747] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName target)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {(DQ <'install cc-'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <MAKE>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakeflags>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec>} {<recurse>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <target>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakesep>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <package>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <read> pattern: (pat.Words words:[{<read>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PWD> var_name: PWD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$PACKAGEROOT'> pattern: (pat.Words words:[{($ Id.VSub_DollarName PACKAGEROOT)}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName command) <': must be in package root directory'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PAX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAX='> name:PAX) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {<pax>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <Id.VSub_DollarName '$_onpath_'> more_env: [] words: [ {($ Id.VSub_DollarName _onpath_)} {<-rw>} {<--> <Id.Lit_QMark '?'> <meter>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <--meter> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PAX='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAX='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAX='> name:PAX) op: assign_op.Equal rhs: {<pax>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [41911 41918] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'remove='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remove='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remove='> name:remove) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'touch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'touch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'touch='> name:touch) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 2)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <lcl> pattern: (pat.Words words:[{<lcl>} {<tgz>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'tgz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tgz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tgz='> name:tgz) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {<2>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'tgz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tgz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tgz='> name:tgz) op: assign_op.Equal rhs: {<tgz>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName package)} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'verbose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'verbose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<'lib/package/'> ($ Id.VSub_DollarName tgz) <'/'> <Id.Lit_Star '*'> <Id.Lit_QMark '?'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'verbose='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'verbose='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'files='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'files='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<ok>}] redirects: [] do_fork: T ) ] spids: [42127 42138] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { (DQ <'lib/package/'> ($ Id.VSub_DollarName tgz) <'/'> ($ Id.VSub_DollarName f) ) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {<'lib/package/'> ($ Id.VSub_DollarName tgz) <'/'> ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] spids: [42145 42159] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-r>} {(${ Id.VSub_Name f) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<-a>} {<-f>} {(DQ ($ Id.VSub_Number 2))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] spids: [42224 42247] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-r>} {<'lib/package/'> ($ Id.VSub_DollarName tgz) <'/'> (${ Id.VSub_Name f) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(SQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<-a>} {<-f>} {(DQ ($ Id.VSub_Number 2))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] spids: [42312 42335] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': package archive not found'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'files='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'files='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName files) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName files)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': lib/package/'> ($ Id.VSub_DollarName tgz) <': no package archives'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>} {<-r>} {($ Id.VSub_DollarName files)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'f1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f1='> name:f1) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'f2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f2='> name:f2) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'f3='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f3='> name:f3) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'f4='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f4='> name:f4) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <ratz.> pattern: (pat.Words words: [ {<ratz.> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <'/ratz.'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f1='> name:f1) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName f1) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT.> pattern: (pat.Words words: [ {<INIT.> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <'/INIT.'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f2='> name:f2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName f2) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <INIT> pattern: (pat.Words words: [ {<INIT> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <'/INIT'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f3='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f3='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f3='> name:f3) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName f3) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'f4='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f4='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f4='> name:f4) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName f4) <' '> ($ Id.VSub_DollarName f))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gen='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gen='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gen='> name:gen) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName f1)} {($ Id.VSub_DollarName f2)} {($ Id.VSub_DollarName f3)} {($ Id.VSub_DollarName f4)} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.gz>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<standalone>} {<packages>} {<unbundled>} {<manually>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.md5>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<tarball>} {<checksum>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_QMark '?'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': not a package archive'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,\\(.*/\\)\\(.*\\),d=\\1 a=\\2,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName f)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName a))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,\\.c$,,'>)} {<-e>} {(SQ <'s,\\.gz$,,'>)} {<-e>} {(SQ <'s,\\.exe$,,'>)} {<-e>} {(SQ <'s,\\.tgz$,,'>)} {<-e>} { (SQ < 's,\\([^_.]*\\)[_.]\\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\\)[_.]\\([0123456789][0123456789][0123456789][0123456789][^_.]*\\)[_.]*\\(.*\\),p=\\1 v=\\2 r=\\3 t=\\4,' > ) } {<-e>} { (SQ < 's,\\([^_.]*\\)[_.]\\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\\)[_.]*\\(.*\\),p=\\1 v=\\2 r=base t=\\3,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName r)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <base> pattern: (pat.Words words:[{<base>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) <.base>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) <.delta>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName x) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName y) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'w='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'w='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w='> name:w) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGESRC)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'q='> name:q) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Q='> name:Q) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'w='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'w='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w='> name:w) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName t) <'/lib/package'> } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'q='> name:q) op: assign_op.Equal rhs: {(DQ <.> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'Q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'Q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Q='> name:Q) op: assign_op.Equal rhs: {(DQ <_> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {(DQ <'[_.]'> ($ Id.VSub_DollarName t))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'u='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'u='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u='> name:u) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d) ($ Id.VSub_DollarName p) ($ Id.VSub_DollarName q) <.tim> } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName u))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] spids: [43004 43015] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName force)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName u))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [{(DQ ($ Id.VSub_DollarName u)) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName verbose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {($ Id.VSub_DollarName p)} {<already>} {<read>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <INIT> pattern: (pat.Words words:[{<INIT>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mv>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package'>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package.old'>} ] redirects: [] do_fork: T ) ] spids: [43114 43124] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'z='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'z='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'z='> name:z) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName r)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <base> pattern: (pat.Words words:[{<base>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<ratz>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName p))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{<src>} {<'src/cmd'>} {<'src/cmd/INIT'>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName f)} {($ Id.VSub_DollarName PACKAGEROOT) <'/src/cmd/INIT/'> ($ Id.VSub_DollarName p) <.c> } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<arch>} {<'arch/'> ($ Id.VSub_DollarName t)} {<'arch/'> ($ Id.VSub_DollarName t) <'/bin'>} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {($ Id.VSub_DollarName PACKAGEROOT) <'/'> ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName f)} {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName t) <'/bin/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {<Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName PACKAGEROOT) <'/arch/'> ($ Id.VSub_DollarName t) <'/bin/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [43163 43176] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName PAX))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<pax>} {<-L>} {<--from> <Id.Lit_Equals '='> <ascii>} {<--local>} {<-m>} {<-ps>} {<-rvf>} {(DQ ($ Id.VSub_DollarName f))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [43331 43346] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {<gunzip>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {($ Id.VSub_DollarName TAR)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <isascii> more_env: [] words: [{<isascii>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName TARPROBE)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName TARPROBE)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.VSub_DollarName '$TAR'> more_env: [] words: [ {($ Id.VSub_DollarName TAR)} {(${ Id.VSub_Name i) <f>} {<->} {<'/dev/null'>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TARFLAGS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARFLAGS='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARFLAGS=' > name: TARFLAGS ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName TARFLAGS ) ($ Id.VSub_DollarName i) } ) ] redirects: [] ) ] spids: [43428 43449] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TARPROBE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARPROBE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARPROBE='> name: TARPROBE ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <gunzip> more_env: [] words: [{<gunzip>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName f))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName exec)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<gunzip>} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { (DQ ($ Id.VSub_DollarName f) ) } ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$TAR'> more_env: [] words: [ {($ Id.VSub_DollarName TAR)} {(${ Id.VSub_Name TARFLAGS) <f>} {<->} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ <'gunzip < '> ($ Id.VSub_DollarName f) <' | '> ($ Id.VSub_DollarName TAR) <' '> (${ Id.VSub_Name TARFLAGS) <'f -'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [43471 43491] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName TAR)} {(${ Id.VSub_Name TARFLAGS) <f>} {(DQ ($ Id.VSub_DollarName f))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [43387 43404] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<ratz>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <onpath> more_env: [] words: [{<onpath>} {<ratz>}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'RATZ='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RATZ='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'RATZ='> name: RATZ ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _onpath_)} ) ] redirects: [] ) (command.AndOr children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName f) <Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName RATZ)} {<-lm>} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName f))} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ ($ Id.VSub_DollarName RATZ) <' -lm < '> ($ Id.VSub_DollarName f) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName PACKAGEBIN) <'/gen/'> ($ Id.VSub_DollarName p) <.sum> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<md5>} {<mode>} {<usr>} {<grp>} {<file>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName file)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [{<-> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'file='> name: file ) op: assign_op.Equal rhs: {<'./'> ($ Id.VSub_DollarName file)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName mode)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <01234567> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <01234567> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <01234567> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <01234567> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName grp)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chgrp>} {($ Id.VSub_DollarName grp)} {(DQ ($ Id.VSub_DollarName file))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName usr)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chown>} {($ Id.VSub_DollarName usr)} {(DQ ($ Id.VSub_DollarName file))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<chmod>} {($ Id.VSub_DollarName mode)} {(DQ ($ Id.VSub_DollarName file))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName PACKAGEBIN) <'/gen/'> ($ Id.VSub_DollarName p) <.sum> } ) ] ) ] spids: [43697 43709] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ )} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName PAX))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': pax required to read delta archive'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName v) <':\n'> ($ Id.VSub_DollarName r) <':'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$r'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName r) <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) <.base>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {(${ Id.VSub_Name d) (${ Id.VSub_Name p) <Id.Lit_Underscore _> (${ Id.VSub_Name r) (${ Id.VSub_Name Q) <.tgz> } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName b))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: {(${ Id.VSub_Name d) (${ Id.VSub_Name p) <.> (${ Id.VSub_Name r) (${ Id.VSub_Name q) <.tgz> } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName b))}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName gen) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName b) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': base archive '> ($ Id.VSub_DollarName b) <' required to read delta'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'y='> name: y ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName y)} {($ Id.VSub_DollarName f)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<pax>} {<-L>} {<--from> <Id.Lit_Equals '='> <ascii>} {<--local>} {<-ps>} {<-rvf>} {(DQ ($ Id.VSub_DollarName f))} {<-z>} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <note> more_env: [] words: [ {<note>} {($ Id.VSub_DollarName f) <Id.Lit_Colon ':'>} {<generate>} {<new>} {<base>} {($ Id.VSub_DollarName d) ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) ($ Id.VSub_DollarName q) <.tgz> } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<pax>} {<-rf>} {(DQ ($ Id.VSub_DollarName f))} {<-z>} {(DQ ($ Id.VSub_DollarName b))} {<-wf>} {($ Id.VSub_DollarName d) ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) ($ Id.VSub_DollarName q) <.tgz> } {<-x>} {<tgz>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName p)} {($ Id.VSub_DollarName v)} {($ Id.VSub_DollarName v)} {<1>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName w) <'/gen/'> ($ Id.VSub_DollarName p) <.ver> } ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'z='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'z='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'z='> name: z ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName d) (${ Id.VSub_Name p) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName v) ($ Id.VSub_DollarName q) <.tgz> } ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} { (DQ <'echo '> ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName v) <' '> ($ Id.VSub_DollarName v) <' 1 > '> ($ Id.VSub_DollarName w) <'/gen/'> ($ Id.VSub_DollarName p) <.ver> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'gen='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gen='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gen='> name: gen ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName gen) <' '> ($ Id.VSub_DollarName d) ($ Id.VSub_DollarName p) <.> ($ Id.VSub_DollarName v) ($ Id.VSub_DollarName q) <.tgz> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName remove) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName f) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'remove='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remove='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'remove='> name: remove ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName remove) <' '> ($ Id.VSub_DollarName f) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b) op: assign_op.Equal rhs: {(${ Id.VSub_Name d) (${ Id.VSub_Name p) <Id.Lit_Underscore _> (${ Id.VSub_Name v) (${ Id.VSub_Name Q) <.tgz> } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName b))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'b='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'b='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: {(${ Id.VSub_Name d) (${ Id.VSub_Name p) <.> (${ Id.VSub_Name v) (${ Id.VSub_Name q) <.tgz> } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName b))}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName gen) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName b) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_Pound '#')} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': base archive '> ($ Id.VSub_DollarName b) <' required to read delta'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'y='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'y='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'y='> name: y ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {($ Id.VSub_DollarName y)} {($ Id.VSub_DollarName f)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<pax>} {<-L>} {<--from> <Id.Lit_Equals '='> <ascii>} {<--local>} {<-ps>} {<-rvf>} {(DQ ($ Id.VSub_DollarName f))} {<-z>} {(DQ ($ Id.VSub_DollarName b))} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName f) <': unknown archive type'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [ {<executable>} {($ Id.VSub_DollarName w) <'/'> ($ Id.VSub_DollarName p) <.ini>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName w) <'/'> ($ Id.VSub_DollarName p) <.ini>} {<read>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [44593 44603] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {($ Id.VSub_DollarName d) ($ Id.VSub_DollarName p) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> ($ Id.VSub_DollarName m) <Id.Lit_Star '*'> } {($ Id.VSub_DollarName z)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.md5>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$d'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName d) (${ Id.VSub_Name p) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName m) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$d'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName d) (${ Id.VSub_Name p) <Id.Lit_LBracket '['> <_.> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName m) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName remove) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName k) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'remove='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'remove='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'remove='> name: remove ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName remove) <' '> ($ Id.VSub_DollarName k) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName x) <' '> ($ Id.VSub_DollarName y))} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName touch) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName u) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'touch='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'touch='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'touch='> name:touch) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName touch) <' '> ($ Id.VSub_DollarName u))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package'>} {<-a>} {<-f>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package.old'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cp>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package.old'>} {($ Id.VSub_DollarName PACKAGEROOT) <'/bin/package'>} ] redirects: [] do_fork: T ) ] spids: [44949 44968] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName remove)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName remove)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName touch)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<1>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<touch>} {($ Id.VSub_DollarName touch)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName code) ($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<->} {($ Id.VSub_DollarName x)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <regress> pattern: (pat.Words words:[{<regress>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName PACKAGEBIN) <'/gen'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': \'package make\' and \'package test\' required for regression'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [45088 45100] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEBIN) <'/gen'>} ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName dir)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words:[{<out>} {<old>}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<-t>} {<regress.> ($ Id.VSub_DollarName s)} {<test.> ($ Id.VSub_DollarName s)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <regress> pattern: (pat.Words words:[{<regress> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <test> pattern: (pat.Words words:[{<test> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<regress.> ($ Id.VSub_DollarName s)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mv>} {<regress.> ($ Id.VSub_DollarName s)} {<regress.old>} ] redirects: [] do_fork: T ) ] spids: [45178 45188] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <egrep> more_env: [] words: [ {<egrep>} {<-i>} { (SQ < '\\*\\*\\*|FAIL|^TEST.* [123456789][0123456789]* error|core.*dump' > ) } {<test.> ($ Id.VSub_DollarName s)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/\\*\\*\\* [0123456789]/d'>)} {<-e>} {(SQ <'/^TEST.\\//s,/[^ ]*/,,'>)} {<-e>} {(SQ <'s,[ \t][ \t]*$,,'>)} {<-e>} { (SQ < 's/[0123456789][0123456789]*:* \\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*[Cc][Oo][Rr][Ee][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*)\\)/\\1/' > ) } {<-e>} {(SQ <'s/\\.sh failed at .* with /.sh failed /'>)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<regress.> ($ Id.VSub_DollarName s)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<filter>} {<test>} {<failures>} {<from>} {($ Id.VSub_DollarName dir) <'/test.'> ($ Id.VSub_DollarName s) } {<to>} {($ Id.VSub_DollarName dir) <'/regress.'> ($ Id.VSub_DollarName s) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {<regress.out>} {<-a>} {<-f>} {<regress.old>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<diff>} {<-b>} {<regress.out>} {<regress.old>} ] redirects: [] do_fork: T ) ] spids: [45318 45333] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': at least 2 test runs required for regression'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <release> pattern: (pat.Words words:[{<release>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'lo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lo='> name:lo) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'hi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hi='> name:hi) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Simple blame_tok: <checksrc> more_env: [] words: [{<checksrc>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <checkaout> more_env: [] words: [{<checkaout>} {<release>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<source>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <components> more_env: [] words: [{<components>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _components_)} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<->} {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lo='> name:lo) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'release='> name: release ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lo='> name:lo) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'release='> name: release ) op: assign_op.Equal rhs: {(DQ <'-f '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<->} {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <-> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hi='> name: hi ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'hi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hi='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'hi='> name: hi ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'release='> name: release ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName release) <' -t '> ($ Id.VSub_Number 1) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'>} {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0123456789> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'release='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'release='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'release='> name: release ) op: assign_op.Equal rhs: {(DQ <'-r '> ($ Id.VSub_DollarName count))} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package='> name: package ) op: assign_op.Equal rhs: {<Id.Lit_Star '*'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package='> name: package ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_Star '*') <Id.Lit_Colon ':'>} {<lo-date>} {<hi-date>} {<arguments>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName count) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName lo) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName hi) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'All recorded changes follow.'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Changes since the last release follow.'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Changes since the last '> ($ Id.VSub_DollarName count) <' releases follow.'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words: [ {<1> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Changes since '> ($ Id.VSub_DollarName lo) <' or the last release follow.'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Changes since '> ($ Id.VSub_DollarName lo) <' follow.'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Changes before '> ($ Id.VSub_DollarName hi) <' follow.'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Changes between '> ($ Id.VSub_DollarName lo) <' and '> ($ Id.VSub_DollarName hi) <' follow.'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [r] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName INSTALLROOT)} {($ Id.VSub_DollarName PACKAGEROOT)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [s] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName package_src)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d) op: assign_op.Equal rhs: {($ Id.VSub_DollarName r) <'/src/'> ($ Id.VSub_DollarName s)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName d)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName package)}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-h>} {($ Id.VSub_DollarName i)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [46001 46013] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName x) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName i) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [{<RELEASE>} {<CHANGES>} {<ChangeLog>}] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName f) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<release>} {($ Id.VSub_DollarName release)} {($ Id.VSub_DollarName i) <'/'> ($ Id.VSub_DollarName f) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'x='> name: x ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName x) <' '> ($ Id.VSub_DollarName i) ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName i) <'/'> <Id.Lit_Star '*'> <'/'> ($ Id.VSub_DollarName f) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { ($ Id.VSub_DollarName f ) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec' > more_env: [] words: [ { ($ Id.VSub_DollarName exec ) } {<release>} { ($ Id.VSub_DollarName release ) } { ($ Id.VSub_DollarName f ) } ] redirects: [] do_fork: T ) ] spids: [46111 46120] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] spids: [46064 46075] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [45974 45983] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <remove> pattern: (pat.Words words:[{<remove>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': not implemented yet'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <results> pattern: (pat.Words words:[{<results>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: {<make>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEBIN) <'/gen'>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName verbose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filter='> name:filter) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filter='> name:filter) op: assign_op.Equal rhs: {<cat>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'suf='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suf='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suf='> name:suf) op: assign_op.Equal rhs: {<out>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'on='> name:on) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <admin> pattern: (pat.Words words:[{<admin>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGESRC) <'/admin'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <error> pattern: (pat.Words words: [{<error> <Id.Lit_Star '*'>} {<fail> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filter='> name:filter) op: assign_op.Equal rhs: {<errors>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <make> pattern: (pat.Words words:[{<make>} {<test>} {<view>} {<write>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName filter) <Id.Lit_Colon ':'> ($ Id.VSub_Number 1) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName SHELL) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <errors> pattern: (pat.Words words: [ {<errors> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <test> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> <'/ksh'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'filter='> name: filter ) op: assign_op.Equal rhs: {<rt>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <old> pattern: (pat.Words words:[{<old>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'suf='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suf='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suf='> name:suf) op: assign_op.Equal rhs: {<old>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <on> pattern: (pat.Words words:[{<on>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {($ Id.VSub_Number 1) <Id.Lit_Colon ':'>} {<host>} {<pattern>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName on)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'on='> name:on) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName on) <'|'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'on='> name:on) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName on) ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <path> pattern: (pat.Words words:[{<path>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <test> pattern: (pat.Words words:[{<test>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: {<test>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'filter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filter='> name:filter) op: assign_op.Equal rhs: {<rt>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName dir)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <'/admin'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName on)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'on='> name:on) op: assign_op.Equal rhs: {(DQ <'*'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'on='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'on='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'on='> name:on) op: assign_op.Equal rhs: {(DQ <'@('> ($ Id.VSub_DollarName on) <')'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'def='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'def='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'def='> name:def) op: assign_op.Equal rhs: {($ Id.VSub_DollarName def) <'.log/'> ($ Id.VSub_DollarName on)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(DQ ($ Id.VSub_DollarName def))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 't='> name:t) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'k='> name:k) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<set>} {(SQ <'""'>)} {($ Id.VSub_DollarName i)} {<->} {($ Id.VSub_DollarName i) <.> ($ Id.VSub_DollarName suf)} {<->} {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName i)} {<->} {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName i) <.> ($ Id.VSub_DollarName suf) } {<->} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName j)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName k)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> arg_word: {<2>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName j)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'k='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'k='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'k='> name: k ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<'/'> ($ Id.VSub_DollarName j)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/test.'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 't='> pairs: [ (AssignPair left: <Id.Lit_VarLike 't='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 't='> name: t ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName t) <' '> ($ Id.VSub_DollarName j) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'm='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'm='> name: m ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName m) <' '> ($ Id.VSub_DollarName j) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [46682 46691] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName i) <' action output not found'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sep='> name:sep) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName t)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName path)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName t)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName sep) <'==> '> ($ Id.VSub_DollarName j) <' <=='> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName filter)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cat> pattern: (pat.Words words:[{<cat>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cat>} {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <errors> pattern: (pat.Words words:[{<errors>}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<egrep>} {<-i>} { (SQ < '\\*\\*\\*|FAIL[ES]|^TEST.* [123456789][0123456789]* error|core.*dump' > ) } {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'/^TEST.\\//s,/[^ ]*/,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <rt> pattern: (pat.Words words:[{<rt>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName KSH)} {<rt>} {<->} {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<egrep>} {<-i>} {(SQ <'^TEST|FAIL'>)} {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName t)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName m)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName path)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName filter)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <cat> pattern: (pat.Words words:[{<cat>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName m)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName HOME) <'/.pkgresults'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName HOME) <'/.pkgresults'> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName i)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ <'|'>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: {(DQ <'|'> ($ Id.VSub_DollarName i))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [46974 46984] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'i='> name: i ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [j] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName m)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName sep) <'==> '> ($ Id.VSub_DollarName j) <' <=='> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'sep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sep='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName nl)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName filter)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <errors> pattern: (pat.Words words:[{<errors>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exeg'> more_env: [] words: [ {($ Id.VSub_DollarName exeg)} {<egrep>} {(SQ <'^pax:|\\*\\*\\*'>)} {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<egrep>} {<-iv>} { (SQ < '^($|\x1b|[\\+\\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|pragma.*prototyped|^creating.*\\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\\*|/(ast|sys)/(dir|limits|param|stropts)\\.h.*redefined|usage|base registers|`\\.\\.\\.` obsolete' > ) (DQ ($ Id.VSub_DollarName i)) } {($ Id.VSub_DollarName j)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<grep>} {<Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName m)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <test> pattern: (pat.Words words:[{<test>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<source>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <components> more_env: [] words: [{<components>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'package='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _components_)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'only='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'only='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'only='> name:only) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'only='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'only='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'only='> name:only) op: assign_op.Equal rhs: {<--recurse> <Id.Lit_Equals '='> <only>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <nonmake> more_env: [] words: [{<nonmake>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName action) <Id.Lit_Colon ':'>} {<must>} {<have>} {($ Id.VSub_DollarName MAKE)} {<to>} {<test>} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [47207 47214] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [{($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName INSTALLROOT) <'/src'>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] ) (command.Simple blame_tok: <ulimit> more_env: [] words: [{<ulimit>} {<-c>} {<0>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <MAKE>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <only>} {<recurse>} {<test>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <target>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <nmakesep>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <package>} {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <update> pattern: (pat.Words words:[{<update>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<cd>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>} ] redirects: [] do_fork: T ) ] spids: [47344 47356] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT) <'/lib/package/tgz'>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName args)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<update>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tgz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tgz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tgz='> name:tgz) op: assign_op.Equal rhs: {<tgz>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'source='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'source='> name:source) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'binary='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'binary='> name:binary) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'setup='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'setup='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'setup='> name:setup) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types='> name:types) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'urlfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'urlfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'urlfile='> name:urlfile) op: assign_op.Equal rhs: {($ Id.VSub_DollarName default_url)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <beta> pattern: (pat.Words words:[{<beta>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<beta>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'tgz='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tgz='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tgz='> name:tgz) op: assign_op.Equal rhs: {<beta>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'binary='> name:binary) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <setup> pattern: (pat.Words words:[{<setup>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'setup='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'setup='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'setup='> name:setup) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <source> pattern: (pat.Words words:[{<source>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'source='> name:source) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'//'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> <.url>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'urlfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'urlfile='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'urlfile='> name: urlfile ) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-s>} {($ Id.VSub_DollarName urlfile)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName urlfile) <Id.Lit_Colon ':'>} {<not>} {<found>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [47550 47561] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.VSub_DollarName '$all_types'> pattern: (pat.Words words:[{($ Id.VSub_DollarName all_types)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'binary='> name:binary) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types='> name:types) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName types) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName source) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName binary)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'source='> name:source) op: assign_op.Equal rhs: {<1>} ) (AssignPair left: <Id.Lit_VarLike 'binary='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'binary='> name:binary) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words:[{<Id.Lit_Colon ':'> <1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName types)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'types='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types='> name:types) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName url)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName urlfile)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$default_url'> pattern: (pat.Words words:[{($ Id.VSub_DollarName default_url)}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-s>} {($ Id.VSub_DollarName urlfile)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {<url>} {<argument>} {<expected>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [47701 47712] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'default_url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'default_url='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'default_url='> name: default_url ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^url='>)} {($ Id.VSub_DollarName urlfile)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName authorize)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: {($ Id.VSub_DollarName password)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName urlfile)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'urlfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'urlfile='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'urlfile='> name: urlfile ) op: assign_op.Equal rhs: {<'./'> ($ Id.VSub_DollarName urlfile)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {($ Id.VSub_DollarName urlfile)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName a) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName p) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$authorize'> pattern: (pat.Words words: [ {($ Id.VSub_DollarName authorize) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName password) } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'default_url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'default_url='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'default_url='> name: default_url ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName a)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'authorize='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'authorize='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'authorize='> name: authorize ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName a)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName p)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'password='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'password='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'password='> name: password ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [47755 47769] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'url='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName urlfile)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName exec)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'default_url='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'default_url='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'default_url='> name: default_url ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName url)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} { (SQ < 's,\\(.*\\)://\\([^/]*\\)/\\(.*\\),prot=\\"\\1\\" host=\\"\\2\\" dir=\\"\\3\\",' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName op) <.html>} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_Star '*') <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName source)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package_hit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_hit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_hit='> name: package_hit ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <' '>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'nl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(DQ <'\n'>)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName source)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName p))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,\\..*,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [f] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName f)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'p='> name: p ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName p) ($ Id.VSub_DollarName nl) ($ Id.VSub_DollarName f) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName p))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,\\..*,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package_hit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_hit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_hit='> name: package_hit ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName source_packages) <' '> ($ Id.VSub_DollarName binary_packages) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName source)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName binary)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'package_hit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_hit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_hit='> name: package_hit ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'types_test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types_test='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types_test='> name:types_test) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'types_local='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types_local='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'types_local='> name:types_local) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName tgz)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName default_url)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'url=\''> ($ Id.VSub_DollarName url) <'\' authorize=\''> ($ Id.VSub_DollarName authorize) <'\' password=\''> ($ Id.VSub_DollarName password) <'\''> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName default_url)} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName authorize)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<go-rwx>} {($ Id.VSub_DollarName default_url)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName got))}] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<got.tmp>})] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<got.tmp>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'covered='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'covered='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'covered='> name:covered) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<name>} {<suffix>} {<type>} {<base>} {<base_size>} {<delta>} {<delta_size>} {<sync>} {<sync_size>} {<requires>} {<covers>} {<base_sum>} {<delta_sum>} {<sync_sum>} {<comment>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName requires)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<-> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName requires)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'IFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ifs)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName source_packages) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [name] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName source_packages) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages=' > name: source_packages ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName source_packages ) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'covered='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'covered='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'covered='> name: covered ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName covered) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName covers) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName binary_packages) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [name] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName binary_packages) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '> ) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages=' > name: binary_packages ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName binary_packages ) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'covered='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'covered='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'covered='> name: covered ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName covered) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName covers) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName covered)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName source_packages)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [name] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName x)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName covered) <Id.Lit_Colon ':'> } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName name) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'source_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'source_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'source_packages='> name: source_packages ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName source_packages) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName binary_packages)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [name] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName x)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {<Id.Lit_Colon ':'> ($ Id.VSub_DollarName covered) <Id.Lit_Colon ':'> } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName name) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'binary_packages='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'binary_packages='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'binary_packages='> name: binary_packages ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName binary_packages) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'checksum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'checksum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checksum='> name:checksum) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName checksum_commands)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <Id.VSub_DollarName '$i'> more_env: [] words: [{($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DollarBrace '${'> pattern: (pat.Words words: [ {(${ Id.VSub_Name checksum_empty)} {(${ Id.VSub_Name checksum_empty) <Id.Lit_LBracket '['> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\ '> ch: ' ' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t') <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'checksum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'checksum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'checksum='> name: checksum ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName checksum)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {<warning> <Id.Lit_Colon ':'>} {(SQ <'{'>)} {($ Id.VSub_DollarName checksum_commands)} {(SQ <'}'>)} {<command>} {<not>} {<found>} {<-->} {<only>} {<download>} {<sizes>} {<will>} {<be>} {<checked>} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<got.tmp>})] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [ {<read>} {<name>} {<suffix>} {<type>} {<base>} {<base_size>} {<delta>} {<delta_size>} {<sync>} {<sync_size>} {<requires>} {<covers>} {<base_sum>} {<delta_sum>} {<sync_sum>} {<comment>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName verbose)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<.> ($ Id.VSub_DollarName type)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) ($ Id.VSub_DollarName i) <.> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName delta)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName j) <' -'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName j) <' '> ($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName delta) ($ Id.VSub_DollarName i) <.> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName sync)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName j) <' -'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'j='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'j='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'j='> name:j) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName j) <' '> ($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName sync) ($ Id.VSub_DollarName i) <.> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName j)} {($ Id.VSub_DollarName base_size) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName base_sum) } {($ Id.VSub_DollarName delta_size) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName delta_sum) } {($ Id.VSub_DollarName sync_size) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName sync_sum) } {($ Id.VSub_DollarName requires)} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName package_hit) <' '>)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'package_hit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'package_hit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'package_hit='> name: package_hit ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName package_hit) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName source_packages) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {($ Id.VSub_DollarName name) <.tim>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [49554 49564] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName lcl)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName checksum) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName base_sum) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <->} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s, ,,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName base_sum)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName base_size)} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$checksum' > more_env: [] words: [ { ($ Id.VSub_DollarName checksum ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^[ \t][ \t]*,,'>)} {<-e>} {(SQ <'s,[ \t].*,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [49580 49589] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {<X>} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {<X>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <0>)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName force))} {<-a>} {(DQ <X->)} {<Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName delta))} {<-o>} {(DQ ($ Id.VSub_DollarName base_size))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName size))} {<-o>} {(DQ ($ Id.VSub_DollarName base_sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName sum))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rmt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rmt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rmt='> name: rmt ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName sync) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName sync_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName sync) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName lcl)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rmt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rmt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rmt='> name: rmt ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName sync_size)} {($ Id.VSub_DollarName sync_sum)} ] redirects: [] do_fork: T ) ] spids: [49782 49791] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName base) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName base_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName rmt)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName base_size)} {($ Id.VSub_DollarName base_sum)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [49686 49741] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName delta) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName delta_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName delta) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName lcl)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName checksum) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName delta_sum) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s, ,,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName delta_sum) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName base_size) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: < Id.VSub_DollarName '$checksum' > more_env: [] words: [ { ($ Id.VSub_DollarName checksum ) } ] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,^[ \t][ \t]*,,' > ) } {<-e>} { (SQ < 's,[ \t].*,,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [49928 49937] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {<X>} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {<X>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <0>)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName force))} {<-o>} {(DQ ($ Id.VSub_DollarName delta_size))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName size))} {<-o>} {(DQ ($ Id.VSub_DollarName delta_sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName sum))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName delta_size)} {($ Id.VSub_DollarName delta_sum)} ] redirects: [] do_fork: T ) ] spids: [50034 50076] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName binary_packages) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName type) <.tim> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [50139 50151] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName types) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' - '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <' '>)}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName types_test) <' '>) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'types_test='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'types_test='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'types_test='> name: types_test ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName types_test) <' '> ($ Id.VSub_DollarName type) ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words: [ {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> ($ Id.VSub_DollarName type) <.> <Id.Lit_Star '*'> } {<Id.Lit_Star '*'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <-> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <.> ($ Id.VSub_DollarName type) <.> <Id.Lit_Star '*'> } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} { ($ Id.VSub_DollarName i) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'types_local=' > pairs: [ (AssignPair left: <Id.Lit_VarLike 'types_local=' > lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'types_local=' > name: types_local ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName types_local ) <' '> ($ Id.VSub_DollarName type) ) } ) ] redirects: [] ) ] spids: [50273 50282] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ <' '> ($ Id.VSub_DollarName types_local) <' '> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName types) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName type) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName lcl)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName checksum) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName base_sum) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <->} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s, ,,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName base_sum)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName base_size)} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$checksum' > more_env: [] words: [ { ($ Id.VSub_DollarName checksum ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^[ \t][ \t]*,,'>)} {<-e>} {(SQ <'s,[ \t].*,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [50401 50410] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {<X>} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {<X>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <0>)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName force))} {<-a>} {(DQ <X->)} {<Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName delta))} {<-o>} {(DQ ($ Id.VSub_DollarName base_size))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName size))} {<-o>} {(DQ ($ Id.VSub_DollarName base_sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName sum))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rmt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rmt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rmt='> name: rmt ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName sync) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName sync_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName sync) <.> ($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName lcl)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'rmt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rmt='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rmt='> name: rmt ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName sync_size)} {($ Id.VSub_DollarName sync_sum)} ] redirects: [] do_fork: T ) ] spids: [50605 50614] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName base) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName base_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName rmt)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName base_size)} {($ Id.VSub_DollarName base_sum)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [50507 50562] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName delta) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName delta_size) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words: [ {<-> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <-> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'lcl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lcl='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'lcl='> name: lcl ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName name) <.> ($ Id.VSub_DollarName delta) <.> ($ Id.VSub_DollarName base) <.> ($ Id.VSub_DollarName type) <.> ($ Id.VSub_DollarName suffix) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName lcl)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$checksum' > more_env: [] words: [ { ($ Id.VSub_DollarName checksum ) } ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(SQ <'s,^[ \t][ \t]*,,'>)} {<-e>} {(SQ <'s,[ \t].*,,'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [50755 50764] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {<X>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName lcl)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {($ Id.VSub_DollarName checksum) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName delta_sum) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Colon ':'> pattern: (pat.Words words: [ {<Id.Lit_Colon ':'> <Id.Lit_Star '*'>} {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <-> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(SQ <'s, ,,g'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName delta_sum) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [{<Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { ($ Id.VSub_DollarName base_size) } ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: < Id.VSub_DollarName '$checksum' > more_env: [] words: [ { ($ Id.VSub_DollarName checksum ) } ] redirects: [ (Redir op: < Id.Redir_Less '<' > loc: (redir_loc.Fd fd: 0 ) arg: { ($ Id.VSub_DollarName lcl ) } ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ < 's,^[ \t][ \t]*,,' > ) } {<-e>} { (SQ < 's,[ \t].*,,' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [50803 50812] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'size='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'size='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: {<X>} ) (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sum='> name: sum ) op: assign_op.Equal rhs: {<X>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <0>)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName force))} {<-o>} {(DQ ($ Id.VSub_DollarName delta_size))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName size))} {<-o>} {(DQ ($ Id.VSub_DollarName delta_sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName sum))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <get> more_env: [] words: [ {<get>} {($ Id.VSub_DollarName host)} {($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName lcl)} {($ Id.VSub_DollarName delta_size)} {($ Id.VSub_DollarName delta_sum)} ] redirects: [] do_fork: T ) ] spids: [50909 50951] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'closure='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'closure='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'closure='> name:closure) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [name] iterable: (for_iter.Words words: [ {($ Id.VSub_DollarName source_packages)} {($ Id.VSub_DollarName binary_packages)} ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName name)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-> pattern: (pat.Words words:[{<->}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName package_hit) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName setup)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ <' '> ($ Id.VSub_DollarName closure) <' '>)} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName name) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'closure='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'closure='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'closure='> name: closure ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName closure) <' '> ($ Id.VSub_DollarName name) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {($ Id.VSub_DollarName command) <Id.Lit_Colon ':'>} {($ Id.VSub_DollarName name) <Id.Lit_Colon ':'>} {<unknown>} {<package>} ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>}] redirects: [(Redir op:<Id.Redir_LessAnd '<&'> loc:(redir_loc.Fd fd:0) arg:{<->})] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<got.tmp>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName closure)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName closure)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <use> pattern: (pat.Words words:[{<use>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'> <..>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [d] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [ {<ls>} {<'src/'> <Id.Lit_Star '*'> <'/Makefile'>} {<'src/'> <Id.Lit_Star '*'> <'/Nmakefile'>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,/[^/]*$,,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT) <'/'> ($ Id.VSub_DollarName d) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'x='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'x='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'x='> name:x) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName INSTALLROOT)} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName CDPATH) <Id.Lit_Colon ':'>}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.VSub_DollarName '$x'> pattern: (pat.Words words: [{($ Id.VSub_DollarName x) <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CDPATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CDPATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CDPATH='> name:CDPATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName x) <Id.Lit_Colon ':'> ($ Id.VSub_DollarName CDPATH)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'CDPATH='> ($ Id.VSub_DollarName CDPATH)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<CDPATH>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<CDPATH>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'P='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'P='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'P='> name:P) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'P='> ($ Id.VSub_DollarName P)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<P>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<P>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'A='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'A='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'A='> name:A) op: assign_op.Equal rhs: {($ Id.VSub_DollarName INSTALLROOT)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'A='> ($ Id.VSub_DollarName A)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<A>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<A>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName NPROC)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <hostinfo> more_env: [] words: [{<hostinfo>} {<cpu>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _hostinfo_)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {<1>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NPROC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NPROC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NPROC='> name:NPROC) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _hostinfo_)} ) ] redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {<Id.Lit_VarLike 'NPROC='> ($ Id.VSub_DollarName NPROC)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$show'> more_env: [] words: [{($ Id.VSub_DollarName show)} {<export>} {<NPROC>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<NPROC>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {<Id.Lit_VarLike 'PACKAGE_USE='> ($ Id.VSub_DollarName package_use)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<PACKAGE_USE>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName run)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName show)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <':'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<exec>} {($ Id.VSub_DollarName SHELL)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<exec>} {($ Id.VSub_DollarName SHELL)} {<-c>} {(DQ ($ Id.VSub_DollarName run))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <verify> pattern: (pat.Words words:[{<verify>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName PACKAGEROOT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <requirements> more_env: [] words: [{<requirements>} {<binary>} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <executable> more_env: [] words: [{<executable>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName SUM)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': '> ($ Id.VSub_DollarName SUM) <' command required'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [51509 51518] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName target)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<arch>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {<Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'target='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'target='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {($ Id.VSub_Star '*')} ) ] redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {<..>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'code='> name:code) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName target)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName package)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} {<'arch/'> ($ Id.VSub_DollarName a) <'/lib/package/gen/'> <Id.Lit_Star '*'> <.sum> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <package_verify> more_env: [] words: [{<package_verify>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [51626 51635] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': warning: '> ($ Id.VSub_DollarName a) <': no binary packages'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName package)}]) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {<'arch/'> ($ Id.VSub_DollarName a) <'/lib/package/gen/'> ($ Id.VSub_DollarName i) <.sum> } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <package_verify> more_env: [] words: [ {<package_verify>} {<'arch/'> ($ Id.VSub_DollarName a) <'/lib/package/gen/'> ($ Id.VSub_DollarName i) <.sum> } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'code='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'code='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'code='> name: code ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [51692 51705] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': warning: '> ($ Id.VSub_DollarName a) <': no binary package for '> ($ Id.VSub_DollarName i) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName code)} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <write> pattern: (pat.Words words:[{<write>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'qualifier='> name:qualifier) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <base> pattern: (pat.Words words: [{<base>} {<closure>} {<delta>} {<exp>} {<lcl>} {<pkg>} {<rpm>} {<tgz>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'qualifier='> name: qualifier ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName qualifier) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'type='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'type='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOSTTYPE)} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<Id.Lit_VarLike 'list='> ($ Id.VSub_DollarName PACKAGESRC) <'/tgz/'> ($ Id.VSub_DollarName admin_list) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <cyg> pattern: (pat.Words words:[{<cyg>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'qualifier='> name: qualifier ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName qualifier) <' '> ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName assign) <' closure=1'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'only='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'only='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'only='> name:only) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <runtime> pattern: (pat.Words words:[{<runtime>} {<source>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <tst> pattern: (pat.Words words:[{<tst>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'qualifier='> name: qualifier ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName qualifier) <' tgz'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName assign) <' copyright=0 \'PACKAGEDIR='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'(PACKAGESRC)/tst\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <nocopyright> pattern: (pat.Words words:[{<nocopyright>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'assign='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'assign='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'assign='> name:assign) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName assign) <' copyright=0'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName action)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName command) <': binary or source operand expected'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName only)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {(SQ )} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <order> more_env: [] words: [{<order>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ ($ Id.VSub_DollarName command) <': at least one package name expected'>)} ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <nonmake> more_env: [] words: [{<nonmake>} {($ Id.VSub_DollarName MAKE)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': must have '> ($ Id.VSub_DollarName MAKE) <' to generate archives'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [52055 52062] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$make'> more_env: [] words: [{($ Id.VSub_DollarName make)} {<cd>} {($ Id.VSub_DollarName PACKAGEBIN)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName list)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName list)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [package] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<all>} {($ Id.VSub_DollarName package) <.pkg>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <view> more_env: [] words: [ {<view>} {<->} {<all>} {<'lib/package/'> ($ Id.VSub_DollarName package) <.pkg>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {<capture>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <MAKE> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <makeflags> } {<-X>} {<ignore>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <noexec> } {<-f>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <package.pkg> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <qualifier> } {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <action> } {($ Id.VSub_DollarName assign)} ] redirects: [] do_fork: T ) ] spids: [52136 52160] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName package) <': not a package'> ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <TEST> pattern: (pat.Words words:[{<TEST>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {(SQ )} {($ Id.VSub_DollarName target)} {($ Id.VSub_DollarName package)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <binary> pattern: (pat.Words words:[{<binary>} {<source>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <order> more_env: [] words: [{<order>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName action) <': internal error'> ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] )