# under the terms of the GNU General Public License as published by the
# Free Software Foundation version 2 of the License.
+# debug, if UDEV_LOG=<debug>
+if [ -n "$UDEV_LOG" ]; then
+ if [ "$UDEV_LOG" -ge 7 ]; then
+ set -x
+ fi
+fi
+
RULES_FILE="/etc/udev/rules.d/70-persistent-cd.rules"
. /lib/udev/rule_generator.functions
find_next_available() {
- raw_find_next_available "$(find_all_rules 'SYMLINK+=' $1)"
+ raw_find_next_available "$(find_all_rules 'SYMLINK\+=' "$1")"
}
write_rule() {
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
- echo "# program, probably run by the cd-aliases-generator.rules rules file."
+ echo "# program, run by the cd-aliases-generator.rules rules file."
echo "#"
- echo "# You can modify it, as long as you keep each rule on a single line"
- echo "# and set the \$GENERATED variable."
+ echo "# You can modify it, as long as you keep each rule on a single"
+ echo "# line, and set the \$GENERATED variable."
echo ""
fi
exit 1
fi
+if [ "$1" ]; then
+ METHOD="$1"
+else
+ METHOD='by-path'
+fi
+
+case "$METHOD" in
+ by-path)
+ if [ -z "$ID_PATH" ]; then
+ echo "$DEVPATH not supported by path_id. by-id may work." >&2
+ exit 1
+ fi
+ RULE="ENV{ID_PATH}==\"$ID_PATH\""
+ ;;
+
+ by-id)
+ if [ "$ID_SERIAL" ]; then
+ RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
+ elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
+ RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
+ else
+ echo "$DEVPATH not supported by ata_id. by-path may work." >&2
+ exit 1
+ fi
+ ;;
+
+ *)
+ echo "Invalid argument (must be either by-path or by-id)." >&2
+ exit 1
+ ;;
+esac
+
# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
-match="ENV{ID_CDROM}==\"?*\", ENV{ID_PATH}==\"$ID_PATH\""
+match="ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"