(command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/proc/modules'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/modprobe'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/default/rcS'>} {<Id.Lit_RBracket ']'>}) (C {<.>} {<'/etc/default/rcS'>}) ] ) (C {<.>} {<'/lib/lsb/init-functions'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {(SQ <'/sbin:/bin'>)} spids: [88] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<start>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<init_is_upstart>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [107 112] ) ] else_action: [] redirects: [] ) ] spids: [103 104 123 -1] ) (case_arm pat_list: [{<stop>} {<restart>} {<reload>} {<force-reload>}] action: [ (C {<log_warning_msg>} {(DQ <'Action \''> ($ Id.VSub_Number 1) <'\' is meaningless for this init script'>)} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [127 134 151 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<log_success_msg>} {(DQ <'Usage: '> ($ Id.VSub_Number 0) <' start'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [155 156 -1 172] ) ] redirects: [] ) (command.ShFunction name: load_module body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<module>} {<args>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'module='> name:module) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [189] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [195] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_action_msg>} {(DQ <'Loading kernel module '> ($ Id.VSub_DollarName module))} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<modprobe>} {($ Id.VSub_DollarName module)} {($ Id.VSub_DollarName args)}) (C {<true>}) ] ) ] spids: [202 218] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<modprobe>} {($ Id.VSub_DollarName module)} {($ Id.VSub_DollarName args)}] 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 ) (C {<true>}) ] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: modules_files body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'modules_load_dirs='> (SQ < '/etc/modules-load.d /run/modules-load.d /usr/local/lib/modules-load.d /usr/lib/modules-load.d /lib/modules-load.d' > ) } ) (C {<local>} {<Id.Lit_VarLike 'processed='> (SQ <' '>)}) (C {<local>} {<Id.Lit_VarLike 'add_etc_modules='> <true>}) (command.ForEach iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName modules_load_dirs)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName dir)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ForEach iter_names: [file] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<run-parts>} {<--list>} {<--regex> <Id.Lit_Equals '='> (SQ <'\\.conf$'>)} {($ Id.VSub_DollarName dir)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<true>}) ] ) right: <Id.Eof_RParen _> ) } ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'base='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name file> var_name: file suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName processed))} ) (C {<grep>} {<-qF>} {(DQ <' '> ($ Id.VSub_DollarName base) <' '>)} ) ] negated: F stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [364 387] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName add_etc_modules))} {<-a>} {<-L>} {($ Id.VSub_DollarName file)} {<-a>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {($ Id.VSub_DollarName file)} ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {<'/etc/modules'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'add_etc_modules='> name: add_etc_modules ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [434] ) ] redirects: [] ) ] spids: [396 431] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'processed='> name: processed ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName processed) ($ Id.VSub_DollarName base) <' '> ) } spids: [440] ) ] redirects: [] ) (C {<echo>} {($ Id.VSub_DollarName file)}) ] ) redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName add_etc_modules))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<'/etc/modules'>})] spids: [460 471] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<log_action_begin_msg>} {(SQ <'Loading kernel modules'>)})] spids: [484 499] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<modules_files>}) right: <Id.Eof_RParen _> ) } spids: [511] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName files))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<grep>} {<-h>} {(SQ <'^[^#]'>)} {($ Id.VSub_DollarName files)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<module>} {<args>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName module))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (C {<load_module>} {(DQ ($ Id.VSub_DollarName module))} {(DQ ($ Id.VSub_DollarName args))} ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] spids: [516 528] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<log_action_end_msg>} {<0>})] spids: [585 600] ) ] else_action: [] redirects: [] ) ] )