home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- QUEUE=/var/lib/register-module
- BLACKLIST=0
- ADD_TO_INITRD=0
- TYPE=options
- PARAMS_ONLY=0
- ADD_PARAMS=1
-
- if [ "$1" = "-b" ]; then
- BLACKLIST=1
- shift 1
- fi
- if [ "$1" = "-i" ]; then
- ADD_TO_INITRD=1
- shift 1
- fi
- if [ "$1" = "-t" ]; then
- TYPE=$2
- shift 2
- fi
- if [ "$1" = "-p" ]; then
- PARAMS_ONLY=1
- shift 1
- fi
- if [ "$1" = "-a" ]; then
- ADD_PARAMS=1
- shift 1
- fi
-
- MODULE=$1
- shift
- PARAMS="$@"
-
- BLACKLISTFILE=$QUEUE/$MODULE.blacklist
- LOADFILE=$QUEUE/$MODULE.load
- INITRDFILE=$QUEUE/$MODULE.initrd
- PARAMFILE=$QUEUE/$MODULE.params
-
- if [ -d /etc/modprobe.d ] && [ ! -e /etc/modprobe.conf ]; then
- MODPROBE_OPT=/etc/modprobe.d/local.conf
- MODPROBE_BL=/etc/modprobe.d/blacklist.local.conf
- else
- MODPROBE_OPT=/etc/modprobe.conf
- MODPROBE_BL=/etc/modprobe.conf
- fi
-
- mkdir -p $QUEUE
- if [ "$BLACKLIST" = 1 ]; then
- touch $BLACKLISTFILE
- echo "blacklist $MODULE" >> $MODPROBE_BL
- exit 0
- fi
-
- if [ "$PARAMS_ONLY" = 0 ]; then
- if [ "$ADD_TO_INITRD" = 1 ]; then
- touch $INITRDFILE
- else
- touch $LOADFILE
- fi
- fi
-
- if [ -n "$PARAMS" ]; then
- if [ -e "$PARAMFILE" ]; then
- if [ "$ADD_PARAMS" = 1 ]; then
- PARAMS="$(grep "^$TYPE:" $PARAMFILE 2>/dev/null | sed "s/^$TYPE:\(.*\)$/\1/") $PARAMS"
- fi
- grep -v "^$TYPE:" $PARAMFILE > $PARAMFILE.new
- mv $PARAMFILE.new $PARAMFILE
- fi
- echo "$TYPE:$PARAMS" >> $PARAMFILE
-
- if [ "$TYPE" = options ]; then
- for file in /etc/modules.conf $MODPROBE_OPT; do
- if [ -e "$file" ]; then
- grep -v "options $MODULE " $file > $file.new
- mv $file.new $file
- else
- touch $file
- fi
- echo "options $MODULE $PARAMS" >> $file
- done
- fi
- fi
-