slackware-current/source/a/udev/rule_generator.diff
Patrick J Volkerding b76270bf9e Slackware 13.1
Wed May 19 08:58:23 UTC 2010
Slackware 13.1 x86_64 stable is released!
Lots of thanks are due -- see the RELEASE_NOTES and the rest of the
ChangeLog for credits.  The ISOs are on their way to replication,
a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD.
We are taking pre-orders now at store.slackware.com, and offering
a discount if you sign up for a subscription.  Consider picking up
a copy to help support the project.  Thanks again to the Slackware
community for testing, contributing, and generally holding us to a
high level of quality.  :-)
Enjoy!
2018-05-31 22:43:05 +02:00

78 lines
2.4 KiB
Diff

diff -Naur udev.orig/extras/rule_generator/write_cd_rules udev/extras/rule_generator/write_cd_rules
--- udev.orig/extras/rule_generator/write_cd_rules 2009-05-19 00:24:39.000000000 -0300
+++ udev/extras/rule_generator/write_cd_rules 2009-05-19 01:02:17.000000000 -0300
@@ -3,7 +3,8 @@
# This script is run if an optical drive lacks a rule for persistent naming.
#
# It adds symlinks for optical drives based on the device class determined
-# by cdrom_id and used ID_PATH to identify the device.
+# by cdrom_id and used ID_PATH or ID_SERIAL or ID_MODEL and ID_REVISION
+# to identify the device.
#
# (C) 2006 Marco d'Itri <md@Linux.IT>
#
@@ -96,18 +97,57 @@
choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
+[ "$link_num" = "" ] && link_num=0
match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"
-
write_rule "$match" "cdrom$link_num" "$comment"
-[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
- write_rule "$match" "cdrw$link_num"
-[ "$ID_CDROM_DVD" ] && \
- write_rule "$match" "dvd$link_num"
-[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
- write_rule "$match" "dvdrw$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' cdrom)" = "" ]; then
+ write_rule "$match" "cdrom"
+ fi
+
+ if [ "$ID_CDROM_CD_R" ]; then
+ write_rule "$match" "cdr$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' cdr)" = "" ]; then
+ write_rule "$match" "cdr"
+ fi
+
+ write_rule "$match" "cdwriter$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' cdwriter)" = "" ]; then
+ write_rule "$match" "cdwriter"
+ fi
+
+ if [ "$ID_CDROM_CD_RW" ]; then
+ write_rule "$match" "cdrw$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' cdrw)" = "" ]; then
+ write_rule "$match" "cdrw"
+ fi
+ fi
+
+ if [ "$(find_all_rules 'SYMLINK+=' writer)" = "" ]; then
+ write_rule "$match" "writer"
+ fi
+ fi
+
+ if [ "$ID_CDROM_DVD" ]; then
+ write_rule "$match" "dvd$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' dvd)" = "" ]; then
+ write_rule "$match" "dvd"
+ fi
+
+ if [ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ]; then
+ write_rule "$match" "dvdrw$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' dvdrw)" = "" ]; then
+ write_rule "$match" "dvdrw"
+ fi
+
+ write_rule "$match" "dvdwriter$link_num"
+ if [ "$(find_all_rules 'SYMLINK+=' dvdwriter)" = "" ]; then
+ write_rule "$match" "dvdwriter"
+ fi
+ fi
+ fi
echo >> $RULES_FILE
unlock_rules_file