(CommandList children: [ (If arms: [ (if_arm cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(1)} {(Lit_Other ']')})] action: [ (SimpleCommand words: [{(echo)} {(DQ ('usage: ') ($ VSub_Number '$0') (' CONTROL_IMAGE'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[45])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 34] ) ] spids: [16777215 53] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Filesystem image ') ($ VSub_Number '$1') (' missing'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[81])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 70] ) ] spids: [16777215 89] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HDCFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(readlink)} {(-f)} {($ VSub_Number '$1')})] ) left_token: <Left_CommandSub '$('> spids: [93 99] ) ) } spids: [91] ) ] spids: [91] ) (C {(INCLUDE)} {(unique-port.sh)}) (If arms: [ (if_arm cond: [(C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FTP_SERVER'))} {(Lit_Other ']')})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FTP_SERVER) op: Equal rhs: {(127.0.0.1)} spids: [127] ) ] spids: [127] ) ] spids: [16777215 124] ) (if_arm cond: [(C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FTP_PORT'))} {(Lit_Other ']')})] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FTP_PORT) op:Equal rhs:{(21)} spids:[145])] spids: [145] ) ] spids: [130 142] ) ] spids: [16777215 148] ) (If arms: [ (if_arm cond: [(C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$FTP_PORT'))} {(Lit_Other ']')})] action: [ (If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {(-z)} { (DQ (CommandSubPart command_list: (CommandList children:[(C {(which)} {(toybox)})]) left_token: <Left_CommandSub '$('> spids: [173 177] ) ) } {(Lit_Other ']')} ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Warning: can't find toybox, no ftp daemon launched."))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[192])] ) ] spids: [16777215 183] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FTP_PORT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(unique_port)})]) left_token: <Left_CommandSub '$('> spids: [200 202] ) } spids: [199] ) ] spids: [199] ) (C {(echo)} {(Lit_Other '=') (Lit_Other '=') (Lit_Other '=')} {(launching)} {(FTP)} {(daemon)} {(on)} {(port)} {(DQ ($ VSub_Name '$FTP_PORT'))} ) (C {(mkdir)} {(-p)} {(upload)}) (Sentence child: (C {(toybox)} {(nc)} {(-s)} {(127.0.0.1)} {(-p)} {($ VSub_Name '$FTP_PORT')} {(-L)} {(busybox)} {(ftpd)} {(-w)} {(upload)} ) terminator: <Op_Amp '&'> ) (C {(trap)} { (DQ ('kill ') (CommandSubPart command_list: (CommandList children:[(C {(jobs)} {(-p)})]) left_token: <Left_CommandSub '$('> spids: [277 281] ) ) } {(EXIT)} ) (C {(disown)} { (CommandSubPart command_list: (CommandList children:[(C {(jobs)} {(-p)})]) left_token: <Left_CommandSub '$('> spids: [289 293] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FTP_SERVER) op: Equal rhs: {(10.0.2.2)} spids: [302] ) ] spids: [302] ) ] spids: [196 306] ) ] spids: [16777215 163] ) ] spids: [16777215 308] ) (C {(export)} {(Lit_VarLike 'HDC=') (DQ ($ VSub_Name '$HDCFILE'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NATIVE_BUILD) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$HDCFILE'))}) (C {(sed)} {(-e)} {(SQ <'s@.*/@@'>)} {(-e)} {(SQ <'s@[.]hdc$@@'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [327 349] ) ) } spids: [325] ) ] spids: [325] ) (C {(export)} {(Lit_VarLike 'KERNEL_EXTRA=') (DQ ('FTP_SERVER=') ($ VSub_Name '$FTP_SERVER') (' FTP_PORT=') ($ VSub_Name '$FTP_PORT') (' NATIVE_BUILD=') ($ VSub_Name '$NATIVE_BUILD') (' ') ($ VSub_Name '$KERNEL_EXTRA') ) } ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$HDB'))} {(Lit_Other ']')}) (C {(rm)} {(-f)} {(hdb.img)}) ] ) (C {(./dev-environment.sh)}) (C {(echo)} {(Lit_Other '=') (Lit_Other '=') (Lit_Other '=')} {(End)} {(native)} {(build)}) ] )