|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
--- sane-backends-1.0.18/tools/sane-desc.c.udev-098 2007-08-07 14:56:03.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+++ sane-backends-1.0.18/tools/sane-desc.c 2007-08-08 12:45:27.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
@@ -3153,14 +3153,14 @@ print_udev_header (void)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
("#\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"# udev rules file for supported USB devices\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"#\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- "# To add a USB device, add a rule to the list below between the SUBSYSTEM...\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- "# and LABEL... lines.\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ "# To add support for a USB device, add rules to the \"usb\" and \"usb_device\"\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ "# lists below between their respective \"# BEGIN ...\" and \"# END ...\" lines.\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"#\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"# To run a script when your device is plugged in, add RUN=\"/path/to/script\"\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- "# to the appropriate rule.\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ "# to the appropriate rules.\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
printf
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
("#\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- "# The following list already contains a lot of scanners. If your scanner\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ "# The following lists already contains a lot of scanners. If your scanner\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"# isn't mentioned there, add it as explained above and mail the entry to\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
"#\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
@@ -3169,11 +3169,44 @@ print_udev_header (void)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
static void
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
print_udev (void)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- usbid_type *usbid = create_usbids_table ();
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ usbid_type *usbid_first = create_usbids_table ();
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ usbid_type *usbid = usbid_first;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
print_udev_header ();
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
printf ("\nACTION!=\"add\", GOTO=\"libsane_rules_end\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
- printf ("SUBSYSTEM!=\"usb_device\", GOTO=\"libsane_rules_end\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("\nATTR{dev}!=\"?*\", GOTO=\"libsane_rules_end\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("SUBSYSTEM==\"usb\", GOTO=\"libsane_usb_rules\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("SUBSYSTEM==\"usb_device\", GOTO=\"libsane_usb_device_rules\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("GOTO=\"libsane_rules_end\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ /* SUBSYSTEM=="usb" -> ATTR{} */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("LABEL=\"libsane_usb_rules\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("# BEGIN scanner rules for SUBSYSTEM==\"usb\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ while (usbid)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ manufacturer_model_type * name = usbid->name;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("# ");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ while (name)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ if (name != usbid->name)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf (" | ");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("%s", name->name);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ name = name->next;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("ATTR{idVendor}==\"%s\", ATTR{idProduct}==\"%s\", SYMLINK+=\"scanner-%%k\"\n",
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ usbid->usb_vendor_id + 2, usbid->usb_product_id + 2);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ usbid = usbid->next;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("# END scanner rules for SUBSYSTEM==\"usb\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("GOTO=\"libsane_rules_end\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ /* SUBSYSTEM=="usb_device" -> ATTRS{} */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("LABEL=\"libsane_usb_device_rules\"\n\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("# BEGIN scanner rules for SUBSYSTEM==\"usb_device\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ usbid = usbid_first;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
while (usbid)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
manufacturer_model_type * name = usbid->name;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
@@ -3187,10 +3220,13 @@ print_udev (void)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
name = name->next;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
printf ("\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
- printf ("SYSFS{idVendor}==\"%s\", SYSFS{idProduct}==\"%s\", SYMLINK+=\"scanner-%%k\"\n",
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("ATTRS{idVendor}==\"%s\", ATTRS{idProduct}==\"%s\", SYMLINK+=\"scanner-%%k\"\n",
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
usbid->usb_vendor_id + 2, usbid->usb_product_id + 2);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
usbid = usbid->next;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e2ae888 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("# END scanner rules for SUBSYSTEM==\"usb_device\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+ printf ("GOTO=\"libsane_rules_end\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
printf ("\nLABEL=\"libsane_rules_end\"\n");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
4201f50 |
|