(List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "usage: "][VarSub 0][LIT_CHARS " CONTROL_IMAGE"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Filesystem image "][VarSub 1][LIT_CHARS " missing"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('HDCFILE', {[DQ [ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -f]} {[VarSub 1]})]]})]) (Com {[LIT_CHARS INCLUDE]} {[LIT_CHARS unique-port.sh]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FTP_SERVER]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('FTP_SERVER', {[LIT_CHARS 127.0.0.1]})]) (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FTP_PORT]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('FTP_PORT', {[LIT_CHARS 21]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub FTP_PORT]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS toybox]})]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Warning: can't find toybox, no ftp daemon launched."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('FTP_PORT', {[ComSub (Com {[LIT_CHARS unique_port]})]})]) (Com {[LIT_CHARS echo]} {[LIT_OTHER "="] [LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS launching]} {[LIT_CHARS FTP]} {[LIT_CHARS daemon]} {[LIT_CHARS on]} {[LIT_CHARS port]} {[DQ [VarSub FTP_PORT]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS upload]}) (Fork (Com {[LIT_CHARS toybox]} {[LIT_CHARS nc]} {[LIT_CHARS -s]} {[LIT_CHARS 127.0.0.1]} {[LIT_CHARS -p]} {[VarSub FTP_PORT]} {[LIT_CHARS -L]} {[LIT_CHARS busybox]} {[LIT_CHARS ftpd]} {[LIT_CHARS -w]} {[LIT_CHARS upload]}) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "kill "][ComSub (Com {[LIT_CHARS jobs]} {[LIT_CHARS -p]})]]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS disown]} {[ComSub (Com {[LIT_CHARS jobs]} {[LIT_CHARS -p]})]}) (= scope= flags=0 words=[] bindings=[('FTP_SERVER', {[LIT_CHARS 10.0.2.2]})]) ) ) ) (= scope= flags=1 words=[] bindings=[('HDC', {[DQ [VarSub HDCFILE]]})]) (= scope= flags=0 words=[] bindings=[('NATIVE_BUILD', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub HDCFILE]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]}) )]]})]) (= scope= flags=1 words=[] bindings=[('KERNEL_EXTRA', {[DQ [LIT_CHARS "FTP_SERVER="][VarSub FTP_SERVER][LIT_CHARS " FTP_PORT="][VarSub FTP_PORT][LIT_CHARS " NATIVE_BUILD="][VarSub NATIVE_BUILD][LIT_CHARS " "][VarSub KERNEL_EXTRA]]})]) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub HDB]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS hdb.img]}) ) (Com {[LIT_CHARS ./dev-environment.sh]}) (Com {[LIT_CHARS echo]} {[LIT_OTHER "="] [LIT_OTHER "="] [LIT_OTHER "="]} {[LIT_CHARS End]} {[LIT_CHARS native]} {[LIT_CHARS build]}) )