(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NETDOWN) op: assign_op.Equal rhs: {(yes)} spids: [31] ) ] ) (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: [35] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-f)} {(/etc/default/halt)} {(Id.Lit_RBracket ']')}) (C {(.)} {(/etc/default/halt)}) ] ) (C {(.)} {(/lib/lsb/init-functions)}) (command.ShFunction name: do_stop body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$INIT_HALT'))} {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')} ) ] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$HALT'))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (Pp) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INIT_HALT) op: assign_op.Equal rhs: {(POWEROFF)} spids: [107] ) ] ) ] spids: [100 104 111 -1] ) (case_arm pat_list: [ {(Id.Lit_LBracket '[') (Hh) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INIT_HALT) op: assign_op.Equal rhs: {(HALT)} spids: [121] ) ] ) ] spids: [114 118 125 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INIT_HALT) op: assign_op.Equal rhs: {(POWEROFF)} spids: [132] ) ] ) ] spids: [128 129 136 -1] ) ] ) ] spids: [72 88] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$INIT_HALT'))} {(Id.Lit_Equals '=')} {(DQ (POWEROFF))} {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} {(-x)} {(/etc/init.d/ups-monitor)} {(Id.Lit_RBracket ']')} ) ] ) ] action: [(C {(/etc/init.d/ups-monitor)} {(poweroff)})] spids: [150 177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hddown) op: assign_op.Equal rhs: {(DQ (-h))} spids: [193] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(grep)} {(-qs)} {(SQ (Token id:Id.Lit_Chars val:'^md.*active' span_id:206))} {(/proc/mdstat)} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hddown) op: assign_op.Equal rhs: {(DQ )} spids: [215] ) ] ) ] spids: [199 212] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:poweroff) op: assign_op.Equal rhs: {(DQ (-p))} spids: [228] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$INIT_HALT'))} {(Id.Lit_Equals '=')} {(DQ (HALT))} {(Id.Lit_RBracket ']')} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:poweroff) op: assign_op.Equal rhs: {(DQ )} spids: [254] ) ] ) ] spids: [234 251] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:netdown) op: assign_op.Equal rhs: {(DQ (-i))} spids: [271] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$NETDOWN'))} {(Id.Lit_Equals '=')} {(DQ (no))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:292) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:netdown) op: assign_op.Equal rhs: {(DQ )} spids: [297] ) ] ) ] spids: [277 294] ) ] ) (C {(log_action_msg)} {(DQ ('Will now halt'))}) (C {(halt)} {(-d)} {(-f)} {($ Id.VSub_DollarName '$netdown')} {($ Id.VSub_DollarName '$poweroff')} {($ Id.VSub_DollarName '$hddown')} ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list:[{(start)} {(status)}] spids:[337 340 347 -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: (Token id:Id.Redir_GreatAnd val:'>&' span_id:366) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:370) arg_word: {(3)} ) ] spids: [350 355 375 -1] ) (case_arm pat_list:[{(stop)}] action:[(C {(do_stop)})] spids:[378 379 385 -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: (Token id:Id.Redir_GreatAnd val:'>&' span_id:400) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:404) arg_word: {(3)} ) ] spids: [388 389 409 -1] ) ] ) (C {(Id.Lit_Other ':')}) ] )