Fixed munging of usb_bcdDevice for 2.2 kernels
From debian user Tom Huckstep, I've receive the following patches:
etc/hotplug/usb.agent +24 -2
@@ -39,6 +39,8 @@ # # HISTORY: # +# 04-Dec-2001 Fixed munging of usb_bcdDevice for 2.2 kernels (Tom +# Huckstep) # 14-Mar-2001 Cleanup, bitmask the match_flags # 26-Feb-2001 Cleanup, support comments (Gioele Barabucci) # 23-Jan-2001 Update 2.2 handling; unfortunately there's no "feature
@@ -120,8 +122,28 @@ # work around 2.2 brokenness # munges the usb_bcdDevice such that it is a integer rather # than a float: e.g. 1.0 become 0100 - PRODUCT=`echo $PRODUCT | sed -e "s+\.\([0-9]\)$+.\10+" -e "s/\.$/00/" \ - -e "s+/\([0-9]\)\.\([0-9][0-9]\)+/0\1\2+"` + + # In PRODUCT=x/y/z if z has only one digit after a decimal point then a + # trailing zero is added. If z has only one digit before a decimal + # point then a leading zero is added. The decimal point is then + # removed. + + # e.g. a.b -> 0ab0 + # ab.c -> cab0 + # a.bc -> 0abc + # ab.cd -> abcd + + # Why does the kernel give us this in such a weird format? I don't + # know, but looking at usb/usb.c in your 2.2 kernel source may help. + # N.B. to_bcd() + + # Add the trailing zero + PRODUCT=`echo $PRODUCT | sed -e "s+\.\([0-9]\)$+.\10+"` + # Add the leading zero + PRODUCT=`echo $PRODUCT | sed -e "s/\/\([0-9].[0-9][0-9]\)$/\/0\1/"` + # Remove the decimal point + PRODUCT=`echo $PRODUCT | sed -e "s/\/\([0-9][0-9]\)\.\([0-9][0-9]\)/\/\1\2/"` + set `echo $PRODUCT | $AWK -F/ '{print "0x" $1, "0x" $2, "0x" $3 }'` '' usb_idVendor=$1 usb_idProduct=$2
Thanks,
Fumitoshi UKAI
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel