#!/bin/sh
# This script will (hopefully) detect up to 2 cd/dvd type devices in one pc
# and configure them. It will set up links in /dev and modify /etc/fstab without
# any user intervention.
#
# wile_coyote was here
#

fstab="/etc/fstab"
rm -f /dev/cdrom 2>/dev/null
rm -f /dev/cdwriter 2>/dev/null
rm -f /dev/dvd 2>/dev/null
p="/proc/ide"
# 
# I'm setting up an array to be used later
#
declare -a cdtype
#
# This is where the device discovery and symbolic links in /dev get set up.
# NOTE: The cdwriter will always win as THE burning device...the cdrom will always win as the cdrom device

for i in hda hdb hdc hdd
do
    if [ -d $p/$i ]
    then
        cd $p/$i
	if [ `cat media` = "cdrom" ]
	then
	    CDDEVICE=`cat model`
	    case $CDDEVICE in 
	    `cat model|grep "CDRW"` | `cat model|grep "CD-RW"` | `cat model|grep "CD/R"` | `cat model|grep "CD/RW"` )	
		echo "Configuring /dev/"$i" as a cdwriter..."
		if [ -f /dev/cdwriter ]
		then
		    ln -sf /dev/$i /dev/cdwriter
		else
		    ln -sf /dev/$i /dev/cdwriter
		fi
		if [ ! -f /dev/cdrom ]
		then
		    ln -s /dev/$i /dev/cdrom 2>/dev/null
		fi    
		cdtype[0]="cdwriter"
		CDWRITER="$i"        
		 ;;
	    `cat model|grep "DVDRW"` | `cat model|grep "DVD-RW"` | `cat model|grep "DVDR"` | `cat model|grep "DVD/RW"` | `cat model|grep "DVD+R"` | `cat model|grep "DVD+RW"` )   
		echo "Configuring /dev/"$i" as a dvdwriter..."
		if [ ! -f /dev/cdwriter ]
		then
		    ln -s /dev/$i /dev/cdwriter 2>/dev/null
		fi
		if [ ! -f /dev/cdrom ]
		then
		    ln -s /dev/$i /dev/cdrom 2>/dev/null
		fi
		if [ ! -f /dev/dvd ]
		then
		    ln -s /dev/$i /dev/dvd 2>/dev/null
		fi        
		cdtype[1]="dvdwriter"
		DVDWRITER="$i"        
		 ;;
	    `cat model|grep "CD-ROM"` | `cat model|grep "CDROM"` | `cat model|grep "CD"` )
		echo "Configuring /dev/"$i" as a cd-rom..."
		if [ -f /dev/cdrom ]
		then
		    ln -sf /dev/$i /dev/cdrom
		else
		    ln -sf /dev/$i /dev/cdrom
		fi
		cdtype[2]="cdrom"
		CDROM="$i"        
		 ;;
	    `cat model|grep "DVDROM"` | `cat model|grep "DVD-ROM"` | `cat model|grep "DV"` ) 
		echo "Configuring /dev/"$i" as a dvd-rom..."
		if [ -f /dev/dvd ]
		then
		    ln -sf /dev/$i /dev/dvd
		else
		    ln -sf /dev/$i /dev/dvd
		fi
		if [ ! -f /dev/cdrom ]
		then
		    ln -s /dev/$i /dev/cdrom 2>/dev/null
		fi
		cdtype[3]="dvdrom"
		DVDROM="$i"    
		 ;;
    	    esac           	
	fi
    fi	
done

# 
# This writes any needed items to /etc/fstab
#
# NOTE: If both a cdwriter and a dvdwriter are found, the cdwriter get's an entry in /etc/fstab but the 
# dvdwriter does not. If a cdrom and a dvdrom exist, the cdrom will win as the cdrom in /etc/fstab.
#
# Order of importance:
# 			R/RW	ROM
# cdwriter		1	3
# dvdwriter		2	4
# cdrom			n/a	1
# dvdrom		n/a	2
#
#
if [ `echo ${cdtype[*]} | grep -o "cdwriter"` ] 2>/dev/null
then
    echo "/dev/$CDWRITER /mnt/cdwriter subfs fs=auto,user,ro 0 0" >> $fstab
fi
if [ ! `echo ${cdtype[*]} | grep -o "cdwriter"` -a `echo ${cdtype[*]} | grep -o "dvdwriter"` ] 2>/dev/null
then
    echo "/dev/$DVDWRITER /mnt/cdwriter subfs fs=auto,user,ro 0 0" >> $fstab
fi
if [ `echo ${cdtype[*]} | grep -o "cdrom"` ] 2>/dev/null
then
    echo "/dev/$CDROM /mnt/cdrom subfs fs=auto,user,ro 0 0" >> $fstab
fi
if [ ! `echo ${cdtype[*]} | grep -o "cdrom"` -a `echo ${cdtype[*]} | grep -o "dvdrom"` ] 2>/dev/null
then
    echo "/dev/$DVDROM /mnt/cdrom subfs fs=auto,user,ro 0 0" >> $fstab
fi
