Initial revision
diff --git a/hotplug.sh.in b/hotplug.sh.in
new file mode 100755
index 0000000..df3a24b
--- /dev/null
+++ b/hotplug.sh.in
@@ -0,0 +1,164 @@
+#!/bin/sh
+
+INSTALL="@INSTALL@"
+HOTPLUGPATH=/etc/hotplug
+SCRIPTNAME=libmtp.sh
+USERMAP=libmtp.usermap
+UDEVPATH=/etc/udev/rules.d
+UDEVRULES=libmtp.rules
+
+# See if the parameter script ($2), device ($3) and productid ($4)
+# are already defined in the usermap ($1)
+function inmap {
+ while read LINE; do
+ if [ "x${LINE}" != "x" ]; then
+ firstword=`echo ${LINE} | awk '{ print $1 }'`
+ if [ ${firstword} != "#" ]; then
+ # This is a device line entry
+ script=${firstword}
+ manid=`echo ${LINE} | awk '{ print $3 }'`
+ productid=`echo ${LINE} | awk '{ print $4 }'`
+ # Skip blank products...
+ if [ "x${script}" = "x$2" ]; then
+ if [ "x${manid}" = "x$3" ]; then
+ if [ "x${productid}" = "x$4" ]; then
+ echo "yes"
+ return 0
+ fi
+ fi
+ fi
+ fi
+ fi
+ done < $1
+ echo "no"
+ return 0
+}
+
+# Scan the usermap $2 for all devices in $1 to see if they are already
+# there, else patch the usermap.
+function patchusermap {
+ # Nullify comment
+ comment=""
+ while read LINE; do
+ if [ "x$LINE" != "x" ]; then
+ firstword=`echo ${LINE} | awk '{ print $1 }'`
+ if [ ${firstword} = "#" ]; then
+ # This is a comment line, save it.
+ comment=${LINE}
+ else
+ # This is a device line entry
+ script=${firstword}
+ manid=`echo ${LINE} | awk '{ print $3 }'`
+ productid=`echo ${LINE} | awk '{ print $4 }'`
+ # Skip blank products...
+ if [ "x${manid}" != "x" ]; then
+ # See if this product is already in the usermap
+ echo "Checking for product ${productid} in $2..."
+ if [ `inmap $2 ${script} ${manid} ${productid}` = "no" ]; then
+ echo "Not present, adding to hotplug map."
+ echo ${comment} >> $2
+ echo ${LINE} >> $2
+ comment=""
+ else
+ echo "Already installed."
+ fi
+ fi
+ fi
+ fi
+ done < $1
+}
+
+# Check for udev first
+if test -d ${UDEVPATH} ; then
+ echo "You seem to have udev on your system. Installing udev rules..."
+ ${INSTALL} ${UDEVRULES} ${UDEVPATH}
+ echo "You may need additional setup to get correct permissions on your device."
+ echo "See the INSTALL file for information."
+ echo "Do you also want to install the old hotplug support (y/n)?"
+ read IN
+ if [ "$IN" = "y" ] || [ "$IN" = "Y" ]; then
+ echo "Continuing..."
+ else
+ exit 0
+ fi
+fi
+
+
+# Check prerequisites
+COMMAND=`which grep 2> /dev/null`
+if [ "x${COMMAND}" = "x" ];
+then
+ echo "Missing grep program. Fatal error."
+ exit 1
+fi
+COMMAND=`which awk 2> /dev/null`
+if [ "x${COMMAND}" = "x" ];
+then
+ echo "Missing awk program. Fatal error."
+ exit 1
+fi
+
+# This script locates the hotplug distribution on a certain host
+# and sets up userland hotplugging scripts according to rules.
+# The in-parameters are the hotplug directory and the name of a
+# file of hotplug device entries and a script to be executed for
+# these deviced.
+
+if test -d ${HOTPLUGPATH}
+then
+ echo "Hotplug in ${HOTPLUGPATH}"
+else
+ echo "Hotplug missing on this system. Cannot install."
+ exit 1
+fi
+
+if test -d ${HOTPLUGPATH}/usb
+then
+ echo "Has usb subdirectory."
+else
+ mkdir ${HOTPLUGPATH}/usb
+fi
+
+echo "Installing script."
+${INSTALL} nomadjukebox ${HOTPLUGPATH}/usb
+echo "Installing usermap."
+${INSTALL} -m 644 ${USERMAP} ${HOTPLUGPATH}/usb
+# If we find a usb.usermap file, and we see that this distribution
+# of hotplug does not support private usermaps, then we need to
+# patch the usb.usermap file.
+#
+# Create a merged file, diff the files to each other, and if there
+# were mismatches, then patch the installed file.
+echo "Checking hotplugging CVS version..."
+echo "/etc/hotplug/usb/*.usermap support was added in august 2002"
+EDITMAP="yes"
+CVSTAG=`grep '\$Id:' /etc/hotplug/usb.agent`
+if [ "x${CVSTAG}" != "x" ]; then
+ DATE=`echo ${CVSTAG} | awk '{ print $5 }'`
+ echo "Hotplug version seems to be from ${DATE}"
+ YEAR=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $1; }'`
+ MONTH=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $2; }'`
+ DAY=`echo ${DATE} | awk 'BEGIN { FS="/"} {print $3; }'`
+ if [ "${YEAR}" -gt "2002" ]; then
+ EDITMAP="no"
+ else
+ if [ "${YEAR}" -eq "2002" ]; then
+ if [ "${MONTH}" -ge "08" ]; then
+ EDITMAP="no"
+ fi
+ fi
+ fi
+fi
+if [ "x${EDITMAP}" == "xyes" ]; then
+ echo "We need to edit the ${HOTPLUGPATH}/usb.usermap if it exists..."
+ if test -f ${HOTPLUGPATH}/usb.usermap
+ then
+ echo "We have a usb.usermap..."
+ patchusermap ${USERMAP} /etc/hotplug/usb.usermap
+ fi
+fi
+
+echo "Hotplugging successfully installed."
+
+exit 0
+