4 HOTPLUGPATH=/etc/hotplug
7 UDEVPATH=/etc/udev/rules.d
9 HALBASEPATH=/usr/share/hal/fdi/information
10 HALPATH=/usr/share/hal/fdi/information/20thirdparty
13 # See if the parameter script ($2), device ($3) and productid ($4)
14 # are already defined in the usermap ($1)
17 if [ "x${LINE}" != "x" ]; then
18 firstword=`echo ${LINE} | awk '{ print $1 }'`
19 if [ ${firstword} != "#" ]; then
20 # This is a device line entry
22 manid=`echo ${LINE} | awk '{ print $3 }'`
23 productid=`echo ${LINE} | awk '{ print $4 }'`
24 # Skip blank products...
25 if [ "x${script}" = "x$2" ]; then
26 if [ "x${manid}" = "x$3" ]; then
27 if [ "x${productid}" = "x$4" ]; then
40 # Scan the usermap $2 for all devices in $1 to see if they are already
41 # there, else patch the usermap.
42 function patchusermap {
46 if [ "x$LINE" != "x" ]; then
47 firstword=`echo ${LINE} | awk '{ print $1 }'`
48 if [ ${firstword} = "#" ]; then
49 # This is a comment line, save it.
52 # This is a device line entry
54 manid=`echo ${LINE} | awk '{ print $3 }'`
55 productid=`echo ${LINE} | awk '{ print $4 }'`
56 # Skip blank products...
57 if [ "x${manid}" != "x" ]; then
58 # See if this product is already in the usermap
59 echo "Checking for product ${productid} in $2..."
60 if [ `inmap $2 ${script} ${manid} ${productid}` = "no" ]; then
61 echo "Not present, adding to hotplug map."
66 echo "Already installed."
74 # Check for udev first
75 if test -d ${UDEVPATH} ; then
76 echo "You seem to have udev on your system. Installing udev rules..."
77 ${INSTALL} ${UDEVRULES} ${UDEVPATH}
78 echo "You may need additional setup to get correct permissions on your device."
79 echo "See the INSTALL file for information."
80 echo "Do you also want to install HAL support or the old hotplug support (y/n)?"
82 if [ "$IN" = "y" ] || [ "$IN" = "Y" ]; then
90 if test -d ${HALBASEPATH} ; then
91 echo "You seem to have HAL on your system. Installing HAL rules..."
93 ${INSTALL} ${HALRULES} ${HALPATH}
94 echo "Do you also want to install the old hotplug support (y/n)?"
96 if [ "$IN" = "y" ] || [ "$IN" = "Y" ]; then
104 # Check prerequisites
105 COMMAND=`which grep 2> /dev/null`
106 if [ "x${COMMAND}" = "x" ];
108 echo "Missing grep program. Fatal error."
111 COMMAND=`which awk 2> /dev/null`
112 if [ "x${COMMAND}" = "x" ];
114 echo "Missing awk program. Fatal error."
117 if [ "x${USER}" != "xroot" ];
119 echo "WARNING: this program should be run as root!"
123 # This script locates the hotplug distribution on a certain host
124 # and sets up userland hotplugging scripts according to rules.
125 # The in-parameters are the hotplug directory and the name of a
126 # file of hotplug device entries and a script to be executed for
129 if test -d ${HOTPLUGPATH}
131 echo "Hotplug in ${HOTPLUGPATH}"
133 echo "Hotplug missing on this system. Cannot install."
137 if test -d ${HOTPLUGPATH}/usb
139 echo "Has usb subdirectory."
141 mkdir ${HOTPLUGPATH}/usb
144 echo "Installing script."
145 ${INSTALL} libmtp.sh ${HOTPLUGPATH}/usb
146 echo "Installing usermap."
147 ${INSTALL} -m 644 ${USERMAP} ${HOTPLUGPATH}/usb
148 # If we find a usb.usermap file, and we see that this distribution
149 # of hotplug does not support private usermaps, then we need to
150 # patch the usb.usermap file.
152 # Create a merged file, diff the files to each other, and if there
153 # were mismatches, then patch the installed file.
154 echo "Checking hotplugging CVS version..."
155 echo "/etc/hotplug/usb/*.usermap support was added in august 2002"
157 CVSTAG=`grep '\$Id:' /etc/hotplug/usb.agent`
158 if [ "x${CVSTAG}" != "x" ]; then
159 DATE=`echo ${CVSTAG} | awk '{ print $5 }'`
160 echo "Hotplug version seems to be from ${DATE}"
161 YEAR=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $1; }'`
162 MONTH=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $2; }'`
163 DAY=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $3; }'`
164 if [ "${YEAR}" -gt "2002" ]; then
167 if [ "${YEAR}" -eq "2002" ]; then
168 if [ "${MONTH}" -ge "08" ]; then
174 if [ "x${EDITMAP}" == "xyes" ]; then
175 echo "We need to edit the ${HOTPLUGPATH}/usb.usermap if it exists..."
176 if test -f ${HOTPLUGPATH}/usb.usermap
178 echo "We have a usb.usermap..."
179 patchusermap ${USERMAP} /etc/hotplug/usb.usermap
183 echo "Hotplugging successfully installed."