(command.CommandList children: [ (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions.sh'>}) (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-parse.sh'>}) (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-ftp.sh'>}) (command.Sentence child: (command.ShFunction name: get_package_index_by_ftp body: (BraceGroup children: [ (C {<local>} {<INDEX_FILE>}) (C {<local>} {<FTP_SERVER>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_SERVER) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [124] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ <INDEX>)} spids: [132] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USE_BZIP2) op: assign_op.Equal rhs: {<0>} spids: [138] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <'/usr/bin/bzip2'>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name INDEX_FILE) <.bz2>)} spids: [159] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USE_BZIP2) op: assign_op.Equal rhs: {<1>} spids: [168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_PATH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name INDEXFILE) <.bz2>)} spids: [172] ) ] ) ] spids: [143 156] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_PATH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name INDEXFILE))} spids: [184] ) ] ) ] ) (C {<fetch_file>} {(DQ (${ Id.VSub_Name FTP_SERVER) <'/'> (${ Id.VSub_Name INDEX_FILE))} {(DQ (${ Id.VSub_Name INDEX_PATH))} {(DQ <1>)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ (${ Id.VSub_Name INDEX_PATH))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name USE_BZIP2))} {<-eq>} {(DQ <1>)} {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [(C {<bzip2>} {<-d>} {(DQ (${ Id.VSub_Name INDEX_PATH))})] spids: [219 252] ) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_index_by_fs body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INSTALLMEDIUM'))} {<Id.Lit_Equals '='>} {(DQ <local>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEXFILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name LOCALPATH) <'/packages/INDEX'>)} spids: [300] ) ] ) ] spids: [279 297] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEXFILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name CDMNT) <'/packages/INDEX'>)} spids: [312] ) ] ) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_index_size body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ (${ Id.VSub_Name INDEXFILE))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SIZE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<ls>} {<-l>} {(${ Id.VSub_Name INDEXFILE)}) (C {<awk>} {(SQ <'{ print $5 }'>)}) ] negated: F ) ) } spids: [352] ) ] ) ] spids: [334 349] ) ] else_action: [ (C {<get_ftp_mirror>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPHOST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [380] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPDIR) op: assign_op.Equal rhs: { (DQ <'/pub/FreeBSD/releases/'> (${ Id.VSub_Name FBSD_ARCH) <'/'> (${ Id.VSub_Name FBSD_BRANCH) ) } spids: [389] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPPATH) op: assign_op.Equal rhs: { (DQ <'ftp://'> (${ Id.VSub_Name FTPHOST) (${ Id.VSub_Name FTPDIR) <'/packages'> ) } spids: [402] ) ] ) (C {<fetch>} {<-s>} {(DQ (${ Id.VSub_Name FTPPATH) <'/INDEX.bz2'>)}) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_index body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<0>} spids: [441] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name INSTALLMODE))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<get_ftp_mirror>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPHOST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [467] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPDIR) op: assign_op.Equal rhs: { (DQ <'/pub/FreeBSD/releases/'> (${ Id.VSub_Name FBSD_ARCH) <'/'> (${ Id.VSub_Name FBSD_BRANCH) ) } spids: [476] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPPATH) op: assign_op.Equal rhs: { (DQ <'ftp://'> (${ Id.VSub_Name FTPHOST) (${ Id.VSub_Name FTPDIR) <'/packages'> ) } spids: [489] ) ] ) (C {<get_package_index_by_ftp>} {(DQ (${ Id.VSub_Name FTPPATH))}) ] spids: [446 461] ) ] else_action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} arms: [ (case_arm pat_list: [{<usb>} {<dvd>} {<local>}] action: [(C {<get_package_index_by_fs>})] spids: [528 533 537 -1] ) (case_arm pat_list: [{<ftp>}] action: [ (C {<get_value_from_cfg>} {<ftpHost>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<exit_err>} { (DQ < 'ERROR: Install medium was set to ftp, but no ftpHost was provided!' > ) } ) ] spids: [548 561] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPHOST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [575] ) ] ) (C {<get_value_from_cfg>} {<ftpDir>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<exit_err>} { (DQ < 'ERROR: Install medium was set to ftp, but no ftpDir was provided!' > ) } ) ] spids: [589 602] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [616] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPPATH) op: assign_op.Equal rhs: { (DQ <'ftp://'> (${ Id.VSub_Name FTPHOST) (${ Id.VSub_Name FTPDIR)) } spids: [624] ) ] ) (C {<get_package_index_by_ftp>} {(DQ (${ Id.VSub_Name FTPPATH))}) ] spids: [540 541 644 -1] ) (case_arm pat_list:[{<sftp>}] spids:[647 648 650 -1]) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<1>} spids: [656] ) ] ) ] spids: [653 654 659 -1] ) ] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name RES)} ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: parse_package_index body: (BraceGroup children: [ (C {<echo_log>} {(DQ <'Building package dep list.. Please wait..'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX'>)} spids: [694] ) ] ) (command.Simple words: [{<exec>}] redirects: [(redir op:<Id.Redir_LessAnd '3<&'> loc:(redir_loc.Fd fd:3) arg:{<0>})] do_fork: T ) (command.Simple words: [{<exec>}] redirects: [ (redir op: <Id.Redir_Less '0<'> loc: (redir_loc.Fd fd:0) arg: {(DQ (${ Id.VSub_Name INDEXFILE))} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGNAME) op: assign_op.Equal rhs: {(DQ )} spids: [733] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: {(DQ )} spids: [738] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ )} spids: [743] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DESC) op: assign_op.Equal rhs: {(DQ )} spids: [748] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEPS) op: assign_op.Equal rhs: {(DQ )} spids: [753] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {<0>} spids: [758] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVE_IFS) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IFS))} spids: [763] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <'|'>)} spids: [771] ) ] ) (command.ForEach iter_name: part iter_words: [{(${ Id.VSub_Name line)}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name i)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGNAME) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name part))} spids: [810] ) ] ) ] spids: [792 807] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name i)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {(DQ (${ Id.VSub_Name part))}) ) } spids: [837] ) ] ) ] spids: [819 834] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name i)} {<-eq>} {<3>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DESC) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name part))} spids: [870] ) ] ) ] spids: [852 867] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name i)} {<-eq>} {<6>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name part))}) (C {<cut>} {<-f1>} {<-d> (SQ <' '>)}) ] negated: F ) ) } spids: [897] ) ] ) ] spids: [879 894] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name i)} {<-eq>} {<8>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEPS) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name part))} spids: [941] ) ] ) ] spids: [923 938] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 1>} ) ) } spids: [953] ) ] ) ] ) ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name CATEGORY) <'|'> (${ Id.VSub_Name PACKAGE) <'|'> (${ Id.VSub_Name DESC) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name INDEX_FILE) <.parsed>)} ) ] do_fork: T ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name PACKAGE) <'|'> (${ Id.VSub_Name PKGNAME) <'|'> (${ Id.VSub_Name DEPS) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name INDEX_FILE) <.deps>)} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name SAVE_IFS))} spids: [1019] ) ] ) ] ) ) (command.Simple words: [{<exec>}] redirects: [(redir op:<Id.Redir_LessAnd '0<&'> loc:(redir_loc.Fd fd:0) arg:{<3>})] do_fork: T ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: show_package_file body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGFILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1047] ) ] ) (C {<echo>} {(DQ <'Available Packages:'>)}) (command.Simple words: [{<exec>}] redirects: [(redir op:<Id.Redir_LessAnd '3<&'> loc:(redir_loc.Fd fd:3) arg:{<0>})] do_fork: T ) (command.Simple words: [{<exec>}] redirects: [ (redir op: <Id.Redir_Less '0<'> loc: (redir_loc.Fd fd:0) arg: {(DQ (${ Id.VSub_Name PKGFILE))} ) ] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name line))}) (C {<cut>} {<-f1>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [1093] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name line))}) (C {<cut>} {<-f2>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [1118] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DESC) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name line))}) (C {<cut>} {<-f3>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [1143] ) ] ) (C {<echo>} { (DQ (${ Id.VSub_Name CATEGORY) <'/'> (${ Id.VSub_Name PACKAGE) <':'> (${ Id.VSub_Name DESC) ) } ) ] ) ) (command.Simple words: [{<exec>}] redirects: [(redir op:<Id.Redir_LessAnd '0<&'> loc:(redir_loc.Fd fd:0) arg:{<3>})] do_fork: T ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: show_packages_by_category body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1206] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.parsed'>)} spids: [1214] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMPFILE) op: assign_op.Equal rhs: {(DQ <'/tmp/.pkg.cat'>)} spids: [1223] ) ] ) (command.Simple words: [ {<grep>} {(DQ <'^'> (${ Id.VSub_Name CATEGORY) <'|'>)} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name TMPFILE))} ) ] do_fork: T ) (C {<show_package_file>} {(DQ (${ Id.VSub_Name TMPFILE))}) (C {<rm>} {(DQ (${ Id.VSub_Name TMPFILE))}) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: show_package_by_name body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1283] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 2))} spids: [1291] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.parsed'>)} spids: [1299] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMPFILE) op: assign_op.Equal rhs: {(DQ <'/tmp/.pkg.cat.pak'>)} spids: [1308] ) ] ) (command.Simple words: [ {<grep>} {(DQ <'^'> (${ Id.VSub_Name CATEGORY) <'|'> (${ Id.VSub_Name PACKAGE))} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name TMPFILE))} ) ] do_fork: T ) (C {<show_package_file>} {(DQ (${ Id.VSub_Name TMPFILE))}) (C {<rm>} {(DQ (${ Id.VSub_Name TMPFILE))}) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: show_packages body: (BraceGroup children: [(C {<show_package_file>} {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.parsed'>)})] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_dependencies body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1391] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LONG) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<0>} ) ) ) } spids: [1399] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<0>} spids: [1409] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.deps'>)} spids: [1414] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REGEX) op: assign_op.Equal rhs: {(DQ <'^'> (${ Id.VSub_Name PACKAGE) <'|'>)} spids: [1423] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name LONG)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REGEX) op: assign_op.Equal rhs: {(DQ <'^.*|'> (${ Id.VSub_Name PACKAGE) <'|'>)} spids: [1452] ) ] ) ] spids: [1434 1449] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LINE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<grep>} {(DQ (${ Id.VSub_Name REGEX))} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1466] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEPS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name LINE))}) (C {<cut>} {<-f3>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [1489] ) ] ) (C {<export>} {<Id.Lit_VarLike 'VAL='> (DQ (${ Id.VSub_Name DEPS))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<1>} spids: [1542] ) ] ) ] spids: [1524 1539] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name RES)} ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_name body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1567] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<0>} spids: [1575] ) ] ) (C {<local>} {<PKGPTH>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ftp>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} arms: [ (case_arm pat_list: [{<usb>} {<dvd>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGPTH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name CDMNT) <'/packages'>)} spids: [1629] ) ] ) ] spids: [1624 1627 1637 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGPTH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name LOCALPATH) <'/packages'>)} spids: [1644] ) ] ) ] spids: [1641 1642 1652 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ (${ Id.VSub_Name PKGPTH) <'/Latest/'> (${ Id.VSub_Name PACKAGE) <.> (${ Id.VSub_Name PKGEXT) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<ls>} {<-al>} {(${ Id.VSub_Name PKGPTH) <'/Latest/'> (${ Id.VSub_Name PACKAGE) <.> (${ Id.VSub_Name PKGEXT) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<cut>} {<-d>} {(SQ <'>'>)} {<-f>} {<2>}) (C {<rev>}) (C {<cut>} {<-f1>} {<-d> (SQ <'/'>)}) (C {<rev>}) (C {<tr>} {<-s>} {(SQ <' '>)}) ] negated: F ) ) } spids: [1691] ) ] ) ] spids: [1664 1688] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<ls>} {<-al>} {(${ Id.VSub_Name PKGPTH) <'/All/'> (${ Id.VSub_Name PACKAGE) <.> (${ Id.VSub_Name PKGEXT) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<cut>} {<-d>} {(SQ <'>'>)} {<-f>} {<2>}) (C {<rev>}) (C {<cut>} {<-f1>} {<-d> (SQ <'/'>)}) (C {<rev>}) (C {<tr>} {<-s>} {(SQ <' '>)}) ] negated: F ) ) } spids: [1762] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'VAL='> (DQ (${ Id.VSub_Name NAME))}) ] spids: [1589 1610] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.deps'>)} spids: [1854] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REGEX) op: assign_op.Equal rhs: {(DQ <'^'> (${ Id.VSub_Name PACKAGE) <'|'>)} spids: [1863] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LINE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<grep>} {(DQ (${ Id.VSub_Name REGEX))} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1875] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name LINE))}) (C {<cut>} {<-f2>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [1898] ) ] ) (C {<export>} {<Id.Lit_VarLike 'VAL='> (DQ (${ Id.VSub_Name NAME))}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<1>} spids: [1954] ) ] ) ] spids: [1936 1951] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name RES)} ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_short_name body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [1978] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<0>} spids: [1986] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.deps'>)} spids: [1991] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REGEX) op: assign_op.Equal rhs: {(DQ <'^.*|'> (${ Id.VSub_Name PACKAGE) <'|'>)} spids: [2000] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LINE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<grep>} {(DQ (${ Id.VSub_Name REGEX))} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [2012] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name LINE))}) (C {<cut>} {<-f1>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [2035] ) ] ) (C {<export>} {<Id.Lit_VarLike 'VAL='> (DQ (${ Id.VSub_Name NAME))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<1>} spids: [2088] ) ] ) ] spids: [2070 2085] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name RES)} ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: get_package_category body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [2113] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INDEX_FILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGDIR) <'/INDEX.parsed'>)} spids: [2121] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<0>} spids: [2130] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LINE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<grep>} {(DQ <'|'> (${ Id.VSub_Name PACKAGE) <'|'>)} {(DQ (${ Id.VSub_Name INDEX_FILE))} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [2135] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name LINE))}) (C {<cut>} {<-f1>} {<-d> (SQ <'|'>)}) ] negated: F ) ) } spids: [2160] ) ] ) (C {<export>} {<Id.Lit_VarLike 'VAL='> (DQ (${ Id.VSub_Name NAME))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RES) op: assign_op.Equal rhs: {<1>} spids: [2213] ) ] ) ] spids: [2195 2210] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name RES)} ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: fetch_package_by_ftp body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [2238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 2))} spids: [2246] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVEDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 3))} spids: [2254] ) ] ) (C {<get_value_from_cfg>} {<ftpHost>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<exit_err>} { (DQ <'ERROR: Install medium was set to ftp, but no ftpHost was provided!'> ) } ) ] spids: [2268 2281] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPHOST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [2295] ) ] ) (C {<get_value_from_cfg>} {<ftpDir>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<exit_err>} {(DQ <'ERROR: Install medium was set to ftp, but no ftpDir was provided!'>)} ) ] spids: [2309 2322] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTPDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VAL))} spids: [2336] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PACKAGE) <.> (${ Id.VSub_Name PKGEXT))} spids: [2345] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_SERVER) op: assign_op.Equal rhs: {(DQ <'ftp://'> (${ Id.VSub_Name FTPHOST) (${ Id.VSub_Name FTPDIR))} spids: [2357] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ (${ Id.VSub_Name SAVEDIR) <'/'> (${ Id.VSub_Name PACKAGE))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGPATH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name CATEGORY) <'/'> (${ Id.VSub_Name PACKAGE))} spids: [2394] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_PATH) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name FTP_HOST) <'/packages/'> (${ Id.VSub_Name PKGPATH) ) } spids: [2406] ) ] ) (C {<fetch_file>} {(DQ (${ Id.VSub_Name FTP_PATH))} {(DQ (${ Id.VSub_Name SAVEDIR) <'/'>)} {(DQ <0>)} ) ] spids: [2370 2391] ) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: fetch_package body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CATEGORY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [2451] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PACKAGE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 2))} spids: [2459] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAVEDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 3))} spids: [2467] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} arms: [ (case_arm pat_list: [{<usb>} {<dvd>} {<local>}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [2491 2496 2500 -1] ) (case_arm pat_list: [{<ftp>}] action: [ (C {<fetch_package_by_ftp>} {(DQ (${ Id.VSub_Name CATEGORY))} {(DQ (${ Id.VSub_Name PACKAGE))} {(DQ (${ Id.VSub_Name SAVEDIR))} ) ] spids: [2503 2504 2526 -1] ) (case_arm pat_list:[{<sftp>}] spids:[2529 2530 2532 -1]) ] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.ShFunction name: bootstrap_pkgng body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Simple words: [{<run_chroot_cmd>} {(DQ <'which pkg-static'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [2552 2567] ) ] ) (C {<local>} {<PKGPTH>}) (C {<echo_log>} {(DQ <'Bootstraping pkgng..'>)}) (C {<fetch_package>} {(DQ <Latest>)} {(DQ <pkg>)} {(DQ (${ Id.VSub_Name PKGDLDIR))}) (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} arms: [ (case_arm pat_list: [{<usb>} {<dvd>} {<local>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGPTH) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name PKGTMPDIR) <'/Latest/pkg.'> (${ Id.VSub_Name PKGEXT)) } spids: [2633] ) ] ) ] spids: [2626 2631 2644 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGPTH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name PKGTMPDIR) <'/pkg.'> (${ Id.VSub_Name PKGEXT))} spids: [2650] ) ] ) ] spids: [2647 2648 2661 -1] ) ] ) (command.Sentence child: (C {<rc_halt>} {(DQ <'pkg -c '> (${ Id.VSub_Name FSMNT) <' add '> (${ Id.VSub_Name PKGPTH))} ) terminator: <Id.Op_Semi _> ) (C {<run_chroot_cmd>} {(DQ <pkg2ng>)}) ] ) ) (command.ShFunction name: get_package_location body: (BraceGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} arms: [ (case_arm pat_list: [{<usb>} {<dvd>}] action: [ (C {<rc_halt>} { (DQ <'mount_nullfs '> (${ Id.VSub_Name CDMNT) <'/packages '> (${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PKGTMPDIR) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGDLDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PKGTMPDIR) <'/All'>)} spids: [2731] ) ] ) ] spids: [2709 2712 2742 -1] ) (case_arm pat_list: [{<local>}] action: [ (C {<rc_halt>} { (DQ <'mount_nullfs '> (${ Id.VSub_Name LOCALPATH) <'/packages '> (${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PKGTMPDIR) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGDLDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PKGTMPDIR) <'/All'>)} spids: [2765] ) ] ) ] spids: [2745 2746 2776 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PKGDLDIR) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name FSMNT) (${ Id.VSub_Name PKGTMPDIR))} spids: [2782] ) ] ) ] spids: [2779 2780 2792 -1] ) ] ) (C {<export>} {<PKGDLDIR>}) ] ) ) ] )