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 | [EMAIL PROTECTED]
Merkantilvegen 59HB7, | [EMAIL PROTECTED]
N-2815 GJ�VIK, NORWAY |+47 61139424 || +47 63874242
Patron of The Art of Computer Programming| FreeBSD 3.4 & Pine 4.21
#!/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
#!/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