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