(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal rhs:{($ VSub_Name "$_")} spids:[66])] spids: [66] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(3d)} spids:[73])] spids: [73] ) (Case to_match: {($ VSub_Name "$RANDOM")} arms: [ (case_arm pat_list: [{($ VSub_Name "$RANDOM")}] action: [(C {(exec)} {(ksh)} {(3d)} {(DQ ($ VSub_At "$@"))})] spids: [83 84 95 -1] ) ] spids: [77 81 97] ) (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (SimpleCommand words: [{(getopts)} {(SQ <"[-][123:xyz]">)} {(opt)} {(--xyz)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[113])] ) terminator: <Op_Semi ";"> ) (C {(echo)} {(0) ($ VSub_Name "$opt")}) ] ) left_token: <Left_CommandSub "$("> spids: [102 121] ) } arms: [ (case_arm pat_list: [{(0123)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ARGV0) op: Equal rhs: {(DQ ("-a ") ($ VSub_Name "$command"))} spids: [128] ) ] spids: [128] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USAGE) op: Equal rhs: { (SQ <"\n"> <"[-?\n"> <"@(#)$Id: 3d (AT&T Labs Research) 2006-10-01 $\n"> <"]\n">) ($ VSub_Name "$USAGE_LICENSE") (SQ <"\n"> <"[+NAME?3d - execute a command with nDFS filesystem services enabled]\n"> <"[+DESCRIPTION?"> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" executes a dynamically linked "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <"\n"> <"\twith "> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> <DFS> <Lit_EscapedChar "\\b"> <" filesystem services enabled. It intercepts pathname\n"> <"\tsystem calls and applies the "> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> <DFS> <Lit_EscapedChar "\\b"> <" operations specified\n"> <"\tby the "> <Lit_EscapedChar "\\b"> <VPATH> <Lit_EscapedChar "\\b"> <" environment variable, the command line mounts,\n"> <"\tand the "> <Lit_EscapedChar "\\b"> <vpath> <Lit_EscapedChar "\\b"> <" command. If "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" is omitted then an\n"> <"\tinteractive "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1) is started. All processes executed by "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <"\n"> <"\talso have "> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> <DFS> <Lit_EscapedChar "\\b"> <" enabled.]\n"> <"[+?The main "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" service is "> <Lit_EscapedChar "\\a"> <viewpathing> <Lit_EscapedChar "\\a"> <". A "> <Lit_EscapedChar "\\a"> <viewpath> <Lit_EscapedChar "\\a"> <" mounts one\n"> <"\tdirectory tree on top of another. Files in the top level\n"> <"\t(directory tree) obscure files in the lower level. Lower level files\n"> < "\thave copy-on-write semantics to the top level. i.e., files in the lower\n" > <"\tlevel are readonly; if a lower level file is modified it is first\n"> <"\tcopied to the top level before modification. Viewpath mounted\n"> <"\tdirectories can be chained. All levels but the top in a chain are\n"> <"\treadonly. The traditional "> <Lit_EscapedChar "\\b"> <"VPATH="> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <"d1:d2:d3"> <Lit_EscapedChar "\\a"> <" viewpathing is\n"> <"\tspecified by the two "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" mounts \""> <Lit_EscapedChar "\\a"> <"d1 d2"> <Lit_EscapedChar "\\a"> <"\" and \""> <Lit_EscapedChar "\\a"> <"d2 d3"> <Lit_EscapedChar "\\a"> <"\".]\n"> <"[+?The following service mounts are initialized by default:]{\n"> <"\t[+/dev/fd?"> <Lit_EscapedChar "\\b"> </dev/fd/> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <" refers to the open file descriptor "> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <"\n"> <"\t\tin the current process.]\n"> <"\t[+/dev/fdp?"> <Lit_EscapedChar "\\b"> </dev/fdp/local/> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" opens a 2-way stream to\n"> <"\t\t"> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" on the local host. The stream supports file\n"> <"\t\tdescriptor exchange.]\n"> <"\t[+/dev/tcp?"> <Lit_EscapedChar "\\b"> </dev/tcp/> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> </> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" opens a 2-way\n"> <"\t\tconnection to "> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". "> <Lit_EscapedChar "\\b"> <inetd> <Lit_EscapedChar "\\b"> <"(8) services\n"> <"\t\tare named either by "> <Lit_EscapedChar "\\b"> <inet.> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" or by port number.]\n"> <"\t[+/dev/udp?"> <Lit_EscapedChar "\\b"> </dev/udb/> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> </> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" opens a datagram\n"> <"\t\tconnection to "> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". "> <Lit_EscapedChar "\\b"> <inetd> <Lit_EscapedChar "\\b"> <"(8) services\n"> <"\t\tare named either by "> <Lit_EscapedChar "\\b"> <inet.> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <service> <Lit_EscapedChar "\\a"> <" or by port number.]\n"> <"}\n"> <"[c:command?Ignored; allows "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" to be invoked like "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1).]\n"> <"[d:debug?Set the debug trace level to "> <Lit_EscapedChar "\\a"> <level> <Lit_EscapedChar "\\a"> <". Higher levels produce more\n"> <"\toutput.]#[level]\n"> <"[l:lite?Disable the default service mounts.]\n"> <"[m:mount?Mount the path "> <Lit_EscapedChar "\\a"> <top> <Lit_EscapedChar "\\a"> <" onto the path "> <Lit_EscapedChar "\\a"> <bottom> <Lit_EscapedChar "\\a"> <". If "> <Lit_EscapedChar "\\a"> <bottom> <Lit_EscapedChar "\\a"> <" is a\n"> <"\tdirectory then the directory "> <Lit_EscapedChar "\\a"> <top> <Lit_EscapedChar "\\a"> <" is viewpathed on top of "> <Lit_EscapedChar "\\a"> <bottom> <Lit_EscapedChar "\\a"> <".\n"> <"\tOtherwise "> <Lit_EscapedChar "\\a"> <bottom> <Lit_EscapedChar "\\a"> <" must match a "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" "> <Lit_EscapedChar "\\b"> <fs> <Lit_EscapedChar "\\b"> <" path of the form\n"> <"\t"> <Lit_EscapedChar "\\b"> <"/#"> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <special> <Lit_EscapedChar "\\a"> <".]:[\"top bottom\"]\n"> <"[n!:exec?Execute "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <". "> <Lit_EscapedChar "\\b"> <--noexec> <Lit_EscapedChar "\\b"> <" shows how "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" would be\n"> <"\tinvoked but does not execute.]\n"> <"[o:output?"> <Lit_EscapedChar "\\b"> <--trace> <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <--debug> <Lit_EscapedChar "\\b"> <" output is written to "> <Lit_EscapedChar "\\a"> <file> <Lit_EscapedChar "\\a"> <" instead\n"> <"\tof the standard error.]:[file]\n"> <"[s:shell?Sets the "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1) executable path to "> <Lit_EscapedChar "\\a"> <file> <Lit_EscapedChar "\\a"> <".]:[file:=ksh]\n"> <"[t:trace?If "> <Lit_EscapedChar "\\a"> <id> <Lit_EscapedChar "\\a"> <" is "> <Lit_EscapedChar "\\b"> <1> <Lit_EscapedChar "\\b"> <" then intercepted system calls for all child\n"> <"\tprocesses will be traced. If "> <Lit_EscapedChar "\\a"> <id> <Lit_EscapedChar "\\a"> <" is greater than "> <Lit_EscapedChar "\\b"> <1> <Lit_EscapedChar "\\b"> <" then\n"> <"\tintercepted system calls for the current process and all\n"> <"\tchildren will be traced.]#[id]\n"> <"[v:version?Use "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" version "> <Lit_EscapedChar "\\a"> <major.minor> <Lit_EscapedChar "\\a"> <" instead of the latest\n"> <"\tversion.]:[major.minor]\n"> <"[x:?Passed to the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1).]\n"> <"[+FS PATHS?"> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" "> <Lit_EscapedChar "\\b"> <fs> <Lit_EscapedChar "\\b"> <" paths of the form "> <Lit_EscapedChar "\\b"> <"/#"> <Lit_EscapedChar "\\b"> <Lit_EscapedChar "\\a"> <special> <Lit_EscapedChar "\\a"> <"["> <Lit_EscapedChar "\\b"> </> <Lit_EscapedChar "\\b"> <"...]]\n"> <"\tcontrol the semantics of "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" and allow services to be attached to\n"> <"\tthe file namespace. Unsupported "> <Lit_EscapedChar "\\b"> <fs> <Lit_EscapedChar "\\b"> <" paths are silently ignored. The\n"> <"\tsupported "> <Lit_EscapedChar "\\b"> <fs> <Lit_EscapedChar "\\b"> <" paths are:]{\n"> <"\t[+/#fd? ]\n"> <"\t[+/#fs/"> <Lit_EscapedChar "\\a"> <name> <Lit_EscapedChar "\\a"> <"[/"> <Lit_EscapedChar "\\a"> <option> <Lit_EscapedChar "\\a"> <"/...]]? ]\n"> <"\t[+/#map? ]\n"> <"\t[+/#null? ]\n"> <"\t[+/#option? ]{\n"> <"\t\t[+2d? ]\n"> <"\t\t[+3d? ]\n"> <"\t\t[+boundary? ]\n"> <"\t\t[+call="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+count="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+debug="> <Lit_EscapedChar "\\a"> <level> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+dump="> <Lit_EscapedChar "\\b"> <"["> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"]]? ]{\n"> <"\t\t\t[+call="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+file="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+fs="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+map="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+mount="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+safe="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+state="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t\t[+view="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t}\n"> <"\t\t[+file="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+fork? ]\n"> <"\t\t[+init? ]\n"> <"\t\t[+license="> <Lit_EscapedChar "\\a"> <path> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+mount="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+table="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+test="> <Lit_EscapedChar "\\a"> <bitmask> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+timeout="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+timestamp? ]\n"> <"\t\t[+trace="> <Lit_EscapedChar "\\a"> <value> <Lit_EscapedChar "\\a"> <"? ]\n"> <"\t\t[+version=1? ]\n"> <"\t}\n"> <"\t[+/#pwd? ]\n"> <"\t[+/#safe? ]\n"> <"\t[+/#view? ]\n"> <"}\n"> <"[+DETAILS?"> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> <DFS> <Lit_EscapedChar "\\b"> <" semantics are applied by intercepting system calls with\n"> <"\ta dll that is preloaded at process startup before "> <Lit_EscapedChar "\\a"> <main> <Lit_EscapedChar "\\a"> <"() is called.\n"> < "\tThe interception mechanism may involve the environment on some systems;\n" > <"\tin those cases commands like "> <Lit_EscapedChar "\\b"> <env> <Lit_EscapedChar "\\b"> <"(1) that clear the enviroment\n"> <"\tbefore execution may defeat the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" intercepts. The intercepted\n"> <"\tsystem calls are listed by "> <Lit_EscapedChar "\\b"> <"vpath - /#option/dump=call"> <Lit_EscapedChar "\\b"> <". Note that\n"> <"\timplementation system call names may differ from those listed in\n"> <"\tsection 2 of the manual; "> <Lit_EscapedChar "\\b"> <stat> <Lit_EscapedChar "\\b"> <"(2) is especially vulnerbale to\n"> <"\tmangling.]\n"> <"[+?"> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" ignores calls not present in a particular host system. In addition,\n"> <"\t"> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" only works on dynamically linked executables that have neither\n"> <"\tset-uid nor set-gid permissions. It may not have the intended effect\n"> <"\ton programs written in a language or linked with a language runtime\n"> <"\tthat hides or mangles system call library symbols, or that\n"> <"\tdirectly emit system call instruction sequences rather than using\n"> <"\tthe corresponding library functions, or that dynamically link\n"> <"\tlibraries outside of the scope of the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" intercepts.]\n"> <"[+?Multi-process client-server applications may misbehave if the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <"\n"> <"\tenvironment between the related processes is not kept in sync.]\n"> <"\n"> <"[ command [ arg ... ] ]\n"> <"\n"> <"[+ENVIRONMENT?"> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" is implemented by four components: the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" script,\n"> <"\tlocated on "> <Lit_EscapedChar "\\b"> <"$PATH"> <Lit_EscapedChar "\\b"> <"; the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" dll (shared library), located either\n"> <"\ton "> <Lit_EscapedChar "\\b"> <"$PATH"> <Lit_EscapedChar "\\b"> <" or in one of the "> <Lit_EscapedChar "\\b"> <../lib> <Lit_EscapedChar "\\b"> <"* directories on "> <Lit_EscapedChar "\\b"> <"$PATH"> <Lit_EscapedChar "\\b"> <",\n"> <"\tdepending on local compilation system conventions; and the "> <Lit_EscapedChar "\\b"> <2d> <Lit_EscapedChar "\\b"> <"\n"> <"\t"> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1) alias and "> <Lit_EscapedChar "\\b"> <_2d> <Lit_EscapedChar "\\b"> <" "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1) function that allow commands\n"> <"\tto be run with "> <Lit_EscapedChar "\\a"> <n> <Lit_EscapedChar "\\a"> <Lit_EscapedChar "\\b"> <DFS> <Lit_EscapedChar "\\b"> <" semantics disabled. Systems like\n"> <"\t"> <Lit_EscapedChar "\\b"> <sgi.mips3> <Lit_EscapedChar "\\b"> <" that support multiple a.out formats may have multiple\n"> <"\tversions of the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" dll. In all cases the "> <Lit_EscapedChar "\\b"> <3d> <Lit_EscapedChar "\\b"> <" script handles\n"> <"\tthe dll search.]\n"> <"[+EXAMPLES?]{\n"> <"\t[+"> <Lit_EscapedChar "\\b"> <"$ 3d]\n"> <"\t[+"> <Lit_EscapedChar "\\b"> <"$ VPATH=$INSTALLROOT::$PACKAGEROOT 3d]\n"> <"\t[+"> <Lit_EscapedChar "\\b"> <"$ 3d ls -l]\n"> <"\t[+"> <Lit_EscapedChar "\\b"> <"$ 2d ls -l]\n"> <"}\n"> <"[+SEE ALSO?"> <Lit_EscapedChar "\\b"> <env> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <ie> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <sh> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <trace> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <warp> <Lit_EscapedChar "\\b"> <"(1),\n"> <"\t"> <Lit_EscapedChar "\\b"> <stat> <Lit_EscapedChar "\\b"> <"(2)]\n"> ) } spids: [135] ) ] spids: [135] ) ] spids: [125 126 813 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ARGV0) op:Equal rhs:{(DQ )} spids:[818])] spids: [818] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USAGE) op: Equal rhs: {(SQ <"clnxd:m:o:s:t:v:[ command [ arg ... ] ]">)} spids: [823] ) ] spids: [823] ) ] spids: [815 816 829 -1] ) ] spids: [100 123 831] ) (AndOr children: [ (C {(test)} {(.)} {(-ef)} {(DQ ($ VSub_Name "$PWD"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PWD) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick "`"> spids: [847 849] ) } spids: [846] ) ] spids: [846] ) ] op_id: Op_DPipe ) (Case to_match: {($ VSub_Name "$dir")} arms: [ (case_arm pat_list:[{(Lit_Other "*") (/3d)}] spids:[857859861-1]) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Case to_match: {($ VSub_Number "$0")} arms: [ (case_arm pat_list: [{(Lit_Other "*") (/) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Number "$0")} spids: [878] ) ] spids: [878] ) ] spids: [873 876 882 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {(3d)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [894] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [889 896] ) } spids: [888] ) ] spids: [888] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {(-p)} {($ VSub_Name "$dir")}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [907] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [900 909] ) } spids: [899] ) ] spids: [899] ) ] spids: [885 886 912 -1] ) ] spids: [866 870 915] ) ] spids: [863 864 -1 917] ) ] spids: [851 855 917] ) (Case to_match: {($ VSub_Name "$dir")} arms: [ (case_arm pat_list: [{(/) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (BracedVarSub token: <VSub_Name dir> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [930 935] ) } spids: [929] ) ] spids: [929] ) ] spids: [925 927 937 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (BracedVarSub token: <VSub_Name dir> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(.) (Lit_Slash /)}) spids: [943 948] ) } spids: [942] ) ] spids: [942] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Name "$PWD") (/) (BracedVarSub token: <VSub_Name dir> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [954 959] ) } spids: [951] ) ] spids: [951] ) ] spids: [939 940 961 -1] ) ] spids: [919 923 963] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:abi) op:Equal rhs:{(SQ )} spids:[965])] spids: [965] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: { (BracedVarSub token: <VSub_Name dir> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [968 973] ) } spids: [967] ) ] spids: [967] ) (Case to_match: {($ VSub_Name "$dir")} arms: [ (case_arm pat_list: [ {(Lit_Other "*") (/arch/sgi.mips) (Lit_Other "[") (0123456789) (Lit_Other "]") (Lit_Other "*") } ] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-d)} {(/lib32)} {(-o)} {(-d)} {(/lib64)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (BracedVarSub token: <VSub_Name dir> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{("-*")}) spids: [1008 1012] ) } spids: [1007] ) ] spids: [1007] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (BracedVarSub token: <VSub_Name d> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{("?")}) spids: [1016 1020] ) } spids: [1015] ) ] spids: [1015] ) (ForEach iter_name: a iter_words: [ {(2) (Lit_Other ":")} {(3) (Lit_Other ":") (N32)} {(4) (Lit_Other ":") (64)} ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:t) op: Equal rhs: { (BracedVarSub token: <VSub_Name a> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [1044 1048] ) } spids: [1043] ) ] spids: [1043] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:a) op: Equal rhs: { (BracedVarSub token: <VSub_Name a> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(":*")}) spids: [1052 1056] ) } spids: [1051] ) ] spids: [1051] ) (If arms: [ (if_arm cond: [(C {(test)} {(-d)} {($ VSub_Name "$d") ($ VSub_Name "$a")})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:abi) op: Equal rhs: { (DQ ($ VSub_Name "$abi") (" ") ($ VSub_Name "$d") ($ VSub_Name "$a") (":") ($ VSub_Name "$t") ) } spids: [1071] ) ] spids: [1071] ) ] spids: [-1 1069] ) ] spids: [-1 1082] ) ] spids: [1041 1085] ) spids: [1028 -1] ) ] spids: [-1 1005] ) ] spids: [-1 1088] ) ] spids: [981 987 1091 -1] ) ] spids: [975 979 1093] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:cflag) op:Equal rhs:{(SQ )} spids:[1095])] spids: [1095] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:full) op: Equal rhs: { (DQ ( "/dev/fdp/local/nam/user /#fs/nam/name/unique /dev/fdp /#nam /dev/tcp /#nam /dev/udp /#nam /dev/fd /#fd" ) ) } spids: [1097] ) ] spids: [1097] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:mount) op:Equal rhs:{(DQ ("- -"))} spids:[1102])] spids: [1102] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:options) op:Equal rhs:{(SQ )} spids:[1107])] spids: [1107] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:output) op:Equal rhs:{(SQ )} spids:[1109])] spids: [1109] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:show) op:Equal rhs:{(SQ )} spids:[1111])] spids: [1111] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shell) op: Equal rhs: {($ VSub_Name "$SHELL")} spids: [1113] ) ] spids: [1113] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:trace) op:Equal rhs:{(SQ )} spids:[1116])] spids: [1116] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SHELL) op:Equal rhs:{(SQ )} spids:[1118])] spids: [1118] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:version) op:Equal rhs:{(SQ )} spids:[1120])] spids: [1120] ) (Case to_match: {($ VSub_Name "$VPATH")} arms: [ (case_arm pat_list: [{(Lit_Other "*") (Lit_Other ":") (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ifs) op: Equal rhs: { (BracedVarSub token: <VSub_Name IFS> suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ <"\n"> <"\t ">)}) spids: [1134 1141] ) } spids: [1133] ) ] spids: [1133] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(Lit_Other ":")} spids: [1144] ) ] spids: [1144] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:o) op:Equal rhs:{(SQ )} spids:[1148])] spids: [1148] ) (ForEach iter_name: a iter_words: [{($ VSub_Name "$VPATH")}] do_arg_iter: False body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$a")} arms: [ (case_arm pat_list: [{(DQ )} {(-)}] spids: [-1 1173 1175 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Case to_match: {($ VSub_Name "$o")} arms: [ (case_arm pat_list: [{(DQ )} {(-)}] spids: [-1 1192 1194 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mount) op: Equal rhs: { (DQ ($ VSub_Name "$mount") (" ") ($ VSub_Name "$o") (" ") ($ VSub_Name "$a") ) } spids: [1200] ) ] spids: [1200] ) ] spids: [1197 1198 1209 -1] ) ] spids: [1181 1185 1212] ) ] spids: [1178 1179 1215 -1] ) ] spids: [1162 1166 1218] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:o) op: Equal rhs: {($ VSub_Name "$a")} spids: [1221] ) ] spids: [1221] ) ] spids: [1160 1225] ) spids: [1156 -1] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {($ VSub_Name "$ifs")} spids: [1228] ) ] spids: [1228] ) ] spids: [1128 1131 1232 -1] ) ] spids: [1122 1126 1234] ) (C {(Lit_Other ":")} {(grab)} {(the)} {(options)}) (While cond: [(C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)})] body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$OPT")} arms: [ (case_arm pat_list: [{(c)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cflag) op: Equal rhs: {(1)} spids: [1270] ) ] spids: [1270] ) terminator: <Op_Semi ";"> ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [1267 1268 1276 -1] ) (case_arm pat_list: [{(d)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace) op: Equal rhs: {(DQ ($ VSub_Name "$trace") ("/debug=") ($ VSub_Name "$OPTARG"))} spids: [1282] ) ] spids: [1282] ) ] spids: [1279 1280 1289 -1] ) (case_arm pat_list: [{(l)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:full) op:Equal rhs:{(SQ )} spids:[1295])] spids: [1295] ) ] spids: [1292 1293 1297 -1] ) (case_arm pat_list: [{(m)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mount) op: Equal rhs: {(DQ ($ VSub_Name "$mount") (" ") ($ VSub_Name "$OPTARG"))} spids: [1303] ) ] spids: [1303] ) ] spids: [1300 1301 1310 -1] ) (case_arm pat_list: [{(n)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:show) op: Equal rhs: {(DQ ("print -u2 --"))} spids: [1316] ) ] spids: [1316] ) ] spids: [1313 1314 1321 -1] ) (case_arm pat_list: [{(o)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [1327] ) ] spids: [1327] ) ] spids: [1324 1325 1330 -1] ) (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SHELL) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [1336] ) ] spids: [1336] ) ] spids: [1333 1334 1339 -1] ) (case_arm pat_list: [{(t)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace) op: Equal rhs: {(DQ ($ VSub_Name "$trace") ("/trace=") ($ VSub_Name "$OPTARG"))} spids: [1345] ) ] spids: [1345] ) ] spids: [1342 1343 1352 -1] ) (case_arm pat_list: [{(v)}] action: [ (Case to_match: {($ VSub_Name "$OPTARG")} arms: [ (case_arm pat_list: [{(/) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [1369] ) ] spids: [1369] ) ] spids: [1365 1367 1372 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {(.) ($ VSub_Name "$OPTARG")} spids: [1378] ) ] spids: [1378] ) ] spids: [1375 1376 1382 -1] ) ] spids: [1358 1362 1385] ) ] spids: [1355 1356 1388 -1] ) (case_arm pat_list: [{(x)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:options) op: Equal rhs: {(DQ ($ VSub_Name "$options") (" -") ($ VSub_Name "$OPT"))} spids: [1394] ) ] spids: [1394] ) ] spids: [1391 1392 1401 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(exit)} {(2)})] spids: [1404 1405 1411 -1] ) ] spids: [1260 1264 1414] ) ] spids: [1258 1416] ) ) (C {(set)} {(x)} {(DQ ($ VSub_At "$@"))}) (C {(shift)} {($ VSub_Name "$OPTIND")}) (Case to_match: {($ VSub_Name "$cflag")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(set)} {(--)} {(-c)} {(DQ ($ VSub_At "$@"))})] spids: [1436 1437 1449 -1] ) ] spids: [1430 1434 1451] ) (Case to_match: {($ VSub_Name "$full")} arms: [ (case_arm pat_list: [{(Lit_Other "?") (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mount) op: Equal rhs: {(DQ ($ VSub_Name "$full") (" ") ($ VSub_Name "$mount"))} spids: [1464] ) ] spids: [1464] ) ] spids: [1460 1462 1471 -1] ) ] spids: [1454 1458 1473] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mount) op: Equal rhs: {(DQ ("- /#option/3d") ($ VSub_Name "$trace") (" ") ($ VSub_Name "$mount"))} spids: [1475] ) ] spids: [1475] ) (Case to_match: {($ VSub_Name "$output")} arms: [ (case_arm pat_list: [{(Lit_Other "?") (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mount) op: Equal rhs: {(DQ ($ VSub_Name "$output") (" /#fs/option ") ($ VSub_Name "$mount"))} spids: [1493] ) ] spids: [1493] ) ] spids: [1489 1491 1500 -1] ) ] spids: [1483 1487 1502] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:default) op: Equal rhs: {($ VSub_Name "$version")} spids: [1504] ) ] spids: [1504] ) (Case to_match: {($ VSub_Name "$version")} arms: [ (case_arm pat_list:[{(/) (Lit_Other "*")}] spids:[151315151517-1]) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(getconf)} {(LIBPREFIX)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [1528] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1531] ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(getconf)} {(LIBPATH)})]) left_token: <Left_CommandSub "$("> spids: [1538 1542] ) } spids: [1537] ) ] spids: [1537] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (BracedVarSub token: <VSub_Name d> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*,")}) spids: [1546 1550] ) } spids: [1545] ) ] spids: [1545] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (BracedVarSub token: <VSub_Name d> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(":*")}) spids: [1554 1558] ) } spids: [1553] ) ] spids: [1553] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:p) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(getconf)} {(LIBPREFIX)})]) left_token: <Left_CommandSub "$("> spids: [1562 1566] ) } spids: [1561] ) ] spids: [1561] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:s) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(getconf)} {(LIBSUFFIX)})]) left_token: <Left_CommandSub "$("> spids: [1570 1574] ) } spids: [1569] ) ] spids: [1569] ) ] spids: [-1 1535] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:d) op:Equal rhs:{(lib)} spids:[1579])] spids: [1579] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:p) op:Equal rhs:{(lib)} spids:[1583])] spids: [1583] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:s) op: Equal rhs: {(SQ <".s[lo]">)} spids: [1587] ) ] spids: [1587] ) ] spids: [1577 1593] ) (ForEach iter_name: x iter_words: [ {($ VSub_Name "$dir") (/) ($ VSub_Name "$d") (/) (${ VSub_Name p) (3d) (${ VSub_Name s) ($ VSub_Name "$version") } {($ VSub_Name "$dir") (/) ($ VSub_Name "$d") (/) (${ VSub_Name p) (3d) (BracedVarSub token: <VSub_Name version> suffix_op: (PatSub pat: {(.)} replace: {} do_all: True do_prefix: False do_suffix: False ) spids: [1623 1629] ) (${ VSub_Name s) } ] do_arg_iter: False body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$x")} arms: [ (case_arm pat_list: [ {(Lit_Other "*") (/) (${ VSub_Name p) (3d) (${ VSub_Name s) (Lit_Other "*") (Lit_Other "[") (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ) (Lit_Other "]") (Lit_Other "*") } {(Lit_Other "*") (/) (${ VSub_Name p) (3d) ($ VSub_Star "$*") (Lit_Other "[") (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ) (Lit_Other "]") (Lit_Other "*") (${ VSub_Name s) } ] spids: [1644 1673 1676 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {($ VSub_Name "$x")} spids: [1682] ) ] spids: [1682] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [1679 1680 1689 -1] ) ] spids: [1637 1641 1692] ) ] spids: [1635 1695] ) spids: [1601 -1] ) ] spids: [1519 1520 1698 -1] ) ] spids: [1507 1511 1700] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:exp) op:Equal rhs:{(SQ )} spids:[1702])] spids: [1702] ) (If arms: [ (if_arm cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name "$version"))})] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-d)} {($ VSub_Name "$dir") (/3d)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Name "$dir") (/3d)} spids: [1728] ) ] spids: [1728] ) ] spids: [-1 1726] ) ] spids: [-1 1733] ) (Case to_match: {(Lit_Other ":") ($ VSub_Name "$FPATH") (Lit_Other ":")} arms: [ (case_arm pat_list: [ {(Lit_Other "*") (Lit_Other ":") ($ VSub_Name "$dir") (/fun) (Lit_Other ":") (Lit_Other "*") } ] spids: [1745 1751 1753 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(export)} {(Lit_VarLike "FPATH=") ($ VSub_Name "$dir") (/fun) (BracedVarSub token: <VSub_Name FPATH> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(":") ($ VSub_Name "$FPATH")} ) spids: [1764 1769] ) } ) ] spids: [1756 1757 1771 -1] ) ] spids: [1736 1742 1774] ) (Case to_match: {(Lit_Other ":") ($ VSub_Name "$PATH") (Lit_Other ":")} arms: [ (case_arm pat_list: [ {(Lit_Other "*") (Lit_Other ":") ($ VSub_Name "$dir") (/bin) (Lit_Other ":") (Lit_Other "*") } ] spids: [1786 1792 1794 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(export)} {(Lit_VarLike "PATH=") ($ VSub_Name "$dir") (/bin) (Lit_Other ":") ($ VSub_Name "$PATH") } ) ] spids: [1797 1798 1808 -1] ) ] spids: [1777 1783 1811] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: {(DQ ($ VSub_Name "$exp") (" LD_PRELOAD=") ($ VSub_Name "$version"))} spids: [1814] ) ] spids: [1814] ) (Case to_match: {($ VSub_Name "$abi") (Lit_Other ":") (-) (Lit_Other ":") ($ VSub_Name "$version")} arms: [ (case_arm pat_list: [ {(Lit_Other "?") (Lit_Other "*") (Lit_Other ":") (-) (Lit_Other ":") ($ VSub_Name "$dir") (/) (Lit_Other "*") } ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:v) op: Equal rhs: { (BracedVarSub token: <VSub_Name version> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {($ VSub_Name "$dir") (Lit_Slash /)} ) spids: [1845 1850] ) } spids: [1844] ) ] spids: [1844] ) (ForEach iter_name: a iter_words: [{($ VSub_Name "$abi")}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:d) op: Equal rhs: { (BracedVarSub token: <VSub_Name a> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(":*")}) spids: [1865 1869] ) } spids: [1864] ) ] spids: [1864] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:a) op: Equal rhs: { (BracedVarSub token: <VSub_Name a> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [1873 1877] ) } spids: [1872] ) ] spids: [1872] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: { (DQ ($ VSub_Name "$exp") (" _RLD") (${ VSub_Name a) ("_LIST=") ($ VSub_Name "$d") (/) ($ VSub_Name "$v") (":DEFAULT") ) } spids: [1880] ) ] spids: [1880] ) ] spids: [1862 1895] ) spids: [1858 -1] ) ] spids: [1833 1841 1898 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:v) op: Equal rhs: { (BracedVarSub token: <VSub_Name version> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(".*")}) spids: [1905 1909] ) } spids: [1904] ) ] spids: [1904] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:s) op: Equal rhs: { (BracedVarSub token: <VSub_Name version> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*.")}) spids: [1913 1917] ) } spids: [1912] ) ] spids: [1912] ) (If arms: [ (if_arm cond: [(C {(test)} {(-f)} {(${ VSub_Name v) (-n32.) ($ VSub_Name "$s")})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: { (DQ ($ VSub_Name "$exp") (" _RLD64_LIST=") ($ VSub_Name "$version") (":DEFAULT _RLDN32_LIST=") ($ VSub_Name "$version") (-n32.) ($ VSub_Name "$s") (":DEFAULT _RLD_LIST=") (${ VSub_Name v) (-o32.) ($ VSub_Name "$s") (":DEFAULT") ) } spids: [1935] ) ] spids: [1935] ) ] spids: [-1 1933] ) (if_arm cond: [ (C {(test)} {(-f)} {(${ VSub_Name v) (-64.) ($ VSub_Name "$s")} {(-o)} {(-f)} {(${ VSub_Name v) (-o32.) ($ VSub_Name "$s")} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: { (DQ ($ VSub_Name "$exp") (" _RLD64_LIST=") ($ VSub_Name "$version") (-64.) ($ VSub_Name "$s") (":DEFAULT _RLDN32_LIST=") ($ VSub_Name "$version") (":DEFAULT _RLD_LIST=") (${ VSub_Name v) (-o32.) ($ VSub_Name "$s") (":DEFAULT") ) } spids: [1979] ) ] spids: [1979] ) ] spids: [1954 1977] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: { (DQ ($ VSub_Name "$exp") (" _RLD_LIST=") ($ VSub_Name "$version") (":DEFAULT") ) } spids: [2000] ) ] spids: [2000] ) ] spids: [1998 2009] ) (If arms: [ (if_arm cond: [ (C {(test)} {(-f)} {(${ VSub_Name dir) (/lib/libdir64.) ($ VSub_Name "$s")}) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exp) op: Equal rhs: { (DQ ($ VSub_Name "$exp") (":") (${ VSub_Name dir) (/lib/libdir64.) ($ VSub_Name "$s") ) } spids: [2027] ) ] spids: [2027] ) ] spids: [-1 2025] ) ] spids: [-1 2039] ) ] spids: [1901 1902 2042 -1] ) ] spids: [1822 1830 2045] ) (C {(export)} {($ VSub_Name "$exp")}) (Case to_match: {($ VSub_Name "$mount")} arms: [ (case_arm pat_list: [{(Lit_Other "?") (Lit_Other "?") (Lit_Other "*")}] action: [ (C {(export)} {(Lit_VarLike "__=") (BracedVarSub token: <VSub_Name mount> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(SQ <" ">)}) spids: [2068 2074] ) } ) ] spids: [2060 2063 2076 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(unset)} {(__)})] spids: [2079 2080 2086 -1] ) ] spids: [2053 2057 2089] ) (C {(unset)} {(VPATH)}) ] spids: [-1 1714] ) ] else_action: [ (C {(print)} {(-u2)} {(DQ ($ VSub_Name "$command") (": ") ($ VSub_Name "$version") (": no shared library"))} ) (Case to_match: {($ VSub_Name "$default")} arms: [ (case_arm pat_list:[{(DQ ("*"))}] spids:[211821202122-1]) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(exit)} {(1)})] spids: [2125 2126 2132 -1] ) ] spids: [2110 2114 2135] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:version) op:Equal rhs:{(SQ )} spids:[2138])] spids: [2138] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:options) op:Equal rhs:{(SQ )} spids:[2141])] spids: [2141] ) ] spids: [2096 2143] ) (Case to_match: {($ VSub_Name "$SHELL")} arms: [ (case_arm pat_list: [{(DQ )}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:t) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {(ksh)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2161] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [2156 2163] ) } spids: [2155] ) ] spids: [2155] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SHELL) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {(-p)} {($ VSub_Name "$t")}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2180] ) ] more_env: [ (env_pair name: PATH val: {($ VSub_Name "$dir") (/bin) (Lit_Other ":") ($ VSub_Name "$PATH") } spids: [2168] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [2167 2182] ) } spids: [2166] ) ] spids: [2166] ) ] spids: [-1 2153 2185 -1] ) ] spids: [2145 2149 2187] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SHELL) op: Equal rhs: { (BracedVarSub token: <VSub_Name SHELL> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{($ VSub_Name "$shell")}) spids: [2190 2194] ) } spids: [2189] ) ] spids: [2189] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SHELL) op: Equal rhs: { (BracedVarSub token: <VSub_Name SHELL> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (bin) (Lit_Slash /) (sh)} ) spids: [2197 2204] ) } spids: [2196] ) ] spids: [2196] ) (C {(export)} {(SHELL)}) (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(vpath)} {(/) (Lit_Pound "#") (option/3d)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2219])] ) ] ) left_token: <Left_Backtick "`"> spids: [2212 2221] ) } arms: [ (case_arm pat_list: [{(Lit_Other "*") (/2d)}] action: [(C {($ VSub_Name "$show")} {(vpath)} {($ VSub_Name "$mount")})] spids: [2225 2227 2235 -1] ) ] spids: [2210 2223 2237] ) (Case to_match: {($ VSub_Number "$1") (Lit_Other ":") ($ VSub_Pound "$#") (Lit_Other ":") ($ VSub_Name "$options") } arms: [ (case_arm pat_list:[{(-) (Lit_Other "*")}] spids:[224922512253-1]) (case_arm pat_list: [ {(Lit_Other "*") (Lit_Other ":") (0) (Lit_Other ":") (Lit_Other "*")} {(Lit_Other "*") (Lit_Other ":") (Lit_Other "*") (Lit_Other ":") (Lit_Other "?") (Lit_Other "*") } ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shell) op: Equal rhs: {(DQ ($ VSub_Name "$SHELL") (" ") ($ VSub_Name "$options"))} spids: [2270] ) ] spids: [2270] ) ] spids: [2255 2267 2278 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:t) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {($ VSub_Number "$1")}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2289] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [2284 2291] ) } spids: [2283] ) ] spids: [2283] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:t) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(whence)} {(-p)} {($ VSub_Name "$t")}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2302] ) ] ) ] ) left_token: <Left_Backtick "`"> spids: [2295 2304] ) } spids: [2294] ) ] spids: [2294] ) (Case to_match: {($ VSub_Name "$t")} arms: [ (case_arm pat_list: [{(DQ )} {(DQ ("''"))} {(SQ <"\"\"">)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shell) op: Equal rhs: {(DQ ($ VSub_Name "$SHELL") (" ") ($ VSub_Name "$options"))} spids: [2326] ) ] spids: [2326] ) ] spids: [-1 2324 2333 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shell) op: Equal rhs: {(SQ )} spids: [2339] ) ] spids: [2339] ) ] spids: [2336 2337 2341 -1] ) ] spids: [2307 2311 2344] ) ] spids: [2280 2281 2347 -1] ) ] spids: [2239 2247 2349] ) (Case to_match: {($ VSub_Name "$show")} arms: [ (case_arm pat_list: [{(DQ )}] action: [(C {(exec)} {($ VSub_Name "$shell")} {(DQ ($ VSub_At "$@"))})] spids: [-1 2359 2369 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Case to_match: {($ VSub_Name "$version")} arms: [ (case_arm pat_list: [{(DQ )}] action: [ (C {($ VSub_Name "$show")} {(Lit_VarLike "__=") (DQ ("'") ($ VSub_Name "$__") ("'"))} {(exec)} {($ VSub_Name "$shell")} {(DQ ($ VSub_At "$@"))} ) ] spids: [-1 2383 2402 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {($ VSub_Name "$show")} {(Lit_VarLike "__=") (DQ ("'") ($ VSub_Name "$__") ("'"))} {($ VSub_Name "$exp")} {(exec)} {($ VSub_Name "$shell")} {(DQ ($ VSub_At "$@"))} ) ] spids: [2405 2406 2427 -1] ) ] spids: [2374 2378 2430] ) ] spids: [2371 2372 2433 -1] ) ] spids: [2351 2355 2435] ) ] )