]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - backend/usb-unix.c
Load cups into easysw/current.
[thirdparty/cups.git] / backend / usb-unix.c
index e034a0a2c81eda7db6f4b191638dbe44dfb5e0a2..39df2e67d8c7cb175cf36398c7d4592b4c47b683 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: usb-unix.c 5241 2006-03-07 22:07:44Z mike $"
+ * "$Id: usb-unix.c 5553 2006-05-20 12:22:27Z mike $"
  *
  *   USB port backend for the Common UNIX Printing System (CUPS).
  *
@@ -56,8 +56,11 @@ print_device(const char *uri,                /* I - Device URI */
              const char *resource,     /* I - Resource/modelname */
             const char *options,       /* I - Device options/serial number */
             int        fp,             /* I - File descriptor to print */
-            int        copies)         /* I - Copies to print */
+            int        copies,         /* I - Copies to print */
+            int        argc,           /* I - Number of command-line arguments (6 or 7) */
+            char       *argv[])        /* I - Command-line arguments */
 {
+  int          usebc;                  /* Use backchannel path? */
   int          fd;                     /* USB device */
   int          rbytes;                 /* Number of bytes read */
   int          wbytes;                 /* Number of bytes written */
@@ -77,6 +80,16 @@ print_device(const char *uri,                /* I - Device URI */
   unsigned int status;                 /* Port status (off-line, out-of-paper, etc.) */
 #endif /* __linux */
 
+  (void)argc;
+  (void)argv;
+
+ /*
+  * Disable backchannel data when printing to Canon USB printers - apparently
+  * Canon printers will return the IEEE-1284 device ID over and over and over
+  * when they get a read request...
+  */
+
+  usebc = strcasecmp(hostname, "Canon") != 0;
 
  /*
   * Open the USB port device...
@@ -234,7 +247,9 @@ print_device(const char *uri,               /* I - Device URI */
         do
        {
           FD_ZERO(&input);
-         FD_SET(fd, &input);
+         if (usebc)
+           FD_SET(fd, &input);
+
          FD_ZERO(&output);
          FD_SET(fd, &output);
         }
@@ -374,7 +389,6 @@ list_devices(void)
        device_id[1024],        /* Device ID string */
        device_uri[1024],       /* Device URI string */
        make_model[1024];       /* Make and model */
-  struct ecpp_device_id did;   /* Device ID buffer */
 
 
  /*
@@ -545,7 +559,6 @@ open_device(const char *uri)                /* I - Device URI */
                device_id[1024],        /* Device ID string */
                make_model[1024],       /* Make and model */
                device_uri[1024];       /* Device URI string */
-    struct ecpp_device_id did;         /* Device ID buffer */
 
 
    /*
@@ -620,5 +633,5 @@ open_device(const char *uri)                /* I - Device URI */
 
 
 /*
- * End of "$Id: usb-unix.c 5241 2006-03-07 22:07:44Z mike $".
+ * End of "$Id: usb-unix.c 5553 2006-05-20 12:22:27Z mike $".
  */