From 7a9592377eeaab982fcbc799ebaf9ad55de004468b54c12acdc6d719a1acf9c4 Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Fri, 12 Mar 2010 16:36:02 +0000 Subject: [PATCH] Accepting request 34687 from Base:System Copy from Base:System/lirc based on submit request 34687 from user lnussel OBS-URL: https://build.opensuse.org/request/show/34687 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/lirc?expand=0&rev=30 --- lirc.changes | 7 +++ rc.lirc | 149 ++++++++++----------------------------------------- 2 files changed, 36 insertions(+), 120 deletions(-) diff --git a/lirc.changes b/lirc.changes index 167fa94..9e8a711 100644 --- a/lirc.changes +++ b/lirc.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Mar 12 14:58:11 UTC 2010 - lnussel@suse.de + +- use correct location of devinput config (bnc#570665) +- use /dev/lirc0 as fallback (bnc#552455) +- rework init script + ------------------------------------------------------------------- Fri Dec 18 13:43:59 CET 2009 - jengelh@medozas.de diff --git a/rc.lirc b/rc.lirc index 236e483..d2a4958 100644 --- a/rc.lirc +++ b/rc.lirc @@ -31,65 +31,33 @@ lircd_CONFIG=/etc/sysconfig/lirc test -r $lircd_CONFIG || exit 6 . $lircd_CONFIG -# Source LSB init functions -# providing start_daemon, killproc, pidofproc, -# log_success_msg, log_failure_msg and log_warning_msg. -# This is currently not used by UnitedLinux based distributions and -# not needed for init scripts for UnitedLinux only. If it is used, -# the functions from rc.status should not be sourced or used. -#. /lib/lsb/init-functions +lircd_CONF=/etc/lirc/lircd.conf +lircd_PID=/var/run/lirc/lircd.pid -# Shell functions sourced from /etc/rc.status: -# rc_check check and set local and overall rc status -# rc_status check and set local and overall rc status -# rc_status -v ditto but be verbose in local rc status -# rc_status -v -r ditto and clear the local rc status -# rc_status -s display "skipped" and exit with status 3 -# rc_status -u display "unused" and exit with status 3 -# rc_failed set local and overall rc status to failed -# rc_failed set local and overall rc status to -# rc_reset clear local rc status (overall remains) -# rc_exit exit appropriate to overall rc status -# rc_active checks whether a service is activated by symlinks -# rc_splash arg sets the boot splash screen to arg (if active) . /etc/rc.status -# Reset status of this service rc_reset -# Return values acc. to LSB for all commands but status: -# 0 - success -# 1 - generic or unspecified error -# 2 - invalid or excess argument(s) -# 3 - unimplemented feature (e.g. "reload") -# 4 - user had insufficient privileges -# 5 - program is not installed -# 6 - program is not configured -# 7 - program is not running -# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) -# -# Note that starting an already running service, stopping -# or restarting a not-running service as well as the restart -# with force-reload (in case signaling is not supported) are -# considered a success. - setdefaults() { # set LIRCD_DEVICE default if unset - for retries in 1 2 3 4 5; do + for retries in 1 2; do if test "$LIRCD_DEVICE" != ""; then break; fi if test -L "/dev/input/ir"; then # have input driver LIRCD_DEVICE="/dev/input/ir" - elif grep -q BaseRemoteCtl /proc/devices && [ -e /dev/lirc ]; then + elif grep -q BaseRemoteCtl /proc/devices && [ -e /dev/lirc0 -o -e /dev/lirc ]; then # have lirc driver - LIRCD_DEVICE="/dev/lirc" + if [ -e /dev/lirc0 ]; then + LIRCD_DEVICE="/dev/lirc0" + else + LIRCD_DEVICE="/dev/lirc" + fi else - # hotplug not finished yet? - echo -n . - sleep 1 + # wait for udev and try again + udevadm settle fi done @@ -99,15 +67,6 @@ setdefaults() fi } -makeargs() -{ - # print args - [ -n "$LIRCD_DRIVER" ] && echo "-H" "\"$LIRCD_DRIVER\"" - [ -n "$LIRCD_DEVICE" ] && echo "-d" "\"$LIRCD_DEVICE\"" - [ -n "$LIRCD_LISTENPORT" ] && echo "\"-l$LIRCD_LISTENPORT\"" - [ -n "$LIRCD_CONNECT" ] && echo "\"-c$LIRCD_CONNECT\"" -} - case "$1" in start) echo -n "Starting lircd " @@ -122,11 +81,12 @@ case "$1" in rc_status -v rc_exit fi - if [ ! -e /etc/lircd.conf ]; then - if [ "$LIRCD_DEVICE" = "/dev/input/ir" -a -e "$LIRCD_DEVICE" ]; then - install -m 644 /usr/share/lirc/remotes/linux-input-layer-lircd.conf /etc/lircd.conf + if [ ! -e "$lircd_CONF" ]; then + DEVINPUTCONF='/usr/share/lirc/remotes/devinput/lircd.conf.devinput' + if [ "$LIRCD_DEVICE" = "/dev/input/ir" -a -e "$LIRCD_DEVICE" -a -e "$DEVINPUTCONF" ]; then + install -m 644 "$DEVINPUTCONF" "$lircd_CONF" else - echo -n "Error: please create /etc/lircd.conf" + echo -n "Error: please create "$lircd_CONF"" rc_failed 6 rc_status -v rc_exit @@ -139,96 +99,45 @@ case "$1" in rm -f /dev/lircd ln -s /var/run/lirc/lircd /dev/lircd fi - ## Start daemon with startproc(8). If this fails - ## the return value is set appropriately by startproc. - eval startproc $lircd_BIN $(makeargs) - # Remember status and be verbose + lircd_ARGS=() + [ -n "$LIRCD_DRIVER" ] && lircd_ARGS+=(-H "$LIRCD_DRIVER") + [ -n "$LIRCD_DEVICE" ] && lircd_ARGS+=(-d "$LIRCD_DEVICE") + [ -n "$LIRCD_LISTENPORT" ] && lircd_ARGS+=(-l "$LIRCD_LISTENPORT") + [ -n "$LIRCD_CONNECT" ] && lircd_ARGS+=(-c "$LIRCD_CONNECT") + + start_daemon -p $lircd_PID $lircd_BIN "${lircd_ARGS[@]}" rc_status -v ;; stop) echo -n "Shutting down lircd " - ## Stop daemon with killproc(8) and if this fails - ## killproc sets the return value according to LSB. - - killproc -TERM $lircd_BIN - - # Remember status and be verbose + killproc -TERM -p $lircd_PID $lircd_BIN rc_status -v ;; try-restart) - ## Do a restart only if the service was active before. - ## Note: try-restart is not (yet) part of LSB (as of 1.2) $0 status >/dev/null && $0 restart - - # Remember status and be quiet rc_status ;; restart) - ## Stop the service and regardless of whether it was - ## running or not, start it again. $0 stop $0 start - - # Remember status and be quiet rc_status ;; - force-reload) - ## Signal the daemon to reload its config. Most daemons - ## do this on signal 1 (SIGHUP). - ## If it does not support it, restart. - - echo -n "Reload service lircd " - ## if it supports it: - killproc -HUP $lircd_BIN - #touch /var/run/lircd.pid - rc_status -v - - ## Otherwise: - #$0 stop && $0 start - #rc_status - ;; - reload) - ## Like force-reload, but if daemon does not support - ## signaling, do nothing (!) - - # If it supports signaling: + force-reload|reload) echo -n "Reload service lircd " killproc -HUP $lircd_BIN - #touch /var/run/lircd.pid + touch "$lircd_PID" rc_status -v - - ## Otherwise if it does not support reload: - #rc_failed 3 - #rc_status -v ;; status) echo -n "Checking for service lircd " - ## Check status with checkproc(8), if process is running - ## checkproc will return with exit status 0. - - # Return value is slightly different for the status command: - # 0 - service up and running - # 1 - service dead, but /var/run/ pid file exists - # 2 - service dead, but /var/lock/ lock file exists - # 3 - service not running (unused) - # 4 - service status unknown :-( - # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) - - # NOTE: checkproc returns LSB compliant status values. - checkproc $lircd_BIN - # NOTE: rc_status knows that we called this init script with - # "status" option and adapts its messages accordingly. + checkproc -p $lircd_PID $lircd_BIN rc_status -v ;; probe) - ## Optional: Probe for the necessity of a reload, print out the - ## argument to this init script which is required for a reload. - ## Note: probe is not (yet) part of LSB (as of 1.2) - - if test /etc/sysconfig/lirc -nt /var/run/lircd.pid; then + if test "$lircd_CONFIG" -nt "$lircd_PID"; then echo reload - elif test /etc/lircd.conf -nt /var/run/lircd.pid; then + elif test "$lircd_CONF" -nt "$lircd_PID"; then echo reload fi ;;