(command.CommandList children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/resolvconf'>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {<'/sbin'> <Id.Lit_Colon ':'> <'/bin'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'RUN_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RUN_DIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RUN_DIR='> name:RUN_DIR) op: assign_op.Equal rhs: {<'/run/resolvconf'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ENABLE_UPDATES_FLAGFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ENABLE_UPDATES_FLAGFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ENABLE_UPDATES_FLAGFILE='> name: ENABLE_UPDATES_FLAGFILE ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RUN_DIR) <'/enable-updates'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'POSTPONED_UPDATE_FLAGFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'POSTPONED_UPDATE_FLAGFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'POSTPONED_UPDATE_FLAGFILE='> name: POSTPONED_UPDATE_FLAGFILE ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name RUN_DIR) <'/postponed-update'>)} ) ] redirects: [] ) (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {<'/lib/lsb/init-functions'>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <start> pattern: (pat.Words words:[{<start>} {<restart>} {<force-reload>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <init_is_upstart> more_env: [] words: [{<init_is_upstart>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <stop> pattern: (pat.Words words:[{<stop>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <init_is_upstart> more_env: [] words: [{<init_is_upstart>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <log_action_end_msg_and_exit> name: log_action_end_msg_and_exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <log_action_end_msg> more_env: [] words: [ {<log_action_end_msg>} {(DQ ($ Id.VSub_Number 1))} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_Number 2))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_Number 1)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <create_runtime_directories> name: create_runtime_directories body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>} {<022>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName RUN_DIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_DollarName RUN_DIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [ {<log_action_end_msg_and_exit>} {<1>} { (DQ ($ Id.VSub_DollarName RUN_DIR) <' is neither a directory nor a symbolic link'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'RUN_CANONICALDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RUN_CANONICALDIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'RUN_CANONICALDIR='> name: RUN_CANONICALDIR ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <readlink> more_env: [] words: [ {<readlink>} {<-f>} {(DQ ($ Id.VSub_DollarName RUN_DIR))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName RUN_CANONICALDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [ {<log_action_end_msg_and_exit>} {<1>} {(DQ <'Canonical path of the run directory could not be determined'>)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName RUN_CANONICALDIR))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [ {<log_action_end_msg_and_exit>} {<1>} { (DQ <'Error creating directory '> ($ Id.VSub_DollarName RUN_CANONICALDIR) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [213 229] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name RUN_DIR) <'/interface'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ (${ Id.VSub_Name RUN_DIR) <'/interface'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [ {<log_action_end_msg_and_exit>} {<1>} { (DQ <'Error creating directory '> (${ Id.VSub_Name RUN_DIR) <'/interface'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [327 346] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <wipe_runtime_directories> name: wipe_runtime_directories body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName RUN_DIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName RUN_DIR)) <'/resolv.conf'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName ENABLE_UPDATES_FLAGFILE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName POSTPONED_UPDATE_FLAGFILE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name RUN_DIR) <'/interface/*'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <start> pattern: (pat.Words words:[{<start>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <log_action_begin_msg> more_env: [] words: [{<log_action_begin_msg>} {(DQ <'Setting up resolvconf'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wipe_runtime_directories> more_env: [] words: [{<wipe_runtime_directories>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <create_runtime_directories> more_env: [] words: [{<create_runtime_directories>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName POSTPONED_UPDATE_FLAGFILE))} ) ] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed requesting update'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--enable-updates>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to enable updates'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<0>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <stop> pattern: (pat.Words words:[{<stop>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <log_action_begin_msg> more_env: [] words: [{<log_action_begin_msg>} {(DQ <'Stopping resolvconf'>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--disable-updates>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to disable updates'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<0>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <restart> pattern: (pat.Words words:[{<restart>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <log_action_begin_msg> more_env: [] words: [{<log_action_begin_msg>} {(DQ <'Restarting resolvconf'>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--enable-updates>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to enable updates'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<0>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <reload> pattern: (pat.Words words:[{<reload>} {<force-reload>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<-u>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to update'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <enable-updates> pattern: (pat.Words words:[{<enable-updates>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--enable-updates>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to enable updates'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <disable-updates> pattern: (pat.Words words:[{<disable-updates>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--disable-updates>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <log_action_end_msg_and_exit> more_env: [] words: [{<log_action_end_msg_and_exit>} {<1>} {(DQ <'failed to disable updates'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <status> pattern: (pat.Words words:[{<status>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <resolvconf> more_env: [] words: [{<resolvconf>} {<--updates-are-enabled>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <log_success_msg> more_env: [] words: [{<log_success_msg>} {(DQ <'resolvconf updates are enabled'>)}] redirects: [] do_fork: T ) ] spids: [706 714] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <log_failure_msg> more_env: [] words: [{<log_failure_msg>} {(DQ <'resolvconf updates are disabled'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < 'Usage: /etc/init.d/resolvconf {start|stop|restart|reload|force-reload|enable-updates|disable-updates|status}' > ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<3>}) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<99>}) ] )