Hi. I've got a HP LaserJet 1010 attached to my FreeBSD 6.2 machine via
usb, on /dev/ulpt0. I recently upgraded CUPS, and after fixing the
permissions issues on /dev/ulpt0, I found that when I printed the usb
backend would just "hang", which turned out to be a block on tcgetattr()
on the ulpt0. The code in question is:

START CODE

 /*
  * Set any options provided...
  */

  tcgetattr(device_fd, &opts);

  opts.c_lflag &= ~(ICANON | ECHO | ISIG);      /* Raw mode */

  /**** No options supported yet ****/

  tcsetattr(device_fd, TCSANOW, &opts);

END CODE

As I see this, the code is switching the line discipline to raw on the
ulpt0 device. In any event, why is tcgetattr() blocking?

One solution could be to conditionally (on FreeBSD) only do a
tcsetattr(). I don't want to make any suggestions to the CUPS people
without first checking out what the "right" way to do this on FreeBSD
is, though. (The workaround, by the way, is to set the permissions on
/dev/ulpt0 so that it is write-only for user cups - then CUPS opens the
device write-only and the block doesn't happen).

Peter
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to