home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 1 of 2).iso / utilities / u255.dms / in.adf / IFF2PS / ehandler.ps next >
Encoding:
Text File  |  1989-06-03  |  3.2 KB  |  127 lines

  1. %!PS-Adobe-2.0
  2. % ehandler.ps -- Downloaded Error Break-page handler
  3. % Copyright (c) 1984, 1985, 1986  Adobe Systems Incorporated.
  4. % All Rights Reserved.
  5.  
  6. 0000 % exitserver password
  7. /$brkpage where { %ifelse
  8.     pop pop
  9.     (Error Handler in place - not loaded again\n)
  10.     print flush stop
  11. }{ %else
  12.     dup serverdict begin
  13.     statusdict begin checkpassword { %ifelse
  14.         (Error Handler downloaded.\n)print flush
  15.         exitserver
  16.     }{ %else
  17.         pop
  18.         (Bad Password on loading error handler!!!\n)
  19.         print flush stop
  20.     } ifelse
  21. } ifelse
  22. /$brkpage 64 dict def $brkpage begin
  23. /prnt { %def
  24.     dup type /stringtype ne { =string cvs } if
  25.     dup length 6 mul
  26.     /tx exch def /ty 10 def
  27.     currentpoint /toy exch def /tox exch def
  28.     1 setgray newpath
  29.     tox toy 2 sub moveto
  30.     0 ty rlineto tx 0 rlineto
  31.     0 ty neg rlineto
  32.     closepath fill
  33.     tox toy moveto 0 setgray show
  34. } bind def
  35. /nl { %def
  36.     currentpoint exch pop lmargin exch moveto
  37.     0 -10 rmoveto
  38. } def
  39. /== { /cp 0 def typeprint nl } def
  40. /typeprint {
  41.     dup type dup currentdict exch known {exec}{
  42.         unknowntype
  43.     } ifelse
  44. } readonly def
  45. /lmargin 72 def /rmargin 72 def
  46. /tprint { %def
  47.     dup length cp add rmargin gt { nl /cp 0 def } if
  48.     dup length cp add /cp exch def
  49.     prnt
  50. } readonly def
  51. /cvsprint { =string cvs tprint ( ) tprint } readonly def
  52. /unknowntype { %def
  53.     exch pop cvlit (??) tprint cvsprint
  54. } readonly def
  55. /integertype { cvsprint } readonly def
  56. /realtype { cvsprint } readonly def
  57. /booleantype { cvsprint } readonly def
  58. /operatortype { (//) tprint cvsprint } readonly def
  59. /marktype { pop (-mark- ) tprint } readonly def
  60. /dicttype { pop (-dictionary- ) tprint } readonly def
  61. /nulltype { pop (-null- ) tprint } readonly def
  62. /filetype { pop (-filestream- ) tprint } readonly def
  63. /savetype { pop (-savelevel- ) tprint } readonly def
  64. /fonttype { pop (-fontid- ) tprint } readonly def
  65. /nametype { %def
  66.     dup xcheck not { (/) tprint } if cvsprint
  67. } readonly def
  68. /stringtype { %def
  69.     dup rcheck { %ifelse
  70.         (\() tprint tprint (\)) tprint
  71.     }{ %else
  72.         pop (-string- ) tprint
  73.     } ifelse
  74. }readonly def
  75. /arraytype { %def
  76.     dup rcheck { %ifelse
  77.         dup xcheck { %ifelse
  78.             ({) tprint { typeprint } forall (}) tprint
  79.         }{ %else
  80.             ([) tprint { typeprint } forall (]) tprint
  81.         } ifelse
  82.     }{ %else
  83.         pop (-array- ) tprint
  84.     } ifelse
  85. } readonly def
  86. /packedarraytype { %def
  87.     dup rcheck { %ifelse
  88.         dup xcheck { %ifelse
  89.             ({) tprint { typeprint } forall (}) tprint
  90.         }{ %else
  91.             ([) tprint { typeprint } forall (]) tprint
  92.         } ifelse
  93.     }{ %else
  94.         pop (-packedarray- ) tprint
  95.     } ifelse
  96. } readonly def
  97. /courier /Courier findfont 10 scalefont def
  98. /OLDhandleerror errordict /handleerror get def
  99. end %$brkpage
  100.  
  101. /handleerror { %put
  102.     systemdict begin $error begin $brkpage begin
  103.     newerror { %ifelse
  104.         /newerror false store
  105.         vmstatus pop pop 0 ne { grestoreall } if
  106.         initgraphics courier setfont
  107.         lmargin 720 moveto (ERROR: ) prnt
  108.         errorname prnt
  109.         nl (OFFENDING COMMAND: ) prnt
  110.         /command load prnt
  111.         $error /ostack known { %if
  112.             nl nl (STACK:) prnt nl nl
  113.             $error /ostack get aload length { == } repeat
  114.         } if
  115.         systemdict /showpage get exec
  116.         /newerror true store
  117.         /OLDhandleerror load end end end exec
  118.     }{ %else
  119.         end end end
  120.     } ifelse
  121. }
  122. dup 0 systemdict put   % replace name by actual dict object
  123. dup 4 $brkpage put     % replace name by dict object
  124. bind readonly
  125.  
  126. errordict 3 1 roll put % put proc in errordict as /handleerror
  127.