(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {<'/sbin'> <Id.Lit_Colon ':'> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> } spids: [31] ) ] ) (C {<.>} {<'/lib/init/vars.sh'>}) (C {<.>} {<'/lib/lsb/init-functions'>}) (C {<umask>} {<022>}) (command.ShFunction name: do_stop body: (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 '$('> child: (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 op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/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 op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>}) ] spids: [737 738 758 -1] ) ] ) (C {<Id.Lit_Colon ':'>}) ] )