X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fide-devfs.sh;h=8648f6c0c06d7c97678cef10f9bc7993394a693f;hb=b6864b4bf1945d6b950a77e96fd68e9952bbeb02;hp=3409c407eb5f97d358abe2a59dc074c27b7bad8d;hpb=4af58c70571c5c63edaff20d2032c8eeb59678b6;p=elogind.git diff --git a/extras/ide-devfs.sh b/extras/ide-devfs.sh index 3409c407e..8648f6c0c 100644 --- a/extras/ide-devfs.sh +++ b/extras/ide-devfs.sh @@ -1,27 +1,47 @@ #!/bin/sh -# udev CALLOUT script +# udev external PROGRAM script # return devfs-names for ide-devices -# CALLOUT, BUS="ide", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", ID="hd*", NAME="%1c", SYMLINK="%2c" +# BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%1c %2c" -HOST=${2%\.[0-9]} -TARGET=${2#[0-9]\.} +HOST="${2%\.[0-9]}" +TARGET="${2#[0-9]\.}" -if [ -z ${HOST#[13579]} ]; then - HOST=`expr $HOST - 1` +if [ -z "${HOST#[13579]}" ]; then + HOST=`expr ${HOST} - 1` BUS="1" else BUS="0" fi +get_dev_number() { + local x= + local num=0 + local MEDIA= + local DRIVE="${1%[0-9]*}" + + for x in /proc/ide/*/media; do + if [ -e "${x}" ]; then + MEDIA=`cat ${x}` + if [ "${MEDIA}" = "$2" ]; then + num=`expr ${num} + 1` + fi + if [ "${x}" = "/proc/ide/${DRIVE}/media" ]; then + break + fi + fi + done + + echo `expr ${num} - 1` +} + if [ -z "$3" ]; then - MEDIA=`cat /proc/ide/$1/media` - if [ "$MEDIA" = "cdrom" ]; then - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/cd - elif [ "$MEDIA" = "disk" ]; then - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/disc + MEDIA=`cat /proc/ide/${1}/media` + if [ "${MEDIA}" = "cdrom" ]; then + echo ide/host${HOST}/bus${BUS}/target${TARGET}/lun0/cd cdroms/cdrom`get_dev_number $1 cdrom` + elif [ "${MEDIA}" = "disk" ]; then + echo ide/host${HOST}/bus${BUS}/target${TARGET}/lun0/disc discs/disc`get_dev_number $1 disk`/disc fi else - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/part$3 + echo ide/host${HOST}/bus${BUS}/target${TARGET}/lun0/part$3 discs/disc`get_dev_number $1 disk`/part$3 fi -