X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Fide-devfs.sh;h=580a751abe75092d14f04f276c378943e6320e56;hp=3409c407eb5f97d358abe2a59dc074c27b7bad8d;hb=8a0dc204e902a47a5b251c6d4a29eddb8f4a634a;hpb=4af58c70571c5c63edaff20d2032c8eeb59678b6 diff --git a/extras/ide-devfs.sh b/extras/ide-devfs.sh index 3409c407e..580a751ab 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="%c{1} %c{2}" -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=$((${HOST} - 1)) BUS="1" else BUS="0" fi -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 +get_dev_number() { + num=0 + DRIVE="${1%%[0-9]*}" + + for x in /proc/ide/*/media; do + if [ -e "${x}" ]; then + lMEDIA=`cat ${x}` + if [ "${lMEDIA}" = "$2" ]; then + num=$((${num} + 1)) + fi + if [ "${x}" = "/proc/ide/${DRIVE}/media" ]; then + break + fi + fi + done + + echo $((${num} - 1)) +} + +if [ -z "$3" ] && [ -f /proc/ide/${1}/media ]; then + 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` ${MEDIA} + elif [ "${MEDIA}" = "floppy" ]; then + echo ide/host${HOST}/bus${BUS}/target${TARGET}/lun0/disc floppies/floppy`get_dev_number $1 floppy`/disc ${MEDIA} + elif [ "${MEDIA}" = "disk" ]; then + echo ide/host${HOST}/bus${BUS}/target${TARGET}/lun0/disc discs/disc`get_dev_number $1 disk`/disc ${MEDIA} 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 -