Initial commit of rfkilld. - rfkilld - An rfkill daemon, which runs scripts according to rfkill events.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 3e475d9f0d2322e6a31dd70f4c1416e79a41aa76
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat, 26 Feb 2011 17:59:27 +0100
       
       Initial commit of rfkilld.
       
       Diffstat:
         LICENSE                             |      21 +++++++++++++++++++++
         Makefile                            |      29 +++++++++++++++++++++++++++++
         README.md                           |       0 
         bin/rfkilld                         |      96 +++++++++++++++++++++++++++++++
         config.mk                           |       9 +++++++++
       
       5 files changed, 155 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/LICENSE b/LICENSE
       @@ -0,0 +1,21 @@
       +MIT/X Consortium License
       +
       +© 2011 Christoph Lohmann <20h@r-36.net>
       +
       +Permission is hereby granted, free of charge, to any person obtaining a
       +copy of this software and associated documentation files (the "Software"),
       +tto deal in the Software without restriction, including without limitation
       +tthe rights to use, copy, modify, merge, publish, distribute, sublicense,
       +and/or sell copies of the Software, and to permit persons to whom the
       +Software is furnished to do so, subject to the following conditions:
       +
       +The above copyright notice and this permission notice shall be included in
       +all copies or substantial portions of the Software.
       +
       +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
       +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       +DEALINGS IN THE SOFTWARE.
 (DIR) diff --git a/Makefile b/Makefile
       @@ -0,0 +1,29 @@
       +# rfkilld - rfkill daemon 
       +# See LICENSE file for copyright and license details.
       +
       +include config.mk
       +
       +dist:
       +        @echo creating dist tarball
       +        @mkdir -p rfkilld-${VERSION}
       +        @cp -R LICENSE README.md Makefile config.mk \
       +                bin etc rfkilld-${VERSION}
       +        @tar -cf rfkilld-${VERSION}.tar rfkilld-${VERSION}
       +        @gzip rfkilld-${VERSION}.tar
       +        @rm -rf rfkilld-${VERSION}
       +
       +install:
       +        @echo installing rfkilld script to ${DESTDIR}${PREFIX}/bin
       +        @cp bin/rfkilld ${DESTDIR}${PREFIX}/bin
       +        @chmod 755 ${DESTDIR}${PREFIX}/bin/rfkilld
       +        @echo installing etc files into ${DESTDIR}/etc/rfkilld
       +        @mkdir -p ${DESTDIR}/etc/rfkilld
       +        @cp -R etc/rfkilld ${DESTDIR}/etc/rfkilld
       +
       +uninstall:
       +        @echo removing rfkilld script from ${DESTDIR}${PREFIX}/bin
       +        @rm -f ${DESTDIR}${PREFIX}/bin/rfkilld
       +        @echo removing etc files from ${DESTDIR}/etc/rfkilld
       +        @rm -rf ${DESTDIR}/etc/rfkilld
       +
       +.PHONY: dist install uninstall
 (DIR) diff --git a/README.md b/README.md
 (DIR) diff --git a/bin/rfkilld b/bin/rfkilld
       @@ -0,0 +1,96 @@
       +#!/bin/sh
       +
       +usage() {
       +        echo "usage: `basename $1` [-hbl] [-p pidfile] [-e etcdir] [-b]"
       +}
       +
       +UDEVMONITORCMD="/usr/bin/nlmon -p -k"
       +ETCDIR="/etc/rfkilld"
       +PIDFILE="/var/run/rfkilld.pid"
       +dobackground=0
       +dodebug=0
       +dolog=0
       +
       +while getopts "ldp:e:" opt;
       +do
       +        case $opt in
       +                d)
       +                        dodebug=1
       +                        ;;
       +                p)
       +                        PIDFILE="$OPTARG"
       +                        ;;
       +                e)
       +                        ETCDIR="$OPTARG"
       +                        ;;
       +                l)
       +                        dolog=1
       +                        ;;
       +                *)
       +                        usage $0
       +                        exit 1
       +                        ;;
       +        esac
       +done
       +shift $(($OPTIND - 1))
       +
       +debugcmd=""
       +if [ $dodebug -eq 1 ];
       +tthen
       +        debugcmd="-d"
       +        set -x
       +fi
       +
       +echo $$ > $PIDFILE 2>&1 >/dev/null
       +ttrap "[ -e $PIDFILE ] && rm $PIDFILE; exit 0;" 2 3 6 9 15
       +
       +name=
       +ttype=
       +state=
       +
       +$UDEVMONITORCMD | \
       +while read status
       +do
       +        [[ "$status" =~ ^RFKILL_NAME=(.*)$ ]] \
       +                && name="${BASH_REMATCH[1]}"
       +        [[ "$status" =~ ^RFKILL_TYPE=(.*)$ ]] \
       +                && type="${BASH_REMATCH[1]}"
       +        [[ "$status" =~ ^RFKILL_STATE=(.*)$ ]] \
       +                && state="${BASH_REMATCH[1]}"
       +
       +        if [ "$status" == "" ];
       +        then
       +                if [ "$name" == "" ] || [ "$type" == "" ] \
       +                        || [ "$state" == "" ];
       +                then
       +                        continue
       +                fi
       +
       +                [ $dodebug -eq 1 ] \
       +                        && logger -t rfkilld "req $name $type $state"
       +
       +                if [ -x $ETCDIR/$name.sh ];
       +                then
       +                        $ETCDIR/$name.sh $state 2>&1 >/dev/null &        
       +                        
       +                        [ $dolog -eq 1 ] \
       +                                && logger -t rfkilld "ran $name.sh $state"
       +                fi
       +
       +                if [ -x $ETCDIR/$type.sh ];
       +                then
       +                        $ETCDIR/$type.sh $state $name 2>&1 >/dev/null &
       +
       +                        [ $dolog -eq 1 ] \
       +                                && logger -t rfkilld \
       +                                "ran $type.sh $state $name"
       +                fi
       +
       +                name=
       +                type=
       +                state=
       +        fi
       +done
       +
       +exit 0
       +
 (DIR) diff --git a/config.mk b/config.mk
       @@ -0,0 +1,9 @@
       +# rfkilld version
       +VERSION = 0.2
       +
       +# Customize below to fit your system
       +
       +# paths
       +PREFIX = /usr
       +MANPREFIX = ${PREFIX}/share/man
       +