diff -Nru lirc-0.8.7.orig/debian/lirc.init.d lirc-0.8.7/debian/lirc.init.d --- lirc-0.8.7.orig/debian/lirc.init.d 2011-03-30 13:12:08.000000000 -0700 +++ lirc-0.8.7/debian/lirc.init.d 2011-03-30 12:47:31.182388339 -0700 @@ -57,7 +57,7 @@ #Now, if we ALSO have a transmitter defined, add some args #To make the first lircd listen up if [ ! -z "$TRANSMITTER_DEVICE" ] || [ ! -z "$TRANSMITTER_DRIVER" ]; then - REMOTE_ARGS="$REMOTE_ARGS --listen" + REMOTE_ARGS="$REMOTE_ARGS --connect=localhost:8765" fi REMOTE_ARGS="--output=$REMOTE_SOCKET $REMOTE_ARGS" fi @@ -80,7 +80,7 @@ #Now, if we ALSO have a remote defined, add some args #To make the second lircd connect if [ ! -z "$REMOTE_DEVICE" ] || [ ! -z "$REMOTE_DRIVER" ]; then - TRANSMITTER_ARGS="$TRANSMITTER_ARGS --connect=localhost:8765 --pidfile=/var/run/lirc/lircd1.pid" + TRANSMITTER_ARGS="$TRANSMITTER_ARGS --listen --pidfile=/var/run/lirc/lircd1.pid" fi TRANSMITTER_ARGS="--output=$TRANSMITTER_SOCKET $TRANSMITTER_ARGS" fi @@ -162,30 +162,41 @@ REMOTE_LIRCD_ARGS=`build_remote_args $REMOTE_LIRCD_ARGS` TRANSMITTER_LIRCD_ARGS=`build_transmitter_args $TRANSMITTER_LIRCD_ARGS` - #if we have a remote defined, it is primary process - if [ ! -z "$REMOTE_LIRCD_ARGS" ]; then + #if we have a transmitter defined, start it first + if [ ! -z "$TRANSMITTER_LIRCD_ARGS" ]; then + start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $TRANSMITTER_LIRCD_ARGS < /dev/null + log_end_msg $? + + #If we also have a remote, start it too. The transmitter should have been started first with --listen. + if [ ! -z "$REMOTE_LIRCD_ARGS" ]; then + /usr/sbin/lircd $REMOTE_LIRCD_ARGS < /dev/null + fi + + #There is only a remote. + elif [ ! -z "$REMOTE_LIRCD_ARGS" ]; then start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $REMOTE_LIRCD_ARGS < /dev/null log_end_msg $? - if [ -S "$REMOTE_SOCKET" -a "$OLD_SOCKET" != "$REMOTE_SOCKET" ]; then - rm -f $OLD_SOCKET && ln -s $REMOTE_SOCKET $OLD_SOCKET - fi + else + log_end_msg 1 + fi - #now if we additionally have a transmitter defined, it is secondary process + #Set up symlinks, starting with the remote if present. + if [ ! -z "$REMOTE_LIRCD_ARGS" ]; then + if [ -S "$REMOTE_SOCKET" -a "$OLD_SOCKET" != "$REMOTE_SOCKET" -a "$OLD_SOCKET" != "$TRANSMITTER_SOCKET" ]; then + rm -f $OLD_SOCKET && ln -s $REMOTE_SOCKET $OLD_SOCKET + fi if [ ! -z "$TRANSMITTER_LIRCD_ARGS" ]; then - /usr/sbin/lircd $TRANSMITTER_LIRCD_ARGS < /dev/null - if [ -S "$TRANSMITTER_SOCKET" ]; then + if [ -S "$TRANSMITTER_SOCKET" -a "$OLD_SOCKET"1 != "$REMOTE_SOCKET" -a "$OLD_SOCKET"1 != "$TRANSMITTER_SOCKET" ]; then rm -f ${OLD_SOCKET}1 && ln -s $TRANSMITTER_SOCKET ${OLD_SOCKET}1 - fi + fi fi elif [ ! -z "$TRANSMITTER_LIRCD_ARGS" ]; then - start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/lircd -- $TRANSMITTER_LIRCD_ARGS < /dev/null - log_end_msg $? if [ -S "$TRANSMITTER_SOCKET" -a "$OLD_SOCKET" != "$TRANSMITTER_SOCKET" ]; then rm -f $OLD_SOCKET && ln -s $TRANSMITTER_SOCKET $OLD_SOCKET - fi - else - log_end_msg 1 + fi + fi + fi if [ "$START_LIRCMD" = "true" ]; then