Date: Sun, 27 Feb 2000 21:57:35 +0100 (CET) From: =?ISO-8859-1?Q?Trond_Endrest=F8l?= <trond@ramstind.gtf.ol.no> To: "Adam D. Marks" <amarks@ecst.csuchico.edu> Cc: FreeBSD stable <freebsd-stable@FreeBSD.ORG> Subject: Re: printer question Message-ID: <Pine.BSF.4.21.0002272129140.76101-300000@ramstind.gtf.ol.no> In-Reply-To: <Pine.GHP.4.05.10002251055590.551-100000@polio.ecst.csuchico.edu>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Fri, 25 Feb 2000, Adam D. Marks wrote:
> Has anyone had any luck printing to a remote printer using jetdirect. I
> have a HP 2100 on a JetDirect EX Plus 3. The closest I got is with using
> rlpr but the format that is printed is messed up.
At our site we use the following entries in /etc/printcap:
printer-name|printer-alias1|printer-alias2|full name:\
:if=/usr/local/libexec/nyif-for-ps-og-pcl:\
:lf=/var/log/lpd-errs:\
:mx#0:\
:rm=printer-name:\
:sd=/var/spool/lpd/printer-name:\
:sf:
:sh:
/etc/hosts contains the name-to-IP translation of the printer names in
the rm capability.
I have created an input filter, somewhat inspired by printtool on Red
Hat, that we use at our site.
This input filter first check to see if the file to be printed is
compressed in some way by using file(1), if so then the input filter
attempts to decompress the file. If the file was indeed decompressed,
the input filter runs file(1) again to see what format the data might
be in now.
Next the input filter tries to determine how to convert the file into
PCL or PS. This is accomplished by a case-esac construction.
So far my input filter can convert bmp, gif, jpeg, tiff, sun raster,
pnm (i.e. pgm, pbm, ppm), pdf, dvi, fig, and troff to PS. Data which
is already in PS or PCL format is passed unprocessed to the printers
since, our site have printers that understand both PCL and PS.
Data that appears to be plain text in sent to printer, after the
printer has received an initialization string. Last the printer
receives a reset command.
I have, however, created a similar inputfilter which converts any PS
output (including PS output generated by the input filter) to PCL
for printers that don't understand PS.
Unfortunately all the comments and debug messages in my input filters
are in Norwegian, but I'll translate to English anything that isn't
clear.
Attached you'll find nyif-for-ps-og-pcl which is the input filter for
both PS and PCL capable printers, and nyif-for-pcl which is the
inputfilter for PCL only printers.
Also, it might be wise to turn off the banner page generated by
JetDirect (that's right, JetDirect, not lpd) through the telnet
configuration!
----------------------------------------------------------------------
Trond Endrestøl | trond@gtf.ol.no
Merkantilvegen 59HB7, | trond@ramstind.gtf.ol.no
N-2815 GJØVIK, NORWAY |+47 61139424 || +47 63874242
Patron of The Art of Computer Programming| FreeBSD 3.4 & Pine 4.21
[-- Attachment #2 --]
#!/bin/sh
#
# /usr/local/libexec/nyif-for-ps-og-pcl
#
# Nytt inputfilter for lpd på FreeBSD, spesielt
# for skrivere som både skjønner PostScript og PCL.
#
# Denne gangen med støtte for flere filformater som detekteres
# ved hjelp av file-programmet. Komprimerte filer støttes også.
#
# Inspirert til en viss grad av Red Hat-systemet.
#
# Du trenger følgende ports/packages for at dette skal gå bra:
#
# netpbm-9.4.3.1
# jpeg-6b
# tiff-3.5.1
# ghostscript-5.50
# transfig-3.2.1
# dvi2xx-0.51.a9
# grog fra groff 1.11
#
# trond, 2000-02-23
#
# Eventuelt slå på debugging av hver linje og vise miljøvariablene
# set -x
# set >/dev/stderr
# Med denne kan vi slå av og på debugging til loggfila.
# DEBUG_NYIF=jada
# Sette path for forskjellige programmer
export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/libexec:/usr/X11R6/bin:/usr/X11R6/libexec:/usr/bin:/usr/sbin:/usr/libexec:/bin:/sbin
# Finne ut hva vi heter
PROGRAM=`basename $0`
# Definere navn for midlertidig katalog og midlertidige filer
KATALOG="/tmp/$$.nyif"
DATAFIL="$KATALOG/data"
DATAFIL2="$KATALOG/data2"
# Funksjon for å rydde opp
RyddOpp ()
{
rm -R $KATALOG;
}
# Sette RyddOpp til å rydde opp ved forskjellige anledninger
trap RyddOpp EXIT HUP INT QUIT TERM
# Sette umask til -rwx------ for kataloger og -rw------- for filer
umask 077
# Sette max lengde på corefiler til 0
ulimit -c 0
# Opprette midlertidig katalog
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å opprette katalogen $KATALOG";
fi
mkdir -p $KATALOG || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke opprette midlertidig katalog $KATALOG"; exit 2 )
# Hente inn data til midlertidig fil
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å hente inn data til $DATAFIL";
fi
cat > $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke ta inn data med cat"; exit 2 )
# Finne hva slags data vi har fått
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å finne ut om data er komprimert";
fi
MAGIC=`file $DATAFIL | tr 'A-Z' 'a-z'` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke avgjøre om data er komprimert eller ei"; exit 2 )
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: MAGIC = $MAGIC";
fi
# Finne ut om data er komprimert
case "$MAGIC" in
*packed*|*gzip*|*compress*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis komprimert og prøver å dekomprimere data";
fi;
gzip -dc $DATAFIL > $DATAFIL2 || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke dekomprimere data"; exit 2 );
DATAFIL=$DATAFIL2;
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å finne ut hva slags data vi nå kan ha fått";
fi;
MAGIC=`file $DATAFIL | tr 'A-Z' 'a-z'` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke avgjøre hva data egentlig er"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: MAGIC = $MAGIC";
fi;
;;
*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis ikke komprimert";
fi;
;;
esac
# Finne ut hva slags data vi nå kan ha fått
case "$MAGIC" in
*empty*)
logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: data er tomt";
exit 2;
;;
*"pc bitmap data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pc bitmap data";
fi;
bmptoppm $DATAFIL | pnmtops 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med bmptopnm og pnmtops"; exit 2 );
;;
*"gif image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen gif image data";
fi;
giftopnm $DATAFIL | pnmtops 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med giftopnm og pnmtops"; exit 2 );
;;
*"jpeg image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen jpeg image data";
fi;
djpeg -pnm $DATAFIL | pnmtops 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med djpeg og pnmtops"; exit 2 );
;;
*"tiff image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen tiff image data";
fi;
tifftopnm $DATAFIL | pnmtops 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med tifftopnm og pnmtops"; exit 2 );
;;
*"sun raster image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen sun raster image data";
fi;
rasttopnm $DATAFIL | pnmtops 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med rasttopnm og pnmtops"; exit 2 );
;;
*pgm*|*pbm*|*ppm*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pgm, pbm eller ppm";
fi;
pnmtops $DATAFIL 2>/dev/null || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med pnmtops"; exit 2 );
;;
*postscript*|*pcl*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen postscript eller pcl";
fi;
cat $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med cat"; exit 2 );
;;
*"pdf document"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pdf document";
fi;
gs -dNOPAUSE -dSAFER -sDEVICE=pswrite -sPAPERSIZE=a4 -sOutputFile=- -q $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med gs"; exit 2 );
;;
*"tex dvi file"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen tex dvi file";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å linke $DATAFIL.dvi til $DATAFIL";
fi;
ln $DATAFIL $DATAFIL.dvi || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke lage $DATAFIL.dvi som link til $DATAFIL"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å kjøre dvilj -D -e- -q -w $DATAFIL.dvi";
fi;
dvilj -D -e- -q -w $DATAFIL.dvi; # Vi kan ikke stole på status til dvilj...
;;
*"fig image text"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen fig image text";
fi;
cat $DATAFIL | fig2dev -L ps | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med fig2dev og gs"; exit 2 );
;;
*"troff or preprocessor"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen troff or preprocessor";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å få grog til å finne hvilken kommando som skal kjøres";
fi;
KOMMANDO=`grog -Tps $DATAFIL` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke finne ut hvordan troff-data skal formateres med grog"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: grog bestemte seg for å anbefale $KOMMANDO";
fi;
$KOMMANDO || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med $KOMMANDO"; exit 2 );
;;
*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis noe helt annet, kanskje tekst";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende initstreng til skriveren";
fi;
printf "\033E\033(0N\033&k2G\033&l1S" || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende initstreng til skriveren med printf"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende data til skriveren";
fi;
cat $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med cat"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende reset til skriveren";
fi;
printf "\033E" || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende reset til skriveren med printf"; exit 2 );
;;
esac
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: vellykket avslutning";
fi
exit 0
# /usr/local/libexec/nyif-for-ps-og-pcl
[-- Attachment #3 --]
#!/bin/sh
#
# /usr/local/libexec/nyif-for-pcl
#
# Nytt inputfilter for lpd på FreeBSD, spesielt
# for skrivere som ikke skjønner PostScript.
#
# Denne gangen med støtte for flere filformater som detekteres
# ved hjelp av file-programmet. Komprimerte filer støttes også.
#
# Inspirert til en viss grad av Red Hat-systemet.
#
# Du trenger følgende ports/packages for at dette skal gå bra:
#
# netpbm-9.4.3.1
# jpeg-6b
# tiff-3.5.1
# ghostscript-5.50
# transfig-3.2.1
# dvi2xx-0.51.a9
# grog fra groff 1.11
#
# trond, 2000-02-23
#
# Eventuelt slå på debugging av hver linje og vise miljøvariablene
# set -x
# set >/dev/stderr
# Med denne kan vi slå av og på debugging til loggfila.
# DEBUG_NYIF=jada
# Sette path for forskjellige programmer
export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/libexec:/usr/X11R6/bin:/usr/X11R6/libexec:/usr/bin:/usr/sbin:/usr/libexec:/bin:/sbin
# Finne ut hva vi heter
PROGRAM=`basename $0`
# Definere navn for midlertidig katalog og midlertidige filer
KATALOG="/tmp/$$.nyif"
DATAFIL="$KATALOG/data"
DATAFIL2="$KATALOG/data2"
# Funksjon for å rydde opp
RyddOpp ()
{
rm -R $KATALOG;
}
# Sette RyddOpp til å rydde opp ved forskjellige anledninger
trap RyddOpp EXIT HUP INT QUIT TERM
# Sette umask til -rwx------ for kataloger og -rw------- for filer
umask 077
# Sette max lengde på corefiler til 0
ulimit -c 0
# Opprette midlertidig katalog
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å opprette katalogen $KATALOG";
fi
mkdir -p $KATALOG || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke opprette midlertidig katalog $KATALOG"; exit 2 )
# Hente inn data til midlertidig fil
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å hente inn data til $DATAFIL";
fi
cat > $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke ta inn data med cat"; exit 2 )
# Finne hva slags data vi har fått
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å finne ut om data er komprimert";
fi
MAGIC=`file $DATAFIL | tr 'A-Z' 'a-z'` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke avgjøre om data er komprimert eller ei"; exit 2 )
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: MAGIC = $MAGIC";
fi
# Finne ut om data er komprimert
case "$MAGIC" in
*packed*|*gzip*|*compress*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis komprimert og prøver å dekomprimere data";
fi;
gzip -dc $DATAFIL > $DATAFIL2 || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke dekomprimere data"; exit 2 );
DATAFIL=$DATAFIL2;
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å finne ut hva slags data vi nå kan ha fått";
fi;
MAGIC=`file $DATAFIL | tr 'A-Z' 'a-z'` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke avgjøre hva data egentlig er"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: MAGIC = $MAGIC";
fi;
;;
*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis ikke komprimert";
fi;
;;
esac
# Finne ut hva slags data vi nå kan ha fått
case "$MAGIC" in
*empty*)
logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: data er tomt";
exit 2;
;;
*"pc bitmap data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pc bitmap data";
fi;
bmptoppm $DATAFIL | pnmtops 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med bmptopnm og pnmtops"; exit 2 );
;;
*"gif image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen gif image data";
fi;
giftopnm $DATAFIL | pnmtops 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med giftopnm og pnmtops"; exit 2 );
;;
*"jpeg image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen jpeg image data";
fi;
djpeg -pnm $DATAFIL | pnmtops 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med djpeg og pnmtops"; exit 2 );
;;
*"tiff image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen tiff image data";
fi;
tifftopnm $DATAFIL | pnmtops 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med tifftopnm og pnmtops"; exit 2 );
;;
*"sun raster image data"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen sun raster image data";
fi;
rasttopnm $DATAFIL | pnmtops 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med rasttopnm og pnmtops"; exit 2 );
;;
*pgm*|*pbm*|*ppm*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pgm, pbm eller ppm";
fi;
pnmtops $DATAFIL 2>/dev/null | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med pnmtops"; exit 2 );
;;
*postscript*|*"pdf document"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen postscript eller pdf document";
fi;
gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sPAPERSIZE=a4 -sOutputFile=- -q $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med gs"; exit 2 );
;;
*pcl*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen pcl";
fi;
cat $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med cat"; exit 2 );
;;
*"tex dvi file"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen tex dvi file";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å linke $DATAFIL.dvi til $DATAFIL";
fi;
ln $DATAFIL $DATAFIL.dvi || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke lage $DATAFIL.dvi som link til $DATAFIL"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å kjøre dvilj -D -e- -q -w $DATAFIL.dvi";
fi;
dvilj -D -e- -q -w $DATAFIL.dvi; # Vi kan ikke stole på status til dvilj...
;;
*"fig image text"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen fig image text";
fi;
cat $DATAFIL | fig2dev -L ps | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med fig2dev og gs"; exit 2 );
;;
*"troff or preprocessor"*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis av typen troff or preprocessor";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å få grog til å finne hvilken kommando som skal kjøres";
fi;
KOMMANDO=`grog -Tps $DATAFIL` || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke finne ut hvordan troff-data skal formateres med grog"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: grog bestemte seg for å anbefale $KOMMANDO";
fi;
$KOMMANDO | gs -dNOPAUSE -dSAFER -sDEVICE=laserjet -sOutputFile=- -q - || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med $KOMMANDO"; exit 2 );
;;
*)
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: data er tydeligvis noe helt annet, kanskje tekst";
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende initstreng til skriveren";
fi;
printf "\033E\033(0N\033&k2G\033&l1S" || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende initstreng til skriveren med printf"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende data til skriveren";
fi;
cat $DATAFIL || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende data til skriveren med cat"; exit 2 );
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: prøver å sende reset til skriveren";
fi;
printf "\033E" || ( logger -s -p lpr.err -t "$PROGRAM[$$]" "$PROGRAM: kan ikke sende reset til skriveren med printf"; exit 2 );
;;
esac
if [ "$DEBUG_NYIF" != "" ]; then
logger -s -p lpr.debug -t "$PROGRAM[$$]" "$PROGRAM: vellykket avslutning";
fi
exit 0
# /usr/local/libexec/nyif-for-pcl
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0002272129140.76101-300000>
