chiark / gitweb /
fix usb_id and let scsi_id ignore "illegal request"
[elogind.git] / extras / scsi_id / gen_scsi_id_udev_rules.sh
index 07e21eb..92fde5d 100644 (file)
 prefix=disk-
 scsi_id=/sbin/scsi_id
 
-dump_ids()
-{
-       cd ${sysfs_dir}/block
-       for b in sd*
-       do
-               echo -n "$b "
-               $scsi_id -s /block/$b
-               if [ $? != 0 ]
-               then
-                       echo $0 failed for device $b >&2
-                       exit 1
-               fi
-       done
-}
-
 sysfs_dir=$(mount | awk '$5 == "sysfs" {print $3}')
+if [ "$sysfs_dir" = "" ]
+then
+       sysfs_dir="/sys"
+       echo "Using sysfs mount point \"$sysfs_dir\"" >&2
+fi
 
 c=$(ls /${sysfs_dir}/block/sd* 2>/dev/null | wc -l)
 if [ $c = 0 ]
@@ -56,16 +46,21 @@ echo "# Start of autogenerated scsi_id rules. Edit the NAME portions of these"
 echo "# rules to your liking."
 echo "#"
 first_line=yes
-dump_ids | while read in
+
+#
+cd ${sysfs_dir}/block
+for name in sd*
 do
-       set $in
-       name=$1
-       shift
-       id="$*"
+       id=$($scsi_id -s /block/$name)
+       if [ $? != 0 ]
+       then
+               echo $0 failed for device $name exiting >&2
+               exit 1
+       fi
        if [ $first_line = "yes" ]
        then
                first_line=no
-               echo "BUS=\"scsi\", PROGRAM=\"${scsi_id}\", RESULT=\"${id}\", NAME=\"${prefix}${name}%n\""
+               echo "BUS=\"scsi\", PROGRAM=\"${scsi_id} -d %N -s %p\", RESULT=\"${id}\", NAME=\"${prefix}${name}%n\""
                echo
                echo "# Further RESULT keys use the result of the last PROGRAM rule."
                echo "# Be careful not to add any rules containing PROGRAM key between here"