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