(command.CommandList children: [ (C {(.)} {(/etc/rc.subr)}) (C {(load_rc_config)} {(SQ (Token id:Id.Lit_Chars val:XXX span_id:85))}) (command.ShFunction name: usage body: (command.BraceGroup children: [ (C {(echo)} {(SQ )}) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'Usage:' span_id:106))}) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:114) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) (' -e') ) } ) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:127) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) (' -R') ) } ) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:140) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) (' [-v] -l | -r') ) } ) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:153) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) (' [-v] <rc.d script> start|stop|etc.') ) } ) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:0 span_id:166) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('*') (Id.Lit_Slash /)}) ) (' -h') ) } ) (C {(echo)} {(SQ )}) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'-e\tShow services that are enabled' span_id:184))} ) (C {(echo)} { (DQ ('-R\tStop and start enabled ') ($ Id.VSub_DollarName '$local_startup') (' services') ) } ) (C {(echo)} { (DQ ('-l\tList all scripts in /etc/rc.d and ') ($ Id.VSub_DollarName '$local_startup')) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '-r\tShow the results of boot time rcorder' span_id: 208 ) ) } ) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'-v\tVerbose' span_id:215))}) (C {(echo)} {(SQ )}) ] ) ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:227) cond: [ (command.Sentence child: (C {(getopts)} {(SQ (Token id:Id.Lit_Chars val:ehlrRv span_id:232))} {(COMMAND_LINE_ARGUMENT)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:237) ) ] body: (command.DoGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name COMMAND_LINE_ARGUMENT))} arms: [ (case_arm pat_list: [{(e)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ENABLED) op: assign_op.Equal rhs: {(eopt)} spids: [256] ) ] ) ] spids: [253 254 259 -1] ) (case_arm pat_list: [{(h)}] action: [ (command.Sentence child: (C {(usage)}) terminator: (Token id:Id.Op_Semi val:';' span_id:267) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:269) arg_word: {(0)} ) ] spids: [262 263 273 -1] ) (case_arm pat_list: [{(l)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIST) op: assign_op.Equal rhs: {(lopt)} spids: [279] ) ] ) ] spids: [276 277 282 -1] ) (case_arm pat_list: [{(r)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RCORDER) op: assign_op.Equal rhs: {(ropt)} spids: [288] ) ] ) ] spids: [285 286 291 -1] ) (case_arm pat_list: [{(R)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RESTART) op: assign_op.Equal rhs: {(Ropt)} spids: [297] ) ] ) ] spids: [294 295 300 -1] ) (case_arm pat_list: [{(v)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERBOSE) op: assign_op.Equal rhs: {(vopt)} spids: [306] ) ] ) ] spids: [303 304 309 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Sentence child: (C {(usage)}) terminator: (Token id:Id.Op_Semi val:';' span_id:317) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:319) arg_word: {(1)} ) ] spids: [312 313 323 -1] ) ] ) ] ) ) (C {(shift)} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$OPTIND')}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$RESTART'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:355) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip) op: assign_op.Equal rhs: {(DQ ('-s nostart'))} spids: [360] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:370) command_list: (command.CommandList children: [(C {(/sbin/sysctl)} {(-n)} {(security.jail.jailed)})] ) ) } {(-eq)} {(1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:385) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$skip') (' -s nojail'))} spids: [390] ) ] ) ] spids: [366 387] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$local_startup'))} {(Id.Lit_RBracket ']')} ) (C {(find_local_scripts_new)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:files) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:416) command_list: (command.CommandList children: [ (command.Simple words: [ {(rcorder)} {(${ Id.VSub_Name skip)} {(${ Id.VSub_Name local_rc)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:429) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [415] ) ] ) (command.ForEach iter_name: file iter_words: [ { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:441) command_list: (command.CommandList children: [(C {(reverse_list)} {(${ Id.VSub_Name files)})] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(grep)} {(-q)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:465) ) ] action: [ (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:472) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (Id.Lit_VarLike 'name=')} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:486) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$rcvar'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:509) ) ] action: [ (C {(load_rc_config_var)} {(${ Id.VSub_Name name)} {(${ Id.VSub_Name rcvar)} ) ] spids: [498 511] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(checkyesno)} {($ Id.VSub_DollarName '$rcvar')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:532) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(run_rc_script)} {(${ Id.VSub_Name file)} {(stop)}) ] ) ] spids: [455 467] ) ] ) ] ) ) (command.ForEach iter_name: file iter_words: [{($ Id.VSub_DollarName '$files')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(grep)} {(-q)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:574) ) ] action: [ (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:581) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (Id.Lit_VarLike 'name=')} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:595) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(checkyesno)} {($ Id.VSub_DollarName '$rcvar')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:611) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(run_rc_script)} {(${ Id.VSub_Name file)} {(start)}) ] ) ] spids: [564 576] ) ] ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:632) arg_word: {(0)} ) ] spids: [344 357] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$ENABLED'))} {(-o)} {(-n)} {(DQ ($ Id.VSub_DollarName '$RCORDER'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:658) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip) op: assign_op.Equal rhs: {(DQ ('-s nostart'))} spids: [667] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:677) command_list: (command.CommandList children: [(C {(/sbin/sysctl)} {(-n)} {(security.jail.jailed)})] ) ) } {(-eq)} {(1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:692) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$skip') (' -s nojail'))} spids: [697] ) ] ) ] spids: [673 694] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$local_startup'))} {(Id.Lit_RBracket ']')} ) (C {(find_local_scripts_new)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:files) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:723) command_list: (command.CommandList children: [ (command.Simple words: [ {(rcorder)} {(${ Id.VSub_Name skip)} {(/etc/rc.d/) (Id.Lit_Star '*')} {(${ Id.VSub_Name local_rc)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:739) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [722] ) ] ) ] spids: [639 660] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$ENABLED'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:757) ) ] action: [ (command.ForEach iter_name: file iter_words: [{($ Id.VSub_DollarName '$files')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(grep)} {(-q)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:784) ) ] action: [ (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:791) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (Id.Lit_VarLike 'name=')} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (C {(eval)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:805) command_list: (command.CommandList children: [ (C {(grep)} {(Id.Lit_Other '^') (rcvar)} {($ Id.VSub_DollarName '$file')} ) ] ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$rcvar'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:828) ) ] action: [ (C {(load_rc_config_var)} {(${ Id.VSub_Name name)} {(${ Id.VSub_Name rcvar)} ) ] spids: [817 830] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(checkyesno)} {($ Id.VSub_DollarName '$rcvar')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:851) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(echo)} {($ Id.VSub_DollarName '$file')}) ] ) ] spids: [774 786] ) ] ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:867) arg_word: {(0)} ) ] spids: [746 759] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$LIST'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:885) ) ] action: [ (command.ForEach iter_name: dir iter_words: [{(/etc/rc.d)} {($ Id.VSub_DollarName '$local_startup')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {(Id.Lit_RBracket ']')} ) (C {(echo)} {(DQ ('From ') (${ Id.VSub_Name dir) (':'))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-d)} {(${ Id.VSub_Name dir)} {(Id.Lit_RBracket ']')}) (C {(/bin/ls)} {(-1)} {(${ Id.VSub_Name dir)}) ] ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:951) arg_word: {(0)} ) ] spids: [874 887] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$RCORDER'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:969) ) ] action: [ (command.ForEach iter_name: file iter_words: [{($ Id.VSub_DollarName '$files')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(echo)} {($ Id.VSub_DollarName '$file')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1002) ) ] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$file'))} arms: [ (case_arm pat_list: [ {(Id.Lit_Star '*') (/) (${ Id.VSub_Name early_late_divider)} ] action: [ (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '========= Early/Late Divider =========' span_id: 1027 ) ) } ) ] spids: [1016 1021 1030 -1] ) ] ) ] spids: [991 1004] ) ] ) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1042) arg_word: {(0)} ) ] spids: [958 971] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(1)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1060) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:script) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1065] ) ] ) (C {(shift)}) ] spids: [1049 1062] ) ] else_action: [ (C {(usage)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1077) arg_word: {(1)} ) ] ) (C {(cd)} {(/)}) (command.ForEach iter_name: dir iter_words: [{(/etc/rc.d)} {($ Id.VSub_DollarName '$local_startup')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-x)} {(DQ ($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$script'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1115) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {(Id.Lit_RBracket ']')} ) (C {(echo)} { (DQ ($ Id.VSub_DollarName '$script') (' is located in ') ($ Id.VSub_DollarName '$dir') ) } ) ] ) (C {(exec)} {(env)} {(-i)} {(Id.Lit_VarLike 'HOME=') (/)} {(Id.Lit_VarLike 'PATH=') (/sbin) (Id.Lit_Other ':') (/bin) (Id.Lit_Other ':') (/usr/sbin) (Id.Lit_Other ':') (/usr/bin) } {($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$script')} {($ Id.VSub_Star '$*')} ) ] spids: [1102 1117] ) ] ) ] ) ) (C {(echo)} {(DQ ($ Id.VSub_DollarName '$script') (' does not exist in /etc/rc.d or the local startup'))} ) (C {(echo)} {(DQ ('directories (') (${ Id.VSub_Name local_startup) ('), or is not executable'))}) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:1191) arg_word:{(1)}) ] )