Blame example/3hole.ps

Packit Service 392537
%!
Packit Service 392537
%%BoundingBox: 25 25 290 900
Packit Service 392537
%%Title: AMANDA Full Page Label
Packit Service 392537
%%Creator: Amanda reporter
Packit Service 392537
%%Pages: 1
Packit Service 392537
%%EndComments
Packit Service 392537
Packit Service 392537
%%%%
Packit Service 392537
%% This template file is used by AMANDA to create PostScript dump log
Packit Service 392537
%% listings for each run suitable for three-hole punching.
Packit Service 392537
%%
Packit Service 392537
%% This prologue is based on one from Steven Freed <sfreed@gilasoft.com>
Packit Service 392537
%% called 8.5x11.ps and was enhanced with assistance from Dale Talcott
Packit Service 392537
%% <aeh@purdue.edu>.
Packit Service 392537
%%
Packit Service 392537
%% John R. Jackson, Technical Software Specialist, jrj@purdue.edu
Packit Service 392537
%%%%
Packit Service 392537
Packit Service 392537
/pageSave save def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% If you are printing duplex, change the 0 to a 1 in the following line:
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/DoDuplex 0 def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% The following string (inside the parenthesis) will be displayed as
Packit Service 392537
% the "Location" (e.g. organization) on each page (see the page format
Packit Service 392537
% below).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/LocationString		(Magic Software Development, Inc.) def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Set the margin widths.  This may need adjustment based on how your
Packit Service 392537
% printer defines the printable area on a page.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/inch {
Packit Service 392537
	72 mul					% one inch == 72 points
Packit Service 392537
} def
Packit Service 392537
/mm {
Packit Service 392537
	25.4 div				% one inch == 25.4 mm
Packit Service 392537
	inch					% convert inches to points
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/TopMargin		0.25 inch def
Packit Service 392537
/BottomMargin		0.25 inch def
Packit Service 392537
Packit Service 392537
/OddLeftMargin		0.625 inch def		% 5/8 inch
Packit Service 392537
/OddRightMargin		0.25 inch def
Packit Service 392537
Packit Service 392537
DoDuplex 0 eq {
Packit Service 392537
	% even and odd are the same if duplex is not used
Packit Service 392537
	/EvenLeftMargin OddLeftMargin def
Packit Service 392537
	/EvenRightMargin OddRightMargin def
Packit Service 392537
} {
Packit Service 392537
	% otherwise they are reversed
Packit Service 392537
	/EvenLeftMargin OddRightMargin def
Packit Service 392537
	/EvenRightMargin OddLeftMargin def
Packit Service 392537
} ifelse
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% A page is made up of these parts.  The base name of the internal variable
Packit Service 392537
% related to each is shown in parenthesis:
Packit Service 392537
%
Packit Service 392537
%	tape name				(Title)
Packit Service 392537
%	page number				(Page)
Packit Service 392537
%	version of Amanda			(Vers)
Packit Service 392537
%	location (e.g. organisation)		(Loc)
Packit Service 392537
%	date					(Date)
Packit Service 392537
%	statistics (about the Amanda run)	(Stat)
Packit Service 392537
%	message (how to do a restore)		(Mess)
Packit Service 392537
%	header for the filesystem list		(Heading)
Packit Service 392537
%	filesystem list				(Host)
Packit Service 392537
%
Packit Service 392537
% Geometrically, an odd numbered page looks like this:
Packit Service 392537
%
Packit Service 392537
%   +----+-------------------+
Packit Service 392537
%   |        TAPE_NAME  page |   <- section 'A'
Packit Service 392537
%   | version  location date |   <- section 'B'
Packit Service 392537
%   +------------------------+
Packit Service 392537
%   |statistics  |  message  |   <- section 'C' | 'F'
Packit Service 392537
%   +----+--+--------+-------+
Packit Service 392537
%   | f# hst fs lvl O-KB C-KB|   <- section 'D'
Packit Service 392537
%   +-------+--------+-------+
Packit Service 392537
%   |       |        |       |   <- section 'E'
Packit Service 392537
%   |       |        |       |
Packit Service 392537
%   v       v        v       v
Packit Service 392537
%
Packit Service 392537
% Even numbered pages look the same unless DoDuplex is turned on, in
Packit Service 392537
% which case the "page" field is on the left and the gutter width for
Packit Service 392537
% the punch is on the right (instead of the left).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'A' fonts and strings
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/TitleFontSize		24 def			% 24 point Helvetica-Bold
Packit Service 392537
/TitleFont
Packit Service 392537
	/Helvetica-Bold findfont
Packit Service 392537
	TitleFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
/PageFontSize		11 def			% 11 point Palatino-Bold
Packit Service 392537
/PageFont
Packit Service 392537
	/Palatino-Bold findfont
Packit Service 392537
	PageFontSize scalefont
Packit Service 392537
def
Packit Service 392537
/PageString1		(Page ) def
Packit Service 392537
/PageString2		( of ) def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'B' fonts and strings
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/VersFontSize		11 def			% 11 point Palatino-Bold
Packit Service 392537
/VersFont
Packit Service 392537
	/Palatino-Bold findfont
Packit Service 392537
	VersFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
/LocFontSize		12 def			% 12 point Helvetica-Bold
Packit Service 392537
/LocFont
Packit Service 392537
	/Helvetica-Bold findfont
Packit Service 392537
	LocFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
/DateFontSize		11 def			% 11 point Palatino-Bold
Packit Service 392537
/DateFont
Packit Service 392537
	/Palatino-Bold findfont
Packit Service 392537
	DateFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'C' font
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/StatFontSize		9 def			% 9 point Courier
Packit Service 392537
/StatFont
Packit Service 392537
	/Courier findfont
Packit Service 392537
	StatFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'D' font and strings
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/HeadingFontSize	9 def			% 9 point Palatino-Bold
Packit Service 392537
/HeadingFont
Packit Service 392537
	/Palatino-Bold findfont
Packit Service 392537
	HeadingFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
/HeadingFileString	(File #) def
Packit Service 392537
/HeadingHostString	(Host) def
Packit Service 392537
/HeadingFsString	(File System) def
Packit Service 392537
/HeadingLvlString	(Level) def
Packit Service 392537
/HeadingOSizeString1	(Original) def
Packit Service 392537
/HeadingOSizeString2	(File Size (KB)) def
Packit Service 392537
/HeadingCSizeString1	(Compressed) def
Packit Service 392537
/HeadingCSizeString2	(File Size (KB)) def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'E' font
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/HostFontSize		9 def			% 9 point Courier
Packit Service 392537
/HostFont
Packit Service 392537
	/Courier findfont
Packit Service 392537
	HostFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% section 'F' font and strings
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/MessFontSize		9 def			% 9 point Courier
Packit Service 392537
/MessFont
Packit Service 392537
	/Courier findfont
Packit Service 392537
	MessFontSize scalefont
Packit Service 392537
def
Packit Service 392537
Packit Service 392537
/MessString1 (To restore:) def
Packit Service 392537
/MessString2 (   position tape at the start of the file and run:) def
Packit Service 392537
/MessString3 (      dd if=$TAPE bs=32k skip=1 | zcat | restore -ibf 2 -) def
Packit Service 392537
/MessString4 (   or run:) def
Packit Service 392537
/MessString5 (      amrestore -p $TAPE <host> <filesystem> | restore -ibf 2 -) def
Packit Service 392537
Packit Service 392537
%%%%
Packit Service 392537
%% END OF USER-CONFIGURABLE OPTIONS
Packit Service 392537
%%
Packit Service 392537
%% The rest of this file contains the internal functions used to draw
Packit Service 392537
%% the page and (hopefully) do not need any changes.
Packit Service 392537
%%%%
Packit Service 392537
Packit Service 392537
/setTitleFont {
Packit Service 392537
	TitleFont setfont			% make TitleFont current
Packit Service 392537
} def
Packit Service 392537
/setPageFont {
Packit Service 392537
	PageFont setfont			% make PageFont current
Packit Service 392537
} def
Packit Service 392537
/setVersFont {
Packit Service 392537
	VersFont setfont			% make VersFont current
Packit Service 392537
} def
Packit Service 392537
/setLocFont {
Packit Service 392537
	LocFont setfont				% make LocFont current
Packit Service 392537
} def
Packit Service 392537
/setDateFont {
Packit Service 392537
	DateFont setfont			% make DateFont current
Packit Service 392537
} def
Packit Service 392537
/setStatFont {
Packit Service 392537
	StatFont setfont			% make StatFont current
Packit Service 392537
} def
Packit Service 392537
/setHeadingFont {
Packit Service 392537
	HeadingFont setfont			% make HeadingFont current
Packit Service 392537
} def
Packit Service 392537
/setHostFont {
Packit Service 392537
	HostFont setfont			% make HostFont current
Packit Service 392537
} def
Packit Service 392537
/setMessFont {
Packit Service 392537
	MessFont setfont			% make MessFont current
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% apush -- increase an array size by one and push a value on the end
Packit Service 392537
% usage:	value array apush array
Packit Service 392537
% example:	/jj 0 array def
Packit Service 392537
%		/jj (first) jj apush def
Packit Service 392537
%		/jj (second) jj apush def
Packit Service 392537
%		/jj (third) jj apush def
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/apush {
Packit Service 392537
	exch					% [ array value ]
Packit Service 392537
	/.apush exch def			% save and pop the value
Packit Service 392537
						% [ array ]
Packit Service 392537
	aload					% [ old ... array ]
Packit Service 392537
	length					% length of the old array
Packit Service 392537
						% [ old ... length ]
Packit Service 392537
	1 add					% bump it by one
Packit Service 392537
						% [ old ... length+1 ]
Packit Service 392537
	array					% create the new array
Packit Service 392537
						% [ old ... newarray ]
Packit Service 392537
	.apush exch				% [ old ... value newarray ]
Packit Service 392537
	astore					% store the values
Packit Service 392537
						% [ newarray ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% box -- draw a box
Packit Service 392537
% usage:	llx lly urx ury box -
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/box {
Packit Service 392537
	3 index 2 1 add index moveto
Packit Service 392537
	3 index 0 1 add index lineto
Packit Service 392537
	1 index 0 1 add index lineto
Packit Service 392537
	1 index 2 1 add index lineto
Packit Service 392537
	pop pop pop pop
Packit Service 392537
	closepath
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% concat -- join two strings
Packit Service 392537
% usage:	str1 str2 concat new
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/concat {
Packit Service 392537
	exch					% str2 str1
Packit Service 392537
	dup					% str2 str1
Packit Service 392537
	length					% str2 str1 str1l
Packit Service 392537
	2 index					% str2 str1 str1l str2
Packit Service 392537
	length add string			% str2 str1 new
Packit Service 392537
	dup dup					% str2 str1 new new new
Packit Service 392537
	4 2 roll				% str2 new new str1 new
Packit Service 392537
	copy					% str2 new new (str1)
Packit Service 392537
	length					% str2 new new newl
Packit Service 392537
	4 -1 roll				% new new newl str2
Packit Service 392537
	putinterval				% new
Packit Service 392537
} bind def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% max -- return the max of two numbers
Packit Service 392537
% usage:	a b max a_or_b
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/max {
Packit Service 392537
	1 index 1 index				% [ a b a b ]
Packit Service 392537
	lt {
Packit Service 392537
		exch				% [ b a ]
Packit Service 392537
	} if
Packit Service 392537
	pop
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Set the basic drawable area width and height.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
clippath					% make the clip area the path
Packit Service 392537
pathbbox					% and get its bounding box
Packit Service 392537
						% [ llx lly urx ury ]
Packit Service 392537
exch						% [ llx lly ury urx ]
Packit Service 392537
4 1 roll					% [ urx llx lly ury ]
Packit Service 392537
exch sub					% total height
Packit Service 392537
TopMargin sub BottomMargin sub			% minus the margins
Packit Service 392537
/PageHeight exch def				% [ urx llx ]
Packit Service 392537
sub						% total width
Packit Service 392537
EvenLeftMargin sub EvenRightMargin sub		% minus the margins
Packit Service 392537
/PageWidth exch def
Packit Service 392537
newpath						% zap the path
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Define rectangles to separate the regions.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/TitleBox {
Packit Service 392537
	0					% [ llx ]
Packit Service 392537
	PageHeight				% [ llx PageHeight ]
Packit Service 392537
	  TitleFontSize PageFontSize max	% 'A' height
Packit Service 392537
	  2 add					% space between 'A' and 'B'
Packit Service 392537
	  4 add					% space below 'B'
Packit Service 392537
	  VersFontSize LocFontSize max
Packit Service 392537
		       DateFontSize max		% 'B' height
Packit Service 392537
	  add					% 'A' height+space+'B' height
Packit Service 392537
	  sub					% [ llx lly ]
Packit Service 392537
	PageWidth				% [ llx lly urx ]
Packit Service 392537
	PageHeight				% [ llx lly urx ury ]
Packit Service 392537
} bind def
Packit Service 392537
Packit Service 392537
/StatBox {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 1 roll dup				% [ urx llx lly lly ]
Packit Service 392537
	StatStrings length			% number of status lines
Packit Service 392537
	StatFontSize mul			% height of status lines
Packit Service 392537
	MessStrings length			% number of message lines
Packit Service 392537
	MessFontSize mul			% height of message lines
Packit Service 392537
	max					% max height
Packit Service 392537
	2 add					% space above
Packit Service 392537
	4 add					% space below
Packit Service 392537
	sub					% [ urx llx ury lly ]
Packit Service 392537
	exch					% [ urx llx lly ury ]
Packit Service 392537
	4 -1 roll				% [ llx lly ury urx ]
Packit Service 392537
	exch					% [ llx lly urx ury ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/CFLine {
Packit Service 392537
	StatBox					% [ llx lly urx ury ]
Packit Service 392537
	3 1 roll				% [ llx ury lly urx ]
Packit Service 392537
	pop exch				% [ llx lly ury ]
Packit Service 392537
	3 -1 roll				% [ lly ury llx ]
Packit Service 392537
	setStatFont
Packit Service 392537
	0
Packit Service 392537
	StatStrings {
Packit Service 392537
		stringwidth pop max
Packit Service 392537
	} forall
Packit Service 392537
	add
Packit Service 392537
	(nn) stringwidth pop add		% left and right padding
Packit Service 392537
	dup					% [ ly uy x x ]
Packit Service 392537
	3 1 roll				% [ ly x uy x ]
Packit Service 392537
	4 1 roll				% [ x ly x uy ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingBox {
Packit Service 392537
	StatBox					% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 1 roll dup				% [ urx llx lly lly ]
Packit Service 392537
	HeadingFontSize 2 mul			% two heading lines
Packit Service 392537
	2 add					% space above
Packit Service 392537
	4 add					% space below
Packit Service 392537
	sub					% [ urx llx ury lly ]
Packit Service 392537
	exch					% [ urx llx lly ury ]
Packit Service 392537
	4 -1 roll				% [ llx lly ury urx ]
Packit Service 392537
	exch					% [ llx lly urx ury ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HostBox {
Packit Service 392537
	HeadingBox				% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 1 roll 0				% [ urx llx lly 0 ]
Packit Service 392537
	exch					% [ urx llx lly ury ]
Packit Service 392537
	4 -1 roll				% [ llx lly ury urx ]
Packit Service 392537
	exch					% [ llx lly urx ury ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the center point for the section 'A' title text.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/TitlePos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	TitleFontSize sub			% [ llx lly urx y ]
Packit Service 392537
	3 -1 roll				% [ llx urx y lly ]
Packit Service 392537
	pop					% [ llx urx y ]
Packit Service 392537
	3 1 roll				% [ y llx urx ]
Packit Service 392537
	exch dup				% [ y urx llx llx ]
Packit Service 392537
	3 -1 roll				% [ y llx llx urx ]
Packit Service 392537
	exch sub 2 div add			% [ y x ]
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the odd page string (right adjusted).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/OddPagePos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	4 -2 roll				% [ urx ury llx lly ]
Packit Service 392537
	pop pop					% [ x y ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setPageFont
Packit Service 392537
	(n) stringwidth pop sub			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	PageFontSize sub
Packit Service 392537
	2 sub					% space above
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the even page string (left adjusted).
Packit Service 392537
% Not used if DoDuplex is off.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/EvenPagePos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	4 1 roll				% [ ury llx lly urx ]
Packit Service 392537
	pop pop					% [ y x ]
Packit Service 392537
	setPageFont
Packit Service 392537
	(n) stringwidth pop add			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	PageFontSize sub
Packit Service 392537
	2 sub					% space above
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the version string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/VersPos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	pop pop					% [ llx lly ]
Packit Service 392537
	exch					% [ lly llx ]
Packit Service 392537
	setVersFont
Packit Service 392537
	(n) stringwidth pop add			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	4 add					% space below
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the location string (centered).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/LocPos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 -1 roll				% [ lly urx llx ]
Packit Service 392537
	dup					% [ lly urx llx llx ]
Packit Service 392537
	3 -1 roll				% [ lly llx llx urx ]
Packit Service 392537
	exch sub 2 div add			% [ y x ]
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	4 add					% space below
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the date string (right adjusted).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/DatePos {
Packit Service 392537
	TitleBox				% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 -1 roll				% [ lly urx llx ]
Packit Service 392537
	pop					% [ y x ]
Packit Service 392537
	setDateFont
Packit Service 392537
	(n) stringwidth pop sub			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	4 add					% space below
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the top status string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/StatPos {
Packit Service 392537
	StatBox					% [ llx lly urx ury ]
Packit Service 392537
	exch pop				% [ llx lly ury ]
Packit Service 392537
	dup					% [ llx lly ury ury ]
Packit Service 392537
	3 1 roll				% [ llx ury lly ury ]
Packit Service 392537
	exch sub				% [ llx ury box_height ]
Packit Service 392537
	StatStrings length			% number of status lines
Packit Service 392537
	StatFontSize mul			% height of status lines
Packit Service 392537
	sub 2 div				% [ llx ury space_above ]
Packit Service 392537
	sub
Packit Service 392537
	StatFontSize sub			% [ llx y ]
Packit Service 392537
	2 add					% space above
Packit Service 392537
	exch					% [ y llx ]
Packit Service 392537
	setStatFont
Packit Service 392537
	(n) stringwidth pop add			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the position of the top message string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/MessPos {
Packit Service 392537
	CFLine					% [ lx ly ux uy ]
Packit Service 392537
	exch pop				% [ lx ly uy ]
Packit Service 392537
	dup					% [ lx ly uy uy ]
Packit Service 392537
	3 1 roll				% [ lx uy ly uy ]
Packit Service 392537
	exch sub				% [ lx uy box_height ]
Packit Service 392537
	MessStrings length			% number of status lines
Packit Service 392537
	MessFontSize mul			% height of status lines
Packit Service 392537
	sub 2 div				% [ lx uy space_above ]
Packit Service 392537
	sub
Packit Service 392537
	MessFontSize sub			% [ lx y ]
Packit Service 392537
	2 add					% space above
Packit Service 392537
	exch					% [ y lx ]
Packit Service 392537
	setMessFont
Packit Service 392537
	(n) stringwidth pop add			% a little padding
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the heading positions that start at the left.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/HeadingFilePos {
Packit Service 392537
	HeadingBox				% [ llx lly urx ury ]
Packit Service 392537
	pop pop					% [ llx lly ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setHeadingFont
Packit Service 392537
	(n) stringwidth pop add			% a little padding
Packit Service 392537
	dup
Packit Service 392537
	HeadingFileString stringwidth pop add
Packit Service 392537
	/HeadingFilePosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	4 add					% space below
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingHostPos {
Packit Service 392537
	HeadingFilePos				% [ x y ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setHeadingFont
Packit Service 392537
	(nn) stringwidth pop add		% a little padding
Packit Service 392537
	HeadingFileString stringwidth pop add
Packit Service 392537
	dup /HeadingHostPosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingFsPos {
Packit Service 392537
	HeadingHostPos				% [ x y ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setHostFont				% use the host font for sizes
Packit Service 392537
	HostNameWidth add
Packit Service 392537
	(nn) stringwidth pop add		% a little padding
Packit Service 392537
	dup /HeadingFsPosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	setHeadingFont				% leave it in the heading font
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Compute the heading positions that start at the right (and are right
Packit Service 392537
% justified).
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/HeadingCSizePos2 {
Packit Service 392537
	HeadingBox				% [ llx lly urx ury ]
Packit Service 392537
	pop					% [ llx lly urx ]
Packit Service 392537
	3 -1 roll				% [ lly urx llx ]
Packit Service 392537
	pop					% [ lly urx ]
Packit Service 392537
	setHeadingFont
Packit Service 392537
	(n) stringwidth pop sub			% a little padding
Packit Service 392537
	dup /HeadingCSizePosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
	4 add					% space below
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingCSizePos1 {
Packit Service 392537
	HeadingCSizePos2
Packit Service 392537
	HeadingFontSize add
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingOSizePos2 {
Packit Service 392537
	HeadingCSizePos2			% [ x y ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setHeadingFont
Packit Service 392537
	HeadingCSizeString1 stringwidth pop
Packit Service 392537
	HeadingCSizeString2 stringwidth pop
Packit Service 392537
	max					% widest string
Packit Service 392537
	sub					% [ y x ]
Packit Service 392537
	(n) stringwidth pop sub			% a little padding
Packit Service 392537
	dup /HeadingOSizePosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingOSizePos1 {
Packit Service 392537
	HeadingOSizePos2
Packit Service 392537
	HeadingFontSize add
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
/HeadingLvlPos {
Packit Service 392537
	HeadingOSizePos2			% [ x y ]
Packit Service 392537
	exch					% [ y x ]
Packit Service 392537
	setHeadingFont
Packit Service 392537
	HeadingOSizeString1 stringwidth pop
Packit Service 392537
	HeadingOSizeString2 stringwidth pop
Packit Service 392537
	max					% widest string
Packit Service 392537
	sub					% [ y x ]
Packit Service 392537
	HeadingLvlString stringwidth pop
Packit Service 392537
	2 div sub				% set up for centering
Packit Service 392537
	(n) stringwidth pop sub			% a little padding
Packit Service 392537
	dup /HeadingLvlPosX exch def		% for BuildHost
Packit Service 392537
	exch					% [ x y ]
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%%
Packit Service 392537
%% The following functions save strings for each kind of information
Packit Service 392537
%% and handle the calls generated by amreport.
Packit Service 392537
%%%%
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawStat saves a string in the next position for section 'A'.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/StatStrings 0 array def
Packit Service 392537
Packit Service 392537
/DrawStat {
Packit Service 392537
	/StatStrings exch			% [ /StatStrings value ]
Packit Service 392537
	StatStrings apush def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawMess saves a string in the next position for section 'F'.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/MessStrings 0 array def
Packit Service 392537
Packit Service 392537
/DrawMess {
Packit Service 392537
	/MessStrings exch			% [ /MessStrings value ]
Packit Service 392537
	MessStrings apush def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
MessString1 DrawMess
Packit Service 392537
MessString2 DrawMess
Packit Service 392537
MessString3 DrawMess
Packit Service 392537
MessString4 DrawMess
Packit Service 392537
MessString5 DrawMess
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawTitle saves the title string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/TitleString () def
Packit Service 392537
Packit Service 392537
/DrawTitle {
Packit Service 392537
	/TitleString exch def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawDate save the date string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/DateString () def
Packit Service 392537
Packit Service 392537
/DrawDate {
Packit Service 392537
	/DateString exch def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawLoc saves the location string.  Amreport does not generate this
Packit Service 392537
% call and the initial value has been set at the start of this file
Packit Service 392537
% in the user-changeable area.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/DrawLoc {
Packit Service 392537
	/LocationString exch def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawVers saves the Amanda version string.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/VersionString () def
Packit Service 392537
Packit Service 392537
/DrawVers {
Packit Service 392537
	/VersionString exch def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% DrawHost expects six strings on the stack:
Packit Service 392537
%
Packit Service 392537
%	Host Name
Packit Service 392537
%	Partition Name
Packit Service 392537
%	Dump Level
Packit Service 392537
%	Tape File Number
Packit Service 392537
%	Original Size
Packit Service 392537
%	Compressed Size
Packit Service 392537
%
Packit Service 392537
% They are saved for processing by the final showpage.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/HostStrings 0 array def
Packit Service 392537
/HostNameWidth 0 def
Packit Service 392537
Packit Service 392537
/DrawHost {
Packit Service 392537
	setHostFont
Packit Service 392537
	5 index					% copy of host name
Packit Service 392537
	stringwidth pop
Packit Service 392537
	HostNameWidth max
Packit Service 392537
	/HostNameWidth exch def			% find maximum host name width
Packit Service 392537
	6 array astore				% convert args to an array
Packit Service 392537
	/HostStrings exch			% [ /HostStrings value ]
Packit Service 392537
	HostStrings apush def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%%
Packit Service 392537
%% Functions used during actual page drawing.
Packit Service 392537
%%%%
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Center a string on the current point.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/Center {
Packit Service 392537
	dup stringwidth pop
Packit Service 392537
	2 div
Packit Service 392537
	neg 0 rmoveto
Packit Service 392537
} bind def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Right justify a string on the current point.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/RightJustify {
Packit Service 392537
	dup					% [ (str) (str) ]
Packit Service 392537
	stringwidth pop				% [ (str) width ]
Packit Service 392537
	neg 0 rmoveto
Packit Service 392537
} bind def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% The main page drawing function called when a new page is started.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/PageCount 1 def
Packit Service 392537
Packit Service 392537
/BuildPage {
Packit Service 392537
Packit Service 392537
	% translate to leave room for the margins
Packit Service 392537
Packit Service 392537
	PageCount 2 mod 1 eq {
Packit Service 392537
		OddLeftMargin
Packit Service 392537
	} {
Packit Service 392537
		EvenLeftMargin
Packit Service 392537
	} ifelse
Packit Service 392537
	BottomMargin translate
Packit Service 392537
Packit Service 392537
	% draw the boxes
Packit Service 392537
Packit Service 392537
	currentgray				% save the gray value
Packit Service 392537
	0 setgray				% turn off gray
Packit Service 392537
	currentlinewidth			% save the current line width
Packit Service 392537
	2 setlinewidth				% thick lines
Packit Service 392537
Packit Service 392537
	StatBox box stroke
Packit Service 392537
	TitleBox box stroke
Packit Service 392537
	HeadingBox box stroke
Packit Service 392537
	HostBox box stroke
Packit Service 392537
	CFLine moveto lineto stroke
Packit Service 392537
Packit Service 392537
	setlinewidth				% restore the line width
Packit Service 392537
	setgray					% restore the gray value
Packit Service 392537
Packit Service 392537
	% draw the title
Packit Service 392537
Packit Service 392537
	setTitleFont
Packit Service 392537
	TitleString
Packit Service 392537
	TitlePos moveto
Packit Service 392537
	Center
Packit Service 392537
	show
Packit Service 392537
Packit Service 392537
	% draw the page number string
Packit Service 392537
Packit Service 392537
	setPageFont
Packit Service 392537
	PageCount
Packit Service 392537
	32 string				% big enough for the number
Packit Service 392537
	cvs					% convert the number
Packit Service 392537
	PageString1 exch concat			% (Page NN)
Packit Service 392537
	PageString2 concat			% (Page NN of )
Packit Service 392537
	PageMaxString concat			% (Page NN of MM)
Packit Service 392537
	PageCount 2 mod 1 eq {
Packit Service 392537
		OddPagePos moveto
Packit Service 392537
		RightJustify
Packit Service 392537
	} {
Packit Service 392537
		DoDuplex 0 eq {
Packit Service 392537
			OddPagePos moveto
Packit Service 392537
			RightJustify
Packit Service 392537
		} {
Packit Service 392537
			EvenPagePos moveto
Packit Service 392537
		} ifelse
Packit Service 392537
	} ifelse
Packit Service 392537
	show
Packit Service 392537
	/PageCount PageCount 1 add def		% bump the page counter
Packit Service 392537
Packit Service 392537
	% draw the version string
Packit Service 392537
Packit Service 392537
	setVersFont
Packit Service 392537
	VersionString
Packit Service 392537
	VersPos moveto
Packit Service 392537
	show
Packit Service 392537
Packit Service 392537
	% draw the location
Packit Service 392537
Packit Service 392537
	setLocFont
Packit Service 392537
        LocationString
Packit Service 392537
	LocPos moveto
Packit Service 392537
	Center
Packit Service 392537
	show
Packit Service 392537
Packit Service 392537
	% draw the date string
Packit Service 392537
Packit Service 392537
	setDateFont
Packit Service 392537
	DateString
Packit Service 392537
	DatePos moveto
Packit Service 392537
	RightJustify
Packit Service 392537
	show
Packit Service 392537
Packit Service 392537
	% draw the status lines
Packit Service 392537
Packit Service 392537
	setStatFont
Packit Service 392537
	StatPos
Packit Service 392537
	/CurrentY exch def
Packit Service 392537
	StatStrings {
Packit Service 392537
		exch dup CurrentY moveto
Packit Service 392537
		exch show
Packit Service 392537
		/CurrentY CurrentY StatFontSize sub def
Packit Service 392537
	} forall
Packit Service 392537
	pop					% get rid of the X value
Packit Service 392537
Packit Service 392537
	% draw the messages
Packit Service 392537
Packit Service 392537
        setMessFont
Packit Service 392537
	MessPos
Packit Service 392537
	/CurrentY exch def
Packit Service 392537
	MessStrings {
Packit Service 392537
		exch dup CurrentY moveto
Packit Service 392537
		exch show
Packit Service 392537
		/CurrentY CurrentY MessFontSize sub def
Packit Service 392537
	} forall
Packit Service 392537
	pop					% get rid of the X value
Packit Service 392537
Packit Service 392537
	% draw the headings
Packit Service 392537
Packit Service 392537
	setHeadingFont
Packit Service 392537
	HeadingFilePos moveto
Packit Service 392537
	  HeadingFileString
Packit Service 392537
	  show
Packit Service 392537
	HeadingHostPos moveto
Packit Service 392537
	  HeadingHostString
Packit Service 392537
	  show
Packit Service 392537
	HeadingFsPos moveto
Packit Service 392537
	  HeadingFsString
Packit Service 392537
	  show
Packit Service 392537
	HeadingLvlPos moveto
Packit Service 392537
	  HeadingLvlString
Packit Service 392537
	  Center
Packit Service 392537
	  show
Packit Service 392537
	HeadingOSizePos1 moveto
Packit Service 392537
	  HeadingOSizeString1
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show
Packit Service 392537
	HeadingOSizePos2 moveto
Packit Service 392537
	  HeadingOSizeString2
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show
Packit Service 392537
	HeadingCSizePos1 moveto
Packit Service 392537
	  HeadingCSizeString1
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show
Packit Service 392537
	HeadingCSizePos2 moveto
Packit Service 392537
	  HeadingCSizeString2
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show
Packit Service 392537
Packit Service 392537
	% reset the host position variables
Packit Service 392537
Packit Service 392537
	HeadingBox				% [ llx lly urx ury ]
Packit Service 392537
	pop pop exch pop			% [ lly ]
Packit Service 392537
	HostFontSize sub
Packit Service 392537
	/CurrentY exch def
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Build the host line on the page.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
/BuildHost {
Packit Service 392537
	setHostFont
Packit Service 392537
	HeadingCSizePosX CurrentY moveto
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show					% compressed size
Packit Service 392537
	HeadingOSizePosX CurrentY moveto
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show					% original size
Packit Service 392537
	HeadingFilePosX CurrentY moveto
Packit Service 392537
	  RightJustify
Packit Service 392537
	  show					% tape file number
Packit Service 392537
	HeadingLvlPosX CurrentY moveto
Packit Service 392537
	  show					% dump level
Packit Service 392537
	HeadingFsPosX CurrentY moveto
Packit Service 392537
	  show					% file system
Packit Service 392537
	HeadingHostPosX CurrentY moveto
Packit Service 392537
	  show					% host
Packit Service 392537
Packit Service 392537
	HostCount 0 gt {			% if not at end of page
Packit Service 392537
		currentlinewidth		% save the line width
Packit Service 392537
		.25 setlinewidth		% thin lines
Packit Service 392537
Packit Service 392537
		CurrentY
Packit Service 392537
		dup				% keep this CurrentY
Packit Service 392537
		HostFontSize 2 add sub
Packit Service 392537
		/CurrentY exch def		% update CurrentY for next host
Packit Service 392537
Packit Service 392537
		2 sub				% move down a little
Packit Service 392537
		dup
Packit Service 392537
		0 exch				% [ y 0 y ]
Packit Service 392537
		moveto
Packit Service 392537
		PageWidth exch			% [ PageWidth y ]
Packit Service 392537
		lineto stroke
Packit Service 392537
		setlinewidth			% restore the line width
Packit Service 392537
	} if
Packit Service 392537
} def
Packit Service 392537
Packit Service 392537
%%%
Packit Service 392537
% Magic time -- the input consists of lots of calls to the /DrawXXX
Packit Service 392537
% functions, which gather the text into memory.  It ends with a showpage,
Packit Service 392537
% which we hook here to do all the real imaging after everything has
Packit Service 392537
% been collected.  The only reason to do all this is so we can know
Packit Service 392537
% how many pages will be generated for the "Page N of M" line.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
25 dict begin					% emperically enough entries
Packit Service 392537
	/*showpage /showpage load def		% rename showpage to *showpage
Packit Service 392537
						% in our dictionary
Packit Service 392537
	/showpage {
Packit Service 392537
		HostBox				% [ llx lly urx ury ]
Packit Service 392537
		exch pop			% [ llx lly ury ]
Packit Service 392537
		exch sub			% [ llx height ]
Packit Service 392537
		exch pop			% [ height ]
Packit Service 392537
		cvi				% idiv requires integers
Packit Service 392537
		HostFontSize
Packit Service 392537
		2 add				% space below each line
Packit Service 392537
		idiv				% hosts per page
Packit Service 392537
		dup
Packit Service 392537
		/HostMax exch def
Packit Service 392537
Packit Service 392537
		dup
Packit Service 392537
		/HostCount exch def		% initialize the counter
Packit Service 392537
Packit Service 392537
		dup				% [ HostMax HostMax ]
Packit Service 392537
		HostStrings length		% number of hosts
Packit Service 392537
		add 1 sub exch idiv		% number of pages
Packit Service 392537
		32 string cvs
Packit Service 392537
		/PageMaxString exch def
Packit Service 392537
Packit Service 392537
		/HavePage 0 def			% flag that page is built
Packit Service 392537
Packit Service 392537
		HostStrings {
Packit Service 392537
			aload pop		% put host strings on the stack
Packit Service 392537
			HostCount HostMax eq {
Packit Service 392537
				BuildPage	% time to build a new page
Packit Service 392537
				/HavePage 1 def
Packit Service 392537
			} if
Packit Service 392537
			/HostCount HostCount 1 sub def
Packit Service 392537
			BuildHost		% build this host line
Packit Service 392537
			HostCount 0 le {
Packit Service 392537
				*showpage	% time to dump a page
Packit Service 392537
				/HavePage 0 def
Packit Service 392537
				/HostCount HostMax def
Packit Service 392537
			} if
Packit Service 392537
		} forall
Packit Service 392537
Packit Service 392537
		HavePage 1 eq {
Packit Service 392537
			*showpage		% dump the last page
Packit Service 392537
		} if
Packit Service 392537
Packit Service 392537
		% Clean up.  Ideally this would be in the page epilog,
Packit Service 392537
		% but reporter.c only emits the "showpage".
Packit Service 392537
		end				% end the dict in which this
Packit Service 392537
						% showpage redefinition lives
Packit Service 392537
		pageSave restore		% free up memory
Packit Service 392537
		
Packit Service 392537
	} def
Packit Service 392537
%%%
Packit Service 392537
% Normally there would be an "end" here to match the "begin" for our
Packit Service 392537
% dictionary, but we want to leave it on top of the dictionary stack
Packit Service 392537
% so the final showpage runs our showpage replacement.
Packit Service 392537
%%%
Packit Service 392537
Packit Service 392537
%%%%
Packit Service 392537
%% END OF TEMPLATE FILE
Packit Service 392537
%%%%