--- /dev/null
+diff -urN libgphoto2-2.4.0-x/packaging/generic/print-camera-list.c libgphoto2-2.4.0/packaging/generic/print-camera-list.c
+--- libgphoto2-2.4.0-x/packaging/generic/print-camera-list.c 2007-07-27 02:35:28.000000000 +0200
++++ libgphoto2-2.4.0/packaging/generic/print-camera-list.c 2007-08-26 12:40:32.673202319 +0200
+@@ -444,8 +444,10 @@
+ "BUS!=\"usb_device\", GOTO=\"libgphoto2_rules_end\"\n"
+ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n\n",
+ /* UDEV_0_98 */
+- "SUBSYSTEM!=\"usb_device\", GOTO=\"libgphoto2_rules_end\"\n"
+- "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n\n"
++ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n"
++ "SUBSYSTEM==\"usb\", ENV{DEVTYPE}==\"usb_device\", GOTO=\"libgphoto2_rules_start\"\n"
++ "SUBSYSTEM!=\"usb_device\", GOTO=\"libgphoto2_rules_end\"\n\n"
++ "LABEL=\"libgphoto2_rules_start\"\n\n"
+ };
+ static char *usbcam_strings[] = {
+ /* UDEV_PRE_0_98 */
+@@ -573,19 +575,19 @@
+ printf("RUN+=\"%s\"\n", pdata->script);
+ } else if (pdata->mode != NULL || pdata->owner != NULL || pdata->group != NULL) {
+ if (pdata->mode != NULL) {
+- printf("MODE=\"%s\"", pdata->mode);
++ printf("MODE=\"%s\", RUN=\"/bin/chmod %s $env{DEVICE}\"", pdata->mode, pdata->mode);
+ if (pdata->owner != NULL || pdata->group != NULL) {
+ printf(", ");
+ }
+ }
+ if (pdata->owner != NULL) {
+- printf("OWNER=\"%s\"", pdata->owner);
++ printf("OWNER=\"%s\", RUN=\"/bin/chown %s $env{DEVICE}\"", pdata->owner, pdata->owner);
+ if (pdata->group != NULL) {
+ printf(", ");
+ }
+ }
+ if (pdata->group != NULL) {
+- printf("GROUP=\"%s\"", pdata->group);
++ printf("GROUP=\"%s\", RUN=\"/bin/chgrp %s $env{DEVICE}\"", pdata->group, pdata->group);
+ }
+ printf("\n");
+ } else {