/usr/share/ghostscript/9.18/Resource/Init/gs_statd.ps is in libgs9-common 9.18~dfsg~0-0ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | % Copyright (C) 2001-2012 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% Refer to licensing information at http://www.artifex.com or contact
% Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
% CA 94903, U.S.A., +1(415)492-9861, for further information.
%
% This file provides statusdict, serverdict, and assorted LaserWriter
% operators, mostly for the benefit of poorly designed PostScript programs
% that 'know' they are running on a LaserWriter.
systemdict begin
% We make statusdict a little larger for Level 2 stuff.
% Note that it must be allocated in local VM.
.currentglobal //false .setglobal
/statusdict 91 dict .forcedef % statusdict is local, sys'dict global
% To support the Level 2 job control features,
% serverdict must also be in local VM.
/serverdict 10 dict .forcedef % serverdict is local, sys'dict global
.setglobal
end
statusdict begin
% Keep the table of named paper sizes as procedures. Reuse them later
% as compatibility operators.
/.pagetypeprocs 70 dict begin
% Define various paper formats. The Adobe documentation defines only these:
% 11x17, a3, a4, a4small, b5, ledger, legal, letter, lettersmall, note.
% These procedures are also accessed as data structures during initialization,
% so the page dimensions must be the first two elements of the procedure.
/.setpagesize { /statusdict .systemvar begin .setpagesize end } bind def
% Page sizes defined by Adobe documentation
% Note: these executable arrays should all begin with two
% integers which are the width and height (see gs_setpd.ps).
/11x17 {792 1224 //.setpagesize exec} bind def % 11x17 portrait
/a3 {842 1191 //.setpagesize exec} bind def
/a4 {595 842 //.setpagesize exec} bind def
% a4small should be a4 with an ImagingBBox of [25 25 570 817].
/a4small /a4 load def
% b5 see below.
/ledger {1224 792 //.setpagesize exec} bind def % 11x17 landscape
/legal {612 1008 //.setpagesize exec} bind def
/letter {612 792 //.setpagesize exec} bind def
% lettersmall should be letter with an ImagingBBox of [25 25 587 767].
/lettersmall /letter load def
% note should be letter (or some other size) with the ImagingBBox
% shrunk by 25 units on all 4 sides.
/note /letter load def
% End of Adobe-defined page sizes
STRICT { (%END SIZES) .skipeof } if
% Other page sizes
% ISO standard paper sizes
/a0 {2384 3370 //.setpagesize exec} bind def
/a1 {1684 2384 //.setpagesize exec} bind def
/a2 {1191 1684 //.setpagesize exec} bind def
% /a3 {842 1191 //.setpagesize exec} bind def % defined by Adobe
% /a4 {595 842 //.setpagesize exec} bind def % defined by Adobe
/a5 {420 595 //.setpagesize exec} bind def
/a6 {297 420 //.setpagesize exec} bind def
/a7 {210 297 //.setpagesize exec} bind def
/a8 {148 210 //.setpagesize exec} bind def
/a9 {105 148 //.setpagesize exec} bind def
/a10 {73 105 //.setpagesize exec} bind def
% ISO and JIS B sizes are different....
/isob0 {2835 4008 //.setpagesize exec} bind def
/b0 /isob0 load def
/isob1 {2004 2835 //.setpagesize exec} bind def
/b1 /isob1 load def
/isob2 {1417 2004 //.setpagesize exec} bind def
/b2 /isob2 load def
/isob3 {1001 1417 //.setpagesize exec} bind def
/b3 /isob3 load def
/isob4 {709 1001 //.setpagesize exec} bind def
/b4 /isob4 load def
/isob5 {499 709 //.setpagesize exec} bind def
/b5 /isob5 load def
/isob6 {354 499 //.setpagesize exec} bind def
/b6 /isob6 load def
/jisb0 {2920 4127 //.setpagesize exec} bind def
/jisb1 {2064 2920 //.setpagesize exec} bind def
/jisb2 {1460 2064 //.setpagesize exec} bind def
/jisb3 {1032 1460 //.setpagesize exec} bind def
/jisb4 {729 1032 //.setpagesize exec} bind def
/jisb5 {516 729 //.setpagesize exec} bind def
/jisb6 {363 516 //.setpagesize exec} bind def
/c0 {2599 3677 //.setpagesize exec} bind def
/c1 {1837 2599 //.setpagesize exec} bind def
/c2 {1298 1837 //.setpagesize exec} bind def
/c3 {918 1298 //.setpagesize exec} bind def
/c4 {649 918 //.setpagesize exec} bind def
/c5 {459 649 //.setpagesize exec} bind def
/c6 {323 459 //.setpagesize exec} bind def
% U.S. CAD standard paper sizes
/archE {2592 3456 //.setpagesize exec} bind def
/archD {1728 2592 //.setpagesize exec} bind def
/archC {1296 1728 //.setpagesize exec} bind def
/archB {864 1296 //.setpagesize exec} bind def
/archA {648 864 //.setpagesize exec} bind def
% Other paper sizes
/flsa {612 936 //.setpagesize exec} bind def % U.S. foolscap
/flse {612 936 //.setpagesize exec} bind def % European foolscap
/halfletter {396 612 //.setpagesize exec} bind def
% minimum of a4 and letter (a4 width, letter length)
/pa4 {595 792 //.setpagesize exec} bind def
% Japanese postcard size, 100mm x 148mm
/hagaki {283 420 //.setpagesize exec} bind def
% U.S. ANSI/ASME Y14.1 paper sizes
/ANSI_A //letter def
/ANSI_B //11x17 def
/tabloid //11x17 def
/ANSI_C {1224 1585 //.setpagesize exec} bind def
/ANSI_D {1585 2448 //.setpagesize exec} bind def
/ANSI_E {2448 3168 //.setpagesize exec} bind def
/ANSI_F {2016 2880 //.setpagesize exec} bind def
%END SIZES
currentdict end
dup /.setpagesize .undef
userdict begin dup { def } forall end % reuse!
readonly def
% Define the pagetype values for the known page formats.
% This array is now used for deterministic enumeration of .pagetypeprocs
/.pagetypenames [ .pagetypeprocs { pop } bind forall ]
{ .namestring exch .namestring gt } bind .sort
readonly def
%%%%%% The following items were suggested by a user as useful.
% Permanent definitions
/ramsize 4194304 def
/hardwareiomode 0 def
/sethardwareiomode {pop} bind def
/softwareiomode 0 def
/setsoftwareiomode {pop} bind def
/dosysstart //false def
/setdosysstart {pop} bind def
/allowjobreset //true def
/setallowjobreset {pop} bind def
/defaultpaperfamily 0 def
/setdefaultpaperfamily {pop} bind def
/defaultpapertray 0 def
/setdefaultpapertray {pop} bind def
/defaulttrayswitch //false def
/setdefaulttrayswitch {pop} bind def
% Tray and format selection
/11x17tray {/11x17 .uservar exec} bind def
/a3tray {/a3 .uservar exec} bind def
/a4tray {/a4 .uservar exec} bind def
/a5tray {/a5 .uservar exec} bind def
/a6tray {/a6 .uservar exec} bind def
/b4tray {/b4 .uservar exec} bind def
/b5tray {/b5 .uservar exec} bind def
/flsatray {/flsa .uservar exec} bind def
/flsetray {/flse .uservar exec} bind def
/halflettertray {/halfletter .uservar exec} bind def
/ledgertray {/ledger .uservar exec} bind def
/legaltray {/legal .uservar exec} bind def
/lettertray {/letter .uservar exec} bind def
% Per-job parameters
/paperfamily 0 def % 0 is US, 1 is European
/papertray 1 def
/setpapertray {statusdict exch /papertray exch put} bind def
/trayswitch //false def % paperout feeds from another tray
% We don't implement the (undocumented by Adobe) papersize 'operator',
% because it's very awkward to make it interact properly with all the
% different ways of setting the paper size.
%/papersize {/letter //true} bind def % <name of paper size>, <short-edge-first-p>
/appletalktype (LaserWriter) def
%%%%%% The following items are defined in the PostScript Language
%%%%%% Reference Manual, First Edition, and subsequent 'compatibility'
%%%%%% documentation from Adobe.
/checkpassword {statusdict begin .password eq end} bind def
/defaulttimeouts {statusdict begin .timeouts aload pop end} bind def
/diskonline {
//false (%disk*%) { pop not exit } 8192 string /IODevice resourceforall
} bind def
/diskstatus {10240 2097152 } bind odef % - diskstatus <free> <total> (in 1024 byte pages)
%/dostartpage
/eescratch {pop 0} bind def
/idlefonts {statusdict begin mark .idlefonts aload pop end} bind def
/jobname () def
%/jobtimeout
/manualfeed //false def
/manualfeedtimeout 60 def
/margins {statusdict begin .topmargin .leftmargin end} bind def
/pagecount {4711} bind def
/pagestackorder {//false} bind def
/pagetype 0 def
/prefeed //false def
/printererror {pop pop} bind def
/printername {statusdict /.printername get exch copy} bind def
/processcolors /processcolors load def % defined in systemdict
/product product def % product is defined in systemdict
/revision revision def % revision is defined in systemdict
/sccbatch {pop 9600 0} bind def
/sccinteractive {pop 9600 0} bind def
/setdefaulttimeouts {statusdict begin .timeouts astore pop end} bind def
/setdostartpage {statusdict exch /dostartpage exch put} bind def
/setduplexmode {mark /Duplex 3 -1 roll currentdevice putdeviceprops} bind def
/seteescratch {pop pop} bind def
/setidlefonts {] statusdict exch /.idlefonts exch put} bind def
/setjobtimeout {statusdict exch /jobtimeout exch put} bind def
/setmargins
{ statusdict begin
/.leftmargin exch def /.topmargin exch def
end
} bind def
% The following compatibility operators are only documented by Adobe in a
% supplement to the Red Book.
%
% - pagemargin <offset>
% - pageparams <width> <height> <offset> <orientation>
% <width> <height> <orientation> setpage -
% <offset> setpagemargin -
% <width> <height> <offset> <orientation> setpageparams -
%
% width and height are in default units (and if orientation is odd, are
% exchanged!). offset is the x margin, also in default units.
% Unfortunately, because orientation is relative to the device paper feed,
% it does not have a consistent meaning in terms of image orientation.
% We follow the convention that ORIENT1 determines the orientation value
% that means portait: false means 0, true means 1.
/pagemargin { 0 } bind def
/pageparams
{ currentdevice 1 dict dup /.MediaSize dup put .getdeviceparams
exch pop exch pop aload pop 0 ORIENT1 { 1 } { 0 } ifelse
} bind def
/setpage
{ ORIENT1 { 1 } { 0 } ifelse ne {exch} if
statusdict /.setpagesize get exec
} bind def
/setpagemargin {pop} bind def % can't do better without setpagedevice
/setpageparams
{ exch pop ORIENT1 { 1 } { 0 } ifelse ne {exch} if
statusdict /.setpagesize get exec
} bind def
/setpagetype
{ statusdict begin
% The Adobe documentation only defines setpagetype
% (a Level 1 operator) as accepting the values 0 and 1,
% so we do too.
{/letter /note} 1 index get
//systemdict /userdict get exch get cvx exec
/pagetype exch def
end
} bind def
/setpassword
{exch checkpassword
{statusdict exch /.password exch put //true}
{pop //false}
ifelse} bind def
/setprintername
{dup length string copy statusdict exch /.printername exch put} bind def
% setresolution is not documented by Adobe, but some applications
% use it anyway, without testing whether or not it is present.
%
% <pixels_per_inch> setresolution -
%
% sets the resolution of the device.
/setresolution
{ mark /HWResolution [ 4 -1 roll dup ] currentdevice putdeviceprops pop
initmatrix erasepage
} bind def
/setsccbatch {pop pop pop} bind def
/setsccinteractive {pop pop pop} bind def
/settumble {pop} bind def
/waittimeout 300 def
%%%%%% End of documented items.
/.setpagesize
{ mark /HWSize [
4 index 4 index matrix defaultmatrix dtransform
abs ceiling cvi exch abs ceiling cvi exch
] currentdevice putdeviceprops pop pop pop
initmatrix initclip erasepage
} bind def
/.password 0 def
/.timeouts [0 60 30] def
//true setdostartpage
mark setidlefonts
0 setjobtimeout
0 0 setmargins
product setprintername
end % statusdict
%%%%%% The following documented compatibility "operators" are in systemdict,
%%%%%% not in statusdict.
systemdict begin
.currentglobal //true .setglobal
/devformat //true def
/devforall { % <pattern> <proc> <scratch> devforall -
exch {
1 index currentdevparams
/Type .knownget { /FileSystem eq } { //false } ifelse
{ exec } { pop pop } ifelse
} /exec load 3 packedarray cvx exch
(*) 3 1 roll /IODevice resourceforall
} odef
/devstatus { % <(%disk*%)> devstatus <searchable> <writable>
% <hasNames> <mounted> <removable> <searchOrder>
% <freePages> <size> //true
% <string> devstatus //false
dup length 5 ge {
dup 0 5 getinterval (%disk) eq {
dup /IODevice resourcestatus {
pop pop dup currentdevparams
dup /Searchable get
exch dup /Writeable get
exch dup /HasNames get
exch dup /Mounted get
exch dup /Removable get
exch dup /SearchOrder get
exch dup /Free get
exch /LogicalSize get
9 -1 roll pop //true
} {
pop //false
} ifelse
} {
pop //false
} ifelse
} {
pop //false
} ifelse
} odef
.setglobal end % systemdict
% The following contents of serverdict are a complete guess,
% based on some observed LaserWriter boilerplate.
serverdict begin
/execjob { } bind def
% The Red Book implies that something like the following is
% an appropriate definition of exitserver.
/exitserver { clear stop } bind def
% However, this interacts badly with our standard error handler,
% so we override it with the following less appropriate definition.
/exitserver { 0 ne { clear cleardictstack } if } bind def
/setrealdevice { } bind def
end % serverdict
|