#! /bin/sh # ### BEGIN INIT INFO # Provides: saned # Required-Start: $syslog $local_fs $remote_fs # Required-Stop: $syslog $local_fs $remote_fs # Should-Start: dbus avahi-daemon # Should-Stop: dbus avahi-daemon # Default-Start: 2 3 4 5 # Default-Stop: 1 # Short-Description: SANE network scanner server # Description: saned makes local scanners available over the # network. ### END INIT INFO source /lib/lsb/init-functions global PATH := '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' global DAEMON := '/usr/sbin/saned' global NAME := 'saned' global DESC := '"SANE network scanner server'" test -x $DAEMON || exit 0 global RUN := 'no' global RUN_AS_USER := 'saned' # Get lsb functions source /lib/lsb/init-functions # Include saned defaults if available if test -f /etc/default/saned { source /etc/default/saned } if test "x$RUN" != "xyes" { log_success_msg "$NAME disabled; edit /etc/default/saned" exit 0 } global DAEMON_OPTS := ""-a $RUN_AS_USER"" set -e matchstr $1 { start { log_daemon_msg "Starting $DESC" $NAME start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS log_end_msg $Status } stop { log_daemon_msg "Stopping $DESC" $NAME start-stop-daemon --stop --oknodo --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON log_end_msg $Status } force-reload { # check whether $DAEMON is running. If so, restart start-stop-daemon --stop --test --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON \ && $0 restart \ || exit 0 } restart { log_daemon_msg "Restarting $DESC" $NAME start-stop-daemon --stop --oknodo --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS log_end_msg $Status } status { if test -s /var/run/$NAME.pid { global RUNNING := $[cat /var/run/$NAME.pid] if test -d /proc/$RUNNING { if test $[readlink /proc/$RUNNING/exe] = $DAEMON { log_success_msg "$NAME is running" exit 0 } } # No such PID, or executables don't match log_failure_msg "$NAME is not running, but pidfile existed" rm /var/run/$NAME.pid exit 1 } else { rm -f /var/run/$NAME.pid log_failure_msg "$NAME not running" exit 1 } } * { global N := "/etc/init.d/$NAME" log_failure_msg "Usage: $N {start|stop|restart|force-reload}" exit 1 } } exit 0 (CommandList children: [ (C {(.)} {(/lib/lsb/init-functions)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(/usr/local/sbin) (Lit_Other ":") (/usr/local/bin) (Lit_Other ":") (/sbin) (Lit_Other ":") (/bin) (Lit_Other ":") (/usr/sbin) (Lit_Other ":") (/usr/bin) } spids: [48] ) ] spids: [48] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DAEMON) op:Equal rhs:{(/usr/sbin/saned)} spids:[61])] spids: [61] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NAME) op:Equal rhs:{(saned)} spids:[64])] spids: [64] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DESC) op: Equal rhs: {(DQ ("SANE network scanner server"))} spids: [67] ) ] spids: [67] ) (AndOr children: [(C {(test)} {(-x)} {($ VSub_Name "$DAEMON")}) (C {(exit)} {(0)})] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RUN) op:Equal rhs:{(no)} spids:[86])] spids: [86] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RUN_AS_USER) op:Equal rhs:{(saned)} spids:[89])] spids: [89] ) (C {(.)} {(/lib/lsb/init-functions)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-f)} {(/etc/default/saned)} {(Lit_Other "]")}) terminator: ) ] action: [(C {(.)} {(/etc/default/saned)})] spids: [-1 116] ) ] spids: [-1 123] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (x) ($ VSub_Name "$RUN"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (xyes))} {(Lit_Other "]")} ) terminator: ) ] action: [ (C {(log_success_msg)} {(DQ ($ VSub_Name "$NAME") (" disabled; edit /etc/default/saned"))}) (C {(exit)} {(0)}) ] spids: [-1 146] ) ] spids: [-1 161] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DAEMON_OPTS) op: Equal rhs: {(DQ ("-a ") ($ VSub_Name "$RUN_AS_USER"))} spids: [164] ) ] spids: [164] ) (C {(set)} {(-e)}) (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(start)}] action: [ (C {(log_daemon_msg)} {(DQ ("Starting ") ($ VSub_Name "$DESC"))} {(DQ ($ VSub_Name "$NAME"))}) (C {(start-stop-daemon)} {(--start)} {(--quiet)} {(--pidfile)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(--exec)} {($ VSub_Name "$DAEMON")} {(--)} {($ VSub_Name "$DAEMON_OPTS")} ) (C {(log_end_msg)} {($ VSub_QMark "$?")}) ] spids: [185 186 229 -1] ) (case_arm pat_list: [{(stop)}] action: [ (C {(log_daemon_msg)} {(DQ ("Stopping ") ($ VSub_Name "$DESC"))} {(DQ ($ VSub_Name "$NAME"))}) (C {(start-stop-daemon)} {(--stop)} {(--oknodo)} {(--quiet)} {(--pidfile)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(--exec)} {($ VSub_Name "$DAEMON")} ) (C {(log_end_msg)} {($ VSub_QMark "$?")}) ] spids: [232 233 274 -1] ) (case_arm pat_list: [{(force-reload)}] action: [ (AndOr children: [ (C {(start-stop-daemon)} {(--stop)} {(--test)} {(--quiet)} {(--pidfile)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(--exec)} {($ VSub_Name "$DAEMON")} ) (AndOr children: [(C {($ VSub_Number "$0")} {(restart)}) (C {(exit)} {(0)})] op_id: Op_DPipe ) ] op_id: Op_DAmp ) ] spids: [277 278 322 -1] ) (case_arm pat_list: [{(restart)}] action: [ (C {(log_daemon_msg)} {(DQ ("Restarting ") ($ VSub_Name "$DESC"))} {(DQ ($ VSub_Name "$NAME"))} ) (C {(start-stop-daemon)} {(--stop)} {(--oknodo)} {(--quiet)} {(--pidfile)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(--exec)} {($ VSub_Name "$DAEMON")} ) (C {(sleep)} {(1)}) (C {(start-stop-daemon)} {(--start)} {(--quiet)} {(--pidfile)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(--exec)} {($ VSub_Name "$DAEMON")} {(--)} {($ VSub_Name "$DAEMON_OPTS")} ) (C {(log_end_msg)} {($ VSub_QMark "$?")}) ] spids: [325 326 395 -1] ) (case_arm pat_list: [{(status)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-s)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)} {(Lit_Other "]")} ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUNNING) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)})] ) left_token: spids: [419 425] ) } spids: [418] ) ] spids: [418] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-d)} {(/proc/) ($ VSub_Name "$RUNNING")} {(Lit_Other "]")} ) terminator: ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (CommandSubPart command_list: (CommandList children: [ (C {(readlink)} {(/proc/) ($ VSub_Name "$RUNNING") (/exe)} ) ] ) left_token: spids: [447 453] ) } {(Lit_Other "=")} {($ VSub_Name "$DAEMON")} {(Lit_Other "]")} ) terminator: ) ] action: [ (C {(log_success_msg)} {(DQ ($ VSub_Name "$NAME") (" is running"))}) (C {(exit)} {(0)}) ] spids: [-1 462] ) ] spids: [-1 478] ) ] spids: [-1 440] ) ] spids: [-1 481] ) (C {(log_failure_msg)} {(DQ ($ VSub_Name "$NAME") (" is not running, but pidfile existed"))} ) (C {(rm)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)}) (C {(exit)} {(1)}) ] spids: [-1 415] ) ] else_action: [ (C {(rm)} {(-f)} {(/var/run/) ($ VSub_Name "$NAME") (.pid)}) (C {(log_failure_msg)} {(DQ ($ VSub_Name "$NAME") (" not running"))}) (C {(exit)} {(1)}) ] spids: [509 534] ) ] spids: [398 399 537 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:N) op: Equal rhs: {(/etc/init.d/) ($ VSub_Name "$NAME")} spids: [544] ) ] spids: [544] ) (C {(log_failure_msg)} {(DQ ("Usage: ") ($ VSub_Name "$N") (" {start|stop|restart|force-reload}"))} ) (C {(exit)} {(1)}) ] spids: [540 541 563 -1] ) ] spids: [176 182 565] ) (C {(exit)} {(0)}) ] )