pfranzon@augean.OZ (Paul Franzon) (02/10/88)
We occasionally program in postscript for output on our Laserwriter. Unfortunately, the only way we have of debugging the postscript program is to try to print it, which becomes very frustrating when the output becomes a blank page. Does anyone out there have a postscript Lint or syntax checker, or alternatively, have a program to intercept the error messages from the Laserwriter? Thanks in advance, Paul Franzon Electrical and Electronic Engineering University of Adelaide Adelaide SA 5001 Australia
BEC.HEFFRON@ECLA.USC.EDU (Matt Heffron) (02/17/88)
Here is a PostScript error handler that was posted to Laser-lovers a while back, it installs itself outside of the server loop and then traps all errors printing the partial page and the error, offending command, and the stack. enjoy. - Matt Heffron BEC.HEFFRON@ECLA.USC.EDU ---------------- cut here ------------------------ %! % lib/ehandler.ps -- Downloaded Error Break-page handler % Copyright (c) 1984, 1985, 1986 Adobe Systems Incorporated. % All Rights Reserved. 0000 % serverloop password /$brkpage where {pop pop(Error Handler in place - not loaded again\n)print flush stop} {dup serverdict begin statusdict begin checkpassword {(Error Handler downloaded.\n)print flush exitserver} {pop(Bad Password on loading error handler!!!\n)print flush stop}ifelse }ifelse /$brkpage 64 dict def $brkpage begin /prnt {dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def /nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def /=={/cp 0 def typeprint nl}def /typeprint{dup type dup currentdict exch known {exec}{unknowntype}ifelse}readonly def /lmargin 72 def/rmargin 72 def /tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp exch def prnt}readonly def /cvsprint{=string cvs tprint( )tprint}readonly def /unknowntype{exch pop cvlit(??)tprint cvsprint}readonly def /integertype{cvsprint}readonly def /realtype{cvsprint}readonly def /booleantype{cvsprint}readonly def /operatortype{(//)tprint cvsprint}readonly def /marktype{pop(-mark- )tprint}readonly def /dicttype{pop(-dictionary- )tprint}readonly def /nulltype{pop(-null- )tprint}readonly def /filetype{pop(-filestream- )tprint}readonly def /savetype{pop(-savelevel- )tprint}readonly def /fonttype{pop(-fontid- )tprint}readonly def /nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def /stringtype {dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse }readonly def /arraytype {dup rcheck{dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse }readonly def /packedarraytype {dup rcheck{dup xcheck {({)tprint{typeprint}forall(})tprint} {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse }readonly def /courier/Courier findfont 10 scalefont def /OLDhandleerror errordict /handleerror get def end %$brkpage errordict/handleerror {systemdict begin $error begin $brkpage begin newerror {/newerror false store vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont lmargin 720 moveto(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt $error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if systemdict/showpage get exec /newerror true store/OLDhandleerror load end end end exec}{end end end} ifelse} dup 0 systemdict put dup 4 $brkpage put bind readonly put -------
greely@teak.cis.ohio-state.edu (J Greely) (02/18/88)
An error-handler for PostScript devices is included as part of the TransScript package from Adobe. I am not sure of the status, as regards to distribution, but you can probably contact them and find out. The program is downloaded to the printer, installs itself, and from then on, all PostScript programs containing an error will print up to the error, and part of the page containing the error will be used for printing the offending line and the contents of the stack. -=- -j, greely@satcom3.cis.ohio-state.edu "Tandoori to go. That's all they went out for, these people... Tandoori to go... and *instead*, they... they got..." -- Watchmen -----
dennis@cod.NOSC.MIL (Dennis Cottel) (02/23/88)
Why can't a PostScript error reporter tell you what line the error occurred on? At least, I haven't seen one which does this. Dennis Cottel Naval Ocean Systems Center, San Diego, CA 92152 (619) 553-1645 dennis@NOSC.MIL sdcsvax!noscvax!dennis