57 lines
1.5 KiB
Bash
57 lines
1.5 KiB
Bash
#! /bin/bash
|
|
#
|
|
# Johannes Meixner <jsmeix@suse.de>, 2004, 2005, 2006
|
|
|
|
#set -x
|
|
|
|
export PATH="/sbin:/usr/sbin:/usr/bin:/bin"
|
|
export LC_ALL="POSIX"
|
|
export LANG="POSIX"
|
|
umask 022
|
|
|
|
MY_NAME=${0##*/}
|
|
|
|
# Input:
|
|
|
|
# Create temporary files:
|
|
TMP_DATA=$(mktemp -u /tmp/$MY_NAME.XXXXXX)
|
|
|
|
# Extract USB entries from the models.dat file:
|
|
test -n "$1" && RULES_FILE="$1" || RULES_FILE="models.dat"
|
|
ls $RULES_FILE &>/dev/null || { echo "$MY_NAME error: Required models.dat file '$RULES_FILE' not found." 1>&2 ; exit 3 ; }
|
|
tr '[:upper:]' '[:lower:]' <$RULES_FILE | egrep '^usb-pid=[0-9a-f][0-9a-f][0-9a-f][0-9a-f]$' | grep -v '0000' | cut -s -d '=' -f 2 | sort -u >$TMP_DATA
|
|
tr '[:upper:]' '[:lower:]' <$RULES_FILE | egrep '^usb-pid=[0-9a-f][0-9a-f][0-9a-f]$' | grep -v '000' | cut -s -d '=' -f 2 | sort -u | sed -e 's/^/0/' >>$TMP_DATA
|
|
|
|
# Output:
|
|
|
|
# Output header:
|
|
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'
|
|
echo '<deviceinfo version="0.2">'
|
|
echo ' <device>'
|
|
|
|
# Output model specific HP USB device entries:
|
|
exec <$TMP_DATA
|
|
while read PRODUCT
|
|
do echo
|
|
echo ' <match key="info.bus" string="usb_device">'
|
|
echo ' <match key="usb_device.vendor_id" int="0x03f0">'
|
|
echo -n ' <match key="usb_device.product_id" int="'
|
|
echo -n "0x$PRODUCT"
|
|
echo '">'
|
|
echo ' <append key="info.capabilities" type="strlist">scanner</append>'
|
|
echo ' </match>'
|
|
echo ' </match>'
|
|
echo ' </match>'
|
|
done
|
|
|
|
# Output footer:
|
|
echo
|
|
echo ' </device>'
|
|
echo '</deviceinfo>'
|
|
|
|
# Remove the temporary file
|
|
rm $TMP_DATA
|
|
|
|
exit 0
|
|
|