(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<warp>} {<Id.Lit_Colon ':'>} {<execute>} {<a>} {<command>} {<Id.KW_In in>} {<a>} {<different>} {<Id.KW_Time time>} {<frame>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<warp>} {<now>} {<base>} {<factor>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<env>} {<show>} {<command>} {<opt>} {<prefix>} {<dll>} {<suffix>} {<ifs>} {<root>} {<path>} {<s>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<base_str>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<OPT>} {<ARGV0>} {<USAGE>}] redirects: [] do_fork: T ) (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: {<warp>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] 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.Eof_RParen _> ) } ) 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 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName command))} ) ] redirects: [] ) (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: warp (AT&T Labs Research) 1999-11-19 $\n'> <Id.Char_Literals ']\n'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?warp - execute a command in a different time frame]\n' > <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' executes a dynamically linked '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tin a different time frame by intercepting time related system calls\n' > <Id.Char_Literals '\tand modifying the times seen by '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' using the formula:]{\n'> <Id.Char_Literals '\t[+time = time + warp + (time - base) * (factor - 1)?]\n' > <Id.Char_Literals '}\n'> <Id.Char_Literals '[+?where '> <Id.Char_OneChar '\\a'> <Id.Char_Literals warp> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals date-now> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\a'> <Id.Char_Literals base> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is '> <Id.Char_OneChar '\\a'> <Id.Char_Literals date> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' by default, and\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals factor> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is 1 by default. Command argument date specifications\n' > <Id.Char_Literals '\tsupport common conventions:]{\n'> <Id.Char_Literals '\t[+yesterday?]\n'> <Id.Char_Literals '\t[+next week?]\n'> <Id.Char_Literals '\t[+50 days?]\n'> <Id.Char_Literals '\t[+2000-02-28+00:00?]\n'> <Id.Char_Literals '\t[+feb 28 2000?]\n'> <Id.Char_Literals '\t[+#'> <Id.Char_OneChar '\\a'> <Id.Char_Literals seconds> <Id.Char_OneChar '\\a'> <Id.Char_Literals '?A '> <Id.Char_OneChar '\\b'> <Id.Char_Literals time_t> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' value in '> <Id.Char_OneChar '\\a'> <Id.Char_Literals seconds> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' since the epoch.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[b:base?Set the base or starting date to '> <Id.Char_OneChar '\\a'> <Id.Char_Literals date> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. Useful for repeating\n'> <Id.Char_Literals '\ta set of tests.]:[date:=date]\n'> <Id.Char_Literals '[f:factor?Set the warped clock to tick at '> <Id.Char_OneChar '\\a'> <Id.Char_Literals factor> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' seconds per real second.]:\n'> <Id.Char_Literals '\t[factor:=1]\n'> <Id.Char_Literals '[n!:exec?Execute '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals '. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --noexec> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' shows how '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' would be\n'> <Id.Char_Literals '\tinvoked but does not execute.]\n'> <Id.Char_Literals '[t:trace?Trace each intercepted system call on the standard error.]\n' > <Id.Char_Literals '[+DETAILS?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' executes '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' with optional '> <Id.Char_OneChar '\\a'> <Id.Char_Literals args> <Id.Char_OneChar '\\a'> <Id.Char_Literals ', or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) if\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' is omitted. All processes executed by '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' are\n'> <Id.Char_Literals '\twarped in the same time frame. Time progresses for '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and its\n'> <Id.Char_Literals '\tchildren at the rate of '> <Id.Char_OneChar '\\a'> <Id.Char_Literals factor> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' times the system clock. Any files\n'> <Id.Char_Literals '\tcreated by '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' or its children will appear newer than '> <Id.Char_OneChar '\\a'> <Id.Char_Literals date> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tto '> <Id.Char_OneChar '\\a'> <Id.Char_Literals command> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' and its children, but will actually be in the normal\n' > <Id.Char_Literals '\ttime frame for non-warped commands.]\n'> <Id.Char_Literals '[+?Processes are warped by intercepting system calls with a dll that is\n' > <Id.Char_Literals '\tpreloaded at process startup before '> <Id.Char_OneChar '\\a'> <Id.Char_Literals main> <Id.Char_OneChar '\\a'> <Id.Char_Literals '() is called. The\n'> <Id.Char_Literals '\tinterception mechanism may involve the environment on some systems;\n' > <Id.Char_Literals '\tin those cases commands like '> <Id.Char_OneChar '\\b'> <Id.Char_Literals env> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) that clear the enviroment\n'> <Id.Char_Literals '\tbefore execution may defeat the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' intercepts. The intercepted\n'> <Id.Char_Literals '\tsystem calls are:]{\n'> <Id.Char_Literals '\t[+alarm?]\n'> <Id.Char_Literals '\t[+fstat?]\n'> <Id.Char_Literals '\t[+getitimer?]\n'> <Id.Char_Literals '\t[+gettimeofday?]\n'> <Id.Char_Literals '\t[+lstat?]\n'> <Id.Char_Literals '\t[+poll?]\n'> <Id.Char_Literals '\t[+select?]\n'> <Id.Char_Literals '\t[+setitimer?]\n'> <Id.Char_Literals '\t[+stat?]\n'> <Id.Char_Literals '\t[+time?]\n'> <Id.Char_Literals '\t[+times?]\n'> <Id.Char_Literals '\t[+utime?]\n'> <Id.Char_Literals '\t[+utimes?]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+?Also intercepted are the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' and '> <Id.Char_OneChar '\\b'> <Id.Char_Literals _libc_> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' name permutations of the\n'> <Id.Char_Literals '\tcalls, as well as any 32-bit and 64-bit versions, and the abominable\n' > <Id.Char_Literals '\tSystem V '> <Id.Char_OneChar '\\b'> <Id.Char_Literals x> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' versions of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals stat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(2) family. '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' ignores\n'> <Id.Char_Literals '\tcalls not present in a particular host system. In addition, ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tonly works on dynamically linked executables that have neither set-uid\n' > <Id.Char_Literals '\tset-uid nor set-gid permissions. It may not have the intended effect\n' > <Id.Char_Literals '\ton programs written in a language or linked with a language runtime\n' > <Id.Char_Literals '\tthat hides or mangles system call library symbols, or that\n' > <Id.Char_Literals '\tdirectly emit system call instruction sequences rather than using\n' > <Id.Char_Literals '\tthe corresponding library functions, or that dynamically link\n' > <Id.Char_Literals '\tlibraries outside of the scope of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' intercepts.]\n'> <Id.Char_Literals '[+?Multi-process client-server applications may misbehave if the ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tenvironment between the related processes is not kept in sync.]\n' > <Id.Char_Literals '\n'> <Id.Char_Literals 'date [ command [ arg ... ] ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+ENVIRONMENT?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' is implemented by three components: the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' script,\n'> <Id.Char_Literals '\tlocated on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '; the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' dll (shared library), located either\n'> <Id.Char_Literals '\ton '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' or in one of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '../lib'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '* directories on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ',\n'> <Id.Char_Literals '\tdepending on local compilation system conventions; and the ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals ast> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals date> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) command, located on '> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$PATH'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', that supports conversion\n'> <Id.Char_Literals '\tto/from '> <Id.Char_OneChar '\\b'> <Id.Char_Literals time_t> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' values at the shell level. Systems like\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals sgi.mips3> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' that support multiple a.out formats may have multiple\n' > <Id.Char_Literals '\tversions of the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' dll. In all cases the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals warp> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' script handles\n'> <Id.Char_Literals '\tthe dll search.]\n'> <Id.Char_Literals '[+EXAMPLES?]{\n'> <Id.Char_Literals '\t[+$ date -f %K?1998-03-11+13:41]\n'> <Id.Char_Literals '\t[+$ warp 2000-02-29+12::30::30 date -f %K?2000-02-29+12:30]\n' > <Id.Char_Literals '\t[+$ warp "2 years" date -f %K?2000-01-01+00:00]\n'> <Id.Char_Literals '\t[+$ PS1="(warp) " warp -f $((60*60*24)) 2000-02-29+12::30::30?#\n' > <Id.Char_Literals '\t\tinteractive '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) where 1 warped day passes for each\n'> <Id.Char_Literals '\t\treal second.]\n'> <Id.Char_Literals '}\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals 3d> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals date> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals env> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ie> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals sh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1),\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals trace> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals stat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(2)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] 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 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (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: {(SQ <'b:[base]f:[factor]nt date [ command [ arg ... ] ]'>)} ) ] 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 ':'>} {<grab>} {<the>} {<options>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] 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 OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <b> pattern: (pat.Words words:[{<b>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'base_str='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'base_str='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base_str='> name:base_str) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'factor='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'factor='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'factor='> name:factor) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (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: {<print>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName opt) <-> ($ Id.VSub_DollarName OPT) <' '>)} ) ] 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_Exit exit> arg_word:{<2>})] 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>} {($ Id.VSub_DollarName OPTIND) <-1>}] 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.Sentence child: (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {(SQ <'-?'>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<find>} {<the>} {<warp>} {<dll>} {<root>} {<dir>}] 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: { (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 '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>} {<-A>} {<path>} {($ 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.ForEach keyword: <Id.KW_For for> iter_names: [root] iterable: (for_iter.Words words: [ { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name path> var_name: path bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name root> var_name: root suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-A>} {<lib>} {($ Id.VSub_DollarName root) <'/'> (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [{<bin>} {<lib>}] right: <Id.Right_ExtGlob _> ) <'/'> (word_part.ExtGlob op:<Id.ExtGlob_At '@('> arms:[{<lib>} {}] right:<Id.Right_ExtGlob _>) <warp> (word_part.ExtGlob op: <Id.ExtGlob_Star '*('> arms: [{<'[0-9]'>}] right: <Id.Right_ExtGlob _> ) <.> (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [ {<dll>} {<dylib>} {<'s[ol]'> (word_part.ExtGlob op: <Id.ExtGlob_Star '*('> arms: [{<'[0-9.]'>}] right: <Id.Right_ExtGlob _> ) } ] right: <Id.Right_ExtGlob _> ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'dll='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dll='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dll='> name:dll) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name lib> var_name: lib bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name lib> var_name: lib prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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 dll)}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)] spids: [767 776] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'prefix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prefix='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dll> var_name: dll suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [ {<dll>} {<dylib>} {<'s[ol]'> (word_part.ExtGlob op: <Id.ExtGlob_Star '*('> arms: [{<'[0-9.]'>}] right: <Id.Right_ExtGlob _> ) } ] right: <Id.Right_ExtGlob _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'suffix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'suffix='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suffix='> name:suffix) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dll> var_name: dll suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {($ Id.VSub_DollarName prefix)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'prefix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prefix='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name prefix> var_name: prefix suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {($ Id.VSub_DollarName root) <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<determine>} {<the>} {<warp>} {<offset>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike now) right: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.VSub_DollarName '$root'> more_env: [ (EnvPair left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> name: LD_LIBRARY_PATH val: {($ Id.VSub_DollarName root) <'/lib'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName LD_LIBRARY_PATH) } ) ] words: [{($ Id.VSub_DollarName root) <'/bin/date'>} {<-f>} {<Id.Lit_Other '%'> <s>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Op_DRightParen _> 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: <now> pattern: (pat.Words words:[{<now>}]) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike warp) right: ($ Id.Lit_ArithVarLike now) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.ExtGlob_Plus '+('> pattern: (pat.Words words: [ { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[0-9]'>}] right: <Id.Right_ExtGlob _> ) } ] ) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike warp) right: {($ Id.VSub_Number 1)} ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike warp) right: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.VSub_DollarName '$root'> more_env: [ (EnvPair left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> name: LD_LIBRARY_PATH val: {($ Id.VSub_DollarName root) <'/lib'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName LD_LIBRARY_PATH) } ) ] words: [ {($ Id.VSub_DollarName root) <'/bin/date'>} {<-f>} {<Id.Lit_Other '%'> <s>} {<-s>} {(DQ ($ Id.VSub_Number 1))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Op_DRightParen _> 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.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<determine>} {<the>} {<warp>} {<factor>} {<base>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike factor) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName base_str)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<now>}]) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike base) right: ($ Id.Lit_ArithVarLike now) ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.ExtGlob_Plus '+('> pattern: (pat.Words words: [ { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[0-9]'>}] right: <Id.Right_ExtGlob _> ) } ] ) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike base) right: {($ Id.VSub_DollarName base_str)} ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike base) right: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <Id.VSub_DollarName '$root'> more_env: [ (EnvPair left: <Id.Lit_VarLike 'LD_LIBRARY_PATH='> name: LD_LIBRARY_PATH val: {($ Id.VSub_DollarName root) <'/lib'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName LD_LIBRARY_PATH) } ) ] words: [ {($ Id.VSub_DollarName root) <'/bin/date'>} {<-f>} {<Id.Lit_Other '%'> <s>} {<-s>} {(DQ ($ Id.VSub_DollarName base_str))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Op_DRightParen _> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName opt) <-b> ($ Id.VSub_DollarName base) <' -f'> ($ Id.VSub_DollarName factor) <' '> ) } ) ] redirects: [] ) ] spids: [952 961] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<final>} {<adjustments>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike warp) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike warp) right: ($ Id.Lit_ArithVarLike now) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<Id.KW_If if>} {<no>} {<command>} {<Id.KW_Then then>} {<start>} {<a>} {<warped>} {<shell>} ] 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.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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SHELL> var_name: SHELL suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<ksh>}) right: <Id.Right_DollarBrace '}'> ) } ) ] 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>} {<-x>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (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: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] spids: [1129 1140] ) ] else_kw: <Id.KW_Else else> else_action: [ (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: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <whence> more_env: [] words: [{<whence>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> 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: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} {<hack>} {<the>} {<preload>} {<magic> <Id.Lit_Comma ','>} {<and>} {<we>} {<mean>} {<hack>} ] redirects: [] do_fork: T ) (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 <'WARP=\''> ($ Id.VSub_DollarName opt) ($ Id.VSub_DollarName warp) <'\' LD_PRELOAD=\''> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LD_PRELOAD> var_name: LD_PRELOAD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '> ($ Id.VSub_DollarName LD_PRELOAD)} ) right: <Id.Right_DollarBrace '}'> ) <'\' DYLD_INSERT_LIBRARIES=\''> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name DYLD_INSERT_LIBRARIES> var_name: DYLD_INSERT_LIBRARIES suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '> ($ Id.VSub_DollarName DYLD_INSERT_LIBRARIES)} ) right: <Id.Right_DollarBrace '}'> ) <'\''> ) } ) ] 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 '*'> <-n32>}]) 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: { (DQ ($ Id.VSub_DollarName env) <' _RLDN32_LIST='> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLDN32_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLDN32_LIST)) } ) ] 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: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-n32> ($ Id.VSub_DollarName suffix) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> 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: { (DQ ($ Id.VSub_DollarName env) <' _RLD64_LIST='> ($ Id.VSub_DollarName dll) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD64_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD64_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLDN32_LIST='> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-n32> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLDN32_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLDN32_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLD_LIST='> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-o32> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1280 1293] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-64> ($ Id.VSub_DollarName suffix) } {<-o>} {<-f>} {($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-o32> ($ Id.VSub_DollarName suffix) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> 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: { (DQ ($ Id.VSub_DollarName env) <' _RLD64_LIST='> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-64> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD64_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD64_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLDN32_LIST='> ($ Id.VSub_DollarName dll) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLDN32_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLDN32_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLD_LIST='> ($ Id.VSub_DollarName root) <'/'> ($ Id.VSub_DollarName prefix) <-o32> ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1435 1458] ) ] 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 root)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <'/sgi.mips'> <Id.Lit_LBracket '['> <2-9> <Id.Lit_RBracket ']'> <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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name root> var_name: root suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<-> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name root> var_name: root suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Other '?'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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 ($ Id.VSub_DollarName env) <' _RLD64_LIST='> (${ Id.VSub_Name root) <'4/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD64_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD64_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLDN32_LIST='> (${ Id.VSub_Name root) <'3/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLDN32_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLDN32_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 ($ Id.VSub_DollarName env) <' _RLD_LIST='> (${ Id.VSub_Name root) <'2/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD_LIST) ) } ) ] 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 '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 ($ Id.VSub_DollarName env) <' _RLD_LIST='> (${ Id.VSub_Name root) <'/'> ($ Id.VSub_DollarName prefix) ($ Id.VSub_DollarName suffix) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName _RLD_LIST)}) 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 '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 ($ Id.VSub_DollarName env) <':DEFAULT'>)} ) ] 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 '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 ($ Id.VSub_DollarName env) <':'> ($ Id.VSub_DollarName _RLD_LIST) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] 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: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<engage>}] redirects: [] do_fork: T ) (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_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {($ Id.VSub_DollarName env)} {(SQ <'$command "$@"'>)}] 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 '$show'> more_env: [] words: [ {($ Id.VSub_DollarName show)} {($ Id.VSub_DollarName env)} {($ Id.VSub_DollarName command)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] )