diff options
author | Openmoko anonymizer key <devel@lists.openmoko.org> | 2007-08-28 15:05:16 +0000 |
---|---|---|
committer | Openmoko anonymizer key <devel@lists.openmoko.org> | 2007-08-28 15:05:16 +0000 |
commit | f8d5341f0c8f249db753e9813d09f55f97e0ff6e (patch) | |
tree | de78ee02b12d5c13b7e9b847eaee2bf6efe6543c /packages/gsm/files/gsmd | |
parent | 470ee21d142e13256311cbf9b62f2048ccf14307 (diff) |
gsmd: rewrite start script, use start-stop-daemon. fixes OM bugs #704, #751
Diffstat (limited to 'packages/gsm/files/gsmd')
-rw-r--r-- | packages/gsm/files/gsmd | 133 |
1 files changed, 38 insertions, 95 deletions
diff --git a/packages/gsm/files/gsmd b/packages/gsm/files/gsmd index 5c78e8178a..bc7999ea77 100644 --- a/packages/gsm/files/gsmd +++ b/packages/gsm/files/gsmd @@ -1,106 +1,49 @@ -#!/bin/sh +##!/bin/sh # -# gsmd This shell script starts and stops gsmd. +# gsmd This shell script starts and stops gsmd. # # chkconfig: 345 90 40 # description: Gsmd manages access to a serial- or USB-connected GSM # processname: gsmd -# Source configuration -. /etc/default/gsmd +PATH=/bin:/usr/bin:/sbin:/usr/sbin -# Source function library. -#. /etc/rc.d/init.d/functions +[ -f /etc/default/rcS ] && . /etc/default/rcS +[ -f /etc/default/gsmd ] && . /etc/default/gsmd -RETVAL=0 -prog="gsmd" - -start() { - # Hack for broken uboot and/or kernel on the neo1973 - dmesg -n1 - - if [ -n "${GSM_POW}" ] - then - if [ -e "${GSM_POW}" ] - then - echo -n "Powering up GSM device..." - echo "1" > ${GSM_POW} - sleep 1 - echo "done" - else - echo "GSM device not found. Aborting startup" - return false - fi - fi - # Start daemons. - echo -n "Starting $prog: " - # We don't use the daemon function here because of a known bug - # in initlog -- it spuriously returns a nonzero status when - # starting daemons that fork themselves. See - # http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130629 - # for discussion. Fortunately: - # - # 1. gsmd startup can't fail, or at least not in the absence of - # much larger resource-exhaustion problems that would be very obvious. - # - # 2. We don't need all the logging crud that daemon/initlog sets - # up -- gsmd does its own syslog calls. - # - if [ -e "${GSM_DEV}" ] - then - gsmd -p ${GSM_DEV} ${GSMD_OPTS} >/tmp/gsm.log 2>&1 & - echo "success" - else - # User needs to symlink ${GPS_DEV} to the right thing - echo "No ${GSM_DEV} device, aborting gsmd startup." - fi - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gsmd - return $RETVAL -} - -stop() { - # Stop daemons. - echo -n "Shutting down $prog: " - killall gsmd -# killproc gsmd - RETVAL=$? - echo - if [ $RETVAL -eq 0 ] - then - rm -f /var/lock/subsys/gsmd; - fi - return $RETVAL -} - -# See how we were called. case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|reload) - stop - start - RETVAL=$? - ;; - condrestart) - if [ -f /var/lock/subsys/gsmd ]; then - stop - start - RETVAL=$? - fi - ;; - status) -# status gsmd -# RETVAL=$? - ;; - *) - echo "Usage: $0 {start|stop|restart|condrestart|status}" - exit 1 + start) + [ -n $GSM_POW ] && ( echo "0" >$GSM_POW; sleep 1 ) + [ -n $GSM_POW ] && ( echo "1" >$GSM_POW; sleep 1 ) + [ -n $GSM_RES ] && ( echo "1" >$GSM_RES; sleep 1 ) + [ -n $GSM_RES ] && ( echo "0" >$GSM_RES; sleep 2 ) + + echo -n "Starting GSM daemon: " + start-stop-daemon -S -x /usr/sbin/gsmd -- gsmd -p $GSM_DEV $GSMD_OPTS >/tmp/gsm.log 2>&1 & + + if [ $? = 0 ]; then + echo "gsmd." + else + echo "(failed.)" + fi + ;; + stop) + [ -n $GSM_POW ] && echo "0" >$GSM_POW + + echo -n "Stopping GSM daemon: " + start-stop-daemon -K -x /usr/sbin/gsmd + echo "gsmd." + ;; + restart|force-reload) + $0 stop + $0 start + exit + ;; + *) + echo "Usage: /etc/init.d/apmd {start|stop|restart|force-reload}" + exit 1 + ;; esac -exit $RETVAL +exit 0 + |