Description of Problem: At least some Qt apps (specifically, Opera) cannot print if dynamically linked against Qt under Red Hat 7.2. The print dialogs show erroneous printer names, and print attempts silently fail. Here's a description from a user running into this problem: http://groups.google.com/groups?hl=en&selm=slrna49tr6.lld.cwong%40h00a0cc5b24bc.ne.mediaone.net Version-Release number of selected component (if applicable): qt-2.3.1-5 How Reproducible: Every time. Steps to Reproduce: 1. Install Opera 5.05 dynamic (opera-5.05_tp1-6-shared_qt-libnpp-0.1.1-rh71.x86.rpm) 2. Go to a web page, then print using File->Print... Actual Results: The print dialog box shows strangely named printers (e.g., "lp:ml"). Print attempts fail silently, without queuing the print jobs. Expected Results: The print dialog box should show correctly named printers (e.g., "lp"). The print attempts should succeed in queuing the print jobs. Additional Information: I strace'd opera and found that /usr/bin/lp was being invoked with a bad printer destination (eg., '-dlp::ml' instead of '-dlp'). I installed qt-2.3.1-5.src.rpm and looked through the code. It appears to me that the qt-2.3.1-LPRng.patch is incorrect: --- qt-2.3.1/src/dialogs/qprintdialog.cpp.lprng Wed Jun 13 10:53:46 2001 +++ qt-2.3.1/src/dialogs/qprintdialog.cpp Sat Jun 16 09:50:58 2001 @@ -158,7 +158,11 @@ QString printerName, printerComment, printerHost; if ( i >= 0 ) { // have : want | - int j = printerDesc.find( '|' ); + // LPRng allows additional stuff like "lp=|/usr/share/printconf/something + // --> handle "=" like "|" + int j = printerDesc.find( '=' ); + if( j == -1 ) + j = printerDesc.find( '|' ); printerName = printerDesc.left( j > 0 ? j : i ); if ( j > 0 ) { // try extracting a comment from the aliases... --------------------- The printerDesc.find( '=' ) call is finding the '=' from the following capability assignment. The code then incorrectly decides that everything before the '=' is the printer name. So a printcap entry like: lp\ :ml=0:\ :mx=0:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/lp.acct:\ :sh:\ :rm=remote:\ :rp=lp: would be interpreted as having the printer name 'lp:ml'. I commented out the qt-2.3.1-LPRng.patch patch in the qt.spec file and built a new qt rpm. After installing that new qt package, Opera printed as expected: the printer names are correct, and print jobs successfully queue.
It's fixed in 7.3 or 8.0 release. If someone wants qt-2.3.2 including this fix, please let me know. I will build it and copy on people.redhat.com