(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:append) op:Equal rhs:{(DQ (NO))} spids:[82])] spids: [82] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:delete) op:Equal rhs:{(DQ (NO))} spids:[87])] spids: [87] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:kenv) op:Equal rhs:{(EmptyPart)} spids:[92])] spids: [92] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:force) op:Equal rhs:{(DQ (NO))} spids:[94])] spids: [94] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nextboot_file) op: Equal rhs: {(DQ (/boot/nextboot.conf))} spids: [99] ) ] spids: [99] ) (FuncDef name: add_kenv body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:var) op:Equal spids:[114]) (assign_pair lhs:(LhsName name:value) op:Equal spids:[116]) ] spids: [112] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var) op: Equal rhs: {($ VSub_Number '$1')} spids: [120] ) ] spids: [120] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('*')} ) spids: [129 134] ) } spids: [128] ) ] spids: [128] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (BracedVarSub token: <VSub_Name value> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('*') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)} ) spids: [138 143] ) } spids: [137] ) ] spids: [137] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name kenv))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kenv) op: Equal rhs: {(DQ (${ VSub_Name kenv) ('\n'))} spids: [165] ) ] spids: [165] ) ] spids: [16777215 162] ) ] spids: [16777215 174] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kenv) op: Equal rhs: { (DQ (${ VSub_Name kenv) (${ VSub_Name var) ('=') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (${ VSub_Name value) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [177] ) ] spids: [177] ) ] spids: [109] ) spids: [105 108] ) (FuncDef name: display_usage body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 211 stdin_parts: [ ('Usage: nextboot [-af] [-e variable=value] [-k kernel] [-o options]\n') (' nextboot -D\n') ] ) ] ) ] spids: [200] ) spids: [196 199] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (C {(getopts)} {(DQ ('aDe:fk:o:'))} {(argument)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Case to_match: {(DQ (${ VSub_Name argument))} arms: [ (case_arm pat_list: [{(a)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:append) op: Equal rhs: {(DQ (YES))} spids: [245] ) ] spids: [245] ) ] spids: [241 242 251 16777215] ) (case_arm pat_list: [{(D)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:delete) op: Equal rhs: {(DQ (YES))} spids: [258] ) ] spids: [258] ) ] spids: [254 255 264 16777215] ) (case_arm pat_list: [{(e)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var) op: Equal rhs: { (BracedVarSub token: <VSub_Name OPTARG> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')}) spids: [272 276] ) } spids: [271] ) ] spids: [271] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (BracedVarSub token: <VSub_Name OPTARG> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*=')}) spids: [280 284] ) } spids: [279] ) ] spids: [279] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$var'))} {(-o)} {(-z)} {(DQ ($ VSub_Name '$value'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(display_usage)}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 308] ) ] spids: [16777215 319] ) (C {(add_kenv)} {(DQ ($ VSub_Name '$var'))} {(DQ ($ VSub_Name '$value'))}) ] spids: [267 268 333 16777215] ) (case_arm pat_list: [{(f)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:force) op: Equal rhs: {(DQ (YES))} spids: [340] ) ] spids: [340] ) ] spids: [336 337 346 16777215] ) (case_arm pat_list: [{(k)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kernel) op: Equal rhs: {(DQ (${ VSub_Name OPTARG))} spids: [353] ) ] spids: [353] ) (C {(add_kenv)} {(kernel)} {(DQ ($ VSub_Name '$kernel'))}) ] spids: [349 350 370 16777215] ) (case_arm pat_list: [{(o)}] action: [(C {(add_kenv)} {(kernel_options)} {(DQ (${ VSub_Name OPTARG))})] spids: [373 374 388 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(display_usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [391 392 403 16777215] ) ] spids: [230 238 406] ) ] spids: [227 408] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(${ VSub_Name delete)} {(Lit_Other '=')} {(DQ (YES))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(rm)} {(-f)} {(${ VSub_Name nextboot_file)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [16777215 428] ) ] spids: [16777215 444] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name kenv))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(display_usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] spids: [16777215 462] ) ] spids: [16777215 472] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name kernel))} {(-a)} {(${ VSub_Name force)} {(Lit_Other '=')} {(DQ (NO))} {(-a)} {(KW_Bang '!')} {(-d)} {(/boot/) (${ VSub_Name kernel)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Error: /boot/') (${ VSub_Name kernel) (" doesn't exist. Use -f to override."))} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 513] ) ] spids: [16777215 531] ) (Pipeline children: [ (SimpleCommand words: [{(df)} {(-Tn)} {(DQ (/boot/))}] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) (WhileUntil keyword: <KW_While while> cond: [(Sentence child:(C {(read)} {(_fs)} {(_type)} {(_other)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(DQ (zfs))} {(Lit_Other '=')} {(DQ (${ VSub_Name _type))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)}) (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 594 stdin_parts: [ ('WARNING: loader(8) has only R/O support for ZFS\n') ('nextboot.conf will NOT be reset in case of kernel boot failure\n') ] ) ] ) ] spids: [559 595] ) ) ] negated: F ) (C {(set)} {(-e)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nextboot_tmp) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(mktemp)} { (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(${ VSub_Name nextboot_file)})] ) left_token: <Left_CommandSub '$('> spids: [607 613] ) (/nextboot.XXXXXX) } ) ] ) left_token: <Left_CommandSub '$('> spids: [604 615] ) } spids: [603] ) ] spids: [603] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(${ VSub_Name append)} {(Lit_Other '=')} {(DQ (YES))} {(-a)} {(-f)} {(${ VSub_Name nextboot_file)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(cp)} {(-f)} {(${ VSub_Name nextboot_file)} {(${ VSub_Name nextboot_tmp)})] spids: [16777215 643] ) ] spids: [16777215 658] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(${ VSub_Name nextboot_tmp)}) (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 681 stdin_parts: [ ('nextboot_enable=') (Right_DoubleQuote '"') (YES) (Right_DoubleQuote '"') ('\n') ($ VSub_Name '$kenv') ('\n') ] ) ] ) (C {(fsync)} {(${ VSub_Name nextboot_tmp)}) (C {(mv)} {(${ VSub_Name nextboot_tmp)} {(${ VSub_Name nextboot_file)}) ] )