I just upgraded to Fedora core 2 from core 1, and now lp and lpr
cannot read from standard input.
[allan@mybox bin]$ /usr/bin/lp < /etc/hosts
lp: stdin is empty, so no job has been sent.
[allan@mybox bin]$ /usr/bin/lp /etc/hosts
request id is laserjet-977 (1 file(s))
Printing a file works, but as you see printing from a pipe was busted,
and so any programs that relied on pipes were SOL. I did notice a
nonexistent printer in the /etc/cups/lpoptions file, and I fixed that.
Strange though that only printing a file works.
I wrote a workaround perl script, and noticing that /usr/local/bin was
in the path before /usr/bin, I put it there as a wrapper for the real
lp and lpr programs. At least I can print now. Any thoughts?
Here is my workaround, I named it lp, and symlinked it to lpr:
#!/usr/bin/perl
# -*- cperl -*-
# quick wrapper around lp for stdin bug
#
pedaa_at_rockefeller.edu
# Time-stamp: <2004-10-29 12:15:44 allan>
use strict;
use Carp;
use File::Temp qw( tempfile );
use File::Basename qw(basename );
my $LPEXE = "/usr/bin/".basename( $0 );
# if given stdin, buffer to file, else call prog directly
unless( defined($ARGV[$#ARGV]) and (-f $ARGV[$#ARGV]) ){
my $fbuff = new File::Temp( TEMPLATE => 'lpXXXXX',
DIR => '/tmp',
SUFFIX => '.cups' );
print $fbuff <STDIN>;
system( $LPEXE, @ARGV, $fbuff );
} else {
exec( $LPEXE, @ARGV );
}