(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(/sbin) (Id.Lit_Other ':') (/bin) (Id.Lit_Other ':') (/usr/sbin) (Id.Lit_Other ':') (/usr/bin) } spids: [38] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DAEMON) op: assign_op.Equal rhs: {(/usr/bin/speech-dispatcher)} spids: [47] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDFILE) op: assign_op.Equal rhs: {(/var/run/speech-dispatcher/speech-dispatcher.pid)} spids: [50] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: {(speech-dispatcher)} spids: [53] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DESC) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'Speech Dispatcher' span_id:58))} spids: [56] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USER) op: assign_op.Equal rhs: {(speech-dispatcher)} spids: [61] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-f)} {($ Id.VSub_DollarName '$DAEMON')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:73) arg_word: {(0)} ) ] ) (C {(.)} {(/lib/lsb/init-functions)}) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:RUN) op:assign_op.Equal rhs:{(no)} spids:[83])] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(/etc/default/speech-dispatcher)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:100) ) ] action: [(C {(.)} {(/etc/default/speech-dispatcher)})] spids: [90 102] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (x) ($ Id.VSub_DollarName '$RUN'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (xyes))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:130) ) ] action: [ (C {(log_action_msg)} {(DQ ($ Id.VSub_DollarName '$NAME') (' disabled; edit /etc/default/speech-dispatcher'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:143) arg_word: {(0)} ) ] spids: [112 132] ) ] ) (C {(Id.KW_Set set)} {(-e)}) (command.ShFunction name: do_start body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDDIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:164) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_DollarName '$PIDFILE')})] ) ) } spids: [163] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-e)} {($ Id.VSub_DollarName '$PIDDIR')} {(Id.Lit_RBracket ']')} ) (C {(install)} {(-d)} {(-ospeech-dispatcher)} {(-gaudio)} {(-m750)} {($ Id.VSub_DollarName '$PIDDIR')} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SDDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PIDDIR') (/.speech-dispatcher)} spids: [196] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-e)} {($ Id.VSub_DollarName '$SDDIR')} {(Id.Lit_RBracket ']')} ) (C {(ln)} {(-s)} {($ Id.VSub_DollarName '$PIDDIR')} {($ Id.VSub_DollarName '$SDDIR')}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$SDDIR') (/log)} spids: [220] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-e)} {($ Id.VSub_DollarName '$LOGDIR')} {(Id.Lit_RBracket ']')} ) (C {(ln)} {(-s)} {(/var/log/speech-dispatcher)} {($ Id.VSub_DollarName '$LOGDIR')}) ] ) (C {(start-stop-daemon)} {(--oknodo)} {(--start)} {(--quiet)} {(--chuid)} {($ Id.VSub_DollarName '$USER')} {(--pidfile)} {($ Id.VSub_DollarName '$PIDFILE')} {(--exec)} {($ Id.VSub_DollarName '$DAEMON')} {(--)} {(--pid-file)} {($ Id.VSub_DollarName '$PIDFILE')} ) ] ) ) (command.ShFunction name: do_stop body: (command.BraceGroup children: [ (C {(start-stop-daemon)} {(--oknodo)} {(--stop)} {(--quiet)} {(--user)} {($ Id.VSub_DollarName '$USER')} {(--pidfile)} {($ Id.VSub_DollarName '$PIDFILE')} {(--exec)} {($ Id.VSub_DollarName '$DAEMON')} ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(start)}] action: [ (C {(log_daemon_msg)} {(DQ ('Starting ') ($ Id.VSub_DollarName '$DESC'))} {(DQ (speech-dispatcher))} ) (C {(do_start)}) (C {(log_end_msg)} {($ Id.VSub_QMark '$?')}) ] spids: [317 318 341 -1] ) (case_arm pat_list: [{(stop)}] action: [ (C {(log_daemon_msg)} {(DQ ('Stopping ') ($ Id.VSub_DollarName '$DESC'))} {(DQ (speech-dispatcher))} ) (C {(do_stop)}) (C {(log_end_msg)} {($ Id.VSub_QMark '$?')}) ] spids: [344 345 368 -1] ) (case_arm pat_list: [{(reload)} {(force-reload)}] action: [ (C {(log_daemon_msg)} {(DQ ('Reloading ') ($ Id.VSub_DollarName '$DESC') (' configuration files'))} {(DQ (speech-dispatcher))} ) (C {(start-stop-daemon)} {(--oknodo)} {(--stop)} {(--signal)} {(1)} {(--quiet)} {(--user)} {($ Id.VSub_DollarName '$USER')} {(--pidfile)} {($ Id.VSub_DollarName '$PIDFILE')} {(--exec)} {($ Id.VSub_DollarName '$DAEMON')} ) (C {(log_end_msg)} {($ Id.VSub_QMark '$?')}) ] spids: [371 374 422 -1] ) (case_arm pat_list: [{(restart)}] action: [ (C {(log_daemon_msg)} {(DQ ('Restarting ') ($ Id.VSub_DollarName '$DESC'))} {(DQ (speech-dispatcher))} ) (C {(do_stop)}) (C {(sleep)} {(3)}) (C {(do_start)}) (C {(log_end_msg)} {($ Id.VSub_QMark '$?')}) ] spids: [425 426 457 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:N) op: assign_op.Equal rhs: {(/etc/init.d/) ($ Id.VSub_DollarName '$NAME')} spids: [464] ) ] ) (command.Simple words: [ {(echo)} { (DQ ('Usage: ') ($ Id.VSub_DollarName '$N') (' {start|stop|restart|reload|force-reload}') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:477) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:481) arg_word: {(1)} ) ] spids: [460 461 486 -1] ) ] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:491) arg_word:{(0)}) ] )