home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-01-11 | 3.3 KB | 85 lines | [TEXT/MPS ] |
- %!
- % From: adobe!shore@su-glacier.arpa (Andrew Shore)
- % Date: 29 Apr 1986 2120-PDT (Tuesday)
- % Subject: revised PostScript downloadable error handler
- %
- % Here is our latest version of the downloadable PostScript error
- % handler (ehandler.ps). When sent to any PostScript printer, it
- % will download itself outside the printer's "server loop"
- % (assuming the server loop password is correct) and redefine the
- % action taken on a PostScript error.
- %
- % This handler prints a sometimes-helpful summary of the error on
- % the thus-far-completed page and then executes the previous
- % handleerror code as well (which in most PostScript printers will
- % echo the error name and offending command over the
- % communications channel). This version works on all existing
- % Adobe PostScript implementations.
- %
- % It really helps when debugging raw PostScript code and new
- % PostScript-generating applications.
- %
- % ehandler.ps -- Downloaded Error Break-page handler
- % Copyright (c) 1984, 1985, 1986 Adobe Systems Incorporated.
- % All Rights Reserved.
-
- serverdict begin 0 exitserver
- (Error handler downloaded.\r) print flush
-
- /$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
-