summaryrefslogtreecommitdiff
path: root/tools/hotplug-ng
diff options
context:
space:
mode:
Diffstat (limited to 'tools/hotplug-ng')
-rw-r--r--tools/hotplug-ng/README46
-rwxr-xr-xtools/hotplug-ng/libsane.hotplug29
2 files changed, 75 insertions, 0 deletions
diff --git a/tools/hotplug-ng/README b/tools/hotplug-ng/README
new file mode 100644
index 0000000..1a17a19
--- /dev/null
+++ b/tools/hotplug-ng/README
@@ -0,0 +1,46 @@
+hotplug/hotplug-ng hook for sane-backends
+-----------------------------------------
+
+The libsane.hotplug script is intended to replace the existing hotplug scripts,
+as those won't be usable with the new hotplug-ng. The libsane.hotplug script
+works with both hotplug and hotplug-ng. For current Linux kernels, "udev" is
+state of the art, see the "udev" directory instead.
+
+This script is provided in the hope that it will be useful, simpler, faster and
+more extensible than the current usermap approach.
+
+
+INSTALLATION
+------------
+
+Install libsane.hotplug in /etc/hotplug/usb, and make it executable.
+
+Create the directory /etc/sane.d/hotplug and copy libsane.db there.
+
+
+FILE FORMAT
+-----------
+
+The libsane.db contains 5 tab-separated fields:
+
+0xVVVV<tab>0xPPPP<tab>root:scanner<tab>0660<tab>optional_script
+
+Fields:
+ - vendor ID
+ - product ID
+ - ownership (user:group)
+ - permissions
+ - path of an optional script to run (it can be omitted)
+
+
+USAGE
+-----
+
+When run by hotplug/hotplug-ng, the libsane.hotplug script will grep for
+^0xVVVV[[:space:]]0xPPPP in /etc/sane.d/hotplug/*.db. If a match is found,
+the settings are applied to the device.
+
+The optional script is then run; this script can access the environment
+variables set by hotplug/hotplug-ng (see the documentation). The libsane.hotplug
+script will also set and export the DEVVID and DEVPID variables, containing the
+vendor and device ID of the scanner (of the form VVVV and PPPP).
diff --git a/tools/hotplug-ng/libsane.hotplug b/tools/hotplug-ng/libsane.hotplug
new file mode 100755
index 0000000..dec38a5
--- /dev/null
+++ b/tools/hotplug-ng/libsane.hotplug
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# This file is part of the SANE distribution.
+# Hotplug USB hook for SANE
+
+if [ "$ACTION" != "add" ]; then
+ exit 0
+fi
+
+DEVVID=$(printf %4s $(echo $PRODUCT | cut -d'/' -f1) | tr ' ' 0)
+DEVPID=$(printf %4s $(echo $PRODUCT | cut -d'/' -f2) | tr ' ' 0)
+
+DEVCONF=$(grep -i "^0x$DEVVID[[:space:]]\+0x$DEVPID" /etc/sane.d/hotplug/*.db 2> /dev/null)
+
+if [ $? != 0 ]; then
+ exit 0
+fi
+
+set $DEVCONF
+
+chown $3 $DEVICE && chmod $4 $DEVICE
+
+if [ ! -z $5 -a -x $5 ]; then
+ export DEVVID
+ export DEVPID
+ exec $5
+fi
+
+exit 0