Tim Waugh d08cd1
diff -up cups-1.4rc1/backend/usb-unix.c.uri-compat cups-1.4rc1/backend/usb-unix.c
Tim Waugh d08cd1
--- cups-1.4rc1/backend/usb-unix.c.uri-compat	2009-07-15 10:48:46.992133677 +0100
Tim Waugh d08cd1
+++ cups-1.4rc1/backend/usb-unix.c	2009-07-15 10:49:05.305008114 +0100
Tim Waugh d08cd1
@@ -63,11 +63,34 @@ print_device(const char *uri,		/* I - De
Tim Waugh d08cd1
   int		device_fd;		/* USB device */
Tim Waugh d08cd1
   size_t	tbytes;			/* Total number of bytes written */
Tim Waugh d08cd1
   struct termios opts;			/* Parallel port options */
Tim Waugh d08cd1
+  char		*fixed_uri = strdup (uri);
Tim Waugh d08cd1
+  char		*p;
Tim Waugh d08cd1
 
Tim Waugh d08cd1
 
Tim Waugh d08cd1
   (void)argc;
Tim Waugh d08cd1
   (void)argv;
Tim Waugh d08cd1
 
Tim Waugh d08cd1
+  p = strchr (fixed_uri, ':');
Tim Waugh d08cd1
+  if (p++ != NULL)
Tim Waugh d08cd1
+  {
Tim Waugh d08cd1
+    char *e;
Tim Waugh d08cd1
+    p += strspn (p, "/");
Tim Waugh d08cd1
+    e = strchr (p, '/');
Tim Waugh d08cd1
+    if (e > p)
Tim Waugh d08cd1
+    {
Tim Waugh d08cd1
+      size_t mfrlen = e - p;
Tim Waugh d08cd1
+      e++;
Tim Waugh d08cd1
+      if (!strncasecmp (e, p, mfrlen))
Tim Waugh d08cd1
+      {
Tim Waugh d08cd1
+	char *x = e + mfrlen;
Tim Waugh d08cd1
+	if (!strncmp (x, "%20", 3))
Tim Waugh d08cd1
+	  /* Take mfr name out of mdl name for compatibility with
Tim Waugh d08cd1
+	   * Fedora 11 before bug #507244 was fixed. */
Tim Waugh d08cd1
+	  strcpy (e, x + 3); puts(fixed_uri);
Tim Waugh d08cd1
+      }
Tim Waugh d08cd1
+    }
Tim Waugh d08cd1
+  }
Tim Waugh d08cd1
+
Tim Waugh d08cd1
  /*
Tim Waugh d08cd1
   * Open the USB port device...
Tim Waugh d08cd1
   */
Tim Waugh d08cd1
@@ -107,10 +130,10 @@ print_device(const char *uri,		/* I - De
Tim Waugh d08cd1
              strncasecmp(hostname, "Minolta", 7);
Tim Waugh d08cd1
 #endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
Tim Waugh d08cd1
 
Tim Waugh d08cd1
-    if (use_bc && !strncmp(uri, "usb:/dev/", 9))
Tim Waugh d08cd1
+    if (use_bc && !strncmp(fixed_uri, "usb:/dev/", 9))
Tim Waugh d08cd1
       use_bc = 0;
Tim Waugh d08cd1
 
Tim Waugh d08cd1
-    if ((device_fd = open_device(uri, &use_bc)) == -1)
Tim Waugh d08cd1
+    if ((device_fd = open_device(fixed_uri, &use_bc)) == -1)
Tim Waugh d08cd1
     {
Tim Waugh d08cd1
       if (getenv("CLASS") != NULL)
Tim Waugh d08cd1
       {