summaryrefslogtreecommitdiffstats
path: root/cups-uri-compat.patch
blob: 2520a5bec6dcaa9dc3518ed0510a1fcced03e0a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
diff -up cups-1.5b1/backend/usb-unix.c.uri-compat cups-1.5b1/backend/usb-unix.c
--- cups-1.5b1/backend/usb-unix.c.uri-compat	2011-05-24 15:59:05.000000000 +0200
+++ cups-1.5b1/backend/usb-unix.c	2011-05-24 16:02:03.000000000 +0200
@@ -63,11 +63,34 @@ print_device(const char *uri,		/* I - De
   int		device_fd;		/* USB device */
   ssize_t	tbytes;			/* Total number of bytes written */
   struct termios opts;			/* Parallel port options */
+  char		*fixed_uri = strdup (uri);
+  char		*p;
 
 
   (void)argc;
   (void)argv;
 
+  p = strchr (fixed_uri, ':');
+  if (p++ != NULL)
+  {
+    char *e;
+    p += strspn (p, "/");
+    e = strchr (p, '/');
+    if (e > p)
+    {
+      size_t mfrlen = e - p;
+      e++;
+      if (!strncasecmp (e, p, mfrlen))
+      {
+	char *x = e + mfrlen;
+	if (!strncmp (x, "%20", 3))
+	  /* Take mfr name out of mdl name for compatibility with
+	   * Fedora 11 before bug #507244 was fixed. */
+	  strcpy (e, x + 3); puts(fixed_uri);
+      }
+    }
+  }
+
  /*
   * Open the USB port device...
   */
@@ -107,10 +130,10 @@ print_device(const char *uri,		/* I - De
              _cups_strncasecmp(hostname, "Minolta", 7);
 #endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ */
 
-    if (use_bc && !strncmp(uri, "usb:/dev/", 9))
+    if (use_bc && !strncmp(fixed_uri, "usb:/dev/", 9))
       use_bc = 0;
 
-    if ((device_fd = open_device(uri, &use_bc)) == -1)
+    if ((device_fd = open_device(fixed_uri, &use_bc)) == -1)
     {
       if (getenv("CLASS") != NULL)
       {