(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<3>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ <'Usage: '> ($ Id.VSub_Number '$0') <' [-b] image-label image-name base-bits-dir [extra-bits-dir]'> ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/stderr'>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [72 85] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{<-b>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOPT) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [119] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] spids: [116 117 127 -1] ) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LABEL) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<tr>} {(SQ <'[:lower:]'>)} {(SQ <'[:upper:]'>)}) ] negated: F ) ) } spids: [131] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [157] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASEBITSDIR) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [165] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:publisher) op: assign_op.Equal rhs: {(DQ <'The FreeBSD Project. http://www.FreeBSD.org/'>)} spids: [174] ) ] ) (command.Simple words: [{<echo>} {(DQ <'/dev/iso9660/'> ($ Id.VSub_DollarName '$LABEL') <' / cd9660 ro 0 0'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/etc/fstab'>)} ) ] do_fork: T ) (C {<makefs>} {<-t>} {<cd9660>} {<-o>} {<rockridge>} {<-o>} {<Id.Lit_VarLike 'label='> (DQ ($ Id.VSub_DollarName '$LABEL'))} {<-o>} {<Id.Lit_VarLike 'publisher='> (DQ ($ Id.VSub_DollarName '$publisher'))} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {(DQ ($ Id.VSub_At '$@'))} ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/etc/fstab'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <x> ($ Id.VSub_DollarName '$BOPT'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x-b>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {(DQ ($ Id.VSub_DollarName '$NAME'))}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [237 256] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMPIMGDIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<-d>} {<'/tmp/bootfs.XXXXXXXX'>}) ) } spids: [278] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOOTFSDIR) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR') <'/bootfs'>)} spids: [295] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOOTFSIMG) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR') <'/bootfs.img'>)} spids: [301] ) ] ) (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR') <'/boot'>)}) (C {<cp>} {<-p>} {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/boot/loader'>)} {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR') <'/boot'>)} ) (C {<makefs>} {<-t>} {<ffs>} {<-B>} {<be>} {<-M>} {<512k>} {(DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR'))} ) (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/boot/boot1'>)} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} {<Id.Lit_VarLike 'bs='> <512>} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>} ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub token: <Id.VSub_Name CYLSIZE> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonEquals ':='> arg_word:{<640>}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ISOSIZE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<stat>} {<-f>} {<Id.Lit_Other '%'> <z>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)}) ) } spids: [389] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ISOBLKS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$ISOSIZE')} right: {<Id.Lit_Digits 511>} ) right: {<Id.Lit_Digits 512>} ) ) } spids: [404] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ISOCYLS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$ISOBLKS')} right: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$CYLSIZE')} right: {<Id.Lit_Digits 1>} ) ) right: {($ Id.VSub_DollarName '$CYLSIZE')} ) ) } spids: [420] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOOTFSSIZE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<stat>} {<-f>} {<Id.Lit_Other '%'> <z>} {(DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))}) ) } spids: [443] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOOTFSBLKS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$BOOTFSSIZE')} right: {<Id.Lit_Digits 511>} ) right: {<Id.Lit_Digits 512>} ) ) } spids: [457] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BOOTFSCYLS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$BOOTFSBLKS')} right: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$CYLSIZE')} right: {<Id.Lit_Digits 1>} ) ) right: {($ Id.VSub_DollarName '$CYLSIZE')} ) ) } spids: [473] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENDCYL) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$ISOCYLS')} right: {($ Id.VSub_DollarName '$BOOTFSCYLS')} ) ) } spids: [496] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NSECTS) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$ENDCYL')} right: {<Id.Lit_Digits 1>} ) right: {($ Id.VSub_DollarName '$CYLSIZE')} ) ) } spids: [506] ) ] ) (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>} ) (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$ISOCYLS')} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>} ) (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$ENDCYL')} {<Id.Lit_VarLike 'count='> <2>} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>} ) (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MD) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mdconfig>} {<-a>} {<-t>} {<vnode>} {<-S>} {<512>} {<-y>} {<1>} {<-x>} {(DQ ($ Id.VSub_DollarName '$CYLSIZE'))} {<-f>} {(DQ ($ Id.VSub_DollarName '$NAME'))} ) ) } spids: [624] ) ] ) (C {<gpart>} {<create>} {<-s>} {<VTOC8>} {($ Id.VSub_DollarName '$MD')}) (C {<gpart>} {<add>} {<-i>} {<1>} {<-s>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$ISOCYLS')} right: {($ Id.VSub_DollarName '$CYLSIZE')} ) right: {<Id.Lit_Digits 512>} ) ) <b> ) } {<-t>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>) <4>} {($ Id.VSub_DollarName '$MD')} ) (C {<gpart>} {<add>} {<-i>} {<6>} {<-s>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName '$BOOTFSCYLS')} right: {($ Id.VSub_DollarName '$CYLSIZE')} ) right: {<Id.Lit_Digits 512>} ) ) <b> ) } {<-t>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>) <2>} {($ Id.VSub_DollarName '$MD')} ) (C {<mdconfig>} {<-d>} {<-u>} { (braced_var_sub token: <Id.VSub_Name MD> suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<md>}) ) } ) ] )