(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {<'/sbin'> <Id.Lit_Colon ':'> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> } spids: [43] ) ] redirects: [] ) (C {<export>} {<PATH>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scriptname='> name:scriptname) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 0))} spids: [70] ) ] redirects: [] ) (C {<umask>} {<022>}) (command.ShFunction name: on_exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} { (DQ <'error: \''> ($ Id.VSub_DollarName scriptname) <'\' exited outside the expected code flow.'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<trap>} {<on_exit>} {<EXIT>}) (C {<trap>} {(DQ <':'>)} {<INT>} {<QUIT>} {<TSTP>}) (command.Simple words: [{<stty>} {<onlcr>}] redirects: [(redir op:<Id.Redir_GreatAnd '0>&'> loc:(redir_loc.Fd fd:0) arg:{<1>})] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'runlevel='> name:runlevel) op: assign_op.Equal rhs: {($ Id.VSub_DollarName RUNLEVEL)} spids: [139] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'runlevel='> name:runlevel) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [161] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName runlevel))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'Usage: '> ($ Id.VSub_DollarName scriptname) <' <runlevel>'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [164 179] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'previous='> name:previous) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PREVLEVEL)} spids: [200] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName previous))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'previous='> name:previous) op: assign_op.Equal rhs: {<N>} spids: [218] ) ] redirects: [] ) ] ) (C {<export>} {<runlevel>} {<previous>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/default/rcS'>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<.>} {<'/etc/default/rcS'>})] spids: [229 241] ) ] else_action: [] redirects: [] ) (C {<export>} {<VERBOSE>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/lib/lsb/init-functions'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<.>} {<'/lib/lsb/init-functions'>})] spids: [255 267] ) ] else_action: [ (command.ShFunction name: log_action_msg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<echo>} {($ Id.VSub_At '@')}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: log_failure_msg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<echo>} {($ Id.VSub_At '@')}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: log_warning_msg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<echo>} {($ Id.VSub_At '@')}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {<none>} spids: [342] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {<'/etc/init.d/.depend.boot'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {(DQ <none>)} spids: [353] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {<'/etc/init.d/.depend.start'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {(DQ <none>)} spids: [366] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {<'/etc/init.d/.depend.stop'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {(DQ <none>)} spids: [379] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-e>} {<'/etc/init.d/.legacy-bootordering'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {(DQ <none>)} spids: [397] ) ] redirects: [] ) ] spids: [384 394] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<test>} {<-e>} {<'/proc/stat'>})] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<uname>}) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {(DQ <'GNU/kFreeBSD'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<mount>} {<-t>} {<linprocfs>} {<linprocfs>} {<'/proc'>})] spids: [422 442] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<uname>}) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {(DQ <GNU>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<mount>} {<-t>} {<Id.KW_Proc proc>} {<none>} {<'/proc'>})] spids: [456 476] ) ] else_action: [] redirects: [] ) ] spids: [404 415] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {<'/lib/startpar/startpar'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STARTPAR='> name:STARTPAR) op: assign_op.Equal rhs: {<'/lib/startpar/startpar'>} spids: [509] ) ] redirects: [] ) ] spids: [494 506] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STARTPAR='> name:STARTPAR) op: assign_op.Equal rhs: {<startpar>} spids: [515] ) ] redirects: [] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{($ Id.VSub_DollarName STARTPAR)} {<-v>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {(DQ <none>)} spids: [533] ) ] redirects: [] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName CONCURRENCY))} arms: [ (case_arm pat_list: [{<makefile>} {<startpar>} {<shell>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONCURRENCY='> name:CONCURRENCY) op: assign_op.Equal rhs: {<makefile>} spids: [568] ) ] redirects: [] ) (C {<log_action_msg>} { (DQ <'Using makefile-style concurrent boot in runlevel '> ($ Id.VSub_DollarName runlevel) ) } ) (command.ShFunction name: startup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<eval>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName STARTPAR)} {<-p>} {<4>} {<-t>} {<20>} {<-T>} {<3>} {<-M>} {($ Id.VSub_Number 1)} {<-P>} {($ Id.VSub_DollarName previous)} {<-R>} {($ Id.VSub_DollarName runlevel)} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName failed_service))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<log_failure_msg>} { (DQ <'startpar: service(s) returned failure: '> ($ Id.VSub_DollarName failed_service) ) } ) ] spids: [621 634] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName skipped_service_not_installed))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<log_warning_msg>} { (DQ <'startpar: service(s) skipped, program is not installed: '> ($ Id.VSub_DollarName skipped_service_not_installed) ) } ) ] spids: [649 662] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName skipped_service_not_configured))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<log_warning_msg>} { (DQ <'startpar: service(s) skipped, program is not configured: '> ($ Id.VSub_DollarName skipped_service_not_configured) ) } ) ] spids: [677 690] ) ] else_action: [] redirects: [] ) (C {<unset>} {<failed_service>} {<skipped_service_not_installed>} {<skipped_service_not_configured>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [557 562 717 -1] ) (case_arm pat_list: [{<none>} {<Id.Lit_Star '*'>}] action: [ (command.ShFunction name: startup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [733] ) ] redirects: [] ) (C {<shift>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scripts='> name:scripts) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '@'))} spids: [740] ) ] redirects: [] ) (command.ForEach iter_names: [script] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName scripts)}]) body: (command.DoGroup children: [ (C {($ Id.VSub_DollarName debug)} {(DQ ($ Id.VSub_DollarName script))} {($ Id.VSub_DollarName action)} ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [720 723 774 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-d>} {<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <.d>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName runlevel))} arms: [ (case_arm pat_list: [{<0>} {<6>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION) op: assign_op.Equal rhs: {<stop>} spids: [812] ) ] redirects: [] ) ] spids: [806 809 816 -1] ) (case_arm pat_list: [{<S>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION) op: assign_op.Equal rhs: {<start>} spids: [823] ) ] redirects: [] ) ] spids: [819 820 827 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION) op: assign_op.Equal rhs: {<start>} spids: [834] ) ] redirects: [] ) ] spids: [830 831 838 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<makefile>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CONCURRENCY))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ACTION))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName previous))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<N>} {<Id.Lit_RBracket ']'>} ) ] ) ] ) action: [(C {<startup>} {<stop>})] spids: [867 899] ) ] else_action: [] redirects: [] ) ] spids: [849 864] ) (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName previous))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<N>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CURLEVEL='> name:CURLEVEL) op: assign_op.Equal rhs: {(DQ )} spids: [933] ) ] redirects: [] ) (command.ForEach iter_names: [s] iterable: (for_iter.Words words: [ {<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <'.d/K'> <Id.Lit_Star '*'>} ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name s> var_name: s suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'> <etc> <Id.Lit_Slash '/'> <rc> ($ Id.VSub_DollarName runlevel) <.d> <Id.Lit_Slash '/'> <K> } ) right: <Id.Right_DollarBrace '}'> ) } spids: [957] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name level> var_name: level suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'[a-zA-Z]'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [972] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName level))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CURLEVEL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [981 998] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CURLEVEL='> name: CURLEVEL ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName level)} spids: [1007] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCRIPTS='> name: SCRIPTS ) op: assign_op.Equal rhs: {(DQ )} spids: [1011] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words: [ {<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <'.d/K'> ($ Id.VSub_DollarName level) <Id.Lit_Star '*'> } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName i)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'suffix='> name: suffix ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'> <etc> <Id.Lit_Slash '/'> <rc> ($ Id.VSub_DollarName runlevel) <.d> <Id.Lit_Slash '/'> <'K[0-9][0-9]'> } ) right: <Id.Right_DollarBrace '}'> ) } spids: [1068] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'previous_stop='> name: previous_stop ) op: assign_op.Equal rhs: {<'/etc/rc'> ($ Id.VSub_DollarName previous) <'.d/K'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName suffix) } spids: [1083] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'previous_start='> name: previous_start ) op: assign_op.Equal rhs: {<'/etc/rc'> ($ Id.VSub_DollarName previous) <'.d/S'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName suffix) } spids: [1096] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName previous_stop)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName previous_start)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCRIPTS='> name: SCRIPTS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName SCRIPTS) <' '> ($ Id.VSub_DollarName i) ) } spids: [1159] ) ] redirects: [] ) ] ) redirects: [] ) (C {<startup>} {<stop>} {($ Id.VSub_DollarName SCRIPTS)}) ] ) redirects: [] ) ] spids: [910 926] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<makefile>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CONCURRENCY))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<S>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName runlevel))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<startup>} {<boot>})] spids: [1202 1217] ) ] else_action: [(C {<startup>} {($ Id.VSub_DollarName ACTION)})] redirects: [] ) ] spids: [1184 1199] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CURLEVEL='> name:CURLEVEL) op: assign_op.Equal rhs: {(DQ )} spids: [1247] ) ] redirects: [] ) (command.ForEach iter_names: [s] iterable: (for_iter.Words words: [{<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <'.d/S'> <Id.Lit_Star '*'>}] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name s> var_name: s suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'> <etc> <Id.Lit_Slash '/'> <rc> ($ Id.VSub_DollarName runlevel) <.d> <Id.Lit_Slash '/'> <S> } ) right: <Id.Right_DollarBrace '}'> ) } spids: [1271] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name level> var_name: level suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'[a-zA-Z]'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [1286] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName level))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CURLEVEL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [1295 1312] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CURLEVEL='> name:CURLEVEL) op: assign_op.Equal rhs: {($ Id.VSub_DollarName level)} spids: [1321] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SCRIPTS='> name:SCRIPTS) op: assign_op.Equal rhs: {(DQ )} spids: [1325] ) ] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Words words: [ {<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <'.d/S'> ($ Id.VSub_DollarName level) <Id.Lit_Star '*'> } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName i)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'suffix='> name: suffix ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'> <etc> <Id.Lit_Slash '/'> <rc> ($ Id.VSub_DollarName runlevel) <.d> <Id.Lit_Slash '/'> <'S[0-9][0-9]'> } ) right: <Id.Right_DollarBrace '}'> ) } spids: [1362] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName previous))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<N>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'stop='> name: stop ) op: assign_op.Equal rhs: {<'/etc/rc'> ($ Id.VSub_DollarName runlevel) <'.d/K'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName suffix) } spids: [1412] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'previous_start='> name: previous_start ) op: assign_op.Equal rhs: {<'/etc/rc'> ($ Id.VSub_DollarName previous) <'.d/S'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName suffix) } spids: [1425] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<start>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName ACTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName previous_start)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName stop)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) ] spids: [1458 1474] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'previous_stop='> name: previous_stop ) op: assign_op.Equal rhs: {<'/etc/rc'> ($ Id.VSub_DollarName previous) <'.d/K'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> ($ Id.VSub_DollarName suffix) } spids: [1513] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName previous_stop)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName previous_start)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) ] redirects: [] ) ] spids: [1377 1393] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCRIPTS='> name: SCRIPTS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName SCRIPTS) <' '> ($ Id.VSub_DollarName i) ) } spids: [1578] ) ] redirects: [] ) ] ) redirects: [] ) (C {<startup>} {($ Id.VSub_DollarName ACTION)} {($ Id.VSub_DollarName SCRIPTS)}) ] ) redirects: [] ) ] redirects: [] ) ] spids: [782 794] ) ] else_action: [] redirects: [] ) (C {<trap>} {<->} {<EXIT>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )