(CommandList children: [ (C {(Lit_Other ":")} {(cross)} {(compiler)} {(a.out)} {(execution)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(crossexec)} spids:[68])] spids: [68] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tmp) op: Equal rhs: {(/tmp/cross) ($ VSub_Dollar "$$")} spids: [72] ) ] spids: [72] ) (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (Subshell child: (CommandList children: [ (Sentence child: (C {(getopts)} {(SQ <"[-][123:xyz]">)} {(opt)} {(--xyz)}) terminator: <Op_Semi ";"> ) (C {(echo)} {(0) ($ VSub_Name "$opt")}) ] ) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[98])] spids: [80 96] ) ] ) left_token: <Left_Backtick "`"> spids: [79 100] ) } 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: [107] ) ] spids: [107] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USAGE) op: Equal rhs: { (SQ <"\n"> <"[-?\n"> <"@(#)$Id: crossexec (AT&T Labs Research) 2004-01-04 $\n"> <"]\n"> ) ($ VSub_Name "$USAGE_LICENSE") (SQ <"\n"> <"[+NAME?crossexec - cross compiler a.out execution]\n"> <"[+DESCRIPTION?"> <Lit_EscapedChar "\\b"> <crossexec> <Lit_EscapedChar "\\b"> <" runs a cross-compiled "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" in an environment\n"> <"\tthat supports a cross-compilation architecture different from the\n"> <"\tcurrent host. The cross environment is determined by "> <Lit_EscapedChar "\\a"> <crosstype> <Lit_EscapedChar "\\a"> <",\n"> <"\tusually a host type name produced by "> <Lit_EscapedChar "\\b"> <package> <Lit_EscapedChar "\\b"> <"(1). "> <Lit_EscapedChar "\\a"> <crosstype> <Lit_EscapedChar "\\a"> <"\n"> <"\tis used to find an entry in "> <Lit_EscapedChar "\\b"> <"$HOME/.crossexec"> <Lit_EscapedChar "\\b"> <" that specifies\n"> <"\tthe cross compiler host and access details.]\n"> <"[+?The exit status of "> <Lit_EscapedChar "\\b"> <crossexec> <Lit_EscapedChar "\\b"> <" is the exit status of "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <".]\n"> <"[+CROSS ENVIRONMENT FILE?"> <Lit_EscapedChar "\\b"> <"$HOME/.crossexec"> <Lit_EscapedChar "\\b"> <" contains one line for each\n"> <"\tsupported "> <Lit_EscapedChar "\\a"> <crosstype> <Lit_EscapedChar "\\a"> <". Each line contains 5 tab separated fields.\n"> <"\tField default values are specified as "> <Lit_EscapedChar "\\b"> <-> <Lit_EscapedChar "\\b"> <". The fields are:]{\n"> <"\t[+crosstype?The host type produced by "> <Lit_EscapedChar "\\b"> <package> <Lit_EscapedChar "\\b"> <"(1).]\n"> <"\t[+host?The host name.]\n"> <"\t[+user?The user name on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". The default is the current user.]\n"> <"\t[+dir?The directory to copy "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" and execute it. The default\n"> <"\t\tis the "> <Lit_EscapedChar "\\a"> <user> <Lit_EscapedChar "\\a"> <" "> <Lit_EscapedChar "\\b"> <"$HOME"> <Lit_EscapedChar "\\b"> <" on "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <".]\n"> <"\t[+shell?The command used to get shell access to "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". Currently\n"> <"\t\tonly "> <Lit_EscapedChar "\\b"> <rsh> <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <ssh> <Lit_EscapedChar "\\b"> <" are supported.]\n"> <"\t[+copy?The command used to copy "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" to "> <Lit_EscapedChar "\\a"> <host> <Lit_EscapedChar "\\a"> <". Currently\n"> <"\t\tonly "> <Lit_EscapedChar "\\b"> <rcp> <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <scp> <Lit_EscapedChar "\\b"> <" are supported.]\n"> <"}\n"> <"[n:show?Show the underlying commands but do not execute.]\n"> <"\n"> <"crosstype command [ option ... ] [ file ... ]\n"> <"\n"> <"[+SEE ALSO?"> <Lit_EscapedChar "\\b"> <rcp> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <rsh> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <scp> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <ssh> <Lit_EscapedChar "\\b"> <"(1)]\n"> ) } spids: [114] ) ] spids: [114] ) ] spids: [104 105 265 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ARGV0) op:Equal rhs:{(DQ )} spids:[270])] spids: [270] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:USAGE) op: Equal rhs: {(DQ ("crosstype command [ option ... ] [ file ... ]"))} spids: [275] ) ] spids: [275] ) ] spids: [267 268 281 -1] ) ] spids: [77 102 283] ) (FuncDef name: usage body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(0)} spids:[293])] spids: [293] ) (C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)} {(SQ <"-?">)}) (C {(exit)} {(2)}) ] spids: [290] ) spids: [286 289] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(SQ )} spids:[319])] spids: [319] ) (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: [{(n)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(echo)} spids:[350])] spids: [350] ) ] spids: [347 348 353 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(usage)})] spids: [356 357 361 -1] ) ] spids: [340 344 364] ) ] spids: [338 366] ) ) (C {(shift)} {($ VSub_Name "$OPTIND") (-1)}) (Case to_match: {($ VSub_Pound "$#")} arms: [ (case_arm pat_list: [{(Lit_Other "[") (01) (Lit_Other "]")}] action: [(C {(usage)})] spids: [379 382 386 -1] ) ] spids: [373 377 388] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:type) op:Equal rhs:{($ VSub_Number "$1")} spids:[391])] spids: [391] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:cmd) op:Equal rhs:{($ VSub_Number "$1")} spids:[396])] spids: [396] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:info) op: Equal rhs: {($ VSub_Name "$HOME") (/.) ($ VSub_Name "$command")} spids: [406] ) ] spids: [406] ) (If arms: [ (if_arm cond: [(C {(test)} {(KW_Bang "!")} {(-r)} {($ VSub_Name "$info")})] action: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name "$command") (": ") ($ VSub_Name "$info") (": not found"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[432])] ) (C {(exit)} {(1)}) ] spids: [-1 421] ) ] spids: [-1 440] ) (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: [443 450] ) } spids: [442] ) ] spids: [442] ) (While cond: [(C {(Lit_Other ":")})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(SQ <"\t">)} spids:[458])] spids: [458] ) (C {(read)} {(hosttype)} {(hostname)} {(usr)} {(dir)} {(sh)} {(cp)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: {($ VSub_QMark "$?")} spids: [479] ) ] spids: [479] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {($ VSub_Name "$ifs")} spids: [483] ) ] spids: [483] ) (Case to_match: {($ VSub_Name "$code")} arms: [ (case_arm pat_list:[{(0)}] spids:[494495497-1]) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (SimpleCommand words: [ {(echo)} { (DQ ($ VSub_Name "$command") (": ") ($ VSub_Name "$type") (": unknown cross compiler host type") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[512])] ) (C {(exit)} {(1)}) ] spids: [500 501 521 -1] ) ] spids: [487 491 524] ) (Case to_match: {($ VSub_Name "$hosttype")} arms: [ (case_arm pat_list: [{($ VSub_Name "$type")}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [534 535 539 -1] ) ] spids: [527 531 542] ) ] spids: [456 544] ) redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{($ VSub_Name "$info")} spids:[546])] ) (Case to_match: {($ VSub_Name "$usr")} arms: [ (case_arm pat_list: [{(-)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs:(LhsName name:cpu) op:Equal rhs:{(SQ )} spids:[564]) (assign_pair lhs:(LhsName name:shu) op:Equal rhs:{(SQ )} spids:[566]) ] spids: [564] ) ] spids: [561 562 568 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cpu) op: Equal rhs: {(${ VSub_Name usr) (Lit_Other "@")} spids: [573] ) (assign_pair lhs: (LhsName name:shu) op: Equal rhs: {(DQ ("-l ") ($ VSub_Name "$usr"))} spids: [579] ) ] spids: [573] ) ] spids: [570 571 585 -1] ) ] spids: [555 559 587] ) (Case to_match: {($ VSub_Name "$dir")} arms: [ (case_arm pat_list: [{(-)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal rhs:{(SQ )} spids:[598])] spids: [598] ) ] spids: [595 596 600 -1] ) ] spids: [589 593 602] ) (Case to_match: {($ VSub_Name "$sh")} arms: [ (case_arm pat_list: [{(SQ )} {(-)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:sh) op:Equal rhs:{(ssh)} spids:[616])] spids: [616] ) ] spids: [-1 614 619 -1] ) ] spids: [604 608 621] ) (Case to_match: {($ VSub_Name "$cp")} arms: [ (case_arm pat_list: [{(SQ )} {(-)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:cp) op:Equal rhs:{(scp)} spids:[635])] spids: [635] ) ] spids: [-1 633 638 -1] ) (case_arm pat_list: [{(scp)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cp) op: Equal rhs: {(DQ ($ VSub_Name "$cp") (" -q"))} spids: [643] ) ] spids: [643] ) ] spids: [640 641 649 -1] ) ] spids: [623 627 651] ) (C {(trap)} {(DQ ("rm -f ") ($ VSub_Name "$tmp"))} {(0)} {(1)} {(2)} {(3)} {(15)}) (AndOr children: [ (SimpleCommand words: [ {($ VSub_Name "$exec")} {($ VSub_Name "$cp")} {($ VSub_Name "$cmd")} {($ VSub_Name "$cpu") ($ VSub_Name "$hostname") (Lit_Other ":") ($ VSub_Name "$dir")} ] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[682])] ) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: {(./) (BracedVarSub token: <VSub_Name cmd> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)}) spids: [693 698] ) } spids: [691] ) ] spids: [691] ) (SimpleCommand words: [ {($ VSub_Name "$exec")} {($ VSub_Name "$sh")} {($ VSub_Name "$shu")} {($ VSub_Name "$hostname")} { (DQ ("cd ") ($ VSub_Name "$dir") ("; LD_LIBRARY_PATH=: ") ($ VSub_Name "$cmd") (" ") ($ VSub_At "$@") (" </dev/null 2>/dev/null; code=") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("?; rm -f ") ($ VSub_Name "$cmd") ("; echo ") ($ VSub_Name "$command") (": exit ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("code >&2") ) } ] redirects: [ (Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[726]) (Redir op_id:Redir_Great fd:2 arg_word:{($ VSub_Name "$tmp")} spids:[729]) ] ) (C {(exit)} { (CommandSubPart command_list: (CommandList children: [ (C {(sed)} {(-e)} {(SQ <"/^">) ($ VSub_Name "$command") (SQ <": exit [0-9][0-9]*$/!d">)} {(-e)} {(SQ <"s/.* //">)} {($ VSub_Name "$tmp")} ) ] ) left_token: <Left_Backtick "`"> spids: [734 754] ) } ) ] )