chiark / gitweb /
delete cdromsymlinks* - obsoleted by cdrom_id and IMPORT rules
[elogind.git] / extras / ide-devfs.sh
index 3409c407eb5f97d358abe2a59dc074c27b7bad8d..d4c05b53426dba333691dbb211aa0c338d683331 100644 (file)
@@ -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}", GROUP="%c{3}"
 
-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
-