(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {</sbin> <Id.Lit_Other ':'> </usr/sbin> <Id.Lit_Other ':'> </bin> <Id.Lit_Other ':'> </usr/bin> } spids: [31] ) ] ) (C {<.>} {</lib/init/vars.sh>}) (C {<.>} {</lib/lsb/init-functions>}) (C {<umask>} {<022>}) (command.ShFunction name: do_stop body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROTECTED_MOUNTS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<sed>} {<-n>} {(SQ <':a;/^[^ ]* \\/ /!{H;n;ba};{H;s/.*//;x;s/\\n//;p}'>)} {</proc/mounts>} ) ] ) ) ) } spids: [63] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WEAK_MTPTS) op: assign_op.Equal rhs: {(DQ )} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REG_MTPTS) op: assign_op.Equal rhs: {(DQ )} spids: [87] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMPFS_MTPTS) op: assign_op.Equal rhs: {(DQ )} spids: [92] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<read>} {<-r>} {<DEV>} {<MTPT>} {<FSTYPE>} {<REST>})] body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$PROTECTED_MOUNTS'))}) (C {<grep>} {<-qs>} { (DQ <'^'> ($ Id.VSub_DollarName '$DEV') <' '> ($ Id.VSub_DollarName '$MTPT') <' '> ) } ) ] negated: F ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$MTPT'))} arms: [ (case_arm pat_list: [ {</>} {</proc>} {</dev>} {</.dev>} {</dev/pts>} {</dev/shm>} {</dev/.static/dev>} {</proc/> <Id.Lit_Star '*'>} {</sys>} {</sys/> <Id.Lit_Star '*'>} {</run>} {</run/> <Id.Lit_Star '*'>} {</dev/vcs>} ] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [149 177 183 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$FSTYPE'))} arms: [ (case_arm pat_list: [ {<Id.KW_Proc proc>} {<procfs>} {<linprocfs>} {<sysfs>} {<usbfs>} {<usbdevfs>} {<devpts>} ] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [198 211 217 -1] ) (case_arm pat_list: [{<tmpfs>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TMPFS_MTPTS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$MTPT') <' '> ($ Id.VSub_DollarName '$TMPFS_MTPTS') ) } spids: [224] ) ] ) ] spids: [220 221 232 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$PROTECTED_MOUNTS'))} ) (C {<grep>} {<-qs>} {(DQ <'^'> ($ Id.VSub_DollarName '$DEV') <' '>)} ) ] negated: F ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WEAK_MTPTS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$MTPT') <' '> ($ Id.VSub_DollarName '$WEAK_MTPTS') ) } spids: [263] ) ] ) ] spids: [239 260] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REG_MTPTS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$MTPT') <' '> ($ Id.VSub_DollarName '$REG_MTPTS') ) } spids: [274] ) ] ) ] ) ] spids: [235 236 285 -1] ) ] ) ] ) redirects: [(redir.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{</proc/mounts>})] ) (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$TMPFS_MTPTS'))} {<Id.Lit_RBracket ']'>} ) ] action: [ (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) ] action: [ (C {<log_action_begin_msg>} {(DQ <'Unmounting temporary filesystems'>)}) (C {<fstab-decode>} {<umount>} {($ Id.VSub_DollarName '$TMPFS_MTPTS')}) (C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')}) ] spids: [333 348] ) ] else_action: [ (C {<log_daemon_msg>} {(DQ <'Will now unmount temporary filesystems'>)}) (C {<fstab-decode>} {<umount>} {<-v>} {($ Id.VSub_DollarName '$TMPFS_MTPTS')}) (C {<log_end_msg>} {($ Id.VSub_QMark '$?')}) ] ) ] spids: [319 330] ) ] ) (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) ] action: [ (C {<log_action_begin_msg>} {(DQ <'Deactivating swap'>)}) (command.Simple words: [{<swapoff>} {<-a>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) (C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')}) ] spids: [413 428] ) ] else_action: [ (C {<log_daemon_msg>} {(DQ <'Will now deactivate swap'>)}) (C {<swapoff>} {<-a>} {<-v>}) (C {<log_end_msg>} {($ Id.VSub_QMark '$?')}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$WEAK_MTPTS'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) ] action: [ (C {<log_action_begin_msg>} {(DQ <'Unmounting weak filesystems'>)}) (C {<fstab-decode>} {<umount>} {<-r>} {<-d>} {($ Id.VSub_DollarName '$WEAK_MTPTS')} ) (C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')}) ] spids: [507 522] ) ] else_action: [ (C {<log_daemon_msg>} {(DQ <'Will now unmount weak filesystems'>)}) (C {<fstab-decode>} {<umount>} {<-v>} {<-r>} {<-d>} {($ Id.VSub_DollarName '$WEAK_MTPTS')} ) (C {<log_end_msg>} {($ Id.VSub_QMark '$?')}) ] ) ] spids: [489 500] ) ] ) (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$REG_MTPTS'))} {<Id.Lit_RBracket ']'>} ) ] action: [ (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) ] action: [ (C {<log_action_begin_msg>} {(DQ <'Unmounting local filesystems'>)}) (C {<fstab-decode>} {<umount>} {<-f>} {<-r>} {<-d>} {($ Id.VSub_DollarName '$REG_MTPTS')} ) (C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')}) ] spids: [596 611] ) ] else_action: [ (C {<log_daemon_msg>} {(DQ <'Will now unmount local filesystems'>)}) (C {<fstab-decode>} {<umount>} {<-f>} {<-v>} {<-r>} {<-d>} {($ Id.VSub_DollarName '$REG_MTPTS')} ) (C {<log_end_msg>} {($ Id.VSub_QMark '$?')}) ] ) ] spids: [582 593] ) ] ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list:[{<start>} {<status>}] spids:[686 689 696 -1]) (case_arm pat_list: [{<restart>} {<reload>} {<force-reload>}] action: [ (command.Simple words: [{<echo>} {(DQ <"Error: argument '"> ($ Id.VSub_Number '$1') <"' not supported">)}] redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>}) ] spids: [699 704 724 -1] ) (case_arm pat_list:[{<stop>}] action:[(C {<do_stop>})] spids:[727 728 734 -1]) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Simple words: [{<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' start|stop'>)}] redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>}) ] spids: [737 738 758 -1] ) ] ) (C {<Id.Lit_Other ':'>}) ] )