Index: etc/hotplug/usb.agent =================================================================== RCS file: /cvsroot/linux-hotplug/admin/etc/hotplug/usb.agent,v retrieving revision 1.12 diff -u -r1.12 usb.agent --- etc/hotplug/usb.agent 2001/04/24 15:07:33 1.12 +++ etc/hotplug/usb.agent 2001/05/23 00:35:47 @@ -18,6 +18,14 @@ # DEVFS=/proc/bus/usb # DEVICE=/proc/bus/usb/%03d/%03d # +# This script then adds the variable: +# +# REMOVER=/var/run/usb/ +# +# This is the path where the script would like to find a remover, if +# the target device needs one. This script is executed on remove if +# it is executable when the remove happens. +# # If usbdevfs is mounted on /proc/bus/usb, $DEVICE is a file which # can be read to get the device's current configuration descriptor. # (The "usbmodules" utility helps do that.) @@ -269,6 +277,11 @@ done } +# +# declare a REMOVER name that the add action can use to create a +# remover, or that the remove action can use to execute a remover. +# +declare -rx REMOVER=/var/run/usb/`echo $DEVICE | sed -e 's;/;%;g'` # # What to do with this USB hotplug event? @@ -281,6 +294,10 @@ FOUND=false LABEL="USB product $PRODUCT" + if [ -e "$REMOVER" ]; then + rm -f "$REMOVER" + fi + # on 2.4 systems, modutils 2.4.2+ maintains MAP_CURRENT # ... otherwise we can't rely on it (sigh) case "$KERNEL" in @@ -320,6 +337,13 @@ exit 2 fi + ;; + +remove) + if [ -x $REMOVER ]; then + $REMOVER + fi + rm -f $REMOVER ;; *) Index: etc/hotplug/usb.rc =================================================================== RCS file: /cvsroot/linux-hotplug/admin/etc/hotplug/usb.rc,v retrieving revision 1.8 diff -u -r1.8 usb.rc --- etc/hotplug/usb.rc 2001/03/22 04:52:56 1.8 +++ etc/hotplug/usb.rc 2001/05/23 00:35:47 @@ -134,6 +134,11 @@ return 1 fi + # Create a directory to hold remover programs. Close it up so + # that only hotplug scripts can write to this directory. + mkdir /var/run/usb + chmod 0700 /var/run/usb + # hotplug events didn't fire during booting; # cope with devices that enumerated earlier # and may not have been fully configured.