%! % lib/ehandler.ps -- Downloaded Error Break-page handler % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCSID: $Header: ehandler.ps,v 2.2 87/11/17 16:39:49 byron Rel $ % assumes serverloop password is the default one /$brkpage where {pop(Error Handler in place - not loaded again\n)print flush stop} {serverdict begin statusdict begin 0000 checkpassword { % (Error Handler downloaded.\n)print flush 0000 exitserver} {(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 exec}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 /integertype{cvsprint}readonly def /realtype{cvsprint}readonly def /booleantype{cvsprint}readonly def /operatortype{(--)tprint =string cvs tprint(-- )tprint}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 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(%%[ Error: )print errorname =print(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end} dup 0 systemdict put dup 4 $brkpage put bind readonly put