summaryrefslogtreecommitdiff
path: root/packages/gsm/files/gsmd
diff options
context:
space:
mode:
authorOpenmoko anonymizer key <devel@lists.openmoko.org>2007-08-28 15:05:16 +0000
committerOpenmoko anonymizer key <devel@lists.openmoko.org>2007-08-28 15:05:16 +0000
commitf8d5341f0c8f249db753e9813d09f55f97e0ff6e (patch)
treede78ee02b12d5c13b7e9b847eaee2bf6efe6543c /packages/gsm/files/gsmd
parent470ee21d142e13256311cbf9b62f2048ccf14307 (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/gsmd133
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
+