🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.postscript
Article #6901

Re: Postscript Lint/Syntax checker

#6901
From: Matt Heffron
Date: Tue, 16 Feb 1988 21:13
74 lines
3562 bytes
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

-------
Technical Details
Message-ID: <12375263685.23.BEC.HEFFRON@ECLA.USC.EDU>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!husc6!bbn!uwmcsd1!ig!agate!ucbvax!ECLA.USC.EDU!BEC.HEFFRON
References: <291@augean.OZ>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!husc6!bbn!uwmcsd1!ig!agate!ucbvax!ECLA.USC.EDU!BEC.HEFFRON
From: BEC.HEFFRON@ECLA.USC.EDU (Matt Heffron)
Newsgroups: comp.lang.postscript
Subject: Re: Postscript Lint/Syntax checker
Message-ID: <12375263685.23.BEC.HEFFRON@ECLA.USC.EDU>
Date: 16 Feb 88 21:13:44 GMT
References: <291@augean.OZ>
Sender: daemon@ucbvax.BERKELEY.EDU
Organization: The Internet
Lines: 74