diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/psprint/unix/lw_header.ps |
Initial commit
Diffstat (limited to 'dviware/psprint/unix/lw_header.ps')
-rw-r--r-- | dviware/psprint/unix/lw_header.ps | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/dviware/psprint/unix/lw_header.ps b/dviware/psprint/unix/lw_header.ps new file mode 100644 index 0000000000..bd6bbac0d1 --- /dev/null +++ b/dviware/psprint/unix/lw_header.ps @@ -0,0 +1,136 @@ +% psprint uses this file to build an appropriate header file for each job. +% It defines @bannerpage and redefines the PostScript error handler. + +statusdict begin /waittimeout 300 def end % wait 5 minutes + +/@oldpagecount statusdict begin pagecount end def + +/@bannerpage % called at end of job or upon error +{ initgraphics + 36 0 translate % move origin to the right + /vpos 800 def % initial vertical pos + 0 vpos moveto % start near top left corner + /newline + { /vpos vpos 20 sub def % decrease vertical pos by 20pt + 0 vpos moveto % move to start of new line + } def + /Courier findfont % Courier typewriter font + 12 scalefont setfont % at 12pt + (*********************** psprint 3.0 **********************) show newline + @USER show newline + @NODE show newline + @FILE show newline + @FORMAT show newline + @QUEUED show newline + (PAGES : ) show + statusdict begin + pagecount % current pagecount + end + @oldpagecount % pagecount saved at start of job + sub ( ) cvs + show newline % show pages printed + @NOTE show newline +% @status % uncomment to get status info + /#copies 1 def % only 1 copy of banner page + systemdict /showpage get exec +} def + +% Uncomment the following (and above call) to get status info on banner page: +% +% /@oldusertime usertime def % save current usertime +% /@status % show cache and VM status values +% { newline +% (CACHE STATUS) show newline +% cachestatus % bsize bmax msize mmax csize cmax blimit +% (blimit = ) show ( ) cvs show newline +% (cmax = ) show ( ) cvs show newline +% (csize = ) show ( ) cvs show newline +% (mmax = ) show ( ) cvs show newline +% (msize = ) show ( ) cvs show newline +% (bmax = ) show ( ) cvs show newline +% (bsize = ) show ( ) cvs show newline +% newline +% (VM STATUS) show newline +% vmstatus % savelevel vmused vmmax +% (vm max = ) show ( ) cvs show newline +% (vm used = ) show ( ) cvs show newline +% (save level = ) show ( ) cvs show newline +% newline +% (JOB TIME (secs) = ) show usertime @oldusertime sub 1000 div +% ( ) cvs show +% } def + +% Redefine the error handler in errordict to show a suitable error message. + +/@errpage 64 dict def +@errpage 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 -11 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 % save current error handler +end +% of @errpage + +errordict /handleerror % redefine error handler +{ systemdict begin $error begin @errpage begin + newerror + { /newerror false store + vmstatus pop pop 0 ne { grestoreall } if + initgraphics courier setfont + lmargin 792 moveto + (POSTSCRIPT ERROR: ) prnt errorname prnt nl + (OFFENDING COMMAND: ) prnt /command load prnt nl + $error /ostack known + { (OPERAND STACK:) prnt nl + $error /ostack get aload length {==} repeat + } if + /#copies 1 store % print only one error page + systemdict /showpage get exec + userdict begin @bannerpage end % print banner page + /newerror true store + /@oldhandleerror load end end end exec } + { end end end } + ifelse +} dup 0 systemdict put dup 4 @errpage put bind readonly put |