Browse Source

Plan 9 from Bell Labs 2007-08-30

David du Colombier 16 years ago
parent
commit
2e3d58c81d
96 changed files with 6112 additions and 25160 deletions
  1. 1916 1991
      dist/replica/_plan9.db
  2. 1916 1991
      dist/replica/plan9.db
  3. 1998 0
      dist/replica/plan9.log
  4. 19 18
      sys/lib/dist/mkfile
  5. 3 0
      sys/man/1/cpp
  6. 58 15
      sys/man/8/ndb
  7. 5 0
      sys/src/cmd/cc/lex.c
  8. 6 0
      sys/src/cmd/cpp/nlist.c
  9. 46 0
      sys/src/cmd/gs/amd64.h
  10. 0 270
      sys/src/cmd/gs/doc/Current.htm
  11. 0 989
      sys/src/cmd/gs/doc/New-user.htm
  12. 0 132
      sys/src/cmd/gs/doc/Tester.htm
  13. 0 1401
      sys/src/cmd/gs/examples/golfer.ps
  14. 0 2737
      sys/src/cmd/gs/examples/tiger.ps
  15. 0 38
      sys/src/cmd/gs/icclib/COPYRIGHT
  16. 0 157
      sys/src/cmd/gs/icclib/README
  17. BIN
      sys/src/cmd/gs/jpeg/testimg.gif
  18. 0 289
      sys/src/cmd/gs/lib/pj-gs.sh
  19. 0 46
      sys/src/cmd/gs/lib/ps2pdfxx.bat
  20. 0 488
      sys/src/cmd/gs/libpng/ansi2knr.c
  21. 0 2
      sys/src/cmd/gs/libpng/build.bat
  22. 0 52
      sys/src/cmd/gs/libpng/descrip.mms
  23. 0 69
      sys/src/cmd/gs/libpng/makefile
  24. 0 221
      sys/src/cmd/gs/libpng/makefile.aco
  25. 0 42
      sys/src/cmd/gs/libpng/makefile.ama
  26. 0 31
      sys/src/cmd/gs/libpng/makefile.atr
  27. 0 168
      sys/src/cmd/gs/libpng/makefile.bor
  28. 0 68
      sys/src/cmd/gs/libpng/makefile.dec
  29. 0 52
      sys/src/cmd/gs/libpng/makefile.dj2
  30. 0 73
      sys/src/cmd/gs/libpng/makefile.knr
  31. 0 97
      sys/src/cmd/gs/libpng/makefile.lnx
  32. 0 80
      sys/src/cmd/gs/libpng/makefile.min
  33. 0 62
      sys/src/cmd/gs/libpng/makefile.mip
  34. 0 86
      sys/src/cmd/gs/libpng/makefile.msc
  35. 0 69
      sys/src/cmd/gs/libpng/makefile.sgi
  36. 0 68
      sys/src/cmd/gs/libpng/makefile.std
  37. 0 72
      sys/src/cmd/gs/libpng/makefile.sun
  38. 0 78
      sys/src/cmd/gs/libpng/makefile.tc3
  39. 0 125
      sys/src/cmd/gs/libpng/makevms.com
  40. 74 0
      sys/src/cmd/gs/libpng/png.5
  41. 0 50
      sys/src/cmd/gs/man/ansi2knr.1
  42. 9 15
      sys/src/cmd/gs/mkfile
  43. 0 739
      sys/src/cmd/gs/src/ansi2knr.c
  44. 0 24
      sys/src/cmd/gs/src/ccgs
  45. 0 609
      sys/src/cmd/gs/src/gdevalph.c
  46. 0 627
      sys/src/cmd/gs/src/gdevhpij.c
  47. 0 178
      sys/src/cmd/gs/src/gdevhpij.h
  48. 0 400
      sys/src/cmd/gs/src/gdevht.c
  49. 0 46
      sys/src/cmd/gs/src/gdevht.h
  50. 0 1
      sys/src/cmd/gs/src/gdevpdfd.c
  51. 0 373
      sys/src/cmd/gs/src/gdevpdfe.c
  52. 0 1400
      sys/src/cmd/gs/src/gdevpdff.c
  53. 0 472
      sys/src/cmd/gs/src/gdevpdff.h
  54. 0 1576
      sys/src/cmd/gs/src/gdevpdfs.c
  55. 0 1
      sys/src/cmd/gs/src/gdevpdft.c
  56. 0 858
      sys/src/cmd/gs/src/gdevpdfw.c
  57. 0 48
      sys/src/cmd/gs/src/gscsepnm.h
  58. 0 91
      sys/src/cmd/gs/src/gsfuncv.c
  59. 0 64
      sys/src/cmd/gs/src/gsfuncv.h
  60. 0 127
      sys/src/cmd/gs/src/gsgraph.icx
  61. 2 1
      sys/src/cmd/gs/src/gshtscr.c
  62. 0 127
      sys/src/cmd/gs/src/gstext.icx
  63. 0 578
      sys/src/cmd/gs/src/gxdither.c
  64. 0 269
      sys/src/cmd/gs/src/gxhint1.c
  65. 0 410
      sys/src/cmd/gs/src/gxhint2.c
  66. 0 556
      sys/src/cmd/gs/src/gxhint3.c
  67. 0 75
      sys/src/cmd/gs/src/gxop1.h
  68. 0 33
      sys/src/cmd/gs/src/macsysstat.h
  69. BIN
      sys/src/cmd/gs/src/obj
  70. 0 161
      sys/src/cmd/gs/src/slzwce.c
  71. 1 1
      sys/src/cmd/gs/src/ttobjs.h
  72. 7 1
      sys/src/cmd/gs/src/tttypes.h
  73. 0 395
      sys/src/cmd/gs/src/unixtrad.mak
  74. 0 331
      sys/src/cmd/gs/src/watc.mak
  75. 0 465
      sys/src/cmd/gs/src/zccube.c
  76. 0 115
      sys/src/cmd/gs/zlib/Make_vms.com
  77. 0 104
      sys/src/cmd/gs/zlib/Makefile.b32
  78. 0 105
      sys/src/cmd/gs/zlib/Makefile.bor
  79. 0 93
      sys/src/cmd/gs/zlib/Makefile.dj2
  80. 0 101
      sys/src/cmd/gs/zlib/Makefile.msc
  81. 0 46
      sys/src/cmd/gs/zlib/Makefile.riscos
  82. 0 64
      sys/src/cmd/gs/zlib/Makefile.sas
  83. 0 105
      sys/src/cmd/gs/zlib/Makefile.tc
  84. 0 103
      sys/src/cmd/gs/zlib/Makefile.wat
  85. 0 105
      sys/src/cmd/gs/zlib/algorithm.doc
  86. 0 48
      sys/src/cmd/gs/zlib/configure
  87. 0 402
      sys/src/cmd/gs/zlib/infblock.c
  88. 0 37
      sys/src/cmd/gs/zlib/infblock.h
  89. 0 247
      sys/src/cmd/gs/zlib/infcodes.c
  90. 0 27
      sys/src/cmd/gs/zlib/infcodes.h
  91. 0 87
      sys/src/cmd/gs/zlib/infutil.c
  92. 0 99
      sys/src/cmd/gs/zlib/infutil.h
  93. 0 46
      sys/src/cmd/gs/zlib/zlib.def
  94. 0 32
      sys/src/cmd/gs/zlib/zlib.rc
  95. 42 12
      sys/src/cmd/ndb/query.c
  96. 10 3
      sys/src/libauthsrv/readnvram.c

File diff suppressed because it is too large
+ 1916 - 1991
dist/replica/_plan9.db


File diff suppressed because it is too large
+ 1916 - 1991
dist/replica/plan9.db


+ 1998 - 0
dist/replica/plan9.log

@@ -50062,3 +50062,2001 @@
 1188329404 8 c sys/src/libsec/port/hmac.c - 664 sys sys 1188328428 885
 1188329404 9 c sys/src/libsec/port/md5.c - 664 sys sys 1188328428 3418
 1188329404 10 c sys/src/libsec/port/sha1.c - 664 sys sys 1188328426 2446
+1188412206 0 c 386/bin/gs - 775 sys sys 1188412047 13278976
+1188412206 1 c sys/src/cmd/gs/386.h - 664 sys sys 1137458835 1464
+1188412206 2 c sys/src/cmd/gs/alpha.h - 664 sys sys 1137458357 1373
+1188412206 3 a sys/src/cmd/gs/amd64.h - 664 sys sys 1139612381 1462
+1188412206 4 c sys/src/cmd/gs/arch.h - 664 sys sys 1116954411 347
+1188412206 5 c sys/src/cmd/gs/arm.h - 664 sys sys 1137458231 1376
+1188412206 6 c sys/src/cmd/gs/default.386.h - 664 sys sys 1137453714 1464
+1188412206 7 c sys/src/cmd/gs/default.alpha.h - 664 sys sys 1137458350 1373
+1188412206 8 c sys/src/cmd/gs/default.arm.h - 664 sys sys 1137458179 1376
+1188412206 9 c sys/src/cmd/gs/default.mips.h - 664 sys sys 1137457829 1372
+1188412206 10 c sys/src/cmd/gs/default.power.h - 664 sys sys 1137457844 1444
+1188412206 11 c sys/src/cmd/gs/doc/API.htm - 664 sys sys 1137452689 23585
+1188412206 12 c sys/src/cmd/gs/doc/Bug-form.htm - 664 sys sys 1137452689 5302
+1188412206 13 c sys/src/cmd/gs/doc/Bug-info.htm - 664 sys sys 1137452689 7401
+1188412206 14 c sys/src/cmd/gs/doc/C-style.htm - 664 sys sys 1137452689 56085
+1188412206 15 c sys/src/cmd/gs/doc/Changes.htm - 664 sys sys 1137452689 6682
+1188412206 16 c sys/src/cmd/gs/doc/Commprod.htm - 664 sys sys 1137452689 13277
+1188412206 17 c sys/src/cmd/gs/doc/Copying.htm - 664 sys sys 1137452689 2570
+1188412206 18 c sys/src/cmd/gs/doc/DLL.htm - 664 sys sys 1137452689 25595
+1188412206 19 c sys/src/cmd/gs/doc/Deprecated.htm - 664 sys sys 1137452689 181501
+1188412206 20 c sys/src/cmd/gs/doc/Details.htm - 664 sys sys 1137452689 14143
+1188412206 21 c sys/src/cmd/gs/doc/Details8.htm - 664 sys sys 1137452689 1468891
+1188412206 22 c sys/src/cmd/gs/doc/Develop.htm - 664 sys sys 1137452689 163215
+1188412206 23 c sys/src/cmd/gs/doc/Devices.htm - 664 sys sys 1137452689 59077
+1188412206 24 c sys/src/cmd/gs/doc/Drivers.htm - 664 sys sys 1137452689 130714
+1188412206 25 c sys/src/cmd/gs/doc/Fonts.htm - 664 sys sys 1137452689 45394
+1188412206 26 c sys/src/cmd/gs/doc/Helpers.htm - 664 sys sys 1137452689 10326
+1188412206 27 c sys/src/cmd/gs/doc/Hershey.htm - 664 sys sys 1137452689 14205
+1188412206 28 c sys/src/cmd/gs/doc/History1.htm - 664 sys sys 1137452689 15593
+1188412206 29 c sys/src/cmd/gs/doc/History2.htm - 664 sys sys 1137452689 211259
+1188412206 30 c sys/src/cmd/gs/doc/History3.htm - 664 sys sys 1137452689 348905
+1188412206 31 c sys/src/cmd/gs/doc/History4.htm - 664 sys sys 1137452689 162218
+1188412206 32 c sys/src/cmd/gs/doc/History5.htm - 664 sys sys 1137452689 564959
+1188412206 33 c sys/src/cmd/gs/doc/History6.htm - 664 sys sys 1137452689 365320
+1188412206 34 c sys/src/cmd/gs/doc/History7.htm - 664 sys sys 1137452689 822891
+1188412206 35 c sys/src/cmd/gs/doc/History8.htm - 664 sys sys 1137452689 788680
+1188412206 36 c sys/src/cmd/gs/doc/Htmstyle.htm - 664 sys sys 1137452689 28073
+1188412206 37 c sys/src/cmd/gs/doc/Humor.htm - 664 sys sys 1137452689 3633
+1188412206 38 c sys/src/cmd/gs/doc/Install.htm - 664 sys sys 1137452689 20665
+1188412206 39 c sys/src/cmd/gs/doc/Issues.htm - 664 sys sys 1137452689 20893
+1188412206 40 c sys/src/cmd/gs/doc/Language.htm - 664 sys sys 1137452689 87637
+1188412206 41 c sys/src/cmd/gs/doc/Lib.htm - 664 sys sys 1137452689 32830
+1188412206 42 c sys/src/cmd/gs/doc/Maintain.htm - 664 sys sys 1137452689 8759
+1188412206 43 c sys/src/cmd/gs/doc/Make.htm - 664 sys sys 1137452689 115126
+1188412206 44 c sys/src/cmd/gs/doc/News.htm - 664 sys sys 1137452689 5437
+1188412206 45 c sys/src/cmd/gs/doc/PUBLIC - 664 sys sys 1137452689 14333
+1188412206 46 c sys/src/cmd/gs/doc/Projects.htm - 664 sys sys 1137452689 30626
+1188412206 47 c sys/src/cmd/gs/doc/Ps-style.htm - 664 sys sys 1137452689 14820
+1188412206 48 c sys/src/cmd/gs/doc/Ps2epsi.htm - 664 sys sys 1137452689 6604
+1188412206 49 c sys/src/cmd/gs/doc/Ps2pdf.htm - 664 sys sys 1137452689 40440
+1188412206 50 c sys/src/cmd/gs/doc/Ps2ps2.htm - 775 sys sys 1137452689 9943
+1188412206 51 c sys/src/cmd/gs/doc/Psfiles.htm - 664 sys sys 1137452689 30055
+1188412206 52 c sys/src/cmd/gs/doc/Public.htm - 664 sys sys 1137452689 14407
+1188412206 53 c sys/src/cmd/gs/doc/README - 664 sys sys 1137452689 16006
+1188412206 54 c sys/src/cmd/gs/doc/Readme.htm - 664 sys sys 1137452689 22707
+1188412206 55 c sys/src/cmd/gs/doc/Release.htm - 664 sys sys 1137452689 30201
+1188412206 56 c sys/src/cmd/gs/doc/Source.htm - 664 sys sys 1137452689 13853
+1188412206 57 c sys/src/cmd/gs/doc/Testing.htm - 664 sys sys 1137452689 11174
+1188412206 58 c sys/src/cmd/gs/doc/Unix-lpr.htm - 664 sys sys 1137452689 10695
+1188412206 59 c sys/src/cmd/gs/doc/Use.htm - 664 sys sys 1137452689 144523
+1188412206 60 c sys/src/cmd/gs/doc/Xfonts.htm - 664 sys sys 1137452689 10644
+1188412206 61 c sys/src/cmd/gs/doc/gs-vms.hlp - 664 sys sys 1137452689 10848
+1188412206 62 c sys/src/cmd/gs/doc/gs.css - 664 sys sys 1137452689 986
+1188412206 63 c sys/src/cmd/gs/doc/gsdoc.el - 664 sys sys 1137452689 22041
+1188412206 64 c sys/src/cmd/gs/doc/index.html - 664 sys sys 1137452689 456
+1188412206 65 c sys/src/cmd/gs/examples/alphabet.ps - 664 sys sys 1137452689 1551
+1188412206 66 c sys/src/cmd/gs/examples/annots.pdf - 664 sys sys 1137452689 454126
+1188412206 67 c sys/src/cmd/gs/examples/chess.ps - 664 sys sys 1137452689 61791
+1188412206 68 c sys/src/cmd/gs/examples/colorcir.ps - 664 sys sys 1137452689 1973
+1188412206 69 c sys/src/cmd/gs/examples/doretree.ps - 664 sys sys 1137452689 137290
+1188412206 70 c sys/src/cmd/gs/examples/escher.ps - 664 sys sys 1137452689 10617
+1188412206 71 c sys/src/cmd/gs/examples/golfer.eps - 775 sys sys 1137452689 25574
+1188412206 72 c sys/src/cmd/gs/examples/grayalph.ps - 664 sys sys 1137452689 1624
+1188412206 73 c sys/src/cmd/gs/examples/ridt91.eps - 664 sys sys 1137452689 3020
+1188412206 74 c sys/src/cmd/gs/examples/snowflak.ps - 664 sys sys 1137452689 2165
+1188412206 75 c sys/src/cmd/gs/examples/tiger.eps - 775 sys sys 1137452689 78599
+1188412206 76 c sys/src/cmd/gs/examples/vasarely.ps - 664 sys sys 1137452689 13217
+1188412206 77 c sys/src/cmd/gs/examples/waterfal.ps - 664 sys sys 1137452689 2532
+1188412206 78 c sys/src/cmd/gs/fixSAFER.ed - 664 sys sys 1137452640 94
+1188412206 79 c sys/src/cmd/gs/icclib/Licence.txt - 664 sys sys 1137452689 1526
+1188412206 80 c sys/src/cmd/gs/icclib/NOTES - 664 sys sys 1137452689 13869
+1188412206 81 c sys/src/cmd/gs/icclib/Readme.txt - 664 sys sys 1137452689 7174
+1188412206 82 c sys/src/cmd/gs/icclib/icc.c - 664 sys sys 1137452689 362717
+1188412206 83 c sys/src/cmd/gs/icclib/icc.h - 664 sys sys 1137452689 41784
+1188412206 84 c sys/src/cmd/gs/icclib/icc9809.h - 664 sys sys 1137452689 47024
+1188412206 85 c sys/src/cmd/gs/jpeg/README - 664 sys sys 1137452691 19945
+1188412206 86 c sys/src/cmd/gs/jpeg/ansi2knr.1 - 664 sys sys 1137452691 1529
+1188412206 87 c sys/src/cmd/gs/jpeg/ansi2knr.c - 664 sys sys 1137452691 22315
+1188412206 88 c sys/src/cmd/gs/jpeg/cderror.h - 664 sys sys 1137452691 5249
+1188412206 89 c sys/src/cmd/gs/jpeg/cdjpeg.c - 664 sys sys 1137452691 4682
+1188412206 90 c sys/src/cmd/gs/jpeg/cdjpeg.h - 664 sys sys 1137452691 6123
+1188412206 91 c sys/src/cmd/gs/jpeg/change.log - 664 sys sys 1137452691 9284
+1188412206 92 c sys/src/cmd/gs/jpeg/cjpeg.1 - 664 sys sys 1137452691 10126
+1188412206 93 c sys/src/cmd/gs/jpeg/cjpeg.c - 664 sys sys 1137452691 19852
+1188412206 94 c sys/src/cmd/gs/jpeg/ckconfig.c - 664 sys sys 1137452691 12166
+1188412206 95 c sys/src/cmd/gs/jpeg/coderules.doc - 664 sys sys 1137452691 5364
+1188412206 96 c sys/src/cmd/gs/jpeg/config.guess - 775 sys sys 1137452691 24280
+1188412206 97 c sys/src/cmd/gs/jpeg/config.sub - 775 sys sys 1137452691 19802
+1188412206 98 c sys/src/cmd/gs/jpeg/configure - 775 sys sys 1137452691 60309
+1188412206 99 c sys/src/cmd/gs/jpeg/djpeg.1 - 664 sys sys 1137452691 7416
+1188412206 100 c sys/src/cmd/gs/jpeg/djpeg.c - 664 sys sys 1137452691 19339
+1188412206 101 c sys/src/cmd/gs/jpeg/example.c - 664 sys sys 1137452691 17091
+1188412206 102 c sys/src/cmd/gs/jpeg/filelist.doc - 664 sys sys 1137452691 8368
+1188412206 103 c sys/src/cmd/gs/jpeg/install-sh - 775 sys sys 1137452691 5584
+1188412206 104 c sys/src/cmd/gs/jpeg/install.doc - 664 sys sys 1137452691 51928
+1188412206 105 c sys/src/cmd/gs/jpeg/jcapimin.c - 664 sys sys 1137452691 9121
+1188412206 106 c sys/src/cmd/gs/jpeg/jcapistd.c - 664 sys sys 1137452691 5881
+1188412206 107 c sys/src/cmd/gs/jpeg/jccoefct.c - 664 sys sys 1137452691 16400
+1188412206 108 c sys/src/cmd/gs/jpeg/jccolor.c - 664 sys sys 1137452691 14848
+1188412206 109 c sys/src/cmd/gs/jpeg/jcdctmgr.c - 664 sys sys 1137452691 12469
+1188412206 110 c sys/src/cmd/gs/jpeg/jchuff.c - 664 sys sys 1137452691 28222
+1188412206 111 c sys/src/cmd/gs/jpeg/jchuff.h - 664 sys sys 1137452691 1575
+1188412206 112 c sys/src/cmd/gs/jpeg/jcinit.c - 664 sys sys 1137452691 2349
+1188412206 113 c sys/src/cmd/gs/jpeg/jcmainct.c - 664 sys sys 1137452691 9168
+1188412206 114 c sys/src/cmd/gs/jpeg/jcmarker.c - 664 sys sys 1137452691 17245
+1188412206 115 c sys/src/cmd/gs/jpeg/jcmaster.c - 664 sys sys 1137452691 19889
+1188412206 116 c sys/src/cmd/gs/jpeg/jcomapi.c - 664 sys sys 1137452691 3110
+1188412206 117 c sys/src/cmd/gs/jpeg/jconfig.bcc - 664 sys sys 1137452691 1416
+1188412206 118 c sys/src/cmd/gs/jpeg/jconfig.cfg - 664 sys sys 1137452691 1179
+1188412206 119 c sys/src/cmd/gs/jpeg/jconfig.dj - 664 sys sys 1137452691 1143
+1188412206 120 c sys/src/cmd/gs/jpeg/jconfig.doc - 664 sys sys 1137452691 5372
+1188412206 121 c sys/src/cmd/gs/jpeg/jconfig.mac - 664 sys sys 1137452691 1199
+1188412206 122 c sys/src/cmd/gs/jpeg/jconfig.manx - 664 sys sys 1137452691 1197
+1188412206 123 c sys/src/cmd/gs/jpeg/jconfig.mc6 - 664 sys sys 1137452691 1668
+1188412206 124 c sys/src/cmd/gs/jpeg/jconfig.sas - 664 sys sys 1137452691 1170
+1188412206 125 c sys/src/cmd/gs/jpeg/jconfig.st - 664 sys sys 1137452691 1308
+1188412206 126 c sys/src/cmd/gs/jpeg/jcparam.c - 664 sys sys 1137452691 21275
+1188412206 127 c sys/src/cmd/gs/jpeg/jdphuff.c - 664 sys sys 1137452691 20559
+1188412206 128 c sys/src/cmd/gs/jpeg/jdpostct.c - 664 sys sys 1137452691 9723
+1188412206 129 c sys/src/cmd/gs/jpeg/jdsample.c - 664 sys sys 1137452691 16381
+1188412206 130 c sys/src/cmd/gs/jpeg/jinclude.h - 664 sys sys 1137452691 3250
+1188412206 131 c sys/src/cmd/gs/jpeg/jmemansi.c - 664 sys sys 1137452691 4610
+1188412206 132 c sys/src/cmd/gs/jpeg/jmemdos.c - 664 sys sys 1137452691 18977
+1188412206 133 c sys/src/cmd/gs/jpeg/jmemdosa.asm - 664 sys sys 1137452691 8314
+1188412206 134 c sys/src/cmd/gs/jpeg/jmemmac.c - 664 sys sys 1137452691 9507
+1188412206 135 c sys/src/cmd/gs/jpeg/jmemmgr.c - 664 sys sys 1137452691 40988
+1188412206 136 c sys/src/cmd/gs/jpeg/jmemname.c - 664 sys sys 1137452691 8314
+1188412206 137 c sys/src/cmd/gs/jpeg/jmemnobs.c - 664 sys sys 1137452691 2772
+1188412206 138 c sys/src/cmd/gs/jpeg/jmemsys.h - 664 sys sys 1137452691 8230
+1188412206 139 c sys/src/cmd/gs/jpeg/jpegint.h - 664 sys sys 1137452691 15712
+1188412206 140 c sys/src/cmd/gs/jpeg/jpeglib.h - 664 sys sys 1137452691 46205
+1188412206 141 c sys/src/cmd/gs/jpeg/jpegtran.1 - 664 sys sys 1137452691 7462
+1188412206 142 c sys/src/cmd/gs/jpeg/jpegtran.c - 664 sys sys 1137452691 16227
+1188412206 143 c sys/src/cmd/gs/jpeg/jquant1.c - 664 sys sys 1137452691 31294
+1188412206 144 c sys/src/cmd/gs/jpeg/jquant2.c - 664 sys sys 1137452691 48429
+1188412206 145 c sys/src/cmd/gs/jpeg/jutils.c - 664 sys sys 1137452691 5240
+1188412206 146 c sys/src/cmd/gs/jpeg/jversion.h - 664 sys sys 1137452691 360
+1188412206 147 c sys/src/cmd/gs/jpeg/libjpeg.doc - 664 sys sys 1137452691 159338
+1188412206 148 c sys/src/cmd/gs/jpeg/ltconfig - 775 sys sys 1137452691 43097
+1188412206 149 c sys/src/cmd/gs/jpeg/ltmain.sh - 664 sys sys 1137452691 70979
+1188412206 150 c sys/src/cmd/gs/jpeg/makcjpeg.st - 664 sys sys 1137452691 1770
+1188412206 151 c sys/src/cmd/gs/jpeg/makdjpeg.st - 664 sys sys 1137452691 1770
+1188412206 152 c sys/src/cmd/gs/jpeg/makeapps.ds - 664 sys sys 1137452691 21331
+1188412206 153 c sys/src/cmd/gs/jpeg/makefile.ansi - 664 sys sys 1137452691 11797
+1188412206 154 c sys/src/cmd/gs/jpeg/makefile.bcc - 664 sys sys 1137452691 14400
+1188412206 155 c sys/src/cmd/gs/jpeg/makefile.cfg - 664 sys sys 1137452691 15750
+1188412206 156 c sys/src/cmd/gs/jpeg/testorig.jpg - 664 sys sys 1137452691 5770
+1188412206 157 c sys/src/cmd/gs/jpeg/testprog.jpg - 664 sys sys 1137452691 5655
+1188412206 158 c sys/src/cmd/gs/jpeg/transupp.c - 664 sys sys 1137452691 32630
+1188412206 159 c sys/src/cmd/gs/jpeg/transupp.h - 664 sys sys 1137452691 5761
+1188412206 160 c sys/src/cmd/gs/jpeg/usage.doc - 664 sys sys 1137452691 27171
+1188412206 161 c sys/src/cmd/gs/jpeg/jconfig.vc - 664 sys sys 1137452691 1333
+1188412206 162 c sys/src/cmd/gs/jpeg/jconfig.vms - 664 sys sys 1137452691 979
+1188412206 163 c sys/src/cmd/gs/jpeg/jconfig.wat - 664 sys sys 1137452691 1139
+1188412206 164 c sys/src/cmd/gs/jpeg/jcphuff.c - 664 sys sys 1137452691 25115
+1188412206 165 c sys/src/cmd/gs/jpeg/jcprepct.c - 664 sys sys 1137452691 12073
+1188412206 166 c sys/src/cmd/gs/jpeg/jcsample.c - 664 sys sys 1137452691 18859
+1188412206 167 c sys/src/cmd/gs/jpeg/jctrans.c - 664 sys sys 1137452691 13977
+1188412206 168 c sys/src/cmd/gs/jpeg/jdapimin.c - 664 sys sys 1137452691 12637
+1188412206 169 c sys/src/cmd/gs/jpeg/jdapistd.c - 664 sys sys 1137452691 9348
+1188412206 170 c sys/src/cmd/gs/jpeg/jdatadst.c - 664 sys sys 1137452691 5119
+1188412206 171 c sys/src/cmd/gs/jpeg/jdatasrc.c - 664 sys sys 1137452691 7604
+1188412206 172 c sys/src/cmd/gs/jpeg/jdcoefct.c - 664 sys sys 1137452691 25155
+1188412206 173 c sys/src/cmd/gs/jpeg/jdcolor.c - 664 sys sys 1137452691 12962
+1188412206 174 c sys/src/cmd/gs/jpeg/jdct.h - 664 sys sys 1137452691 7041
+1188412206 175 c sys/src/cmd/gs/jpeg/jddctmgr.c - 664 sys sys 1137452691 8293
+1188412206 176 c sys/src/cmd/gs/jpeg/jdhuff.c - 664 sys sys 1137452691 20866
+1188412206 177 c sys/src/cmd/gs/jpeg/jdhuff.h - 664 sys sys 1137452691 8138
+1188412206 178 c sys/src/cmd/gs/jpeg/jdinput.c - 664 sys sys 1137452691 13500
+1188412206 179 c sys/src/cmd/gs/jpeg/jdmainct.c - 664 sys sys 1137452691 20366
+1188412206 180 c sys/src/cmd/gs/jpeg/jdmarker.c - 664 sys sys 1137452691 41118
+1188412206 181 c sys/src/cmd/gs/jpeg/jdmaster.c - 664 sys sys 1137452691 19710
+1188412206 182 c sys/src/cmd/gs/jpeg/jdmerge.c - 664 sys sys 1137452691 13916
+1188412206 183 c sys/src/cmd/gs/jpeg/jdtrans.c - 664 sys sys 1137452691 5090
+1188412206 184 c sys/src/cmd/gs/jpeg/jerror.c - 664 sys sys 1137452691 7801
+1188412206 185 c sys/src/cmd/gs/jpeg/jerror.h - 664 sys sys 1137452691 13936
+1188412206 186 c sys/src/cmd/gs/jpeg/jfdctflt.c - 664 sys sys 1137452691 5486
+1188412206 187 c sys/src/cmd/gs/jpeg/jfdctfst.c - 664 sys sys 1137452691 7578
+1188412206 188 c sys/src/cmd/gs/jpeg/jfdctint.c - 664 sys sys 1137452691 11066
+1188412206 189 c sys/src/cmd/gs/jpeg/jidctflt.c - 664 sys sys 1137452691 8451
+1188412206 190 c sys/src/cmd/gs/jpeg/jidctfst.c - 664 sys sys 1137452691 13170
+1188412206 191 c sys/src/cmd/gs/jpeg/jidctint.c - 664 sys sys 1137452691 14815
+1188412206 192 c sys/src/cmd/gs/jpeg/jidctred.c - 664 sys sys 1137452691 13528
+1188412206 193 c sys/src/cmd/gs/jpeg/jmorecfg.h.save - 664 sys sys 1137452822 12458
+1188412206 194 c sys/src/cmd/gs/jpeg/makefile.dj - 664 sys sys 1137452691 11931
+1188412206 195 c sys/src/cmd/gs/jpeg/makefile.manx - 664 sys sys 1137452691 11723
+1188412206 196 c sys/src/cmd/gs/jpeg/makefile.mc6 - 664 sys sys 1137452691 13918
+1188412206 197 c sys/src/cmd/gs/jpeg/makefile.mms - 664 sys sys 1137452691 13253
+1188412206 198 c sys/src/cmd/gs/jpeg/makefile.sas - 664 sys sys 1137452691 12586
+1188412206 199 c sys/src/cmd/gs/jpeg/makefile.unix - 664 sys sys 1137452691 12171
+1188412206 200 c sys/src/cmd/gs/jpeg/makefile.vc - 664 sys sys 1137452691 12176
+1188412206 201 c sys/src/cmd/gs/jpeg/makefile.vms - 664 sys sys 1137452691 4423
+1188412206 202 c sys/src/cmd/gs/jpeg/makefile.wat - 664 sys sys 1137452691 12421
+1188412206 203 c sys/src/cmd/gs/jpeg/makelib.ds - 664 sys sys 1137452691 21450
+1188412206 204 c sys/src/cmd/gs/jpeg/makeproj.mac - 664 sys sys 1137452691 10374
+1188412206 205 c sys/src/cmd/gs/jpeg/makljpeg.st - 664 sys sys 1137452691 4329
+1188412206 206 c sys/src/cmd/gs/jpeg/maktjpeg.st - 664 sys sys 1137452691 1353
+1188412206 207 c sys/src/cmd/gs/jpeg/makvms.opt - 664 sys sys 1137452691 210
+1188412206 208 c sys/src/cmd/gs/jpeg/rdbmp.c - 664 sys sys 1137452691 13792
+1188412206 209 c sys/src/cmd/gs/jpeg/rdcolmap.c - 664 sys sys 1137452691 6849
+1188412206 210 c sys/src/cmd/gs/jpeg/rdgif.c - 664 sys sys 1137452691 1272
+1188412206 211 c sys/src/cmd/gs/jpeg/rdjpgcom.1 - 664 sys sys 1137452691 1561
+1188412206 212 c sys/src/cmd/gs/jpeg/rdjpgcom.c - 664 sys sys 1137452691 13879
+1188412206 213 c sys/src/cmd/gs/jpeg/rdppm.c - 664 sys sys 1137452691 14024
+1188412206 214 c sys/src/cmd/gs/jpeg/rdrle.c - 664 sys sys 1137452691 11673
+1188412206 215 c sys/src/cmd/gs/jpeg/rdswitch.c - 664 sys sys 1137452691 9675
+1188412206 216 c sys/src/cmd/gs/jpeg/rdtarga.c - 664 sys sys 1137452691 14967
+1188412206 217 c sys/src/cmd/gs/jpeg/structure.doc - 664 sys sys 1137452691 51896
+1188412206 218 c sys/src/cmd/gs/jpeg/testimg.bmp - 664 sys sys 1137452691 35050
+1188412206 219 c sys/src/cmd/gs/jpeg/testimg.jpg - 664 sys sys 1137452691 5756
+1188412206 220 c sys/src/cmd/gs/jpeg/testimg.ppm - 664 sys sys 1137452691 101484
+1188412206 221 c sys/src/cmd/gs/jpeg/testimgp.jpg - 664 sys sys 1137452691 5645
+1188412206 222 c sys/src/cmd/gs/jpeg/wizard.doc - 664 sys sys 1137452691 9759
+1188412206 223 c sys/src/cmd/gs/jpeg/wrbmp.c - 664 sys sys 1137452691 13913
+1188412206 224 c sys/src/cmd/gs/jpeg/wrgif.c - 664 sys sys 1137452691 12888
+1188412206 225 c sys/src/cmd/gs/jpeg/wrjpgcom.1 - 664 sys sys 1137452691 2627
+1188412206 226 c sys/src/cmd/gs/jpeg/wrjpgcom.c - 664 sys sys 1137452691 16563
+1188412206 227 c sys/src/cmd/gs/jpeg/wrppm.c - 664 sys sys 1137452691 8331
+1188412206 228 c sys/src/cmd/gs/jpeg/wrrle.c - 664 sys sys 1137452691 9242
+1188412206 229 c sys/src/cmd/gs/jpeg/wrtarga.c - 664 sys sys 1137452691 7524
+1188412206 230 c sys/src/cmd/gs/lib/EndOfTask.ps - 775 sys sys 1137452691 1
+1188412206 231 c sys/src/cmd/gs/lib/FAPIcidfmap - 664 sys sys 1137452691 1495
+1188412206 232 c sys/src/cmd/gs/lib/FAPIconfig - 664 sys sys 1137452691 778
+1188412206 233 c sys/src/cmd/gs/lib/FAPIfontmap - 664 sys sys 1137452691 1480
+1188412206 234 c sys/src/cmd/gs/lib/Fontmap - 664 sys sys 1137452691 109
+1188412206 235 c sys/src/cmd/gs/lib/Fontmap.ATB - 664 sys sys 1137452691 5915
+1188412206 236 c sys/src/cmd/gs/lib/Fontmap.ATM - 664 sys sys 1137452691 5691
+1188412206 237 c sys/src/cmd/gs/lib/Fontmap.GS - 664 sys sys 1137452691 13531
+1188412206 238 c sys/src/cmd/gs/lib/Fontmap.OS2 - 664 sys sys 1137452691 7275
+1188412206 239 c sys/src/cmd/gs/lib/Fontmap.OSF - 664 sys sys 1137452691 6532
+1188412206 240 c sys/src/cmd/gs/lib/Fontmap.SGI - 664 sys sys 1137452691 13791
+1188412206 241 c sys/src/cmd/gs/lib/Fontmap.Sol - 664 sys sys 1137452691 16470
+1188412206 242 c sys/src/cmd/gs/lib/Fontmap.Ult - 664 sys sys 1137452691 6084
+1188412206 243 c sys/src/cmd/gs/lib/Fontmap.VMS - 664 sys sys 1137452691 14409
+1188412206 244 c sys/src/cmd/gs/lib/Info-macos.plist - 664 sys sys 1137452691 469
+1188412206 245 c sys/src/cmd/gs/lib/PDFX_def.ps - 775 sys sys 1137452691 1355
+1188412206 246 c sys/src/cmd/gs/lib/acctest.ps - 664 sys sys 1137452691 4328
+1188412206 247 c sys/src/cmd/gs/lib/addxchar.ps - 664 sys sys 1137452691 9852
+1188412206 248 c sys/src/cmd/gs/lib/afmdiff.awk - 775 sys sys 1137452691 5743
+1188412206 249 c sys/src/cmd/gs/lib/align.ps - 664 sys sys 1137452691 2317
+1188412206 250 c sys/src/cmd/gs/lib/bdftops - 775 sys sys 1137452691 235
+1188412206 251 c sys/src/cmd/gs/lib/bdftops.bat - 775 sys sys 1137452691 158
+1188412206 252 c sys/src/cmd/gs/lib/bdftops.cmd - 775 sys sys 1137452691 267
+1188412206 253 c sys/src/cmd/gs/lib/bdftops.ps - 664 sys sys 1137452691 23410
+1188412206 254 c sys/src/cmd/gs/lib/bj8.rpd - 664 sys sys 1137452691 639
+1188412206 255 c sys/src/cmd/gs/lib/bj8gc12f.upp - 664 sys sys 1137452691 1528
+1188412206 256 c sys/src/cmd/gs/lib/bj8hg12f.upp - 664 sys sys 1137452691 1527
+1188412206 257 c sys/src/cmd/gs/lib/bj8oh06n.upp - 664 sys sys 1137452691 1513
+1188412206 258 c sys/src/cmd/gs/lib/bj8pa06n.upp - 664 sys sys 1137452691 1521
+1188412206 259 c sys/src/cmd/gs/lib/bj8pp12f.upp - 664 sys sys 1137452691 1538
+1188412206 260 c sys/src/cmd/gs/lib/bj8ts06n.upp - 664 sys sys 1137452691 1526
+1188412206 261 c sys/src/cmd/gs/lib/bjc610a0.upp - 664 sys sys 1137452691 1523
+1188412206 262 c sys/src/cmd/gs/lib/bjc610a1.upp - 664 sys sys 1137452691 1512
+1188412206 263 c sys/src/cmd/gs/lib/bjc610a2.upp - 664 sys sys 1137452691 1513
+1188412206 264 c sys/src/cmd/gs/lib/bjc610a3.upp - 664 sys sys 1137452691 1518
+1188412206 265 c sys/src/cmd/gs/lib/bjc610a4.upp - 664 sys sys 1137452691 1526
+1188412206 266 c sys/src/cmd/gs/lib/bjc610a5.upp - 664 sys sys 1137452691 1513
+1188412206 267 c sys/src/cmd/gs/lib/bjc610a6.upp - 664 sys sys 1137452691 1513
+1188412206 268 c sys/src/cmd/gs/lib/bjc610a7.upp - 664 sys sys 1137452691 1516
+1188412206 269 c sys/src/cmd/gs/lib/eps2eps - 775 sys sys 1137452691 557
+1188412206 270 c sys/src/cmd/gs/lib/eps2eps.bat - 775 sys sys 1137452691 577
+1188412206 271 c sys/src/cmd/gs/lib/eps2eps.cmd - 775 sys sys 1137452691 724
+1188412206 272 c sys/src/cmd/gs/lib/errpage.ps - 664 sys sys 1137452691 8598
+1188412206 273 c sys/src/cmd/gs/lib/fixmswrd.pl - 775 sys sys 1137452691 4585
+1188412206 274 c sys/src/cmd/gs/lib/gs_ce_e.ps - 664 sys sys 1137452691 2368
+1188412206 275 c sys/src/cmd/gs/lib/gs_cff.ps - 664 sys sys 1137452691 22476
+1188412206 276 c sys/src/cmd/gs/lib/gs_cidcm.ps - 664 sys sys 1137452691 17059
+1188412206 277 c sys/src/cmd/gs/lib/gs_ciddc.ps - 664 sys sys 1137452691 7333
+1188412206 278 c sys/src/cmd/gs/lib/gs_cidfm.ps - 664 sys sys 1137452691 4638
+1188412206 279 c sys/src/cmd/gs/lib/gs_cidfn.ps - 664 sys sys 1137452691 12612
+1188412206 280 c sys/src/cmd/gs/lib/gs_cidtt.ps - 664 sys sys 1137452691 4796
+1188412206 281 c sys/src/cmd/gs/lib/gs_ciecs2.ps - 664 sys sys 1137452691 3477
+1188412206 282 c sys/src/cmd/gs/lib/gs_ciecs3.ps - 664 sys sys 1137452691 3183
+1188412206 283 c sys/src/cmd/gs/lib/gs_cmap.ps - 664 sys sys 1137452691 17210
+1188412206 284 c sys/src/cmd/gs/lib/gs_cmdl.ps - 664 sys sys 1137452691 4848
+1188412206 285 c sys/src/cmd/gs/lib/gs_cspace.ps - 664 sys sys 1137452691 29498
+1188412206 286 c sys/src/cmd/gs/lib/gs_css_e.ps - 664 sys sys 1137452691 4955
+1188412206 287 c sys/src/cmd/gs/lib/gs_dbt_e.ps - 664 sys sys 1137452691 2288
+1188412206 288 c sys/src/cmd/gs/lib/gs_devcs.ps - 664 sys sys 1137452691 6281
+1188412206 289 c sys/src/cmd/gs/lib/gs_devn.ps - 664 sys sys 1137452691 5556
+1188412206 290 c sys/src/cmd/gs/lib/gs_devpxl.ps - 664 sys sys 1137452691 2244
+1188412206 291 c sys/src/cmd/gs/lib/gs_diskf.ps - 664 sys sys 1137452691 7584
+1188412206 292 c sys/src/cmd/gs/lib/gs_diskn.ps - 664 sys sys 1137452691 6892
+1188412206 293 c sys/src/cmd/gs/lib/gs_dpnxt.ps - 664 sys sys 1137452691 4766
+1188412206 294 c sys/src/cmd/gs/lib/gs_dps.ps - 664 sys sys 1137452691 7842
+1188412206 295 c sys/src/cmd/gs/lib/gs_dps1.ps - 664 sys sys 1137452691 4576
+1188412206 296 c sys/src/cmd/gs/lib/gs_dps2.ps - 664 sys sys 1137452691 6977
+1188412206 297 c sys/src/cmd/gs/lib/gs_dscp.ps - 664 sys sys 1137452691 3936
+1188412206 298 c sys/src/cmd/gs/lib/gs_epsf.ps - 664 sys sys 1137452691 7220
+1188412206 299 c sys/src/cmd/gs/lib/gs_fapi.ps - 664 sys sys 1137452691 9287
+1188412206 300 c sys/src/cmd/gs/lib/gs_fform.ps - 664 sys sys 1137452691 3166
+1188412206 301 c sys/src/cmd/gs/lib/gs_fntem.ps - 664 sys sys 1137452691 10788
+1188412206 302 c sys/src/cmd/gs/lib/gs_fonts.ps - 664 sys sys 1137452691 43873
+1188412206 303 c sys/src/cmd/gs/lib/gs_frsd.ps - 664 sys sys 1137452691 3002
+1188412206 304 c sys/src/cmd/gs/lib/gs_icc.ps - 664 sys sys 1137452691 10598
+1188412206 305 c sys/src/cmd/gs/lib/gs_il1_e.ps - 664 sys sys 1137452691 2800
+1188412206 306 c sys/src/cmd/gs/lib/bjc610a8.upp - 664 sys sys 1137452691 1522
+1188412206 307 c sys/src/cmd/gs/lib/bjc610b1.upp - 664 sys sys 1137452691 1512
+1188412206 308 c sys/src/cmd/gs/lib/bjc610b2.upp - 664 sys sys 1137452691 1513
+1188412206 309 c sys/src/cmd/gs/lib/bjc610b3.upp - 664 sys sys 1137452691 1518
+1188412206 310 c sys/src/cmd/gs/lib/bjc610b4.upp - 664 sys sys 1137452692 1526
+1188412206 311 c sys/src/cmd/gs/lib/bjc610b6.upp - 664 sys sys 1137452692 1513
+1188412206 312 c sys/src/cmd/gs/lib/bjc610b7.upp - 664 sys sys 1137452692 1517
+1188412206 313 c sys/src/cmd/gs/lib/bjc610b8.upp - 664 sys sys 1137452692 1522
+1188412206 314 c sys/src/cmd/gs/lib/caption.ps - 664 sys sys 1137452692 1725
+1188412206 315 c sys/src/cmd/gs/lib/cbjc600.ppd - 664 sys sys 1137452692 11040
+1188412206 316 c sys/src/cmd/gs/lib/cbjc800.ppd - 664 sys sys 1137452692 11383
+1188412206 317 c sys/src/cmd/gs/lib/cdj550.upp - 664 sys sys 1137452692 1686
+1188412206 318 c sys/src/cmd/gs/lib/cdj690.upp - 664 sys sys 1137452692 1995
+1188412206 319 c sys/src/cmd/gs/lib/cdj690ec.upp - 664 sys sys 1137452692 2056
+1188412206 320 c sys/src/cmd/gs/lib/cid2code.ps - 664 sys sys 1137452692 4479
+1188412206 321 c sys/src/cmd/gs/lib/cidfmap - 664 sys sys 1137452692 996
+1188412206 322 c sys/src/cmd/gs/lib/decrypt.ps - 664 sys sys 1137452692 354
+1188412206 323 c sys/src/cmd/gs/lib/dnj750c.upp - 664 sys sys 1137452692 2804
+1188412206 324 c sys/src/cmd/gs/lib/dnj750m.upp - 664 sys sys 1137452692 1971
+1188412206 325 c sys/src/cmd/gs/lib/docie.ps - 664 sys sys 1137452692 7123
+1188412206 326 c sys/src/cmd/gs/lib/dumphint - 775 sys sys 1137452692 481
+1188412206 327 c sys/src/cmd/gs/lib/dumphint.bat - 775 sys sys 1137452692 378
+1188412206 328 c sys/src/cmd/gs/lib/dumphint.ps - 775 sys sys 1137452692 20048
+1188412206 329 c sys/src/cmd/gs/lib/dvipdf - 775 sys sys 1137452692 965
+1188412206 330 c sys/src/cmd/gs/lib/font2c - 775 sys sys 1137452692 243
+1188412206 331 c sys/src/cmd/gs/lib/font2c.bat - 775 sys sys 1137452692 166
+1188412206 332 c sys/src/cmd/gs/lib/font2c.cmd - 775 sys sys 1137452692 275
+1188412206 333 c sys/src/cmd/gs/lib/font2c.ps - 664 sys sys 1137452692 19593
+1188412206 334 c sys/src/cmd/gs/lib/font2pcl.ps - 664 sys sys 1137452692 17575
+1188412206 335 c sys/src/cmd/gs/lib/ghostpdf.inf - 664 sys sys 1137452692 683
+1188412206 336 c sys/src/cmd/gs/lib/ghostpdf.ppd - 664 sys sys 1137452692 25478
+1188412206 337 c sys/src/cmd/gs/lib/gs_agl.ps - 664 sys sys 1137452692 28612
+1188412206 338 c sys/src/cmd/gs/lib/gs_btokn.ps - 664 sys sys 1137452692 11103
+1188412206 339 c sys/src/cmd/gs/lib/gs_ccfnt.ps - 664 sys sys 1137452692 2167
+1188412206 340 c sys/src/cmd/gs/lib/gs_il2_e.ps - 664 sys sys 1137452691 2781
+1188412206 341 c sys/src/cmd/gs/lib/gs_img.ps - 664 sys sys 1137452691 21397
+1188412206 342 c sys/src/cmd/gs/lib/gs_indxd.ps - 664 sys sys 1137452691 5462
+1188412206 343 c sys/src/cmd/gs/lib/gs_init.ps - 664 sys sys 1137457354 73009
+1188412206 344 c sys/src/cmd/gs/lib/gs_kanji.ps - 664 sys sys 1137452692 3946
+1188412206 345 c sys/src/cmd/gs/lib/gs_ksb_e.ps - 664 sys sys 1137452692 3295
+1188412206 346 c sys/src/cmd/gs/lib/gs_l.xbm - 664 sys sys 1137452692 1945
+1188412206 347 c sys/src/cmd/gs/lib/gs_l.xpm - 664 sys sys 1137452692 2751
+1188412206 348 c sys/src/cmd/gs/lib/gs_l2img.ps - 664 sys sys 1137452692 5635
+1188412206 349 c sys/src/cmd/gs/lib/gs_l_m.xbm - 664 sys sys 1137452692 1955
+1188412206 350 c sys/src/cmd/gs/lib/gs_lev2.ps - 664 sys sys 1137452692 31509
+1188412206 351 c sys/src/cmd/gs/lib/gs_lgo_e.ps - 664 sys sys 1137452692 2890
+1188412206 352 c sys/src/cmd/gs/lib/gs_lgx_e.ps - 664 sys sys 1137452692 1916
+1188412206 353 c sys/src/cmd/gs/lib/gs_ll3.ps - 664 sys sys 1137452692 10554
+1188412206 354 c sys/src/cmd/gs/lib/gs_m.xbm - 664 sys sys 1137452692 945
+1188412206 355 c sys/src/cmd/gs/lib/gs_m.xpm - 664 sys sys 1137452692 1437
+1188412206 356 c sys/src/cmd/gs/lib/gs_m_m.xbm - 664 sys sys 1137452692 955
+1188412206 357 c sys/src/cmd/gs/lib/gs_mex_e.ps - 664 sys sys 1137452692 3997
+1188412206 358 c sys/src/cmd/gs/lib/gs_mgl_e.ps - 664 sys sys 1137452692 2193
+1188412206 359 c sys/src/cmd/gs/lib/gs_mro_e.ps - 664 sys sys 1137452692 2539
+1188412206 360 c sys/src/cmd/gs/lib/gs_patrn.ps - 664 sys sys 1137452692 7927
+1188412206 361 c sys/src/cmd/gs/lib/gs_pdf_e.ps - 664 sys sys 1137452692 1709
+1188412206 362 c sys/src/cmd/gs/lib/gs_pdfwr.ps - 664 sys sys 1137452692 25452
+1188412206 363 c sys/src/cmd/gs/lib/gs_pfile.ps - 664 sys sys 1137452692 4345
+1188412206 364 c sys/src/cmd/gs/lib/gs_rdlin.ps - 664 sys sys 1137452692 866
+1188412206 365 c sys/src/cmd/gs/lib/gs_res.ps - 664 sys sys 1137452692 34685
+1188412206 366 c sys/src/cmd/gs/lib/gs_resmp.ps - 664 sys sys 1137452692 22414
+1188412206 367 c sys/src/cmd/gs/lib/gs_resst.ps - 664 sys sys 1137452691 5673
+1188412206 368 c sys/src/cmd/gs/lib/gs_s.xbm - 664 sys sys 1137452691 594
+1188412206 369 c sys/src/cmd/gs/lib/gs_s.xpm - 664 sys sys 1137452691 957
+1188412206 370 c sys/src/cmd/gs/lib/gs_s_m.xbm - 664 sys sys 1137452691 604
+1188412206 371 c sys/src/cmd/gs/lib/gs_sepr.ps - 664 sys sys 1137452692 8293
+1188412206 372 c sys/src/cmd/gs/lib/gs_setpd.ps - 664 sys sys 1137452692 27947
+1188412206 373 c sys/src/cmd/gs/lib/gs_statd.ps - 664 sys sys 1137452692 13461
+1188412206 374 c sys/src/cmd/gs/lib/gs_std_e.ps - 664 sys sys 1137452692 3243
+1188412206 375 c sys/src/cmd/gs/lib/gs_stres.ps - 664 sys sys 1137452692 4174
+1188412206 376 c sys/src/cmd/gs/lib/gs_sym_e.ps - 664 sys sys 1137452692 3102
+1188412206 377 c sys/src/cmd/gs/lib/gs_t.xbm - 664 sys sys 1137452692 345
+1188412206 378 c sys/src/cmd/gs/lib/gs_t.xpm - 664 sys sys 1137452692 605
+1188412206 379 c sys/src/cmd/gs/lib/gs_t_m.xbm - 664 sys sys 1137452692 355
+1188412206 380 c sys/src/cmd/gs/lib/gs_trap.ps - 664 sys sys 1137452692 3040
+1188412206 381 c sys/src/cmd/gs/lib/gs_ttf.ps - 664 sys sys 1137452692 46435
+1188412206 382 c sys/src/cmd/gs/lib/gs_typ32.ps - 664 sys sys 1137452692 4220
+1188412206 383 c sys/src/cmd/gs/lib/gs_typ42.ps - 664 sys sys 1137452692 1701
+1188412206 384 c sys/src/cmd/gs/lib/gs_type1.ps - 664 sys sys 1137452692 7527
+1188412206 385 c sys/src/cmd/gs/lib/gs_wan_e.ps - 664 sys sys 1137452692 1687
+1188412206 386 c sys/src/cmd/gs/lib/gs_wl1_e.ps - 664 sys sys 1137452692 2534
+1188412206 387 c sys/src/cmd/gs/lib/gs_wl2_e.ps - 664 sys sys 1137452692 2532
+1188412206 388 c sys/src/cmd/gs/lib/gs_wl5_e.ps - 664 sys sys 1137452692 2550
+1188412206 389 c sys/src/cmd/gs/lib/gsbj - 775 sys sys 1137452692 280
+1188412206 390 c sys/src/cmd/gs/lib/gsbj.bat - 775 sys sys 1137452692 179
+1188412206 391 c sys/src/cmd/gs/lib/gsdj - 775 sys sys 1137452692 282
+1188412206 392 c sys/src/cmd/gs/lib/gsdj.bat - 775 sys sys 1137452692 181
+1188412206 393 c sys/src/cmd/gs/lib/gsdj500 - 775 sys sys 1137452692 285
+1188412206 394 c sys/src/cmd/gs/lib/gsdj500.bat - 775 sys sys 1137452692 187
+1188412206 395 c sys/src/cmd/gs/lib/gslj - 775 sys sys 1137452692 283
+1188412206 396 c sys/src/cmd/gs/lib/gslj.bat - 775 sys sys 1137452692 182
+1188412206 397 c sys/src/cmd/gs/lib/gslp - 775 sys sys 1137452692 280
+1188412206 398 c sys/src/cmd/gs/lib/gslp.bat - 775 sys sys 1137452692 179
+1188412206 399 c sys/src/cmd/gs/lib/gslp.ps - 664 sys sys 1137452692 19645
+1188412206 400 c sys/src/cmd/gs/lib/gsnd - 775 sys sys 1137452692 207
+1188412206 401 c sys/src/cmd/gs/lib/gsnd.bat - 775 sys sys 1137452692 130
+1188412206 402 c sys/src/cmd/gs/lib/gsndt.bat - 775 sys sys 1137452692 134
+1188412206 403 c sys/src/cmd/gs/lib/gsnup.ps - 664 sys sys 1137452692 2727
+1188412206 404 c sys/src/cmd/gs/lib/gssetgs.bat - 664 sys sys 1137452692 244
+1188412206 405 c sys/src/cmd/gs/lib/gst.bat - 775 sys sys 1137452692 119
+1188412206 406 c sys/src/cmd/gs/lib/gstt.bat - 775 sys sys 1137452692 121
+1188412206 407 c sys/src/cmd/gs/lib/ht_ccsto.ps - 664 sys sys 1137452692 227916
+1188412206 408 c sys/src/cmd/gs/lib/image-qa.ps - 664 sys sys 1137452692 73327
+1188412206 409 c sys/src/cmd/gs/lib/impath.ps - 664 sys sys 1137452692 5542
+1188412206 410 c sys/src/cmd/gs/lib/jispaper.ps - 664 sys sys 1137452692 934
+1188412206 411 c sys/src/cmd/gs/lib/landscap.ps - 664 sys sys 1137452692 1529
+1188412206 412 c sys/src/cmd/gs/lib/level1.ps - 664 sys sys 1137452692 114
+1188412206 413 c sys/src/cmd/gs/lib/lines.ps - 664 sys sys 1137452692 3872
+1188412206 414 c sys/src/cmd/gs/lib/lp386.bat - 775 sys sys 1137452692 141
+1188412206 415 c sys/src/cmd/gs/lib/lp386r2.bat - 775 sys sys 1137452692 136
+1188412206 416 c sys/src/cmd/gs/lib/lpgs.bat - 775 sys sys 1137452692 183
+1188412206 417 c sys/src/cmd/gs/lib/lpr2.bat - 775 sys sys 1137452692 176
+1188412206 418 c sys/src/cmd/gs/lib/lprsetup.sh - 775 sys sys 1137452692 4665
+1188412206 419 c sys/src/cmd/gs/lib/markhint.ps - 664 sys sys 1137452692 3477
+1188412206 420 c sys/src/cmd/gs/lib/markpath.ps - 664 sys sys 1137452692 1894
+1188412206 421 c sys/src/cmd/gs/lib/mkcidfm.ps - 664 sys sys 1137452692 7304
+1188412206 422 c sys/src/cmd/gs/lib/necp2x.upp - 664 sys sys 1137452692 1041
+1188412206 423 c sys/src/cmd/gs/lib/necp2x6.upp - 664 sys sys 1137452692 1065
+1188412206 424 c sys/src/cmd/gs/lib/opdfread.ps - 664 sys sys 1137452692 111167
+1188412206 425 c sys/src/cmd/gs/lib/prfont.ps - 664 sys sys 1137452692 6484
+1188412206 426 c sys/src/cmd/gs/lib/printafm.ps - 664 sys sys 1137452692 3244
+1188412206 427 c sys/src/cmd/gs/lib/ps2ai.ps - 664 sys sys 1137452692 22503
+1188412206 428 c sys/src/cmd/gs/lib/ps2ascii - 775 sys sys 1137452692 790
+1188412206 429 c sys/src/cmd/gs/lib/ps2ascii.bat - 775 sys sys 1137452692 437
+1188412206 430 c sys/src/cmd/gs/lib/ps2ascii.cmd - 775 sys sys 1137452692 531
+1188412206 431 c sys/src/cmd/gs/lib/ps2ascii.ps - 664 sys sys 1137452692 44622
+1188412206 432 c sys/src/cmd/gs/lib/ps2epsi - 775 sys sys 1137452692 1816
+1188412206 433 c sys/src/cmd/gs/lib/ps2epsi.bat - 775 sys sys 1137452692 838
+1188412206 434 c sys/src/cmd/gs/lib/ps2epsi.cmd - 775 sys sys 1137452692 955
+1188412206 435 c sys/src/cmd/gs/lib/ps2epsi.ps - 664 sys sys 1137452692 8253
+1188412206 436 c sys/src/cmd/gs/lib/ps2pdf - 775 sys sys 1137452692 212
+1188412206 437 c sys/src/cmd/gs/lib/ps2pdf.bat - 775 sys sys 1137452692 512
+1188412206 438 c sys/src/cmd/gs/lib/ps2pdf.cmd - 775 sys sys 1137452692 956
+1188412206 439 c sys/src/cmd/gs/lib/ps2pdf12 - 775 sys sys 1137452692 175
+1188412206 440 c sys/src/cmd/gs/lib/ps2pdf12.bat - 775 sys sys 1137452692 334
+1188412206 441 c sys/src/cmd/gs/lib/ps2pdf12.cmd - 775 sys sys 1137452692 334
+1188412206 442 c sys/src/cmd/gs/lib/ps2pdf13 - 775 sys sys 1137452692 175
+1188412206 443 c sys/src/cmd/gs/lib/ps2pdf13.bat - 775 sys sys 1137452692 334
+1188412206 444 c sys/src/cmd/gs/lib/ps2pdf13.cmd - 775 sys sys 1137452692 334
+1188412206 445 c sys/src/cmd/gs/lib/ps2pdf14 - 664 sys sys 1137452692 175
+1188412206 446 c sys/src/cmd/gs/lib/ps2pdf14.bat - 664 sys sys 1137452692 334
+1188412206 447 c sys/src/cmd/gs/lib/ps2pdf14.cmd - 664 sys sys 1137452692 334
+1188412206 448 c sys/src/cmd/gs/lib/ps2pdfwr - 775 sys sys 1137452692 1015
+1188412206 449 c sys/src/cmd/gs/lib/ps2pdfxx.bat - 664 sys sys 1137452692 1387
+1188412206 450 m sys/src/cmd/gs/lib/ps2pdfxx.bat - 664 sys sys 1137452692 1387
+1188412206 451 c sys/src/cmd/gs/lib/ps2ps - 775 sys sys 1137452692 559
+1188412206 452 c sys/src/cmd/gs/lib/ps2ps.bat - 775 sys sys 1137452692 480
+1188412206 453 c sys/src/cmd/gs/lib/ps2ps.cmd - 775 sys sys 1137452692 696
+1188412206 454 c sys/src/cmd/gs/lib/st640pl.upp - 664 sys sys 1137452692 1874
+1188412206 455 c sys/src/cmd/gs/lib/st640plg.upp - 664 sys sys 1137452692 1101
+1188412206 456 c sys/src/cmd/gs/lib/stc.upp - 664 sys sys 1137452692 1919
+1188412206 457 c sys/src/cmd/gs/lib/stc1520h.upp - 664 sys sys 1137452692 2150
+1188412206 458 c sys/src/cmd/gs/lib/stc2.upp - 664 sys sys 1137452692 1900
+1188412206 459 c sys/src/cmd/gs/lib/stc200_h.upp - 664 sys sys 1137452692 1844
+1188412206 460 c sys/src/cmd/gs/lib/packfile.ps - 664 sys sys 1137452692 10365
+1188412206 461 c sys/src/cmd/gs/lib/pcharstr.ps - 664 sys sys 1137452692 3588
+1188412206 462 c sys/src/cmd/gs/lib/pdf2dsc - 775 sys sys 1137452692 639
+1188412206 463 c sys/src/cmd/gs/lib/pdf2dsc.bat - 775 sys sys 1137452692 367
+1188412206 464 c sys/src/cmd/gs/lib/pdf2dsc.ps - 664 sys sys 1137452692 5094
+1188412206 465 c sys/src/cmd/gs/lib/pdf2ps - 775 sys sys 1137452692 844
+1188412206 466 c sys/src/cmd/gs/lib/pdf2ps.bat - 775 sys sys 1137452692 496
+1188412206 467 c sys/src/cmd/gs/lib/pdf2ps.cmd - 775 sys sys 1137452692 816
+1188412206 468 c sys/src/cmd/gs/lib/pdf_base.ps - 664 sys sys 1137452692 34426
+1188412206 469 c sys/src/cmd/gs/lib/pdf_draw.ps - 664 sys sys 1137452692 41076
+1188412206 470 c sys/src/cmd/gs/lib/pdf_font.ps - 664 sys sys 1137452692 53454
+1188412206 471 c sys/src/cmd/gs/lib/pdf_main.ps - 664 sys sys 1137452692 45457
+1188412206 472 c sys/src/cmd/gs/lib/pdf_ops.ps - 664 sys sys 1137452692 20969
+1188412206 473 c sys/src/cmd/gs/lib/pdf_rbld.ps - 664 sys sys 1137452692 14217
+1188412206 474 c sys/src/cmd/gs/lib/pdf_sec.ps - 664 sys sys 1137452692 14038
+1188412206 475 c sys/src/cmd/gs/lib/pdfopt - 775 sys sys 1137452692 485
+1188412206 476 c sys/src/cmd/gs/lib/pdfopt.bat - 775 sys sys 1137452692 402
+1188412206 477 c sys/src/cmd/gs/lib/pdfopt.ps - 664 sys sys 1137452692 36025
+1188412206 478 c sys/src/cmd/gs/lib/pdfwrite.ps - 664 sys sys 1137452692 9903
+1188412206 479 c sys/src/cmd/gs/lib/pf2afm - 775 sys sys 1137452692 438
+1188412206 480 c sys/src/cmd/gs/lib/pf2afm.bat - 775 sys sys 1137452692 319
+1188412206 481 c sys/src/cmd/gs/lib/pf2afm.cmd - 775 sys sys 1137452692 254
+1188412206 482 c sys/src/cmd/gs/lib/pf2afm.ps - 664 sys sys 1137452692 14922
+1188412206 483 c sys/src/cmd/gs/lib/pfbtopfa - 775 sys sys 1137452692 454
+1188412206 484 c sys/src/cmd/gs/lib/pfbtopfa.bat - 775 sys sys 1137452692 309
+1188412206 485 c sys/src/cmd/gs/lib/pfbtopfa.ps - 664 sys sys 1137452692 1145
+1188412206 486 c sys/src/cmd/gs/lib/pftogsf.bat - 775 sys sys 1137452692 1383
+1188412206 487 c sys/src/cmd/gs/lib/ppath.ps - 664 sys sys 1137452692 1978
+1188412206 488 c sys/src/cmd/gs/lib/pphs - 775 sys sys 1137452692 334
+1188412206 489 c sys/src/cmd/gs/lib/pphs.ps - 664 sys sys 1137452692 6924
+1188412206 490 c sys/src/cmd/gs/lib/printafm - 775 sys sys 1137452692 208
+1188412206 491 c sys/src/cmd/gs/lib/ps2ps2 - 775 sys sys 1137452692 560
+1188412206 492 c sys/src/cmd/gs/lib/ps2ps2.bat - 775 sys sys 1137452692 502
+1188412206 493 c sys/src/cmd/gs/lib/ps2ps2.cmd - 775 sys sys 1137452692 697
+1188412206 494 c sys/src/cmd/gs/lib/ps2write.bat - 775 sys sys 1137452692 818
+1188412206 495 c sys/src/cmd/gs/lib/pv.sh - 775 sys sys 1137452692 1249
+1188412206 496 c sys/src/cmd/gs/lib/quit.ps - 664 sys sys 1137452692 5
+1188412206 497 c sys/src/cmd/gs/lib/ras1.upp - 664 sys sys 1137452692 211
+1188412206 498 c sys/src/cmd/gs/lib/ras24.upp - 664 sys sys 1137452692 215
+1188412206 499 c sys/src/cmd/gs/lib/ras3.upp - 664 sys sys 1137452692 210
+1188412206 500 c sys/src/cmd/gs/lib/ras32.upp - 664 sys sys 1137452692 192
+1188412206 501 c sys/src/cmd/gs/lib/ras4.upp - 664 sys sys 1137452692 216
+1188412206 502 c sys/src/cmd/gs/lib/ras8m.upp - 664 sys sys 1137452692 205
+1188412206 503 c sys/src/cmd/gs/lib/rinkj-2200-setup - 664 sys sys 1137452692 3228
+1188412206 504 c sys/src/cmd/gs/lib/rollconv.ps - 664 sys sys 1137452692 11768
+1188412206 505 c sys/src/cmd/gs/lib/showchar.ps - 664 sys sys 1137452692 2936
+1188412206 506 c sys/src/cmd/gs/lib/showpage.ps - 664 sys sys 1137452692 9
+1188412206 507 c sys/src/cmd/gs/lib/st640ih.upp - 664 sys sys 1137452692 2277
+1188412206 508 c sys/src/cmd/gs/lib/st640ihg.upp - 664 sys sys 1137452692 1504
+1188412206 509 c sys/src/cmd/gs/lib/st640p.upp - 664 sys sys 1137452692 1910
+1188412206 510 c sys/src/cmd/gs/lib/st640pg.upp - 664 sys sys 1137452692 1137
+1188412206 511 c sys/src/cmd/gs/lib/stc2_h.upp - 664 sys sys 1137452692 1875
+1188412206 512 c sys/src/cmd/gs/lib/stc2s_h.upp - 664 sys sys 1137452692 2268
+1188412206 513 c sys/src/cmd/gs/lib/stc300.upp - 664 sys sys 1137452692 2132
+1188412206 514 c sys/src/cmd/gs/lib/stc300bl.upp - 664 sys sys 1137452692 1337
+1188412206 515 c sys/src/cmd/gs/lib/stc300bm.upp - 664 sys sys 1137452692 1426
+1188412206 516 c sys/src/cmd/gs/lib/stc500p.upp - 664 sys sys 1137452692 1899
+1188412206 517 c sys/src/cmd/gs/lib/stc500ph.upp - 664 sys sys 1137452692 1899
+1188412206 518 c sys/src/cmd/gs/lib/stc600ih.upp - 664 sys sys 1137452692 2277
+1188412206 519 c sys/src/cmd/gs/lib/stc600p.upp - 664 sys sys 1137452692 1147
+1188412206 520 c sys/src/cmd/gs/lib/stc600pl.upp - 664 sys sys 1137452692 1111
+1188412206 521 c sys/src/cmd/gs/lib/stc640p.upp - 664 sys sys 1137452692 1091
+1188412206 522 c sys/src/cmd/gs/lib/stc800ih.upp - 664 sys sys 1137452692 2154
+1188412206 523 c sys/src/cmd/gs/lib/stc800p.upp - 664 sys sys 1137452692 1111
+1188412206 524 c sys/src/cmd/gs/lib/stc800pl.upp - 664 sys sys 1137452692 1093
+1188412206 525 c sys/src/cmd/gs/lib/stc_h.upp - 664 sys sys 1137452692 1909
+1188412206 526 c sys/src/cmd/gs/lib/stc_l.upp - 664 sys sys 1137452692 730
+1188412206 527 c sys/src/cmd/gs/lib/stcany.upp - 664 sys sys 1137452692 669
+1188412206 528 c sys/src/cmd/gs/lib/stcany_h.upp - 664 sys sys 1137452692 677
+1188412206 529 c sys/src/cmd/gs/lib/stcinfo.ps - 664 sys sys 1137452692 25737
+1188412206 530 c sys/src/cmd/gs/lib/stcolor.ps - 664 sys sys 1137452692 5225
+1188412206 531 c sys/src/cmd/gs/lib/stocht.ps - 664 sys sys 1137452692 2642
+1188412206 532 c sys/src/cmd/gs/lib/traceimg.ps - 664 sys sys 1137452692 1535
+1188412206 533 c sys/src/cmd/gs/lib/traceop.ps - 664 sys sys 1137452692 2738
+1188412206 534 c sys/src/cmd/gs/lib/type1enc.ps - 664 sys sys 1137452692 2540
+1188412206 535 c sys/src/cmd/gs/lib/type1ops.ps - 664 sys sys 1137452692 7580
+1188412206 536 c sys/src/cmd/gs/lib/uninfo.ps - 664 sys sys 1137452692 6140
+1188412206 537 c sys/src/cmd/gs/lib/unix-lpr.sh - 775 sys sys 1137452692 4210
+1188412206 538 c sys/src/cmd/gs/lib/unprot.ps - 664 sys sys 1137452692 1908
+1188412206 539 c sys/src/cmd/gs/lib/viewcmyk.ps - 664 sys sys 1137452692 2120
+1188412206 540 c sys/src/cmd/gs/lib/viewgif.ps - 664 sys sys 1137452692 4575
+1188412206 541 c sys/src/cmd/gs/lib/viewjpeg.ps - 664 sys sys 1137452692 4953
+1188412206 542 c sys/src/cmd/gs/lib/viewmiff.ps - 664 sys sys 1137452692 3782
+1188412206 543 c sys/src/cmd/gs/lib/viewpbm.ps - 664 sys sys 1137452692 5314
+1188412206 544 c sys/src/cmd/gs/lib/viewpcx.ps - 664 sys sys 1137452692 4352
+1188412206 545 c sys/src/cmd/gs/lib/viewps2a.ps - 664 sys sys 1137452692 1286
+1188412206 546 c sys/src/cmd/gs/lib/wftopfa - 775 sys sys 1137452692 227
+1188412206 547 c sys/src/cmd/gs/lib/wftopfa.ps - 664 sys sys 1137452692 8925
+1188412206 548 c sys/src/cmd/gs/lib/winmaps.ps - 664 sys sys 1137452692 3747
+1188412206 549 c sys/src/cmd/gs/lib/wmakebat.bat - 775 sys sys 1137452692 202
+1188412206 550 c sys/src/cmd/gs/lib/wrfont.ps - 664 sys sys 1137452692 18170
+1188412206 551 c sys/src/cmd/gs/lib/xlatmap - 664 sys sys 1137452692 1750
+1188412206 552 c sys/src/cmd/gs/lib/zeroline.ps - 664 sys sys 1137452692 2467
+1188412206 553 c sys/src/cmd/gs/libpng/ANNOUNCE - 664 sys sys 1137452692 1476
+1188412206 554 c sys/src/cmd/gs/libpng/CHANGES - 664 sys sys 1137452692 79441
+1188412206 555 c sys/src/cmd/gs/libpng/INSTALL - 664 sys sys 1137452692 7366
+1188412206 556 c sys/src/cmd/gs/libpng/KNOWNBUG - 664 sys sys 1137452692 402
+1188412206 557 c sys/src/cmd/gs/libpng/LICENSE - 664 sys sys 1137452692 4105
+1188412206 558 c sys/src/cmd/gs/libpng/README - 664 sys sys 1137452692 13988
+1188412206 559 c sys/src/cmd/gs/libpng/TODO - 664 sys sys 1137452692 1182
+1188412206 560 c sys/src/cmd/gs/libpng/Y2KINFO - 664 sys sys 1137452692 2321
+1188412206 561 c sys/src/cmd/gs/libpng/configure - 775 sys sys 1137452692 388
+1188412206 562 c sys/src/cmd/gs/libpng/example.c - 664 sys sys 1137452692 29793
+1188412206 563 c sys/src/cmd/gs/libpng/libpng.3 - 664 sys sys 1137452692 164387
+1188412206 564 c sys/src/cmd/gs/libpng/libpng.txt - 664 sys sys 1137452692 127770
+1188412206 565 c sys/src/cmd/gs/libpng/libpngpf.3 - 664 sys sys 1137452692 24981
+1188412206 566 a sys/src/cmd/gs/libpng/png.5 - 664 sys sys 1137452692 2381
+1188412206 567 c sys/src/cmd/gs/libpng/png.c - 664 sys sys 1137452692 23742
+1188412206 568 c sys/src/cmd/gs/libpng/png.h - 664 sys sys 1137452692 142306
+1188412206 569 c sys/src/cmd/gs/libpng/pngbar.jpg - 664 sys sys 1137452692 2498
+1188412206 570 c sys/src/cmd/gs/libpng/pngbar.png - 664 sys sys 1137452692 2399
+1188412206 571 c sys/src/cmd/gs/libpng/pngconf.h - 664 sys sys 1137452692 43647
+1188412206 572 c sys/src/cmd/gs/libpng/pngerror.c - 664 sys sys 1137452692 8608
+1188412206 573 c sys/src/cmd/gs/libpng/pnggccrd.c - 664 sys sys 1137452692 235080
+1188412206 574 c sys/src/cmd/gs/libpng/pngget.c - 664 sys sys 1137452692 26015
+1188412206 575 c sys/src/cmd/gs/libpng/pngmem.c - 664 sys sys 1137452692 16603
+1188412206 576 c sys/src/cmd/gs/libpng/pngnow.png - 664 sys sys 1137452692 2069
+1188412206 577 c sys/src/cmd/gs/libpng/pngpread.c - 664 sys sys 1137452692 45988
+1188412206 578 c sys/src/cmd/gs/libpng/pngread.c - 664 sys sys 1137452692 46423
+1188412206 579 c sys/src/cmd/gs/libpng/pngrio.c - 664 sys sys 1137452692 5354
+1188412206 580 c sys/src/cmd/gs/libpng/pngrtran.c - 664 sys sys 1137452692 142687
+1188412206 581 c sys/src/cmd/gs/libpng/pngrutil.c - 664 sys sys 1137452692 91082
+1188412206 582 c sys/src/cmd/gs/libpng/pngset.c - 664 sys sys 1137452692 38654
+1188412206 583 c sys/src/cmd/gs/libpng/pngtest.c - 664 sys sys 1137452692 46652
+1188412206 584 c sys/src/cmd/gs/libpng/pngtest.png - 664 sys sys 1137452692 8574
+1188412206 585 c sys/src/cmd/gs/libpng/pngtrans.c - 664 sys sys 1137452692 20378
+1188412206 586 c sys/src/cmd/gs/libpng/pngvcrd.c - 664 sys sys 1137452692 143414
+1188412206 587 c sys/src/cmd/gs/libpng/pngwio.c - 664 sys sys 1137452692 7439
+1188412206 588 c sys/src/cmd/gs/libpng/pngwrite.c - 664 sys sys 1137452692 47886
+1188412206 589 c sys/src/cmd/gs/libpng/pngwtran.c - 664 sys sys 1137452692 17042
+1188412206 590 c sys/src/cmd/gs/libpng/pngwutil.c - 664 sys sys 1137452692 83750
+1188412206 591 c sys/src/cmd/gs/man/dvipdf.1 - 664 sys sys 1137452693 786
+1188412206 592 c sys/src/cmd/gs/man/eps2eps.1 - 664 sys sys 1137452693 1035
+1188412206 593 c sys/src/cmd/gs/man/font2c.1 - 664 sys sys 1137452693 745
+1188412206 594 c sys/src/cmd/gs/man/gs.1 - 664 sys sys 1137452693 13217
+1188412206 595 c sys/src/cmd/gs/man/gslp.1 - 664 sys sys 1137452693 3058
+1188412206 596 c sys/src/cmd/gs/man/gsnd.1 - 664 sys sys 1137452693 636
+1188412206 597 c sys/src/cmd/gs/man/pdf2dsc.1 - 664 sys sys 1137452693 1502
+1188412206 598 c sys/src/cmd/gs/man/pdf2ps.1 - 664 sys sys 1137452693 991
+1188412206 599 c sys/src/cmd/gs/man/pdfopt.1 - 664 sys sys 1137452693 1248
+1188412206 600 c sys/src/cmd/gs/man/pf2afm.1 - 664 sys sys 1137452693 730
+1188412206 601 c sys/src/cmd/gs/man/pfbtopfa.1 - 664 sys sys 1137452693 602
+1188412206 602 c sys/src/cmd/gs/man/printafm.1 - 664 sys sys 1137452693 622
+1188412206 603 c sys/src/cmd/gs/man/ps2ascii.1 - 664 sys sys 1137452693 1407
+1188412206 604 c sys/src/cmd/gs/man/ps2epsi.1 - 664 sys sys 1137452693 2856
+1188412206 605 c sys/src/cmd/gs/man/ps2pdf.1 - 664 sys sys 1137452693 1728
+1188412206 606 c sys/src/cmd/gs/man/ps2pdfwr.1 - 664 sys sys 1137452693 1000
+1188412206 607 c sys/src/cmd/gs/man/ps2ps.1 - 664 sys sys 1137452693 1402
+1188412206 608 c sys/src/cmd/gs/man/wftopfa.1 - 664 sys sys 1137452693 624
+1188412206 609 c sys/src/cmd/gs/mips.h - 664 sys sys 1137457902 1372
+1188412206 610 c sys/src/cmd/gs/mkfile - 664 sys sys 1188411077 7565
+1188412206 611 c sys/src/cmd/gs/power.h - 664 sys sys 1137458126 1444
+1188412206 612 c sys/src/cmd/gs/src/.cvsignore - 664 sys sys 1137452693 10
+1188412206 613 c sys/src/cmd/gs/src/Makefile.in - 664 sys sys 1137452693 15660
+1188412206 614 c sys/src/cmd/gs/src/all-arch.mak - 664 sys sys 1137452693 29165
+1188412206 615 c sys/src/cmd/gs/src/append_l.com - 664 sys sys 1137452693 681
+1188412206 616 c sys/src/cmd/gs/src/bcc32.cfg - 664 sys sys 1137452693 185
+1188412206 617 c sys/src/cmd/gs/src/bcwin32.mak - 664 sys sys 1137452693 20376
+1188412206 618 c sys/src/cmd/gs/src/bench.c - 664 sys sys 1137452693 12796
+1188412206 619 c sys/src/cmd/gs/src/bfont.h - 664 sys sys 1137452693 3402
+1188412206 620 c sys/src/cmd/gs/src/btoken.h - 664 sys sys 1137452693 1842
+1188412206 621 c sys/src/cmd/gs/src/catmake - 775 sys sys 1137452693 257
+1188412206 622 c sys/src/cmd/gs/src/ccfont.h - 664 sys sys 1137452693 3854
+1188412206 623 c sys/src/cmd/gs/src/cfonts.mak - 664 sys sys 1137452693 15163
+1188412206 624 c sys/src/cmd/gs/src/configure.ac - 664 sys sys 1137452693 12189
+1188412206 625 c sys/src/cmd/gs/src/contrib.mak - 664 sys sys 1137452693 34537
+1188412206 626 c sys/src/cmd/gs/src/copy_one.com - 664 sys sys 1137452693 329
+1188412206 627 c sys/src/cmd/gs/src/cp.bat - 775 sys sys 1137452693 388
+1188412206 628 c sys/src/cmd/gs/src/cp.cmd - 775 sys sys 1137452693 97
+1188412206 629 c sys/src/cmd/gs/src/ctype_.h - 664 sys sys 1137452693 1010
+1188412206 630 c sys/src/cmd/gs/src/devs.mak - 664 sys sys 1137452693 64181
+1188412206 631 c sys/src/cmd/gs/src/dirent_.h - 664 sys sys 1137452693 1672
+1188412206 632 c sys/src/cmd/gs/src/dmmain.c - 664 sys sys 1137452693 28992
+1188412206 633 c sys/src/cmd/gs/src/dmmain.r - 664 sys sys 1137452693 110116
+1188412206 634 c sys/src/cmd/gs/src/dos_.h - 664 sys sys 1137452693 2767
+1188412206 635 c sys/src/cmd/gs/src/dpmain.c - 664 sys sys 1137452693 29195
+1188412206 636 c sys/src/cmd/gs/src/dscparse.c - 664 sys sys 1137452693 120737
+1188412206 637 c sys/src/cmd/gs/src/dscparse.h - 664 sys sys 1137452693 18677
+1188412206 638 c sys/src/cmd/gs/src/dstack.h - 664 sys sys 1137452693 10152
+1188412206 639 c sys/src/cmd/gs/src/dvx-gcc.mak - 664 sys sys 1137452693 11617
+1188412206 640 c sys/src/cmd/gs/src/dvx-head.mak - 664 sys sys 1137452693 1778
+1188412206 641 c sys/src/cmd/gs/src/dvx-tail.mak - 664 sys sys 1137452693 3105
+1188412206 642 c sys/src/cmd/gs/src/dw32c.def - 664 sys sys 1137452693 72
+1188412206 643 c sys/src/cmd/gs/src/dwdll.c - 664 sys sys 1137452693 5816
+1188412206 644 c sys/src/cmd/gs/src/dwdll.h - 664 sys sys 1137452693 1610
+1188412206 645 c sys/src/cmd/gs/src/dwimg.c - 664 sys sys 1137452693 46346
+1188412206 646 c sys/src/cmd/gs/src/dwimg.h - 664 sys sys 1137452694 2879
+1188412206 647 c sys/src/cmd/gs/src/dwinst.cpp - 664 sys sys 1137452694 23399
+1188412206 648 c sys/src/cmd/gs/src/dwinst.h - 664 sys sys 1137452694 3293
+1188412206 649 c sys/src/cmd/gs/src/dwmain.c - 664 sys sys 1137452694 14102
+1188412206 650 c sys/src/cmd/gs/src/dwmain.h - 664 sys sys 1137452694 938
+1188412206 651 c sys/src/cmd/gs/src/dwmain.rc - 664 sys sys 1137452694 1017
+1188412206 652 c sys/src/cmd/gs/src/fcntl_.h - 664 sys sys 1137452693 1751
+1188412206 653 c sys/src/cmd/gs/src/files.h - 664 sys sys 1137452693 5644
+1188412206 654 c sys/src/cmd/gs/src/gconf.c - 664 sys sys 1137452693 5494
+1188412206 655 c sys/src/cmd/gs/src/gconf.h - 664 sys sys 1137452693 1192
+1188412206 656 c sys/src/cmd/gs/src/gdevatx.c - 664 sys sys 1137452693 8384
+1188412206 657 c sys/src/cmd/gs/src/gdevbbox.c - 664 sys sys 1137452693 37913
+1188412206 658 c sys/src/cmd/gs/src/gdevbbox.h - 664 sys sys 1137452693 5764
+1188412206 659 c sys/src/cmd/gs/src/gdevbit.c - 664 sys sys 1137452693 11557
+1188412206 660 c sys/src/cmd/gs/src/gdevbj10.c - 664 sys sys 1137452693 15471
+1188412206 661 c sys/src/cmd/gs/src/gdevbjc.h - 664 sys sys 1137452693 8389
+1188412206 662 c sys/src/cmd/gs/src/gdevbjcl.c - 664 sys sys 1137452693 5889
+1188412206 663 c sys/src/cmd/gs/src/gdevbjcl.h - 664 sys sys 1137452693 12872
+1188412206 664 c sys/src/cmd/gs/src/gdevbmp.c - 664 sys sys 1137452693 7079
+1188412206 665 c sys/src/cmd/gs/src/gdevbmp.h - 664 sys sys 1137452693 1324
+1188412206 666 c sys/src/cmd/gs/src/gdevbmpa.c - 664 sys sys 1137452693 27291
+1188412206 667 c sys/src/cmd/gs/src/gdevbmpc.c - 664 sys sys 1137452693 6946
+1188412206 668 c sys/src/cmd/gs/src/gdevccr.c - 664 sys sys 1137452693 7760
+1188412206 669 c sys/src/cmd/gs/src/gdevcdj.c - 664 sys sys 1137452694 113141
+1188412206 670 c sys/src/cmd/gs/src/gdevcfax.c - 664 sys sys 1137452694 6461
+1188412206 671 c sys/src/cmd/gs/src/gdevcgm.c - 664 sys sys 1137452694 14740
+1188412206 672 c sys/src/cmd/gs/src/gdevdsha.c - 664 sys sys 1137452693 3693
+1188412206 673 c sys/src/cmd/gs/src/gdevdsp.c - 664 sys sys 1137452693 60679
+1188412206 674 c sys/src/cmd/gs/src/gdevdsp.h - 664 sys sys 1137452693 10126
+1188412206 675 c sys/src/cmd/gs/src/gdevdsp2.h - 664 sys sys 1137452693 1557
+1188412206 676 c sys/src/cmd/gs/src/gdevegaa.asm - 664 sys sys 1137452693 6536
+1188412206 677 c sys/src/cmd/gs/src/gdevemap.c - 664 sys sys 1137452693 2920
+1188412206 678 c sys/src/cmd/gs/src/gdevepsc.c - 664 sys sys 1137452693 13738
+1188412206 679 c sys/src/cmd/gs/src/gdevepsn.c - 664 sys sys 1137452693 14731
+1188412206 680 c sys/src/cmd/gs/src/gdevescp.c - 664 sys sys 1137452693 11143
+1188412206 681 c sys/src/cmd/gs/src/gdevevga.c - 664 sys sys 1137452693 3034
+1188412206 682 c sys/src/cmd/gs/src/gdevfax.c - 664 sys sys 1137452693 8120
+1188412206 683 c sys/src/cmd/gs/src/gdevfax.h - 664 sys sys 1137452693 2257
+1188412206 684 c sys/src/cmd/gs/src/gdevherc.c - 664 sys sys 1137452693 11540
+1188412206 685 c sys/src/cmd/gs/src/gdevhit.c - 664 sys sys 1137452693 2743
+1188412206 686 c sys/src/cmd/gs/src/gdevhl7x.c - 664 sys sys 1137452693 30573
+1188412206 687 c sys/src/cmd/gs/src/gdevifno.c - 664 sys sys 1137452703 17835
+1188412206 688 c sys/src/cmd/gs/src/gdevijs.c - 664 sys sys 1137452693 32092
+1188412206 689 c sys/src/cmd/gs/src/dwmain16.def - 664 sys sys 1137452694 155
+1188412206 690 c sys/src/cmd/gs/src/dwmain32.def - 664 sys sys 1137452694 43
+1188412206 691 c sys/src/cmd/gs/src/dwmainc.c - 664 sys sys 1137452694 12295
+1188412206 692 c sys/src/cmd/gs/src/dwnodll.c - 664 sys sys 1137452694 1540
+1188412206 693 c sys/src/cmd/gs/src/dwreg.c - 664 sys sys 1137452694 3021
+1188412206 694 c sys/src/cmd/gs/src/dwreg.h - 664 sys sys 1137452694 999
+1188412206 695 c sys/src/cmd/gs/src/dwsetup.cpp - 664 sys sys 1137452694 33506
+1188412206 696 c sys/src/cmd/gs/src/dwsetup.def - 664 sys sys 1137452694 71
+1188412206 697 c sys/src/cmd/gs/src/dwsetup.h - 664 sys sys 1137452694 1921
+1188412206 698 c sys/src/cmd/gs/src/dwsetup.rc - 664 sys sys 1137452694 4682
+1188412206 699 c sys/src/cmd/gs/src/dwtext.c - 664 sys sys 1137452694 26876
+1188412206 700 c sys/src/cmd/gs/src/dwtext.h - 664 sys sys 1137452694 3785
+1188412206 701 c sys/src/cmd/gs/src/dwtrace.c - 664 sys sys 1137452694 10110
+1188412206 702 c sys/src/cmd/gs/src/dwtrace.h - 664 sys sys 1137452694 970
+1188412206 703 c sys/src/cmd/gs/src/dwuninst.cpp - 664 sys sys 1137452694 19713
+1188412206 704 c sys/src/cmd/gs/src/dwuninst.def - 664 sys sys 1137452694 76
+1188412206 705 c sys/src/cmd/gs/src/dwuninst.h - 664 sys sys 1137452694 1052
+1188412206 706 c sys/src/cmd/gs/src/dwuninst.rc - 664 sys sys 1137452694 1255
+1188412206 707 c sys/src/cmd/gs/src/dxmain.c - 664 sys sys 1137452694 31630
+1188412206 708 c sys/src/cmd/gs/src/dxmainc.c - 775 sys sys 1137452694 3079
+1188412206 709 c sys/src/cmd/gs/src/echogs.c - 664 sys sys 1137452694 8713
+1188412206 710 c sys/src/cmd/gs/src/errno_.h - 664 sys sys 1137452694 1186
+1188412206 711 c sys/src/cmd/gs/src/errors.h - 664 sys sys 1137452694 1074
+1188412206 712 c sys/src/cmd/gs/src/estack.h - 664 sys sys 1137452694 7612
+1188412206 713 c sys/src/cmd/gs/src/fapi_ft.c - 664 sys sys 1137452694 26794
+1188412206 714 c sys/src/cmd/gs/src/fapiufst.c - 664 sys sys 1137452694 42373
+1188412206 715 c sys/src/cmd/gs/src/gdebug.h - 664 sys sys 1137452694 5416
+1188412206 716 c sys/src/cmd/gs/src/gdev3852.c - 664 sys sys 1137452694 5832
+1188412206 717 c sys/src/cmd/gs/src/gdev3b1.c - 664 sys sys 1137452694 21139
+1188412206 718 c sys/src/cmd/gs/src/gdev4081.c - 664 sys sys 1137452694 2773
+1188412206 719 c sys/src/cmd/gs/src/gdev4693.c - 664 sys sys 1137452694 5648
+1188412206 720 c sys/src/cmd/gs/src/gdev8510.c - 664 sys sys 1137452694 4046
+1188412206 721 c sys/src/cmd/gs/src/gdev8bcm.c - 664 sys sys 1137452694 2422
+1188412206 722 c sys/src/cmd/gs/src/gdev8bcm.h - 664 sys sys 1137452694 2698
+1188412206 723 c sys/src/cmd/gs/src/gdevabuf.c - 664 sys sys 1137452694 13995
+1188412206 724 c sys/src/cmd/gs/src/gdevadmp.c - 664 sys sys 1137452694 11704
+1188412206 725 c sys/src/cmd/gs/src/gdevcgml.c - 664 sys sys 1137452694 28632
+1188412206 726 c sys/src/cmd/gs/src/gdevcgml.h - 664 sys sys 1137452694 13770
+1188412206 727 c sys/src/cmd/gs/src/gdevcgmx.h - 664 sys sys 1137452694 5181
+1188412206 728 c sys/src/cmd/gs/src/gdevcif.c - 664 sys sys 1137452694 3414
+1188412206 729 c sys/src/cmd/gs/src/gdevclj.c - 664 sys sys 1137452694 22763
+1188412206 730 c sys/src/cmd/gs/src/gdevcljc.c - 664 sys sys 1137452694 3771
+1188412206 731 c sys/src/cmd/gs/src/gdevcmap.c - 664 sys sys 1137452694 10592
+1188412206 732 c sys/src/cmd/gs/src/gdevcmap.h - 664 sys sys 1137452694 2252
+1188412206 733 c sys/src/cmd/gs/src/gdevcp50.c - 664 sys sys 1137452694 7825
+1188412206 734 c sys/src/cmd/gs/src/gdevcslw.c - 664 sys sys 1137452694 4215
+1188412206 735 c sys/src/cmd/gs/src/gdevdbit.c - 664 sys sys 1137452694 18846
+1188412206 736 c sys/src/cmd/gs/src/gdevdcrd.c - 664 sys sys 1137452694 5435
+1188412206 737 c sys/src/cmd/gs/src/gdevdcrd.h - 664 sys sys 1137452694 1015
+1188412206 738 c sys/src/cmd/gs/src/gdevddrw.c - 664 sys sys 1137452694 28007
+1188412206 739 c sys/src/cmd/gs/src/gdevddrw.h - 664 sys sys 1137452694 1375
+1188412206 740 c sys/src/cmd/gs/src/gdevdevn.c - 664 sys sys 1137452694 49308
+1188412206 741 c sys/src/cmd/gs/src/gdevdevn.h - 664 sys sys 1137452694 8630
+1188412206 742 c sys/src/cmd/gs/src/gdevdfax.c - 664 sys sys 1137452694 3019
+1188412206 743 c sys/src/cmd/gs/src/gdevdflt.c - 664 sys sys 1137452694 32353
+1188412206 744 c sys/src/cmd/gs/src/gdevdgbr.c - 664 sys sys 1137452694 26440
+1188412206 745 c sys/src/cmd/gs/src/gdevdjet.c - 664 sys sys 1137452694 17397
+1188412206 746 c sys/src/cmd/gs/src/gdevdjtc.c - 664 sys sys 1137452694 9389
+1188412206 747 c sys/src/cmd/gs/src/gdevdljm.c - 664 sys sys 1137452694 9675
+1188412206 748 c sys/src/cmd/gs/src/gdevdljm.h - 664 sys sys 1137452694 4744
+1188412206 749 c sys/src/cmd/gs/src/gdevdm24.c - 664 sys sys 1137452694 8360
+1188412206 750 c sys/src/cmd/gs/src/gdevdrop.c - 664 sys sys 1137452694 23474
+1188412206 751 c sys/src/cmd/gs/src/gdevimgn.c - 664 sys sys 1137452693 19349
+1188412206 752 c sys/src/cmd/gs/src/gdevjpeg.c - 664 sys sys 1137452694 10582
+1188412206 753 c sys/src/cmd/gs/src/gdevl256.c - 664 sys sys 1137452694 9410
+1188412206 754 c sys/src/cmd/gs/src/gdevl31s.c - 664 sys sys 1137452694 10512
+1188412206 755 c sys/src/cmd/gs/src/gdevlbp8.c - 664 sys sys 1137452694 6372
+1188412206 756 c sys/src/cmd/gs/src/gdevlj56.c - 664 sys sys 1137452694 5952
+1188412206 757 c sys/src/cmd/gs/src/gdevlp8k.c - 664 sys sys 1137452694 13717
+1188412206 758 c sys/src/cmd/gs/src/gdevlxm.c - 664 sys sys 1137452694 14493
+1188412206 759 c sys/src/cmd/gs/src/gdevm1.c - 664 sys sys 1137452694 22546
+1188412206 760 c sys/src/cmd/gs/src/gdevm16.c - 664 sys sys 1137452694 5294
+1188412206 761 c sys/src/cmd/gs/src/gdevm2.c - 664 sys sys 1137452694 7711
+1188412206 762 c sys/src/cmd/gs/src/gdevm24.c - 664 sys sys 1137452694 15532
+1188412206 763 c sys/src/cmd/gs/src/gdevm32.c - 664 sys sys 1137452694 7969
+1188412206 764 c sys/src/cmd/gs/src/gdevm4.c - 664 sys sys 1137452694 9520
+1188412206 765 c sys/src/cmd/gs/src/gdevm40.c - 664 sys sys 1137452694 13256
+1188412206 766 c sys/src/cmd/gs/src/gdevm48.c - 664 sys sys 1137452694 12743
+1188412206 767 c sys/src/cmd/gs/src/gdevm56.c - 664 sys sys 1137452694 14291
+1188412206 768 c sys/src/cmd/gs/src/gdevm64.c - 664 sys sys 1137452694 11308
+1188412206 769 c sys/src/cmd/gs/src/gdevm8.c - 664 sys sys 1137452694 7365
+1188412206 770 c sys/src/cmd/gs/src/gdevmac.c - 775 sys sys 1137452694 23743
+1188412206 771 c sys/src/cmd/gs/src/gdevmac.h - 775 sys sys 1137452694 5050
+1188412206 772 c sys/src/cmd/gs/src/gdevmacpictop.h - 664 sys sys 1137452694 25223
+1188412206 773 c sys/src/cmd/gs/src/gdevmacttf.h - 775 sys sys 1137452694 1618
+1188412206 774 c sys/src/cmd/gs/src/gdevmacxf.c - 775 sys sys 1137452694 14591
+1188412206 775 c sys/src/cmd/gs/src/gdevmeds.c - 664 sys sys 1137452694 3396
+1188412206 776 c sys/src/cmd/gs/src/gdevmeds.h - 664 sys sys 1137452694 954
+1188412206 777 c sys/src/cmd/gs/src/gdevmem.c - 664 sys sys 1137452694 20078
+1188412206 778 c sys/src/cmd/gs/src/gdevmem.h - 664 sys sys 1137452694 10668
+1188412206 779 c sys/src/cmd/gs/src/gdevmgr.c - 664 sys sys 1137452694 14200
+1188412206 780 c sys/src/cmd/gs/src/gdevmgr.h - 664 sys sys 1137452694 3725
+1188412206 781 c sys/src/cmd/gs/src/gdevmiff.c - 664 sys sys 1137452694 2529
+1188412206 782 c sys/src/cmd/gs/src/gdevmpla.c - 664 sys sys 1137452694 18700
+1188412206 783 c sys/src/cmd/gs/src/gdevmpla.h - 664 sys sys 1137452694 1915
+1188412206 784 c sys/src/cmd/gs/src/gdevmr1.c - 664 sys sys 1137452694 8718
+1188412206 785 c sys/src/cmd/gs/src/gdevmr2n.c - 664 sys sys 1137452694 6088
+1188412206 786 c sys/src/cmd/gs/src/gdevmr8n.c - 664 sys sys 1137452694 10911
+1188412206 787 c sys/src/cmd/gs/src/gdevmrop.h - 664 sys sys 1137452694 2943
+1188412206 788 c sys/src/cmd/gs/src/gdevmrun.c - 664 sys sys 1137452694 18289
+1188412206 789 c sys/src/cmd/gs/src/gdevmrun.h - 664 sys sys 1137452694 2059
+1188412206 790 c sys/src/cmd/gs/src/gdevmswn.c - 664 sys sys 1137452694 14878
+1188412206 791 c sys/src/cmd/gs/src/gdevmswn.h - 664 sys sys 1137452694 3513
+1188412206 792 c sys/src/cmd/gs/src/gdevmsxf.c - 664 sys sys 1137452694 13898
+1188412206 793 c sys/src/cmd/gs/src/gdevn533.c - 664 sys sys 1137452694 5345
+1188412206 794 c sys/src/cmd/gs/src/gdevnfwd.c - 664 sys sys 1137452694 35891
+1188412206 795 c sys/src/cmd/gs/src/gdevo182.c - 664 sys sys 1137452694 8298
+1188412206 796 c sys/src/cmd/gs/src/gdevokii.c - 664 sys sys 1137452694 8938
+1188412206 797 c sys/src/cmd/gs/src/gdevos2p.c - 664 sys sys 1137452694 19961
+1188412206 798 c sys/src/cmd/gs/src/gdevp14.c - 664 sys sys 1137452694 92374
+1188412206 799 c sys/src/cmd/gs/src/gdevp14.h - 664 sys sys 1137452694 2473
+1188412206 800 c sys/src/cmd/gs/src/gdevp2up.c - 664 sys sys 1137452694 4669
+1188412206 801 c sys/src/cmd/gs/src/gdevpbm.c - 664 sys sys 1137452694 34099
+1188412206 802 c sys/src/cmd/gs/src/gdevpccm.c - 664 sys sys 1137452694 3500
+1188412206 803 c sys/src/cmd/gs/src/gdevpccm.h - 664 sys sys 1137452694 1368
+1188412206 804 c sys/src/cmd/gs/src/gdevpcfb.c - 664 sys sys 1137452694 23791
+1188412206 805 c sys/src/cmd/gs/src/gdevpcfb.h - 664 sys sys 1137452694 6261
+1188412206 806 c sys/src/cmd/gs/src/gdevpcl.c - 664 sys sys 1137452694 12905
+1188412206 807 c sys/src/cmd/gs/src/gdevpcl.h - 664 sys sys 1137452694 2518
+1188412206 808 c sys/src/cmd/gs/src/gdevpcx.c - 664 sys sys 1137452694 13841
+1188412206 809 c sys/src/cmd/gs/src/gdevpdf.c - 664 sys sys 1137452694 40675
+1188412206 810 c sys/src/cmd/gs/src/gdevpdfb.c - 664 sys sys 1137452694 19786
+1188412206 811 c sys/src/cmd/gs/src/gdevpdfb.h - 775 sys sys 1137452694 7595
+1188412206 812 c sys/src/cmd/gs/src/gdevpdfc.c - 664 sys sys 1137452694 30863
+1188412206 813 c sys/src/cmd/gs/src/gdevpdfc.h - 664 sys sys 1137452694 2133
+1188412206 814 c sys/src/cmd/gs/src/gdevpdfd.c - 664 sys sys 1143747321 43437
+1188412206 815 c sys/src/cmd/gs/src/gdevpdfg.c - 664 sys sys 1137452694 51317
+1188412206 816 c sys/src/cmd/gs/src/gdevpdfg.h - 664 sys sys 1137452694 13315
+1188412206 817 c sys/src/cmd/gs/src/gdevpdfi.c - 664 sys sys 1137452694 42849
+1188412206 818 c sys/src/cmd/gs/src/gdevpdfj.c - 664 sys sys 1137452694 19203
+1188412206 819 c sys/src/cmd/gs/src/gdevpdfk.c - 664 sys sys 1137452694 23479
+1188412206 820 c sys/src/cmd/gs/src/gdevpdfm.c - 664 sys sys 1137452694 63605
+1188412206 821 c sys/src/cmd/gs/src/gdevpdfo.c - 664 sys sys 1137452694 42559
+1188412206 822 c sys/src/cmd/gs/src/gdevpdfo.h - 664 sys sys 1137452694 13545
+1188412206 823 c sys/src/cmd/gs/src/gdevpdfp.c - 664 sys sys 1137452694 16712
+1188412206 824 c sys/src/cmd/gs/src/gdevpdfr.c - 664 sys sys 1137452694 13866
+1188412206 825 c sys/src/cmd/gs/src/gdevpdft.c - 664 sys sys 1143747338 12236
+1188412206 826 c sys/src/cmd/gs/src/gdevpdfu.c - 664 sys sys 1137452694 54491
+1188412206 827 c sys/src/cmd/gs/src/gdevpdfv.c - 664 sys sys 1137452694 31216
+1188412206 828 c sys/src/cmd/gs/src/gdevpdfx.h - 664 sys sys 1137452694 43928
+1188412206 829 c sys/src/cmd/gs/src/gdevpdt.c - 664 sys sys 1137452694 1859
+1188412206 830 c sys/src/cmd/gs/src/gdevpdt.h - 664 sys sys 1137452694 3412
+1188412206 831 c sys/src/cmd/gs/src/gdevpdtb.c - 664 sys sys 1137452694 20715
+1188412206 832 c sys/src/cmd/gs/src/gdevpdtb.h - 664 sys sys 1137452694 5717
+1188412206 833 c sys/src/cmd/gs/src/gdevpdtc.c - 664 sys sys 1137452694 21783
+1188412206 834 c sys/src/cmd/gs/src/gdevpdtd.c - 664 sys sys 1137452694 20891
+1188412206 835 c sys/src/cmd/gs/src/gdevpdtd.h - 664 sys sys 1137452694 5088
+1188412206 836 c sys/src/cmd/gs/src/gdevpdte.c - 664 sys sys 1137452694 37159
+1188412206 837 c sys/src/cmd/gs/src/gdevpdtf.c - 664 sys sys 1137452694 30646
+1188412206 838 c sys/src/cmd/gs/src/gdevpdtf.h - 664 sys sys 1137452694 14295
+1188412206 839 c sys/src/cmd/gs/src/gdevpdti.c - 664 sys sys 1137452694 28742
+1188412206 840 c sys/src/cmd/gs/src/gdevpdti.h - 664 sys sys 1137452694 2472
+1188412206 841 c sys/src/cmd/gs/src/gdevpdts.c - 664 sys sys 1137452694 18142
+1188412206 842 a sys/src/cmd/gs/src/obj - 664 sys sys 1143747685 86
+1188412206 843 c sys/src/cmd/gs/src/gdevpdts.h - 664 sys sys 1137452694 3879
+1188412206 844 c sys/src/cmd/gs/src/gdevpdtt.c - 664 sys sys 1137452694 70911
+1188412206 845 c sys/src/cmd/gs/src/gdevpdtt.h - 664 sys sys 1137452694 11088
+1188412206 846 c sys/src/cmd/gs/src/gdevpdtv.c - 775 sys sys 1137452694 17487
+1188412206 847 c sys/src/cmd/gs/src/gdevpdtv.h - 775 sys sys 1137452694 720
+1188412206 848 c sys/src/cmd/gs/src/gdevpdtw.c - 664 sys sys 1137452694 22383
+1188412206 849 c sys/src/cmd/gs/src/gdevpdtw.h - 664 sys sys 1137452694 2725
+1188412206 850 c sys/src/cmd/gs/src/gdevpdtx.h - 664 sys sys 1137452694 3667
+1188412206 851 c sys/src/cmd/gs/src/gdevpe.c - 664 sys sys 1137452694 7474
+1188412206 852 c sys/src/cmd/gs/src/gdevperm.c - 664 sys sys 1137452694 14011
+1188412206 853 c sys/src/cmd/gs/src/gdevphex.c - 664 sys sys 1137452694 92822
+1188412206 854 c sys/src/cmd/gs/src/gdevpipe.c - 664 sys sys 1137452694 2222
+1188412206 855 c sys/src/cmd/gs/src/gdevpjet.c - 664 sys sys 1137452694 8186
+1188412206 856 c sys/src/cmd/gs/src/gdevplnx.c - 664 sys sys 1137452694 37291
+1188412206 857 c sys/src/cmd/gs/src/gdevplnx.h - 664 sys sys 1137452694 3129
+1188412206 858 c sys/src/cmd/gs/src/gdevpm.c - 664 sys sys 1137452694 38091
+1188412206 859 c sys/src/cmd/gs/src/gdevpm.h - 664 sys sys 1137452694 1217
+1188412206 860 c sys/src/cmd/gs/src/gdevpng.c - 664 sys sys 1137452694 21221
+1188412206 861 c sys/src/cmd/gs/src/gdevpnga.c - 664 sys sys 1137452694 31192
+1188412206 862 c sys/src/cmd/gs/src/gdevppla.c - 664 sys sys 1137452694 4098
+1188412206 863 c sys/src/cmd/gs/src/gdevppla.h - 664 sys sys 1137452694 1928
+1188412206 864 c sys/src/cmd/gs/src/gdevprn.c - 664 sys sys 1137452694 39728
+1188412206 865 c sys/src/cmd/gs/src/gdevprn.h - 664 sys sys 1137452694 28392
+1188412206 866 c sys/src/cmd/gs/src/gdevprna.c - 664 sys sys 1137452694 28515
+1188412206 867 c sys/src/cmd/gs/src/gdevprna.h - 664 sys sys 1137452694 8621
+1188412206 868 c sys/src/cmd/gs/src/gdevps.c - 664 sys sys 1137452694 51391
+1188412206 869 c sys/src/cmd/gs/src/gdevpsd.c - 664 sys sys 1137452694 33306
+1188412206 870 c sys/src/cmd/gs/src/gdevpsdf.h - 664 sys sys 1137452694 14541
+1188412206 871 c sys/src/cmd/gs/src/gdevpsdi.c - 664 sys sys 1137452694 24178
+1188412206 872 c sys/src/cmd/gs/src/gdevpsdp.c - 664 sys sys 1137452694 26688
+1188412206 873 c sys/src/cmd/gs/src/gdevpsds.c - 664 sys sys 1137452694 32021
+1188412206 874 c sys/src/cmd/gs/src/gdevpsds.h - 664 sys sys 1137452694 8309
+1188412206 875 c sys/src/cmd/gs/src/gdevpsdu.c - 664 sys sys 1137452694 13206
+1188412206 876 c sys/src/cmd/gs/src/gdevpsf.h - 664 sys sys 1137452694 11262
+1188412206 877 c sys/src/cmd/gs/src/gdevpsf1.c - 664 sys sys 1137452694 15788
+1188412206 878 c sys/src/cmd/gs/src/gdevpsf2.c - 664 sys sys 1137452694 57164
+1188412206 879 c sys/src/cmd/gs/src/gdevpsfm.c - 664 sys sys 1137452694 9339
+1188412206 880 c sys/src/cmd/gs/src/gdevpsft.c - 664 sys sys 1137452694 34874
+1188412206 881 c sys/src/cmd/gs/src/gdevpsfu.c - 664 sys sys 1137452694 9829
+1188412206 882 c sys/src/cmd/gs/src/gdevpsfx.c - 664 sys sys 1137452694 23492
+1188412206 883 c sys/src/cmd/gs/src/gdevpsim.c - 664 sys sys 1137452694 13563
+1188412206 884 c sys/src/cmd/gs/src/gdevpsu.c - 664 sys sys 1137452694 10087
+1188412206 885 c sys/src/cmd/gs/src/gdevpsu.h - 664 sys sys 1137452694 2485
+1188412206 886 c sys/src/cmd/gs/src/gdevpx.c - 664 sys sys 1137452694 47700
+1188412206 887 c sys/src/cmd/gs/src/gdevpxat.h - 664 sys sys 1137452694 3407
+1188412206 888 c sys/src/cmd/gs/src/gdevpxen.h - 664 sys sys 1137452694 7288
+1188412206 889 c sys/src/cmd/gs/src/gdevpxop.h - 664 sys sys 1137452694 4116
+1188412206 890 c sys/src/cmd/gs/src/gdevpxut.c - 664 sys sys 1137452694 6788
+1188412206 891 c sys/src/cmd/gs/src/gdevpxut.h - 664 sys sys 1137452694 2857
+1188412206 892 c sys/src/cmd/gs/src/gdevrinkj.c - 664 sys sys 1137452694 33523
+1188412206 893 c sys/src/cmd/gs/src/gdevrops.c - 664 sys sys 1137452694 7127
+1188412206 894 c sys/src/cmd/gs/src/gdevs3ga.c - 664 sys sys 1137452694 7270
+1188412206 895 c sys/src/cmd/gs/src/gdevsco.c - 664 sys sys 1137452694 6545
+1188412206 896 c sys/src/cmd/gs/src/gdevsgi.c - 664 sys sys 1137452694 7111
+1188412206 897 c sys/src/cmd/gs/src/gdevsgi.h - 664 sys sys 1137452694 2060
+1188412206 898 c sys/src/cmd/gs/src/gdevsj48.c - 664 sys sys 1137452694 8849
+1188412206 899 c sys/src/cmd/gs/src/gdevsnfb.c - 664 sys sys 1137452694 3214
+1188412206 900 c sys/src/cmd/gs/src/gdevsppr.c - 664 sys sys 1137452694 5358
+1188412206 901 c sys/src/cmd/gs/src/gdevstc.c - 664 sys sys 1137452694 119115
+1188412206 902 c sys/src/cmd/gs/src/gdevstc.h - 664 sys sys 1137452694 8985
+1188412206 903 c sys/src/cmd/gs/src/gdevstc1.c - 664 sys sys 1137452694 4584
+1188412206 904 c sys/src/cmd/gs/src/gdevstc2.c - 664 sys sys 1137452694 13540
+1188412206 905 c sys/src/cmd/gs/src/gdevstc3.c - 664 sys sys 1137452694 3590
+1188412206 906 c sys/src/cmd/gs/src/gdevstc4.c - 664 sys sys 1137452694 7679
+1188412206 907 c sys/src/cmd/gs/src/gdevsun.c - 664 sys sys 1137452694 20582
+1188412206 908 c sys/src/cmd/gs/src/gdevsunr.c - 664 sys sys 1137452694 3507
+1188412206 909 c sys/src/cmd/gs/src/gdevsvga.c - 664 sys sys 1137452694 27227
+1188412206 910 c sys/src/cmd/gs/src/gdevsvga.h - 664 sys sys 1137452694 3201
+1188412206 911 c sys/src/cmd/gs/src/gdevtfax.c - 664 sys sys 1137452694 12370
+1188412206 912 c sys/src/cmd/gs/src/gdevtfax.h - 664 sys sys 1137452694 991
+1188412206 913 c sys/src/cmd/gs/src/gdevtfnx.c - 664 sys sys 1137452694 5393
+1188412206 914 c sys/src/cmd/gs/src/gdevtifs.c - 664 sys sys 1137452694 10773
+1188412206 915 c sys/src/cmd/gs/src/gdevtifs.h - 664 sys sys 1137452694 9447
+1188412206 916 c sys/src/cmd/gs/src/gdevtknk.c - 664 sys sys 1137452694 8110
+1188412206 917 c sys/src/cmd/gs/src/gdevtrac.c - 664 sys sys 1137452694 19772
+1188412206 918 c sys/src/cmd/gs/src/gdevtsep.c - 664 sys sys 1137452694 31680
+1188412206 919 c sys/src/cmd/gs/src/gdevupd.c - 664 sys sys 1137452695 265024
+1188412206 920 c sys/src/cmd/gs/src/gdevvec.c - 664 sys sys 1137452695 36338
+1188412206 921 c sys/src/cmd/gs/src/gdevvec.h - 664 sys sys 1137452695 15566
+1188412206 922 c sys/src/cmd/gs/src/gdevvglb.c - 664 sys sys 1137452695 10030
+1188412206 923 c sys/src/cmd/gs/src/gdevwddb.c - 664 sys sys 1137452695 17628
+1188412206 924 c sys/src/cmd/gs/src/gdevwdib.c - 664 sys sys 1137452695 21678
+1188412206 925 c sys/src/cmd/gs/src/gdevwpr2.c - 664 sys sys 1137452695 46471
+1188412206 926 c sys/src/cmd/gs/src/gdevwprn.c - 664 sys sys 1137452695 19723
+1188412206 927 c sys/src/cmd/gs/src/gdevx.c - 664 sys sys 1137452695 39240
+1188412206 928 c sys/src/cmd/gs/src/gdevx.h - 664 sys sys 1137452695 8641
+1188412206 929 c sys/src/cmd/gs/src/gdevxalt.c - 664 sys sys 1137452695 24681
+1188412206 930 c sys/src/cmd/gs/src/gdevxcf.c - 664 sys sys 1137452695 40526
+1188412206 931 c sys/src/cmd/gs/src/gdevxcmp.c - 664 sys sys 1137452695 27678
+1188412206 932 c sys/src/cmd/gs/src/gdevxcmp.h - 664 sys sys 1137452695 4416
+1188412206 933 c sys/src/cmd/gs/src/gdevxini.c - 664 sys sys 1137452695 32749
+1188412206 934 c sys/src/cmd/gs/src/gdevxres.c - 664 sys sys 1137452695 6027
+1188412206 935 c sys/src/cmd/gs/src/gdevxxf.c - 664 sys sys 1137452695 13424
+1188412206 936 c sys/src/cmd/gs/src/genarch.c - 664 sys sys 1137452695 8533
+1188412206 937 c sys/src/cmd/gs/src/genconf.c - 664 sys sys 1137452695 28194
+1188412206 938 c sys/src/cmd/gs/src/gendev.c - 664 sys sys 1137452695 9824
+1188412206 939 c sys/src/cmd/gs/src/genht.c - 664 sys sys 1137452695 10285
+1188412206 940 c sys/src/cmd/gs/src/geninit.c - 664 sys sys 1137452695 12334
+1188412206 941 c sys/src/cmd/gs/src/ghost.h - 664 sys sys 1137452695 881
+1188412206 942 c sys/src/cmd/gs/src/gp.h - 664 sys sys 1137452695 15009
+1188412206 943 c sys/src/cmd/gs/src/gp_dosfe.c - 664 sys sys 1137452695 4154
+1188412206 944 c sys/src/cmd/gs/src/gp_dosfs.c - 664 sys sys 1137452695 4109
+1188412206 945 c sys/src/cmd/gs/src/gp_dvx.c - 664 sys sys 1137452695 3784
+1188412206 946 c sys/src/cmd/gs/src/gp_getnv.c - 664 sys sys 1137452695 1391
+1188412206 947 c sys/src/cmd/gs/src/gp_iwatc.c - 664 sys sys 1137452695 5197
+1188412206 948 c sys/src/cmd/gs/src/gp_mac.c - 664 sys sys 1137452695 8429
+1188412206 949 c sys/src/cmd/gs/src/gp_mac.h - 775 sys sys 1137452695 849
+1188412206 950 c sys/src/cmd/gs/src/gp_macio.c - 664 sys sys 1137452695 27429
+1188412206 951 c sys/src/cmd/gs/src/gp_macpoll.c - 664 sys sys 1137452695 2251
+1188412206 952 c sys/src/cmd/gs/src/gp_mktmp.c - 664 sys sys 1137452695 1344
+1188412206 953 c sys/src/cmd/gs/src/gp_msdll.c - 664 sys sys 1137452695 1585
+1188412206 954 c sys/src/cmd/gs/src/gp_msdos.c - 664 sys sys 1137452695 3771
+1188412206 955 c sys/src/cmd/gs/src/gp_mshdl.c - 664 sys sys 1137452695 3811
+1188412206 956 c sys/src/cmd/gs/src/gp_msio.c - 664 sys sys 1137452695 6334
+1188412206 957 c sys/src/cmd/gs/src/gp_mslib.c - 664 sys sys 1137452695 1157
+1188412206 958 c sys/src/cmd/gs/src/gp_mspol.c - 664 sys sys 1137452695 1438
+1188412206 959 c sys/src/cmd/gs/src/gp_msprn.c - 664 sys sys 1137452695 6302
+1188412206 960 c sys/src/cmd/gs/src/gp_mswin.c - 664 sys sys 1137452695 22033
+1188412206 961 c sys/src/cmd/gs/src/gp_mswin.h - 664 sys sys 1137452695 1673
+1188412206 962 c sys/src/cmd/gs/src/gp_nsync.c - 664 sys sys 1137452695 2079
+1188412206 963 c sys/src/cmd/gs/src/gp_ntfs.c - 664 sys sys 1137452695 8146
+1188412206 964 c sys/src/cmd/gs/src/gp_os2.c - 664 sys sys 1137452695 21900
+1188412206 965 c sys/src/cmd/gs/src/gp_os2.h - 664 sys sys 1137452695 1318
+1188412206 966 c sys/src/cmd/gs/src/gp_os2pr.c - 664 sys sys 1137452695 3810
+1188412206 967 c sys/src/cmd/gs/src/gp_os9.c - 664 sys sys 1137452695 4183
+1188412206 968 c sys/src/cmd/gs/src/gp_psync.c - 664 sys sys 1137452695 5785
+1188412206 969 c sys/src/cmd/gs/src/gp_stdia.c - 664 sys sys 1137452695 1087
+1188412206 970 c sys/src/cmd/gs/src/gp_stdin.c - 664 sys sys 1137452695 1345
+1188412206 971 c sys/src/cmd/gs/src/gp_strdl.c - 664 sys sys 1137452695 1300
+1188412206 972 c sys/src/cmd/gs/src/gp_sysv.c - 664 sys sys 1137452695 1758
+1188412206 973 c sys/src/cmd/gs/src/gp_unifn.c - 664 sys sys 1137452695 2548
+1188412206 974 c sys/src/cmd/gs/src/gp_unifs.c - 664 sys sys 1137452695 12725
+1188412206 975 c sys/src/cmd/gs/src/gp_unix.c - 664 sys sys 1137452695 4883
+1188412206 976 c sys/src/cmd/gs/src/gp_unix_cache.c - 664 sys sys 1137452695 13496
+1188412206 977 c sys/src/cmd/gs/src/gp_vms.c - 664 sys sys 1137452695 18103
+1188412206 978 c sys/src/cmd/gs/src/gp_wgetv.c - 664 sys sys 1137452695 3587
+1188412206 979 c sys/src/cmd/gs/src/gp_win32.c - 664 sys sys 1137452695 3462
+1188412206 980 c sys/src/cmd/gs/src/gp_wsync.c - 664 sys sys 1137452695 5539
+1188412206 981 c sys/src/cmd/gs/src/gpcheck.h - 664 sys sys 1137452695 2405
+1188412206 982 c sys/src/cmd/gs/src/gpgetenv.h - 664 sys sys 1137452695 1532
+1188412206 983 c sys/src/cmd/gs/src/gpmisc.c - 664 sys sys 1137452695 10821
+1188412206 984 c sys/src/cmd/gs/src/gpmisc.h - 664 sys sys 1137452695 2423
+1188412206 985 c sys/src/cmd/gs/src/gpsync.h - 664 sys sys 1137452695 2409
+1188412206 986 c sys/src/cmd/gs/src/gs.c - 664 sys sys 1137452695 2385
+1188412206 987 c sys/src/cmd/gs/src/gs.mak - 664 sys sys 1137452695 20090
+1188412206 988 c sys/src/cmd/gs/src/gs16spl.c - 664 sys sys 1137452695 5255
+1188412206 989 c sys/src/cmd/gs/src/gs16spl.def - 664 sys sys 1137452695 175
+1188412206 990 c sys/src/cmd/gs/src/gs16spl.rc - 775 sys sys 1137452695 1292
+1188412206 991 c sys/src/cmd/gs/src/gs_dll_call.h - 664 sys sys 1137452695 1545
+1188412206 992 c sys/src/cmd/gs/src/gsalloc.c - 664 sys sys 1137452695 63582
+1188412206 993 c sys/src/cmd/gs/src/gsalloc.h - 664 sys sys 1137452695 2859
+1188412206 994 c sys/src/cmd/gs/src/gsalpha.c - 664 sys sys 1137452695 1190
+1188412206 995 c sys/src/cmd/gs/src/gsalpha.h - 664 sys sys 1137452695 1140
+1188412206 996 c sys/src/cmd/gs/src/gsalphac.c - 664 sys sys 1137452695 25609
+1188412206 997 c sys/src/cmd/gs/src/gsalphac.h - 664 sys sys 1137452695 1900
+1188412206 998 c sys/src/cmd/gs/src/gsargs.c - 664 sys sys 1137452695 5344
+1188412206 999 c sys/src/cmd/gs/src/gsargs.h - 664 sys sys 1137452695 2630
+1188412206 1000 c sys/src/cmd/gs/src/gsbitcom.c - 664 sys sys 1137452695 9133
+1188412206 1001 c sys/src/cmd/gs/src/gsbitmap.h - 664 sys sys 1137452695 8382
+1188412206 1002 c sys/src/cmd/gs/src/gsbitops.c - 664 sys sys 1137452695 18252
+1188412206 1003 c sys/src/cmd/gs/src/gsbitops.h - 664 sys sys 1137452695 13142
+1188412206 1004 c sys/src/cmd/gs/src/gsbittab.c - 664 sys sys 1137452695 4618
+1188412206 1005 c sys/src/cmd/gs/src/gsbittab.h - 664 sys sys 1137452695 2966
+1188412206 1006 c sys/src/cmd/gs/src/gsccode.h - 664 sys sys 1137452695 5620
+1188412206 1007 c sys/src/cmd/gs/src/gsccolor.h - 664 sys sys 1137452695 1973
+1188412206 1008 c sys/src/cmd/gs/src/gscdef.c - 664 sys sys 1137452695 2600
+1188412206 1009 c sys/src/cmd/gs/src/gscdefs.h - 664 sys sys 1137452695 3228
+1188412206 1010 c sys/src/cmd/gs/src/gscdevn.c - 664 sys sys 1137452695 17902
+1188412206 1011 c sys/src/cmd/gs/src/gscdevn.h - 664 sys sys 1137452695 2731
+1188412206 1012 c sys/src/cmd/gs/src/gscedata.c - 664 sys sys 1137452695 164496
+1188412206 1013 c sys/src/cmd/gs/src/gscedata.h - 664 sys sys 1137452695 1192
+1188412206 1014 c sys/src/cmd/gs/src/gscencs.c - 664 sys sys 1137452695 6865
+1188412206 1015 c sys/src/cmd/gs/src/gscencs.h - 664 sys sys 1137452695 2628
+1188412206 1016 c sys/src/cmd/gs/src/gschar.c - 664 sys sys 1137452695 9982
+1188412206 1017 c sys/src/cmd/gs/src/gschar.h - 664 sys sys 1137452695 5360
+1188412206 1018 c sys/src/cmd/gs/src/gschar0.c - 664 sys sys 1137452695 12696
+1188412206 1019 c sys/src/cmd/gs/src/gscie.c - 664 sys sys 1137452695 47160
+1188412206 1020 c sys/src/cmd/gs/src/gscie.h - 664 sys sys 1137452695 29653
+1188412206 1021 c sys/src/cmd/gs/src/gsciemap.c - 664 sys sys 1137452695 19961
+1188412206 1022 c sys/src/cmd/gs/src/gscindex.h - 664 sys sys 1137452695 2978
+1188412206 1023 c sys/src/cmd/gs/src/gsclipsr.c - 664 sys sys 1137452695 2922
+1188412206 1024 c sys/src/cmd/gs/src/gsclipsr.h - 664 sys sys 1137452695 911
+1188412206 1025 c sys/src/cmd/gs/src/gscolor.c - 664 sys sys 1137452695 7484
+1188412206 1026 c sys/src/cmd/gs/src/gscolor.h - 664 sys sys 1137452695 1318
+1188412206 1027 c sys/src/cmd/gs/src/gscolor1.c - 664 sys sys 1137452695 6508
+1188412206 1028 c sys/src/cmd/gs/src/gscolor1.h - 664 sys sys 1137452695 1859
+1188412206 1029 c sys/src/cmd/gs/src/gscolor2.c - 664 sys sys 1137452695 16183
+1188412206 1030 c sys/src/cmd/gs/src/gscolor2.h - 664 sys sys 1137452695 1862
+1188412206 1031 c sys/src/cmd/gs/src/gscolor3.c - 664 sys sys 1137452695 3053
+1188412206 1032 c sys/src/cmd/gs/src/gscolor3.h - 664 sys sys 1137452695 1137
+1188412206 1033 c sys/src/cmd/gs/src/gscompt.h - 664 sys sys 1137452695 2115
+1188412206 1034 c sys/src/cmd/gs/src/gscoord.c - 664 sys sys 1137452695 14233
+1188412206 1035 c sys/src/cmd/gs/src/gscoord.h - 664 sys sys 1137452695 2050
+1188412206 1036 c sys/src/cmd/gs/src/gscparam.c - 664 sys sys 1137452695 17578
+1188412206 1037 c sys/src/cmd/gs/src/gscpixel.c - 664 sys sys 1137452695 3964
+1188412206 1038 c sys/src/cmd/gs/src/gscpixel.h - 664 sys sys 1137452695 1015
+1188412206 1039 c sys/src/cmd/gs/src/gscpm.h - 664 sys sys 1137452695 1556
+1188412206 1040 c sys/src/cmd/gs/src/gscrd.c - 664 sys sys 1137452695 11579
+1188412206 1041 c sys/src/cmd/gs/src/gscrd.h - 664 sys sys 1137452695 3536
+1188412206 1042 c sys/src/cmd/gs/src/gscrdp.c - 664 sys sys 1137452695 20059
+1188412206 1043 c sys/src/cmd/gs/src/gscrdp.h - 664 sys sys 1137452695 3847
+1188412206 1044 c sys/src/cmd/gs/src/gscrypt1.c - 664 sys sys 1137452695 1611
+1188412206 1045 c sys/src/cmd/gs/src/gscrypt1.h - 664 sys sys 1137452695 1790
+1188412206 1046 c sys/src/cmd/gs/src/gscscie.c - 664 sys sys 1137452695 15620
+1188412206 1047 c sys/src/cmd/gs/src/gscsel.h - 664 sys sys 1137452695 1313
+1188412206 1048 c sys/src/cmd/gs/src/gscsepr.c - 664 sys sys 1137452695 17144
+1188412206 1049 c sys/src/cmd/gs/src/gscsepr.h - 664 sys sys 1137452695 2779
+1188412206 1050 c sys/src/cmd/gs/src/gscspace.c - 664 sys sys 1137452695 20495
+1188412206 1051 c sys/src/cmd/gs/src/gscspace.h - 664 sys sys 1137452695 19209
+1188412206 1052 c sys/src/cmd/gs/src/gscssub.c - 664 sys sys 1137452695 3950
+1188412206 1053 c sys/src/cmd/gs/src/gscssub.h - 664 sys sys 1137452695 3013
+1188412206 1054 c sys/src/cmd/gs/src/gsdcolor.h - 664 sys sys 1137452695 17080
+1188412206 1055 c sys/src/cmd/gs/src/gsdevice.c - 664 sys sys 1137452695 26217
+1188412206 1056 c sys/src/cmd/gs/src/gsdevice.h - 664 sys sys 1137452695 4238
+1188412206 1057 c sys/src/cmd/gs/src/gsdevmem.c - 664 sys sys 1137452695 7455
+1188412206 1058 c sys/src/cmd/gs/src/gsdfilt.c - 664 sys sys 1137452695 3379
+1188412206 1059 c sys/src/cmd/gs/src/gsdfilt.h - 664 sys sys 1137452695 2974
+1188412206 1060 c sys/src/cmd/gs/src/gsdll.c - 664 sys sys 1137452695 5250
+1188412206 1061 c sys/src/cmd/gs/src/gsdll.h - 664 sys sys 1137452695 3767
+1188412206 1062 c sys/src/cmd/gs/src/gsdll2.def - 664 sys sys 1137452695 601
+1188412206 1063 c sys/src/cmd/gs/src/gsdll2.rc - 664 sys sys 1137452695 797
+1188412206 1064 c sys/src/cmd/gs/src/gsdll32.def - 664 sys sys 1137452695 657
+1188412206 1065 c sys/src/cmd/gs/src/gsdll32.rc - 664 sys sys 1137452695 1871
+1188412206 1066 c sys/src/cmd/gs/src/gsdll32w.lnk - 664 sys sys 1137452695 279
+1188412206 1067 c sys/src/cmd/gs/src/gsdllos2.h - 664 sys sys 1137452695 1148
+1188412206 1068 c sys/src/cmd/gs/src/gsdllwin.h - 664 sys sys 1137452695 1815
+1188412206 1069 c sys/src/cmd/gs/src/gsdparam.c - 664 sys sys 1137452695 26032
+1188412206 1070 c sys/src/cmd/gs/src/gsdpnext.h - 664 sys sys 1137452695 889
+1188412206 1071 c sys/src/cmd/gs/src/gsdps.c - 664 sys sys 1137452695 2930
+1188412206 1072 c sys/src/cmd/gs/src/gsdps.h - 664 sys sys 1137452695 1051
+1188412206 1073 c sys/src/cmd/gs/src/gsdps1.c - 664 sys sys 1137452695 8019
+1188412206 1074 c sys/src/cmd/gs/src/gsdsrc.c - 664 sys sys 1137452695 3065
+1188412206 1075 c sys/src/cmd/gs/src/gsdsrc.h - 664 sys sys 1137452695 4812
+1188412206 1076 c sys/src/cmd/gs/src/gsequivc.c - 664 sys sys 1137452695 16346
+1188412206 1077 c sys/src/cmd/gs/src/gsequivc.h - 664 sys sys 1137452695 1634
+1188412206 1078 c sys/src/cmd/gs/src/gserror.h - 664 sys sys 1137452695 1073
+1188412206 1079 c sys/src/cmd/gs/src/gserrors.h - 664 sys sys 1137452695 1695
+1188412206 1080 c sys/src/cmd/gs/src/gserver.c - 664 sys sys 1137452695 9330
+1188412206 1081 c sys/src/cmd/gs/src/gsexit.h - 664 sys sys 1137452695 1489
+1188412206 1082 c sys/src/cmd/gs/src/gsfcid.c - 664 sys sys 1137452695 6468
+1188412206 1083 c sys/src/cmd/gs/src/gsfcid2.c - 664 sys sys 1137452695 9482
+1188412206 1084 c sys/src/cmd/gs/src/gsfcmap.c - 664 sys sys 1137452695 17601
+1188412206 1085 c sys/src/cmd/gs/src/gsfcmap.h - 664 sys sys 1137452695 2234
+1188412206 1086 c sys/src/cmd/gs/src/gsfcmap1.c - 664 sys sys 1137452695 19816
+1188412206 1087 c sys/src/cmd/gs/src/gsfemu.c - 664 sys sys 1137452695 19990
+1188412206 1088 c sys/src/cmd/gs/src/gsflip.c - 664 sys sys 1137452695 11399
+1188412206 1089 c sys/src/cmd/gs/src/gsflip.h - 664 sys sys 1137452695 1499
+1188412206 1090 c sys/src/cmd/gs/src/gsfname.c - 664 sys sys 1137452695 3315
+1188412206 1091 c sys/src/cmd/gs/src/gsfname.h - 664 sys sys 1137452695 2134
+1188412206 1092 c sys/src/cmd/gs/src/gsfont.c - 664 sys sys 1137452695 29107
+1188412206 1093 c sys/src/cmd/gs/src/gsfont.h - 664 sys sys 1137452695 3495
+1188412206 1094 c sys/src/cmd/gs/src/gsfont0.c - 664 sys sys 1137452695 3799
+1188412206 1095 c sys/src/cmd/gs/src/gsfont0c.c - 664 sys sys 1137452695 4402
+1188412206 1096 c sys/src/cmd/gs/src/gsfunc.c - 664 sys sys 1137452695 6152
+1188412206 1097 c sys/src/cmd/gs/src/gsfunc.h - 664 sys sys 1137452695 7709
+1188412206 1098 c sys/src/cmd/gs/src/gsfunc0.c - 664 sys sys 1137452695 45854
+1188412206 1099 c sys/src/cmd/gs/src/gsfunc0.h - 664 sys sys 1137452695 2236
+1188412206 1100 c sys/src/cmd/gs/src/gsfunc3.c - 664 sys sys 1137452695 22423
+1188412206 1101 c sys/src/cmd/gs/src/gsfunc3.h - 664 sys sys 1137452695 3840
+1188412206 1102 c sys/src/cmd/gs/src/gsfunc4.c - 664 sys sys 1137452695 22697
+1188412206 1103 c sys/src/cmd/gs/src/gsfunc4.h - 664 sys sys 1137452695 2751
+1188412206 1104 c sys/src/cmd/gs/src/gsgc.h - 664 sys sys 1137452695 3494
+1188412206 1105 c sys/src/cmd/gs/src/gsgcache.c - 664 sys sys 1137452695 7000
+1188412206 1106 c sys/src/cmd/gs/src/gsgcache.h - 664 sys sys 1137452695 1759
+1188412206 1107 c sys/src/cmd/gs/src/gsgdata.c - 664 sys sys 1137452695 4236
+1188412206 1108 c sys/src/cmd/gs/src/gsgdata.h - 664 sys sys 1137452695 4521
+1188412206 1109 c sys/src/cmd/gs/src/gshsb.c - 664 sys sys 1137452695 4115
+1188412206 1110 c sys/src/cmd/gs/src/gshsb.h - 664 sys sys 1137452695 951
+1188412206 1111 c sys/src/cmd/gs/src/gsht.c - 664 sys sys 1137452695 48386
+1188412206 1112 c sys/src/cmd/gs/src/gsht.h - 664 sys sys 1137452695 2425
+1188412206 1113 c sys/src/cmd/gs/src/gsht1.c - 664 sys sys 1137452695 19754
+1188412206 1114 c sys/src/cmd/gs/src/gsht1.h - 664 sys sys 1137452695 1946
+1188412206 1115 c sys/src/cmd/gs/src/gshtscr.c - 664 sys sys 1187832293 21903
+1188412206 1116 c sys/src/cmd/gs/src/gshtx.c - 664 sys sys 1137452695 15065
+1188412206 1117 c sys/src/cmd/gs/src/gshtx.h - 664 sys sys 1137452695 4726
+1188412206 1118 c sys/src/cmd/gs/src/gsicc.c - 664 sys sys 1137452695 23236
+1188412206 1119 c sys/src/cmd/gs/src/gsicc.h - 664 sys sys 1137452695 7824
+1188412206 1120 c sys/src/cmd/gs/src/gsimage.c - 664 sys sys 1137452695 17485
+1188412206 1121 c sys/src/cmd/gs/src/gsimage.h - 664 sys sys 1137452695 8472
+1188412206 1122 c sys/src/cmd/gs/src/gsimpath.c - 664 sys sys 1137452695 5919
+1188412206 1123 c sys/src/cmd/gs/src/gsinit.c - 664 sys sys 1137452695 2073
+1188412206 1124 c sys/src/cmd/gs/src/gsio.h - 664 sys sys 1137452695 2009
+1188412206 1125 c sys/src/cmd/gs/src/gsiodev.c - 664 sys sys 1137452695 9670
+1188412206 1126 c sys/src/cmd/gs/src/gsiodevs.c - 664 sys sys 1137452695 3030
+1188412206 1127 c sys/src/cmd/gs/src/gsiodisk.c - 664 sys sys 1137452695 28520
+1188412206 1128 c sys/src/cmd/gs/src/gsiomacres.c - 664 sys sys 1137452695 12876
+1188412206 1129 c sys/src/cmd/gs/src/gsiorom.c - 664 sys sys 1137452695 3136
+1188412206 1130 c sys/src/cmd/gs/src/gsipar3x.h - 664 sys sys 1137452695 2748
+1188412206 1131 c sys/src/cmd/gs/src/gsiparam.h - 664 sys sys 1137452695 10767
+1188412206 1132 c sys/src/cmd/gs/src/gsiparm2.h - 664 sys sys 1137452695 1806
+1188412206 1133 c sys/src/cmd/gs/src/gsiparm3.h - 664 sys sys 1137452695 2004
+1188412206 1134 c sys/src/cmd/gs/src/gsiparm4.h - 664 sys sys 1137452695 1938
+1188412206 1135 c sys/src/cmd/gs/src/gsistate.c - 664 sys sys 1137452695 7209
+1188412206 1136 c sys/src/cmd/gs/src/gsjconf.h - 664 sys sys 1137452695 1929
+1188412206 1137 c sys/src/cmd/gs/src/gsjmorec.h - 664 sys sys 1137452695 1647
+1188412206 1138 c sys/src/cmd/gs/src/gslib.c - 664 sys sys 1137452695 31411
+1188412206 1139 c sys/src/cmd/gs/src/gslib.h - 664 sys sys 1137452695 1375
+1188412206 1140 c sys/src/cmd/gs/src/gslibctx.c - 664 sys sys 1137452695 3441
+1188412206 1141 c sys/src/cmd/gs/src/gslibctx.h - 664 sys sys 1137452695 2412
+1188412206 1142 c sys/src/cmd/gs/src/gsline.c - 664 sys sys 1137452695 8386
+1188412206 1143 c sys/src/cmd/gs/src/gsline.h - 664 sys sys 1137452695 2523
+1188412206 1144 c sys/src/cmd/gs/src/gslparam.h - 664 sys sys 1137452695 1371
+1188412206 1145 c sys/src/cmd/gs/src/gsmalloc.c - 664 sys sys 1137452695 15538
+1188412206 1146 c sys/src/cmd/gs/src/gsmalloc.h - 664 sys sys 1137452695 2263
+1188412206 1147 c sys/src/cmd/gs/src/gsmatrix.c - 664 sys sys 1137452695 17028
+1188412206 1148 c sys/src/cmd/gs/src/gsmatrix.h - 664 sys sys 1137452695 3139
+1188412206 1149 c sys/src/cmd/gs/src/gsmdebug.h - 664 sys sys 1137452695 1731
+1188412206 1150 c sys/src/cmd/gs/src/gsmemlok.c - 664 sys sys 1137452695 11581
+1188412206 1151 c sys/src/cmd/gs/src/gsmemlok.h - 664 sys sys 1137452695 1938
+1188412206 1152 c sys/src/cmd/gs/src/gsmemory.c - 664 sys sys 1137452695 9933
+1188412206 1153 c sys/src/cmd/gs/src/gsmemory.h - 664 sys sys 1137452695 16583
+1188412206 1154 c sys/src/cmd/gs/src/gsmemraw.h - 664 sys sys 1137452695 8635
+1188412206 1155 c sys/src/cmd/gs/src/gsmemret.c - 664 sys sys 1137452695 10957
+1188412206 1156 c sys/src/cmd/gs/src/gsmemret.h - 664 sys sys 1137452695 2443
+1188412206 1157 c sys/src/cmd/gs/src/gsmisc.c - 664 sys sys 1137452695 33157
+1188412206 1158 c sys/src/cmd/gs/src/gsnogc.c - 664 sys sys 1137452695 10195
+1188412206 1159 c sys/src/cmd/gs/src/gsnogc.h - 664 sys sys 1137452695 988
+1188412206 1160 c sys/src/cmd/gs/src/gsnorop.c - 664 sys sys 1137452695 4120
+1188412206 1161 c sys/src/cmd/gs/src/gsnotify.c - 664 sys sys 1137452695 3345
+1188412206 1162 c sys/src/cmd/gs/src/gsnotify.h - 664 sys sys 1137452695 3480
+1188412206 1163 c sys/src/cmd/gs/src/gsos2.def - 664 sys sys 1137452695 76
+1188412206 1164 c sys/src/cmd/gs/src/gsos2.icx - 664 sys sys 1137452695 7683
+1188412206 1165 c sys/src/cmd/gs/src/gsos2.rc - 664 sys sys 1137452695 801
+1188412206 1166 c sys/src/cmd/gs/src/gsovrc.c - 664 sys sys 1137452695 38945
+1188412206 1167 c sys/src/cmd/gs/src/gsovrc.h - 664 sys sys 1137452695 15814
+1188412206 1168 c sys/src/cmd/gs/src/gspaint.c - 664 sys sys 1137452695 12685
+1188412206 1169 c sys/src/cmd/gs/src/gspaint.h - 664 sys sys 1137452695 1106
+1188412206 1170 c sys/src/cmd/gs/src/gsparam.c - 664 sys sys 1137452695 12209
+1188412206 1171 c sys/src/cmd/gs/src/gsparam.h - 664 sys sys 1137452695 21015
+1188412206 1172 c sys/src/cmd/gs/src/gsparam2.c - 664 sys sys 1137452695 9986
+1188412206 1173 c sys/src/cmd/gs/src/gsparams.c - 664 sys sys 1137452695 11728
+1188412206 1174 c sys/src/cmd/gs/src/gsparams.h - 664 sys sys 1137452695 2410
+1188412206 1175 c sys/src/cmd/gs/src/gsparamx.c - 664 sys sys 1137452695 5082
+1188412206 1176 c sys/src/cmd/gs/src/gsparamx.h - 664 sys sys 1137452695 1679
+1188412206 1177 c sys/src/cmd/gs/src/gspath.c - 664 sys sys 1137452695 14236
+1188412206 1178 c sys/src/cmd/gs/src/gspath.h - 664 sys sys 1137452695 3543
+1188412206 1179 c sys/src/cmd/gs/src/gspath1.c - 664 sys sys 1137452695 18182
+1188412206 1180 c sys/src/cmd/gs/src/gspath2.h - 664 sys sys 1137452695 1206
+1188412206 1181 c sys/src/cmd/gs/src/gspcolor.c - 664 sys sys 1137452695 10716
+1188412206 1182 c sys/src/cmd/gs/src/gspcolor.h - 664 sys sys 1137452695 4317
+1188412206 1183 c sys/src/cmd/gs/src/gspenum.h - 664 sys sys 1137452695 1107
+1188412206 1184 c sys/src/cmd/gs/src/gspmdrv.c - 664 sys sys 1137452695 35028
+1188412206 1185 c sys/src/cmd/gs/src/gspmdrv.def - 664 sys sys 1137452695 76
+1188412206 1186 c sys/src/cmd/gs/src/gspmdrv.h - 664 sys sys 1137452695 1005
+1188412206 1187 c sys/src/cmd/gs/src/gspmdrv.icx - 664 sys sys 1137452695 7683
+1188412206 1188 c sys/src/cmd/gs/src/gspmdrv.rc - 664 sys sys 1137452695 1410
+1188412206 1189 c sys/src/cmd/gs/src/gsptype1.c - 664 sys sys 1137452695 39529
+1188412206 1190 c sys/src/cmd/gs/src/gsptype1.h - 664 sys sys 1137452695 5339
+1188412206 1191 c sys/src/cmd/gs/src/gsptype2.c - 664 sys sys 1137452695 10798
+1188412206 1192 c sys/src/cmd/gs/src/gsptype2.h - 664 sys sys 1137452695 3670
+1188412206 1193 c sys/src/cmd/gs/src/gsrect.h - 664 sys sys 1137452695 3315
+1188412206 1194 c sys/src/cmd/gs/src/gsrefct.h - 664 sys sys 1137452695 6078
+1188412206 1195 c sys/src/cmd/gs/src/gsrop.c - 664 sys sys 1137452695 2294
+1188412206 1196 c sys/src/cmd/gs/src/gsrop.h - 664 sys sys 1137452695 1375
+1188412206 1197 c sys/src/cmd/gs/src/gsropc.c - 664 sys sys 1137452695 9206
+1188412206 1198 c sys/src/cmd/gs/src/gsropc.h - 664 sys sys 1137452695 1744
+1188412206 1199 c sys/src/cmd/gs/src/gsropt.h - 664 sys sys 1137452695 7746
+1188412206 1200 c sys/src/cmd/gs/src/gsroptab.c - 664 sys sys 1137452695 16643
+1188412206 1201 c sys/src/cmd/gs/src/gsserial.c - 664 sys sys 1137452695 9527
+1188412206 1202 c sys/src/cmd/gs/src/gsserial.h - 664 sys sys 1137452695 10314
+1188412206 1203 c sys/src/cmd/gs/src/gsshade.c - 664 sys sys 1137452695 17086
+1188412206 1204 c sys/src/cmd/gs/src/gsshade.h - 664 sys sys 1137452695 9133
+1188412206 1205 c sys/src/cmd/gs/src/gsstate.c - 664 sys sys 1137452695 32373
+1188412206 1206 c sys/src/cmd/gs/src/gsstate.h - 664 sys sys 1137452695 3221
+1188412206 1207 c sys/src/cmd/gs/src/gsstruct.h - 664 sys sys 1137452695 52592
+1188412206 1208 c sys/src/cmd/gs/src/gsstype.h - 664 sys sys 1137452695 3728
+1188412206 1209 c sys/src/cmd/gs/src/gstext.c - 664 sys sys 1137452695 20019
+1188412206 1210 c sys/src/cmd/gs/src/gstext.h - 664 sys sys 1137452695 11818
+1188412206 1211 c sys/src/cmd/gs/src/gstparam.h - 664 sys sys 1137452695 4142
+1188412206 1212 c sys/src/cmd/gs/src/gstrans.c - 664 sys sys 1137452695 13056
+1188412206 1213 c sys/src/cmd/gs/src/gstrans.h - 664 sys sys 1137452695 6977
+1188412206 1214 c sys/src/cmd/gs/src/gstrap.c - 664 sys sys 1137452695 3379
+1188412206 1215 c sys/src/cmd/gs/src/gstrap.h - 664 sys sys 1137452695 2148
+1188412206 1216 c sys/src/cmd/gs/src/gstype1.c - 664 sys sys 1137452695 15115
+1188412206 1217 c sys/src/cmd/gs/src/gstype1.h - 664 sys sys 1137452695 7604
+1188412206 1218 c sys/src/cmd/gs/src/gstype2.c - 664 sys sys 1137452695 21587
+1188412206 1219 c sys/src/cmd/gs/src/gstype42.c - 664 sys sys 1137452696 34346
+1188412206 1220 c sys/src/cmd/gs/src/gstypes.h - 664 sys sys 1137452696 4140
+1188412206 1221 c sys/src/cmd/gs/src/gsuid.h - 664 sys sys 1137452696 2469
+1188412206 1222 c sys/src/cmd/gs/src/gsutil.c - 664 sys sys 1137452696 7998
+1188412206 1223 c sys/src/cmd/gs/src/gsutil.h - 664 sys sys 1137452696 2886
+1188412206 1224 c sys/src/cmd/gs/src/gswin.icx - 664 sys sys 1137452696 51217
+1188412206 1225 c sys/src/cmd/gs/src/gswin.rc - 664 sys sys 1137452696 894
+1188412206 1226 c sys/src/cmd/gs/src/gswin16.icx - 664 sys sys 1137452696 2190
+1188412206 1227 c sys/src/cmd/gs/src/gswin32.rc - 664 sys sys 1137452696 1469
+1188412206 1228 c sys/src/cmd/gs/src/gswin386.rc - 664 sys sys 1137452696 69
+1188412206 1229 c sys/src/cmd/gs/src/gswts.c - 664 sys sys 1137452696 32197
+1188412206 1230 c sys/src/cmd/gs/src/gswts.h - 664 sys sys 1137452696 1784
+1188412206 1231 c sys/src/cmd/gs/src/gsxfont.h - 664 sys sys 1137452696 1263
+1188412206 1232 c sys/src/cmd/gs/src/gx.h - 664 sys sys 1137452696 1405
+1188412206 1233 c sys/src/cmd/gs/src/gxacpath.c - 664 sys sys 1137452696 15544
+1188412206 1234 c sys/src/cmd/gs/src/gxalloc.h - 664 sys sys 1137452696 17638
+1188412206 1235 c sys/src/cmd/gs/src/gxalpha.h - 664 sys sys 1137452696 2965
+1188412206 1236 c sys/src/cmd/gs/src/gxarith.h - 664 sys sys 1137452696 3299
+1188412206 1237 c sys/src/cmd/gs/src/gxband.h - 664 sys sys 1137452696 3506
+1188412206 1238 c sys/src/cmd/gs/src/gxbcache.c - 664 sys sys 1137452696 4285
+1188412206 1239 c sys/src/cmd/gs/src/gxbcache.h - 664 sys sys 1137452696 4273
+1188412206 1240 c sys/src/cmd/gs/src/gxbitfmt.h - 664 sys sys 1137452696 7253
+1188412206 1241 c sys/src/cmd/gs/src/gxbitmap.h - 664 sys sys 1137452696 6563
+1188412206 1242 c sys/src/cmd/gs/src/gxbitops.h - 664 sys sys 1137452696 5127
+1188412206 1243 c sys/src/cmd/gs/src/gxblend.c - 664 sys sys 1137452696 31736
+1188412206 1244 c sys/src/cmd/gs/src/gxblend.h - 664 sys sys 1137452696 8379
+1188412206 1245 c sys/src/cmd/gs/src/gxccache.c - 664 sys sys 1137452696 16418
+1188412206 1246 c sys/src/cmd/gs/src/gxccman.c - 664 sys sys 1137452696 26893
+1188412206 1247 c sys/src/cmd/gs/src/gxcdevn.h - 664 sys sys 1137452696 1891
+1188412206 1248 c sys/src/cmd/gs/src/gxchar.c - 664 sys sys 1137452696 49829
+1188412206 1249 c sys/src/cmd/gs/src/gxchar.h - 664 sys sys 1137452696 5843
+1188412206 1250 c sys/src/cmd/gs/src/gxchrout.c - 664 sys sys 1137452696 2093
+1188412206 1251 c sys/src/cmd/gs/src/gxchrout.h - 664 sys sys 1137452696 1314
+1188412206 1252 c sys/src/cmd/gs/src/gxcht.c - 664 sys sys 1137452696 45561
+1188412206 1253 c sys/src/cmd/gs/src/gxcid.h - 664 sys sys 1137452696 2000
+1188412206 1254 c sys/src/cmd/gs/src/gxcie.h - 664 sys sys 1137452696 5505
+1188412206 1255 c sys/src/cmd/gs/src/gxcindex.h - 664 sys sys 1137452696 4827
+1188412206 1256 c sys/src/cmd/gs/src/gxclbits.c - 664 sys sys 1137452696 24248
+1188412206 1257 c sys/src/cmd/gs/src/gxcldev.h - 664 sys sys 1137452696 29563
+1188412206 1258 c sys/src/cmd/gs/src/gxclfile.c - 664 sys sys 1137452696 3895
+1188412206 1259 c sys/src/cmd/gs/src/gxclimag.c - 664 sys sys 1137452696 48155
+1188412206 1260 c sys/src/cmd/gs/src/gxclio.h - 664 sys sys 1137452696 3218
+1188412206 1261 c sys/src/cmd/gs/src/gxclip.c - 664 sys sys 1137452696 18738
+1188412206 1262 c sys/src/cmd/gs/src/gxclip.h - 664 sys sys 1137452696 2941
+1188412206 1263 c sys/src/cmd/gs/src/gxclip2.c - 664 sys sys 1137452696 9770
+1188412206 1264 c sys/src/cmd/gs/src/gxclip2.h - 664 sys sys 1137452696 1881
+1188412206 1265 c sys/src/cmd/gs/src/gxclipm.c - 664 sys sys 1137452696 11952
+1188412206 1266 c sys/src/cmd/gs/src/gxclipm.h - 664 sys sys 1137452696 973
+1188412206 1267 c sys/src/cmd/gs/src/gxclipsr.h - 664 sys sys 1137452696 1666
+1188412206 1268 c sys/src/cmd/gs/src/gxclist.c - 664 sys sys 1137452696 25654
+1188412206 1269 c sys/src/cmd/gs/src/gxclist.h - 664 sys sys 1137452696 14876
+1188412206 1270 c sys/src/cmd/gs/src/gxcllzw.c - 664 sys sys 1137452696 1565
+1188412206 1271 c sys/src/cmd/gs/src/gxclmem.c - 664 sys sys 1137452696 39546
+1188412206 1272 c sys/src/cmd/gs/src/gxclmem.h - 664 sys sys 1137452696 6387
+1188412206 1273 c sys/src/cmd/gs/src/gxclpage.c - 664 sys sys 1137452696 3715
+1188412206 1274 c sys/src/cmd/gs/src/gxclpage.h - 664 sys sys 1137452696 2333
+1188412206 1275 c sys/src/cmd/gs/src/gxclpath.c - 664 sys sys 1137452696 42385
+1188412206 1276 c sys/src/cmd/gs/src/gxclpath.h - 664 sys sys 1137452696 10920
+1188412206 1277 c sys/src/cmd/gs/src/gxclrast.c - 664 sys sys 1137452696 74443
+1188412206 1278 c sys/src/cmd/gs/src/gxclread.c - 664 sys sys 1137452696 16608
+1188412206 1279 c sys/src/cmd/gs/src/gxclrect.c - 664 sys sys 1137452696 20776
+1188412206 1280 c sys/src/cmd/gs/src/gxclutil.c - 664 sys sys 1137452696 21395
+1188412206 1281 c sys/src/cmd/gs/src/gxclzlib.c - 664 sys sys 1137452696 1700
+1188412206 1282 c sys/src/cmd/gs/src/gxcmap.c - 664 sys sys 1137452696 47294
+1188412206 1283 c sys/src/cmd/gs/src/gxcmap.h - 664 sys sys 1137452696 10383
+1188412206 1284 c sys/src/cmd/gs/src/gxcolor2.h - 664 sys sys 1137452696 3856
+1188412206 1285 c sys/src/cmd/gs/src/gxcomp.h - 664 sys sys 1137452696 5919
+1188412206 1286 c sys/src/cmd/gs/src/gxcoord.h - 664 sys sys 1137452696 1409
+1188412206 1287 c sys/src/cmd/gs/src/gxcpath.c - 664 sys sys 1137452696 29202
+1188412206 1288 c sys/src/cmd/gs/src/gxcpath.h - 664 sys sys 1137452696 5293
+1188412206 1289 c sys/src/cmd/gs/src/gxcspace.h - 664 sys sys 1137452696 10063
+1188412206 1290 c sys/src/cmd/gs/src/gxctable.c - 664 sys sys 1137452696 4224
+1188412206 1291 c sys/src/cmd/gs/src/gxctable.h - 664 sys sys 1137452696 2155
+1188412206 1292 c sys/src/cmd/gs/src/gxcvalue.h - 664 sys sys 1137452696 1564
+1188412206 1293 c sys/src/cmd/gs/src/gxdcconv.c - 664 sys sys 1137452696 4952
+1188412206 1294 c sys/src/cmd/gs/src/gxdcconv.h - 664 sys sys 1137452696 1313
+1188412206 1295 c sys/src/cmd/gs/src/gxdcolor.c - 664 sys sys 1137452696 23693
+1188412206 1296 c sys/src/cmd/gs/src/gxdcolor.h - 664 sys sys 1137452696 14056
+1188412206 1297 c sys/src/cmd/gs/src/gxdda.h - 664 sys sys 1137452696 5566
+1188412206 1298 c sys/src/cmd/gs/src/gxdevbuf.h - 664 sys sys 1137452696 4114
+1188412206 1299 c sys/src/cmd/gs/src/gxdevcli.h - 664 sys sys 1137452696 62657
+1188412206 1300 c sys/src/cmd/gs/src/gxdevice.h - 664 sys sys 1137452696 24696
+1188412206 1301 c sys/src/cmd/gs/src/gxdevmem.h - 664 sys sys 1137452696 11351
+1188412206 1302 c sys/src/cmd/gs/src/gxdevndi.c - 664 sys sys 1137452696 9354
+1188412206 1303 c sys/src/cmd/gs/src/gxdevndi.h - 664 sys sys 1137452696 1428
+1188412206 1304 c sys/src/cmd/gs/src/gxdevrop.h - 664 sys sys 1137452696 1019
+1188412206 1305 c sys/src/cmd/gs/src/gxdht.h - 664 sys sys 1137452696 13670
+1188412206 1306 c sys/src/cmd/gs/src/gxdhtres.h - 664 sys sys 1137452696 1446
+1188412206 1307 c sys/src/cmd/gs/src/gxdhtserial.c - 664 sys sys 1137452696 22268
+1188412206 1308 c sys/src/cmd/gs/src/gxdhtserial.h - 664 sys sys 1137452696 2880
+1188412206 1309 c sys/src/cmd/gs/src/gxdither.h - 664 sys sys 1137452696 1709
+1188412206 1310 c sys/src/cmd/gs/src/gxdtfill.h - 664 sys sys 1137452696 12495
+1188412206 1311 c sys/src/cmd/gs/src/gxfapi.c - 664 sys sys 1137452696 2578
+1188412206 1312 c sys/src/cmd/gs/src/gxfapi.h - 664 sys sys 1137452696 1075
+1188412206 1313 c sys/src/cmd/gs/src/gxfarith.h - 664 sys sys 1137452696 4571
+1188412206 1314 c sys/src/cmd/gs/src/gxfcache.h - 664 sys sys 1137452696 12191
+1188412206 1315 c sys/src/cmd/gs/src/gxfcid.h - 664 sys sys 1137452696 5598
+1188412206 1316 c sys/src/cmd/gs/src/gxfcmap.h - 664 sys sys 1137452696 11790
+1188412206 1317 c sys/src/cmd/gs/src/gxfcmap1.h - 664 sys sys 1137452696 4332
+1188412206 1318 c sys/src/cmd/gs/src/gxfcopy.c - 664 sys sys 1137452696 71890
+1188412206 1319 c sys/src/cmd/gs/src/gxfcopy.h - 664 sys sys 1137452696 6708
+1188412206 1320 c sys/src/cmd/gs/src/gxfdrop.c - 664 sys sys 1137452696 19459
+1188412206 1321 c sys/src/cmd/gs/src/gxfdrop.h - 664 sys sys 1137452696 5196
+1188412206 1322 c sys/src/cmd/gs/src/gxfill.c - 664 sys sys 1137452696 67755
+1188412206 1323 c sys/src/cmd/gs/src/gxfill.h - 664 sys sys 1137452696 6547
+1188412206 1324 c sys/src/cmd/gs/src/gxfillsl.h - 664 sys sys 1137452696 6458
+1188412206 1325 c sys/src/cmd/gs/src/gxfilltr.h - 664 sys sys 1137452696 11588
+1188412206 1326 c sys/src/cmd/gs/src/gxfillts.h - 664 sys sys 1137452696 4992
+1188412206 1327 c sys/src/cmd/gs/src/gxfixed.h - 664 sys sys 1137452696 11211
+1188412206 1328 c sys/src/cmd/gs/src/gxfmap.h - 664 sys sys 1137452696 3893
+1188412206 1329 c sys/src/cmd/gs/src/gxfont.h - 664 sys sys 1137452696 18603
+1188412206 1330 c sys/src/cmd/gs/src/gxfont0.h - 664 sys sys 1137452696 2604
+1188412206 1331 c sys/src/cmd/gs/src/gxfont0c.h - 664 sys sys 1137452696 1942
+1188412206 1332 c sys/src/cmd/gs/src/gxfont1.h - 664 sys sys 1137452696 5549
+1188412206 1333 c sys/src/cmd/gs/src/gxfont42.h - 664 sys sys 1137452696 5455
+1188412206 1334 c sys/src/cmd/gs/src/gxfrac.h - 664 sys sys 1137452696 3616
+1188412206 1335 c sys/src/cmd/gs/src/gxftype.h - 664 sys sys 1137452696 1662
+1188412206 1336 c sys/src/cmd/gs/src/gxfunc.h - 664 sys sys 1137452696 2700
+1188412206 1337 c sys/src/cmd/gs/src/gxgetbit.h - 664 sys sys 1137452696 3592
+1188412206 1338 c sys/src/cmd/gs/src/gxhintn.c - 664 sys sys 1137452696 98161
+1188412206 1339 c sys/src/cmd/gs/src/gxhintn.h - 664 sys sys 1137452696 8013
+1188412206 1340 c sys/src/cmd/gs/src/gxhldevc.c - 664 sys sys 1137452696 6573
+1188412206 1341 c sys/src/cmd/gs/src/gxhldevc.h - 664 sys sys 1137452696 7312
+1188412206 1342 c sys/src/cmd/gs/src/gxht.c - 664 sys sys 1137452696 28623
+1188412206 1343 c sys/src/cmd/gs/src/gxht.h - 664 sys sys 1137452696 8594
+1188412206 1344 c sys/src/cmd/gs/src/gxhtbit.c - 664 sys sys 1137452696 7921
+1188412206 1345 c sys/src/cmd/gs/src/gxhttile.h - 664 sys sys 1137452696 1539
+1188412206 1346 c sys/src/cmd/gs/src/gxhttype.h - 664 sys sys 1137452696 1628
+1188412206 1347 c sys/src/cmd/gs/src/gxi12bit.c - 664 sys sys 1137452696 10824
+1188412206 1348 c sys/src/cmd/gs/src/gxi16bit.c - 664 sys sys 1137452696 9367
+1188412206 1349 c sys/src/cmd/gs/src/gxiclass.h - 664 sys sys 1137452696 2680
+1188412206 1350 c sys/src/cmd/gs/src/gxicolor.c - 664 sys sys 1137452696 13902
+1188412206 1351 c sys/src/cmd/gs/src/gxidata.c - 664 sys sys 1137452696 12808
+1188412206 1352 c sys/src/cmd/gs/src/gxifast.c - 664 sys sys 1137452696 21676
+1188412206 1353 c sys/src/cmd/gs/src/gximag3x.c - 664 sys sys 1137452696 29008
+1188412206 1354 c sys/src/cmd/gs/src/gximag3x.h - 664 sys sys 1137452696 2874
+1188412206 1355 c sys/src/cmd/gs/src/gximage.c - 664 sys sys 1137452696 14135
+1188412206 1356 c sys/src/cmd/gs/src/gximage.h - 664 sys sys 1137452696 11528
+1188412206 1357 c sys/src/cmd/gs/src/gximage1.c - 664 sys sys 1137452696 6379
+1188412206 1358 c sys/src/cmd/gs/src/gximage2.c - 664 sys sys 1137452696 10287
+1188412206 1359 c sys/src/cmd/gs/src/gximage3.c - 664 sys sys 1137452696 24843
+1188412206 1360 c sys/src/cmd/gs/src/gximage3.h - 664 sys sys 1137452696 2809
+1188412206 1361 c sys/src/cmd/gs/src/gximage4.c - 664 sys sys 1137452696 4648
+1188412206 1362 c sys/src/cmd/gs/src/gximono.c - 664 sys sys 1137452696 14907
+1188412206 1363 c sys/src/cmd/gs/src/gxino12b.c - 664 sys sys 1137452696 874
+1188412206 1364 c sys/src/cmd/gs/src/gxino16b.c - 664 sys sys 1137452696 872
+1188412206 1365 c sys/src/cmd/gs/src/gxiodev.h - 664 sys sys 1137452696 7069
+1188412206 1366 c sys/src/cmd/gs/src/gxiparam.h - 664 sys sys 1137452696 8641
+1188412206 1367 c sys/src/cmd/gs/src/gxipixel.c - 664 sys sys 1137452696 26216
+1188412206 1368 c sys/src/cmd/gs/src/gxiscale.c - 664 sys sys 1137452696 10271
+1188412206 1369 c sys/src/cmd/gs/src/gxistate.h - 664 sys sys 1137452696 10901
+1188412206 1370 c sys/src/cmd/gs/src/gxline.h - 664 sys sys 1137452696 2749
+1188412206 1371 c sys/src/cmd/gs/src/gxlum.h - 664 sys sys 1137452696 1064
+1188412206 1372 c sys/src/cmd/gs/src/gxmatrix.h - 664 sys sys 1137452696 3815
+1188412206 1373 c sys/src/cmd/gs/src/gxmclip.c - 664 sys sys 1137452696 3391
+1188412206 1374 c sys/src/cmd/gs/src/gxmclip.h - 664 sys sys 1137452696 3678
+1188412206 1375 c sys/src/cmd/gs/src/gxobj.h - 664 sys sys 1137452696 6108
+1188412206 1376 c sys/src/cmd/gs/src/gxoprect.c - 664 sys sys 1137452696 21560
+1188412206 1377 c sys/src/cmd/gs/src/gxoprect.h - 664 sys sys 1137452696 2828
+1188412206 1378 c sys/src/cmd/gs/src/gxp1fill.c - 664 sys sys 1137452696 12627
+1188412206 1379 c sys/src/cmd/gs/src/gxp1impl.h - 664 sys sys 1137452696 1556
+1188412206 1380 c sys/src/cmd/gs/src/gxpageq.c - 664 sys sys 1137452696 10786
+1188412206 1381 c sys/src/cmd/gs/src/gxpageq.h - 664 sys sys 1137452696 10909
+1188412206 1382 c sys/src/cmd/gs/src/gxpaint.c - 664 sys sys 1137452696 2913
+1188412206 1383 c sys/src/cmd/gs/src/gxpaint.h - 664 sys sys 1137452696 4040
+1188412206 1384 c sys/src/cmd/gs/src/gxpath.c - 664 sys sys 1137452696 28715
+1188412206 1385 c sys/src/cmd/gs/src/gxpath.h - 664 sys sys 1137452696 13371
+1188412206 1386 c sys/src/cmd/gs/src/gxpath2.c - 664 sys sys 1137452696 14456
+1188412206 1387 c sys/src/cmd/gs/src/gxpcache.h - 664 sys sys 1137452696 1723
+1188412206 1388 c sys/src/cmd/gs/src/gxpcmap.c - 664 sys sys 1137452696 22457
+1188412206 1389 c sys/src/cmd/gs/src/gxpcolor.h - 664 sys sys 1137452696 8746
+1188412206 1390 c sys/src/cmd/gs/src/gxpcopy.c - 664 sys sys 1137452696 22721
+1188412206 1391 c sys/src/cmd/gs/src/gxpdash.c - 664 sys sys 1137452696 5709
+1188412206 1392 c sys/src/cmd/gs/src/gxpflat.c - 664 sys sys 1137452696 20274
+1188412206 1393 c sys/src/cmd/gs/src/gxropc.h - 664 sys sys 1137452696 1568
+1188412206 1394 c sys/src/cmd/gs/src/gxrplane.h - 664 sys sys 1137452696 1739
+1188412206 1395 c sys/src/cmd/gs/src/gxsample.c - 664 sys sys 1137452696 3737
+1188412206 1396 c sys/src/cmd/gs/src/gxsample.h - 664 sys sys 1137452696 2996
+1188412206 1397 c sys/src/cmd/gs/src/gxsamplp.h - 775 sys sys 1137452696 5840
+1188412206 1398 c sys/src/cmd/gs/src/gxshade.c - 664 sys sys 1137452696 10470
+1188412206 1399 c sys/src/cmd/gs/src/gxshade.h - 664 sys sys 1137452696 7849
+1188412206 1400 c sys/src/cmd/gs/src/gxshade1.c - 664 sys sys 1137453868 23890
+1188412206 1401 c sys/src/cmd/gs/src/gxshade4.c - 664 sys sys 1137452696 6127
+1188412206 1402 c sys/src/cmd/gs/src/gxshade4.h - 664 sys sys 1137452696 6714
+1188412206 1403 c sys/src/cmd/gs/src/gxshade6.c - 664 sys sys 1137458076 118438
+1188412206 1404 c sys/src/cmd/gs/src/gxstate.h - 664 sys sys 1137452696 2939
+1188412206 1405 c sys/src/cmd/gs/src/gxstdio.h - 664 sys sys 1137452696 1171
+1188412206 1406 c sys/src/cmd/gs/src/gxstroke.c - 664 sys sys 1137452696 46693
+1188412206 1407 c sys/src/cmd/gs/src/gxsync.c - 664 sys sys 1137452696 4274
+1188412206 1408 c sys/src/cmd/gs/src/gxsync.h - 664 sys sys 1137452696 2653
+1188412206 1409 c sys/src/cmd/gs/src/gxtext.h - 664 sys sys 1137452696 12063
+1188412206 1410 c sys/src/cmd/gs/src/gxtmap.h - 664 sys sys 1137452696 1791
+1188412206 1411 c sys/src/cmd/gs/src/gxttf.h - 664 sys sys 1137452696 3966
+1188412206 1412 c sys/src/cmd/gs/src/gxttfb.c - 664 sys sys 1137452696 22589
+1188412206 1413 c sys/src/cmd/gs/src/gxttfb.h - 664 sys sys 1137452696 2497
+1188412206 1414 c sys/src/cmd/gs/src/gxtype1.c - 664 sys sys 1137452696 18022
+1188412206 1415 c sys/src/cmd/gs/src/gxtype1.h - 664 sys sys 1137452696 8578
+1188412206 1416 c sys/src/cmd/gs/src/gxwts.c - 664 sys sys 1137452696 16004
+1188412206 1417 c sys/src/cmd/gs/src/gxwts.h - 664 sys sys 1137452696 1871
+1188412206 1418 c sys/src/cmd/gs/src/gxxfont.h - 664 sys sys 1137452696 6394
+1188412206 1419 c sys/src/cmd/gs/src/gzacpath.h - 664 sys sys 1137452696 2063
+1188412206 1420 c sys/src/cmd/gs/src/gzcpath.h - 664 sys sys 1137452696 4001
+1188412206 1421 c sys/src/cmd/gs/src/gzht.h - 664 sys sys 1137452696 10342
+1188412206 1422 c sys/src/cmd/gs/src/gzline.h - 664 sys sys 1137452696 1353
+1188412206 1423 c sys/src/cmd/gs/src/gzpath.h - 664 sys sys 1137452696 14612
+1188412206 1424 c sys/src/cmd/gs/src/gzspotan.c - 664 sys sys 1137452696 21909
+1188412206 1425 c sys/src/cmd/gs/src/gzspotan.h - 664 sys sys 1137452696 5318
+1188412206 1426 c sys/src/cmd/gs/src/gzstate.h - 664 sys sys 1137452696 5466
+1188412206 1427 c sys/src/cmd/gs/src/ialloc.c - 664 sys sys 1137452696 11230
+1188412206 1428 c sys/src/cmd/gs/src/ialloc.h - 664 sys sys 1137452696 4352
+1188412206 1429 c sys/src/cmd/gs/src/iapi.c - 664 sys sys 1137452696 7706
+1188412206 1430 c sys/src/cmd/gs/src/iapi.h - 664 sys sys 1137452696 10173
+1188412206 1431 c sys/src/cmd/gs/src/iastate.h - 664 sys sys 1137452696 974
+1188412206 1432 c sys/src/cmd/gs/src/iastruct.h - 664 sys sys 1137452696 916
+1188412206 1433 c sys/src/cmd/gs/src/ibnum.c - 664 sys sys 1137452696 6003
+1188412206 1434 c sys/src/cmd/gs/src/ibnum.h - 664 sys sys 1137452696 2887
+1188412206 1435 c sys/src/cmd/gs/src/iccfont.c - 664 sys sys 1137452696 9948
+1188412206 1436 c sys/src/cmd/gs/src/iccinit0.c - 664 sys sys 1137452696 938
+1188412206 1437 c sys/src/cmd/gs/src/icclib.mak - 664 sys sys 1137452696 2706
+1188412206 1438 c sys/src/cmd/gs/src/icfontab.c - 664 sys sys 1137452696 1467
+1188412206 1439 c sys/src/cmd/gs/src/ichar.h - 664 sys sys 1137452696 2926
+1188412206 1440 c sys/src/cmd/gs/src/ichar1.h - 664 sys sys 1137452696 2126
+1188412206 1441 c sys/src/cmd/gs/src/icharout.h - 664 sys sys 1137452696 2570
+1188412206 1442 c sys/src/cmd/gs/src/icid.h - 664 sys sys 1137452696 1764
+1188412206 1443 c sys/src/cmd/gs/src/icie.h - 664 sys sys 1137452696 3612
+1188412206 1444 c sys/src/cmd/gs/src/icolor.h - 664 sys sys 1137452696 1995
+1188412206 1445 c sys/src/cmd/gs/src/iconf.c - 664 sys sys 1137452696 2969
+1188412206 1446 c sys/src/cmd/gs/src/iconf.h - 664 sys sys 1137452696 1179
+1188412206 1447 c sys/src/cmd/gs/src/icontext.c - 664 sys sys 1137452696 9502
+1188412206 1448 c sys/src/cmd/gs/src/icontext.h - 664 sys sys 1137452696 1934
+1188412206 1449 c sys/src/cmd/gs/src/icremap.h - 664 sys sys 1137452696 1502
+1188412206 1450 c sys/src/cmd/gs/src/icsmap.h - 664 sys sys 1137452696 1700
+1188412206 1451 c sys/src/cmd/gs/src/icstate.h - 664 sys sys 1137452696 2847
+1188412206 1452 c sys/src/cmd/gs/src/iddict.h - 664 sys sys 1137452696 1665
+1188412206 1453 c sys/src/cmd/gs/src/iddstack.h - 664 sys sys 1137452696 1338
+1188412206 1454 c sys/src/cmd/gs/src/idebug.c - 664 sys sys 1137452696 8317
+1188412206 1455 c sys/src/cmd/gs/src/idebug.h - 664 sys sys 1137452696 1714
+1188412206 1456 c sys/src/cmd/gs/src/idict.c - 664 sys sys 1137452696 26536
+1188412206 1457 c sys/src/cmd/gs/src/idict.h - 664 sys sys 1137452696 10036
+1188412206 1458 c sys/src/cmd/gs/src/idictdef.h - 664 sys sys 1137452696 4876
+1188412206 1459 c sys/src/cmd/gs/src/idisp.c - 664 sys sys 1137452696 2913
+1188412206 1460 c sys/src/cmd/gs/src/idisp.h - 664 sys sys 1137452696 1103
+1188412206 1461 c sys/src/cmd/gs/src/idosave.h - 664 sys sys 1137452696 1592
+1188412206 1462 c sys/src/cmd/gs/src/idparam.c - 664 sys sys 1137452696 11476
+1188412206 1463 c sys/src/cmd/gs/src/idparam.h - 664 sys sys 1137452696 4493
+1188412206 1464 c sys/src/cmd/gs/src/idsdata.h - 664 sys sys 1137452696 2989
+1188412206 1465 c sys/src/cmd/gs/src/idstack.c - 664 sys sys 1137452696 7388
+1188412206 1466 c sys/src/cmd/gs/src/idstack.h - 664 sys sys 1137452696 2343
+1188412206 1467 c sys/src/cmd/gs/src/ierrors.h - 664 sys sys 1137452696 4966
+1188412206 1468 c sys/src/cmd/gs/src/iesdata.h - 664 sys sys 1137452696 1938
+1188412206 1469 c sys/src/cmd/gs/src/iestack.h - 664 sys sys 1137452696 1351
+1188412206 1470 c sys/src/cmd/gs/src/ifapi.h - 664 sys sys 1137452696 8221
+1188412206 1471 c sys/src/cmd/gs/src/ifcid.h - 664 sys sys 1137452696 1116
+1188412206 1472 c sys/src/cmd/gs/src/ifilter.h - 664 sys sys 1137452696 3282
+1188412206 1473 c sys/src/cmd/gs/src/ifilter2.h - 664 sys sys 1137452696 1115
+1188412206 1474 c sys/src/cmd/gs/src/ifont.h - 664 sys sys 1137452696 3703
+1188412206 1475 c sys/src/cmd/gs/src/ifont1.h - 664 sys sys 1137452696 2282
+1188412206 1476 c sys/src/cmd/gs/src/ifont2.h - 664 sys sys 1137452696 1159
+1188412206 1477 c sys/src/cmd/gs/src/ifont42.h - 664 sys sys 1137452696 2099
+1188412206 1478 c sys/src/cmd/gs/src/ifrpred.h - 664 sys sys 1137452696 1004
+1188412206 1479 c sys/src/cmd/gs/src/ifunc.h - 664 sys sys 1137452696 2769
+1188412206 1480 c sys/src/cmd/gs/src/ifwpred.h - 664 sys sys 1137452696 1007
+1188412206 1481 c sys/src/cmd/gs/src/igc.c - 664 sys sys 1137452696 37315
+1188412206 1482 c sys/src/cmd/gs/src/igc.h - 664 sys sys 1137452697 3332
+1188412206 1483 c sys/src/cmd/gs/src/igcref.c - 664 sys sys 1137452697 21549
+1188412206 1484 c sys/src/cmd/gs/src/igcstr.c - 664 sys sys 1137452697 11594
+1188412206 1485 c sys/src/cmd/gs/src/igcstr.h - 664 sys sys 1137452697 1341
+1188412206 1486 c sys/src/cmd/gs/src/igstate.h - 664 sys sys 1137452697 7810
+1188412206 1487 c sys/src/cmd/gs/src/iht.h - 664 sys sys 1137452697 1084
+1188412206 1488 c sys/src/cmd/gs/src/iimage.h - 664 sys sys 1137452697 1985
+1188412206 1489 c sys/src/cmd/gs/src/iimage2.h - 664 sys sys 1137452697 1283
+1188412206 1490 c sys/src/cmd/gs/src/iinit.c - 664 sys sys 1137452697 14193
+1188412206 1491 c sys/src/cmd/gs/src/iinit.h - 664 sys sys 1137452697 1311
+1188412206 1492 c sys/src/cmd/gs/src/ijs.mak - 664 sys sys 1137452697 4244
+1188412206 1493 c sys/src/cmd/gs/src/ilevel.h - 664 sys sys 1137452697 1101
+1188412206 1494 c sys/src/cmd/gs/src/ilocate.c - 664 sys sys 1137452697 16348
+1188412206 1495 c sys/src/cmd/gs/src/imain.c - 664 sys sys 1137452697 28038
+1188412206 1496 c sys/src/cmd/gs/src/imain.h - 664 sys sys 1137452697 9565
+1188412206 1497 c sys/src/cmd/gs/src/imainarg.c - 664 sys sys 1137452697 28643
+1188412206 1498 c sys/src/cmd/gs/src/imainarg.h - 664 sys sys 1137452697 1597
+1188412206 1499 c sys/src/cmd/gs/src/imemory.h - 664 sys sys 1137452697 3595
+1188412206 1500 c sys/src/cmd/gs/src/iminst.h - 664 sys sys 1137452697 3730
+1188412206 1501 c sys/src/cmd/gs/src/iname.c - 664 sys sys 1137452697 18273
+1188412206 1502 c sys/src/cmd/gs/src/iname.h - 664 sys sys 1137452697 3299
+1188412206 1503 c sys/src/cmd/gs/src/inamedef.h - 664 sys sys 1137452697 6350
+1188412206 1504 c sys/src/cmd/gs/src/inameidx.h - 664 sys sys 1137452697 3279
+1188412206 1505 c sys/src/cmd/gs/src/inames.h - 664 sys sys 1137452697 4077
+1188412206 1506 c sys/src/cmd/gs/src/inamestr.h - 664 sys sys 1137452697 3855
+1188412206 1507 c sys/src/cmd/gs/src/inobtokn.c - 664 sys sys 1137452697 1003
+1188412206 1508 c sys/src/cmd/gs/src/inouparm.c - 664 sys sys 1137452697 935
+1188412206 1509 c sys/src/cmd/gs/src/instcopy - 775 sys sys 1137452697 1024
+1188412206 1510 c sys/src/cmd/gs/src/int.mak - 664 sys sys 1137452697 83476
+1188412206 1511 c sys/src/cmd/gs/src/interp.c - 664 sys sys 1137452697 53665
+1188412206 1512 c sys/src/cmd/gs/src/interp.h - 664 sys sys 1137452697 3002
+1188412206 1513 c sys/src/cmd/gs/src/iosdata.h - 664 sys sys 1137452697 1278
+1188412206 1514 c sys/src/cmd/gs/src/iostack.h - 664 sys sys 1137452697 990
+1188412206 1515 c sys/src/cmd/gs/src/ipacked.h - 664 sys sys 1137452697 5610
+1188412206 1516 c sys/src/cmd/gs/src/iparam.c - 664 sys sys 1137452697 33624
+1188412206 1517 c sys/src/cmd/gs/src/iparam.h - 664 sys sys 1137452697 4326
+1188412206 1518 c sys/src/cmd/gs/src/iparray.h - 664 sys sys 1137452697 1304
+1188412206 1519 c sys/src/cmd/gs/src/ipcolor.h - 664 sys sys 1137452697 1428
+1188412206 1520 c sys/src/cmd/gs/src/iplugin.c - 664 sys sys 1137452697 3348
+1188412206 1521 c sys/src/cmd/gs/src/iplugin.h - 664 sys sys 1137452697 2690
+1188412206 1522 c sys/src/cmd/gs/src/ireclaim.c - 664 sys sys 1137452697 5490
+1188412206 1523 c sys/src/cmd/gs/src/iref.h - 664 sys sys 1137452697 20804
+1188412206 1524 c sys/src/cmd/gs/src/isave.c - 664 sys sys 1137452697 34386
+1188412206 1525 c sys/src/cmd/gs/src/isave.h - 664 sys sys 1137452697 4762
+1188412206 1526 c sys/src/cmd/gs/src/iscan.c - 664 sys sys 1137452697 30159
+1188412206 1527 c sys/src/cmd/gs/src/iscan.h - 664 sys sys 1137452697 6367
+1188412206 1528 c sys/src/cmd/gs/src/iscanbin.c - 664 sys sys 1137452697 24416
+1188412206 1529 c sys/src/cmd/gs/src/iscanbin.h - 664 sys sys 1137452697 1352
+1188412206 1530 c sys/src/cmd/gs/src/iscannum.c - 664 sys sys 1137452697 9762
+1188412206 1531 c sys/src/cmd/gs/src/iscannum.h - 664 sys sys 1137452697 1205
+1188412206 1532 c sys/src/cmd/gs/src/isdata.h - 664 sys sys 1137452697 4111
+1188412206 1533 c sys/src/cmd/gs/src/isstate.h - 664 sys sys 1137452697 1382
+1188412206 1534 c sys/src/cmd/gs/src/istack.c - 664 sys sys 1137452697 18496
+1188412206 1535 c sys/src/cmd/gs/src/istack.h - 664 sys sys 1137452697 6808
+1188412206 1536 c sys/src/cmd/gs/src/istkparm.h - 664 sys sys 1137452697 1665
+1188412206 1537 c sys/src/cmd/gs/src/istream.h - 664 sys sys 1137452697 1378
+1188412206 1538 c sys/src/cmd/gs/src/istruct.h - 664 sys sys 1137452697 3418
+1188412206 1539 c sys/src/cmd/gs/src/itoken.h - 664 sys sys 1137452697 1605
+1188412206 1540 c sys/src/cmd/gs/src/iutil.c - 664 sys sys 1137452697 24604
+1188412206 1541 c sys/src/cmd/gs/src/iutil.h - 664 sys sys 1137452697 6120
+1188412206 1542 c sys/src/cmd/gs/src/iutil2.c - 664 sys sys 1137452697 4391
+1188412206 1543 c sys/src/cmd/gs/src/iutil2.h - 664 sys sys 1137452697 1773
+1188412206 1544 c sys/src/cmd/gs/src/iutilasm.asm - 664 sys sys 1137452697 12294
+1188412206 1545 c sys/src/cmd/gs/src/ivmem2.h - 664 sys sys 1137452697 963
+1188412206 1546 c sys/src/cmd/gs/src/ivmspace.h - 664 sys sys 1137452697 4474
+1188412206 1547 c sys/src/cmd/gs/src/jasper.mak - 664 sys sys 1137452697 11617
+1188412206 1548 c sys/src/cmd/gs/src/jbig2.mak - 664 sys sys 1137452697 7293
+1188412206 1549 c sys/src/cmd/gs/src/jerror_.h - 664 sys sys 1137452697 903
+1188412206 1550 c sys/src/cmd/gs/src/jpeg.mak - 664 sys sys 1137452697 15307
+1188412206 1551 c sys/src/cmd/gs/src/lib.mak - 664 sys sys 1137452697 110130
+1188412206 1552 c sys/src/cmd/gs/src/libpng.mak - 664 sys sys 1137452697 5416
+1188412206 1553 c sys/src/cmd/gs/src/macgenmcpxml.sh - 664 sys sys 1137452697 14834
+1188412206 1554 c sys/src/cmd/gs/src/macos-fw.mak - 664 sys sys 1137452697 6116
+1188412206 1555 c sys/src/cmd/gs/src/macos-mcp.mak - 664 sys sys 1137452697 14267
+1188412206 1556 c sys/src/cmd/gs/src/macos_carbon_d_pre.h - 664 sys sys 1137452697 991
+1188412206 1557 c sys/src/cmd/gs/src/macos_carbon_pre.h - 664 sys sys 1137452697 919
+1188412206 1558 c sys/src/cmd/gs/src/macos_classic_d_pre.h - 664 sys sys 1137452697 975
+1188412206 1559 c sys/src/cmd/gs/src/macosx.mak - 664 sys sys 1137452697 14629
+1188412206 1560 c sys/src/cmd/gs/src/macsystypes.h - 775 sys sys 1137452697 1372
+1188412206 1561 c sys/src/cmd/gs/src/main.h - 664 sys sys 1137452697 3392
+1188412206 1562 c sys/src/cmd/gs/src/malloc_.h - 664 sys sys 1137452697 1903
+1188412206 1563 c sys/src/cmd/gs/src/math_.h - 664 sys sys 1137452697 2742
+1188412206 1564 c sys/src/cmd/gs/src/md5.c - 664 sys sys 1137452697 12434
+1188412206 1565 c sys/src/cmd/gs/src/md5.h - 664 sys sys 1137452697 3392
+1188412206 1566 c sys/src/cmd/gs/src/md5main.c - 664 sys sys 1137452697 4259
+1188412206 1567 c sys/src/cmd/gs/src/memory_.h - 664 sys sys 1137452697 3953
+1188412206 1568 c sys/src/cmd/gs/src/mkromfs.c - 664 sys sys 1137452697 5444
+1188412206 1569 c sys/src/cmd/gs/src/msvc32.mak - 664 sys sys 1137452697 23516
+1188412206 1570 c sys/src/cmd/gs/src/msvccmd.mak - 664 sys sys 1137452697 5247
+1188412206 1571 c sys/src/cmd/gs/src/msvclib.mak - 664 sys sys 1137452697 13279
+1188412206 1572 c sys/src/cmd/gs/src/msvctail.mak - 664 sys sys 1137452697 3101
+1188412206 1573 c sys/src/cmd/gs/src/mv.bat - 775 sys sys 1137452697 69
+1188412206 1574 c sys/src/cmd/gs/src/mv.cmd - 775 sys sys 1137452697 69
+1188412206 1575 c sys/src/cmd/gs/src/oparc.h - 664 sys sys 1137452697 1048
+1188412206 1576 c sys/src/cmd/gs/src/opcheck.h - 664 sys sys 1137452697 3021
+1188412206 1577 c sys/src/cmd/gs/src/opdef.h - 664 sys sys 1137452697 5399
+1188412206 1578 c sys/src/cmd/gs/src/openvms.mak - 664 sys sys 1137452697 16947
+1188412206 1579 c sys/src/cmd/gs/src/openvms.mmk - 664 sys sys 1137452697 17347
+1188412206 1580 c sys/src/cmd/gs/src/oper.h - 664 sys sys 1137452697 4321
+1188412206 1581 c sys/src/cmd/gs/src/opextern.h - 664 sys sys 1137452697 4423
+1188412206 1582 c sys/src/cmd/gs/src/os2.mak - 664 sys sys 1137452697 22812
+1188412206 1583 c sys/src/cmd/gs/src/ostack.h - 664 sys sys 1137452697 3216
+1188412206 1584 c sys/src/cmd/gs/src/pcwin.mak - 664 sys sys 1137452697 4005
+1188412206 1585 c sys/src/cmd/gs/src/pipe_.h - 664 sys sys 1137452697 1667
+1188412206 1586 c sys/src/cmd/gs/src/png_.h - 664 sys sys 1137452697 884
+1188412206 1587 c sys/src/cmd/gs/src/rm.bat - 775 sys sys 1137452697 162
+1188412206 1588 c sys/src/cmd/gs/src/rm.cmd - 775 sys sys 1137452697 150
+1188412206 1589 c sys/src/cmd/gs/src/rm_all.com - 664 sys sys 1137452697 603
+1188412206 1590 c sys/src/cmd/gs/src/rm_one.com - 664 sys sys 1137452697 273
+1188412206 1591 c sys/src/cmd/gs/src/sa85d.c - 664 sys sys 1137452697 4506
+1188412206 1592 c sys/src/cmd/gs/src/sa85d.h - 664 sys sys 1137452697 1468
+1188412206 1593 c sys/src/cmd/gs/src/sa85x.h - 664 sys sys 1137452697 1434
+1188412206 1594 c sys/src/cmd/gs/src/sarc4.c - 664 sys sys 1137452697 3596
+1188412206 1595 c sys/src/cmd/gs/src/sarc4.h - 664 sys sys 1137452697 1945
+1188412206 1596 c sys/src/cmd/gs/src/sbcp.c - 664 sys sys 1137452697 5469
+1188412206 1597 c sys/src/cmd/gs/src/sbcp.h - 664 sys sys 1137452697 1615
+1188412206 1598 c sys/src/cmd/gs/src/sbhc.c - 664 sys sys 1137452697 7616
+1188412206 1599 c sys/src/cmd/gs/src/sbhc.h - 664 sys sys 1137452697 2934
+1188412206 1600 c sys/src/cmd/gs/src/sbtx.h - 664 sys sys 1137452697 1361
+1188412206 1601 c sys/src/cmd/gs/src/sbwbs.c - 664 sys sys 1137452697 13997
+1188412206 1602 c sys/src/cmd/gs/src/sbwbs.h - 664 sys sys 1137452697 2796
+1188412206 1603 c sys/src/cmd/gs/src/scanchar.h - 664 sys sys 1137452697 2565
+1188412206 1604 c sys/src/cmd/gs/src/scantab.c - 664 sys sys 1137452697 4339
+1188412206 1605 c sys/src/cmd/gs/src/scf.h - 664 sys sys 1137452697 7015
+1188412206 1606 c sys/src/cmd/gs/src/scfd.c - 664 sys sys 1137452697 24056
+1188412206 1607 c sys/src/cmd/gs/src/scfdgen.c - 664 sys sys 1137452697 8103
+1188412206 1608 c sys/src/cmd/gs/src/scfdtab.c - 664 sys sys 1137452697 11427
+1188412206 1609 c sys/src/cmd/gs/src/scfe.c - 664 sys sys 1137452697 15011
+1188412206 1610 c sys/src/cmd/gs/src/scfetab.c - 664 sys sys 1137452697 5940
+1188412206 1611 c sys/src/cmd/gs/src/scfparam.c - 664 sys sys 1137452697 3189
+1188412206 1612 c sys/src/cmd/gs/src/scfx.h - 664 sys sys 1137452697 4676
+1188412206 1613 c sys/src/cmd/gs/src/scommon.h - 664 sys sys 1137452697 6459
+1188412206 1614 c sys/src/cmd/gs/src/sdcparam.c - 664 sys sys 1137452697 17747
+1188412206 1615 c sys/src/cmd/gs/src/shc.c - 664 sys sys 1137452697 1791
+1188412206 1616 c sys/src/cmd/gs/src/sdcparam.h - 664 sys sys 1137452697 1856
+1188412206 1617 c sys/src/cmd/gs/src/sdct.h - 664 sys sys 1137452697 5439
+1188412206 1618 c sys/src/cmd/gs/src/sdctc.c - 664 sys sys 1137452697 1437
+1188412206 1619 c sys/src/cmd/gs/src/sdctd.c - 664 sys sys 1137452697 8872
+1188412206 1620 c sys/src/cmd/gs/src/sdcte.c - 664 sys sys 1137452697 6707
+1188412206 1621 c sys/src/cmd/gs/src/sddparam.c - 664 sys sys 1137452697 2127
+1188412206 1622 c sys/src/cmd/gs/src/sdeparam.c - 664 sys sys 1137452697 9837
+1188412206 1623 c sys/src/cmd/gs/src/seexec.c - 664 sys sys 1137452697 6187
+1188412206 1624 c sys/src/cmd/gs/src/sfilter.h - 664 sys sys 1137452697 4272
+1188412206 1625 c sys/src/cmd/gs/src/sfilter1.c - 664 sys sys 1137452697 7183
+1188412206 1626 c sys/src/cmd/gs/src/sfilter2.c - 664 sys sys 1137452697 6810
+1188412206 1627 c sys/src/cmd/gs/src/sfxboth.c - 664 sys sys 1137452697 879
+1188412206 1628 c sys/src/cmd/gs/src/sfxfd.c - 664 sys sys 1137452697 10801
+1188412206 1629 c sys/src/cmd/gs/src/sfxstdio.c - 664 sys sys 1137452697 8235
+1188412206 1630 c sys/src/cmd/gs/src/shc.h - 664 sys sys 1137452697 8062
+1188412206 1631 c sys/src/cmd/gs/src/shcgen.c - 664 sys sys 1137452697 14584
+1188412206 1632 c sys/src/cmd/gs/src/shcgen.h - 664 sys sys 1137452697 2197
+1188412206 1633 c sys/src/cmd/gs/src/siinterp.c - 664 sys sys 1137452697 8200
+1188412206 1634 c sys/src/cmd/gs/src/siinterp.h - 664 sys sys 1137452697 959
+1188412206 1635 c sys/src/cmd/gs/src/siscale.c - 664 sys sys 1137452697 19019
+1188412206 1636 c sys/src/cmd/gs/src/siscale.h - 664 sys sys 1137452697 968
+1188412206 1637 c sys/src/cmd/gs/src/sisparam.h - 664 sys sys 1137452697 2721
+1188412206 1638 c sys/src/cmd/gs/src/sjbig2.c - 664 sys sys 1137452697 8350
+1188412206 1639 c sys/src/cmd/gs/src/sjbig2.h - 664 sys sys 1137452697 1751
+1188412206 1640 c sys/src/cmd/gs/src/sjpeg.h - 664 sys sys 1137452697 2599
+1188412206 1641 c sys/src/cmd/gs/src/sjpegc.c - 664 sys sys 1137452697 7440
+1188412206 1642 c sys/src/cmd/gs/src/sjpegd.c - 664 sys sys 1137452697 2625
+1188412206 1643 c sys/src/cmd/gs/src/sjpege.c - 664 sys sys 1137452697 3259
+1188412206 1644 c sys/src/cmd/gs/src/sjpx.c - 664 sys sys 1137452697 13298
+1188412206 1645 c sys/src/cmd/gs/src/sjpx.h - 664 sys sys 1137452697 2072
+1188412206 1646 c sys/src/cmd/gs/src/slzwc.c - 664 sys sys 1137452697 1263
+1188412206 1647 c sys/src/cmd/gs/src/slzwd.c - 664 sys sys 1137452697 11606
+1188412206 1648 c sys/src/cmd/gs/src/slzwe.c - 664 sys sys 1137452697 6124
+1188412206 1649 c sys/src/cmd/gs/src/slzwx.h - 664 sys sys 1137452697 2888
+1188412206 1650 c sys/src/cmd/gs/src/smd5.c - 664 sys sys 1137452697 2229
+1188412206 1651 c sys/src/cmd/gs/src/smd5.h - 664 sys sys 1137452697 1409
+1188412206 1652 c sys/src/cmd/gs/src/smtf.c - 664 sys sys 1137452697 4259
+1188412206 1653 c sys/src/cmd/gs/src/smtf.h - 664 sys sys 1137452697 1457
+1188412206 1654 c sys/src/cmd/gs/src/spdiff.c - 664 sys sys 1137452697 14890
+1188412206 1655 c sys/src/cmd/gs/src/spdiffx.h - 664 sys sys 1137452697 2130
+1188412206 1656 c sys/src/cmd/gs/src/spngp.c - 664 sys sys 1137452697 11139
+1188412206 1657 c sys/src/cmd/gs/src/spngpx.h - 664 sys sys 1137452697 2196
+1188412206 1658 c sys/src/cmd/gs/src/spprint.c - 664 sys sys 1137452697 5314
+1188412206 1659 c sys/src/cmd/gs/src/spprint.h - 664 sys sys 1137452697 3193
+1188412206 1660 c sys/src/cmd/gs/src/spsdf.c - 664 sys sys 1137452697 7176
+1188412206 1661 c sys/src/cmd/gs/src/spsdf.h - 664 sys sys 1137452697 3062
+1188412206 1662 c sys/src/cmd/gs/src/srdline.h - 664 sys sys 1137452697 1916
+1188412206 1663 c sys/src/cmd/gs/src/srld.c - 664 sys sys 1137452697 2899
+1188412206 1664 c sys/src/cmd/gs/src/srle.c - 664 sys sys 1137452697 4715
+1188412206 1665 c sys/src/cmd/gs/src/srlx.h - 664 sys sys 1137452697 2643
+1188412206 1666 c sys/src/cmd/gs/src/sstring.c - 664 sys sys 1137452697 10195
+1188412206 1667 c sys/src/cmd/gs/src/sstring.h - 664 sys sys 1137452697 2621
+1188412206 1668 c sys/src/cmd/gs/src/stat_.h - 664 sys sys 1137452697 2879
+1188412206 1669 c sys/src/cmd/gs/src/std.h - 664 sys sys 1137452697 13420
+1188412206 1670 c sys/src/cmd/gs/src/stdint_.h - 664 sys sys 1137452697 3792
+1188412206 1671 c sys/src/cmd/gs/src/stdio_.h - 664 sys sys 1137452697 2086
+1188412206 1672 c sys/src/cmd/gs/src/stdpn.h - 664 sys sys 1137452697 2331
+1188412206 1673 c sys/src/cmd/gs/src/stdpre.h - 664 sys sys 1137452697 14972
+1188412206 1674 c sys/src/cmd/gs/src/store.h - 664 sys sys 1137452697 10482
+1188412206 1675 c sys/src/cmd/gs/src/stream.c - 664 sys sys 1137452697 31913
+1188412206 1676 c sys/src/cmd/gs/src/stream.h - 664 sys sys 1137452697 14820
+1188412206 1677 c sys/src/cmd/gs/src/strimpl.h - 664 sys sys 1137452697 7445
+1188412206 1678 c sys/src/cmd/gs/src/string_.h - 664 sys sys 1137452697 1385
+1188412206 1679 c sys/src/cmd/gs/src/szlibc.c - 664 sys sys 1137452697 3667
+1188412206 1680 c sys/src/cmd/gs/src/szlibd.c - 664 sys sys 1137452697 3380
+1188412206 1681 c sys/src/cmd/gs/src/szlibe.c - 664 sys sys 1137452697 2955
+1188412206 1682 c sys/src/cmd/gs/src/szlibx.h - 664 sys sys 1137452697 1914
+1188412206 1683 c sys/src/cmd/gs/src/szlibxx.h - 664 sys sys 1137452697 2394
+1188412206 1684 c sys/src/cmd/gs/src/time_.h - 664 sys sys 1137452697 2924
+1188412206 1685 c sys/src/cmd/gs/src/ttcalc.c - 664 sys sys 1137452697 7218
+1188412206 1686 c sys/src/cmd/gs/src/ttcalc.h - 664 sys sys 1137452697 5050
+1188412206 1687 c sys/src/cmd/gs/src/ttcommon.h - 664 sys sys 1137452697 6990
+1188412206 1688 c sys/src/cmd/gs/src/ttconf.h - 664 sys sys 1137452697 2274
+1188412206 1689 c sys/src/cmd/gs/src/ttconfig.h - 664 sys sys 1137452697 8739
+1188412206 1690 c sys/src/cmd/gs/src/ttfinp.c - 664 sys sys 1137452697 1643
+1188412206 1691 c sys/src/cmd/gs/src/ttfinp.h - 664 sys sys 1137452697 1086
+1188412206 1692 c sys/src/cmd/gs/src/ttfmain.c - 664 sys sys 1143747725 31780
+1188412206 1693 c sys/src/cmd/gs/src/ttfmemd.c - 664 sys sys 1137452697 5739
+1188412206 1694 c sys/src/cmd/gs/src/ttfmemd.h - 664 sys sys 1137452697 1049
+1188412206 1695 c sys/src/cmd/gs/src/ttfoutl.h - 664 sys sys 1137452697 6013
+1188412206 1696 c sys/src/cmd/gs/src/ttfsfnt.h - 664 sys sys 1137452697 10381
+1188412206 1697 c sys/src/cmd/gs/src/ttinterp.c - 664 sys sys 1137452697 136774
+1188412206 1698 c sys/src/cmd/gs/src/ttinterp.h - 664 sys sys 1137452697 2098
+1188412206 1699 c sys/src/cmd/gs/src/ttload.c - 664 sys sys 1137452697 6708
+1188412206 1700 c sys/src/cmd/gs/src/ttload.h - 664 sys sys 1137452697 7132
+1188412206 1701 c sys/src/cmd/gs/src/ttmisc.h - 664 sys sys 1137452697 944
+1188412206 1702 c sys/src/cmd/gs/src/ttobjs.c - 664 sys sys 1137452697 26898
+1188412206 1703 c sys/src/cmd/gs/src/ttobjs.h - 664 sys sys 1139614359 34747
+1188412206 1704 c sys/src/cmd/gs/src/tttables.h - 664 sys sys 1137452697 5587
+1188412206 1705 c sys/src/cmd/gs/src/tttype.h - 664 sys sys 1137452697 45065
+1188412206 1706 c sys/src/cmd/gs/src/tttypes.h - 664 sys sys 1143747751 4626
+1188412206 1707 c sys/src/cmd/gs/src/turboc.cfg - 664 sys sys 1137452697 171
+1188412206 1708 c sys/src/cmd/gs/src/ugcclib.mak - 664 sys sys 1137452697 4703
+1188412206 1709 c sys/src/cmd/gs/src/unistd_.h - 664 sys sys 1137452697 1836
+1188412206 1710 c sys/src/cmd/gs/src/unix-aux.mak - 664 sys sys 1137452697 4654
+1188412206 1711 c sys/src/cmd/gs/src/unix-dll.mak - 664 sys sys 1137452697 4743
+1188412206 1712 c sys/src/cmd/gs/src/unix-end.mak - 664 sys sys 1137452697 3506
+1188412206 1713 c sys/src/cmd/gs/src/unix-gcc.mak - 664 sys sys 1137452697 16505
+1188412206 1714 c sys/src/cmd/gs/src/unixansi.mak - 664 sys sys 1137452697 14168
+1188412206 1715 c sys/src/cmd/gs/src/unixhead.mak - 664 sys sys 1137452697 2018
+1188412206 1716 c sys/src/cmd/gs/src/unixinst.mak - 664 sys sys 1137452697 6527
+1188412206 1717 c sys/src/cmd/gs/src/unixlink.mak - 664 sys sys 1137452697 2871
+1188412206 1718 c sys/src/cmd/gs/src/vdtrace.c - 664 sys sys 1137452697 6815
+1188412206 1719 c sys/src/cmd/gs/src/vdtrace.h - 664 sys sys 1137452697 10453
+1188412206 1720 c sys/src/cmd/gs/src/version.mak - 664 sys sys 1137452697 1173
+1188412206 1721 c sys/src/cmd/gs/src/vms_x_fix.h - 664 sys sys 1137452697 38651
+1188412206 1722 c sys/src/cmd/gs/src/vmsmath.h - 664 sys sys 1137452697 1454
+1188412206 1723 c sys/src/cmd/gs/src/watclib.mak - 664 sys sys 1137452697 4212
+1188412206 1724 c sys/src/cmd/gs/src/watcw32.mak - 664 sys sys 1137452697 16652
+1188412206 1725 c sys/src/cmd/gs/src/wccommon.mak - 664 sys sys 1137452697 4602
+1188412206 1726 c sys/src/cmd/gs/src/wctail.mak - 664 sys sys 1137452697 3450
+1188412206 1727 c sys/src/cmd/gs/src/windows_.h - 664 sys sys 1137452697 1722
+1188412206 1728 c sys/src/cmd/gs/src/winint.mak - 775 sys sys 1137452697 11936
+1188412206 1729 c sys/src/cmd/gs/src/winlib.mak - 664 sys sys 1137452697 6367
+1188412206 1730 c sys/src/cmd/gs/src/winplat.mak - 664 sys sys 1137452697 1989
+1188412206 1731 c sys/src/cmd/gs/src/wmin.mak - 664 sys sys 1137452697 2823
+1188412206 1732 c sys/src/cmd/gs/src/wrfont.c - 664 sys sys 1137452697 2148
+1188412206 1733 c sys/src/cmd/gs/src/wrfont.h - 664 sys sys 1137452697 1504
+1188412206 1734 c sys/src/cmd/gs/src/write_t1.c - 664 sys sys 1137452697 7101
+1188412206 1735 c sys/src/cmd/gs/src/write_t1.h - 664 sys sys 1137452697 1082
+1188412206 1736 c sys/src/cmd/gs/src/write_t2.c - 664 sys sys 1137452697 12512
+1188412206 1737 c sys/src/cmd/gs/src/write_t2.h - 664 sys sys 1137452697 1076
+1188412206 1738 c sys/src/cmd/gs/src/x_.h - 664 sys sys 1137452697 6137
+1188412206 1739 c sys/src/cmd/gs/src/zarith.c - 664 sys sys 1137452697 8869
+1188412206 1740 c sys/src/cmd/gs/src/zarray.c - 664 sys sys 1137452697 3249
+1188412206 1741 c sys/src/cmd/gs/src/zbfont.c - 664 sys sys 1137452697 24923
+1188412206 1742 c sys/src/cmd/gs/src/zbseq.c - 664 sys sys 1137452697 4237
+1188412206 1743 c sys/src/cmd/gs/src/zcfont.c - 664 sys sys 1137452697 5151
+1188412206 1744 c sys/src/cmd/gs/src/zchar.c - 664 sys sys 1137452697 24426
+1188412206 1745 c sys/src/cmd/gs/src/zchar1.c - 664 sys sys 1137452697 36915
+1188412206 1746 c sys/src/cmd/gs/src/zchar2.c - 664 sys sys 1137452697 1253
+1188412206 1747 c sys/src/cmd/gs/src/zchar32.c - 664 sys sys 1137452697 5638
+1188412206 1748 c sys/src/cmd/gs/src/zchar42.c - 664 sys sys 1137452697 6662
+1188412206 1749 c sys/src/cmd/gs/src/zchar42.h - 664 sys sys 1137452697 1058
+1188412206 1750 c sys/src/cmd/gs/src/zcharout.c - 664 sys sys 1137452697 10903
+1188412206 1751 c sys/src/cmd/gs/src/zcharx.c - 664 sys sys 1137452697 4357
+1188412206 1752 c sys/src/cmd/gs/src/zcid.c - 664 sys sys 1137452697 6761
+1188412206 1753 c sys/src/cmd/gs/src/zcidtest.c - 664 sys sys 1137452697 3686
+1188412206 1754 c sys/src/cmd/gs/src/zcie.c - 664 sys sys 1137452697 21554
+1188412206 1755 c sys/src/cmd/gs/src/zcolor.c - 664 sys sys 1137452697 20290
+1188412206 1756 c sys/src/cmd/gs/src/zcolor1.c - 664 sys sys 1137452697 4820
+1188412206 1757 c sys/src/cmd/gs/src/zcolor2.c - 664 sys sys 1137452697 1606
+1188412206 1758 c sys/src/cmd/gs/src/zcolor3.c - 664 sys sys 1137452697 1750
+1188412206 1759 c sys/src/cmd/gs/src/zcontext.c - 664 sys sys 1137452697 37678
+1188412206 1760 c sys/src/cmd/gs/src/zcontrol.c - 664 sys sys 1137452697 26631
+1188412206 1761 c sys/src/cmd/gs/src/zcrd.c - 664 sys sys 1137452697 15370
+1188412206 1762 c sys/src/cmd/gs/src/zcsdevn.c - 664 sys sys 1137452697 4670
+1188412206 1763 c sys/src/cmd/gs/src/zcsindex.c - 664 sys sys 1137452697 6755
+1188412206 1764 c sys/src/cmd/gs/src/zcspixel.c - 664 sys sys 1137452697 1649
+1188412206 1765 c sys/src/cmd/gs/src/zcssepr.c - 664 sys sys 1137452697 5925
+1188412206 1766 c sys/src/cmd/gs/src/zdevcal.c - 664 sys sys 1137452697 2433
+1188412206 1767 c sys/src/cmd/gs/src/zdevice.c - 664 sys sys 1137452697 12818
+1188412206 1768 c sys/src/cmd/gs/src/zdevice2.c - 664 sys sys 1137452697 9894
+1188412206 1769 c sys/src/cmd/gs/src/zdfilter.c - 664 sys sys 1137452697 1515
+1188412206 1770 c sys/src/cmd/gs/src/zdict.c - 664 sys sys 1137452697 11414
+1188412206 1771 c sys/src/cmd/gs/src/gconfig.c - 664 sys sys 1137453534 5494
+1188412206 1772 c sys/src/cmd/gs/src/gconfig.h - 664 sys sys 1137453534 6915
+1188412206 1773 c sys/src/cmd/gs/src/gconfig_.h - 664 sys sys 1137453534 132
+1188412206 1774 c sys/src/cmd/gs/src/gconfigd.h - 664 sys sys 1137453534 275
+1188412206 1775 c sys/src/cmd/gs/src/gconfigv.h - 664 sys sys 1137453534 106
+1188412206 1776 c sys/src/cmd/gs/src/gconfxx.h - 664 sys sys 1137453534 6915
+1188412206 1777 c sys/src/cmd/gs/src/gdevcd8.c - 664 sys sys 1137452703 92322
+1188412206 1778 c sys/src/cmd/gs/src/gdevplan9.c - 664 sys sys 1137452703 16262
+1188412206 1779 c sys/src/cmd/gs/src/gscdefs.c - 664 sys sys 1137453534 2600
+1188412206 1780 c sys/src/cmd/gs/src/iconfig.c - 664 sys sys 1137453534 2969
+1188412206 1781 c sys/src/cmd/gs/src/jconfig.h - 664 sys sys 1137453534 19233
+1188412206 1782 c sys/src/cmd/gs/src/jconfig0.h - 664 sys sys 1137453534 19233
+1188412206 1783 c sys/src/cmd/gs/src/jinclude.h - 664 sys sys 1137453534 3250
+1188412206 1784 c sys/src/cmd/gs/src/jmcorig.h - 664 sys sys 1137453534 12458
+1188412206 1785 c sys/src/cmd/gs/src/jmorecf0.h - 664 sys sys 1137453534 1647
+1188412206 1786 c sys/src/cmd/gs/src/jmorecfg.h - 664 sys sys 1137453534 1647
+1188412206 1787 c sys/src/cmd/gs/src/jpeglib.h - 664 sys sys 1137453534 46205
+1188412206 1788 c sys/src/cmd/gs/src/jpeglib0.h - 664 sys sys 1137453534 46205
+1188412206 1789 c sys/src/cmd/gs/src/jpeglib_.h - 664 sys sys 1137453534 46205
+1188412206 1790 c sys/src/cmd/gs/src/ld.tr - 664 sys sys 1137453534 8608
+1188412206 1791 c sys/src/cmd/gs/src/plan9-aux.mak - 664 sys sys 1137453437 4658
+1188412206 1792 c sys/src/cmd/gs/src/plan9.mak - 664 sys sys 1137453437 14631
+1188412206 1793 c sys/src/cmd/gs/src/zdosio.c - 664 sys sys 1137452697 2478
+1188412206 1794 c sys/src/cmd/gs/src/zdouble.c - 664 sys sys 1137452697 12419
+1188412206 1795 c sys/src/cmd/gs/src/zdpnext.c - 664 sys sys 1137452697 13204
+1188412206 1796 c sys/src/cmd/gs/src/zdps.c - 664 sys sys 1137452697 7109
+1188412206 1797 c sys/src/cmd/gs/src/zdps1.c - 664 sys sys 1137452697 11811
+1188412206 1798 c sys/src/cmd/gs/src/zdscpars.c - 664 sys sys 1137452698 16086
+1188412206 1799 c sys/src/cmd/gs/src/zfapi.c - 664 sys sys 1137452698 68987
+1188412206 1800 c sys/src/cmd/gs/src/zfarc4.c - 664 sys sys 1137452698 3167
+1188412206 1801 c sys/src/cmd/gs/src/zfbcp.c - 664 sys sys 1137452698 2441
+1188412206 1802 c sys/src/cmd/gs/src/zfcid.c - 664 sys sys 1137452698 2390
+1188412206 1803 c sys/src/cmd/gs/src/zfcid0.c - 664 sys sys 1137452698 17235
+1188412206 1804 c sys/src/cmd/gs/src/zfcid1.c - 664 sys sys 1137452698 12541
+1188412206 1805 c sys/src/cmd/gs/src/zfcmap.c - 664 sys sys 1137452698 14672
+1188412206 1806 c sys/src/cmd/gs/src/zfdctd.c - 664 sys sys 1137452698 3268
+1188412206 1807 c sys/src/cmd/gs/src/zfdcte.c - 664 sys sys 1137452698 4441
+1188412206 1808 c sys/src/cmd/gs/src/zfdecode.c - 664 sys sys 1137452698 9304
+1188412206 1809 c sys/src/cmd/gs/src/zfile.c - 664 sys sys 1137452698 41071
+1188412206 1810 c sys/src/cmd/gs/src/zfile1.c - 664 sys sys 1137452698 3783
+1188412206 1811 c sys/src/cmd/gs/src/zfileio.c - 664 sys sys 1137452698 24833
+1188412206 1812 c sys/src/cmd/gs/src/zfilter.c - 664 sys sys 1137452698 12661
+1188412206 1813 c sys/src/cmd/gs/src/zfilter2.c - 664 sys sys 1137452698 3961
+1188412206 1814 c sys/src/cmd/gs/src/zfilterx.c - 664 sys sys 1137452698 9040
+1188412206 1815 c sys/src/cmd/gs/src/zfjbig2.c - 664 sys sys 1137452698 4789
+1188412206 1816 c sys/src/cmd/gs/src/zfjpx.c - 664 sys sys 1137452698 2226
+1188412206 1817 c sys/src/cmd/gs/src/zfmd5.c - 664 sys sys 1137452698 1273
+1188412206 1818 c sys/src/cmd/gs/src/zfont.c - 664 sys sys 1137452698 17074
+1188412206 1819 c sys/src/cmd/gs/src/zfont0.c - 664 sys sys 1137452698 10205
+1188412206 1820 c sys/src/cmd/gs/src/zfont1.c - 664 sys sys 1137452698 11988
+1188412206 1821 c sys/src/cmd/gs/src/zfont2.c - 664 sys sys 1137452698 3429
+1188412206 1822 c sys/src/cmd/gs/src/zfont32.c - 664 sys sys 1137452698 2232
+1188412206 1823 c sys/src/cmd/gs/src/zfont42.c - 664 sys sys 1137452698 11043
+1188412206 1824 c sys/src/cmd/gs/src/zfontenum.c - 664 sys sys 1137452698 4067
+1188412206 1825 c sys/src/cmd/gs/src/zfproc.c - 664 sys sys 1137452698 11502
+1188412206 1826 c sys/src/cmd/gs/src/zfrsd.c - 664 sys sys 1137452698 7952
+1188412206 1827 c sys/src/cmd/gs/src/zfsample.c - 664 sys sys 1137452698 18658
+1188412206 1828 c sys/src/cmd/gs/src/zfunc.c - 664 sys sys 1137452698 10140
+1188412206 1829 c sys/src/cmd/gs/src/zfunc0.c - 664 sys sys 1137452698 3097
+1188412206 1830 c sys/src/cmd/gs/src/zfunc3.c - 664 sys sys 1137452698 3683
+1188412206 1831 c sys/src/cmd/gs/src/zfunc4.c - 664 sys sys 1137452698 8546
+1188412206 1832 c sys/src/cmd/gs/src/zfzlib.c - 664 sys sys 1137452698 2820
+1188412206 1833 c sys/src/cmd/gs/src/zgeneric.c - 664 sys sys 1137452698 15428
+1188412206 1834 c sys/src/cmd/gs/src/zgstate.c - 664 sys sys 1137452698 13544
+1188412206 1835 c sys/src/cmd/gs/src/zhsb.c - 664 sys sys 1137452698 1621
+1188412206 1836 c sys/src/cmd/gs/src/zht.c - 664 sys sys 1137452698 7624
+1188412206 1837 c sys/src/cmd/gs/src/zht1.c - 664 sys sys 1137452698 4446
+1188412206 1838 c sys/src/cmd/gs/src/zht2.c - 664 sys sys 1137452698 15846
+1188412206 1839 c sys/src/cmd/gs/src/zht2.h - 664 sys sys 1137452698 1173
+1188412206 1840 c sys/src/cmd/gs/src/zicc.c - 664 sys sys 1137452698 6078
+1188412206 1841 c sys/src/cmd/gs/src/zimage.c - 664 sys sys 1137452698 17160
+1188412206 1842 c sys/src/cmd/gs/src/zimage2.c - 664 sys sys 1137452698 1445
+1188412206 1843 c sys/src/cmd/gs/src/zimage3.c - 664 sys sys 1137452698 4245
+1188412206 1844 c sys/src/cmd/gs/src/ziodev.c - 664 sys sys 1137452698 8795
+1188412206 1845 c sys/src/cmd/gs/src/ziodev2.c - 664 sys sys 1137452698 3731
+1188412206 1846 c sys/src/cmd/gs/src/ziodevs.c - 664 sys sys 1137452698 7493
+1188412206 1847 c sys/src/cmd/gs/src/ziodevsc.c - 664 sys sys 1137452698 8418
+1188412206 1848 c sys/src/cmd/gs/src/ziodevst.c - 664 sys sys 1137452698 4915
+1188412206 1849 c sys/src/cmd/gs/src/zlib.mak - 664 sys sys 1137452698 6018
+1188412206 1850 c sys/src/cmd/gs/src/zmath.c - 664 sys sys 1137452698 6086
+1188412206 1851 c sys/src/cmd/gs/src/zmatrix.c - 664 sys sys 1137452698 8275
+1188412206 1852 c sys/src/cmd/gs/src/zmedia2.c - 664 sys sys 1137452698 16199
+1188412206 1853 c sys/src/cmd/gs/src/zmisc.c - 664 sys sys 1137452698 10683
+1188412206 1854 c sys/src/cmd/gs/src/zmisc1.c - 664 sys sys 1137452698 5013
+1188412206 1855 c sys/src/cmd/gs/src/zmisc2.c - 664 sys sys 1137452698 7910
+1188412206 1856 c sys/src/cmd/gs/src/zmisc3.c - 664 sys sys 1137452698 3285
+1188412206 1857 c sys/src/cmd/gs/src/zpacked.c - 664 sys sys 1137452698 6755
+1188412206 1858 c sys/src/cmd/gs/src/zpaint.c - 664 sys sys 1137452698 1995
+1188412206 1859 c sys/src/cmd/gs/src/zpath.c - 664 sys sys 1137452698 3692
+1188412206 1860 c sys/src/cmd/gs/src/zpath1.c - 664 sys sys 1137452698 6597
+1188412206 1861 c sys/src/cmd/gs/src/zpcolor.c - 664 sys sys 1137452698 9873
+1188412206 1862 c sys/src/cmd/gs/src/zrelbit.c - 664 sys sys 1137452698 7341
+1188412206 1863 c sys/src/cmd/gs/src/zrop.c - 664 sys sys 1137452698 2699
+1188412206 1864 c sys/src/cmd/gs/src/zshade.c - 664 sys sys 1137452698 19033
+1188412206 1865 c sys/src/cmd/gs/src/zstack.c - 664 sys sys 1137452698 6770
+1188412206 1866 c sys/src/cmd/gs/src/zstring.c - 664 sys sys 1137452698 5089
+1188412206 1867 c sys/src/cmd/gs/src/zsysvm.c - 664 sys sys 1137452698 4187
+1188412206 1868 c sys/src/cmd/gs/src/ztoken.c - 664 sys sys 1137452698 10266
+1188412206 1869 c sys/src/cmd/gs/src/ztrans.c - 664 sys sys 1137452698 12822
+1188412206 1870 c sys/src/cmd/gs/src/ztrap.c - 664 sys sys 1137452698 1753
+1188412206 1871 c sys/src/cmd/gs/src/ztype.c - 664 sys sys 1137452698 12202
+1188412206 1872 c sys/src/cmd/gs/src/zupath.c - 664 sys sys 1137452698 16732
+1188412206 1873 c sys/src/cmd/gs/src/zusparam.c - 664 sys sys 1137452698 17728
+1188412206 1874 c sys/src/cmd/gs/src/zvmem.c - 664 sys sys 1137452698 11367
+1188412206 1875 c sys/src/cmd/gs/src/zvmem2.c - 664 sys sys 1137452698 3749
+1188412206 1876 c sys/src/cmd/gs/zlib/ChangeLog - 664 sys sys 1137452698 37959
+1188412206 1877 c sys/src/cmd/gs/zlib/FAQ - 664 sys sys 1137452698 15050
+1188412206 1878 c sys/src/cmd/gs/zlib/INDEX - 664 sys sys 1137452698 1318
+1188412206 1879 c sys/src/cmd/gs/zlib/Makefile - 664 sys sys 1137452698 4133
+1188412206 1880 c sys/src/cmd/gs/zlib/Makefile.in - 664 sys sys 1137452698 4133
+1188412206 1881 c sys/src/cmd/gs/zlib/README - 664 sys sys 1137452698 5710
+1188412206 1882 c sys/src/cmd/gs/zlib/adler32.c - 664 sys sys 1137452698 2289
+1188412206 1883 c sys/src/cmd/gs/zlib/algorithm.txt - 664 sys sys 1137452698 9336
+1188412206 1884 c sys/src/cmd/gs/zlib/compress.c - 664 sys sys 1137452698 2542
+1188412206 1885 c sys/src/cmd/gs/zlib/configure - 775 sys sys 1137452698 12604
+1188412206 1886 m sys/src/cmd/gs/zlib/configure - 775 sys sys 1137452698 12604
+1188412206 1887 c sys/src/cmd/gs/zlib/crc32.c - 664 sys sys 1137452698 10729
+1188412206 1888 c sys/src/cmd/gs/zlib/crc32.h - 664 sys sys 1137452698 30568
+1188412206 1889 c sys/src/cmd/gs/zlib/deflate.c - 664 sys sys 1137452698 55016
+1188412206 1890 c sys/src/cmd/gs/zlib/deflate.h - 664 sys sys 1137452698 11938
+1188412206 1891 c sys/src/cmd/gs/zlib/example.c - 664 sys sys 1137452698 16488
+1188412206 1892 c sys/src/cmd/gs/zlib/gzio.c - 664 sys sys 1137452698 30744
+1188412206 1893 c sys/src/cmd/gs/zlib/infback.c - 664 sys sys 1137452698 22129
+1188412206 1894 c sys/src/cmd/gs/zlib/inffast.c - 664 sys sys 1137452698 12193
+1188412206 1895 c sys/src/cmd/gs/zlib/inffast.h - 664 sys sys 1137452698 407
+1188412206 1896 c sys/src/cmd/gs/zlib/inffixed.h - 664 sys sys 1137452698 6343
+1188412206 1897 c sys/src/cmd/gs/zlib/inflate.c - 664 sys sys 1137452698 45521
+1188412206 1898 c sys/src/cmd/gs/zlib/inflate.h - 664 sys sys 1137452698 5802
+1188412206 1899 c sys/src/cmd/gs/zlib/inftrees.c - 664 sys sys 1137452698 13671
+1188412206 1900 c sys/src/cmd/gs/zlib/inftrees.h - 664 sys sys 1137452698 2373
+1188412206 1901 c sys/src/cmd/gs/zlib/minigzip.c - 664 sys sys 1137452698 8058
+1188412206 1902 c sys/src/cmd/gs/zlib/trees.c - 664 sys sys 1137452698 44095
+1188412206 1903 c sys/src/cmd/gs/zlib/trees.h - 664 sys sys 1137452698 8444
+1188412206 1904 c sys/src/cmd/gs/zlib/uncompr.c - 664 sys sys 1137452698 2139
+1188412206 1905 c sys/src/cmd/gs/zlib/zconf.h - 664 sys sys 1137452698 9391
+1188412206 1906 c sys/src/cmd/gs/zlib/zconf.in.h - 664 sys sys 1137452698 9394
+1188412206 1907 c sys/src/cmd/gs/zlib/zlib.3 - 664 sys sys 1137452698 4488
+1188412206 1908 c sys/src/cmd/gs/zlib/zlib.h - 664 sys sys 1137452698 57769
+1188412206 1909 c sys/src/cmd/gs/zlib/zutil.c - 664 sys sys 1137452698 7057
+1188412206 1910 c sys/src/cmd/gs/zlib/zutil.h - 664 sys sys 1137452698 6612
+1188412206 1911 d sys/src/cmd/gs/zlib/zlib.rc - 664 sys sys 1015035349 0
+1188412206 1912 d sys/src/cmd/gs/zlib/zlib.def - 664 sys sys 1015035349 0
+1188412206 1913 d sys/src/cmd/gs/zlib/infutil.h - 664 sys sys 1015035350 0
+1188412206 1914 d sys/src/cmd/gs/zlib/infutil.c - 664 sys sys 1015035350 0
+1188412206 1915 d sys/src/cmd/gs/zlib/infcodes.h - 664 sys sys 1015035349 0
+1188412206 1916 d sys/src/cmd/gs/zlib/infcodes.c - 664 sys sys 1015035349 0
+1188412206 1917 d sys/src/cmd/gs/zlib/infblock.h - 664 sys sys 1015035349 0
+1188412206 1918 d sys/src/cmd/gs/zlib/infblock.c - 664 sys sys 1015035349 0
+1188412206 1919 d sys/src/cmd/gs/zlib/descrip.mms - 664 sys sys 1015035349 0
+1188412206 1920 d sys/src/cmd/gs/zlib/algorithm.doc - 664 sys sys 1015035349 0
+1188412206 1921 d sys/src/cmd/gs/zlib/Makefile.wat - 664 sys sys 1015035349 0
+1188412206 1922 d sys/src/cmd/gs/zlib/Makefile.tc - 664 sys sys 1015035349 0
+1188412206 1923 d sys/src/cmd/gs/zlib/Makefile.sas - 664 sys sys 1015035349 0
+1188412206 1924 d sys/src/cmd/gs/zlib/Makefile.riscos - 664 sys sys 1015035349 0
+1188412206 1925 d sys/src/cmd/gs/zlib/Makefile.msc - 664 sys sys 1015035349 0
+1188412206 1926 d sys/src/cmd/gs/zlib/Makefile.dj2 - 664 sys sys 1015035349 0
+1188412206 1927 d sys/src/cmd/gs/zlib/Makefile.bor - 664 sys sys 1015035349 0
+1188412206 1928 d sys/src/cmd/gs/zlib/Makefile.b32 - 664 sys sys 1015035349 0
+1188412206 1929 d sys/src/cmd/gs/zlib/Make_vms.com - 664 sys sys 1015035349 0
+1188412206 1930 d sys/src/cmd/gs/src/zccube.c - 664 sys sys 1032056555 0
+1188412206 1931 d sys/src/cmd/gs/src/watc.mak - 664 sys sys 1032056535 0
+1188412206 1932 d sys/src/cmd/gs/src/unixtrad.mak - 664 sys sys 1032056530 0
+1188412206 1933 d sys/src/cmd/gs/src/slzwce.c - 664 sys sys 1032056469 0
+1188412206 1934 d sys/src/cmd/gs/src/macsysstat.h - 775 sys sys 1032056358 0
+1188412206 1935 d sys/src/cmd/gs/src/gxop1.h - 664 sys sys 1032056125 0
+1188412206 1936 d sys/src/cmd/gs/src/gxhint3.c - 664 sys sys 1032056080 0
+1188412206 1937 d sys/src/cmd/gs/src/gxhint2.c - 664 sys sys 1032056078 0
+1188412206 1938 d sys/src/cmd/gs/src/gxhint1.c - 664 sys sys 1032056077 0
+1188412206 1939 d sys/src/cmd/gs/src/gxdither.c - 664 sys sys 1032056052 0
+1188412206 1940 d sys/src/cmd/gs/src/gstext.icx - 664 sys sys 1015035328 0
+1188412206 1941 d sys/src/cmd/gs/src/gsgraph.icx - 664 sys sys 1015035325 0
+1188412206 1942 d sys/src/cmd/gs/src/gsfuncv.h - 664 sys sys 1032055797 0
+1188412206 1943 d sys/src/cmd/gs/src/gsfuncv.c - 664 sys sys 1032055796 0
+1188412206 1944 d sys/src/cmd/gs/src/gscsepnm.h - 664 sys sys 1032055727 0
+1188412206 1945 d sys/src/cmd/gs/src/gdevpdfw.c - 664 sys sys 1032055488 0
+1188412206 1946 d sys/src/cmd/gs/src/gdevpdfs.c - 664 sys sys 1032055483 0
+1188412206 1947 d sys/src/cmd/gs/src/gdevpdff.h - 664 sys sys 1032055471 0
+1188412206 1948 d sys/src/cmd/gs/src/gdevpdff.c - 664 sys sys 1032055470 0
+1188412206 1949 d sys/src/cmd/gs/src/gdevpdfe.c - 664 sys sys 1032055468 0
+1188412206 1950 d sys/src/cmd/gs/src/gdevht.h - 664 sys sys 1032055393 0
+1188412206 1951 d sys/src/cmd/gs/src/gdevht.c - 664 sys sys 1032055392 0
+1188412206 1952 d sys/src/cmd/gs/src/gdevhpij.h - 664 sys sys 1032055391 0
+1188412206 1953 d sys/src/cmd/gs/src/gdevhpij.c - 664 sys sys 1032055390 0
+1188412206 1954 d sys/src/cmd/gs/src/gdevalph.c - 664 sys sys 1032055321 0
+1188412206 1955 d sys/src/cmd/gs/src/ccgs - 775 sys sys 1015035309 0
+1188412206 1956 d sys/src/cmd/gs/src/ansi2knr.c - 664 sys sys 1032055234 0
+1188412206 1957 d sys/src/cmd/gs/man/ansi2knr.1 - 664 sys sys 1015035308 0
+1188412206 1958 d sys/src/cmd/gs/libpng/makevms.com - 664 sys sys 1015035307 0
+1188412206 1959 d sys/src/cmd/gs/libpng/makefile.tc3 - 664 sys sys 1015035307 0
+1188412206 1960 d sys/src/cmd/gs/libpng/makefile.sun - 664 sys sys 1015035307 0
+1188412206 1961 d sys/src/cmd/gs/libpng/makefile.std - 664 sys sys 1015035307 0
+1188412206 1962 d sys/src/cmd/gs/libpng/makefile.sgi - 664 sys sys 1015035307 0
+1188412206 1963 d sys/src/cmd/gs/libpng/makefile.msc - 664 sys sys 1015035307 0
+1188412206 1964 d sys/src/cmd/gs/libpng/makefile.mip - 664 sys sys 1015035307 0
+1188412206 1965 d sys/src/cmd/gs/libpng/makefile.min - 664 sys sys 1015035307 0
+1188412206 1966 d sys/src/cmd/gs/libpng/makefile.lnx - 664 sys sys 1015035307 0
+1188412206 1967 d sys/src/cmd/gs/libpng/makefile.knr - 664 sys sys 1015035307 0
+1188412206 1968 d sys/src/cmd/gs/libpng/makefile.dj2 - 664 sys sys 1015035307 0
+1188412206 1969 d sys/src/cmd/gs/libpng/makefile.dec - 664 sys sys 1015035306 0
+1188412206 1970 d sys/src/cmd/gs/libpng/makefile.bor - 664 sys sys 1015035306 0
+1188412206 1971 d sys/src/cmd/gs/libpng/makefile.atr - 664 sys sys 1015035306 0
+1188412206 1972 d sys/src/cmd/gs/libpng/makefile.ama - 664 sys sys 1015035306 0
+1188412206 1973 d sys/src/cmd/gs/libpng/makefile.aco - 664 sys sys 1015035306 0
+1188412206 1974 d sys/src/cmd/gs/libpng/makefile - 664 sys sys 1015035306 0
+1188412206 1975 d sys/src/cmd/gs/libpng/descrip.mms - 664 sys sys 1015035306 0
+1188412206 1976 d sys/src/cmd/gs/libpng/build.bat - 664 sys sys 1015035306 0
+1188412206 1977 d sys/src/cmd/gs/libpng/ansi2knr.c - 664 sys sys 1015035306 0
+1188412206 1978 d sys/src/cmd/gs/lib/sysvlp.sh - 775 sys sys 1015035305 0
+1188412206 1979 d sys/src/cmd/gs/lib/pj-gs.sh - 775 sys sys 1015035303 0
+1188412206 1980 d sys/src/cmd/gs/jpeg/testimg.gif - 664 sys sys 1015035296 0
+1188412206 1981 d sys/src/cmd/gs/icclib/README - 664 sys sys 1032636733 0
+1188412206 1982 d sys/src/cmd/gs/icclib/COPYRIGHT - 664 sys sys 1032636733 0
+1188412206 1983 d sys/src/cmd/gs/examples/tiger.ps - 664 sys sys 1032054817 0
+1188412206 1984 d sys/src/cmd/gs/examples/golfer.ps - 664 sys sys 1032054812 0
+1188412206 1985 d sys/src/cmd/gs/doc/Tester.htm - 664 sys sys 1032054793 0
+1188412206 1986 d sys/src/cmd/gs/doc/New-user.htm - 664 sys sys 1032054777 0
+1188412206 1987 d sys/src/cmd/gs/doc/Current.htm - 664 sys sys 1032054743 0
+1188412206 1988 d sys/src/cmd/gs/bin - 20000000775 sys sys 1020896090 0
+1188414004 0 c sys/man/1/cpp - 664 sys sys 1188413850 2165
+1188414004 1 c sys/src/cmd/cc/lex.c - 664 sys sys 1188413849 24667
+1188414004 2 c sys/src/cmd/cpp/nlist.c - 664 sys sys 1188413849 4745
+1188415805 0 c sys/src/libauthsrv/readnvram.c - 664 sys sys 1188416573 10295
+1188419405 0 c 386/bin/8c - 775 sys sys 1188418138 367214
+1188419405 1 c 386/bin/cpp - 775 sys sys 1188418500 149215
+1188423004 0 c sys/src/cmd/ndb/query.c - 664 sys sys 1188422202 1793
+1188424804 0 c sys/man/8/ndb - 664 sys sys 1188423135 14041
+1188442804 0 c sys/lib/dist/mkfile - 664 sys sys 1188441860 5380

+ 19 - 18
sys/lib/dist/mkfile

@@ -2,21 +2,21 @@
 d=/n/sources/plan9
 dist=/sys/lib/dist
 # import /sys/lib/dist/web.protect from outside
-x=`{9fs sources; 9fs fsother; import -c tcp!204.178.31.2!666 $dist/web.protect}
+x=`{9fs sources; 9fs other; import -c tcp!204.178.31.2!666 $dist/web.protect}
 
-cd:V: /n/fsother/dist/plan9.iso
+cd:V: /n/other/dist/plan9.iso
 
-ncd:V: /n/fsother/dist/plan9-new.iso.bz2
+ncd:V: /n/other/dist/plan9-new.iso.bz2
 
-ncd-dist:V: /n/fsother/dist/plan9-new.iso.bz2
+ncd-dist:V: /n/other/dist/plan9-new.iso.bz2
 	mk $dist/web.protect/plan9-new.iso.bz2
 
-cd-dist:V: /n/fsother/dist/plan9.iso.bz2
+cd-dist:V: /n/other/dist/plan9.iso.bz2
 	mk $dist/web.protect/plan9.iso.bz2
 
-contrib-cd:V:	/n/fsother/dist/contrib.iso.bz2
+contrib-cd:V:	/n/other/dist/contrib.iso.bz2
 
-/n/fsother/dist/%.iso:D: /n/sources/plan9/dist/replica/plan9.log
+/n/other/dist/%.iso:D: /n/sources/plan9/dist/replica/plan9.log
 	@{cd pc; mk cddisk; cd ..}
 	rm -f $target
 	bind pc/cddisk cdstub/bootdisk.img
@@ -28,7 +28,7 @@ contrib-cd:V:	/n/fsother/dist/contrib.iso.bz2
 	disk/mk9660 -9cj -v $title -s $d -b bootdisk.img $target
 
 # try not to clobber downloads in progress
-$dist/web.protect/%.iso.bz2:	/n/fsother/dist/%.iso.bz2
+$dist/web.protect/%.iso.bz2:	/n/other/dist/%.iso.bz2
 	cp $prereq $target.new
 	chmod +t $target.new		# don't waste venti on it
 	if (test -e $target)
@@ -36,7 +36,7 @@ $dist/web.protect/%.iso.bz2:	/n/fsother/dist/%.iso.bz2
 	mv $target.new $target
 
 scan:V:
-	test -d /n/fsother/dist		# make sure fsother was mounted above
+	test -d /n/other/dist		# make sure other was mounted above
 	test -d $d
 	test -d $dist/web.protect
 	replica/scan $dist/sources.replica <scan.lock
@@ -57,14 +57,14 @@ compresslog:V:
 
 odump:V:
 	disk/dump9660 -9cj -v 'Plan 9 4e Dumps' -s $d \
-		-p /sys/lib/sysconfig/proto/allproto /n/fsother/dist/distdump.iso
+		-p /sys/lib/sysconfig/proto/allproto /n/other/dist/distdump.iso
 
 cd.install:V:
 	if(~ $sysname achille){
 		echo; echo; echo '*** run this on a real machine, like olive.'
 		exit bad
 	}
-	bzip2 -9 < /n/fsother/dist/plan9.iso >web.protect/nplan9.iso.bz2
+	bzip2 -9 < /n/other/dist/plan9.iso >web.protect/nplan9.iso.bz2
 
 D.install:V:
 	D=/n/roro/usr/rob/testplan9
@@ -89,7 +89,7 @@ reallyinstall:V:
 dump:V:
 	rm -f /srv/9660.xxx
 	9660srv 9660.xxx
-	mount /srv/9660.xxx /n/kremvax /n/fsother/dist/plan9.iso
+	mount /srv/9660.xxx /n/kremvax /n/other/dist/plan9.iso
 	now=`{mtime $dist/web.protect/plan9.iso.bz2 | awk '{print $1}'}
 	ls -l /rls/plan9/4e.iso
 	disk/dump9660 -9cj -s /n/kremvax -n $now /rls/plan9/4e.iso
@@ -97,17 +97,17 @@ dump:V:
 	rm /srv/9660.xxx
 
 reencode:V:
-	rm -f /n/fsother/dist/nplan9.iso
+	rm -f /n/other/dist/nplan9.iso
 	rm -f /srv/9660.xxx
 	9660srv 9660.xxx
-	mount /srv/9660.xxx /n/kremvax /n/fsother/dist/plan9.iso
+	mount /srv/9660.xxx /n/kremvax /n/other/dist/plan9.iso
 	disk/mk9660 -9cj -v 'Plan 9 4th Edition' -s /n/kremvax \
-		-b bootdisk.img /n/fsother/dist/nplan9.iso
+		-b bootdisk.img /n/other/dist/nplan9.iso
 	rm /srv/9660.xxx
 
-/n/fsother/dist/%.iso.bz2:D: /n/fsother/dist/%.iso
+/n/other/dist/%.iso.bz2:D: /n/other/dist/%.iso
 	@ {
-		cd /n/fsother/dist
+		cd /n/other/dist
 		bzip2 -9 <$stem.iso >n$stem.iso.bz2 &&
 		{
 			if (test -e $stem.iso.bz2)
@@ -119,7 +119,7 @@ reencode:V:
 			$stem.iso.bz2 >>/usr/web/plan9checksums.txt
 	}
 
-/n/fsother/dist/contrib.iso:DV:
+/n/other/dist/contrib.iso:DV:
 	rm -f $target
 	disk/mk9660 -9cj -v 'Plan 9 Extras' -s /n/sources \
 		-p ./contrib.proto $target
@@ -152,6 +152,7 @@ worldwritable-mail:V:
 	9fs boot
 	test -e /n/boot/sys
 	/usr/rsc/bin/$cputype/lsr -t -d /n/boot/sys /n/boot/lib |
+		grep -v /lib/audio/ |		# give us a break
 		awk '$2 ~ /[2367][^2367].$/' |
 		datemail 'non-group-writable files on fs' 9trouble
 	status=''

+ 3 - 0
sys/man/1/cpp

@@ -70,6 +70,9 @@ directives into the output.
 .B -+
 Understand C++ comments.
 .TP
+.B -.
+Inhibit include search in the source's directory.
+.TP
 .B -i
 Print the list of directories searched when
 .I #include

+ 58 - 15
sys/man/8/ndb

@@ -4,12 +4,17 @@ query, ipquery, mkhash, mkdb, mkhosts, cs, csquery, dns, dnsquery, dnsdebug \- n
 .SH SYNOPSIS
 .B ndb/query
 [
+.B -am
+] [
 .B -f
 .I dbfile
 ]
 .I "attr value"
 [
 .I rattr
+.\" [
+.\" .I reps
+.\" ]
 ]
 .br
 .B ndb/ipquery
@@ -93,19 +98,37 @@ network programs such as
 .IR con (1),
 etc.
 .PP
-.I Ndb/query 
-searches the database for an attribute of type
+.I Ndb/query
+searches the database
+.I dbfile
+.RB ( /lib/ndb/local
+by default)
+for an attribute of type
 .I attr
 and value
 .IR value .
 If
 .I rattr
-is not specified, all entries matched by the search are returned.
-If 
+is not specified, all entries matched by the search are printed.
+If
 .I rattr
 is specified, the value of the first pair with attribute
 .I rattr
-of all the matched entries is returned.
+of all the matched entries normally is printed.
+Under
+.B -m
+and
+.IR rattr ,
+the values of all pairs with a
+.I rattr
+attribute within the first matching entry are printed.
+Under
+.B -a
+and
+.IR rattr ,
+all values of pairs with a
+.I rattr
+attribute within all entries are printed.
 .PP
 .I Ndb/ipquery
 uses
@@ -126,7 +149,7 @@ creates a hash file for all entries with attribute
 .I attr
 in database file
 .IR file .
-The hash files are used by 
+The hash files are used by
 .I ndb/query
 and by the ndb library routines.
 .PP
@@ -151,7 +174,7 @@ It may be profitable to control this by a frequent
 job.
 .PP
 .I Ndb/mkhosts
-generates a BSD style 
+generates a BSD style
 .BR hosts ,
 .BR hosts.txt ,
 and
@@ -201,11 +224,11 @@ network.
 .PD
 .PP
 .I Ndb/csquery
-can be used to query
+queries
 .I ndb/cs
 to see how it resolves addresses.
 .I Ndb/csquery
-prompts for addresses and prints out what
+prompts for addresses and prints what
 .I ndb/cs
 returns.
 .I Server
@@ -216,16 +239,18 @@ If any
 are specified,
 .I ndb/csquery
 prints their translations and immediately exits.
-The exit status will be nil only if all addresses 
+The exit status will be nil only if all addresses
 were successfully translated.
 The
 .B -s
 flag sets exit status without printing any results.
+.br
+.ne 4
 .SS "Domain name service"
 .I Ndb/dns
-is a server used by
+serves
 .I ndb/cs
-and by remote systems to translate Internet domain names.
+and remote systems by translating Internet domain names.
 .I Ndb/dns
 is started at boot time.
 By default
@@ -616,18 +641,36 @@ interface and
 .B /lib/ndb/external
 database file.
 .SH EXAMPLES
+Look up
+.B helix
+in
+.IR ndb .
+.IP
 .EX
 % ndb/query sys helix
 sys=helix dom=helix.research.bell-labs.com bootf=/mips/9powerboot
 	ip=135.104.117.31 ether=080069020427
-	proto=il 
+	proto=il
+.EE
+.LP
+Look up
+.B plan9.bell-labs.com
+and its IP address in the DNS.
+.IP
+.EX
 % ndb/dnsquery
 > plan9.bell-labs.com ip
 plan9.bell-labs.com ip	204.178.31.2
 > 204.178.31.2 ptr
 2.31.178.204.in-addr.arpa ptr	plan9.bell-labs.com
 2.31.178.204.in-addr.arpa ptr	ampl.com
-> 
+>
+.EE
+.LP
+Print the names of all systems that boot via PXE.
+.IP
+.EX
+% ndb/query -a bootf /386/9pxeload sys
 .EE
 .SH FILES
 .TF /lib/ndb/local.*xxx
@@ -666,5 +709,5 @@ gets mounted
 .IR ndb (6)
 .SH BUGS
 .I Ndb
-databases are case-sensitive; 
+databases are case-sensitive;
 ethernet addresses must be in lower-case hexadecimal.

+ 5 - 0
sys/src/cmd/cc/lex.c

@@ -30,6 +30,7 @@
  *	-v		verbose printing
  *	-w		print warnings
  *	-X		abort on error
+ *	-.		Inhibit search for includes in source directory
  */
 
 void
@@ -241,6 +242,10 @@ compile(char *file, char **defs, int ndef)
 			close(fd[1]);
 			av[0] = CPP;
 			i = 1;
+			if(debug['.']){
+				sprint(opt, "-.");
+				av[i++] = strdup(opt);
+			}
 			if(debug['+']) {
 				sprint(opt, "-+");
 				av[i++] = strdup(opt);

+ 6 - 0
sys/src/cmd/cpp/nlist.c

@@ -63,6 +63,7 @@ setup(int argc, char **argv)
 	static Token deftoken[1] = {{ NAME, 0, 0, 0, 7, (uchar*)"defined" }};
 	static Tokenrow deftr = { deftoken, deftoken, deftoken+1, 1 };
 	int debuginclude = 0;
+	int nodot = 0;
 	char xx[2] = { 0, 0};
 
 	for (kp=kwtab; kp->kw; kp++) {
@@ -148,6 +149,9 @@ setup(int argc, char **argv)
 		case 'P':
 			nolineinfo++;
 			break;
+		case '.':
+			nodot++;
+			break;
 		default:
 			xx[0] = ARGC();
 			error(FATAL, "Unknown argument '%s'", xx);
@@ -176,6 +180,8 @@ setup(int argc, char **argv)
 		setobjname(fp);
 	includelist[NINCLUDE-1].always = 0;
 	includelist[NINCLUDE-1].file = dp;
+	if(nodot)
+		includelist[NINCLUDE-1].deleted = 1;
 	setsource(fp, fd, NULL);
 	if (debuginclude) {
 		for (i=0; i<NINCLUDE; i++)

+ 46 - 0
sys/src/cmd/gs/amd64.h

@@ -0,0 +1,46 @@
+/* Parameters derived from machine and compiler architecture. */
+/* This file is generated mechanically by genarch.c. */
+
+	 /* ---------------- Scalar alignments ---------------- */
+
+#define ARCH_ALIGN_SHORT_MOD 2
+#define ARCH_ALIGN_INT_MOD 4
+#define ARCH_ALIGN_LONG_MOD 4
+#define ARCH_ALIGN_PTR_MOD 8
+#define ARCH_ALIGN_FLOAT_MOD 4
+#define ARCH_ALIGN_DOUBLE_MOD 8
+#define ARCH_ALIGN_STRUCT_MOD 4
+
+	 /* ---------------- Scalar sizes ---------------- */
+
+#define ARCH_LOG2_SIZEOF_CHAR 0
+#define ARCH_LOG2_SIZEOF_SHORT 1
+#define ARCH_LOG2_SIZEOF_INT 2
+#define ARCH_LOG2_SIZEOF_LONG 2
+#define ARCH_LOG2_SIZEOF_LONG_LONG 3
+#define ARCH_SIZEOF_PTR 8
+#define ARCH_SIZEOF_FLOAT 4
+#define ARCH_SIZEOF_DOUBLE 8
+#define ARCH_FLOAT_MANTISSA_BITS 24
+#define ARCH_DOUBLE_MANTISSA_BITS 53
+
+	 /* ---------------- Unsigned max values ---------------- */
+
+#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0)
+#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0)
+#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0)
+#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0)
+
+	 /* ---------------- Cache sizes ---------------- */
+
+#define ARCH_CACHE1_SIZE 4096
+#define ARCH_CACHE2_SIZE 4194304
+
+	 /* ---------------- Miscellaneous ---------------- */
+
+#define ARCH_IS_BIG_ENDIAN 0
+#define ARCH_PTRS_ARE_SIGNED 0
+#define ARCH_FLOATS_ARE_IEEE 1
+#define ARCH_ARITH_RSHIFT 2
+#define ARCH_CAN_SHIFT_FULL_LONG 0
+#define ARCH_DIV_NEG_POS_TRUNCATES 1

+ 0 - 270
sys/src/cmd/gs/doc/Current.htm

@@ -1,270 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Information specifically about the current release</title>
-<!-- $Id: Current.htm,v 1.13.2.2 2002/02/01 05:31:24 raph Exp $ -->
-<!-- Originally: current.txt -->
-<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
-</head>
-
-<body>
-<!-- [1.0 begin visible header] ============================================ -->
-
-<!-- [1.1 begin headline] ================================================== -->
-
-<h1>Information specifically about Ghostscript 6.0</h1>
-
-<!-- [1.1 end headline] ==================================================== -->
-
-<!-- [1.2 begin table of contents] ========================================= -->
-
-<h2>Table of contents</h2>
-
-<ul>
-<li><a href="#New_features">New features (since release 5.50)</a>
-<li><a href="#Changes">Changes (since release 5.50)</a>
-<li><a href="#Known_problems">Known problems</a>
- <ul>
-  <li><a href="#Usage">Usage</a>
-  <li><a href="#Limitations">Limitations</a>
-  <li><a href="#Graphics_bugs">Graphics bugs</a>
-  <li><a href="#Non_graphics_bugs">Non-graphics bugs</a>
- </ul>
-</ul>
-
-<!-- [1.2 end table of contents] =========================================== -->
-
-<!-- [1.3 begin hint] ====================================================== -->
-
-<p>For other information, see the <a href="Readme.htm">Ghostscript
-overview</a>.
-
-<!-- [1.3 end hint] ======================================================== -->
-
-<hr>
-
-<!-- [1.0 end visible header] ============================================== -->
-
-<!-- [2.0 begin contents] ================================================== -->
-
-<h2><a name="New_features"></a>New features (since release 5.50)</h2>
-
-<p>
-(This is not a complete list of new features: see <a href="News.htm">the
-news</a> for details.)
-
-<p>
-Ghostscript now handles essentially all of PostScript LanguageLevel 3 and
-PDF 1.3 (Acrobat 4.x compatibility).  See <a
-href="Language.htm"><b>Language.htm</b></a> for details.
-
-<p>
-The PDF writer now implements most of the Acrobat (TM) Distiller parameters
-for compressing and downsampling images.
-
-<p>
-The PDF writer now recognizes nearly all varieties of pdfmark, other than
-the Distiller 3.0 "named object" pdfmarks and the Distiller 4.0 "document
-structure" pdfmarks.
-
-<p>
-The PDF writer now handles text in all fonts, not just the 14 built-in ones,
-and implements the Distiller parameters affecting font embedding and
-subsetting.  (It still usually converts double-byte fonts to bitmaps.)
-
-<p>
-16- and 24-bit X Windows displays are now fully supported.
-
-<p>
-You now need only the header files and shared libraries, not the source
-code, if you want to use precompiled versions of the jpeg, libpng, or zlib
-libraries.
-
-<p>
-The syntax
-<b><tt>%</tt></b><em>iodevice</em><b><tt>%</tt></b><em>filename</em> is now
-supported with the <b><tt>-sOutputFile=</tt></b> switch, allowing you to
-send raster output to a piped command.
-
-<p>
-You can now use MMK or MMS to build Ghostscript on OpenVMS systems.
-
-<p>
-For driver writers, there are improved facilities for planar output,
-rasterizing directly into a driver-provided buffer, detecting bands that are
-all white or that only use a subset of the colorants, and providing CRDs
-from the driver.
-
-<p>
-The driver API now includes facilities for passing high-level text
-operations, completing the set of high-level operations (bitmap images and
-vector graphics were implemented in 5.50).  See <a href="Drivers.htm">the
-documentation</a> for details.
-
-<p>
-Ghostscript as a dynamically linked library is now supported on the Mac as
-well as on Windows.
-
-<p>
-GNU readline was supported in most of the beta distributions for 6.0, but
-was removed at the last minute because of objections from the Free Software
-Foundation.  Please see <a href="Make.htm#GNU_readline">here</a> for more
-information.
-
-<h2><a name="Changes"></a>Changes (since release 5.50)</h2>
-
-<h3>Directories and build procedure</h3>
-
-<p>
-The files in the release now have a more complex directory structure.  In
-the table below, <em>top</em> refers to the top-level directory,
-<b><tt>gs</tt></b><em>n.nn</em>.
-
-<p>
-The <em>top</em><b><tt>/</tt></b> is where you create a link to the
-appropriate makefile in <em>top</em><b><tt>/src/</tt></b>.  On all systems
-other than MS Windows, the build procedure does not write into this
-directory.
-
-<p>
-The files included in the Ghostscript release now are found in five
-subdirectories.
-
-<ul>
-<li><em>top</em><b><tt>/src/</tt></b> contains the C/C++ source code, the
-makefiles, and all other files needed to build the program.  The build
-procedure reads from this directory but does not write into it.  Nothing in
-this directory is needed at run time.
-
-<li><p><em>top</em><b><tt>/lib/</tt></b> contains PostScript and script
-files needed at run time.  The build procedure reads from this directory but
-does not write into it.  The contents of this directory are needed at run
-time and are copied by the Unix <b><tt>make install</tt></b> command.
-
-<li><em>top</em><b><tt>/doc/</tt></b> contains documentation.  Copied by
-<b><tt>make install</tt></b>.
-
-<li><em>top</em><b><tt>/man/</tt></b> contains Unix <b><tt>man</tt></b>
-pages.  Copied by <b><tt>make install</tt></b>.
-
-<li><em>top</em><b><tt>/examples/</tt></b> contains sample PostScript and
-PDF files.  Copied by <b><tt>make install</tt></b>.
-
-</ul>
-
-<p>
-The build procedure creates two additional subdirectories,
-<em>top</em><b><tt>/obj/</tt></b> (or <b><tt>debugobj</tt></b> or
-<b><tt>pgobj</tt></b>) and <em>top</em><b><tt>/bin/</tt></b>.  See the
-documentation on <a href="Make.htm">how to build Ghostscript</a> for more
-information.
-
-<h2>Other changes</h2>
-
-<p>
-If you are a developer working with the Ghostscript code in any way other
-than writing or modifying drivers, please read all of the "Incompatible
-changes" sections of the <a href="News.htm">release news</a> for important
-information.
-
-<h2><a name="Known_problems"></a>Known problems</h2>
-
-<p>
-See the <a href="News.htm">release news</a> for details.
-
-<h3><a name="Usage"></a>Usage</h3>
-
-<p>
-On a DOS system, interrupting the interpreter by typing control-C doesn't
-restore the display mode.
-
-<h3><a name="Limitations"></a>Limitations</h3>
-
-<p>
-<b><tt>serialnumber</tt></b> returns the same value in all copies.
-
-<p>
-Some floating point exceptions terminate the interpreter, rather than
-producing a <b><tt>limitcheck</tt></b> error.
-
-<p>
-The <b><tt>DCTEncode</tt></b> filter disregards the <b><tt>Blend</tt></b>
-parameter, and uses different <b><tt>QuantTables</tt></b> and
-<b><tt>HuffTables</tt></b> from Adobe's.
-
-<p>
-The DCT filters do not support nonintegral sample ratios.  Also,
-<b><tt>DCTEncode</tt></b> will not create files with Sum(HS&times;VS)&gt;10
-(regardless of the value of the <b><tt>Relax</tt></b> parameter) because
-they violate the JPEG standard; but <b><tt>DCTDecode</tt></b> will read
-such files.
-
-<p>
-The size of the execution stack cannot be changed dynamically.  (However,
-the sizes of the operand and dictionary stacks can be changed.)
-
-<p>
-<b><tt>Separation</tt></b> and <b><tt>DeviceN</tt></b> color spaces are
-implemented, but devices that actually produce color separations are not
-supported: these color spaces always use the alternate space.  The special
-color separations <b><tt>All</tt></b> and <b><tt>None</tt></b>, and the
-primary separations (<b><tt>Red</tt></b>, <b><tt>Green</tt></b>, etc.), are
-not supported.
-
-<p>
-<b><tt>execform</tt></b> and <b><tt>ucache</tt></b> are implemented, but
-they do not actually do any caching; <b><tt>setucacheparams</tt></b> and
-<b><tt>ucachestatus</tt></b> are dummies.  (This only impacts performance,
-not functionality.)
-
-<p>
-The <b><tt>image</tt></b> operator honors the <b><tt>Interpolate</tt></b>
-flag in the image dictionary only for ImageType 1 and 3 images, only if the
-combined transformation (<b><tt>ImageMatrix</tt></b> + CTM) doesn't involve
-rotation, skewing, or X-reflection, and only for certain scalings and color
-spaces; <b><tt>imagemask</tt></b> doesn't honor <b><tt>Interpolate</tt></b>
-at all.
-
-<p>
-Some path-building operations that would generate a device coordinate
-larger than +/-2^<small><sup>19</sup></small> will cause a
-limitcheck.  However, the common ones (<b><tt>[r]moveto</tt></b>,
-<b><tt>[r]lineto</tt></b>, <b><tt>[r]curveto</tt></b>, <b><tt>closepath</tt></b>) will not.
-
-<h3><a name="Graphics_bugs"></a>Graphics bugs</h3>
-
-<p>
-There are no known graphics bugs in this release.
-
-<h3><a name="Non_graphics_bugs"></a>Non-graphics bugs</h3>
-
-<p>
-The <b><tt>definefont</tt></b> operator (Subrs (type 1 fonts)) expects
-arrays but won't accept packed arrays.
-
-<p>
-Syntax errors occurring within a binary token do not produce the error
-message specified by the Adobe documentation.
-
-<!-- [2.0 end contents] ==================================================== -->
-
-<!-- [3.0 begin visible trailer] =========================================== -->
-<hr>
-
-<p>
-<small>Copyright &copy; 1996, 1997, 1998, 1999 Aladdin Enterprises.
-All rights reserved.</small>
-
-<p>
-<small>This file is part of AFPL Ghostscript.  See the
-<a href="Public.htm">Aladdin Free Public License</a> (the "License") for
-full details of the terms of using, copying, modifying, and redistributing
-AFPL Ghostscript.</small>
-
-<p>
-<small>Ghostscript version 7.04, 31 January 2002
-
-<!-- [3.0 end visible trailer] ============================================= -->
-
-</body>
-</html>

+ 0 - 989
sys/src/cmd/gs/doc/New-user.htm

@@ -1,989 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Background information for new users of Ghostscript</title>
-<!-- $Id: New-user.htm,v 1.30.2.2 2002/02/01 05:31:25 raph Exp $ -->
-<!-- Originally: new-user.txt -->
-<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
-</head>
-
-<body>
-<!-- [1.0 begin visible header] ============================================ -->
-
-<!-- [1.1 begin headline] ================================================== -->
-
-<h1>Background information for new users of Ghostscript</h1>
-
-<!-- [1.1 end headline] ==================================================== -->
-
-<!-- [1.2 begin table of contents] ========================================= -->
-
-<h2>Table of contents</h2>
-
-<ul>
-<li><a href="#Overview">An overview of Ghostscript</a>
-<ul>
-<li><a href="#Find_Ghostscript">How is Ghostscript licensed?  Where can I find it?</a>
-<ul>
-<li><a href="#AFPL_gs">AFPL Ghostscript (formerly Aladdin Ghostscript)</a>
-<li><a href="#GNU_gs">GNU Ghostscript</a>
-<li><a href="#Commercial_gs">Commercial versions</a>
-</ul>
-<li><a href="#Third-party_libraries">Libraries obtained from other parties</a>
-<li><a href="#Support">What if I want support?</a>
-<li><a href="#Commercial_use">What about commercial use?</a>
-<li><a href="#Platforms">What platforms does Ghostscript run on?</a>
-<ul>
-<li><a href="#Third-party_platforms">Ports done by users</a>
-</ul>
-</ul>
-<li><a href="#Related_work">Related work</a>
-<ul>
-<li><a href="#Drivers">Drivers</a>
-<li><a href="#Previewers">Previewers</a>
-<ul>
-<li><a href="#Previewer_X">Previewers for X Windows</a>
-<li><a href="#Previewer_DOS-Win">Previewers for DOS and MS Windows</a>
-<li><a href="#Previewer_Linux">A previewer for Linux</a>
-</ul>
-<li><a href="#Fonts">Fonts</a>
-<li><a href="#Related_programs">Related programs</a>
-</ul>
-<li><a href="#Need_help">If you need help</a>
-<ul>
-<li><a href="#Reporting_problems">Reporting problems</a>
-</ul>
-<li><a href="#Contacting_us">Contacting Ghostscript headquarters</a>
-<li><a href="#How_to_help">How you can help improve Ghostscript</a>
-<li><a href="#Acknowledgments">Acknowledgements</a>
-</ul>
-
-<!-- [1.2 end table of contents] =========================================== -->
-
-<!-- [1.3 begin hint] ====================================================== -->
-
-<p>For other information, see the <a href="Readme.htm">Ghostscript
-overview</a>.
-
-<!-- [1.3 end hint] ======================================================== -->
-
-<hr>
-
-<!-- [1.0 end visible header] ============================================== -->
-
-<!-- [2.0 begin contents] ================================================== -->
-
-<h2><a name="Overview"></a>An overview of Ghostscript</h2>
-
-<p>
-Ghostscript is the name of a set of software that provides:
-
-<ul>
-<li>An interpreter for the <b>PostScript</b><small><sup>TM</sup></small>
-language and the Adobe <b>Portable Document Format</b> (<b>PDF</b> --
-sometimes confused with Acrobat, Adobe's PDF browser and editor product);
-
-<li>Input modules (utilities) for reading a variety of raster formats,
-including <b>CMYK</b>, <b>GIF</b>, <b>JFIF</b> (<b>JPEG</b>), <b>MIFF</b>,
-<b>PBM</b>/<b>PGM</b>/<b>PPM</b>, and <b>PCX</b>;
-
-<li>Output modules (drivers) for a wide variety of window systems (including
-X Windows and Microsoft Windows), raster file formats, and printers, as well
-as a PDF output module that implements functions similar to Adobe's
-Acrobat<small><sup>TM</sup></small> Distiller<small><sup>TM</sup></small>
-product; and
-
-<li>The Ghostscript library, a set of procedures to implement the graphics
-and filtering capabilities that are primitive operations in the PostScript
-language and in PDF.
-</ul>
-
-<p>
-In simple terms, this means that Ghostscript can read a PostScript or PDF
-file and display the results on the screen or convert them into a form you
-can print on a non-PostScript printer. Especially together with several
-popular <a href="#Previewers">previewers</a>, with Ghostscript you can view
-or print an entire document or even isolated pages, even if your computer
-doesn't have Display PostScript and your printer doesn't handle PostScript
-itself.
-
-<h3><a name="Find_Ghostscript"></a>How is Ghostscript licensed?  Where can I find it?</h3>
-
-<p>
-Ghostscript is a copyrighted work (artofcode LLC owns the copyright);
-it is not shareware or in the public domain.  Different versions of it are
-distributed with three different licenses:
-
-<h4><a name="AFPL_gs"></a>AFPL Ghostscript (formerly Aladdin
-Ghostscript)</h4>
-
-<p>
-Versions entitled "AFPL Ghostscript", or older versions called "Aladdin
-Ghostscript"), are distributed with a license called the <a
-href="Public.htm">Aladdin Free Public License</a> that allows free use,
-copying, and distribution by end users, but does not allow commercial
-distribution.  For information on obtaining the current version of
-Ghostscript with this license please visit our website at
-
-<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/</a>
-</blockquote>
-
-<p>
-AFPL ghostscript is also available directly from our ftp mirrors as
-
-<blockquote>
-<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/" 
-class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/</a>gs###/ghostscript#.##
-</blockquote>
-
-<p>
-where "#.##" and "###" are the version number with and without punctuation, for instance "5.50" and "550",
-or under AFS by direct reference to
-
-<blockquote>
-/afs/cs.wisc.edu/p/mirror/pub/mirrors/ghost/AFPL/
-</blockquote>
-
-<p>
-Finally, you can search for other sites, perhaps nearer to your location, that 
-provide ftp access to Ghostscript using an ftp search
-service such as
-
-<blockquote>
-<a href="http://ftpsearch.lycos.com/"
-class="offsite">http://ftpsearch.lycos.com/</a>
-</blockquote>
-
-<p>
-General search engines like
-
-<blockquote>
-<a href="http://www.google.com/"
-class="offsite">http://www.google.com/</a>
-<br>
-<a href="http://www.altavista.com/"
-class="offsite">http://www.altavista.com/</a>
-</blockquote>
-
-<p>
-may also be useful, but in searching for files they are likely to provide
-many unusable references mixed in among the useful ones.
-
-<p>
-If you haven't convenient access to the Internet, you can order AFPL
-Ghostscript on a CD along with some useful related programs and
-documentation.  <b>Please note</b> that this is not "commercial licensing":
-you are still getting freely redistributable software, with no support and
-no warranty.  For more information write to <a href="#GSview">Russell
-Lang</a> or see
-
-<blockquote>
-<a href="http://www.ghostgum.com.au/cd.htm" class="offsite">http://www.ghostgum.com.au/cd.htm</a>
-</blockquote>
-
-<h4><a name="GNU_gs"></a>GNU Ghostscript</h4>
-
-<p>
-Versions entitled "GNU Ghostscript" are distributed with the GNU <a
-href="http://www.gnu.org/copyleft/gpl.html">General Public License</a>,
-which allows free use, and free copying and redistribution under certain
-conditions (including, in some cases, commercial distribution).  GNU
-Ghostscript versions are usually released shortly after the <em>next</em>
-AFPL Ghostscript version; for example, GNU Ghostscript 5.10 was released
-shortly after Aladdin Ghostscript 5.50.  You can always get the current
-version of GNU Ghostscript by Internet FTP from
-
-<blockquote>
-<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/" 
-class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/</a>
-</blockquote>
-
-<p>
-or under AFS by direct reference to
-
-<blockquote>
-/afs/cs.wisc.edu/p/mirror/pub/mirrors/ghost/gnu/current/
-</blockquote>
-
-<p>
-or from any of the many GNU distribution sites.  The GNU home ftp site is
-
-<blockquote>
-<a href="ftp://ftp.gnu.org/pub/gnu/"
-class="offsite">ftp://ftp.gnu.org/pub/gnu/</a>
-</blockquote>
-
-<p>
-For a more complete list of sites, including sites outside the U.S., write
-to <a href="mailto:gnu@gnu.org">gnu@gnu.org</a>.  The
-<a href="Commprod.htm#FSF-address">Free Software Foundation</a> makes GNU
-Ghostscript available on tape and CD-ROM.
-
-<p><a name="CTAN"></a>
-Both AFPL and GNU versions are also available from sites in the
-Comprehensive TeX Archive Network (CTAN), in a tree based at
-/tex-archive/support/ghostscript/, which you can find at these principal
-CTAN distribution sites ("participating hosts") as of mid-1998:
-
-<blockquote><table cellpadding=0 cellspacing=0>
-<tr>	<td><a
-href="ftp://ctan.tug.org/tex-archive/support/ghostscript/"
-class="offsite">ftp://ctan.tug.org/tex-archive/support/ghostscript/</a>
-	<td>&nbsp;&nbsp;
-	<td>Massachusetts, U.S.A.
-<tr>	<td><a href="ftp://ftp.dante.de/tex-archive/support/ghostscript/"
-class="offsite">ftp://ftp.dante.de/tex-archive/support/ghostscript/</a>
-	<td>&nbsp;
-	<td>Deutschland
-<tr>	<td><a
-href="ftp://ftp.tex.ac.uk/tex-archive/support/ghostscript/"
-class="offsite">ftp://ftp.tex.ac.uk/tex-archive/support/ghostscript/</a>
-	<td>&nbsp;
-	<td>United Kingdom
-</table></blockquote>
-
-<p>
-CTAN has more than fifty mirror sites around the world.  For information
-about CTAN sites, including how to use them over the World Wide Web, visit
-<a href="http://www.ctan.org/" class="offsite">ctan.org</a> or get
-the file <b><tt>CTAN.sites</tt></b> from any CTAN server, for
-instance
-
-<blockquote>
-<a href="ftp://ctan.tug.org/tex-archive/CTAN.sites" 
-class="offsite">ftp://ctan.tug.org/tex-archive/CTAN.sites</a>
-</blockquote>
-
-<h4><a name="Commercial_gs"></a>Commercial versions</h4>
-
-<p>
-Finally, Ghostscript is also available for commercial licensing.  See
-"<a href="#Commercial_use">What about commercial use?</a>" for details.
-
-<p>
-AFPL Ghostscript and GNU Ghostscript come with <b>NO WARRANTY</b> and
-<b>NO SUPPORT</b>.  If you have a question or a problem to report, please
-see "<a href="#Need_help">If you need help</a>" for information about what
-to do.
-
-<hr>
-
-<h3><a name="Third-party_libraries"></a>Libraries obtained from other parties</h3>
-
-<p>
-The Ghostscript source code distribution, and the Ghostscript executable
-code, include libraries obtained from other parties.  All the source files
-mentioned in this section are in the Ghostscript and third-party library
-source kits.  The documentation of <a href="Make.htm">how to build
-Ghostscript</a> tells <a href="Make.htm#Acquiring">where to get these
-libraries</a> and <a href="Make.htm#Unpack">how to unpack them</a>.
-
-<blockquote><dl>
-<dt>The <a href="http://www.ijg.org/" class="offsite">Independent JPEG
-Group</a> (IJG)
-library
-<dd>The executable versions of Ghostscript are based in part on the work of
-the Independent JPEG Group.  For more information, see
-<b><tt>jpeg.mak</tt></b> in the main Ghostscript source directory and
-<b><tt>README</tt></b> in the <b><tt>jpeg</tt></b> subdirectory of the
-Ghostscript source code
-
-<dt>The <a href="http://www.libpng.org/pub/png/"
-class="offsite">Portable Network
-Graphics</a> (PNG) library created by Dave Martindale, Guy Eric Schalnat,
-Paul Schmidt, and Tim Wegner, of Group 42, Inc.
-<dd>For more information, see <b><tt>libpng.mak</tt></b> in the main
-Ghostscript source directory, and <b><tt>README</tt></b> and
-<b><tt>png.h</tt></b> in the <b><tt>libpng</tt></b> subdirectory of the
-Ghostscript source code.
-
-<dt>The <a href="http://www.info-zip.org/pub/infozip/zlib/"
-class="offsite">zlib</a> library
-created by Jean-loup Gailly and Mark Adler
-<dd>For more information, see <b><tt>zlib.mak</tt></b> in the main
-Ghostscript source directory, and <b><tt>README</tt></b> in the
-<b><tt>zlib</tt></b> subdirectory of the Ghostscript source code.
-</dl></blockquote>
-
-<p>
-These libraries do <b>NOT</b> fall under either the GNU License or the
-Aladdin Free Public License; they come with their own licenses,
-which also allow free use and redistribution under appropriate
-circumstances and which appear in the files mentioned just above.  These
-libraries are entirely original works of their respective authors, and are
-provided <strong>AS IS</strong> with <strong>NO WARRANTY</strong> and 
-<strong>NO SUPPORT</strong>.
-
-<hr>
-
-<h3><a name="Support"></a>What if I want support?</h3>
-
-<p>
-Neither artofcode LLC nor any organization known to us currently offers
-Ghostscript support for end-users -- that is, for people or companies who
-just want to use Ghostscript and not redistribute it as part of a product.
-Companies that include Ghostscript in their products under a commercial
-license (see next section) may offer support to end-users, but it would be
-support for the company's own product, not for Ghostscript <em>per se</em>.
-
-<p>
-Nothing in the GNU or AFPL licenses prevents anyone from providing
-support for Ghostscript, either free or commercial.  We would be happy to
-include in the Ghostscript documentation the contact information for anyone
-who wants to offer such support.
-
-<hr>
-
-<h3><a name="Commercial_use"></a>What about commercial use?</h3>
-
-<p>
-GNU Ghostscript may not be incorporated into commercial products which
-forbid copying or for which customers cannot obtain source code for no more
-than the cost of reproduction, although it may be distributed ("aggregated")
-with commercial products; AFPL Ghostscript may not be incorporated into
-commercial products at all, and may be distributed commercially only under
-extremely limited circumstances.  However, Ghostscript is also available for
-commercial licensing, which in addition to the right to incorporate
-Ghostscript into commercial products includes support, a limited warranty,
-high-quality fonts, and other benefits.  For more information about
-commercial licensing of Ghostscript, please contact our commercial
-distribution partner, the only entity legally authorized to distribute
-Ghostscript <em>per se</em> on any terms other than the GNU or AFPL
-licenses:
-
-<blockquote><address>
-Licensing Information<br>
-Artifex Software Inc.<br>
-101 Lucas Valley Road, Suite 110<br>
-San Rafael, CA 94903  U.S.A.<br>
-+1-415-492-9861 Voice<br>
-+1-415-492-9862 Fax<br>
-<a href="mailto:info@artifex.com">info@artifex.com</a><br>
-<a href="http://www.artifex.com/">http://www.artifex.com/</a>
-</address></blockquote>
-
-<p>
-Artifex does not offer commercial support as a separate service; support is
-available only to OEM licensees (that is, licensees who redistribute
-Ghostscript in a product).
-
-<hr>
-
-<h3><a name="Platforms"></a>What platforms does Ghostscript run on?</h3>
-
-<p>
-Ghostscript is written entirely in C (with some optional assembly-language
-accelerators for DOS platforms), with special care taken to make it run
-properly on systems of either byte order ("low-endian" and "high-endian")
-and of various word lengths.  GNU Ghostscript is known to run on the
-following platform families:
-
-<ul>
-<li>A wide variety of Unix systems using X Windows version 11, releases 4, 5,
-and 6, including
-
-<ul compact>
-<li>Sun-3, Sun-4, Sun-386i, Sun SPARCStation with SunOS 4 and Solaris 2.[56]
-<li>Generic Intel-based systems running Linux, 386/ix, 386BSD, FreeBSD, ISC Unix, SCO Unix, and Solaris
-<li>H-P 9000/300 and 9000/800
-<li>DECStation 2100, 3100, and 5xxx
-<li>Alpha systems running Digital Unix
-<li>VAX running Ultrix
-<li>Sequent Symmetry
-<li>Convex C1 and C2
-<li>Tektronix 4300
-<li>SGI Iris Indigo
-<li>4.4BSD Unix systems (FreeBSD on Intel)
-<li>NetBSD on Intel, Sun SPARC, Motorola M68K (Apple, Amiga, Sun, H-P), and VAX
-</ul>
-
-<li>Sun workstations running SunView
-
-<li>VAX and Alpha systems running OpenVMS with X11 compiled with
-either DEC C or gcc
-</ul>
-
-<p>
-AFPL Ghostscript is known to run on all of the above, and additionally
-on the following platform families:
-
-<ul>
-<li>IBM PC and compatibles with EGA, VGA, SuperVGA, or compatible graphics
-under MS-DOS 3.1, 3.3, 5.0, or 6.22, and Microsoft Windows 3.1, NT, 95, or
-98;
-
-<li>IBM PC and compatibles under DR DOS 6.0;
-
-<li>IBM PC and compatibles under OS/2 2.0, 2.1 and Warp 3.0.
-
-<li>Apple Macintosh with System 7 or later, both Motorola 680x0 and PowerPC
-native. For specific information on the Macintosh implementation, see
-
-<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/macos/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/macos/</a>
-</blockquote>
-</ul>
-
-<p>
-It is very likely that Ghostscript will run under other versions of DOS,
-and other versions of Unix that support X11, but it has not been tested in
-these environments.  (Ghostscript does not run well on PC-compatibles with
-Hercules display cards, since text and graphics output interfere with each
-other, but you can work around this by redirecting the text output to a file.)
-
-<h4><a name="Third-party_platforms"></a>Ports done by users</h4>
-
-<p>
-Ghostscript has been ported to a number of platforms by users, who are
-willing to be contacted about problems on those specific platforms:
-
-<dl>
-<dt><b>NeXT</b>
-<dd>For information and possibly precompiled binaries for NeXT machines,
-contact Alan Barclay in the U.K. at +44-1224-591779 (voice and fax).
-</dl>
-
-<dl>
-<dt><b>Amiga</b>
-<dd>For information on a port to the Amiga, contact Andreas Maschke
-&lt;<a href="mailto:epgbc@cluster6.urz.uni-halle.de">epgbc@cluster6.urz.uni-halle.de</a>&gt;.
-This port includes drivers by Andreas Heitmann for
-
-<blockquote><table cellpadding=0 cellspacing=0>
-<tr><td>IFF<td>&nbsp;&nbsp;<td>file format
-<tr><td>RETINA<td>&nbsp;<td>graphics board
-<tr><td>INTUI<td>&nbsp;<td>Amiga window system
-</table></blockquote>
-</dl>
-
-<dl>
-<dt><b>SMS/QDOS</b>
-<dd>For information on a port to the SMS/QDOS operating system, contact
-<blockquote><address>
-Jonathan R. Hudson<br>
-+44-1703-867843 telephone and fax<br>
-<a href="mailto:jrh@jrhudson.demon.co.uk">jrh@jrhudson.demon.co.uk</a><br>
-http://www.jrhudson.demon.co.uk/
-</address></blockquote>
-
-<p>
-The Web site has precompiled binaries, and the port includes includes drivers for:
-
-<blockquote><table cellpadding=0 cellspacing=0>
-<tr>	<td>pic:
-	<td>&nbsp;&nbsp;
-	<td>native graphics format
-	<td>&nbsp;&nbsp;
-	<td>(PIC, 1-, -2, 4-, 8-colour formats)
-<tr>	<td>qfax:
-	<td>&nbsp;
-	<td>fax files
-	<td>&nbsp;
-	<td>(1D, 2D normal and fine)
-</table></blockquote>
-</dl>
-
-<dl>
-<dt><b>Plan 9</b>
-<dd>For source boddles and precompiled binaries for the operating system
-Plan 9 from Bell Labs, contact Nigel Roles
-&lt;<a href="mailto:ngr@cotswold.demon.co.uk">ngr@cotswold.demon.co.uk</a>&gt;.
-or check
-
-<blockquote>
-<a href="http://www.cotswold.demon.co.uk/dist/gs/" 
-class="offsite">http://www.cotswold.demon.co.uk/dist/gs/</a>
-</blockquote>
-</dl>
-
-<dl>
-<dt><b>MS-DOS</b> <dd>For information on compiling Ghostscript for MS-DOS
-with the Watcom C++ compiler and GNU make (which avoids the severe
-limitations in Watcom's wmake program), contact Boguslaw Jackowski &lt;<a
-href="mailto:B.Jackowski@gust.org.pl">B.Jackowski@gust.org.pl</a>&gt;.
-</dl>
-
-<hr>
-
-<h2><a name="Related_work"></a>Related work</h2>
-
-<h3><a name="Drivers"></a>Drivers</h3>
-
-<p>
-A number of people have created Ghostscript drivers that they prefer to
-distribute directly, rather than including them in the AFPL Ghostscript
-distributions.  For a current list, please see the Ghostscript home page at
-<a
-href="http://www.cs.wisc.edu/~ghost/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/</a>.
-
-
-<h3><a name="Previewers"></a>Previewers</h3>
-
-<p>
-The Ghostscript user interface is very primitive, so several people have
-contributed screen previewers with better user interfaces.
-
-<h4><a name="Previewer_X"></a>Previewers for X Windows</h4>
-
-<p>
-We know of three freely available X Windows screen previewers based on
-Ghostscript: <b><tt>Ghostview</tt></b>, <b><tt>gv</tt></b>, and
-<b><tt>GSPreview</tt></b>.  Most users who have expressed an opinion prefer
-<b><tt>gv</tt></b> over <b><tt>Ghostview</tt></b>.
-
-<dl>
-<dt><b><tt>gv</tt></b>
-<dd>gv, which is derived from Ghostview, is available from CTAN sites and
-through the site of its author, Johannes Plass
-&lt;<a href="mailto:plass@thep.physik.uni-mainz.de">plass@thep.physik.uni-mainz.de</a>&gt;:
-
-<blockquote>
-<a href="http://wwwthep.physik.uni-mainz.de/~plass/gv/" 
-class="offsite">http://wwwthep.physik.uni-mainz.de/~plass/gv/</a>
-</blockquote>
-
-A copy of gv (but perhaps not the most recent version)
-can also be found at:
-
-<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/gv/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/gv/</a><br>
-<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gv/" 
-class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gv/</a>
-</blockquote>
-
-<p>
-gv is available for OpenVMS (both VAX and Alpha), called GhostView-VMS or
-gv-vms.  Some places you can find it are:
-
-<blockquote>
-<a href="ftp://axp.psl.ku.dk/decwindows/xaw3d/" 
-class="offsite">ftp://axp.psl.ku.dk/decwindows/xaw3d/</a><br>
-<a href="ftp://ftp.wku.edu/vms/fileserv/x11kit.zip" 
-class="offsite">ftp://ftp.wku.edu/vms/fileserv/x11kit.zip</a>
-</blockquote>
-</dl>
-
-<dl>
-<dt><b><tt>Ghostview</tt></b>
-<dd>For information on Ghostview, contact Tim Theisen
-&lt;<a href="mailto:ghostview@cs.wisc.edu">ghostview@cs.wisc.edu</a>&gt;.
-You can get Ghostview from
-
-<blockquote>
-<a
-href="http://www.cs.wisc.edu/~ghost/gv/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/gv/</a>
-</blockquote>
-</dl>
-
-<dl>
-<dt><b><tt>GSPreview</tt></b>
-<dd>For information on GSPreview, contact Richard Hesketh
-&lt;<a href="mailto:rlh@ukc.ac.uk">rlh@ukc.ac.uk</a>&gt;.
-</dl>
-
-<h4><a name="Previewer_DOS-Win"></a>Previewers for DOS and MS Windows</h4>
-
-<dl>
-<dt><a name="GSview"></a><b><tt>GSview</tt></b>
-<dd>GSview, a popular freely available MS Windows and OS/2 screen previewer
-based on Ghostscript, is available from
-
-<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/gsview/" 
-class="offsite">http://www.cs.wisc.edu/~ghost/gsview/</a>
-</blockquote>
-
-<p>
-For technical information on GSview for Windows or PM GSview, please contact
-Russell Lang &lt;<a
-href="mailto:gsview@ghostgum.com.au">gsview@ghostgum.com.au</a>&gt;.  These
-programs are also available for <a href="#Commercial_use">commercial
-licensing</a> from Artifex Software Inc.
-</dl>
-
-<dl>
-<dt><b><tt>ps_view</tt></b>
-<dd>GUST, the Polish TeX Users Group, has created <b><tt>ps_view</tt></b>,
-a public-domain DOS package that provides "an interactive environement for
-previewing PostScript documents. The current version can drive the current
-version of the Ghostscript interpreter; enables scaling, rotating, restart,
-on-line help, printing the screen, etc."  <b><tt>ps_view</tt></b> is
-available from its home site and from CTAN:
-
-<blockquote>
-<a href="ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/" 
-class="offsite">ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/</a><br>
-<a href="ftp://ftp.dante.de/tex-archive/support/ps_view/" 
-class="offsite">ftp://ftp.dante.de/tex-archive/support/ps_view/</a>
-</blockquote>
-
-<p>
-<b><tt>ps_view's</tt></b> authors are Boguslaw Jackowski and Piotr
-Pianowsky
-&lt;<a href="mailto:P.Pianowski@gust.org.pl">P.Pianowski@gust.org.pl</a>&gt;.
-</dl>
-
-<dl>
-<dt><b><tt>psv</tt></b>
-<dd><b><tt>PSV</tt></b>, another keyboard-based PostScript viewing package
-for DOS, appears to be redistributable with no restrictions.  It was once
-available from
-
-<blockquote>
-ftp://puccini.ujf-grenoble.fr/pub/contrib-ps/DOS-PSV/
-</blockquote>
-</dl>
-
-<h4><a name="Previewer_Linux"></a>A previewer for Linux</h4>
-
-<dl>
-<dt><b><tt>BMV</tt></b> <dd>Jan Kybic has created a Ghostscript-based
-bitmap previewing program for Linux called <b><tt>BMV</tt></b>, which
-doesn't use X Windows but is based on <b><tt>svgalib</tt></b>.  He says
-there is a port of <b><tt>BMV</tt></b> for SCO Unix by William Bader.
-<b><tt>BMV</tt></b> is available from
-
-<blockquote>
-<a
-href="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz" 
-class="offsite">ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz</a>
-</blockquote>
-</dl>
-
-<hr>
-
-<h3><a name="Fonts"></a>Fonts</h3>
-
-<p>
-The <a href="Fonts.htm">fonts available for Ghostscript</a>, and how to use
-and add fonts in general, are extensively documented.  See
-<a href="Fonts.htm">that documentation</a> for (almost) all information
-about fonts.  Nelson Beebe maintains a useful set of information about
-PostScript Type 1 fonts, including sources for freely distributable and
-commercially licensed fonts and an extensive list of Unix systems and the
-fonts available for them:
-
-<blockquote>
-<a
-href="http://www.math.utah.edu/~beebe/fonts/postscript-type-1-fonts.html" 
-class="offsite">http://www.math.utah.edu/~beebe/fonts/postscript-type-1-fonts.html</a>
-</blockquote>
-
-<hr>
-
-<h3><a name="Related_programs"></a>Related programs</h3>
-
-<dl>
-<dt><b><tt>genscript</tt></b>
-<dd><b><tt>genscript</tt></b> is a free replacement for the
-<b><tt>enscript</tt></b> program.  <b><tt>genscript</tt></b> converts plain
-text files to PostScript and sends the generated PostScript output to the
-specified printer or to a file.  <b><tt>genscript</tt></b> can be easily
-extended to handle different output media, and it has many options which can
-be used to customize printouts, including 2-up printing, pagination, complex
-headers, and many more.  You can find the current version at
-
-<blockquote>
-<a href="http://www.iki.fi/~mtr/genscript/" 
-class="offsite">http://www.iki.fi/~mtr/genscript/</a> (home page)<br>
-<a href="ftp://ftp.gnu.org/pub/gnu/" 
-class="offsite">ftp://ftp.gnu.org/pub/gnu/enscript/</a>enscript-*.tar.gz
-</blockquote>
-
-<dt><b><tt>pdf2html</tt></b>
-<dd><b><tt>pdf2html</tt></b> is a free utility that converts PDF to PNG
-images wrapped in HTML files.  It doesn't preserve the text of the PDF, only
-the appearance.  You can find the current version at
-
-<blockquote>
-<a href="ftp://atrey.karlin.mff.cuni.cz/pub/local/clock/pdf2html"
-class="offsite">
-ftp://atrey.karlin.mff.cuni.cz/pub/local/clock/pdf2html</a>
-</blockquote>
-
-<dt><b><tt>pstotext</tt></b>
-<dd>A good free utility <b><tt>pstotext</tt></b> uses Ghostscript to extract
-plain text from PostScript files.  It is much better than the
-<b><tt>ps2ascii</tt></b> utility distributed with Ghostscript.  You can read
-the <b><tt>pstotext</tt></b> documentation at
-
-<blockquote>
-<a
-href="http://www.research.digital.com/SRC/virtualpaper/manpages/pstotext.1.html" 
-class="offsite">http://www.research.digital.com/SRC/virtualpaper/manpages/pstotext.1.html</a>
-</blockquote>
-
-<p>
-and download the <b><tt>pstotext</tt></b> kit from
-
-<blockquote>
-<a href="http://www.research.digital.com/SRC/virtualpaper/pstotext.html" 
-class="offsite">http://www.research.digital.com/SRC/virtualpaper/pstotext.html</a>
-</blockquote>
-
-<p>
-<b><tt>pstotext</tt></b> is unsupported, but the authors,
-Paul McJones
-&lt;<a href="mailto:paul.mcjones@acm.org">paul.mcjones@acm.org</a>&gt;
-and Andrew Birrell
-&lt;<a href="mailto:birrell@pa.dec.com">birrell@pa.dec.com</a>&gt;, are
-happy to have your questions and comments either by e-mail or <a href="http://www.research.digital.com/SRC/virtualpaper/comments.html" 
-class="offsite">here</a>
-
-<p>
-For more information about the authors' Virtual Paper project, which
-attempts to make on-line reading of lengthy material (like research
-reports, manuals, or entire books) comfortable, read:
-
-<blockquote>
-<a href="http://www.research.digital.com/SRC/virtualpaper" 
-class="offsite">http://www.research.digital.com/SRC/virtualpaper</a>
-</blockquote>
-
-<dt><b><tt>PreScript</tt></b>
-<dd>This is another good free utility that uses Ghostscript to extract text
-from PostScript or PDF files.  It can also generate very simple HTML,
-keeping some of the formatting.  It is unsupported, but is the product of an
-active research project.  Its home page is:
-
-<blockquote>
-<a href="http://www.nzdl.org/html/prescript.html" 
-class="offsite">http://www.nzdl.org/html/prescript.html</a>
-</blockquote>
-
-</dl>
-
-<hr>
-
-<h2><a name="Need_help"></a>If you need help</h2>
-
-<p>
-The list of Frequently Asked Questions (FAQ) isn't updated very often, so
-it may be somewhat out of date.  It's available from
-
-<blockquote>
-<a href="http://www.cs.wisc.edu/~ghost/doc/faq.htm" 
-class="offsite">http://www.cs.wisc.edu/~ghost/doc/faq.htm</a><br>
-<a href="ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/faq.htm" 
-class="offsite">ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/faq.htm</a>
-</blockquote>
-
-<p>
-or by AFS from
-
-<blockquote>
-/afs/cs.wisc.edu/p/mirror/pub/mirrors/ghost/faq.htm
-</blockquote>
-
-<p>
-CompuServe announced in December 1995 that the Graphics Support Forum offers
-Message Section and Library 21, "Ghostscript", for technical assistance with
-Ghostscript.  Ghostscript is available for downloading in Library 21,
-"Ghostscript." To access the Graphics Support Forum, <b><tt>GO
-GRAPHSUP</tt></b>.  This service has no connection with the main Ghostscript
-developers.
-
-<p>
-artofcode LLC doesn't respond to questions from users of the freely
-available versions of Ghostscript.  (Responding to questions and problem
-reports is one of the benefits that <a href="#Commercial_use">Artifex
-Software</a> provides to commercial users in exchange for the licensing
-fee.)  If you have problems with Ghostscript and you have access to the
-Internet, we suggest to post your question to one of these Usenet
-newsgroups:
-
-<dl>
-<dt><b><tt><a href="news:gnu.ghostscript.bug">gnu.ghostscript.bug</a></tt></b>
-<dd>if your question is about <b>GNU Ghostscript</b> (currently versions
-5.10 and below).  If you have access to Internet mail, but not Usenet news,
-write to <b><tt>bug-ghostscript@gnu.org</tt></b>, which is equivalent to
-posting to that newsgroup.
-
-<dt><b><tt><a href="news:comp.lang.postscript">comp.lang.postscript</a></tt></b>
-<dd>if your question is about <b>AFPL Ghostscript</b> (currently
-versions 5.50 and above).  If you have access to Internet mail, but not Usenet
-news, write to <b><tt>comp.lang.postscript@aladdin.com</tt></b>, which is
-equivalent to posting to that newsgroup.  We hope to establish a separate
-newsgroup for AFPL Ghostscript in the future, since
-<b><tt>comp.lang.postscript</tt></b> was not intended for Ghostscript
-discussion <em>per se</em>.
-</dl>
-
-<p>
-There are hundreds of Ghostscript user sites all over the world, and another
-user will often be able to help you.  If you have trouble with a specific
-device driver, look at <b><tt>devs.mak</tt></b> and
-<b><tt>contrib.mak</tt></b> in the Ghostscript source directory to see in
-which file the driver is defined.  If it's defined in
-<b><tt>contrib.mak</tt></b>, the list of contributed drivers, please contact
-the author directly: the maintainers of Ghostscript can't help you with
-user-maintained drivers.
-
-<h3><a name="Reporting_problems"></a>Reporting problems</h3>
-
-<p>
-Please read <a href="Bug-info.htm">Bug-info.htm</a> for information about
-reporting problems.
-
-<hr>
-
-<h2><a name="Contacting_us"></a>Contacting Ghostscript headquarters</h2>
-
-<p>
-As of mid-September 2000, artofcode LLC is responsible for the future
-development of Ghostscript.  Please do not contact us if all you want is
-help with the freely distributed versions of Ghostscript!  Ghostscript is
-free, but our time is not.  If you call for help, we will tell you politely
-that we cannot answer your question.  Ghostscript's documentation, while not
-of commercial end-user quality, has been adequate for thousands of users
-(for many of whom English is a foreign language), so the answer to your
-question is very likely in it somewhere.
-
-<p>
-Here is our contact information:
-
-<blockquote><address>
-Raph Levien<br>
-artofcode LLC<br>
-940 Tyler St. Studio 6<br>
-Benicia, CA 94510<br>
-tel/fax +1 707 746 6398<br>
-<a href="mailto:raph@artofcode.com">raph@artofcode.com</a>
-</address></blockquote>
-
-<h3>Aladdin Enterprises</h3>
-
-<p>
-We at Aladdin Enterprises, the original authors of Ghostscript, are no
-longer responsible for Ghostscript, but we may be available for small
-contract projects.  Here is our contact information:
-
-<blockquote><address>
-Aladdin Enterprises<br>
-203 Santa Margarita Avenue<br>
-Menlo Park, CA 94025 U.S.A.<br>
-+1-650-322-1734 fax<br>
-<a href="mailto:ghost@aladdin.com">ghost@aladdin.com</a><br>
-<a href="http://www.ghostscript.com/"
-class="offsite">http://www.ghostscript.com/</a>
-</address></blockquote>
-
-<p>
-If you want help with Ghostscript, or want to report a problem, please do
-not contact us.  We will not be able to help you.
-
-<hr>
-
-<h2><a name="How_to_help"></a>How you can help improve Ghostscript</h2>
-
-<p>
-The most valuable thing you can do to help improve Ghostscript is to help
-test it.  We make three different grades of release available, each of
-which needs a different kind of testing.
-
-<ul>
-<li><em>Stable</em> releases are made available about every 9 months, after
-a beta test period.  Reporting problems as described <a
-href="#Reporting_problems">above</a> often results in a fix being posted on
-our Web site.
-</ul>
-
-<ul>
-<li><em>Beta</em> releases are posted starting about 6 weeks before a
-planned public release.  These are candidates for public release, and need
-intensive testing.
-</ul>
-
-<ul>
-<li><em>Development</em> releases are posted every few weeks.  These are not
-supposed to be good enough for general use, but testing them is still very
-helpful, since it gets problems corrected before the intensive beta test
-period.
-</ul>
-
-<p>
-You can always find the current public release and the current beta or
-tester release on our <a href="http://www.cs.wisc.edu/~ghost/">Web
-site</a>.  If you would like to be notified when new beta or tester releases
-are posted, please <a href="#Contacting_us">contact us</a>.
-
-<p>
-There are also some useful projects that we don't have enough resources to
-work on, and with which we would appreciate help.  See <a
-href="Projects.htm">this list</a> for details.
-
-<hr>
-
-<h2><a name="Acknowledgments"></a>Acknowledgements</h2>
-
-<p>
-Ghostscript was originally created, and through the year 2000 was primarily
-developed and maintained, by L. Peter Deutsch, President of Aladdin
-Enterprises (not to be confused with Peter J. Deutsch, founder of Bunyip
-Information Systems Inc.).
-
-<p>
-Special thanks are due to Russell Lang, for the
-<b><tt>GSview for Windows</tt></b> and
-<b><tt>PM GSview</tt></b> programs, and for contributing most of the code for
-the Microsoft Windows and OS/2 environments; to Tim Theisen, for the
-<b><tt>Ghostview</tt></b> program for X Windows and for major contributions
-to, and assistance with support of, the code for the X Windows
-environment; to Martin Fong and Mark Lentczner, for the first Macintosh
-ports; to Pete Kaiser
-&lt;<a href="mailto:kaiser@acm.org">kaiser@acm.org</a>&gt;, for redoing all
-of the documentation in HTML;
-and to the <a href="http://www.ijg.org/">Independent
-JPEG Group</a>, to Group 42, Inc., and to Jean-loup Gailly and Mark Adler,
-for creating the freely available libraries that Ghostscript uses.
-
-<p>
-Special thanks are due to URW++ Design and Development Incorporated, of
-Hamburg, Germany (<a href="http://www.urwpp.de/">http://www.urwpp.de/</a>)
-for making a commercial-quality set of the 35 standard PostScript Type 1
-fonts available for free distribution under the GNU and Aladdin licenses,
-and for updating them to include Adobe's expanded PostScript 3 character
-set.
-
-<p>
-Special thanks are due to Richard Stallman and the
-<a href="http://www.gnu.org/" class="offsite">Free Software
-Foundation</a> for originating
-the <a href="http://www.gnu.org/copyleft/gpl.html" class="offsite">GNU
-General Public
-License</a>, for originally motivating Aladdin's interest in creating free
-software, and for being the primary distributor of GNU Ghostscript on the
-Internet.
-
-<p>
-See also the <a href="Helpers.htm">list of the many other people</a> who have
-contributed significantly to improving Ghostscript.
-
-<!-- [2.0 end contents] ==================================================== -->
-
-<!-- [3.0 begin visible trailer] =========================================== -->
-<hr>
-
-<p>
-<small>Copyright &copy; 1996, 2000 Aladdin Enterprises.  All rights
-reserved.</small>
-
-<p>
-<small>This file is part of AFPL Ghostscript.  See the
-<a href="Public.htm">Aladdin Free Public License</a> (the "License") for
-full details of the terms of using, copying, modifying, and redistributing
-AFPL Ghostscript.</small>
-
-<p>
-<small>Ghostscript version 7.04, 31 January 2002
-
-<!-- [3.0 end visible trailer] ============================================= -->
-
-</body>
-</html>

+ 0 - 132
sys/src/cmd/gs/doc/Tester.htm

@@ -1,132 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Signup form for notification of Ghostscript developer releases</title>
-<!-- $Id: Tester.htm,v 1.14.2.2 2002/02/01 05:31:25 raph Exp $ -->
-<link rel="stylesheet" type="text/css" href="gs.css" title="Ghostscript Style">
-</head>
-
-<body>
-<!-- [1.0 begin visible header] ============================================ -->
-
-<!-- [1.1 begin headline] ================================================== -->
-
-<h1>Signup form for notification of Ghostscript developer releases</h1>
-
-<!-- [1.1 end headline] ==================================================== -->
-
-<!-- [1.2 begin table of contents] ========================================= -->
-
-<!-- [1.2 end table of contents] =========================================== -->
-
-<!-- [1.3 begin hint] ====================================================== -->
-
-<p>
-This document contains a form that you can fill out if you would like to be
-informed by e-mail when new pre-public-release Ghostscript filesets are made
-available. Note: the processes are changing somewhat, so this file is
-fairly out of date. The beta mailing lists are now public and archived.
-Please see the mailing list information at <a
-href="http://www.ghostscript.com/mailman/listinfo"
-class="offsite">www.ghostscript.com</a>.
-
-<!-- [1.3 end hint] ======================================================== -->
-
-<!-- [1.0 end visible header] ============================================== -->
-
-<hr>
-
-<!-- [2.0 begin contents] ================================================== -->
-
-<p>
-If you are interested in testing pre-public-release Ghostscript filesets, or
-in helping develop Ghostscript, please read <a
-href="http://www.cs.wisc.edu/~ghost/doc/AFPL/tester.htm"
-class="offsite">this document</a>.
-Then if you would like to be notified when new filesets are posted, please
-fill out this questionnaire and e-mail as indicated below.
-
-<blockquote>
--------------------------------- cut here --------------------------------
-</blockquote>
-
-<ul>
-<li>	Your name:<br><br>
-<li>	Your mailing address:<br><br>
-<li>	The name, and a brief description, of the organization you work for
-	  (if you are working with Ghostscript in connection with an
-	  organization):<br><br>
-<li>	Your telephone number (daytime, and home if you wish):<br><br>
-<li>	Your e-mail address(es):<br><br>
-<li>	Your areas of professional interest and expertise:<br><br>
-<li>	What you are using, or want to use, Ghostscript for:<br><br>
-<li>	The hardware and software (OS and window system) that you will use
-	  for running the software:<br><br>
-<li>	Whether you would like to participate in testing for the next
-	  release and/or future releases:<br><br>
-</ul>
-
-<blockquote>
--------------------------------- cut here --------------------------------
-</blockquote>
-
-<p>
-We don't share any of the above information with anyone else, with two
-exceptions:
-
-<ul><li>
-If someone needs help getting the Ghostscript files (because they
-have a slow modem or no FTP access), we will sometimes refer them to a
-nearby user from this list.  In this case, we give them only the name, city,
-and e-mail address.
-</ul>
-
-<ul><li>
-One of the documentation files included with Ghostscript includes a
-thank-you for all the people who have helped develop and test it.
-</ul>
-
-<p>
-If you prefer that we not use your name even in these ways, please let us know.
-
-<p>
-If you are interested in testing Ghostscript on the Macintosh platform,
-please mail the completed questionnaire to <a
-href="mailto:mac-gs-beta-request@aladdin.com">mac-gs-test-request@aladdin.com</a>.
-If you are interested in testing Ghostscript on platforms other than the
-Macintosh, please mail the completed questionnaire to <a
-href="mailto:gs-test-request@aladdin.com">gs-test-request@aladdin.com</a>.
-(Of course, you can mail it to both places if appropriate.)
-
-<p>
-Please do not distribute pre-public-release filesets outside your
-organization.  You are welcome to direct people to <a
-href="http://www.cs.wisc.edu/~ghost/doc/AFPL/tester.htm"
-class="offsite">http://www.cs.wisc.edu/~ghost/doc/AFPL/tester.htm</a>, where they can find
-out about getting these filesets.
-
-<p>
-Thanks again for being willing to help improve Ghostscript.
-
-<!-- [2.0 end contents] ==================================================== -->
-
-<!-- [3.0 begin visible trailer] =========================================== -->
-<hr>
-
-<p>
-<small>Copyright &copy; 1999 Aladdin Enterprises.  All rights
-reserved.</small>
-
-<p>
-<small>This file is part of AFPL Ghostscript.
-See the <a href="Public.htm">Aladdin Free Public License</a> (the
-"License") for full details of the terms of using, copying, modifying,
-and redistributing AFPL Ghostscript.</small>
-
-<p>
-<small>Ghostscript version 7.04, 31 January 2002
-
-<!-- [3.0 end visible trailer] ============================================= -->
-
-</body>
-</html>

+ 0 - 1401
sys/src/cmd/gs/examples/golfer.ps

@@ -1,1401 +0,0 @@
-%!PS-Adobe-2.0 EPSF-1.2
-%%Creator:Adobe Illustrator(TM) 1.0b2-
-%%Title:golfer art+
-%%CreationDate:1/6/87 9:32 AM
-%%DocumentFonts:Helvetica-Bold
-%%BoundingBox:7 31 577 726
-%%TemplateBox:0 -48 576 672
-%%EndComments
-/golfersave save def		% prevent left over effects
-100 dict begin
-/q{bind def}bind def
-/Q{load def}q
-/x{exch def}q
-/X/def Q
-/g{/_g x/p{_g setgray}X}q
-/G{/_G x/P{_G setgray}X}q
-/k{/_b x/_g x/_r x/p{_r _g _b setrgbcolor}X}q
-/K{/_B x/_G x/_R x/P{_R _G _B setrgbcolor}X}q
-/d/setdash Q
-/i/setflat Q
-/j/setlinejoin Q
-/J/setlinecap Q
-/M/setmiterlimit Q
-/w/setlinewidth Q
-/_C{.25 sub round .25 add}q
-/_c{transform _C exch _C exch itransform}q
-/c{_c curveto}q
-/C/c Q
-/v{currentpoint 6 2 roll _c curveto}q
-/V/v Q
-/y{_c 2 copy curveto}q
-/Y/y Q
-/l{_c lineto}q
-/L/l Q
-/m{_c moveto}q
-/_e[]X
-/_E{_e length 0 ne{gsave 1 g 0 G 1 i 0 J 0 j .5 w 10 M[]0 d
-/Helvetica-Bold 24 0 0 1 z
-[0.966 0.259 -0.259 0.966
-_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div]a
-(ERROR: can't fill a path)t T grestore}if}q
-/n/newpath Q
-/N/newpath Q
-/F{p{fill}stopped{/_e[pathbbox]X n _E}if}q
-/f{closepath F}q
-/S{P stroke}q
-/s{closepath S}q
-/B{gsave F grestore S}q
-/b{closepath B}q
-/u{}q
-/U{}q
-/_s/ashow Q
-/_S{(?)exch{2 copy 0 exch put pop dup true charpath currentpoint _m setmatrix
-stroke _M setmatrix moveto 3 copy pop rmoveto}forall pop pop pop n}q
-/_A{_a moveto _t exch 0 exch}q
-/_L{0 _l neg translate _M currentmatrix pop}q
-/_w{dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch}q
-/_z[{0 0}bind{dup _w exch neg 2 div exch neg 2 div}bind
-{dup _w exch neg exch neg}bind]X
-/z{_z exch get/_a x/_t x/_l x exch findfont exch scalefont setfont}q
-/_d{matrix currentmatrix X}q
-/_D{/_m _d gsave concat/_M _d}q
-/e{_D p/t{_A _s _L}X}q
-/r{_D P/t{_A _S _L}X}q
-/a{_D/t{dup p _A _s P _A _S _L}X}q
-/o{_D/t{pop _L}X}q
-/T{grestore}q
-/Z{findfont begin currentdict dup length dict begin
-{1 index/FID ne{X}{pop pop}ifelse}forall/FontName exch X dup length 0 ne
-{/Encoding Encoding 256 array copy X 0 exch{dup type/nametype eq
-{Encoding 2 index 2 index put pop 1 add}{exch pop}ifelse}forall}if pop
-currentdict dup end end/FontName get exch definefont pop}q
-n
-%%EndProlog
-u
-0.9 g
-0 G
-1 i
-0 J
-0 j
-1 w
-10 M
-[]0 d
-%%Note:
-15.815 40.248 m
-567.815 40.002 L
-567.748 716.565 L
-15.998 716.81 L
-15.815 40.248 L
-b
-U
-1 g
-285.313 40 m
-567.688 40.125 L
-567.812 78.375 L
-285.312 78.25 L
-285.313 40 L
-b
-0 g
-175.5 163 m
-180.007 163 173.738 169.081 171.75 168.75 c
-174.75 169.25 176.25 169.5 174.5 171.25 C
-178 171.25 176.349 173.783 175 176.75 c
-173.75 179.5 170.75 182.25 168.25 182 C
-165.5 181.25 167.622 182.838 165.25 186 c
-164.5 187 164.75 187.5 161.75 186.75 c
-158.75 186 163.25 190 156.75 190 c
-150.25 190 148.5 189 145.5 186 c
-142.5 183 139.75 183.75 139.5 182.5 c
-139.25 181.25 139.5 176.75 138.75 175.5 c
-138 174.25 136.75 174.25 136.25 178 c
-135.75 181.75 140.25 182.25 134 187 C
-135.75 190.75 134.5 191.75 131 193.5 C
-131 200 129.202 203.364 119.5 208.5 c
-115.25 210.75 107 212.75 104.75 208.75 c
-102.5 204.75 103 206.5 96.5 205.75 c
-90 205 87.25 202.5 86.5 197.75 c
-85.75 193 82.75 195 79 194.75 c
-75.25 194.5 77 192.75 77.25 191.75 c
-77.5 190.75 75.25 192.5 71.5 192 c
-67.75 191.5 64.25 185.5 69.5 180.75 c
-74.75 176 66.5 180.75 64.25 182.25 c
-62 183.75 60.5 181.75 61 180.25 c
-61.5 178.75 58.75 180.75 57.5 180.75 c
-56.25 180.75 51.008 180.188 52 172.25 c
-52.25 170.25 51.5 170.5 49.75 169.25 c
-48 168 45.75 164.25 48.5 158.75 c
-51.25 153.25 49 150 48 145.5 c
-47 141 48 138.25 51.25 137.25 c
-54.5 136.25 54 133.791 54 130.75 C
-57 130.5 59 129.25 58.75 124.5 C
-62.25 124.5 61.75 126.75 62.5 130 c
-63.25 133.25 65.75 129 66.25 127 c
-66.75 125 67.5 125 72 125 C
-74.75 116.25 74.75 120.5 75.25 117.25 C
-80 117.5 79.5 116.75 83.25 113.75 c
-87 110.75 88.25 115.5 92 118.5 c
-95.75 121.5 94.25 122.75 96.25 118.75 c
-98.25 114.75 98.5 119 101.5 119.25 c
-104.5 119.5 101 115.75 105.25 114.5 c
-109.5 113.25 105 113.75 103.5 111.25 c
-102 108.75 95 103.5 101.75 101.5 c
-108.5 99.5 103.5 99.75 94.75 99.5 c
-86 99.25 73.75 87.5 97.25 73.25 C
-117.25 53.25 117.25 53.5 v
-117.25 53.75 175.25 163 175.5 163 c
-f
-1 J
-0.2 w
-389.709 210.076 m
-511.826 210.076 l
-S
-394.709 212.461 m
-516.826 212.461 l
-S
-415.459 215.112 m
-537.576 215.112 l
-S
-399.709 217.762 m
-521.826 217.762 l
-S
-402.459 222.799 m
-524.576 222.799 l
-S
-402.709 225.45 m
-524.826 225.45 l
-S
-392.959 227.851 m
-515.076 227.851 l
-S
-400.691 232.856 m
-522.809 232.856 l
-S
-388.191 235.241 m
-510.309 235.241 l
-S
-393.941 237.892 m
-516.059 237.892 l
-S
-393.441 240.292 m
-515.559 240.292 l
-S
-396.191 242.928 m
-518.309 242.928 l
-S
-386.441 245.579 m
-508.559 245.579 l
-S
-393.191 248.23 m
-515.309 248.23 l
-S
-414.191 250.631 m
-536.309 250.631 l
-S
-397.95 252.973 m
-520.067 252.973 l
-S
-398.7 255.358 m
-520.817 255.358 l
-S
-400.7 258.009 m
-522.817 258.009 l
-S
-384.45 260.659 m
-506.567 260.659 l
-S
-380.7 265.696 m
-502.817 265.696 l
-S
-379.95 268.347 m
-502.067 268.347 l
-S
-386.7 270.748 m
-508.817 270.748 l
-S
-394.433 275.752 m
-516.55 275.752 l
-S
-381.933 278.138 m
-504.05 278.138 l
-S
-379.433 280.789 m
-501.55 280.789 l
-S
-383.183 283.189 m
-505.3 283.189 l
-S
-370.433 285.825 m
-492.55 285.825 l
-S
-382.433 288.476 m
-504.55 288.476 l
-S
-356.183 291.127 m
-478.3 291.127 l
-S
-372.433 293.277 m
-494.55 293.277 l
-S
-361.866 296.006 m
-483.984 296.006 l
-S
-365.616 298.406 m
-487.734 298.406 l
-S
-366.866 301.042 m
-488.984 301.042 l
-S
-346.866 303.693 m
-468.984 303.693 l
-S
-338.616 306.344 m
-460.734 306.344 l
-S
-330.866 308.494 m
-452.984 308.494 l
-S
-301.575 344.342 m
-423.692 344.342 l
-S
-314.075 346.728 m
-436.192 346.728 l
-S
-318.325 349.378 m
-440.442 349.378 l
-S
-312.075 352.029 m
-434.192 352.029 l
-S
-327.325 357.065 m
-449.442 357.065 l
-S
-327.575 359.716 m
-449.692 359.716 l
-S
-317.825 362.117 m
-439.942 362.117 l
-S
-335.558 367.122 m
-457.675 367.122 l
-S
-313.058 369.507 m
-435.175 369.507 l
-S
-318.808 372.158 m
-440.925 372.158 l
-S
-317.579 404.674 m
-439.696 404.674 l
-S
-322.312 409.179 m
-444.429 409.179 l
-S
-323.812 412.065 m
-445.929 412.065 l
-S
-329.562 414.715 m
-451.679 414.715 l
-S
-329.062 417.116 m
-451.179 417.116 l
-S
-331.812 419.752 m
-453.929 419.752 l
-S
-322.062 422.402 m
-444.179 422.402 l
-S
-328.812 425.053 m
-450.929 425.053 l
-S
-349.812 427.454 m
-471.929 427.454 l
-S
-333.571 429.796 m
-455.688 429.796 l
-S
-334.321 432.182 m
-456.438 432.182 l
-S
-336.321 434.832 m
-458.438 434.832 l
-S
-320.071 437.483 m
-442.188 437.483 l
-S
-316.321 442.519 m
-438.438 442.519 l
-S
-315.571 445.17 m
-437.688 445.17 l
-S
-322.321 447.571 m
-444.438 447.571 l
-S
-330.054 452.576 m
-452.171 452.576 l
-S
-317.554 454.961 m
-439.671 454.961 l
-S
-315.054 457.612 m
-437.171 457.612 l
-S
-318.804 460.012 m
-440.921 460.012 l
-S
-306.054 462.648 m
-428.171 462.648 l
-S
-300.054 465.299 m
-422.171 465.299 l
-S
-291.804 467.95 m
-413.921 467.95 l
-S
-308.054 470.101 m
-430.171 470.101 l
-S
-260.834 543.511 m
-382.951 543.511 l
-S
-246.066 548.016 m
-368.184 548.016 l
-S
-256.066 550.901 m
-378.184 550.901 l
-S
-253.566 553.552 m
-375.684 553.552 l
-S
-230.316 555.952 m
-352.434 555.952 l
-S
-244.566 558.588 m
-366.684 558.588 l
-S
-238.566 561.239 m
-360.684 561.239 l
-S
-230.316 563.89 m
-352.434 563.89 l
-S
-216.566 565.541 m
-338.684 565.541 l
-S
-104.443 572.01 m
-226.575 572.209 l
-S
-98.682 567.48 m
-220.814 567.68 l
-S
-91.688 565.11 m
-213.82 565.31 l
-S
-97.192 561.955 m
-219.324 562.155 l
-S
-73.943 559.517 m
-196.075 559.717 l
-S
-88.199 556.904 m
-210.331 557.103 l
-S
-82.203 554.243 m
-204.335 554.443 l
-S
-73.956 551.578 m
-196.088 551.778 l
-S
-73.707 549.405 m
-195.839 549.605 l
-S
-85.302 539.953 m
-207.434 540.152 l
-S
-79.541 535.423 m
-201.673 535.623 l
-S
-72.547 533.053 m
-194.679 533.253 l
-S
-78.051 529.898 m
-200.183 530.098 l
-S
-54.802 527.46 m
-176.934 527.66 l
-S
-69.058 524.847 m
-191.19 525.046 l
-S
-63.061 522.186 m
-185.194 522.385 l
-S
-54.815 519.521 m
-176.947 519.721 l
-S
-54.566 517.348 m
-176.698 517.547 l
-S
-u
-189.475 196.879 m
-311.592 196.879 l
-S
-176.975 199.265 m
-299.092 199.265 l
-S
-174.475 201.916 m
-296.592 201.916 l
-S
-178.225 204.316 m
-300.342 204.316 l
-S
-165.475 206.952 m
-287.592 206.952 l
-S
-177.475 209.603 m
-299.592 209.603 l
-S
-155.725 212.254 m
-277.842 212.254 l
-S
-167.475 214.404 m
-289.592 214.404 l
-S
-156.908 217.133 m
-279.026 217.133 l
-S
-144.658 219.533 m
-266.776 219.533 l
-S
-161.908 222.169 m
-284.026 222.169 l
-S
-153.908 224.82 m
-276.026 224.82 l
-S
-163.658 226.971 m
-285.776 226.971 l
-S
-152.408 229.121 m
-274.526 229.121 l
-S
-145.925 233.316 m
-268.042 233.316 l
-S
-157.675 235.466 m
-279.792 235.466 l
-S
-147.108 238.195 m
-269.226 238.195 l
-S
-134.858 240.595 m
-256.976 240.595 l
-S
-137.608 243.231 m
-259.726 243.231 l
-S
-144.108 245.882 m
-266.226 245.882 l
-S
-153.858 248.033 m
-275.976 248.033 l
-S
-155.108 231.183 m
-277.226 231.183 l
-S
-103.425 247.816 m
-225.542 247.816 l
-S
-100.175 249.966 m
-222.292 249.966 l
-S
-89.608 252.695 m
-211.726 252.695 l
-S
-77.358 255.095 m
-199.476 255.095 l
-S
-U
-u
-1 g
-0 J
-1 w
-120.001 389.999 m
-170.811 344.713 248.714 349.191 294.001 400.001 c
-339.287 450.811 334.809 528.714 283.999 574.001 c
-233.189 619.287 155.286 614.809 109.999 563.999 c
-64.713 513.189 69.191 435.286 120.001 389.999 c
-f
-202 482 m
-F
-U
-u
-258 302 m
-306.6 267.759 373.759 279.4 408 328 c
-442.241 376.6 430.6 443.759 382 478 c
-333.4 512.241 266.241 500.6 232 452 c
-197.759 403.4 209.4 336.241 258 302 c
-f
-320 390 m
-F
-U
-u
-196 376 m
-252.332 345.072 323.072 365.668 354 422 c
-384.928 478.332 364.332 549.072 308 580 c
-251.668 610.928 180.928 590.332 150 534 c
-119.072 477.668 139.668 406.928 196 376 c
-f
-252 478 m
-F
-U
-u
-106 257 m
-170.064 231.595 242.595 262.936 268 327 c
-293.405 391.064 262.064 463.595 198 489 c
-133.936 514.405 61.405 483.064 36 419 c
-10.595 354.936 41.936 282.405 106 257 c
-f
-152 373 m
-F
-U
-u
-366.001 122 m
-415.706 97.7 475.7 118.296 500 168.001 c
-524.3 217.706 503.704 277.7 453.999 302 c
-404.294 326.3 344.3 305.704 320 255.999 c
-295.7 206.294 316.296 146.3 366.001 122 c
-f
-410 212 m
-F
-U
-u
-227.999 198 m
-267.763 185.85 309.849 208.236 322 247.999 c
-334.15 287.763 311.764 329.849 272.001 342 c
-232.237 354.15 190.151 331.764 178 292.001 c
-165.85 252.237 188.236 210.151 227.999 198 c
-f
-250 270 m
-F
-U
-0 g
-15.75 71.25 m
-24.25 82.75 24.75 84.75 27.75 82.25 c
-30.75 79.75 31.75 81.25 32.75 82.75 c
-33.75 84.25 30.75 86.75 35.75 88.75 c
-40.75 90.75 41.25 91.75 43.25 89.75 c
-45.25 87.75 39.25 89.25 50.25 88.75 c
-61.25 88.25 70.25 81.75 74.25 75.25 c
-78.25 68.75 77.75 67.25 75.25 63.25 c
-72.75 59.25 68.25 56.75 72.25 57.25 c
-76.25 57.75 75.75 60.75 77.75 56.75 c
-79.75 52.75 80.25 51.25 79.25 49.25 c
-78.25 47.25 74.25 46.75 81.25 46.25 c
-88.25 45.75 91.75 37.557 91.75 40.25 c
-15.752 40.248 l
-15.75 71.25 l
-f
-340.75 55.5 m
-F
-u
-u
-3 w
-280.774 44.223 m
-567.893 44.223 l
-S
-280.774 48.728 m
-567.893 48.728 l
-S
-280.774 53.734 m
-567.893 53.734 l
-S
-U
-u
-280.774 58.739 m
-567.893 58.739 l
-S
-280.774 63.245 m
-567.893 63.245 l
-S
-280.774 68.251 m
-567.893 68.251 l
-S
-U
-u
-280.774 73.257 m
-567.893 73.257 l
-S
-280.774 78.263 m
-567.893 78.263 l
-S
-U
-U
-0.8 g
-0.2 w
-243 252 m
-323 235 l
-346 273 l
-368 248 l
-376 247 376 248 V
-377 174 380.5 121 330.5 40 C
-90.5 40 91.5 40 V
-138.5 129 163 162 214 200 C
-236 229 234.527 240.11 238 254 c
-240 262 243 252 y
-b
-0.5 g
-359.5 485 m
-389.267 485 402.5 486.25 415.75 489 c
-429 491.75 435 493.25 439 493.5 c
-443 493.75 490.398 537.797 502.5 562 c
-507 571 514.5 577 517.5 579.5 c
-520.5 582 501.5 591 y
-428 512 428 512.5 v
-428 513 356.5 510 356 509.5 c
-355.5 509 351 488 y
-359 485 359.5 485 v
-b
-0.7 g
-370 496.5 m
-368 480.5 365.5 472.5 364.5 471.5 C
-329.5 476.5 l
-323.5 489.5 l
-370 496.5 l
-b
-0.5 g
-352.75 494 m
-380 493.25 399.626 496.75 407.5 499 c
-418 502 424.586 497.135 432.75 505.5 c
-453 526.25 473.5 544.5 496.5 586.5 C
-473.5 590 473.5 590.5 V
-456 571.5 443 563.5 434 558 c
-425 552.5 416 544 408.5 534.5 C
-399 533 379.5 537.5 364 537.5 c
-348.5 537.5 352.75 494 y
-b
-1 g
-500 583 m
-500.5 577.098 517 573.5 520.5 572 c
-524 570.5 526.353 568.989 526.5 579 c
-526.675 590.992 541 586 539 624 C
-538.5 624 506 628 y
-499.958 583.498 500 583 v
-b
-0 g
-1 J
-3 w
-562 629 m
-343 645 217 644 77 601 C
-52 576 L
-59.5 562 80.132 560.877 87 589 c
-89.513 599.292 87 597 101 601 c
-108.323 603.092 265 654 561 617 C
-562 629 l
-f
-1 G
-0 J
-0.7 w
-305 634 m
-391.5 636.5 415 635 473 632 c
-S
-0.5 w
-213 626.5 m
-153.5 619 125.925 611.699 90.75 602.5 c
-78.654 599.337 82.567 597.884 82.5 592 c
-82.395 582.717 73.75 571 59 572.5 c
-S
-1 g
-0 G
-1 w
-73 595.25 m
-79.25 592.5 76.25 574.75 57.25 580 C
-73 595.25 l
-f
-0.5 g
-0.2 w
-312 574.25 m
-311.25 570.5 310.687 571.687 306.187 569.187 C
-307.687 564.187 311.106 565.66 304.5 561.5 c
-302.594 560.299 305.598 556.561 305.75 555.5 c
-306.038 553.485 304.629 548.098 297 548.5 c
-292.25 548.75 255.5 536 y
-229.5 608.5 l
-224 650 224.5 650 v
-248.101 650 273.345 678.918 298 655.5 c
-324.857 629.99 316.981 613.501 316.75 612.875 c
-313.346 603.644 313.238 604.937 314.75 597.375 c
-316.88 586.725 317.016 588.834 318.625 584.75 C
-320.25 581.875 318.625 580.375 y
-316.689 578.236 313.081 579.809 310.375 579 c
-307.013 577.994 312 574.25 y
-B
-0 g
-0.5 w
-288.5 456 m
-S
-0.2 w
-211 511 m
-194.5 518.5 187 520.5 170.5 500 C
-154.5 498.5 149.5 501 131.5 479.5 C
-151 477.5 140 475 161 460 c
-182 445 190.5 436.5 212 461 C
-224.5 458 229 454.5 238.5 447 C
-238 446.5 237 500.5 y
-211 511 l
-f
-1 g
-207.5 526.5 m
-206 514.5 204 506 236 490.5 C
-242.5 509.5 l
-207.5 526.5 l
-b
-0 g
-1 w
-294.464 627.589 m
-288.571 618.522 284.821 617.313 280 615.5 c
-275.179 613.686 271.429 605.224 277.857 587.089 C
-274.107 586.485 275.179 585.88 275.714 582.858 C
-271.429 599.179 270.357 606.433 259.643 609.455 c
-248.929 612.477 245.714 589.507 247.321 566.537 C
-228.572 554.448 L
-224.639 578.851 235.956 576.38 212.5 600.992 c
-194.17 620.226 195.893 654.791 225.357 658.418 C
-223.214 667.485 233.929 678.97 259.107 677.761 c
-284.286 676.552 281.071 667.485 Y
-302.5 667.485 334.964 665.942 301.429 614.895 C
-306.25 639.679 303.571 643.306 296.607 646.933 C
-299.286 634.239 294.464 627.589 y
-f
-0.7 g
-0.2 w
-207.5 524.5 m
-214.75 519.25 241.5 509 y
-239 504.5 l
-232 503 214.5 508.75 206.75 519 C
-207 522.5 207.5 524.5 y
-b
-1 g
-298 546.5 m
-272.625 574.625 248.5 596 195.5 568.5 C
-196.26 524.417 214.492 504.333 239.5 510.5 C
-298 546.5 l
-b
-0.8 g
-351.5 542 m
-367 540 L
-358.5 509.5 357 489.5 357 482 C
-323.5 482.5 295.5 485.5 284.5 477.5 c
-298.5 468.5 l
-299 457 l
-270.5 451 l
-238.5 483.5 l
-241 513.5 l
-250.5 538 252.5 547.5 282.5 550 C
-306.251 550 334.454 541.702 343.687 542.187 C
-342.576 538.175 346.737 538.055 351.5 542 c
-b
-0 g
-1 w
-333.25 484.75 m
-343.25 458.25 371.5 466 349 418.5 C
-359 348.5 378 357 363 336 C
-358.5 333 359 333 v
-359.5 333 353 328 359 327.5 c
-365 327 371 316.5 373.5 253.5 C
-381 245.5 l
-371 221 371 220.5 V
-360.5 247 358 253 351 261.5 C
-340 238 331.5 220.5 328.5 211.5 C
-301 229.5 265 250 232.5 244.5 C
-247.5 287 246 299.5 275 320.5 C
-270 331.5 268.689 334.634 265.75 336.25 c
-255.75 341.75 261.891 340.771 251 375 c
-247.5 386 249.5 384 255.5 399 C
-252.5 397 253.5 401 253.5 402.5 c
-253.5 404 252.057 400.023 251 402.5 c
-235 440 219.5 489.5 249.5 534 C
-238.5 503.5 242.102 477.13 260 463 c
-269.5 455.5 278.75 453.25 291 457.25 C
-297.5 461 299.549 465.787 282 476.75 C
-292.5 487.5 333.25 484.75 y
-f
-457.25 576.25 m
-454.936 574.233 453.51 595.217 479.25 583 C
-495.651 573.321 495.931 560.263 482.5 560.5 C
-486.25 566 491.682 565.465 478.5 575 c
-463.444 585.891 460.318 578.924 457.25 576.25 c
-f
-1 g
-460.75 581.5 m
-463.387 583.699 467.528 583.937 470.5 583.375 c
-473.752 582.76 473.75 581.75 Y
-461.735 583.841 458.891 579.95 460.75 581.5 c
-f
-0 g
-310.393 647.785 m
-329.089 651.66 328.75 623.692 320.178 607.976 C
-319.107 621.274 316.428 636.386 310.536 635.782 c
-304.643 635.177 310.393 647.785 y
-f
-284.286 663.858 m
-286.964 677.157 280.536 689.246 281.071 689.246 C
-289.107 677.761 288.036 665.672 y
-284.286 663.858 l
-f
-0.2 w
-274.643 683.201 m
-278.929 678.97 280 668.694 279.464 665.672 c
-S
-276.25 686.224 m
-284.393 677.036 283.75 662.045 y
-S
-1 w
-297.679 661.44 m
-312.602 661.44 312.143 677.157 310.536 680.784 C
-308.929 672.321 305.179 666.276 292.857 664.463 C
-297.679 661.44 l
-f
-0.2 w
-295 661.44 m
-298.75 666.276 302.5 675.343 294.464 683.201 c
-S
-300.357 681.992 m
-304.265 669.255 303.814 670.807 292.321 656.604 c
-S
-311.821 649.078 m
-321.464 649.078 330.571 646.66 329.5 627.921 c
-S
-307.536 650.892 m
-316.268 651.33 319.057 653.025 326.821 646.056 c
-330.446 642.802 331.1 637.618 331.107 637.593 c
-S
-304.643 665.067 m
-305.629 663.874 321.031 667.072 321.304 651.569 c
-S
-0.5 w
-311.071 639.679 m
-317.893 638.968 312.696 617.332 v
-S
-1 w
-313.375 612.875 m
-315.455 614.262 313.5 617.375 297.125 615.375 C
-310.375 616.625 311.875 611.875 313.375 612.875 c
-f
-1 g
-308.5 604.875 m
-309.833 600.875 309.125 601.25 307.375 599 C
-302.25 600.625 303.25 599.875 299 602.5 C
-304.25 604.75 308.375 605.25 308.5 604.875 c
-f
-0 g
-307.5 604.437 m
-305.463 602.811 305.481 601.49 307.375 598.937 C
-309.261 601.307 309.489 602.172 308.562 605.062 C
-308.562 604.937 308.191 604.989 307.5 604.437 c
-f
-0.2 w
-305.625 583.75 m
-304.687 582.562 306.5 579.375 308.875 579.75 c
-S
-1 w
-311.125 574.5 m
-310.25 573.898 310 573.437 304.937 569.312 C
-306.229 564.611 308.063 564.014 308.312 564.562 C
-309.775 566.476 307.663 569.565 306.687 569.75 C
-311.812 571.75 311.625 572.5 312 574.25 C
-311.687 574.75 311.176 574.535 311.125 574.5 c
-f
-298.625 603 m
-302 600.437 304.294 599.524 307.812 598.937 c
-308.187 598.875 308.562 598.5 308.687 597.875 c
-S
-297.5 602.25 m
-299.939 602.851 307.687 603.062 311.75 607.812 C
-307.812 606 297.011 602.129 297.5 602.25 c
-f
-213.5 576.125 m
-218.674 549.92 230.862 532.355 245.5 526.5 C
-243.75 514.5 209.75 494.25 195.5 568.5 C
-203.75 572.25 213.347 576.901 213.5 576.125 c
-f
-0.2 w
-343.375 541.75 m
-333.375 534.75 318.25 525.5 312 521.25 c
-S
-351.562 541.937 m
-337.936 530.579 327.2 525.581 313.25 517.75 c
-S
-0.3 w
-312.75 495 m
-291.75 483.5 276.25 476 274.25 466 c
-S
-0.5 w
-229 580.75 m
-235.5 571 241.25 554.75 245.75 528 c
-S
-1 w
-235 581 m
-246 555.75 246.75 537.75 245.75 526 C
-252.125 560.5 243.75 567.75 239.75 581.5 C
-240 581.5 237 581.75 235 581 C
-f
-0.7 g
-0.2 w
-248.625 580.5 m
-253.169 564.605 256.75 553.75 250.25 535.75 C
-257.5 552.75 259.125 558.937 252.875 579.687 C
-251.029 580.149 248.517 580.879 248.625 580.5 c
-b
-0 g
-1 w
-258.25 577.75 m
-262.047 567.879 262.5 552.5 259.25 544.25 C
-267.75 548.25 275 549.75 278.25 549.75 C
-281.75 555.25 282.75 556.75 279.5 565.25 C
-270.06 573.13 257.909 578.635 258.25 577.75 c
-f
-207.5 524.5 m
-F
-207.25 514.75 m
-207.185 514.86 228.75 497.5 238 500.75 C
-236 494.5 l
-225 498 213.924 503.454 207.25 514.75 c
-f
-1 g
-0.2 w
-191 516 m
-175.472 497.418 168.5 492 171.5 453 C
-185 443.5 189 443.5 200 450.5 C
-186.5 469.5 182 491 198.5 515.5 C
-194.5 516 191.339 516.406 191 516 c
-b
-201 515 m
-194 499 187 484 203.5 453 C
-206.5 455 211.5 460.5 212 461 C
-203.5 480.5 193.5 501.5 206 510.5 C
-205 499.5 210.5 490.5 232.5 473.5 C
-232.5 483 231.5 482.5 233 492 C
-221 498 210 505 208 512.5 C
-201 515 l
-b
-0 g
-1 G
-0.5 w
-268 442.5 m
-253.5 402.5 l
-S
-269.5 435.5 m
-258.5 407 258.5 407.5 v
-S
-0.5 G
-0.4 w
-293.5 480.5 m
-297.5 463.5 298.5 460.5 289 445.5 c
-S
-1 G
-1 J
-0.3 w
-349.125 418.125 m
-338.393 403.978 348.387 416.158 341.625 408.875 c
-S
-u
-1 g
-0 G
-0 J
-0.2 w
-336.038 340.015 m
-338.267 329.694 L
-342.937 338.843 L
-340.707 349.164 L
-336.038 340.015 L
-b
-339.487 339.429 m
-B
-U
-u
-328.791 340.569 m
-331.562 330.38 L
-335.743 339.762 L
-332.972 349.952 L
-328.791 340.569 L
-b
-332.267 340.166 m
-B
-U
-u
-321.758 340.67 m
-325.133 330.664 L
-328.746 340.28 L
-325.37 350.286 L
-321.758 340.67 L
-b
-325.252 340.475 m
-B
-U
-u
-314.504 340.97 m
-317.88 330.964 L
-321.492 340.58 L
-318.117 350.586 L
-314.504 340.97 L
-b
-317.998 340.775 m
-B
-U
-u
-u
-307.24 340.468 m
-311.982 331.033 L
-314.214 341.059 L
-309.473 350.494 L
-307.24 340.468 L
-b
-310.727 340.764 m
-B
-U
-u
-300.016 339.751 m
-304.757 330.316 L
-306.99 340.342 L
-302.249 349.777 L
-300.016 339.751 L
-b
-303.503 340.047 m
-B
-U
-U
-u
-u
-292.985 339.2 m
-298.349 330.104 L
-299.903 340.258 L
-294.54 349.353 L
-292.985 339.2 L
-b
-296.444 339.729 m
-B
-U
-u
-285.826 338 m
-291.189 328.904 L
-292.744 339.057 L
-287.38 348.153 L
-285.826 338 L
-b
-289.285 338.529 m
-B
-U
-U
-u
-278.742 336.229 m
-285.413 328.042 L
-285.423 338.314 L
-278.753 346.501 L
-278.742 336.229 L
-b
-282.083 337.272 m
-B
-U
-u
-272.228 332.392 m
-279.743 324.974 L
-278.644 335.186 L
-271.13 342.604 L
-272.228 332.392 L
-b
-275.437 333.789 m
-B
-U
-0 g
-1 G
-1 w
-266.25 335.5 m
-276.25 351.5 284.659 350 343 350 c
-364 350 363 336 y
-S
-271 321 m
-294 332 309 335 362 324 c
-S
-u
-1 g
-0 G
-0.2 w
-350.823 325.912 m
-364.33 322.302 L
-361.658 347.078 L
-348.151 350.689 L
-350.823 325.912 L
-b
-356.24 336.495 m
-B
-U
-0 g
-1 w
-274 347.5 m
-281.5 351.5 280.229 357.581 311 338 c
-316.5 334.5 322.5 338 351 357.5 C
-282 360 l
-274 347.5 l
-f
-1 G
-0.5 w
-269.25 355.75 m
-277.75 353.25 284.25 352.5 288.75 349.75 c
-S
-353.25 358.25 m
-347.25 354 345.5 353.5 339.75 349.5 c
-S
-0.3 w
-355.25 272.75 m
-359.75 281.5 361.25 285 363.25 290.75 c
-S
-0.5 G
-0.5 w
-354 219 m
-339 195 327 176 317 166 c
-S
-323 197 m
-310 150 308 135 235 48 c
-S
-1 w
-241 241.5 m
-232 227.5 215.231 198.443 215 198 c
-192.581 155 178 110 164 71 c
-S
-0 G
-0.2 w
-265.394 600.822 m
-263.576 606.114 262.122 612.994 253.035 607.173 C
-250.126 603.468 249.763 601.704 249.763 596.589 c
-249.763 591.473 254.307 592.179 257.76 587.24 c
-261.213 582.301 266.484 579.302 267.029 588.475 c
-S
-0.3 g
-260.668 605.409 m
-262.486 601.352 261.94 599.941 257.578 597.824 c
-253.216 595.707 257.76 591.473 260.305 592.355 c
-262.849 593.237 263.394 592.532 264.303 591.65 c
-265.212 590.768 266.666 591.826 264.667 594.119 c
-262.667 596.413 259.759 593.943 261.032 597.471 c
-262.304 600.999 260.668 605.409 y
-b
-0 g
-257.578 606.644 m
-254.125 605.056 251.58 604.174 251.58 598.177 c
-251.58 592.179 258.487 590.415 259.214 588.651 c
-S
-u
-1 g
-257.397 584.594 m
-258.601 581.671 262.019 580.25 265.03 581.419 c
-268.041 582.588 269.506 585.905 268.302 588.827 c
-267.097 591.75 263.679 593.172 260.668 592.003 c
-257.657 590.833 256.192 587.516 257.397 584.594 c
-b
-262.849 586.711 m
-B
-U
-u
-0.2 g
-1 w
-258.487 586.358 m
-263.213 582.477 L
-267.211 587.063 L
-262.486 590.944 L
-258.487 586.358 L
-f
-262.849 586.711 m
-F
-U
-0 g
-309.25 579.875 m
-310.75 580.5 313.25 583.125 314.625 581 c
-F
-1 g
-307.964 565.926 m
-307.88 566.015 306.794 566.513 307.22 566.682 c
-307.647 566.851 307.68 566.599 307.935 566.639 C
-307.924 566.13 307.971 566.31 307.964 565.926 c
-f
-510 104 m
-509.564 104.895 511.5 89 495.5 74.5 C
-495.5 68 l
-506 79 518.582 86.358 510 104 c
-f
-0 g
-0.2 w
-403.75 534.25 m
-413.25 533.75 415.75 534.25 417.75 534.75 c
-S
-1 G
-0.3 w
-538.5 629 m
-542 625 547.5 620 y
-S
-548.75 629.25 m
-552.25 625.25 557.75 620.25 y
-S
-0 G
-0.2 w
-518.5 587.5 m
-522.5 586 526 587.5 527 587.5 c
-S
-514 617.5 m
-518 614 518.5 611.5 520 607.5 c
-S
-528.25 613.75 m
-533.25 615.25 532.5 615.5 538.25 614.25 c
-S
-1 g
-538 637.5 m
-537.25 618 533 617.5 531.25 617.5 c
-529.5 617.5 528.235 615.255 528.5 622.5 c
-529.25 643 528.775 643.326 534.25 642.75 c
-539 642.25 539 642.25 540.5 630.75 C
-538 631 l
-538 629 538 631.25 v
-538 633.5 538 637.5 Y
-b
-0.7 g
-507.5 650.75 m
-510 648.5 510.25 645.75 511.75 643.25 c
-513.25 640.75 508.5 638.25 508.5 638 c
-508.5 637.75 507.5 650.75 y
-b
-1 g
-529.25 639.25 m
-528.5 643 527 642.75 524 642.75 c
-521 642.75 519.75 644 519.5 632.25 C
-519.75 638 519.75 641 v
-519.75 644 518.75 644.25 515.25 644.25 c
-511.75 644.25 511.75 646 509.25 641.25 c
-506.75 636.5 505.75 633.25 506 633.25 c
-506.25 633.25 509.75 628.25 Y
-511.5 620.25 512.75 619.75 515.5 619.5 c
-518.25 619.25 520.25 618.25 519.5 623.5 C
-521 618.25 521 617.75 524.75 617 c
-528.5 616.25 528.5 618.25 528.5 622.5 c
-528.5 626.75 529.25 639.25 y
-b
-507.75 636.75 m
-512.687 638.231 515.604 641 515.25 641 C
-517.839 637.469 517.494 629.281 508.75 625.5 C
-508.75 625.25 502 635 502.25 634.75 c
-502.5 634.5 507.75 636.75 y
-b
-493.5 571.5 m
-495.171 563.425 503.634 565.498 503.5 576.25 c
-503.25 596.25 515.75 586.25 509 636.75 c
-508.301 641.977 510 650.75 506.5 651.5 c
-501.514 652.568 500.436 652.26 499.25 644.75 c
-498.5 640 496.5 646.25 496 648.5 c
-495.5 650.75 493.75 651 490.75 650.25 c
-487.75 649.5 488.253 648.665 487.5 645.5 c
-486.194 640.013 486.75 641.75 484.5 645.5 c
-482.39 649.016 481.306 648.011 477.5 647.25 c
-475 646.75 474.784 644.479 475.25 640.75 c
-475.5 638.75 474 642.25 472.5 644.5 c
-471 646.75 469.25 645.5 466.5 645.5 c
-463.75 645.5 463.25 641.003 463.5 635.5 c
-463.511 635.25 463 626.25 y
-449.75 627.25 l
-459.25 618.5 465.606 612.863 468.25 597 c
-468.75 594 468 592.25 470 592.75 C
-459.719 593.497 459.195 585.398 461 586 c
-466.25 587.75 471.75 589.25 476.75 587 c
-481.75 584.75 486.25 584.25 489.5 586.25 C
-490.25 582.75 492 578.75 493.5 571.5 c
-b
-0 g
-486.25 592.5 m
-489 595.25 492.117 593.078 492.25 592.75 c
-494.972 586.028 477 591.75 467.25 593 c
-S
-0.4 w
-470 592.75 m
-474.25 595.75 475 596 481.5 595.75 c
-S
-1 J
-2.5 w
-477.75 630 m
-478.5 620.75 l
-S
-479.25 617.5 m
-480 610.5 l
-S
-480.25 607.75 m
-481 600.25 481 600.5 v
-S
-487.5 631.75 m
-487.75 623.5 l
-S
-487.75 620.75 m
-487.75 612.5 l
-S
-488 609.25 m
-488.25 609.25 487.75 602.5 y
-S
-498 630.75 m
-497.25 623.75 l
-S
-496.75 620.75 m
-495.5 612.5 l
-S
-495.25 609.5 m
-493.75 602 l
-S
-0 J
-0.2 w
-465.5 637.25 m
-464.5 629.75 461.25 628.75 464.75 617 c
-S
-0.5 w
-502 589.25 m
-503.25 585 503.5 583.25 503.5 577 c
-S
-1 g
-1 w
-521.949 86.694 m
-521.637 87.353 523.021 75.657 511.583 64.988 C
-511.583 60.205 l
-519.089 68.299 528.083 73.713 521.949 86.694 c
-f
-553.457 99.673 m
-553.091 100.449 554.713 86.67 541.309 74.1 C
-541.309 68.465 l
-550.105 78.001 560.646 84.379 553.457 99.673 c
-f
-482.74 95.04 m
-482.429 95.699 483.812 84.003 472.375 73.334 C
-472.375 68.551 l
-479.881 76.645 488.875 82.059 482.74 95.04 c
-f
-450.924 87.63 m
-450.69 88.028 451.731 80.968 443.129 74.528 C
-443.129 71.641 l
-448.774 76.527 455.538 79.795 450.924 87.63 c
-f
-0 g
-308 61.5 m
-N
-3 w
-16.002 40.373 m
-568.002 40.127 L
-567.748 716.565 L
-S
-u
-15.815 40.248 m
-567.815 40.002 L
-567.748 716.565 L
-15.998 716.81 L
-15.815 40.248 L
-s
-U
-%%Trailer
-_E end
-showpage
-golfersave restore
-%%EOF

+ 0 - 2737
sys/src/cmd/gs/examples/tiger.ps

@@ -1,2737 +0,0 @@
-%!PS-Adobe-2.0 EPSF-1.2
-%%Creator: Adobe Illustrator(TM) 1.2d4
-%%For: OpenWindows Version 2
-%%Title: tiger.eps
-%%CreationDate: 4/12/90 3:20 AM
-%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0
-%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0
-%%BoundingBox: 17 171 567 739
-%%EndComments
-/tigersave save def	% prevent residual side effects
-
-%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0
-
-/Adobe_Illustrator_1.2d1 dup 100 dict def load begin
-% definition operators
-/bdef {bind def} bind def
-/ldef {load def} bdef
-/xdef {exch def} bdef
-% graphic state operators
-/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef
-/_k /setcmybcolor where {
-    /setcmybcolor get
-} {
-    { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind
-} ifelse def
-/g {/_b xdef /p {_b setgray} def} bdef
-/G {/_B xdef /P {_B setgray} def} bdef
-/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef
-/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef
-/d /setdash ldef
-/_i currentflat def
-/i {dup 0 eq {pop _i} if setflat} bdef
-/j /setlinejoin ldef
-/J /setlinecap ldef
-/M /setmiterlimit ldef
-/w /setlinewidth ldef
-% path construction operators
-/_R {.25 sub round .25 add} bdef
-/_r {transform _R exch _R exch itransform} bdef
-/c {_r curveto} bdef
-/C /c ldef
-/v {currentpoint 6 2 roll _r curveto} bdef
-/V /v ldef
-/y {_r 2 copy curveto} bdef
-/Y /y ldef
-/l {_r lineto} bdef
-/L /l ldef
-/m {_r moveto} bdef
-% path painting operators
-/n /newpath ldef
-/N /n ldef
-/F {p fill} bdef
-/f {closepath F} bdef
-/S {P stroke} bdef
-/s {closepath S} bdef
-/B {gsave F grestore S} bdef
-/b {closepath B} bdef
-end
-%%EndProcSet
-%%EndProlog
-
-%%Page: 1 1
-
-Adobe_Illustrator_1.2d1 begin
-
-.8 setgray
-clippath fill
--110 -300 translate
-1.1 dup scale
-
-0 g
-0 G
-0 i
-0 J
-0 j
-0.172 w
-10 M
-[]0 d
-0 0 0 0 k
-
-177.696 715.715 m
-177.797 713.821 176.973 713.84 v
-176.149 713.859 159.695 761.934 139.167 759.691 C
-156.95 767.044 177.696 715.715 V
-b
-181.226 718.738 m
-180.677 716.922 179.908 717.221 v
-179.14 717.519 180.023 768.325 159.957 773.199 C
-179.18 774.063 181.226 718.738 V
-b
-208.716 676.41 m
-210.352 675.45 209.882 674.773 v
-209.411 674.096 160.237 686.898 150.782 668.541 C
-154.461 687.428 208.716 676.41 V
-b
-205.907 666.199 m
-207.763 665.803 207.529 665.012 v
-207.296 664.221 156.593 660.879 153.403 640.478 C
-150.945 659.563 205.907 666.199 V
-b
-201.696 671.724 m
-203.474 671.061 203.128 670.313 v
-202.782 669.565 152.134 673.654 146.002 653.936 C
-146.354 673.175 201.696 671.724 V
-b
-190.991 689.928 m
-192.299 688.554 191.66 688.033 v
-191.021 687.512 147.278 713.366 133.131 698.324 C
-141.872 715.467 190.991 689.928 V
-b
-183.446 685.737 m
-184.902 684.52 184.326 683.929 v
-183.75 683.339 137.362 704.078 125.008 687.531 C
-131.753 705.553 183.446 685.737 V
-b
-180.846 681.665 m
-182.454 680.657 181.964 679.994 v
-181.474 679.331 132.692 693.554 122.709 675.478 C
-126.934 694.251 180.846 681.665 V
-b
-191.58 681.051 m
-192.702 679.52 192.001 679.085 v
-191.3 678.65 151.231 709.898 135.273 696.793 C
-146.138 712.674 191.58 681.051 V
-b
-171.8 710 m
-172.4 708.2 171.6 708 v
-170.8 707.8 142.2 749.8 122.999 742.2 C
-138.2 754 171.8 710 V
-b
-172.495 703.021 m
-173.47 701.392 172.731 701.025 v
-171.993 700.657 135.008 735.501 117.899 723.939 C
-130.196 738.739 172.495 703.021 V
-b
-172.38 698.651 m
-173.502 697.12 172.801 696.685 v
-172.1 696.251 132.031 727.498 116.073 714.393 C
-126.938 730.274 172.38 698.651 V
-b
-0 J 1 w
-170.17 696.935 m
-170.673 690.887 171.661 684.318 173.4 681.199 C
-169.8 668.799 178.6 655.599 V
-178.2 648.399 179.8 645.199 V
-183.8 636.799 188.6 635.999 v
-192.484 635.352 201.207 632.283 211.068 630.879 c
-228.2 616.799 225 603.999 V
-224.6 587.599 221 585.999 V
-232.6 597.199 223 580.399 V
-218.6 561.599 l
-244.2 583.199 228.6 564.799 V
-218.6 538.799 l
-238.2 557.199 231 548.799 V
-227.8 539.999 l
-271 567.199 240.2 537.599 V
-248.2 541.199 252.6 538.399 V
-259.4 539.599 258.6 537.999 V
-237.8 527.599 234.2 509.199 V
-242.6 519.199 239.4 508.399 V
-239.8 496.799 l
-243.8 518.399 243.4 480.799 V
-262.6 498.799 251 477.999 V
-251 461.199 l
-266.2 477.599 259.8 464.799 V
-269.8 473.599 265.8 458.399 V
-265 447.999 269.4 459.199 V
-285.4 489.799 279.4 463.599 V
-278.6 444.399 283.4 459.199 V
-283.8 448.799 293 441.599 V
-291.8 492.399 304.6 456.399 V
-308.6 439.999 l
-311.4 449.199 311 454.399 V
-325.8 470.799 319 446.399 V
-334.2 469.199 331 455.999 V
-323.4 439.999 325 435.199 V
-341.8 469.999 343 471.599 V
-341 429.198 351.8 465.199 V
-357.4 453.199 354.6 448.799 V
-362.6 456.799 361.8 459.999 V
-366.4 468.199 369.2 454.599 V
-371 445.199 372.6 448.399 V
-376.6 424.398 377.8 447.199 V
-379.4 460.799 372.2 472.399 V
-373 475.599 370.2 479.599 v
-383.8 457.999 376.6 486.799 V
-387.801 478.799 389.001 478.799 V
-375.4 501.999 384.2 497.199 V
-379 507.599 397.001 495.599 V
-381 511.599 398.601 501.999 V
-406.601 495.599 399.001 505.599 V
-384.6 521.599 406.601 503.599 V
-418.201 487.199 419.001 484.399 V
-409.001 513.599 404.601 516.399 V
-413.001 552.799 454.201 537.199 V
-461.001 519.999 465.401 538.399 V
-478.201 544.799 489.401 517.199 V
-493.401 530.799 492.601 533.599 V
-499.401 532.399 498.601 533.599 V
-511.801 529.199 513.001 529.999 V
-519.801 523.199 520.201 526.799 V
-529.401 523.999 527.401 527.599 V
-536.201 511.999 536.601 508.399 V
-539.001 522.399 l
-541.001 519.599 l
-542.601 527.199 541.801 528.399 v
-541.001 529.599 561.801 521.599 566.601 500.799 C
-568.601 492.399 l
-574.601 507.199 573.001 511.199 V
-578.201 510.399 578.601 505.999 V
-582.601 529.199 577.801 535.199 V
-582.201 535.999 583.401 532.399 V
-583.401 539.599 l
-590.601 538.799 590.601 541.199 V
-595.001 545.199 597.001 540.399 V
-584.601 575.599 603.001 556.399 V
-610.201 545.599 606.601 564.399 v
-603.001 583.199 599.001 584.799 603.801 585.199 C
-604.601 588.799 602.601 590.399 v
-600.601 591.999 603.801 590.399 y
-608.601 586.399 603.401 608.399 V
-609.801 606.799 597.801 635.999 V
-600.601 638.399 596.601 646.799 V
-604.601 642.399 607.401 643.999 V
-607.001 645.599 603.801 649.599 V
-582.201 704.4 602.601 682.399 V
-614.451 668.849 608.051 691.649 V
-598.94 715.659 599.717 719.955 V
-170.17 696.935 l
-b
-0.2 0.55 0.85 0 k
-599.717 719.755 m
-600.345 719.574 602.551 718.45 603.801 716.8 C
-610.601 706 605.401 724.4 V
-596.201 753.2 605.001 742 V
-611.001 734.8 607.801 748.4 v
-603.936 764.827 601.401 771.2 y
-613.001 766.4 586.201 806 V
-595.001 802.4 l
-575.401 842 553.801 847.2 V
-545.801 853.2 l
-584.201 891.2 571.401 928 V
-564.601 933.2 555.001 924 V
-548.601 919.2 542.601 920.8 V
-511.801 919.6 509.801 919.6 v
-507.801 919.6 473.001 956.8 407.401 939.2 C
-402.201 937.2 397.801 938.4 V
-379.4 954.4 330.6 931.6 v
-320.6 929.6 319 929.6 v
-317.4 929.6 314.6 929.6 306.6 923.2 c
-298.6 916.8 298.2 916 296.2 914.4 C
-279.8 903.2 275 902.4 V
-263.4 896 259 886 V
-255.4 884.8 l
-253.8 877.6 253.4 876.4 V
-248.6 872.8 247.8 867.2 V
-239 861.2 239.4 856.8 V
-237.8 851.6 237 846.8 V
-229.8 842 230.6 839.2 V
-223 825.2 224.2 818.4 V
-217.8 818.8 215 816.4 V
-214.2 811.6 212.6 811.2 V
-209.8 810 212.2 806 V
-210.6 803.2 210.2 801.6 V
-211 798.8 206.6 793.2 V
-200.2 774.4 202.2 769.2 V
-202.6 764.4 199.8 762.8 V
-196.2 763.2 204.6 751.2 V
-205.4 750 202.2 747.6 V
-185 744 182.6 727.6 V
-169 712.8 169 707.6 v
-169 705.295 169.271 702.148 169.97 697.535 C
-169.4 689.199 197 688.399 v
-224.6 687.599 599.717 719.755 Y
-b
-184.4 697.4 m
-159.4 736.8 173.8 680.399 Y
-182.6 645.999 312.2 683.599 y
-481.001 714 492.201 718 v
-503.401 722 598.601 715.6 y
-593.001 732.4 L
-528.201 778.8 509.001 755.6 495.401 759.6 c
-481.801 763.6 484.201 754 481.001 753.2 c
-477.801 752.4 438.601 777.2 432.201 776.4 c
-425.801 775.6 400.459 799.351 415.401 767.6 c
-431.401 733.6 357 728.4 340.2 739.6 c
-323.4 750.8 347.4 721.2 Y
-365.8 701.2 331.4 718 y
-297 730.8 273 705.2 269.8 704.4 c
-266.6 703.6 261.8 700.4 261 706.8 c
-260.2 713.2 252.69 729.901 221 703.6 c
-201 686.999 187.2 709 Y
-184.4 697.4 L
-f
-0.09 0.5 0.772 0 k
-433.51 774.654 m
-427.11 773.854 401.743 797.593 416.71 765.854 c
-433.31 730.654 358.31 726.654 341.51 737.854 c
-324.709 749.054 348.71 719.454 Y
-367.11 699.454 332.709 716.254 y
-298.309 729.054 274.309 703.454 271.109 702.654 c
-267.909 701.854 263.109 698.654 262.309 705.054 c
-261.509 711.454 254.13 727.988 222.309 701.854 c
-201.073 684.508 187.582 705.963 Y
-184.382 695.854 L
-159.382 735.654 174.454 677.345 Y
-183.255 642.944 313.509 681.854 y
-482.31 712.254 493.51 716.254 v
-504.71 720.254 599.038 713.927 y
-593.51 731.236 L
-528.71 777.636 510.31 753.854 496.71 757.854 c
-483.11 761.854 485.51 752.254 482.31 751.454 c
-479.11 750.654 439.91 775.454 433.51 774.654 c
-f
-0.081 0.45 0.695 0 k
-434.819 772.909 m
-428.419 772.109 403.685 796.138 418.019 764.109 c
-434.219 727.908 359.619 724.908 342.819 736.108 c
-326.019 747.308 350.019 717.708 Y
-368.419 697.708 334.019 714.508 y
-299.619 727.308 275.618 701.708 272.418 700.908 c
-269.218 700.108 264.418 696.908 263.618 703.308 c
-262.818 709.708 255.57 726.075 223.618 700.108 c
-201.145 682.017 187.964 702.926 Y
-184.364 694.308 L
-160.564 733.308 175.109 674.29 Y
-183.909 639.89 314.819 680.108 y
-483.619 710.508 494.819 714.508 v
-506.019 718.508 599.474 712.254 y
-594.02 730.072 L
-529.219 776.472 511.619 752.109 498.019 756.109 c
-484.419 760.109 486.819 750.509 483.619 749.708 c
-480.419 748.908 441.219 773.709 434.819 772.909 c
-f
-0.072 0.4 0.618 0 k
-436.128 771.163 m
-429.728 770.363 404.999 794.395 419.328 762.363 c
-436.128 724.807 360.394 723.518 344.128 734.363 c
-327.328 745.563 351.328 715.963 Y
-369.728 695.963 335.328 712.763 y
-300.928 725.563 276.928 699.963 273.728 699.163 c
-270.528 698.363 265.728 695.163 264.928 701.563 c
-264.128 707.963 257.011 724.161 224.927 698.363 c
-201.218 679.526 188.345 699.89 Y
-184.345 692.763 L
-162.545 729.563 175.764 671.235 Y
-184.564 636.835 316.128 678.363 y
-484.928 708.763 496.129 712.763 v
-507.329 716.763 599.911 710.581 y
-594.529 728.908 L
-529.729 775.309 512.929 750.363 499.329 754.363 c
-485.728 758.363 488.128 748.763 484.928 747.963 c
-481.728 747.163 442.528 771.963 436.128 771.163 c
-f
-0.063 0.35 0.54 0 k
-437.438 769.417 m
-431.037 768.617 406.814 792.871 420.637 760.617 c
-437.438 721.417 362.237 721.417 345.437 732.617 c
-328.637 743.817 352.637 714.217 Y
-371.037 694.217 336.637 711.017 y
-302.237 723.817 278.237 698.217 275.037 697.417 c
-271.837 696.617 267.037 693.417 266.237 699.817 c
-265.437 706.217 258.452 722.248 226.237 696.617 c
-201.291 677.035 188.727 696.854 Y
-184.327 691.217 L
-164.527 726.018 176.418 668.181 Y
-185.218 633.78 317.437 676.617 y
-486.238 707.017 497.438 711.017 v
-508.638 715.017 600.347 708.908 y
-595.038 727.745 L
-530.238 774.145 514.238 748.617 500.638 752.617 c
-487.038 756.617 489.438 747.017 486.238 746.217 c
-483.038 745.417 443.838 770.217 437.438 769.417 c
-f
-0.054 0.3 0.463 0 k
-438.747 767.672 m
-432.347 766.872 406.383 790.323 421.947 758.872 c
-441.147 720.072 363.546 719.672 346.746 730.872 c
-329.946 742.072 353.946 712.472 Y
-372.346 692.472 337.946 709.272 y
-303.546 722.072 279.546 696.472 276.346 695.672 c
-273.146 694.872 268.346 691.672 267.546 698.072 c
-266.746 704.472 259.892 720.335 227.546 694.872 c
-201.364 674.544 189.109 693.817 Y
-184.309 689.672 L
-166.309 722.872 177.073 665.126 Y
-185.873 630.726 318.746 674.872 y
-487.547 705.272 498.747 709.272 v
-509.947 713.272 600.783 707.236 y
-595.547 726.581 L
-530.747 772.981 515.547 746.872 501.947 750.872 c
-488.347 754.872 490.747 745.272 487.547 744.472 c
-484.347 743.672 445.147 768.472 438.747 767.672 c
-f
-0.045 0.25 0.386 0 k
-440.056 765.927 m
-433.655 765.127 407.313 788.387 423.255 757.127 c
-443.656 717.126 364.855 717.926 348.055 729.126 c
-331.255 740.326 355.255 710.726 Y
-373.655 690.726 339.255 707.526 y
-304.855 720.326 280.855 694.726 277.655 693.926 c
-274.455 693.126 269.655 689.926 268.855 696.326 c
-268.055 702.726 261.332 718.422 228.855 693.126 c
-201.436 672.053 189.491 690.781 Y
-184.291 688.126 L
-168.291 718.326 177.727 662.071 Y
-186.527 627.671 320.055 673.126 y
-488.856 703.526 500.056 707.526 v
-511.256 711.526 601.22 705.563 y
-596.056 725.417 L
-531.256 771.817 516.856 745.126 503.256 749.126 c
-489.656 753.127 492.056 743.526 488.856 742.726 c
-485.656 741.926 446.456 766.727 440.056 765.927 c
-f
-0.036 0.2 0.309 0 k
-441.365 764.181 m
-434.965 763.381 407.523 786.056 424.565 755.381 c
-446.565 715.781 366.164 716.181 349.364 727.381 c
-332.564 738.581 356.564 708.981 Y
-374.964 688.981 340.564 705.781 y
-306.164 718.581 282.164 692.981 278.964 692.181 c
-275.764 691.381 270.964 688.181 270.164 694.581 c
-269.364 700.981 262.773 716.508 230.164 691.381 c
-201.509 669.562 189.873 687.744 Y
-184.273 686.581 L
-169.872 714.981 178.382 659.017 Y
-187.182 624.616 321.364 671.381 y
-490.165 701.781 501.365 705.781 v
-512.565 709.781 601.656 703.89 y
-596.565 724.254 L
-531.765 770.654 518.165 743.381 504.565 747.381 c
-490.965 751.381 493.365 741.781 490.165 740.981 c
-486.965 740.181 447.765 764.981 441.365 764.181 c
-f
-0.027 0.15 0.231 0 k
-442.674 762.435 m
-436.274 761.635 408.832 784.311 425.874 753.635 c
-447.874 714.035 367.474 714.435 350.674 725.635 c
-333.874 736.835 357.874 707.235 Y
-376.274 687.235 341.874 704.035 y
-307.473 716.835 283.473 691.235 280.273 690.435 c
-277.073 689.635 272.273 686.435 271.473 692.835 c
-270.673 699.235 264.214 714.595 231.473 689.635 c
-201.582 667.071 190.255 684.707 Y
-184.255 685.035 L
-170.654 711.436 179.037 655.962 Y
-187.837 621.562 322.673 669.635 y
-491.474 700.035 502.674 704.035 v
-513.874 708.035 602.093 702.217 y
-597.075 723.09 L
-532.274 769.49 519.474 741.635 505.874 745.635 c
-492.274 749.635 494.674 740.035 491.474 739.235 c
-488.274 738.435 449.074 763.235 442.674 762.435 c
-f
-0.018 0.1 0.154 0 k
-443.983 760.69 m
-437.583 759.89 410.529 782.777 427.183 751.89 c
-449.183 711.09 368.783 712.69 351.983 723.89 c
-335.183 735.09 359.183 705.49 Y
-377.583 685.49 343.183 702.29 y
-308.783 715.09 284.783 689.49 281.583 688.69 c
-278.382 687.89 273.582 684.69 272.782 691.09 c
-271.982 697.49 265.654 712.682 232.782 687.89 c
-201.655 664.58 190.637 681.671 Y
-184.236 683.49 L
-171.236 707.49 179.691 652.907 Y
-188.491 618.507 323.983 667.89 y
-492.783 698.29 503.983 702.29 v
-515.183 706.29 602.529 700.544 y
-597.583 721.926 L
-532.783 768.327 520.783 739.89 507.183 743.89 c
-493.583 747.89 495.983 738.29 492.783 737.49 c
-489.583 736.69 450.383 761.49 443.983 760.69 c
-f
-0.009 0.05 0.077 0 k
-445.292 758.945 m
-438.892 758.145 412.917 781.589 428.492 750.145 c
-449.692 707.344 370.092 710.944 353.292 722.144 c
-336.492 733.344 360.492 703.744 Y
-378.892 683.744 344.492 700.544 y
-310.092 713.344 286.092 687.744 282.892 686.944 c
-279.692 686.144 274.892 682.944 274.092 689.344 c
-273.292 695.744 267.095 710.768 234.092 686.144 c
-201.727 662.089 191.018 678.635 Y
-184.218 681.944 L
-171.418 705.144 180.346 649.853 Y
-189.146 615.453 325.292 666.144 y
-494.093 696.544 505.293 700.544 v
-516.493 704.544 602.965 698.872 y
-598.093 720.763 L
-533.292 767.163 522.093 738.144 508.493 742.144 c
-494.893 746.145 497.293 736.544 494.093 735.744 c
-490.892 734.944 451.692 759.745 445.292 758.945 c
-f
-1 g
-184.2 680.399 m
-171.4 702.4 181 646.799 Y
-189.8 612.399 326.6 664.399 y
-495.401 694.8 506.601 698.8 v
-517.801 702.8 603.401 697.2 y
-598.601 719.6 L
-533.801 766 523.401 736.4 509.801 740.4 c
-496.201 744.4 498.601 734.8 495.401 734 c
-492.201 733.2 453.001 758 446.601 757.2 c
-440.201 756.4 414.981 780.207 429.801 748.4 c
-452.028 700.693 369.041 710.773 354.6 720.4 c
-337.8 731.6 361.8 702 Y
-380.2 681.999 345.8 698.8 y
-311.4 711.6 287.4 685.999 284.2 685.199 c
-281 684.399 276.2 681.199 275.4 687.599 c
-274.6 694 268.535 708.856 235.4 684.399 c
-201.8 659.599 191.4 675.599 Y
-184.2 680.399 L
-f
-0 g
-225.8 650.399 m
-218.6 638.799 239.4 625.599 V
-240.8 624.199 222.8 628.399 V
-216.6 630.399 215 640.799 V
-210.2 645.199 205.4 650.799 v
-200.6 656.399 225.8 650.399 y
-f
-0.8 g
-365.8 698 m
-383.498 671.179 382.9 666.399 v
-381.6 655.999 381.4 646.399 384.6 642.399 c
-387.801 638.399 396.601 605.199 y
-396.201 603.999 408.601 641.999 V
-420.201 657.999 400.201 676.399 V
-365 705.2 365.8 698 v
-f
-0 g
-1 J 0.1 w
-245.8 623.599 m
-257 616.399 242.6 585.199 V
-249 587.599 l
-248.2 576.399 245 573.999 V
-252.2 577.199 l
-257 569.199 253 564.399 V
-269.8 556.399 269 549.999 V
-275.4 557.999 271.4 564.399 v
-267.4 570.799 260.2 566.799 261 585.199 C
-252.2 581.999 l
-257.8 590.799 257.8 597.199 V
-249.8 594.799 l
-265.269 621.377 254.6 622.799 v
-248.6 623.599 245.8 623.599 Y
-f
-0.8 g
-278.2 606.799 m
-281 611.199 278.2 610.399 v
-275.4 609.599 244.2 594.799 238.2 585.199 C
-272.6 609.599 278.2 606.799 V
-f
-288.6 598.799 m
-291.4 603.199 288.6 602.399 v
-285.8 601.599 254.6 586.799 248.6 577.199 C
-283 601.599 288.6 598.799 V
-f
-301.8 613.999 m
-304.6 618.399 301.8 617.599 v
-299 616.799 267.8 601.999 261.8 592.399 C
-296.2 616.799 301.8 613.999 V
-f
-278.6 570.399 m
-278.6 576.399 275.8 575.599 v
-273 574.799 237 557.199 231 547.599 C
-273 573.199 278.6 570.399 V
-f
-279.8 581.199 m
-281 585.999 278.2 585.199 V
-276.2 585.199 249.8 573.599 243.8 563.999 C
-273.4 585.599 279.8 581.199 V
-f
-265.4 533.599 m
-255.4 525.999 l
-265.8 533.599 269.4 532.399 V
-262.6 521.199 261.8 515.999 V
-272.2 528.799 277.8 528.399 V
-285.4 527.999 285.4 517.199 V
-291 527.599 294.2 527.199 V
-295.4 520.799 294.2 513.999 V
-298.2 521.599 302.2 519.999 V
-308.6 521.999 307.8 510.399 V
-307.8 499.999 307 497.199 V
-312.6 523.599 315 523.999 V
-323 525.199 327.8 516.399 V
-323.8 523.999 328.6 521.999 V
-339.4 520.399 342.6 513.599 V
-335.8 525.599 341.4 522.399 V
-348.2 522.399 349.4 515.999 V
-357.8 494.799 359.8 493.199 V
-352.2 514.799 353.8 514.799 V
-351.8 526.799 357 511.999 V
-353.8 525.999 359.4 525.199 v
-365 524.399 369.4 514.399 377.8 516.799 C
-387.401 511.199 389.401 580.399 V
-265.4 533.599 L
-f
-0 g
-0 J 1 w
-270.2 626.399 m
-285 632.399 325 626.399 V
-332.2 625.999 339 634.799 v
-345.8 643.599 372.6 650.799 379 648.799 C
-388.601 642.399 l
-389.401 641.199 l
-401.801 630.799 402.201 623.199 v
-402.601 615.599 387.801 567.599 378.2 551.599 c
-368.6 535.599 359 523.199 339.8 525.599 C
-319 529.599 293.4 525.599 v
-264.2 527.199 261.4 535.199 v
-258.6 543.199 272.6 558.399 y
-277 566.799 275.8 581.199 v
-274.6 595.599 275 623.599 270.2 626.399 c
-f
-0.1 0.6 0.45 0 k
-292.2 624.399 m
-300.6 605.999 271 540.799 y
-269 539.199 283.66 533.154 293.8 535.599 c
-304.746 538.237 345 533.999 Y
-368.6 549.599 381.4 593.999 y
-391.801 617.999 374.2 621.199 v
-356.6 624.399 292.2 624.399 y
-f
-0.1 0.6 0.45 0.2 k
-290.169 593.503 m
-293.495 606.293 295.079 618.094 292.2 624.399 c
-354.6 617.999 365.8 638.799 v
-370.041 646.674 384.801 615.999 384.4 606.399 c
-321.4 591.999 306.6 603.199 V
-290.169 593.503 L
-f
-0.1 0.6 0.45 0.25 k
-294.6 577.199 m
-296.6 569.999 294.2 565.999 V
-292.6 565.199 291.4 564.799 V
-292.6 561.199 298.6 559.599 V
-300.6 555.199 303 554.799 v
-305.4 554.399 310.2 548.799 314.2 549.999 c
-318.2 551.199 329.4 555.199 y
-335 558.399 343.8 554.799 V
-346.175 555.601 346.6 559.599 v
-347.1 564.299 350.2 567.999 352.2 569.999 c
-354.2 571.999 363.8 584.799 362.6 585.199 c
-361.4 585.599 294.6 577.199 Y
-f
-0 0.55 0.5 0 k
-290.2 625.599 m
-287.4 603.199 290.6 594.799 v
-293.8 586.399 293 584.399 292.2 580.399 c
-291.4 576.399 295.8 566.399 301.4 560.399 C
-313.4 558.799 l
-328.6 562.399 337.8 559.599 V
-346.794 558.256 350.2 573.199 V
-355 579.599 362.2 582.399 v
-369.4 585.199 376.6 626.799 372.6 634.799 c
-368.6 642.799 354.2 647.199 338.2 631.599 c
-322.2 615.999 320.2 632.799 290.2 625.599 C
-b
-0 0 0.2 0 k
-0.5 w
-291.8 550.799 m
-291 552.799 286.6 553.199 V
-264.2 556.799 255.8 569.199 V
-249 574.799 253.4 563.199 V
-263.8 542.799 270.6 539.999 V
-287 535.999 291.8 550.799 V
-b
-0 0.55 0.5 0.2 k
-1 w
-371.742 614.771 m
-372.401 622.677 374.354 631.291 372.6 634.799 c
-366.154 647.693 349.181 642.305 338.2 631.599 c
-322.2 615.999 320.2 632.799 290.2 625.599 C
-288.455 611.636 289.295 601.624 v
-326.6 613.199 327.4 607.599 V
-329 610.799 338.2 610.799 v
-347.4 610.799 370.142 611.971 371.742 614.771 C
-f
-0 g
-0 0.55 0.5 0.35 K
-2 w
-328.6 624.799 m
-333.4 619.999 329.8 610.399 V
-315.4 594.399 317.4 580.399 v
-S
-0 0 0.2 0 k
-0 G
-0.5 w
-280.6 539.999 m
-276.2 552.799 285 545.999 V
-289.8 543.999 288.6 542.399 v
-287.4 540.799 281.8 536.799 280.6 539.999 C
-b
-285.64 538.799 m
-282.12 549.039 289.16 543.599 V
-293.581 541.151 292.04 540.719 v
-287.48 539.439 292.04 536.879 285.64 538.799 C
-b
-290.44 538.799 m
-286.92 549.039 293.96 543.599 V
-298.335 541.289 296.84 540.719 v
-293.48 539.439 296.84 536.879 290.44 538.799 C
-b
-297.04 538.599 m
-293.52 548.839 300.56 543.399 V
-304.943 541.067 303.441 540.519 v
-300.48 539.439 303.441 536.679 297.04 538.599 C
-b
-303.52 538.679 m
-300 548.919 307.041 543.479 V
-310.881 541.879 309.921 540.599 v
-308.961 539.319 309.921 536.759 303.52 538.679 C
-b
-310.2 537.999 m
-305.4 550.399 314.6 543.999 V
-319.4 541.999 318.2 540.399 v
-317 538.799 318.2 535.599 310.2 537.999 C
-b
-0 g
-0.1 0.6 0.45 0.25 K
-2 w
-281.8 555.199 m
-295 557.999 301 554.799 V
-307 553.599 308.2 553.999 v
-309.4 554.399 312.6 554.799 y
-S
-315.8 546.399 m
-327.8 559.999 339.8 555.599 v
-346.816 553.026 345.8 556.399 346.6 559.199 c
-347.4 561.999 347.6 566.199 352.6 569.199 c
-S
-0 0 0.2 0 k
-0 G
-0.5 w
-333 562.399 m
-329 573.199 326.2 560.399 v
-323.4 547.599 320.2 543.999 318.6 541.199 C
-318.6 535.999 327 536.399 V
-337.8 536.799 338.2 539.599 v
-338.6 542.399 337 553.999 333 562.399 C
-b
-0 g
-0.1 0.6 0.45 0.25 K
-2 w
-347 555.199 m
-350.6 557.599 353 556.399 v
-S
-353.5 571.599 m
-356.4 576.499 361.2 577.299 v
-S
-0.7 g
-0 G
-1 w
-274.2 534.799 m
-292.2 531.599 296.6 533.199 V
-305.4 533.199 297 531.199 V
-284.2 531.199 276.2 532.399 V
-264.6 537.999 274.2 534.799 V
-f
-0 0 0.2 0 k
-0.5 w
-288.2 627.999 m
-305.8 627.999 307.8 627.199 V
-315 596.399 311.4 588.799 V
-310.2 585.999 307.4 591.599 V
-289 624.399 285.8 626.399 v
-282.6 628.399 287 627.999 288.2 627.999 C
-b
-211.1 630.699 m
-220 628.999 232.6 626.399 V
-237.4 603.999 240.6 599.199 v
-243.8 594.399 240.2 594.399 236.6 597.199 c
-233 599.999 218.2 613.999 216.2 618.399 c
-214.2 622.799 211.1 630.699 y
-b
-232.961 626.182 m
-238.761 624.634 239.77 622.419 v
-240.778 620.205 238.568 616.908 y
-237.568 613.603 236.366 615.765 v
-235.164 617.928 232.292 625.588 232.961 626.182 c
-b
-0 g
-233 626.399 m
-236.6 621.199 240.2 621.199 v
-243.8 621.199 244.182 621.612 247 620.999 c
-251.6 619.999 251.2 621.999 257.8 620.799 c
-260.44 620.319 263 621.199 265.8 619.999 c
-268.6 618.799 271.8 619.599 273 621.599 c
-274.2 623.599 279 627.799 Y
-266.2 625.999 263.4 625.199 V
-241 623.999 233 626.399 V
-f
-0 0 0.2 0 k
-277.6 626.199 m
-271.15 622.699 270.75 620.299 v
-270.35 617.899 276 614.199 y
-278.75 609.599 279.35 611.999 v
-279.95 614.399 278.4 625.799 277.6 626.199 c
-b
-240.115 620.735 m
-247.122 609.547 247.339 620.758 V
-247.896 622.016 246.136 622.038 v
-240.061 622.114 241.582 626.216 240.115 620.735 C
-b
-247.293 620.486 m
-255.214 609.299 254.578 620.579 V
-254.585 620.911 252.832 621.064 v
-248.085 621.478 248.43 625.996 247.293 620.486 C
-b
-254.506 620.478 m
-262.466 609.85 261.797 619.516 V
-261.916 620.749 260.262 621.05 v
-256.37 621.756 256.159 625.005 254.506 620.478 C
-b
-261.382 620.398 m
-269.282 608.837 269.63 618.618 V
-271.274 619.996 269.528 620.218 v
-263.71 620.958 264.508 625.412 261.382 620.398 C
-b
-0 0 0.2 0.1 k
-225.208 616.868 m
-217.55 618.399 l
-214.95 623.399 212.85 629.549 y
-219.2 628.549 231.7 625.749 V
-232.576 622.431 234.048 616.636 v
-225.208 616.868 l
-f
-290.276 621.53 m
-288.61 624.036 287.293 625.794 286.643 626.2 c
-283.63 628.083 287.773 627.706 288.902 627.706 C
-305.473 627.706 307.356 626.953 V
-307.88 624.711 308.564 621.32 V
-298.476 623.33 290.276 621.53 V
-f
-0.2 0.55 0.85 0 k
-1 w
-343.88 759.679 m
-371.601 755.719 397.121 791.359 398.881 801.04 c
-400.641 810.72 390.521 822.6 Y
-391.841 825.68 387.001 839.76 381.721 849 c
-376.441 858.24 360.54 857.266 343 858.24 c
-327.16 859.12 308.68 835.8 307.36 834.04 c
-306.04 832.28 312.2 793.999 313.52 788.279 c
-314.84 782.559 312.2 756.159 y
-346.44 765.259 316.16 763.639 343.88 759.679 c
-f
-0.08 0.44 0.68 0 k
-308.088 833.392 m
-306.792 831.664 312.84 794.079 314.136 788.463 c
-315.432 782.847 312.84 756.927 y
-345.512 765.807 316.728 764.271 343.944 760.383 c
-371.161 756.495 396.217 791.487 397.945 800.992 c
-399.673 810.496 389.737 822.16 Y
-391.033 825.184 386.281 839.008 381.097 848.08 c
-375.913 857.152 360.302 856.195 343.08 857.152 c
-327.528 858.016 309.384 835.12 308.088 833.392 c
-f
-0.06 0.33 0.51 0 k
-308.816 832.744 m
-307.544 831.048 313.48 794.159 314.752 788.647 c
-316.024 783.135 313.48 757.695 y
-344.884 766.855 317.296 764.903 344.008 761.087 c
-370.721 757.271 395.313 791.615 397.009 800.944 c
-398.705 810.272 388.953 821.72 Y
-390.225 824.688 385.561 838.256 380.473 847.16 c
-375.385 856.064 360.063 855.125 343.16 856.064 c
-327.896 856.912 310.088 834.44 308.816 832.744 c
-f
-0.04 0.22 0.34 0 k
-309.544 832.096 m
-308.296 830.432 314.12 794.239 315.368 788.831 c
-316.616 783.423 314.12 758.463 y
-343.556 767.503 317.864 765.535 344.072 761.791 c
-370.281 758.047 394.409 791.743 396.073 800.895 c
-397.737 810.048 388.169 821.28 Y
-389.417 824.192 384.841 837.504 379.849 846.24 c
-374.857 854.976 359.824 854.055 343.24 854.976 c
-328.264 855.808 310.792 833.76 309.544 832.096 c
-f
-0.02 0.11 0.17 0 k
-310.272 831.448 m
-309.048 829.816 314.76 794.319 315.984 789.015 c
-317.208 783.711 314.76 759.231 y
-342.628 768.151 318.432 766.167 344.136 762.495 c
-369.841 758.823 393.505 791.871 395.137 800.848 c
-396.769 809.824 387.385 820.84 Y
-388.609 823.696 384.121 836.752 379.225 845.32 c
-374.329 853.888 359.585 852.985 343.32 853.888 c
-328.632 854.704 311.496 833.08 310.272 831.448 c
-f
-1 g
-344.2 763.2 m
-369.4 759.6 392.601 792 394.201 800.8 c
-395.801 809.6 386.601 820.4 Y
-387.801 823.2 383.4 836 378.6 844.4 c
-373.8 852.8 359.346 851.914 343.4 852.8 c
-329 853.6 312.2 832.4 311 830.8 c
-309.8 829.2 315.4 794.4 316.6 789.2 c
-317.8 784 315.4 760 y
-340.9 768.6 319 766.8 344.2 763.2 c
-f
-0.8 g
-390.601 797.2 m
-362.8 789.6 351.2 791.2 V
-335.4 797.8 326.6 776 V
-323 768.8 321 766.8 v
-319 764.8 390.601 797.2 Y
-f
-0 g
-394.401 799.4 m
-365.4 787.2 355.4 787.6 v
-339 792.2 330.6 777.6 V
-322.2 768.4 319 766.8 V
-318.6 765.2 325 769.2 V
-335.4 764 l
-350.2 754.4 359.8 770.4 V
-363.8 781.6 363.8 783.6 v
-363.8 785.6 385 791.2 386.601 791.6 c
-388.201 792 394.801 796.2 394.401 799.4 C
-f
-0.4 0.2 0.8 0 k
-347 763.486 m
-340.128 763.486 331.755 767.351 331.755 773.6 c
-331.755 779.848 340.128 786.113 347 786.113 c
-353.874 786.113 359.446 781.048 359.446 774.8 c
-359.446 768.551 353.874 763.486 347 763.486 c
-f
-0.4 0.2 0.8 0.2 k
-343.377 780.17 m
-338.531 779.448 333.442 777.945 333.514 778.161 c
-335.054 782.78 341.415 786.113 347 786.113 c
-351.296 786.113 355.084 784.135 357.32 781.125 c
-352.004 781.455 343.377 780.17 v
-f
-1 g
-355.4 780.4 m
-351 783.6 351 781.4 V
-354.6 777 355.4 780.4 V
-f
-0 g
-345.4 772.274 m
-342.901 772.274 340.875 774.3 340.875 776.8 c
-340.875 779.299 342.901 781.325 345.4 781.325 c
-347.9 781.325 349.926 779.299 349.926 776.8 c
-349.926 774.3 347.9 772.274 345.4 772.274 c
-f
-0.2 0.55 0.85 0 k
-241.4 785.6 m
-238.2 806.8 240.6 811.2 V
-251.4 821.2 251 824.8 V
-250.6 842.8 249.4 843.6 v
-248.2 844.4 240.6 850.4 234.6 844 C
-224.2 826 225 819.6 V
-225 817.6 l
-217.4 818 215.8 816 V
-214.6 810.8 213.4 810.4 V
-210.6 808 212.6 805.2 V
-210.6 802.8 211 798.8 V
-218.6 794.8 L
-220.6 780.4 231.4 775.2 v
-236.236 772.871 239.4 779.6 241.4 785.6 c
-f
-1 g
-240.4 787.44 m
-237.52 806.52 239.68 810.48 V
-249.4 819.48 249.04 822.72 V
-248.68 838.92 247.6 839.64 v
-246.52 840.36 239.68 845.76 234.28 840 C
-224.92 823.8 225.64 818.04 V
-225.64 816.24 l
-218.8 816.6 217.36 814.8 V
-216.28 810.12 215.2 809.76 V
-212.68 807.6 214.48 805.08 V
-212.68 802.92 213.04 799.32 V
-219.88 795.72 L
-221.68 782.76 231.4 778.08 v
-235.752 775.985 238.6 782.04 240.4 787.44 c
-f
-0.075 0.412 0.637 0 k
-248.95 842.61 m
-247.86 843.47 240.37 849.24 234.52 843 C
-224.38 825.45 225.16 819.21 V
-225.16 817.26 l
-217.75 817.65 216.19 815.7 V
-215.02 810.63 213.85 810.24 V
-211.12 807.9 213.07 805.17 V
-211.12 802.83 211.51 798.93 V
-218.92 795.03 L
-220.87 780.99 231.4 775.92 v
-236.114 773.65 239.2 780.21 241.15 786.06 c
-238.03 806.73 240.37 811.02 V
-250.9 820.77 250.51 824.28 V
-250.12 841.83 248.95 842.61 V
-f
-0.05 0.275 0.425 0 k
-248.5 841.62 m
-247.52 842.54 240.14 848.08 234.44 842 C
-224.56 824.9 225.32 818.82 V
-225.32 816.92 l
-218.1 817.3 216.58 815.4 V
-215.44 810.46 214.3 810.08 V
-211.64 807.8 213.54 805.14 V
-211.64 802.86 212.02 799.06 V
-219.24 795.26 L
-221.14 781.58 231.4 776.64 v
-235.994 774.428 239 780.82 240.9 786.52 c
-237.86 806.66 240.14 810.84 V
-250.4 820.34 250.02 823.76 V
-249.64 840.86 248.5 841.62 V
-f
-0.025 0.137 0.212 0 k
-248.05 840.63 m
-247.18 841.61 239.91 846.92 234.36 841 C
-224.74 824.35 225.48 818.43 V
-225.48 816.58 l
-218.45 816.95 216.97 815.1 V
-215.86 810.29 214.75 809.92 V
-212.16 807.7 214.01 805.11 V
-212.16 802.89 212.53 799.19 V
-219.56 795.49 L
-221.41 782.17 231.4 777.36 v
-235.873 775.206 238.8 781.43 240.65 786.98 c
-237.69 806.59 239.91 810.66 V
-249.9 819.91 249.53 823.24 V
-249.16 839.89 248.05 840.63 V
-f
-1 g
-240.4 787.54 m
-237.52 806.52 239.68 810.48 V
-249.4 819.48 249.04 822.72 V
-248.68 838.92 247.6 839.64 V
-246.84 840.68 239.68 845.76 234.28 840 C
-224.92 823.8 225.64 818.04 V
-225.64 816.24 l
-218.8 816.6 217.36 814.8 V
-216.28 810.12 215.2 809.76 V
-212.68 807.6 214.48 805.08 V
-212.68 802.92 213.04 799.32 V
-219.88 795.72 L
-221.68 782.76 231.4 778.08 v
-235.752 775.985 238.6 782.14 240.4 787.54 c
-f
-0.8 g
-237.3 793.8 m
-215.7 804 214.8 804.8 V
-223.9 796.6 224.7 796.6 v
-225.5 796.6 237.3 793.8 Y
-f
-0 g
-220.2 800 m
-238.6 796.4 238.6 792 v
-238.6 789.088 238.357 775.669 233 777.2 c
-224.6 779.6 228.2 794 220.2 800 c
-f
-0.4 0.2 0.8 0 k
-228.6 796.2 m
-237.578 794.726 238.6 792 v
-239.2 790.4 239.863 782.092 234.4 781 c
-229.848 780.089 227.618 790.31 228.6 796.2 c
-f
-0 g
-314.595 753.651 m
-314.098 755.393 315.409 755.262 317.2 755.8 c
-319.2 756.4 331.4 760.2 332.2 762.8 c
-333 765.4 346.2 761 Y
-348 760.2 352.4 757.6 Y
-357.2 756.4 363.8 756 Y
-366.2 755 369.6 752.2 Y
-384.2 742 396.601 749.2 Y
-416.601 755.8 410.601 773 Y
-407.601 782 410.801 785.4 Y
-411.001 789.2 418.201 782.8 Y
-420.801 778.6 421.601 773.6 Y
-429.601 762.4 426.201 780.2 Y
-426.401 781.2 423.601 784.8 423.601 786 c
-423.601 787.2 421.801 790.6 Y
-418.801 794 421.201 801 Y
-423.001 814.8 420.801 813 Y
-419.601 814.8 410.401 804.8 Y
-408.201 801.4 402.201 799.8 Y
-399.401 798 396.001 799.4 Y
-393.401 799.8 387.801 792.8 Y
-390.601 793 393.001 788.6 395.401 788.4 c
-397.801 788.2 399.601 790.8 401.201 791.4 c
-402.801 792 405.601 786.2 Y
-406.001 783.6 400.401 778.8 Y
-400.001 774.2 398.401 775.8 Y
-395.401 776.4 394.201 772.6 393.201 768 c
-392.201 763.4 388.001 763 y
-386.401 755.6 385.2 758.6 Y
-385 764.2 379 758.4 Y
-377.8 756.4 373.2 758.6 Y
-366.4 760.6 368.8 762.6 Y
-370.6 764.8 381.8 762.6 Y
-384 764.2 376 768.2 Y
-375.4 770 376.4 774.4 Y
-377.6 777.6 384.4 783.2 Y
-393.801 784.4 391.001 786 Y
-384.801 791.2 379 783.6 Y
-376.8 777.4 359.4 762.4 Y
-354.6 759 357.2 765.8 353.2 762.4 c
-349.2 759 328.6 768 y
-317.038 769.193 314.306 753.451 310.777 756.571 c
-316.195 748.051 314.595 753.651 v
-f
-509.401 920 m
-483.801 912 481.001 893.2 V
-478.601 870.4 499.001 852.8 V
-499.401 846.4 501.401 843.2 v
-499.801 838.4 518.601 846 V
-545.801 854.4 l
-552.201 856.8 557.401 865.6 v
-562.601 874.4 577.801 893.2 574.201 918.4 C
-575.401 929.6 569.401 930 V
-561.001 931.6 553.801 924 V
-547.001 920.8 544.601 921.2 V
-509.401 920 L
-f
-564.022 920.99 m
-566.122 929.92 561.282 925.08 V
-554.242 919.36 546.761 919.36 V
-532.241 917.16 527.841 903.96 V
-523.881 877.12 531.801 871.4 V
-536.641 863.92 543.681 870.52 v
-550.722 877.12 566.222 907.35 564.022 920.99 C
-f
-0.2 g
-563.648 920.632 m
-565.738 929.376 560.986 924.624 V
-554.074 919.008 546.729 919.008 V
-532.473 916.848 528.153 903.888 V
-524.265 877.536 532.041 871.92 V
-536.793 864.576 543.705 871.056 v
-550.618 877.536 565.808 907.24 563.648 920.632 C
-f
-0.4 g
-563.274 920.274 m
-565.354 928.832 560.69 924.168 V
-553.906 918.656 546.697 918.656 V
-532.705 916.536 528.465 903.816 V
-524.649 877.952 532.281 872.44 V
-536.945 865.232 543.729 871.592 v
-550.514 877.952 565.394 907.13 563.274 920.274 C
-f
-0.6 g
-562.9 919.916 m
-564.97 928.288 560.394 923.712 V
-553.738 918.304 546.665 918.304 V
-532.937 916.224 528.777 903.744 V
-525.033 878.368 532.521 872.96 V
-537.097 865.888 543.753 872.128 v
-550.41 878.368 564.98 907.02 562.9 919.916 C
-f
-0.8 g
-562.526 919.558 m
-564.586 927.744 560.098 923.256 V
-553.569 917.952 546.633 917.952 V
-533.169 915.912 529.089 903.672 V
-525.417 878.784 532.761 873.48 V
-537.249 866.544 543.777 872.664 v
-550.305 878.784 564.566 906.91 562.526 919.558 C
-f
-1 g
-562.151 919.2 m
-564.201 927.2 559.801 922.8 V
-553.401 917.6 546.601 917.6 V
-533.401 915.6 529.401 903.6 V
-525.801 879.2 533.001 874 V
-537.401 867.2 543.801 873.2 v
-550.201 879.2 564.151 906.8 562.151 919.2 C
-f
-0.1 0.55 0.85 0.3 k
-350.6 716 m
-330.2 735.2 322.2 736 V
-287.8 740 273 722 V
-290.6 742.4 318.2 736.8 V
-296.6 741.2 284.2 738 V
-267.4 738 257.8 724 V
-255 719.2 l
-259 734 277.4 740 V
-300.2 744.8 311 740 V
-289.4 746.8 279.4 744.8 V
-249 747.2 236.2 720.8 V
-240.2 735.2 255 742.4 V
-268.6 751.2 289 748.4 V
-303.4 745.2 308.6 742.8 v
-313.8 740.4 312.6 743.2 304.2 748 C
-298.6 758 284.6 757.6 V
-241.8 754 231.4 742 V
-245 753.2 255.4 756 V
-277.8 764 286.2 763.2 V
-311 762.2 318.6 766.2 V
-307.4 761.2 310.6 758 v
-313.8 754.8 320.6 747.2 320.6 746 c
-320.6 744.8 344.8 722.7 348.4 718.3 C
-350.6 716 l
-f
-0.8 g
-1 J 0.1 w
-489 522 m
-473.5 558.5 461 568 V
-487 552 490.5 534 V
-490.5 524 489 522 V
-f
-536 514.5 m
-509.5 569.5 491 593.5 V
-534.5 556 539.5 529.5 V
-540 524 l
-537 526.5 l
-536.5 517.5 536 514.5 V
-f
-592.5 563 m
-530 622.5 528.5 625 V
-589 559 592 551.5 V
-590 560.5 592.5 563 V
-f
-404 519.5 m
-423.5 571.5 442.5 549 V
-457.5 539 457 536 V
-453 542.5 435 542 V
-416 545 404 519.5 V
-f
-594.5 647 m
-549.5 675.5 542 677 v
-530.193 679.361 591.5 648 596.5 637.5 C
-598.5 640 594.5 647 V
-f
-0 g
-0 J 1 w
-443.801 540.399 m
-464.201 542.399 471.001 549.199 V
-475.401 545.599 l
-493.001 583.999 l
-496.601 578.799 l
-511.001 593.599 510.201 601.599 v
-509.401 609.599 523.001 595.599 y
-522.201 607.199 529.401 600.399 V
-527.001 615.999 535.401 607.999 V
-524.864 638.156 547.401 612.399 v
-553.001 605.999 548.601 612.799 y
-522.601 660.799 544.201 646.399 v
-546.201 669.199 545.001 673.599 v
-543.801 677.999 541.801 700.4 537.001 705.6 c
-532.201 710.8 537.401 712.4 543.001 707.2 C
-531.801 731.2 545.001 719.2 V
-541.401 734.4 537.001 737.2 V
-531.401 754.4 546.601 743.6 V
-542.201 756 539.001 759.2 V
-527.401 786.8 534.601 782 V
-539.001 778.4 l
-532.201 792.4 538.601 788 v
-545.001 783.6 545.001 784 y
-523.801 817.2 544.201 799.6 V
-536.042 813.518 532.601 820.4 V
-513.801 840.8 528.201 834.4 V
-533.001 832.8 l
-524.201 842.8 516.201 844.4 v
-508.201 846 518.601 852.4 525.001 850.4 c
-531.401 848.4 547.001 840.8 y
-559.801 822 563.801 821.6 V
-543.801 829.2 549.801 821.2 V
-564.201 807.2 557.001 807.6 V
-551.001 800.4 555.801 791.6 V
-537.342 809.991 552.201 784.4 v
-559.001 768 l
-534.601 792.8 545.801 770.8 V
-563.001 747.2 565.001 746.8 v
-567.001 746.4 571.401 737.6 y
-567.001 739.6 l
-572.201 730.8 l
-561.001 742.8 567.001 729.6 V
-572.601 715.2 l
-552.201 737.2 565.801 707.6 V
-549.401 712.8 558.201 695.6 V
-556.601 679.599 557.001 674.399 v
-557.401 669.199 558.601 640.799 554.201 632.799 c
-549.801 624.799 560.201 605.599 562.201 601.599 c
-564.201 597.599 567.801 586.799 559.001 595.999 c
-550.201 605.199 554.601 599.599 556.601 590.799 c
-558.601 581.999 564.601 566.399 563.801 560.799 C
-562.601 559.599 559.401 563.199 V
-544.601 585.999 546.201 571.599 V
-545.001 563.599 541.801 554.799 V
-538.601 543.999 538.601 552.799 V
-535.401 569.599 532.601 561.999 v
-529.801 554.399 526.201 548.399 523.401 545.999 c
-520.601 543.599 515.401 566.399 514.201 555.999 C
-502.201 568.399 497.401 551.999 V
-485.801 535.599 l
-485.401 547.999 484.201 541.999 V
-454.201 535.999 443.801 540.399 V
-f
-409.401 897.2 m
-397.801 905.2 393.801 904.8 v
-389.801 904.4 421.401 913.6 462.601 886 C
-467.401 883.2 471.001 883.6 V
-474.201 881.2 471.401 877.6 V
-462.601 868 473.801 856.8 V
-492.201 850 486.601 858.8 V
-497.401 854.8 499.801 850.8 v
-502.201 846.8 501.001 850.8 y
-494.601 858 488.601 863.2 V
-483.401 865.2 480.601 873.6 v
-477.801 882 475.401 892 479.801 895.2 C
-475.801 890.8 476.601 894.8 v
-477.401 898.8 481.001 902.4 482.601 902.8 c
-484.201 903.2 500.601 919 507.401 919.4 C
-498.201 918 495.201 919 v
-492.201 920 465.601 931.4 459.601 932.6 C
-442.801 939.2 454.801 937.2 V
-490.601 933.4 508.801 920.2 V
-501.601 928.6 483.201 935.6 V
-461.001 948.2 425.801 943.2 V
-408.001 940 400.201 938.2 V
-397.601 938.8 397.001 939.2 v
-396.401 939.6 384.6 948.6 357 941.6 C
-340 937 331.4 932.2 V
-316.2 931 312.6 927.8 V
-294 913.2 292 912.4 v
-290 911.6 278.6 904 277.8 903.6 C
-302.4 910.2 304.8 912.6 v
-307.2 915 324.6 917.6 327 916.2 c
-329.4 914.8 337.8 915.4 328.2 914.8 C
-403.801 900 404.601 898 v
-405.401 896 409.401 897.2 y
-f
-0.2 0.55 0.85 0 k
-480.801 906.4 m
-470.601 913.8 468.601 913.8 v
-466.601 913.8 454.201 924 450.001 923.6 c
-445.801 923.2 433.601 933.2 406.201 925 C
-405.601 927 409.201 927.8 V
-415.601 930 416.001 930.6 V
-436.201 934.8 443.401 931.2 V
-452.601 928.6 458.801 922.4 V
-470.001 919.2 473.201 920.2 V
-482.001 918 482.401 916.2 V
-488.201 913.2 486.401 910.6 V
-486.801 909 480.801 906.4 V
-f
-468.33 908.509 m
-469.137 907.877 470.156 907.779 470.761 906.97 c
-470.995 906.656 470.706 906.33 470.391 906.233 c
-469.348 905.916 468.292 906.486 467.15 905.898 c
-466.748 905.691 466.106 905.873 465.553 906.022 c
-463.921 906.463 462.092 906.488 460.401 905.8 C
-458.416 906.929 456.056 906.345 453.975 907.346 c
-453.917 907.373 453.695 907.027 453.621 907.054 c
-450.575 908.199 446.832 907.916 444.401 910.2 C
-441.973 910.612 439.616 911.074 437.188 911.754 c
-435.37 912.263 433.961 913.252 432.341 914.084 c
-430.964 914.792 429.507 915.314 427.973 915.686 c
-426.11 916.138 424.279 916.026 422.386 916.546 c
-422.293 916.571 422.101 916.227 422.019 916.254 c
-421.695 916.362 421.405 916.945 421.234 916.892 c
-419.553 916.37 418.065 917.342 416.401 917 C
-415.223 918.224 413.495 917.979 411.949 918.421 c
-408.985 919.269 405.831 917.999 402.801 919 C
-406.914 920.842 411.601 919.61 415.663 921.679 c
-417.991 922.865 420.653 921.763 423.223 922.523 c
-423.71 922.667 424.401 922.869 424.801 922.2 C
-424.935 922.335 425.117 922.574 425.175 922.546 c
-427.625 921.389 429.94 920.115 432.422 919.049 c
-432.763 918.903 433.295 919.135 433.547 918.933 c
-435.067 917.717 437.01 917.82 438.401 916.6 C
-440.099 917.102 441.892 916.722 443.621 917.346 c
-443.698 917.373 443.932 917.032 443.965 917.054 c
-445.095 917.802 446.25 917.531 447.142 917.227 c
-447.48 917.112 448.143 916.865 448.448 916.791 c
-449.574 916.515 450.43 916.035 451.609 915.852 c
-451.723 915.834 451.908 916.174 451.98 916.146 c
-453.103 915.708 454.145 915.764 454.801 914.6 C
-454.936 914.735 455.101 914.973 455.183 914.946 c
-456.21 914.608 456.859 913.853 457.96 913.612 c
-458.445 913.506 459.057 912.88 459.633 912.704 c
-462.025 911.973 463.868 910.444 466.062 909.549 c
-466.821 909.239 467.697 909.005 468.33 908.509 c
-f
-391.696 922.739 m
-389.178 924.464 386.81 925.57 384.368 927.356 c
-384.187 927.489 383.827 927.319 383.625 927.441 c
-382.618 928.05 381.73 928.631 380.748 929.327 c
-380.209 929.709 379.388 929.698 378.88 929.956 c
-376.336 931.248 373.707 931.806 371.2 933 C
-371.882 933.638 373.004 933.394 373.6 934.2 C
-373.795 933.92 374.033 933.636 374.386 933.827 c
-376.064 934.731 377.914 934.884 379.59 934.794 c
-381.294 934.702 383.014 934.397 384.789 934.125 c
-385.096 934.078 385.295 933.555 385.618 933.458 c
-387.846 932.795 390.235 933.32 392.354 932.482 c
-393.945 931.853 395.515 931.03 396.754 929.755 c
-397.006 929.495 396.681 929.194 396.401 929 C
-396.789 929.109 397.062 928.903 397.173 928.59 c
-397.257 928.351 397.257 928.049 397.173 927.81 c
-397.061 927.498 396.782 927.397 396.408 927.346 c
-395.001 927.156 396.773 928.536 396.073 928.088 c
-394.8 927.274 395.546 925.868 394.801 924.6 C
-394.521 924.794 394.291 925.012 394.401 925.4 C
-394.635 924.878 394.033 924.588 393.865 924.272 c
-393.48 923.547 392.581 922.132 391.696 922.739 c
-f
-359.198 915.391 m
-356.044 916.185 352.994 916.07 349.978 917.346 c
-349.911 917.374 349.688 917.027 349.624 917.054 c
-348.258 917.648 347.34 918.614 346.264 919.66 c
-345.351 920.548 343.693 920.161 342.419 920.648 c
-342.095 920.772 341.892 921.284 341.591 921.323 c
-340.372 921.48 339.445 922.429 338.4 923 C
-340.736 923.795 343.147 923.764 345.609 924.148 c
-345.722 924.166 345.867 923.845 346 923.845 c
-346.136 923.845 346.266 924.066 346.4 924.2 C
-346.595 923.92 346.897 923.594 347.154 923.848 c
-347.702 924.388 348.258 924.198 348.798 924.158 c
-348.942 924.148 349.067 923.845 349.2 923.845 c
-349.336 923.845 349.467 924.156 349.6 924.156 c
-349.736 924.155 349.867 923.845 350 923.845 c
-350.136 923.845 350.266 924.066 350.4 924.2 C
-351.092 923.418 351.977 923.972 352.799 923.793 c
-353.837 923.566 354.104 922.418 355.178 922.12 c
-359.893 920.816 364.03 918.671 368.393 916.584 c
-368.7 916.437 368.91 916.189 368.8 915.8 C
-369.067 915.8 369.38 915.888 369.57 915.756 c
-370.628 915.024 371.669 914.476 372.366 913.378 c
-372.582 913.039 372.253 912.632 372.02 912.684 c
-367.591 913.679 363.585 914.287 359.198 915.391 c
-f
-345.338 871.179 m
-343.746 872.398 343.162 874.429 342.034 876.221 c
-341.82 876.561 342.094 876.875 342.411 876.964 c
-342.971 877.123 343.514 876.645 343.923 876.443 c
-345.668 875.581 347.203 874.339 349.2 874.2 C
-351.19 871.966 355.45 871.581 355.457 868.2 c
-355.458 867.341 354.03 868.259 353.6 867.4 C
-351.149 868.403 348.76 868.3 346.38 869.767 c
-345.763 870.148 346.093 870.601 345.338 871.179 c
-f
-317.8 923.756 m
-317.935 923.755 324.966 923.522 324.949 923.408 c
-324.904 923.099 317.174 922.05 316.81 922.22 c
-316.646 922.296 309.134 919.866 309 920 C
-309.268 920.135 317.534 923.756 317.8 923.756 c
-f
-0 g
-333.2 914 m
-318.4 912.2 314 911 v
-309.6 909.8 291 902.2 288 900.2 C
-274.6 894.8 257.6 874.8 V
-265.2 878.2 267.4 881 V
-281 893.6 280.8 891 V
-293 899.6 292.4 897.4 V
-316.8 908.6 314.8 905.4 V
-336.4 910 335.4 908 V
-354.2 903.6 351.4 903.4 V
-345.6 902.2 352 898.6 V
-348.6 894.2 343.2 898.2 v
-337.8 902.2 340.8 900 335.8 899 C
-333.2 898.2 328.6 902.2 V
-323 906.8 314.2 903.2 V
-283.6 890.6 281.6 890 V
-278 887.2 275.6 883.6 V
-269.8 879.2 266.8 877.8 V
-254 866.2 252.8 864.8 V
-249.4 859.6 248.6 859.2 V
-255 863 257 865 V
-271 875 276.4 875.8 V
-280.8 878.8 281.6 880.2 V
-296 889.4 300.2 889.4 V
-309.4 884.2 311.8 891.2 V
-317.6 893 323.2 891.8 V
-326.4 894.4 325.6 896.6 V
-327.2 898.4 328.2 894.6 V
-331.6 891 336.4 893 V
-340.4 893.2 338.4 890.8 V
-334 887 322.2 886.8 V
-309.8 886.2 293.4 878.6 V
-263.6 868.2 254.4 857.8 V
-248 849 242.6 847.8 V
-236.8 847 230.8 839.6 V
-240.6 845.4 249.6 845.4 V
-253.6 847.8 249.8 844.2 V
-246.2 836.6 247.8 831.2 V
-247.2 826 246.4 824.4 V
-238.6 811.6 238.6 809.2 v
-238.6 806.8 239.8 797 240.2 796.4 c
-240.6 795.8 239.2 798 243 795.6 c
-246.8 793.2 249.6 791.6 250.4 788.8 c
-251.2 786 248.4 794.2 248.2 796 c
-248 797.8 243.8 805 244.6 807.4 C
-245.6 806.4 246.4 805 V
-245.8 805.6 246.4 809.2 V
-247.2 814.4 248.6 817.6 v
-250 820.8 252 824.6 252.4 825.4 c
-252.8 826.2 252.8 832 254.2 829.4 C
-257.6 826.8 l
-254.8 829.4 257 831.6 V
-256 837.2 257.8 839.8 V
-264.8 848.2 266.4 849.2 v
-268 850.2 266.6 849.8 y
-272.6 854 266.8 852.4 V
-262.8 850.8 259.8 850.8 V
-252.2 848.8 256.2 853 v
-260.2 857.2 270.2 862.6 274 862.4 C
-274.8 860.8 l
-286 863.2 l
-284.8 862.4 l
-284.6 862.6 288.8 863 v
-293 863.4 298.8 862 300.2 863.8 c
-301.6 865.6 305 866.6 304.6 865.2 c
-304.2 863.8 304 861.8 y
-309 867.6 308.4 865.4 v
-307.8 863.2 299.6 858 298.2 851.8 C
-308.6 860 l
-312.2 863 l
-315.8 860.8 316 862.4 v
-316.2 864 320.8 869.8 322 869.6 c
-323.2 869.4 325.2 872.2 325 869.6 c
-324.8 867 332.4 861.6 y
-335.6 863.4 337 862 v
-338.4 860.6 342.6 881.8 y
-367.6 892.4 l
-411.201 895.8 l
-394.201 902.6 l
-333.2 914 l
-f
-0.2 0.55 0.85 0.5 K
-1 J 2 w
-351.4 715 m
-336.4 731.8 328 734.4 V
-314.6 741.2 290 733.4 v
-S
-324.8 735.8 m
-299.6 743.8 284.2 739.6 V
-265.8 737.6 257.4 723.8 v
-S
-321.2 737 m
-304.2 744.2 289.4 746.4 V
-272.8 749 256.2 741.8 V
-244 735.8 238.6 725.6 v
-S
-322.2 736.6 m
-306.8 747.6 305.8 749 V
-298.8 760 285.8 760.4 V
-264.4 759.6 247.2 751.6 v
-S
-0 G
-0 J 1 w
-320.895 745.593 m
-322.437 744.13 349.4 715.2 Y
-384.6 678.599 356.6 712.8 Y
-349 717.6 339.8 736.4 Y
-338.6 739.2 353.8 729.2 Y
-357.8 728.4 371.4 709.2 Y
-364.6 711.6 369.4 704.4 Y
-372.2 702.4 392.601 686.799 Y
-396.201 682.799 400.201 681.199 Y
-414.201 686.399 407.801 673.199 Y
-410.201 666.399 415.801 677.999 Y
-427.001 694.8 410.601 692.399 Y
-380.6 689.599 373.8 705.6 Y
-371.4 708 380.2 705.6 Y
-388.601 703.6 373 718 Y
-375.4 718 384.6 711.2 Y
-395.001 702 397.001 704 Y
-415.001 712.8 425.401 705.2 Y
-427.401 703.6 421.801 696.8 423.401 691.599 c
-425.001 686.399 429.801 673.999 Y
-427.401 672.399 427.801 661.599 Y
-444.601 638.399 435.001 640.399 Y
-419.401 640.799 434.201 633.199 Y
-437.401 631.199 446.201 623.999 Y
-443.401 625.199 441.801 619.999 Y
-446.601 615.999 443.801 611.199 Y
-437.801 609.999 436.601 605.999 Y
-443.401 597.999 433.401 597.599 Y
-437.001 593.199 432.201 581.199 Y
-427.401 581.199 421.001 575.599 Y
-423.401 570.799 413.001 565.199 Y
-404.601 563.599 407.401 556.799 Y
-399.401 550.799 397.001 534.799 Y
-396.201 524.399 393.801 521.199 399.001 523.199 c
-404.201 525.199 403.401 537.599 Y
-398.601 553.199 441.401 569.199 Y
-445.401 570.799 446.201 575.999 Y
-448.201 575.599 457.001 567.999 Y
-464.601 556.799 465.001 565.999 Y
-466.201 569.599 464.601 575.599 Y
-470.601 597.199 456.601 603.599 Y
-446.601 637.199 460.601 628.799 Y
-463.401 623.199 474.201 617.999 y
-477.801 620.399 L
-476.201 625.199 484.601 631.199 Y
-487.401 624.799 493.401 632.799 Y
-497.001 657.199 509.401 642.799 Y
-513.401 641.599 514.601 648.399 Y
-518.201 658.799 514.601 672.399 Y
-518.201 672.799 527.801 666.799 Y
-530.601 670.399 521.401 687.199 525.401 684.799 c
-529.401 682.399 533.801 680.799 Y
-534.601 682.799 524.601 695.199 Y
-520.201 698 515.001 718.4 Y
-522.201 714.8 512.201 730 Y
-512.201 733.2 518.201 744.4 Y
-517.401 751.2 518.201 750.8 Y
-521.001 749.6 529.001 748 522.201 754.4 c
-515.401 760.8 523.001 765.6 Y
-527.401 768.4 513.801 768 Y
-508.601 772.4 509.001 776.4 Y
-517.001 774.4 502.601 788.8 500.201 792.4 c
-497.801 796 507.401 801.2 Y
-520.601 804.8 509.001 808 Y
-489.401 807.6 500.201 818.4 Y
-506.201 818 504.601 820.4 Y
-499.401 821.6 489.801 828 Y
-485.801 831.6 489.401 830.8 Y
-506.201 829.6 477.401 840.8 Y
-485.401 840.8 467.401 851.2 Y
-465.401 852.8 462.201 860.4 Y
-456.201 865.6 451.401 872.4 Y
-451.001 876.8 446.201 881.6 Y
-434.601 895.2 429.001 894.8 Y
-414.201 898.4 409.001 897.6 Y
-356.2 893.2 l
-329.8 880.4 337.6 859.4 Y
-344 851 353.2 854.8 Y
-357.8 861 369.4 858.8 Y
-389.801 855.6 387.201 859.2 Y
-384.801 863.8 368.6 870 368.4 870.6 c
-368.2 871.2 359.4 874.6 Y
-356.4 875.8 352 885 Y
-348.8 888.4 364.6 882.6 Y
-363.4 881.6 370.8 877.6 Y
-388.201 878.6 398.801 867.8 Y
-409.601 851.2 409.801 859.4 Y
-412.601 868.8 400.801 890 Y
-401.201 892 409.401 885.4 Y
-410.801 887.4 411.601 881.6 Y
-411.801 879.2 415.601 871.2 Y
-418.401 858.2 422.001 865.6 Y
-426.601 856.2 L
-428.001 853.6 422.001 846 Y
-421.801 843.2 422.601 843.4 417.001 835.8 c
-411.401 828.2 414.801 823.8 Y
-413.401 817.2 422.201 817.6 Y
-424.801 815.4 428.201 815.4 Y
-430.001 813.4 432.401 814 Y
-434.001 817.8 440.201 815.8 Y
-441.601 818.2 449.801 818.6 Y
-450.801 821.2 451.201 822.8 454.601 823.4 c
-458.001 824 433.401 867 Y
-439.801 867.8 431.601 880.2 Y
-429.401 886.8 440.801 872.2 443.001 870.8 c
-445.201 869.4 446.201 867.2 444.601 867.4 c
-443.001 867.6 441.201 865.4 442.601 865.2 c
-444.001 865 457.001 850 460.401 839.8 c
-463.801 829.6 469.801 825.6 476.001 819.6 c
-482.201 813.6 481.401 789.4 Y
-481.001 780.6 487.001 770 Y
-489.001 766.2 484.801 748 Y
-482.801 745.8 484.201 745 Y
-485.201 743.8 492.001 730.6 Y
-490.201 730.8 493.801 727.2 Y
-499.001 721.2 492.601 724.2 Y
-486.601 725.8 493.601 716 Y
-494.801 714.2 485.801 718.8 Y
-476.601 719.4 488.201 712.2 Y
-496.801 705 485.401 709.4 Y
-480.801 711.2 484.001 704.4 Y
-487.201 702.8 504.401 695.8 Y
-504.801 691.999 501.801 686.999 Y
-502.201 682.999 500.001 679.599 Y
-498.801 671.399 498.201 670.599 Y
-494.001 670.399 486.601 656.599 Y
-484.801 653.999 474.601 641.999 Y
-472.601 634.999 454.601 642.199 Y
-448.001 638.799 450.001 642.199 Y
-449.601 644.399 454.401 650.399 Y
-461.401 652.999 458.801 663.799 Y
-462.801 665.199 451.601 667.999 451.801 669.199 c
-452.001 670.399 457.801 671.799 Y
-465.801 673.799 461.401 676.199 Y
-460.801 680.199 463.801 685.799 Y
-475.401 686.599 463.801 702.8 Y
-453.001 710.4 452.001 716.2 Y
-464.601 724.4 456.401 736.8 456.601 740.4 c
-456.801 744 458.001 765.6 Y
-456.001 771.8 453.001 785.4 Y
-455.201 790.6 462.601 803.2 Y
-465.401 807.4 474.201 812.2 472.001 815.2 c
-469.801 818.2 462.001 816.4 Y
-454.201 817.8 454.801 812.6 Y
-453.201 811.6 452.401 806.6 Y
-451.68 798.667 442.801 792.4 Y
-431.601 786.2 440.801 782.2 Y
-446.801 775.6 437.001 775.4 Y
-426.001 777.2 434.201 767 Y
-445.001 754.2 442.001 751.4 Y
-431.801 750.4 444.401 741.2 y
-443.601 743.2 443.801 741.4 v
-444.001 739.6 447.001 735.4 447.801 733.4 c
-448.601 731.4 444.601 731.2 Y
-445.201 721.6 429.801 725.8 y
-429.801 725.8 428.201 725.6 v
-426.601 725.4 415.401 726.2 409.601 728.4 c
-403.801 730.6 397.001 730.6 y
-393.001 728.8 385.4 729 v
-377.8 729.2 369.8 726.4 Y
-365.4 726.8 374 731.2 374.2 731 c
-374.4 730.8 380 736.4 372 735.8 c
-350.203 734.165 339.4 744.4 Y
-337.4 745.8 334.8 748.6 Y
-324.8 750.6 336.2 736.2 Y
-337.4 734.8 336 733.8 Y
-335.2 735.4 327.4 740.8 Y
-324.589 741.773 323.226 743.107 320.895 745.593 C
-f
-0.2 0.55 0.85 0.5 k
-1 J 2 w
-297 757.2 m
-308.6 751.6 311.2 748.8 v
-313.8 746 327.8 734.6 y
-322.4 736.6 319.8 738.4 v
-317.2 740.2 306.4 748.4 y
-302.6 754.4 297 757.2 v
-f
-0.4 0.2 0.8 0 k
-0 J 1 w
-238.991 788.397 m
-239.328 788.545 238.804 791.257 238.6 791.8 c
-237.578 794.526 228.6 796 y
-228.373 794.635 228.318 793.039 228.424 791.401 c
-233.292 785.882 238.991 788.397 v
-f
-0.4 0.2 0.8 0.2 k
-238.991 788.597 m
-238.542 788.439 238.976 791.331 238.8 791.8 c
-237.778 794.526 228.6 796.1 y
-228.373 794.735 228.318 793.139 228.424 791.501 c
-232.692 786.382 238.991 788.597 v
-f
-0 g
-234.6 788.454 m
-233.975 788.454 233.469 789.594 233.469 791 c
-233.469 792.405 233.975 793.545 234.6 793.545 c
-235.225 793.545 235.732 792.405 235.732 791 c
-235.732 789.594 235.225 788.454 234.6 788.454 c
-f
-234.6 791 m
-F
-189 690.399 m
-183.4 680.399 208.2 686.399 V
-222.2 687.599 224.6 689.999 V
-225.8 689.199 234.166 686.266 237 685.599 c
-243.8 683.999 252.2 694 y
-256.8 704.5 259.6 704.5 v
-262.4 704.5 259.2 702.9 y
-252.6 692.799 253 691.199 V
-247.8 671.199 231.8 670.399 V
-215.65 669.449 217 663.599 V
-225.8 665.999 228.2 663.599 V
-239 663.999 231 657.599 V
-224.2 645.999 l
-224.34 642.081 214.2 645.599 v
-204.4 648.999 194.1 661.899 y
-178.15 676.449 189 690.399 V
-f
-0.1 0.4 0.4 0 k
-187.8 686.399 m
-185.8 676.799 222.6 687.199 V
-227 687.199 229.4 686.399 v
-231.8 685.599 243.8 682.799 245.8 683.999 C
-238.6 670.399 227 671.999 V
-213.8 670.399 214.2 665.599 V
-218.2 658.399 223 655.999 V
-225.8 653.599 225.4 650.399 v
-225 647.199 222.2 645.599 220.2 644.799 c
-218.2 643.999 215 647.199 213.4 647.199 c
-211.8 647.199 203.4 653.599 199 658.399 c
-194.6 663.199 186.2 675.199 186.6 677.999 c
-187 680.799 187.8 686.399 Y
-f
-0.1 0.4 0.4 0.2 k
-191 668.949 m
-193.6 664.999 196.8 660.799 199 658.399 c
-203.4 653.599 211.8 647.199 213.4 647.199 c
-215 647.199 218.2 643.999 220.2 644.799 c
-222.2 645.599 225 647.199 225.4 650.399 c
-225.8 653.599 223 655.999 Y
-219.934 657.532 217.194 661.024 215.615 663.347 C
-215.8 660.799 210.6 661.599 v
-205.4 662.399 200.2 665.199 198.6 668.399 c
-197 671.599 194.6 673.999 196.2 670.399 c
-197.8 666.799 200.2 663.199 201.8 662.799 c
-203.4 662.399 203 661.199 200.6 661.599 c
-198.2 661.999 195.4 662.399 191 667.599 c
-F
-0.1 0.55 0.85 0.3 k
-188.4 689.999 m
-190.2 703.6 191.4 707.6 V
-190.6 714.4 193 718.6 v
-195.4 722.8 197.4 729 200.4 734.4 c
-203.4 739.8 203.6 743.8 207.6 745.4 c
-211.6 747 217.6 755.6 220.4 756.6 c
-223.2 757.6 223 756.8 y
-229.8 771.6 243.4 767.6 V
-227.2 770.4 243 779.8 V
-238.2 778.7 241.5 785.7 v
-243.701 790.368 243.2 783.6 232.2 771.8 C
-227.2 763.2 222 760.2 v
-216.8 757.2 204.8 750.2 203.6 746.4 c
-202.4 742.6 199.2 736.8 197.2 735.2 c
-195.2 733.6 192.4 729.4 192 726 C
-190.8 722 189.4 720.8 v
-188 719.6 187.8 716.4 187.8 714.4 c
-187.8 712.4 185.8 709.6 186 707.2 C
-186.8 688.199 186.4 686.199 V
-188.4 689.999 L
-f
-1 g
-179.8 685.399 m
-177.8 686.799 173.4 680.799 V
-180.7 647.799 180.7 646.399 V
-181.8 648.499 180.5 655.699 v
-179.2 662.899 178.3 675.599 y
-179.8 685.399 l
-f
-0.1 0.55 0.85 0.3 k
-201.4 746 m
-183.8 742.8 184.2 713.6 V
-183.4 688.799 l
-182.2 714.4 181 716 v
-179.8 717.6 183.8 728.8 180.6 722.8 C
-166.6 708.8 174.6 687.599 V
-176.1 684.299 173.1 688.899 V
-168.5 701.5 169.6 707.9 V
-169.8 710.1 171.7 712.9 V
-180.3 724.6 183 726.9 V
-184.8 741.3 200.2 746.5 V
-205.9 748.8 201.4 746 V
-f
-0 g
-340.8 812.2 m
-341.46 812.554 341.451 813.524 342.031 813.697 c
-343.18 814.041 343.344 815.108 343.862 815.892 c
-344.735 817.211 344.928 818.744 345.51 820.235 c
-345.782 820.935 345.809 821.89 345.496 822.55 c
-344.322 825.031 343.62 827.48 342.178 829.906 c
-341.91 830.356 341.648 831.15 341.447 831.748 c
-340.984 833.132 339.727 834.123 338.867 835.443 c
-338.579 835.884 339.104 836.809 338.388 836.893 c
-337.491 836.998 336.042 837.578 335.809 836.552 c
-335.221 833.965 336.232 831.442 337.2 829 C
-336.418 828.308 336.752 827.387 336.904 826.62 c
-337.614 823.014 336.416 819.662 335.655 816.188 c
-335.632 816.084 335.974 815.886 335.946 815.824 c
-334.724 813.138 333.272 810.693 331.453 808.312 c
-330.695 807.32 329.823 806.404 329.326 805.341 c
-328.958 804.554 328.55 803.588 328.8 802.6 C
-325.365 799.82 323.115 795.975 320.504 792.129 c
-320.042 791.449 320.333 790.24 320.884 789.971 c
-321.697 789.573 322.653 790.597 323.123 791.443 c
-323.512 792.141 323.865 792.791 324.356 793.434 c
-324.489 793.609 324.31 794.028 324.445 794.149 c
-327.078 796.496 328.747 799.432 331.2 801.8 C
-333.15 802.129 334.687 803.127 336.435 804.14 c
-336.743 804.319 337.267 804.07 337.557 804.265 c
-339.31 805.442 339.308 807.478 339.414 809.388 c
-339.464 810.272 339.66 811.589 340.8 812.2 c
-f
-331.959 816.666 m
-332.083 816.743 331.928 817.166 332.037 817.382 c
-332.199 817.706 332.602 817.894 332.764 818.218 c
-332.873 818.434 332.71 818.814 332.846 818.956 c
-335.179 821.403 335.436 824.427 334.4 827.4 C
-335.424 828.02 335.485 829.282 335.06 830.129 c
-334.207 831.829 334.014 833.755 333.039 835.298 c
-332.237 836.567 330.659 837.811 329.288 836.508 c
-328.867 836.108 328.546 835.321 328.824 834.609 c
-328.888 834.446 329.173 834.3 329.146 834.218 c
-329.039 833.894 328.493 833.67 328.487 833.398 c
-328.457 831.902 327.503 830.391 328.133 829.062 c
-328.905 827.433 329.724 825.576 330.4 823.8 C
-329.166 821.684 330.199 819.235 328.446 817.358 c
-328.31 817.212 328.319 816.826 328.441 816.624 c
-328.733 816.138 329.139 815.732 329.625 815.44 c
-329.827 815.319 330.175 815.317 330.375 815.441 c
-330.953 815.803 331.351 816.29 331.959 816.666 c
-f
-394.771 826.977 m
-396.16 825.185 396.45 822.39 394.401 821 C
-394.951 817.691 398.302 819.67 400.401 820.2 C
-400.292 820.588 400.519 820.932 400.802 820.937 c
-401.859 820.952 402.539 821.984 403.601 821.8 C
-404.035 823.357 405.673 824.059 406.317 825.439 c
-408.043 829.134 407.452 833.407 404.868 836.653 c
-404.666 836.907 404.883 837.424 404.759 837.786 c
-404.003 839.997 401.935 840.312 400.001 841 C
-398.824 844.875 398.163 848.906 396.401 852.6 C
-394.787 852.85 394.089 854.589 392.752 855.309 c
-391.419 856.028 390.851 854.449 390.892 853.403 c
-390.899 853.198 391.351 852.974 391.181 852.609 c
-391.105 852.445 390.845 852.334 390.845 852.2 c
-390.846 852.065 391.067 851.934 391.201 851.8 C
-390.283 850.98 388.86 850.503 388.565 849.358 c
-387.611 845.648 390.184 842.523 391.852 839.322 c
-392.443 838.187 391.707 836.916 390.947 835.708 c
-390.509 835.013 390.617 833.886 390.893 833.03 c
-391.645 830.699 393.236 828.96 394.771 826.977 c
-f
-357.611 808.591 m
-356.124 806.74 352.712 804.171 355.629 802.243 c
-355.823 802.114 356.193 802.11 356.366 802.244 c
-358.387 803.809 360.39 804.712 362.826 805.294 c
-362.95 805.323 363.224 804.856 363.593 805.017 c
-365.206 805.72 367.216 805.662 368.4 807 C
-372.167 806.776 375.732 807.892 379.123 809.2 c
-380.284 809.648 381.554 810.207 382.755 810.709 c
-384.131 811.285 385.335 812.213 386.447 813.354 c
-386.58 813.49 386.934 813.4 387.201 813.4 C
-387.161 814.263 388.123 814.39 388.37 815.012 c
-388.462 815.244 388.312 815.64 388.445 815.742 c
-390.583 817.372 391.503 819.39 390.334 821.767 c
-390.049 822.345 389.8 822.963 389.234 823.439 c
-388.149 824.35 387.047 823.496 386 823.8 C
-385.841 823.172 385.112 823.344 384.726 823.146 c
-383.867 822.707 382.534 823.292 381.675 822.854 c
-380.313 822.159 379.072 821.99 377.65 821.613 c
-377.338 821.531 376.56 821.627 376.4 821 C
-376.266 821.134 376.118 821.368 376.012 821.346 c
-374.104 820.95 372.844 820.736 371.543 819.044 c
-371.44 818.911 370.998 819.09 370.839 818.955 c
-369.882 818.147 369.477 816.913 368.376 816.241 c
-368.175 816.118 367.823 816.286 367.629 816.157 c
-366.983 815.726 366.616 815.085 365.974 814.638 c
-365.645 814.409 365.245 814.734 365.277 814.99 c
-365.522 816.937 366.175 818.724 365.6 820.6 C
-367.677 823.12 370.194 825.069 372 827.8 C
-372.015 829.966 372.707 832.112 372.594 834.189 c
-372.584 834.382 372.296 835.115 372.17 835.462 c
-371.858 836.316 372.764 837.382 371.92 838.106 c
-370.516 839.309 369.224 838.433 368.4 837 C
-366.562 836.61 364.496 835.917 362.918 837.151 c
-361.911 837.938 361.333 838.844 360.534 839.9 c
-359.549 841.202 359.884 842.638 359.954 844.202 c
-359.96 844.33 359.645 844.466 359.645 844.6 c
-359.646 844.735 359.866 844.866 360 845 C
-359.294 845.626 359.019 846.684 358 847 C
-358.305 848.092 357.629 848.976 356.758 849.278 c
-354.763 849.969 353.086 848.057 351.194 847.984 c
-350.68 847.965 350.213 849.003 349.564 849.328 c
-349.132 849.544 348.428 849.577 348.066 849.311 c
-347.378 848.807 346.789 848.693 346.031 848.488 c
-344.414 848.052 343.136 846.958 341.656 846.103 c
-340.171 845.246 339.216 843.809 338.136 842.489 c
-337.195 841.337 337.059 838.923 338.479 838.423 c
-340.322 837.773 341.626 840.476 343.592 840.15 c
-343.904 840.099 344.11 839.788 344 839.4 C
-344.389 839.291 344.607 839.52 344.8 839.8 C
-345.658 838.781 346.822 838.444 347.76 837.571 c
-348.73 836.667 350.476 837.085 351.491 836.088 c
-353.02 834.586 352.461 831.905 354.4 830.6 C
-353.814 829.287 353.207 828.01 352.872 826.583 c
-352.59 825.377 353.584 824.18 354.795 824.271 c
-356.053 824.365 356.315 825.124 356.8 826.2 C
-357.067 825.933 357.536 825.636 357.495 825.42 c
-357.038 823.033 356.011 821.04 355.553 818.609 c
-355.494 818.292 355.189 818.09 354.8 818.2 C
-354.332 814.051 350.28 811.657 347.735 808.492 c
-347.332 807.99 347.328 806.741 347.737 806.338 c
-349.14 804.951 351.1 806.497 352.8 807 C
-353.013 808.206 353.872 809.148 355.204 809.092 c
-355.46 809.082 355.695 809.624 356.019 809.754 c
-356.367 809.892 356.869 809.668 357.155 809.866 c
-358.884 811.061 360.292 812.167 362.03 813.356 c
-362.222 813.487 362.566 813.328 362.782 813.436 c
-363.107 813.598 363.294 813.985 363.617 814.17 c
-363.965 814.37 364.207 814.08 364.4 813.8 C
-363.754 813.451 363.75 812.494 363.168 812.292 c
-362.393 812.024 361.832 811.511 361.158 811.064 c
-360.866 810.871 360.207 811.119 360.103 810.94 c
-359.505 809.912 358.321 809.474 357.611 808.591 c
-f
-302.2 858 m
-292.962 860.872 281.8 835.2 V
-279.4 830 277 828 v
-274.6 826 263.4 822.4 261.4 818.4 C
-251 802.4 L
-265.8 818.4 269 820.8 V
-277 829.2 273.8 822.4 V
-259.8 811.6 261 802.4 V
-255.4 788 254.6 786 V
-270.6 818 273 819.2 v
-275.4 820.4 276.6 820.4 275.4 816.8 c
-274.2 813.2 273.8 796.8 271 794.8 C
-279 815.2 278.2 818.4 V
-281.4 822 283.8 816.8 V
-282.6 800.8 l
-287 788.8 l
-284.6 800 286.2 815.6 V
-284.2 826 288.2 820.4 v
-292.2 814.8 301.8 808.8 301.8 804 C
-296.6 821.6 287.4 826.4 V
-283.4 820.4 l
-282.2 822.4 l
-278.6 823.2 283 830 v
-287.4 836.8 287 837.6 y
-293.4 830.4 295 830.4 V
-308.2 838 309.4 813.6 V
-316.2 828 307 834.8 V
-292.2 836.8 293.4 842 V
-300.6 854.4 L
-304.2 859.6 302.6 856.8 y
-F
-282.2 841.6 m
-269.4 841.6 266.2 836.4 V
-259 826.8 l
-276.2 836.8 280.2 838 v
-284.2 839.2 282.2 841.6 Y
-f
-242.2 835.2 m
-240.2 834 239.8 831.2 v
-239.4 828.4 237 828 237.8 825.2 c
-238.6 822.4 240.6 820 240.6 824 c
-240.6 828 242.2 830 243 831.2 c
-243.8 832.4 245.4 836.8 242.2 835.2 c
-f
-233.4 774 m
-225 778 221.8 781.6 v
-218.6 785.2 219.052 780.034 214.2 780.4 c
-208.353 780.841 209.4 796.8 y
-205.4 789.2 l
-204.2 774.8 212.2 777.2 v
-216.107 778.372 217.4 776.8 215.8 776 c
-214.2 775.2 221.4 774.8 218.6 773.2 c
-215.8 771.6 230.2 776.8 227.8 766.4 C
-233.4 774 L
-f
-220.8 759.6 m
-205.4 755.2 201.8 764.8 V
-197 762.4 199.2 759.4 v
-201.4 756.4 202.6 756 y
-208 754.8 207.4 754 v
-206.8 753.2 204.4 749.8 y
-214.6 755.8 220.8 759.6 v
-f
-1 g
-449.201 681.399 m
-448.774 679.265 447.103 678.464 445.201 677.799 C
-443.284 678.757 440.686 681.863 438.801 679.799 C
-438.327 680.279 437.548 680.339 437.204 681.001 c
-436.739 681.899 437.011 682.945 436.669 683.743 c
-436.124 685.015 435.415 686.381 435.601 687.799 C
-437.407 688.511 438.002 690.417 437.528 692.18 c
-437.459 692.437 437.03 692.634 437.23 692.983 c
-437.416 693.306 437.734 693.533 438.001 693.8 C
-437.866 693.665 437.721 693.432 437.61 693.452 c
-437 693.558 437.124 694.195 437.254 694.582 c
-437.839 696.328 439.853 696.592 441.201 695.4 C
-441.457 695.965 441.966 695.771 442.401 695.8 C
-442.351 696.379 442.759 696.906 442.957 697.326 c
-443.475 698.424 445.104 697.318 445.901 697.93 c
-446.977 698.755 448.04 699.454 449.118 698.851 c
-450.927 697.838 452.636 696.626 453.835 694.885 c
-454.41 694.051 454.65 692.77 454.592 691.812 c
-454.554 691.165 453.173 691.517 452.83 690.588 c
-452.185 688.84 454.016 688.321 454.772 686.983 c
-454.97 686.634 454.706 686.33 454.391 686.232 c
-453.98 686.104 453.196 686.293 453.334 685.84 c
-454.306 682.647 451.55 681.969 449.201 681.399 C
-f
-439.6 661.799 m
-439.593 663.537 437.992 665.293 439.201 666.999 C
-439.336 666.865 439.467 666.644 439.601 666.644 c
-439.736 666.644 439.867 666.865 440.001 666.999 C
-441.496 664.783 445.148 663.855 445.006 661.009 c
-444.984 660.562 443.897 659.644 444.801 658.999 C
-442.988 657.651 442.933 655.281 442.001 653.399 C
-440.763 653.685 439.551 654.048 438.401 654.599 C
-438.753 656.085 438.636 657.769 439.456 659.089 c
-439.89 659.787 439.603 660.866 439.6 661.799 c
-f
-0.8 g
-273.4 670.799 m
-256.542 660.663 270.6 675.999 v
-279.4 685.599 289.4 691.199 y
-299.8 695.6 303.4 696.8 v
-307 698 322.2 703.2 325.4 703.6 c
-328.6 704 338.2 708 345 704 c
-351.8 700 359.8 695.6 y
-343.4 704 339.8 701.6 v
-336.2 699.2 329 699.6 323 696.4 C
-308.2 691.999 305 689.999 v
-301.8 687.999 291.4 676.399 289.8 677.199 c
-288.2 677.999 290.2 678.399 291.4 681.199 c
-292.6 683.999 290.6 685.599 282.6 679.199 c
-274.6 672.799 273.4 670.799 Y
-f
-0 g
-280.805 676.766 m
-282.215 689.806 290.693 688.141 V
-298.919 692.311 301.641 694.279 V
-309.78 695.981 311.09 696.598 v
-329.569 705.298 344.288 700.779 344.835 701.899 c
-345.381 703.018 365.006 695.901 368.615 691.815 c
-369.006 691.372 358.384 697.412 348.686 699.303 c
-340.413 700.917 318.811 699.056 307.905 693.52 c
-304.932 692.011 295.987 686.227 293.456 686.338 c
-290.925 686.45 280.805 676.766 Y
-f
-0.8 g
-277 651.199 m
-261.8 653.599 278.6 655.199 V
-296.6 657.199 300.6 662.399 V
-314.2 671.599 317 671.999 v
-319.8 672.399 349.8 679.599 350.2 681.999 c
-350.6 684.399 356.2 684.399 357.8 683.599 c
-359.4 682.799 358.6 681.599 355.8 680.799 c
-353 679.999 321.8 663.599 315.4 662.399 c
-309 661.199 297.4 653.599 292.6 652.399 c
-287.8 651.199 277 651.199 Y
-f
-0 g
-296.52 658.597 m
-287.938 659.426 296.539 660.245 V
-305.355 663.669 307.403 666.332 V
-314.367 671.043 315.8 671.247 v
-317.234 671.452 331.194 675.139 331.399 676.367 c
-331.604 677.596 365.67 690.177 370.09 686.987 c
-373.001 684.886 363.1 686.563 353.466 682.153 c
-352.111 681.533 318.258 666.946 314.981 666.332 c
-311.704 665.717 305.765 661.826 303.307 661.212 c
-300.85 660.597 296.52 658.597 Y
-f
-288.6 656.399 m
-293.8 656.799 292.6 655.199 v
-291.4 653.599 289 654.399 y
-288.6 656.399 l
-f
-281.4 654.799 m
-286.6 655.199 285.4 653.599 v
-284.2 651.999 281.8 652.799 y
-281.4 654.799 l
-f
-271 653.199 m
-276.2 653.599 275 651.999 v
-273.8 650.399 271.4 651.199 y
-271 653.199 l
-f
-263.4 652.399 m
-268.6 652.799 267.4 651.199 v
-266.2 649.599 263.8 650.399 y
-263.4 652.399 l
-f
-301.8 691.999 m
-306.2 691.999 305 690.399 v
-303.8 688.799 300.6 689.199 y
-301.8 691.999 l
-f
-291.8 686.399 m
-298.306 688.54 295.8 685.199 v
-294.6 683.599 292.2 684.399 y
-291.8 686.399 l
-f
-280.6 681.599 m
-285.8 681.999 284.6 680.399 v
-283.4 678.799 281 679.599 y
-280.6 681.599 l
-f
-273 675.599 m
-278.2 675.999 277 674.399 v
-275.8 672.799 273.4 673.599 y
-273 675.599 l
-f
-266.2 670.799 m
-271.4 671.199 270.2 669.599 v
-269 667.999 266.6 668.799 y
-266.2 670.799 l
-f
-305.282 664.402 m
-312.203 664.934 310.606 662.805 v
-309.009 660.675 305.814 661.74 y
-305.282 664.402 l
-f
-315.682 669.202 m
-322.603 669.734 321.006 667.605 v
-319.409 665.475 316.214 666.54 y
-315.682 669.202 l
-f
-326.482 673.602 m
-333.403 674.134 331.806 672.005 v
-330.209 669.875 327.014 670.94 y
-326.482 673.602 l
-f
-336.882 678.402 m
-343.803 678.934 342.206 676.805 v
-340.609 674.675 337.414 675.74 y
-336.882 678.402 l
-f
-309.282 696.402 m
-316.203 696.934 314.606 694.805 v
-313.009 692.675 309.014 692.94 y
-309.282 696.402 l
-f
-319.282 699.602 m
-326.203 700.134 324.606 698.005 v
-323.009 695.875 318.614 696.14 y
-319.282 699.602 l
-f
-296.6 659.599 m
-301.8 659.999 300.6 658.399 v
-299.4 656.799 297 657.599 y
-296.6 659.599 l
-f
-0.1 0.55 0.85 0.3 k
-223.4 758.8 m
-219 750 218.6 746.8 V
-219.4 755.6 220.6 757.6 v
-221.8 759.6 223.4 758.8 y
-f
-205 744.8 m
-201.8 730.4 202.2 727.6 V
-201 739.2 201.4 740.4 v
-201.8 741.6 205 744.8 y
-f
-0.8 g
-225.8 819.4 m
-225.6 816.2 l
-223.4 816 l
-237.6 803.4 238.2 795.8 V
-239 804 225.8 819.4 V
-f
-0 g
-229.784 818.135 m
-229.353 818.551 229.572 819.296 229.164 819.556 c
-228.355 820.072 230.462 820.129 230.234 820.845 c
-229.851 822.051 230.038 822.072 229.916 823.348 c
-229.859 823.946 230.447 825.486 230.832 825.926 c
-232.278 827.578 230.954 830.51 232.594 832.061 c
-232.898 832.35 233.274 832.902 233.559 833.32 c
-234.218 834.283 235.402 834.771 236.352 835.599 c
-236.67 835.875 236.469 836.702 237.038 836.61 c
-237.752 836.495 238.993 836.625 238.948 835.784 c
-238.835 833.664 237.506 831.944 236.226 830.276 C
-236.677 829.572 236.219 828.937 235.935 828.38 c
-234.6 825.76 234.789 822.919 234.615 820.079 c
-234.61 819.994 234.303 819.916 234.311 819.863 c
-234.664 817.528 235.248 815.329 236.127 813.1 c
-236.493 812.17 236.964 811.275 237.114 810.348 c
-237.225 809.662 237.328 808.829 236.92 808.124 C
-238.955 805.234 237.646 802.583 238.815 799.052 c
-239.022 798.427 240.714 796.513 240.251 796.674 c
-237.738 797.545 237.626 797.943 237.449 798.696 c
-237.303 799.319 236.973 800.696 236.736 801.298 c
-236.672 801.462 236.501 803.346 236.423 803.468 c
-234.91 805.85 236.268 805.674 234.898 808.032 C
-233.47 808.712 232.504 809.816 231.381 810.978 c
-231.183 811.182 232.326 811.906 232.145 812.119 c
-231.053 813.408 229.9 814.175 230.236 815.668 c
-230.391 816.358 230.528 817.415 229.784 818.135 c
-f
-226.2 816.4 m
-226.6 809.6 229 808 v
-231.4 806.4 230.2 807.2 227 808.4 c
-223.8 809.6 225 810.4 y
-222.2 810 224.6 808 v
-227 806 230.6 803.6 229 803.6 c
-227.4 803.6 219.8 807.6 219.8 810.4 c
-219.8 813.2 218.8 817.3 y
-219.9 818.1 224.7 818 V
-226.1 817.3 226.2 816.4 V
-f
-1 g
-1 J 0.1 w
-225.4 797.8 m
-216.88 800.591 198.4 797.2 V
-207.431 799.278 226.2 797 v
-236.5 795.75 225.4 797.8 Y
-b
-227.498 797.871 m
-219.252 801.389 200.547 799.608 V
-209.725 800.897 228.226 797.005 v
-238.38 794.869 227.498 797.871 Y
-b
-229.286 797.778 m
-221.324 801.899 202.539 801.514 V
-211.787 802.118 229.948 796.86 v
-239.914 793.975 229.286 797.778 Y
-b
-230.556 797.555 m
-223.732 801.862 206.858 802.96 V
-215.197 802.79 231.078 796.681 v
-239.794 793.328 230.556 797.555 Y
-b
-345.84 787.039 m
-344.91 786.395 345.124 787.576 v
-345.339 788.757 373.547 801.927 377.161 801.677 C
-346.913 788.471 345.84 787.039 V
-b
-342.446 786.4 m
-341.57 785.685 341.691 786.879 v
-341.812 788.073 368.899 803.418 372.521 803.452 C
-343.404 787.911 342.446 786.4 V
-b
-339.16 785.025 m
-338.332 784.253 338.374 785.453 v
-338.416 786.652 358.233 802.149 368.045 804.023 C
-350.015 795.896 339.16 785.025 V
-b
-336.284 783.162 m
-335.539 782.468 335.577 783.547 v
-335.615 784.627 353.449 798.574 362.28 800.26 C
-346.054 792.946 336.284 783.162 V
-b
-0.8 g
-0 J 1 w
-304.6 635.199 m
-289.4 637.599 306.2 639.199 V
-324.2 641.199 328.2 646.399 V
-341.8 655.599 344.6 655.999 v
-347.4 656.399 363.8 659.999 364.2 662.399 c
-364.6 664.799 370.6 667.199 372.2 666.399 c
-373.8 665.599 373.8 656.399 371 655.599 c
-368.2 654.799 349.4 647.599 343 646.399 c
-336.6 645.199 325 637.599 320.2 636.399 c
-315.4 635.199 304.6 635.199 Y
-f
-0 g
-377.6 672.599 m
-374.6 670.999 373.4 668.399 V
-367 657.799 352.8 654.599 V
-329.8 645.599 322 643.599 V
-308.6 638.599 301.2 639.399 V
-294.2 639.199 300.4 637.599 V
-320.6 639.599 324 641.399 V
-339.6 646.599 342.6 649.199 v
-345.6 651.799 363.8 656.799 366 658.799 c
-368.2 660.799 378 669.199 377.6 672.599 C
-f
-318.882 641.089 m
-324.111 641.315 322.958 639.766 v
-321.805 638.216 319.357 639.09 y
-318.882 641.089 l
-f
-311.68 639.737 m
-316.908 639.963 315.756 638.414 v
-314.603 636.864 312.155 637.737 y
-311.68 639.737 l
-f
-301.251 638.489 m
-306.48 638.716 305.327 637.166 v
-304.174 635.617 301.726 636.49 y
-301.251 638.489 l
-f
-293.617 637.945 m
-298.846 638.171 297.693 636.622 v
-296.54 635.072 294.092 635.946 y
-293.617 637.945 l
-f
-335.415 648.487 m
-342.375 648.788 340.84 646.726 v
-339.306 644.664 336.047 645.826 y
-335.415 648.487 l
-f
-345.73 652.912 m
-351.689 656.213 351.155 651.151 v
-350.885 648.595 346.362 650.251 y
-345.73 652.912 l
-f
-354.862 655.726 m
-362.021 659.427 360.287 653.965 v
-359.509 651.515 355.493 653.065 y
-354.862 655.726 l
-f
-364.376 660.551 m
-368.735 665.452 369.801 658.79 v
-370.207 656.252 365.008 657.89 y
-364.376 660.551 l
-f
-326.834 644.003 m
-332.062 644.23 330.91 642.68 v
-329.757 641.131 327.308 642.004 y
-326.834 644.003 l
-f
-1 g
-1 J 0.1 w
-362.434 765.397 m
-361.708 764.732 361.707 765.803 v
-361.707 766.873 379.191 780.137 388.034 781.521 C
-371.935 774.792 362.434 765.397 V
-b
-0 g
-0 J 1 w
-365.4 701.6 m
-387.401 679.199 396.601 675.599 V
-405.801 664.399 401.801 638.399 V
-398.601 630.799 395.401 651.599 V
-398.601 676.799 387.401 660.799 V
-379 670.699 385.4 670.399 V
-388.601 668.399 389.001 669.999 v
-389.401 671.599 381.4 685.199 364.2 699.6 c
-347 714 365.4 701.6 Y
-f
-1 g
-1 J 0.1 w
-307 662.799 m
-306.8 664.599 308.6 663.799 v
-310.4 662.999 404.601 656.799 436.201 632.799 C
-391.001 655.999 307 662.799 V
-b
-317.4 667.199 m
-317.2 668.999 319 668.199 v
-320.8 667.399 457.401 668.399 481.001 635.999 C
-459.001 661.199 317.4 667.199 V
-b
-329 671.199 m
-328.8 672.999 330.6 672.199 v
-332.4 671.399 505.801 684.399 529.401 651.999 C
-519.801 677.599 329 671.199 V
-b
-339 675.999 m
-338.8 677.799 340.6 676.999 v
-342.4 676.199 464.601 714.8 488.201 682.399 C
-474.801 707 339 675.999 V
-b
-281 653.199 m
-280.8 654.999 282.6 654.199 v
-284.4 653.399 302.2 651.199 304.2 612.399 C
-297 654.399 281 653.199 V
-b
-272.2 651.599 m
-272 653.399 273.8 652.599 v
-275.6 651.799 289.8 656.399 287 617.599 C
-288.2 652.799 272.2 651.599 V
-b
-264.2 651.199 m
-264 652.999 265.8 652.199 v
-267.6 651.399 283 650.799 270.6 628.399 C
-280.2 652.399 264.2 651.199 V
-b
-311.526 695.535 m
-311.082 693.536 312.631 694.753 v
-328.699 707.378 361.141 766.28 416.826 771.914 C
-378.518 784.024 311.526 695.535 V
-b
-322.726 697.335 m
-321.363 698.528 323.231 699.153 v
-325.099 699.778 437.541 772.28 476.826 764.314 C
-449.719 771.824 322.726 697.335 V
-b
-301.885 691.233 m
-301.376 689.634 303.087 690.61 v
-312.062 695.73 315.677 752.941 359.254 754.196 C
-326.843 768.91 301.885 691.233 V
-b
-281.962 680.207 m
-280.885 678.921 282.838 679.175 v
-293.084 680.507 314.489 721.778 358.928 716.699 C
-326.962 731.045 281.962 680.207 V
-b
-293.2 686.333 m
-292.389 684.864 294.258 685.489 v
-304.057 688.763 317.141 733.375 361.729 736.922 C
-327.603 744.865 293.2 686.333 V
-b
-274.922 675.088 m
-274.049 674.046 275.631 674.252 v
-283.93 675.331 301.268 708.76 337.264 704.646 C
-311.371 716.266 274.922 675.088 V
-b
-267.323 669.179 m
-266.318 668.134 267.909 668.252 v
-272.077 668.561 302.715 701.64 321.183 686.138 C
-309.168 704.861 267.323 669.179 V
-b
-336.855 701.102 m
-335.654 702.457 337.586 702.842 v
-339.518 703.226 460.221 760.939 498.184 748.073 C
-472.243 758.947 336.855 701.102 V
-b
-303.4 636.799 m
-303.2 638.599 305 637.799 v
-306.8 636.999 322.2 636.399 309.8 613.999 C
-319.4 637.999 303.4 636.799 V
-b
-313.8 638.399 m
-313.6 640.199 315.4 639.399 v
-317.2 638.599 335 636.399 337 597.599 C
-329.8 639.599 313.8 638.399 V
-b
-320.6 639.999 m
-320.4 641.799 322.2 640.999 v
-324 640.199 348.6 636.799 372.2 604.399 C
-336.6 641.199 320.6 639.999 V
-b
-328.225 642.028 m
-327.788 643.786 329.678 643.232 v
-331.568 642.678 352.002 644.577 390.099 610.401 C
-343.924 645.344 328.225 642.028 V
-b
-338.625 646.428 m
-338.188 648.186 340.078 647.632 v
-341.968 647.078 376.802 642.577 428.499 607.601 C
-354.324 649.744 338.625 646.428 V
-b
-298.2 657.999 m
-298 659.799 299.8 658.999 v
-301.6 658.199 355 655.599 385.4 628.799 C
-350.499 653.574 298.2 657.999 V
-b
-288.2 653.999 m
-288 655.799 289.8 654.999 v
-291.6 654.199 316.2 650.799 339.8 618.399 C
-304.2 655.199 288.2 653.999 V
-b
-349.503 651.038 m
-348.938 652.759 350.864 652.345 v
-352.79 651.932 387.86 649.996 441.981 618.902 C
-364.317 653.296 349.503 651.038 V
-b
-357.903 653.438 m
-357.338 655.159 359.264 654.745 v
-361.19 654.332 396.26 652.396 450.381 621.302 C
-373.317 656.096 357.903 653.438 V
-b
-367.503 658.438 m
-366.938 660.159 368.864 659.745 v
-370.79 659.332 413.86 654.996 503.582 620.702 C
-382.917 661.096 367.503 658.438 V
-b
-0 g
-0 J 1 w
-256.2 651.599 m
-261.4 651.999 260.2 650.399 v
-259 648.799 256.6 649.599 y
-256.2 651.599 l
-f
-287 637.599 m
-292.2 637.999 291 636.399 v
-289.8 634.799 287.4 635.599 y
-287 637.599 l
-f
-278.2 637.999 m
-283.4 638.399 282.2 636.799 v
-281 635.199 278.6 635.999 y
-278.2 637.999 l
-f
-182.831 649.818 m
-187.876 648.495 186.218 647.376 v
-184.561 646.256 182.554 647.798 y
-182.831 649.818 l
-f
-184.831 659.418 m
-189.876 658.095 188.218 656.976 v
-186.561 655.856 184.554 657.398 y
-184.831 659.418 l
-f
-177.631 663.818 m
-182.676 662.495 181.018 661.376 v
-179.361 660.256 177.354 661.798 y
-177.631 663.818 l
-f
-0.8 g
-1 J 0.1 w
-257.4 588.799 m
-255.8 588.799 251.8 586.799 V
-249.8 586.799 238.6 583.199 233 573.199 C
-245.4 582.799 257.4 588.799 V
-f
-345.116 496.153 m
-345.257 495.895 345.312 495.475 345.604 495.458 c
-346.262 495.418 347.495 495.117 347.37 495.753 c
-346.522 500.059 345.648 504.996 341.515 506.803 c
-340.876 507.082 339.434 506.669 339.36 505.785 c
-339.233 504.261 339.116 502.912 339.425 501.446 c
-339.725 500.025 341.883 500.015 342.8 501.399 C
-343.736 499.727 344.168 497.884 345.116 496.153 c
-f
-334.038 491.419 m
-334.786 490.006 334.659 488.147 336.074 487.584 c
-336.814 487.29 338.664 488.265 338.246 489.339 c
-337.444 491.4 337.056 493.639 335.667 495.45 c
-335.467 495.712 335.707 496.245 335.547 496.573 c
-334.953 497.793 333.808 498.528 332.4 498.199 C
-331.285 495.996 332.433 493.867 333.955 492.158 c
-334.091 492.006 333.925 491.63 334.038 491.419 c
-f
-294.436 496.609 m
-294.328 496.986 294.29 497.449 294.455 497.77 c
-294.986 498.803 295.779 499.925 295.442 500.947 c
-295.094 502.003 293.978 501.821 293.328 501.252 c
-292.193 500.258 292.144 498.432 291.453 497.073 c
-291.257 496.687 291.308 496.114 290.867 495.723 c
-290.393 495.302 289.953 493.778 290.049 493.207 c
-290.102 492.894 289.919 482.986 290.141 483.249 c
-290.76 483.982 293.81 493.716 293.879 494.608 c
-293.936 495.339 294.668 495.804 294.436 496.609 c
-f
-268.798 503.401 m
-271.432 505.9 274.222 508.861 273.78 512.573 c
-273.664 513.549 271.889 513.022 271.702 512.176 c
-270.9 508.551 268.861 505.89 266.293 503.498 c
-264.097 501.451 262.235 495.107 262 494.599 C
-265.697 499.855 267.954 502.601 268.798 503.401 c
-f
-255.224 509.365 m
-255.747 509.735 255.445 510.226 255.662 510.558 c
-256.615 512.016 257.916 513.262 257.934 515 c
-257.937 515.277 257.559 515.586 257.224 515.362 c
-256.947 515.178 256.605 515.048 256.497 514.918 c
-254.467 512.469 253.067 509.798 251.624 506.986 c
-251.441 506.629 250.297 502.138 250.61 502.027 c
-250.849 501.942 252.569 506.123 252.779 506.237 c
-254.042 506.923 254.054 508.538 255.224 509.365 c
-f
-271.957 489.821 m
-272.401 490.69 273.977 491.892 273.864 492.781 c
-273.746 493.709 274.214 495.152 273.302 494.464 c
-272.045 493.516 268.596 492.167 268.326 486.359 c
-268.3 485.788 271.274 488.481 271.957 489.821 c
-f
-286.4 506.999 m
-286.8 507.667 287.508 507.194 287.967 507.457 c
-288.615 507.829 289.226 508.387 289.518 509.036 c
-290.488 511.185 292.257 513.005 292.4 515.399 C
-290.909 516.804 290.23 514.764 289.6 513.799 C
-288.277 515.446 287.278 513.572 285.978 513.053 c
-285.908 513.025 285.695 513.372 285.62 513.345 c
-284.443 512.905 283.763 511.824 282.765 511.043 c
-282.594 510.909 282.189 511.089 282.042 510.953 c
-281.39 510.35 280.417 510.025 280.137 509.343 c
-279.027 506.636 275.887 504.541 274 496.999 C
-274.381 496.09 278.512 503.641 278.999 504.339 c
-279.835 505.535 279.953 502.678 281.229 503.344 c
-281.28 503.371 281.466 503.133 281.6 502.999 C
-281.794 503.279 282.012 503.508 282.4 503.399 C
-282.4 503.799 282.266 504.355 282.467 504.514 c
-283.704 505.491 283.62 506.559 284.4 507.799 C
-284.858 507.01 285.919 507.729 286.4 506.999 C
-f
-346.2 452.599 m
-353.6 472.999 349.2 484.199 V
-360.6 462.599 356 451.399 V
-355.6 461.799 351.6 466.799 V
-347.6 453.999 346.2 452.599 V
-f
-331.4 455.199 m
-336.8 463.999 328.8 482.399 V
-328 461.999 321.2 450.999 V
-335.4 471.199 331.4 455.199 V
-f
-321.4 457.199 m
-321.2 477.199 321.6 480.199 V
-317.8 463.599 307.6 453.999 V
-322 465.999 321.4 457.199 V
-f
-311.8 489.199 m
-317.8 475.599 307.8 457.199 V
-314.2 469.399 309.4 476.399 V
-312 479.799 311.8 489.199 V
-f
-292.6 457.599 m
-291.6 473.199 293.4 475.399 V
-293.6 481.799 293.2 482.799 V
-297.2 488.999 297.4 481.599 V
-298.8 473.799 301.6 469.199 V
-305.2 463.799 305 457.399 V
-295 487.599 292.6 457.599 V
-f
-289 485.199 m
-282.4 474.399 280.6 455.399 V
-279.2 461.599 283 475.999 V
-287.2 491.399 289 485.199 V
-f
-267.2 465.399 m
-272.2 470.799 273.6 475.799 V
-277.2 491.599 270.8 482.999 V
-271 474.999 262.8 467.599 V
-267.6 469.999 267.2 465.399 V
-f
-261.4 470.399 m
-264.8 487.799 265.6 488.599 V
-267.4 491.999 264.6 488.799 V
-255.8 469.599 251.8 462.999 V
-259.8 472.199 261.4 470.399 V
-f
-255.6 486.999 m
-267.2 509.399 245.4 483.599 V
-256.4 493.399 255.6 486.999 V
-f
-240.2 501.599 m
-245 520.399 247.6 520.199 V
-255.8 529.199 249.2 518.599 V
-243.2 508.999 243.8 499.199 V
-243.2 508.799 240.2 501.599 V
-f
-570.5 513 m
-558.5 523 556 526.5 V
-569.5 508 569.5 501 V
-572 508.5 570.5 513 V
-f
-576 535 m
-555 550 551.5 557.5 V
-578 528 578 523.5 V
-578.5 532.5 576 535 V
-f
-593 689 m
-581 697 579.5 695 V
-590 688.5 592.5 680 V
-591 689 593 689 V
-f
-601.5 608.5 m
-584 620.5 l
-603 603.5 603.5 599.5 V
-601.5 608.5 L
-f
-0 g
-1 w
-210.75 631 m
-232.75 626.25 l
-S
-261 469 m
-260.5 472.5 251.5 462 v
-S
-266.5 464 m
-268.5 470.5 262 466 v
-S
-320.5 455.5 m
-322 466.5 310.5 453.5 v
-S
-
-showpage
-
-%%Trailer
-end
-tigersave restore
-%%EOF

+ 0 - 38
sys/src/cmd/gs/icclib/COPYRIGHT

@@ -1,38 +0,0 @@
-*************************************************************************
-Copyright (c) 1997-1999 Graeme W. Gill
-
-Permission is hereby granted, to use, copy, modify, distribute,
-and sell this software and its associated documentation files
-(the "Software") for any purpose without fee, provided
-that:
-
-	1) The above copyright notices and this permission notice
-	   accompany all source code copies of the Software and
-	   related documentation.
-and
-
-	2) If executable code based on the Software only is distributed,
-	   then the accompanying documentation must aknowledge that
-	   "this software is based in part on the work of Graeme W. Gill".
-and
-
-	3) It is accepted that Graeme W. Gill (the "Author") accepts
-	   NO LIABILITY for damages of any kind.  The Software is
-	   provided without fee by the Author "AS-IS" and without
-	   warranty of any kind, express, implied or otherwise,
-	   including without limitation, any warranty of merchantability
-	   or fitness for a particular purpose.
-and
-
-	4) These conditions apply to any software derived from or based
-	   on the Software, not just to the unmodified library.
-and
-
-	5) Except as contained in this notice, or in the required
-	   acknowledgment, the name of the Author, or the name of
-	   any organization or company affiliated with the Author
-	   may not be used in any advertising or publicity relating
-	   to the Software, without the specific, prior written
-	   permission of the Author.
-
-*************************************************************************

+ 0 - 157
sys/src/cmd/gs/icclib/README

@@ -1,157 +0,0 @@
-ICC profile I/O library (icclib), README file
----------------------------------------------
-
-Date 99/11/29, Version 1.23
-
-This distribution contains source code which implements the reading and
-writing of color profile files that conform to the International Color
-Consortium (ICC) Profile Format Specification, Version 3.4.
-
-For more information about the ICC, and for copies of the specification,
-please refer to http://www.color.org/.
-
-(Note that this software is written from the ICC V3.4 standard, but the
-software and its author are not affiliated with, or otherwise connected
-with the ICC.)
-
-The ICC profile I/O library archive is kept at
-http://web.access.net.au/argyll/color.html
-
-Motivation
-
-Color is still very much a black art to many programmers dealing with
-computer graphics. The ICC Profile Format is an industry attempt to provide
-an interchange format to help solve the problems of specifying color, and
-in transferring color graphics from, and between systems and devices.
-Although the ICC format has been around a number of years, and has long
-been adopted by companies in the business of providing systems for
-publishing and printing, and is now widely used as part of commercial
-operating system support for device independent color, its uptake in the
-general world of computer graphics has been slow.
-
-The writing of this library was prompted by my private and professional
-enthusiasm for computer graphics, and color. Inspired by other examples of
-freely usable software (notably the Independent JPEG Group's free JPEG
-software, and Sam Leffler's TIFF library), I have decided to make this
-library available under similar terms.  I hope that this library will
-provide a starting point for including ICC profile support more widely that
-is currently the case, particularly in open source code projects.
-
-Overview
-
-This package contains a C software implementation of the ICC Profile
-Format, Version 3.4. The ICC Profile Format attempts to provide a
-cross-platform device profile format, that can be used to translate color
-data created on one device into another device's native color space. For a
-fuller explanation of what the ICC Profile Format is all about, please
-refer to http://www.color.org, and the profile specification.
-
-In summary this library provides:
-
-   * Full source code, free for commercial and non-commercial use.
-   * Support for all version 3.4 header elements, Tags and Tag Types.
-   * Conversion to/from machine native representation of all data
-     types.
-   * Support for user defined Tags.
-   * Support for adding/deleting Tags.
-   * Support for Tag type sharing within a file (often used for
-     sharing LUTs amongst intents).
-   * Support for reading/writing embedded profiles.
-   * Provides a single function for transforming color values through
-     a profile, including support for intents, forward and reverse
-     transforms, gamut lookup or preview lookup.
-   * Provides support and code examples for creating all profile
-     types, monochrome, matrix and Lut.
-   * Attempts to be platform neutral.
-   * Loads Tag Types on demand to conserve memory space.
-
-Changes from V1.01
-
-Major changes since version 1.01 are the addition of the profile color
-lookup function, and Lut set_tables support function. The library has also
-benefited from many minor bug fixes and enhancements. Special thanks to
-Tsutomu Okuno and Yasuhiko Kiuchi for pointing out some subtle bugs in the
-code, which I hope now are fixed.
-
-Changes from V1.20
-
-A minor change was made to Lab encoding and default scaling of Lut style
-profiles, to bring it into line with recommended practice as described in
-Michael Bourgoin's 1998 SIGGRAPH course notes. Only icc.c and lutest.c have
-been altered.
-
-Changes from V1.21
-
-Some endian bugs in the Unicode read/write routines have been corrected, as
-well as improving the codes portability to some older SUN systems. The
-TextDescription dump() method now dumps Unicode and ScriptCode in Hex.
-Simplex (i.e. tetrahedral in 3D) interpolation is now used where
-appropriate for clut interpolation. The ICC.1:1998-09 include file is now
-being used, but the DeviceSettings and OutputResponse tags are still not
-supported.
-Added more hooks to support inherited implimentation of color conversion,
-used in Argyll to support reversing multi-dimentional table lookups.
-
-Changes from V1.22
-
-Fixed important bug in Lut read/write. The matrix values had their
-rows and columns switched. Not many profiles exercise this code.
-Thanks to David Gillman for discovering this.
-Fixup compiler complains about illegal enum values for icmCurveStyle,
-and icmDataStyle. Malloc memory icmLut_lookup_clut_nl for gw[], so that
-it is more friendly to systems with a limited stack. (Thanks to Dave White)
-
-Package contents:
-
- icclib.zipZIP archive of the following files
- README    This file.
- COPYRIGHT Important! - Permissions for use of this package.
- icc.c     Library source file.
-
- icc.h     Library include file. Note machine dependent defines. Includes
-           icc9809.h.
- icc9809.h Lightly modified standard ICC header file.
- iccdump.c Program that dumps ASCII description of a profile.
-
- icclu.c   Program that allows interactive or batch translation of color
-           values though a profile.
- icctest.c Basic library tag Read/Write example and regression test code.
-
- lutest.c  Color lookup regression test code, and example for creating
-           color profiles.
- iccrw.c   Source code skeleton for reading and then re-writing a profile.
- jamfile   JAM style "makefile" see http://www.perforce.com/jam/jam.html
- makefile  UNIX style makefile. Modify this to suite your system.
-
-
-Style
-
-For handling convenience, I have included all the library source code in
-two files. The down side is that they are both hard to read and navigate
-through. The code could do with some cleaning up and rearrangement, to make
-clear the distinction between public and private elements. (C++ would help
-here, but is less portable.) The code attempts to be ANSI C compliant,
-written in an object oriented style. Unfortunately, it has not been tested
-on a wide variety of platforms, nor with a very wide set of color profiles,
-so there my well be a number of bugs to discover. A tutorial on how to use
-the library would also be a good thing !
-
-The best way to learn how to use the library, is to take a look at
-icctest.c, lutest.c and iccrw.c. The first is used to test writing and
-reading to every type of element, with every possible variation of usage.
-You will need a copy of the ICC spec. handy to understand what it all
-means. The second source file specifically creates and then tests various
-types of profiles, including monochrome, matrix and Lut style profiles. The
-last is a source code skeleton, that reads a profile completely into
-memory, and then writes it out again to a different file.
-
-With the release of version 1.23 of icclib, the library is now as useful as
-it is likely to be, allowing convenient color conversion between PCS
-(profile connection spaces, either XYZ or Lab) and device specific color
-spaces. The library does not attempt to be a complete color management
-system however, lacking profile creation and linking functionality.
-
-I welcome feedback, positive or negative, so please mail me at
-GraemeGill@access.net.au
-
-Graeme Gill

BIN
sys/src/cmd/gs/jpeg/testimg.gif


+ 0 - 289
sys/src/cmd/gs/lib/pj-gs.sh

@@ -1,289 +0,0 @@
-#!/bin/sh
-# $Id: pj-gs.sh,v 1.1 2000/03/09 08:40:40 lpd Exp $
-
-# PaintJet driver script for Ghostscript,
-# created by Philippe-Andre Prindeville <philipp@res.enst.fr>
-
-# PCL level 1 interface
-#
-#=======================================================================#
-# OPTIONS RECOGNIZED: ( all may be preceded with a "-" )		#
-#	NOTE: Options marked with a "*" before their descriptions	#
-#	      are provided for backward compatibility with the		#
-#	      former hp2225a, hp2227a and hp3630a printer models -	#
-# 	      these models have become links to this model. Consult	#
-#	      your printer reference manual to determine which		#
-#	      options are valid for your particular printer.		#
-#									#
-# Horizontal Pitch Selection:						#
-#	c  		compressed print mode				#
-#	e  	      * expanded print pitch				#
-#	10 	      * 10 cpi (Pica print pitch)			#
-#			  (expanded compressed on thinkjet and quietjet)#
-#	12 	      * 12 cpi (Elite print pitch)			#
-#									#
-# Print Quality Selection						#
-#	q | lq 	      * near letter quality				#
-#									#
-# Font Selection							#
-#	b | bold      * set font stroke weight to bold			#
-#									#
-# Output filtering: (Default Cooked)					#
-#	r | raw		raw mode for plotting mode etc.			#
-#									#
-# Other:								#
-#       nb		do not output banner page (to save paper)	#
-#									#
-#		NOTE: * = NOT OFFICIAL PCL LEVEL 1 OPTIONS, USE OF	#
-#			  THESE OPTIONS MAY OR MAY NOT PRODUCE		#
-#			  DESIRED RESULTS.				#
-#=======================================================================# 
-
-PATH="/bin:/usr/bin:/usr/lib:/usr/local/bin"
-export PATH
-
-# set up redirection of stderr
-log=/usr/spool/lp/log
-exec 2>>$log
-
-# sec_class=`getconf SECURITY_CLASS`
-sec_class=
-if [ $? -ne 0 ]
-then
-        echo "getconf SECURITY_CLASS failed"
-fi
-
-# Save the arguments to the model
-printer=`basename $0`
-
-if [ "$sec_class" = "2" ]       # B1 Trusted System
-then
-	reqid=$1
-	user=$2
-	dev=$3
-	title=$4
-	copies=$5
-	options=$6
-else
-	reqid=$1
-	user=$2
-	title=$3
-	copies=$4
-	options=$5
-fi
-
-
-# Definitions of functions used within this script
-do_banner()
-{
-	# Print the standard header
-	x="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-	echo "$x\n$x\n$x\n$x\n"
-	banner `echo $user`
-	echo "\n"
-	user=`pwget -n $user | line | cut -d: -f5`
-	if [ -n "$user" ]
-	then
-		echo "User: $user\n"
-	else
-		echo "\n"
-	fi
-	echo "Request id: $reqid    Printer: `basename $0`\n"
-	date
-	echo "\n"
-	if [ -n "$title" ]
-	then
-		banner "$title" 
-	fi
-	echo "\014\r\c"
-}
-
-# Set up interface
-if [ -t 1 ]
-then
-	stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
-else
-	slp -n -k 2>/dev/null
-fi
-
-# Handle disable and cancel traps.
-trap "echo 'Terminated: $reqid'  >> $log; trap 15; kill -15 0; exit 0 " 15
-
-# Set up printer default modes
-echo "\033&k0S\c"		# reset pitches
-echo "\033(s0B\033)s0B\c"	# reset stroke weights
-echo "\033&d@\c"		# disable auto-underline
-echo "\033&l6D\c"		# reset to 6 lpi
-echo "\033(s0Q\c"		# reset print quality
-echo "\033&v0S\c"		# reset color
-echo "\033&k2G\c"		# Set line termination mode
-
-
-# Determine which options have been invoked
-pitch="def"
-weight="def"
-quality="def"
-# outputmode="cooked"
-outputmode="raw"
-# banner="yes"
-banner=
-
-for i in $options
-do
-	case "$i" in
-	-c | c)   # compressed print
-		pitch="c";;
-
-	-e | e)   # expanded print
-		pitch="e";;
-
-	-10 | 10) # pitch set to 10 cpi
-		pitch="10";;
-
-	-12 | 12) # pitch set to 12 cpi
-		pitch="12";;
-
-	-q | q | -lq | lq) # near letter quality
-		quality=1;;
-
-	-b | b | -bold | bold) # set font weight to bold
-		weight=1;;
-
-	r | raw) # raw mode for binary output to printer
-		outputmode="raw";;
-
-	-nb | nb) # do not output banner page
-		banner="";;
-
-	esac
-done
-
-shift; shift; shift; shift; shift
-
-if [ "$sec_class" = "2" ]       # B1 Trusted System
-then
-	shift
-	files="$*"
-	Nofilter= Nolabel=
-	set -- `getopt fl $options`
-	if [ $? != 0 ]
-	then
-		exit 2
-	fi
-
-	for opt in $*
-	do
-	    shift
-	    case $opt in
-	      -f) Nofilter=$opt ;;
-	      -l) Nolabel=$opt ;;
-	      --) break ;;
-	    esac
-	done
-
-	# Print the sensitivity label of the process
-	echo "$x\n$x\n"
-	/usr/lib/lpbanner -j $reqid -t "$title" -u $user -p PCL1 -n $printer -d $dev $files
-	echo "\n$x\n$x"
-
-else
-	# Assume that the rest of the arguments are files
-	files="$*"
-	# print the banner if nb option not specified
-	if [ -n "$banner" ]
-	then
-		do_banner
-	fi
-fi
-
-# Print the spooled files
-i=1
-while [ $i -le $copies ]
-do
-		for file in $files
-		do
-
-			# If raw mode, turn off output processing,
-			# set for no tab expansion
-			# If cooked mode, uncomment the cooked case if it is 
-			# desired not to print on the page perforations
-			case "$outputmode" in
-				raw)	if [ -t 1 ]
-					then
-						stty raw 9600 -opost -parenb cs8 ixon -istrip clocal tab0 <&1 2>/dev/null
-					else
-						slp -r 2>/dev/null
-					fi
-					echo "\033&k0G";;		# Reset line termination mode
-			#	cooked)	echo "\033&l1L\r\c";;
-			esac
-
-			case "$pitch" in
-				def);;
-				c)	echo "\033&k2S\r\c";;
-				e)	echo "\033&k1S\r\c";;
-				10)	echo "\033&k3S\r\c";;
-				12)	echo "\033&k0S\r\c"
-					echo "\033&k4S\r\c";;
-			esac
-
-			case "$quality" in
-				def);;
-				*)	echo "\033(s${quality}Q\r\c";;
-			esac
-
-			case "$weight" in
-				def)	echo "\033(s0B\033)s0B\r\c";;
-				*)	echo "\033(s${weight}B\r\c";;
-			esac
-
-			if [ "$sec_class" = "2" ]	# B1 Trusted System
-			then
-				/usr/lib/lprcat $Nofilter $Nolabel $file PCL1 $user $dev
-			else
-				type=`file $file | sed 's/^[^:]*..//'`
-				case "$type" in
-				postscript*)
-#
-# We could do the following, but this would leave gs with a rather large
-# image in memory for (possibly) several minutes.  Better to use and
-# intermediate file, since cat is "lightweight"...
-#
-#					gs -q -sDEVICE=paintjet -r180 -sOutputFile=- -dDISKFONTS -dNOPAUSE - < $file 2>/tmp/sh$$
-
-					gs -q -sDEVICE=paintjet -r180 -sOutputFile=/tmp/pj$$ -dDISKFONTS -dNOPAUSE - < $file 1>2
-					cat /tmp/pj$$
-					rm /tmp/pj$$
-					needff=
-					;;
-				*)	cat "$file" 2>/tmp/sh$$
-					needff=1
-					;;
-				esac
-
-				if [ -s /tmp/sh$$ ]
-				then
-#				    cat /tmp/sh$$	# output any errors
-				    cat /tmp/sh$$ 1>2	# output any errors
-				fi
-				rm -f /tmp/sh$$
-				if [ $needff ]; then echo "\014\r\c"; fi
-			fi
-
-			echo "\033&k0S\r\c"		# reset pitches
-			echo "\033(s0B\033)s0B\r\c"	# reset stroke weights
-			echo "\033&d@\r\c"		# disable auto-underline
-			echo "\033&l6D\r\c"		# reset to 6 lpi
-			echo "\033(s0Q\c"		# reset print quality
-			echo "\033&v0S\c"		# reset color
-		done
-		i=`expr $i + 1`
-	done
-
-# Insure all buffers are flushed to printer
-if [ -t 1 ]
-then
-	stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
-fi
-
-exit 0

+ 0 - 46
sys/src/cmd/gs/lib/ps2pdfxx.bat

@@ -1,46 +0,0 @@
-#!/bin/sh
-# $Id: sysvlp.sh,v 1.1 2000/03/09 08:40:40 lpd Exp $
-
-# System V 3.2 lp interface for parallel, postscript printer
-# with ghostscript 2.5.n.
-#
-# Thanks to Arne Ludwig (arne@rrzbu.hanse.de) for this script.
-#
-
-DEVICE=lbp8
-GSHOME=/local/gs/2.5b2
-FONT=/local
-LIBDIR=/usr/spool/lp/admins/lp/interfaces
-#EHANDLER=$LIBDIR/ehandler.ps
-
-GS_LIB=$GSHOME:$FONT/fonts:$FONT/fonts/lw:$FONT/fonts/gs
-export GS_LIB
-
-copies=$4
-shift 5
-files="$*"
-
-# serial line settings
-# stty 19200 ixon ixoff 0<&1
-# stty 1200 tabs cread opost onlcr ixon ixany ff1 cr2 nl0 0<&1
-
-# Brother HL-4: switch to HP laserjet II+ emulation
-# echo "\033\015H\c"
-
-i=1
-while [ $i -le $copies ]
-do
-	for file in $files
-	do
-		$GSHOME/gs \
-			-sOUTPUTFILE=/tmp/psp$$.%02d \
-			-sDEVICE=$DEVICE \
-			$EHANDLER $file \
-			< /dev/null >> /usr/tmp/ps_log 2>&1
-
-		cat /tmp/psp$$.* 2>> /usr/tmp/ps_log
-		rm -f /tmp/psp$$.*
-	done
-	i=`expr $i + 1`
-done
-exit 0

+ 0 - 488
sys/src/cmd/gs/libpng/ansi2knr.c

@@ -1,488 +0,0 @@
-/* Copyright (C) 1989, 1991, 1993 Aladdin Enterprises. All rights reserved. */
-
-/* ansi2knr.c */
-/* Convert ANSI function declarations to K&R syntax */
-
-/*
-ansi2knr is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY.  No author or distributor accepts responsibility
-to anyone for the consequences of using it or for whether it serves any
-particular purpose or works at all, unless he says so in writing.  Refer
-to the GNU General Public License for full details.
-
-Everyone is granted permission to copy, modify and redistribute
-ansi2knr, but only under the conditions described in the GNU
-General Public License.  A copy of this license is supposed to have been
-given to you along with ansi2knr so you can know your rights and
-responsibilities.  It should be in a file named COPYING.  Among other
-things, the copyright notice and this notice must be preserved on all
-copies.
-*/
-
-/*
----------- Here is the GNU GPL file COPYING, referred to above ----------
------ These terms do NOT apply to the JPEG software itself; see README ------
-
-		    GHOSTSCRIPT GENERAL PUBLIC LICENSE
-		    (Clarified 11 Feb 1988)
-
- Copyright (C) 1988 Richard M. Stallman
- Everyone is permitted to copy and distribute verbatim copies of this
- license, but changing it is not allowed.  You can also use this wording
- to make the terms for other programs.
-
-  The license agreements of most software companies keep you at the
-mercy of those companies.  By contrast, our general public license is
-intended to give everyone the right to share Ghostscript.  To make sure
-that you get the rights we want you to have, we need to make
-restrictions that forbid anyone to deny you these rights or to ask you
-to surrender the rights.  Hence this license agreement.
-
-  Specifically, we want to make sure that you have the right to give
-away copies of Ghostscript, that you receive source code or else can get
-it if you want it, that you can change Ghostscript or use pieces of it
-in new free programs, and that you know you can do these things.
-
-  To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of Ghostscript, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must tell them their rights.
-
-  Also, for our own protection, we must make certain that everyone finds
-out that there is no warranty for Ghostscript.  If Ghostscript is
-modified by someone else and passed on, we want its recipients to know
-that what they have is not what we distributed, so that any problems
-introduced by others will not reflect on our reputation.
-
-  Therefore we (Richard M. Stallman and the Free Software Foundation,
-Inc.) make the following terms which say what you must do to be allowed
-to distribute or change Ghostscript.
-
-
-			COPYING POLICIES
-
-  1. You may copy and distribute verbatim copies of Ghostscript source
-code as you receive it, in any medium, provided that you conspicuously
-and appropriately publish on each copy a valid copyright and license
-notice "Copyright (C) 1989 Aladdin Enterprises.  All rights reserved.
-Distributed by Free Software Foundation, Inc." (or with whatever year is
-appropriate); keep intact the notices on all files that refer to this
-License Agreement and to the absence of any warranty; and give any other
-recipients of the Ghostscript program a copy of this License Agreement
-along with the program.  You may charge a distribution fee for the
-physical act of transferring a copy.
-
-  2. You may modify your copy or copies of Ghostscript or any portion of
-it, and copy and distribute such modifications under the terms of
-Paragraph 1 above, provided that you also do the following:
-
-    a) cause the modified files to carry prominent notices stating
-    that you changed the files and the date of any change; and
-
-    b) cause the whole of any work that you distribute or publish,
-    that in whole or in part contains or is a derivative of Ghostscript
-    or any part thereof, to be licensed at no charge to all third
-    parties on terms identical to those contained in this License
-    Agreement (except that you may choose to grant more extensive
-    warranty protection to some or all third parties, at your option).
-
-    c) You may charge a distribution fee for the physical act of
-    transferring a copy, and you may at your option offer warranty
-    protection in exchange for a fee.
-
-Mere aggregation of another unrelated program with this program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other program under the scope of these terms.
-
-  3. You may copy and distribute Ghostscript (or a portion or derivative
-of it, under Paragraph 2) in object code or executable form under the
-terms of Paragraphs 1 and 2 above provided that you also do one of the
-following:
-
-    a) accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of
-    Paragraphs 1 and 2 above; or,
-
-    b) accompany it with a written offer, valid for at least three
-    years, to give any third party free (except for a nominal
-    shipping charge) a complete machine-readable copy of the
-    corresponding source code, to be distributed under the terms of
-    Paragraphs 1 and 2 above; or,
-
-    c) accompany it with the information you received as to where the
-    corresponding source code may be obtained.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form alone.)
-
-For an executable file, complete source code means all the source code for
-all modules it contains; but, as a special exception, it need not include
-source code for modules which are standard libraries that accompany the
-operating system on which the executable file runs.
-
-  4. You may not copy, sublicense, distribute or transfer Ghostscript
-except as expressly provided under this License Agreement.  Any attempt
-otherwise to copy, sublicense, distribute or transfer Ghostscript is
-void and your rights to use the program under this License agreement
-shall be automatically terminated.  However, parties who have received
-computer software programs from you with this License Agreement will not
-have their licenses terminated so long as such parties remain in full
-compliance.
-
-  5. If you wish to incorporate parts of Ghostscript into other free
-programs whose distribution conditions are different, write to the Free
-Software Foundation at 675 Mass Ave, Cambridge, MA 02139.  We have not
-yet worked out a simple rule that can be stated here, but we will often
-permit this.  We will be guided by the two goals of preserving the free
-status of all derivatives of our free software and of promoting the
-sharing and reuse of software.
-
-Your comments and suggestions about our licensing policies and our
-software are welcome!  Please contact the Free Software Foundation,
-Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296.
-
-		       NO WARRANTY
-
-  BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
-NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
-WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD
-M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES
-PROVIDE GHOSTSCRIPT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE
-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF GHOSTSCRIPT IS WITH
-YOU.  SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
-STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN
-ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE
-GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
-ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
-INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU
-HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM
-BY ANY OTHER PARTY.
-
--------------------- End of file COPYING ------------------------------
-*/
-
-
-#include <stdio.h>
-#include <ctype.h>
-
-#ifdef BSD
-#include <strings.h>
-#else
-#ifdef VMS
-	extern int strlen(), strncmp();
-#else
-#include <string.h>
-#endif
-#endif
-
-/* malloc and free should be declared in stdlib.h, */
-/* but if you've got a K&R compiler, they probably aren't. */
-#ifdef MSDOS
-#include <malloc.h>
-#else
-#ifdef VMS
-     extern char *malloc();
-     extern void free();
-#else
-     extern char *malloc();
-     extern int free();
-#endif
-#endif
-
-/* Usage:
-	ansi2knr input_file [output_file]
- * If no output_file is supplied, output goes to stdout.
- * There are no error messages.
- *
- * ansi2knr recognizes functions by seeing a non-keyword identifier
- * at the left margin, followed by a left parenthesis,
- * with a right parenthesis as the last character on the line.
- * It will recognize a multi-line header provided that the last character
- * of the last line of the header is a right parenthesis,
- * and no intervening line ends with a left brace or a semicolon.
- * These algorithms ignore whitespace and comments, except that
- * the function name must be the first thing on the line.
- * The following constructs will confuse it:
- *	- Any other construct that starts at the left margin and
- *	    follows the above syntax (such as a macro or function call).
- *	- Macros that tinker with the syntax of the function header.
- */
-
-/* Scanning macros */
-#define isidchar(ch) (isalnum(ch) || (ch) == '_')
-#define isidfirstchar(ch) (isalpha(ch) || (ch) == '_')
-
-/* Forward references */
-char *skipspace();
-int writeblanks();
-int test1();
-int convert1();
-
-/* The main program */
-main(argc, argv)
-    int argc;
-    char *argv[];
-{	FILE *in, *out;
-#define bufsize 5000			/* arbitrary size */
-	char *buf;
-	char *line;
-	switch ( argc )
-	   {
-	default:
-		printf("Usage: ansi2knr input_file [output_file]\n");
-		exit(0);
-	case 2:
-		out = stdout; break;
-	case 3:
-		out = fopen(argv[2], "w");
-		if ( out == NULL )
-		   {	fprintf(stderr, "Cannot open %s\n", argv[2]);
-			exit(1);
-		   }
-	   }
-	in = fopen(argv[1], "r");
-	if ( in == NULL )
-	   {	fprintf(stderr, "Cannot open %s\n", argv[1]);
-		exit(1);
-	   }
-	fprintf(out, "#line 1 \"%s\"\n", argv[1]);
-	buf = malloc(bufsize);
-	line = buf;
-	while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
-	   {	switch ( test1(buf) )
-		   {
-		case 1:			/* a function */
-			convert1(buf, out);
-			break;
-		case -1:		/* maybe the start of a function */
-			line = buf + strlen(buf);
-			if ( line != buf + (bufsize - 1) ) /* overflow check */
-				continue;
-			/* falls through */
-		default:		/* not a function */
-			fputs(buf, out);
-			break;
-		   }
-		line = buf;
-	   }
-	if ( line != buf ) fputs(buf, out);
-	free(buf);
-	fclose(out);
-	fclose(in);
-	return 0;
-}
-
-/* Skip over space and comments, in either direction. */
-char *
-skipspace(p, dir)
-    register char *p;
-    register int dir;			/* 1 for forward, -1 for backward */
-{	for ( ; ; )
-	   {	while ( isspace(*p) ) p += dir;
-		if ( !(*p == '/' && p[dir] == '*') ) break;
-		p += dir;  p += dir;
-		while ( !(*p == '*' && p[dir] == '/') )
-		   {	if ( *p == 0 ) return p;	/* multi-line comment?? */
-			p += dir;
-		   }
-		p += dir;  p += dir;
-	   }
-	return p;
-}
-
-/*
- * Write blanks over part of a string.
- */
-int
-writeblanks(start, end)
-    char *start;
-    char *end;
-{	char *p;
-	for ( p = start; p < end; p++ ) *p = ' ';
-	return 0;
-}
-
-/*
- * Test whether the string in buf is a function definition.
- * The string may contain and/or end with a newline.
- * Return as follows:
- *	0 - definitely not a function definition;
- *	1 - definitely a function definition;
- *	-1 - may be the beginning of a function definition,
- *		append another line and look again.
- */
-int
-test1(buf)
-    char *buf;
-{	register char *p = buf;
-	char *bend;
-	char *endfn;
-	int contin;
-	if ( !isidfirstchar(*p) )
-		return 0;		/* no name at left margin */
-	bend = skipspace(buf + strlen(buf) - 1, -1);
-	switch ( *bend )
-	   {
-	case ')': contin = 1; break;
-	case '{':
-	case ';': return 0;		/* not a function */
-	default: contin = -1;
-	   }
-	while ( isidchar(*p) ) p++;
-	endfn = p;
-	p = skipspace(p, 1);
-	if ( *p++ != '(' )
-		return 0;		/* not a function */
-	p = skipspace(p, 1);
-	if ( *p == ')' )
-		return 0;		/* no parameters */
-	/* Check that the apparent function name isn't a keyword. */
-	/* We only need to check for keywords that could be followed */
-	/* by a left parenthesis (which, unfortunately, is most of them). */
-	   {	static char *words[] =
-		   {	"asm", "auto", "case", "char", "const", "double",
-			"extern", "float", "for", "if", "int", "long",
-			"register", "return", "short", "signed", "sizeof",
-			"static", "switch", "typedef", "unsigned",
-			"void", "volatile", "while", 0
-		   };
-		char **key = words;
-		char *kp;
-		int len = endfn - buf;
-		while ( (kp = *key) != 0 )
-		   {	if ( strlen(kp) == len && !strncmp(kp, buf, len) )
-				return 0;	/* name is a keyword */
-			key++;
-		   }
-	   }
-	return contin;
-}
-
-int
-convert1(buf, out)
-    char *buf;
-    FILE *out;
-{	char *endfn;
-	register char *p;
-	char **breaks;
-	unsigned num_breaks = 2;	/* for testing */
-	char **btop;
-	char **bp;
-	char **ap;
-	/* Pre-ANSI implementations don't agree on whether strchr */
-	/* is called strchr or index, so we open-code it here. */
-	for ( endfn = buf; *(endfn++) != '('; ) ;
-top:	p = endfn;
-	breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
-	if ( breaks == 0 )
-	   {	/* Couldn't allocate break table, give up */
-		fprintf(stderr, "Unable to allocate break table!\n");
-		fputs(buf, out);
-		return -1;
-	   }
-	btop = breaks + num_breaks * 2 - 2;
-	bp = breaks;
-	/* Parse the argument list */
-	do
-	   {	int level = 0;
-		char *end = NULL;
-		if ( bp >= btop )
-		   {	/* Filled up break table. */
-			/* Allocate a bigger one and start over. */
-			free((char *)breaks);
-			num_breaks <<= 1;
-			goto top;
-		   }
-		*bp++ = p;
-		/* Find the end of the argument */
-		for ( ; end == NULL; p++ )
-		   {	switch(*p)
-			   {
-			case ',': if ( !level ) end = p; break;
-			case '(': level++; break;
-			case ')': if ( --level < 0 ) end = p; break;
-			case '/': p = skipspace(p, 1) - 1; break;
-			default: ;
-			   }
-		   }
-		p--;			/* back up over terminator */
-		/* Find the name being declared. */
-		/* This is complicated because of procedure and */
-		/* array modifiers. */
-		for ( ; ; )
-		   {	p = skipspace(p - 1, -1);
-			switch ( *p )
-			   {
-			case ']':	/* skip array dimension(s) */
-			case ')':	/* skip procedure args OR name */
-			   {	int level = 1;
-				while ( level )
-				 switch ( *--p )
-				   {
-				case ']': case ')': level++; break;
-				case '[': case '(': level--; break;
-				case '/': p = skipspace(p, -1) + 1; break;
-				default: ;
-				   }
-			   }
-				if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
-				   {	/* We found the name being declared */
-					while ( !isidfirstchar(*p) )
-						p = skipspace(p, 1) + 1;
-					goto found;
-				   }
-				break;
-			default: goto found;
-			   }
-		   }
-found:		if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
-		   {	p++;
-			if ( bp == breaks + 1 )	/* sole argument */
-				writeblanks(breaks[0], p);
-			else
-				writeblanks(bp[-1] - 1, p);
-			bp--;
-		   }
-		else
-		   {	while ( isidchar(*p) ) p--;
-			*bp++ = p+1;
-		   }
-		p = end;
-	   }
-	while ( *p++ == ',' );
-	*bp = p;
-	/* Make a special check for 'void' arglist */
-	if ( bp == breaks+2 )
-	   {	p = skipspace(breaks[0], 1);
-		if ( !strncmp(p, "void", 4) )
-		   {	p = skipspace(p+4, 1);
-			if ( p == breaks[2] - 1 )
-			   {	bp = breaks;	/* yup, pretend arglist is empty */
-				writeblanks(breaks[0], p + 1);
-			   }
-		   }
-	   }
-	/* Put out the function name */
-	p = buf;
-	while ( p != endfn ) putc(*p, out), p++;
-	/* Put out the declaration */
-	for ( ap = breaks+1; ap < bp; ap += 2 )
-	   {	p = *ap;
-		while ( isidchar(*p) ) putc(*p, out), p++;
-		if ( ap < bp - 1 ) fputs(", ", out);
-	   }
-	fputs(")  ", out);
-	/* Put out the argument declarations */
-	for ( ap = breaks+2; ap <= bp; ap += 2 ) (*ap)[-1] = ';';
-	fputs(breaks[0], out);
-	free((char *)breaks);
-	return 0;
-}

+ 0 - 2
sys/src/cmd/gs/libpng/build.bat

@@ -1,2 +0,0 @@
-make -fmakefile.bor -B -DMODEL=m %1 %2 %3 libpng >buildm.out
-make -fmakefile.bor -B -DMODEL=l %1 %2 %3 libpng >buildl.out

+ 0 - 52
sys/src/cmd/gs/libpng/descrip.mms

@@ -1,52 +0,0 @@
-
-cc_defs = /inc=$(ZLIBSRC)
-c_deb = 
-
-.ifdef __DECC__
-pref = /prefix=all
-.endif
-
-
-
-OBJS = png.obj, pngset.obj, pngget.obj, pngrutil.obj, pngtrans.obj,\
-	pngwutil.obj, pngread.obj, pngmem.obj, pngwrite.obj, pngrtran.obj,\
-	pngwtran.obj, pngrio.obj, pngwio.obj, pngerror.obj, pngpread.obj
-
-
-CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF)
-
-all : pngtest.exe libpng.olb
-		@ write sys$output " pngtest available"
-
-libpng.olb : libpng.olb($(OBJS))
-	@ write sys$output " Libpng available"
-
-
-pngtest.exe : pngtest.obj libpng.olb
-              link pngtest,libpng.olb/lib,$(ZLIBSRC)libz.olb/lib
-
-test : pngtest.exe
-   run pngtest
-
-clean :
-	delete *.obj;*,*.exe;*
-
-
-# Other dependencies.
-png.obj : png.h, pngconf.h
-pngpread.obj : png.h, pngconf.h
-pngset.obj : png.h, pngconf.h
-pngget.obj : png.h, pngconf.h
-pngread.obj : png.h, pngconf.h
-pngrtran.obj : png.h, pngconf.h
-pngrutil.obj : png.h, pngconf.h
-pngerror.obj : png.h, pngconf.h
-pngmem.obj : png.h, pngconf.h
-pngrio.obj : png.h, pngconf.h
-pngwio.obj : png.h, pngconf.h
-pngtest.obj : png.h, pngconf.h
-pngtrans.obj : png.h, pngconf.h
-pngwrite.obj : png.h, pngconf.h
-pngwtran.obj : png.h, pngconf.h
-pngwutil.obj : png.h, pngconf.h
-

+ 0 - 69
sys/src/cmd/gs/libpng/makefile

@@ -1,69 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-CC=cc
-
-CFLAGS=-I$(ZLIBINC) -O -fullwarn # -g -DPNG_DEBUG=1
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-RANLIB=echo
-#RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 221
sys/src/cmd/gs/libpng/makefile.aco

@@ -1,221 +0,0 @@
-# Project:   libpng
-
-
-# Toolflags:
-CCflags = -c -depend !Depend -IC:,Zlib: -g -throwback  -DRISCOS  -fnah 
-C++flags = -c -depend !Depend -IC: -throwback
-Linkflags = -aif -c++ -o $@
-ObjAsmflags = -throwback -NoCache -depend !Depend
-CMHGflags = 
-LibFileflags = -c -l -o $@ 
-Squeezeflags = -o $@
-
-
-# Final targets:
-@.libpng-lib:   @.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \
-        @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \
-        @.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil 
-        LibFile $(LibFileflags) @.o.png @.o.pngerror @.o.pngrio @.o.pngrtran \
-        @.o.pngmem @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngwio \
-        @.o.pngrutil @.o.pngtrans  @.o.pngwrite @.o.pngwtran @.o.pngwutil 
-@.mm-libpng-lib:   @.mm.png @.mm.pngerror @.mm.pngrio @.mm.pngwio @.mm.pngmem \
-        @.mm.pngpread @.mm.pngset @.mm.pngget @.mm.pngread @.mm.pngrtran \
-        @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite @.mm.pngwtran @.mm.pngwutil 
-        LibFile $(LibFileflags) @.mm.png @.mm.pngerror @.mm.pngrio \
-        @.mm.pngwio @.mm.pngmem @.mm.pngpread @.mm.pngset @.mm.pngget \
-        @.mm.pngread @.mm.pngrtran @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite \
-        @.mm.pngwtran @.mm.pngwutil 
-
-
-# User-editable dependencies:
-# (C) Copyright 1997 Tom Tanner
-Test: @.pngtest 
-        <Prefix$Dir>.pngtest
-        @remove <Prefix$Dir>.pngtest
-
-#It would be nice if you could stop "make" listing from here on!
-@.pngtest:   @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib 
-        Link $(Linkflags) @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib 
-
-.SUFFIXES: .o .mm .c
-
-.c.mm:
-        MemCheck.CC cc $(ccflags) -o $@ LibPng:$<
-.c.o:
-        cc $(ccflags) -o $@ $<
-
-
-# Static dependencies:
-
-
-# Dynamic dependencies:
-o.pngtest:	c.pngtest
-o.pngtest:	h.png
-o.pngtest:	Zlib:h.zlib
-o.pngtest:	Zlib:h.zconf
-o.pngtest:	h.pngconf
-mm.png:		LibPng:c.png
-mm.png:		LibPng:h.png
-mm.png:		Zlib:h.zlib
-mm.png:		Zlib:h.zconf
-mm.png:		LibPng:h.pngconf
-mm.png:		MemCheck:ANSI.h.stdio
-mm.pngerror:	LibPng:c.pngerror
-mm.pngerror:	LibPng:h.png
-mm.pngerror:	Zlib:h.zlib
-mm.pngerror:	Zlib:h.zconf
-mm.pngerror:	LibPng:h.pngconf
-mm.pngerror:	MemCheck:ANSI.h.stdio
-mm.pngrio:	LibPng:c.pngrio
-mm.pngrio:	LibPng:h.png
-mm.pngrio:	Zlib:h.zlib
-mm.pngrio:	Zlib:h.zconf
-mm.pngrio:	LibPng:h.pngconf
-mm.pngrio:	MemCheck:ANSI.h.stdio
-mm.pngwio:	LibPng:c.pngwio
-mm.pngwio:	LibPng:h.png
-mm.pngwio:	Zlib:h.zlib
-mm.pngwio:	Zlib:h.zconf
-mm.pngwio:	LibPng:h.pngconf
-mm.pngwio:	MemCheck:ANSI.h.stdio
-mm.pngmem:	LibPng:c.pngmem
-mm.pngmem:	LibPng:h.png
-mm.pngmem:	Zlib:h.zlib
-mm.pngmem:	Zlib:h.zconf
-mm.pngmem:	LibPng:h.pngconf
-mm.pngmem:	MemCheck:ANSI.h.stdio
-mm.pngpread:	LibPng:c.pngpread
-mm.pngpread:	LibPng:h.png
-mm.pngpread:	Zlib:h.zlib
-mm.pngpread:	Zlib:h.zconf
-mm.pngpread:	LibPng:h.pngconf
-mm.pngpread:	MemCheck:ANSI.h.stdio
-mm.pngset:	LibPng:c.pngset
-mm.pngset:	LibPng:h.png
-mm.pngset:	Zlib:h.zlib
-mm.pngset:	Zlib:h.zconf
-mm.pngset:	LibPng:h.pngconf
-mm.pngset:	MemCheck:ANSI.h.stdio
-mm.pngget:	LibPng:c.pngget
-mm.pngget:	LibPng:h.png
-mm.pngget:	Zlib:h.zlib
-mm.pngget:	Zlib:h.zconf
-mm.pngget:	LibPng:h.pngconf
-mm.pngget:	MemCheck:ANSI.h.stdio
-mm.pngread:	LibPng:c.pngread
-mm.pngread:	LibPng:h.png
-mm.pngread:	Zlib:h.zlib
-mm.pngread:	Zlib:h.zconf
-mm.pngread:	LibPng:h.pngconf
-mm.pngread:	MemCheck:ANSI.h.stdio
-mm.pngrtran:	LibPng:c.pngrtran
-mm.pngrtran:	LibPng:h.png
-mm.pngrtran:	Zlib:h.zlib
-mm.pngrtran:	Zlib:h.zconf
-mm.pngrtran:	LibPng:h.pngconf
-mm.pngrtran:	MemCheck:ANSI.h.stdio
-mm.pngrutil:	LibPng:c.pngrutil
-mm.pngrutil:	LibPng:h.png
-mm.pngrutil:	Zlib:h.zlib
-mm.pngrutil:	Zlib:h.zconf
-mm.pngrutil:	LibPng:h.pngconf
-mm.pngrutil:	MemCheck:ANSI.h.stdio
-mm.pngtrans:	LibPng:c.pngtrans
-mm.pngtrans:	LibPng:h.png
-mm.pngtrans:	Zlib:h.zlib
-mm.pngtrans:	Zlib:h.zconf
-mm.pngtrans:	LibPng:h.pngconf
-mm.pngtrans:	MemCheck:ANSI.h.stdio
-mm.pngwrite:	LibPng:c.pngwrite
-mm.pngwrite:	LibPng:h.png
-mm.pngwrite:	Zlib:h.zlib
-mm.pngwrite:	Zlib:h.zconf
-mm.pngwrite:	LibPng:h.pngconf
-mm.pngwrite:	MemCheck:ANSI.h.stdio
-mm.pngwtran:	LibPng:c.pngwtran
-mm.pngwtran:	LibPng:h.png
-mm.pngwtran:	Zlib:h.zlib
-mm.pngwtran:	Zlib:h.zconf
-mm.pngwtran:	LibPng:h.pngconf
-mm.pngwtran:	MemCheck:ANSI.h.stdio
-mm.pngwutil:	LibPng:c.pngwutil
-mm.pngwutil:	LibPng:h.png
-mm.pngwutil:	Zlib:h.zlib
-mm.pngwutil:	Zlib:h.zconf
-mm.pngwutil:	LibPng:h.pngconf
-mm.pngwutil:	MemCheck:ANSI.h.stdio
-o.png:		c.png
-o.png:		h.png
-o.png:		Zlib:h.zlib
-o.png:		Zlib:h.zconf
-o.png:		h.pngconf
-o.pngerror:	c.pngerror
-o.pngerror:	h.png
-o.pngerror:	Zlib:h.zlib
-o.pngerror:	Zlib:h.zconf
-o.pngerror:	h.pngconf
-o.pngrio:	c.pngrio
-o.pngrio:	h.png
-o.pngrio:	Zlib:h.zlib
-o.pngrio:	Zlib:h.zconf
-o.pngrio:	h.pngconf
-o.pngwio:	c.pngwio
-o.pngwio:	h.png
-o.pngwio:	Zlib:h.zlib
-o.pngwio:	Zlib:h.zconf
-o.pngwio:	h.pngconf
-o.pngmem:	c.pngmem
-o.pngmem:	h.png
-o.pngmem:	Zlib:h.zlib
-o.pngmem:	Zlib:h.zconf
-o.pngmem:	h.pngconf
-o.pngpread:	c.pngpread
-o.pngpread:	h.png
-o.pngpread:	Zlib:h.zlib
-o.pngpread:	Zlib:h.zconf
-o.pngpread:	h.pngconf
-o.pngset:	c.pngset
-o.pngset:	h.png
-o.pngset:	Zlib:h.zlib
-o.pngset:	Zlib:h.zconf
-o.pngset:	h.pngconf
-o.pngget:	c.pngget
-o.pngget:	h.png
-o.pngget:	Zlib:h.zlib
-o.pngget:	Zlib:h.zconf
-o.pngget:	h.pngconf
-o.pngread:	c.pngread
-o.pngread:	h.png
-o.pngread:	Zlib:h.zlib
-o.pngread:	Zlib:h.zconf
-o.pngread:	h.pngconf
-o.pngrtran:	c.pngrtran
-o.pngrtran:	h.png
-o.pngrtran:	Zlib:h.zlib
-o.pngrtran:	Zlib:h.zconf
-o.pngrtran:	h.pngconf
-o.pngrutil:	c.pngrutil
-o.pngrutil:	h.png
-o.pngrutil:	Zlib:h.zlib
-o.pngrutil:	Zlib:h.zconf
-o.pngrutil:	h.pngconf
-o.pngtrans:	c.pngtrans
-o.pngtrans:	h.png
-o.pngtrans:	Zlib:h.zlib
-o.pngtrans:	Zlib:h.zconf
-o.pngtrans:	h.pngconf
-o.pngwrite:	c.pngwrite
-o.pngwrite:	h.png
-o.pngwrite:	Zlib:h.zlib
-o.pngwrite:	Zlib:h.zconf
-o.pngwrite:	h.pngconf
-o.pngwtran:	c.pngwtran
-o.pngwtran:	h.png
-o.pngwtran:	Zlib:h.zlib
-o.pngwtran:	Zlib:h.zconf
-o.pngwtran:	h.pngconf
-o.pngwutil:	c.pngwutil
-o.pngwutil:	h.png
-o.pngwutil:	Zlib:h.zlib
-o.pngwutil:	Zlib:h.zconf
-o.pngwutil:	h.pngconf

+ 0 - 42
sys/src/cmd/gs/libpng/makefile.ama

@@ -1,42 +0,0 @@
-# Commodore Amiga Makefile
-# makefile for libpng and SAS C V6.55 compiler
-# Copyright (C) 1995 Wolf Faust
-
-#compiler
-CC=sc
-#compiler flags
-# WARNING: a bug in V6.51 causes bad code with OPTGO
-#          So use V6.55 or set NOOPTGO!!!!!!!!!
-CFLAGS= NOSTKCHK PARMS=REG OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL\
-        OPTLOOP OPTRDEP=4 OPTDEP=4 OPTCOMP=4 DEFINE=PNG_INTERNAL
-#linker flags
-LDFLAGS= SD ND BATCH
-#link libs
-LDLIBS= libpng.lib libgz.lib LIB:scm.lib LIB:sc.lib Lib:amiga.lib
-# linker
-LN= slink
-# file deletion command
-RM= delete quiet
-# library (.lib) file creation command
-AR= oml
-# make directory command
-MKDIR= makedir
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngpread.o \
-pngread.o pngerror.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o
-
-all: libpng.lib pngtest
-
-libpng.lib: $(OBJS)
--$(RM) libpng.lib
-$(AR) libpng.lib r $(OBJS)
-
-pngtest: pngtest.o libpng.lib
-$(LN) <WITH <
-$(LDFLAGS)
-TO pngtest
-FROM LIB:c.o pngtest.o
-LIB $(LDLIBS)
-<
-
-

+ 0 - 31
sys/src/cmd/gs/libpng/makefile.atr

@@ -1,31 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-# modified for LC56/ATARI assumes libz.lib is in same dir and uses default
-# rules for library management
-#
-CFLAGS=-I..\zlib -O
-LBR = png.lib
-LDFLAGS=-lpng -lz -lm
-
-# where make install puts libpng.a and png.h
-
-OBJS = $(LBR)(png.o) $(LBR)(pngset.o) $(LBR)(pngget.o) $(LBR)(pngrutil.o)\
-	$(LBR)(pngtrans.o) $(LBR)(pngwutil.o)\
-	$(LBR)(pngread.o) $(LBR)(pngerror.o) $(LBR)(pngwrite.o)\
-	$(LBR)(pngrtran.o) $(LBR)(pngwtran.o)\
-	$(LBR)(pngmem.o) $(LBR)(pngrio.o) $(LBR)(pngwio.o) $(LBR)(pngpread.o)
-
-all: $(LBR) pngtest.ttp
-
-$(LBR): $(OBJS)
-
-pngtest.ttp: pngtest.o $(LBR)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o$@ pngtest.o
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/p

+ 0 - 168
sys/src/cmd/gs/libpng/makefile.bor

@@ -1,168 +0,0 @@
-# Makefile for libpng
-# Borland C++ 4.5 (Note: All modules are compiled in C mode)
-# Will work with C++ 4.02 also
-# To build the library, do: 
-#       "make -fmakefile.bor -DMODEL=m"
-# or:   "make -fmakefile.bor -DMODEL=l"
-#
-# ------------- Borland C++ 4.5 -------------
-
-### Absolutely necessary for this makefile to work
-.AUTODEPEND
-
-## Useful user options
-
-# Usually defined in builtins.mak or the environment
-# Currently unused.
-!ifndef BCROOT
-BCROOT=N:\BC45
-!endif
-
-# Where zlib.h and zconf.h and zlib.lib are
-ZLIB_PATH=..\zlib
-
-!ifndef MODEL
-MODEL=l
-!endif
-
-#TARGET_CPU=3
-# 2 = 286, 3 = 386, etc.
-!ifndef TARGET_CPU
-TARGET_CPU=2
-!endif
-
-
-# Use this if you don't want Borland's fancy exception handling.
-NOEHLIB=noeh$(MODEL).lib
-
-!ifdef DEBUG
-CDEBUG=-v
-LDEBUG=-v
-!else
-CDEBUG=
-LDEBUG=
-!endif
-
-# STACKOFLOW=1
-!ifdef STACKOFLOW
-CDEBUG=$(CDEBUG) -N
-LDEBUG=$(LDEBUG) -N
-!endif
-
-
-## Compiler, linker, and lib stuff
-CC=bcc
-LD=bcc
-LIB=tlib
-
-MODELARG=-m$(MODEL)
-
-# -X- turns on dependency generation in the object file
-# -w  sets all warnings on
-# -O2 optimize for speed
-# -Z  global optimization
-CFLAGS=-O2 -Z -X- -w -I$(ZLIB_PATH) -$(TARGET_CPU) $(MODELARG) $(CDEBUG)
-
-# -M  generate map file
-LDFLAGS=-M $(LDEBUG)
-
-O=obj
-
-## variables
-OBJS = \
- png.$(O) \
- pngerror.$(O) \
- pngmem.$(O) \
- pngpread.$(O) \
- pngset.$(O) \
- pngget.$(O) \
- pngread.$(O) \
- pngrio.$(O) \
- pngrtran.$(O) \
- pngrutil.$(O) \
- pngtrans.$(O) \
- pngwrite.$(O) \
- pngwtran.$(O) \
- pngwio.$(O) \
- pngwutil.$(O)
-
-LIBOBJS = \
- +png.$(O) \
- +pngerror.$(O) \
- +pngmem.$(O) \
- +pngpread.$(O) \
- +pngread.$(O) \
- +pngset.$(O) \
- +pngget.$(O) \
- +pngrio.$(O) \
- +pngrtran.$(O) \
- +pngrutil.$(O) \
- +pngtrans.$(O) \
- +pngwrite.$(O) \
- +pngwtran.$(O) \
- +pngwio.$(O)
- +pngwutil.$(O)
-
-LIBNAME=libpng$(MODEL).lib
-
-
-## Implicit rules
-# Braces let make "batch" calls to the compiler,
-# 2 calls instead of 12; space is important.
-.c.obj:
-	$(CC) $(CFLAGS) -c {$*.c }
-
-.c.exe:
-	$(CC) $(CFLAGS) $(LDFLAGS) $*.c
-
-
-## Major targets
-libpng: $(LIBNAME)
-
-pngtest: pngtest$(MODEL).exe
-
-test:
-	pngtest$(MODEL)
-
-
-## Minor Targets
-
-png.obj: png.c
-pngset.obj: pngset.c
-pngget.obj: pngget.c
-pngread.obj: pngread.c
-pngpread.obj: pngpread.c
-pngrtran.obj: pngrtran.c
-pngrutil.obj: pngrutil.c
-pngerror.obj: pngerror.c
-pngmem.obj: pngmem.c
-pngrio.obj: pngrio.c
-pngwio.obj: pngwio.c
-pngtrans.obj: pngtrans.c
-pngwrite.obj: pngwrite.c
-pngwtran.obj: pngwtran.c
-pngwutil.obj: pngwutil.c
-
-
-$(LIBNAME): $(OBJS)
-	-del $(LIBNAME)
-        $(LIB) $(LIBNAME) @&&|
-$(LIBOBJS), libpng$(MODEL)
-|
-
-
-pngtest$(MODEL).obj: pngtest.c
-	$(CC) $(CFLAGS) -opngtest$(MODEL) -c pngtest.c
-
-pngtest$(MODEL).exe: pngtest$(MODEL).obj
-	$(CC) $(MODELARG) $(LDFLAGS) -L$(ZLIB_PATH) pngtest$(MODEL).obj $(LIBNAME) zlib$(MODEL).lib $(NOEHLIB)
-
-
-# Clean up anything else you want
-clean:
-	-del *.obj
-	-del *.lib
-	-del *.lst
-
-
-# End of makefile for libpng

+ 0 - 68
sys/src/cmd/gs/libpng/makefile.dec

@@ -1,68 +0,0 @@
-# makefile for libpng on DEC Alpha Unix
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-CC=cc
-CFLAGS=-std -w1 -I$(ZLIBINC) -O # -g -DPNG_DEBUG=1
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-#RANLIB=echo
-RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 52
sys/src/cmd/gs/libpng/makefile.dj2

@@ -1,52 +0,0 @@
-# DJGPP (DOS gcc) makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-CC=gcc
-CFLAGS=-I../zlib -O
-LDFLAGS=-L. -L../zlib/ -lpng -lz -lm
-
-RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-#prefix=/usr/local
-prefix=.
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o pngwtran.o \
-	pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-	coff2exe pngtest
-
-test: pngtest
-	./pngtest
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-

+ 0 - 73
sys/src/cmd/gs/libpng/makefile.knr

@@ -1,73 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-CC=cc
-CFLAGS=-I../zlib -O
-LDFLAGS=-L. -L../zlib/ -lpng -lz -lm
-# flags for ansi2knr
-ANSI2KNRFLAGS=
-
-RANLIB=ranlib
-#RANLIB=echo
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: ansi2knr libpng.a pngtest
-
-# general rule to allow ansi2knr to work
-.c.o:
-	./ansi2knr $*.c T$*.c
-	$(CC) $(CFLAGS) -c T$*.c
-	rm -f T$*.c $*.o
-	mv T$*.o $*.o
-
-ansi2knr: ansi2knr.c
-	$(CC) $(CFLAGS) $(ANSI2KNRFLAGS) -o ansi2knr ansi2knr.c
-
-libpng.a: ansi2knr $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a ansi2knr
-	cc -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png ansi2knr
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h

+ 0 - 97
sys/src/cmd/gs/libpng/makefile.lnx

@@ -1,97 +0,0 @@
-# makefile for libpng on Linux ELF with gcc
-# Copyright (C) 1996, 1997 Andreas Dilger
-# Copyright (C) 1998 Greg Roelofs
-# For conditions of distribution and use, see copyright notice in png.h
-
-CC=gcc
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
-         -Wmissing-declarations -Wtraditional -Wcast-align \
-         -Wstrict-prototypes -Wmissing-prototypes #-Wconversion
-CFLAGS=-I$(ZLIBINC) -Wall -O3 -funroll-loops -malign-loops=2 \
-       -malign-functions=2 #$(WARNMORE) -g -DPNG_DEBUG=5
-LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng -lz -lm
-
-RANLIB=ranlib
-#RANLIB=echo
-
-PNGMAJ = 2
-PNGMIN = 0.99
-PNGVER = $(PNGMAJ).$(PNGMIN)
-
-# where make install puts libpng.a, libpng.so*, and png.h
-prefix=/usr/local
-INCPATH=$(prefix)/include
-LIBPATH=$(prefix)/lib
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-       pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-       pngwtran.o pngmem.o pngerror.o pngpread.o
-
-OBJSDLL = $(OBJS:.o=.pic.o)
-
-.SUFFIXES:      .c .o .pic.o
-
-.c.pic.o:
-	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
-
-all: libpng.a libpng.so pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@ $(OBJS)
-	$(RANLIB) $@
-
-libpng.so: libpng.so.$(PNGMAJ)
-	ln -sf libpng.so.$(PNGMAJ) libpng.so
-
-libpng.so.$(PNGMAJ): libpng.so.$(PNGVER)
-	ln -sf libpng.so.$(PNGVER) libpng.so.$(PNGMAJ)
-
-libpng.so.$(PNGVER): $(OBJSDLL)
-	gcc -shared -Wl,-soname,libpng.so.$(PNGMAJ) -o libpng.so.$(PNGVER) \
-	 $(OBJSDLL)
-
-pngtest: pngtest.o libpng.so
-	$(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a libpng.so.$(PNGVER)
-	-@mkdir $(INCPATH) $(LIBPATH)
-	cp png.h pngconf.h $(INCPATH)
-	chmod 644 $(INCPATH)/png.h $(INCPATH)/pngconf.h
-	cp libpng.a libpng.so.$(PNGVER) $(LIBPATH)
-	chmod 755 $(LIBPATH)/libpng.so.$(PNGVER)
-	-@/bin/rm -f $(LIBPATH)/libpng.so.$(PNGMAJ) $(LIBPATH)/libpng.so
-	(cd $(LIBPATH); ln -sf libpng.so.$(PNGVER) libpng.so.$(PNGMAJ); \
-	 ln -sf libpng.so.$(PNGMAJ) libpng.so)
-
-clean:
-	/bin/rm -f *.o libpng.a libpng.so* pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o png.pic.o: png.h pngconf.h
-pngerror.o pngerror.pic.o: png.h pngconf.h
-pngrio.o pngrio.pic.o: png.h pngconf.h
-pngwio.o pngwio.pic.o: png.h pngconf.h
-pngmem.o pngmem.pic.o: png.h pngconf.h
-pngset.o pngset.pic.o: png.h pngconf.h
-pngget.o pngget.pic.o: png.h pngconf.h
-pngread.o pngread.pic.o: png.h pngconf.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h
-pngpread.o pngpread.pic.o: png.h pngconf.h
-
-pngtest.o: png.h pngconf.h

+ 0 - 80
sys/src/cmd/gs/libpng/makefile.min

@@ -1,80 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-CC=cc
-
-# CFLAGS=-I$(ZLIBINC) -O -fullwarn \
-#    -DPNG_NO_EASY_ACCESS
-
-CFLAGS=-I$(ZLIBINC) -O -fullwarn  \
-    -DPNG_READ_NOT_FULLY_SUPPORTED -DPNG_WRITE_NOT_FULLY_SUPPORTED
-
-#CFLAGS=-I$(ZLIBINC) -O -fullwarn -DPNGTEST_MEMORY_DEBUG \
-#    -DPNG_READ_NOT_FULLY_SUPPORTED -DPNG_WRITE_NOT_FULLY_SUPPORTED \
-#    -DPNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED \
-#    -DPNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED \
-#    -DPNG_NO_STDIO
-
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-RANLIB=echo
-#RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 62
sys/src/cmd/gs/libpng/makefile.mip

@@ -1,62 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-CC=cc
-CFLAGS=-I../zlib -O -systype sysv -DSYSV -w -Dmips
-#CFLAGS=-O
-LDFLAGS=-L. -L../zlib/ -lpng -lz -lm
-
-#RANLIB=ranlib
-RANLIB=echo
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	cc -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h

+ 0 - 86
sys/src/cmd/gs/libpng/makefile.msc

@@ -1,86 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
-
-# ------------- Microsoft C 5.1 and later -------------
-MODEL=-AL
-CFLAGS=-Oait -Gs -nologo -W2 $(MODEL) -I..\zlib
-#-Ox generates bad code with MSC 5.1
-CC=cl
-LD=link
-LDFLAGS=/e/st:0x1500/noe 
-O=.obj
-
-#uncomment next to put error messages in a file
-ERRFILE= >> pngerrs
-
-# variables
-OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O)
-OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O)
-OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
-
-all: libpng.lib
-
-png$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngset$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngget$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngread$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngpread$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngrtran$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngrutil$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngerror$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngmem$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngrio$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngwio$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngtest$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngtrans$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngwrite$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngwtran$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-pngwutil$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3)
-        del libpng.lib
-	lib libpng $(OBJS1);
-	lib libpng $(OBJS2);
-	lib libpng $(OBJS3);
-
-pngtest.exe: pngtest.obj libpng.lib 
-	$(LD) $(LDFLAGS) pngtest.obj,,,libpng.lib ..\zlib\zlib.lib ;
-
-test: pngtest.exe
-	pngtest
-
-# End of makefile for libpng
-

+ 0 - 69
sys/src/cmd/gs/libpng/makefile.sgi

@@ -1,69 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-CC=cc
-
-CFLAGS=-I$(ZLIBINC) -O -fullwarn # -g -DPNG_DEBUG=1
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-RANLIB=echo
-#RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 68
sys/src/cmd/gs/libpng/makefile.std

@@ -1,68 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-CC=cc
-CFLAGS=-I$(ZLIBINC) -O # -g -DPNG_DEBUG=1
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-#RANLIB=echo
-RANLIB=ranlib
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 72
sys/src/cmd/gs/libpng/makefile.sun

@@ -1,72 +0,0 @@
-# makefile for libpng
-# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc.
-# For conditions of distribution and use, see copyright notice in png.h
-
-# Where the zlib library and include files are located
-#ZLIBLIB=/usr/local/lib
-#ZLIBINC=/usr/local/include
-ZLIBLIB=../zlib
-ZLIBINC=../zlib
-
-
-WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow -Wconversion \
-         -Wmissing-declarations -Wtraditional -Wcast-align \
-         -Wstrict-prototypes -Wmissing-prototypes
-CC=gcc
-CFLAGS=-I$(ZLIBINC) -O $(WARNMORE) -DPNG_DEBUG=4
-LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
-
-RANLIB=ranlib
-#RANLIB=echo
-
-# where make install puts libpng.a and png.h
-prefix=/usr/local
-
-OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
-	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
-	pngwtran.o pngmem.o pngerror.o pngpread.o
-
-all: libpng.a pngtest
-
-libpng.a: $(OBJS)
-	ar rc $@  $(OBJS)
-	$(RANLIB) $@
-
-pngtest: pngtest.o libpng.a
-	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
-
-test: pngtest
-	./pngtest
-
-install: libpng.a
-	-@mkdir $(prefix)/include
-	-@mkdir $(prefix)/lib
-	cp png.h $(prefix)/include
-	cp pngconf.h $(prefix)/include
-	chmod 644 $(prefix)/include/png.h
-	chmod 644 $(prefix)/include/pngconf.h
-	cp libpng.a $(prefix)/lib
-	chmod 644 $(prefix)/lib/libpng.a
-
-clean:
-	rm -f *.o libpng.a pngtest pngout.png
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-png.o: png.h pngconf.h
-pngerror.o: png.h pngconf.h
-pngrio.o: png.h pngconf.h
-pngwio.o: png.h pngconf.h
-pngmem.o: png.h pngconf.h
-pngset.o: png.h pngconf.h
-pngget.o: png.h pngconf.h
-pngread.o: png.h pngconf.h
-pngrtran.o: png.h pngconf.h
-pngrutil.o: png.h pngconf.h
-pngtest.o: png.h pngconf.h
-pngtrans.o: png.h pngconf.h
-pngwrite.o: png.h pngconf.h
-pngwtran.o: png.h pngconf.h
-pngwutil.o: png.h pngconf.h
-pngpread.o: png.h pngconf.h
-

+ 0 - 78
sys/src/cmd/gs/libpng/makefile.tc3

@@ -1,78 +0,0 @@
-# Makefile for libpng
-# TurboC++ 3.0 (Note: All modules are compiled in C mode)
-
-# To use, do "make -fmakefile.tc3"
-
-# ------------- Turbo C++ 3.0 -------------
-MODEL=-ml
-CFLAGS=-O2 -Z $(MODEL) -I..\zlib
-CC=tcc
-LD=tcc
-LIB=tlib
-LDFLAGS=$(MODEL)
-O=.obj
-
-# variables
-OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O)
-OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O)
-OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
-OBJSL1 = +png$(O) +pngset$(O) +pngget$(O) +pngrutil$(O) +pngtrans$(O)
-OBJSL2 = +pngwutil$(O) +pngmem$(O) +pngpread$(O) +pngread$(O) +pngerror$(O)
-OBJSL3 = +pngwrite$(O) +pngrtran$(O) +pngwtran$(O) +pngrio$(O) +pngwio$(O)
-
-all: libpng.lib
-
-png$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngset$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngget$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngread$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngpread$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngrtran$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngrutil$(O): png.h pngconf.h
-		  $(CC) -c $(CFLAGS) $*.c
-
-pngerror$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngmem$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngrio$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngwio$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngtest$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngtrans$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngwrite$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngwtran$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-pngwutil$(O): png.h pngconf.h
-        $(CC) -c $(CFLAGS) $*.c
-
-libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3)
-        $(LIB) libpng +$(OBJSL1)
-        $(LIB) libpng +$(OBJSL2)
-        $(LIB) libpng +$(OBJSL3)
-
-# End of makefile for libpng

+ 0 - 125
sys/src/cmd/gs/libpng/makevms.com

@@ -1,125 +0,0 @@
-$! make libpng under VMS
-$!
-$!
-$! Look for the compiler used
-$!
-$ zlibsrc = "[-.zlib]"
-$ ccopt="/include=''zlibsrc'"
-$ if f$getsyi("HW_MODEL").ge.1024
-$ then
-$  ccopt = "/prefix=all"+ccopt
-$  comp  = "__decc__=1"
-$  if f$trnlnm("SYS").eqs."" then define sys sys$library:
-$ else
-$  if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
-$   then
-$    if f$trnlnm("SYS").eqs."" then define sys sys$library:
-$    if f$search("SYS$SYSTEM:VAXC.EXE").eqs.""
-$     then
-$      comp  = "__gcc__=1"
-$      CC :== GCC
-$     else
-$      comp = "__vaxc__=1"
-$     endif
-$   else
-$    if f$trnlnm("SYS").eqs."" then define sys decc$library_include:
-$    ccopt = "/decc/prefix=all"+ccopt
-$    comp  = "__decc__=1"
-$  endif
-$ endif
-$!
-$! Build the thing plain or with mms
-$!
-$ write sys$output "Compiling Libpng sources ..."
-$ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
-$  then
-$   dele pngtest.obj;*
-$   CALL MAKE png.OBJ "cc ''CCOPT' png" -
-                png.c png.h pngconf.h   
-$   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
-					 pngpread.c png.h pngconf.h
-$   CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" -
-                pngset.c png.h pngconf.h
-$   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" -
-                pngget.c png.h pngconf.h
-$   CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" -
-                pngread.c png.h pngconf.h
-$   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
-					 pngpread.c png.h pngconf.h
-$   CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" -
-                pngrtran.c png.h pngconf.h
-$   CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" -
-                pngrutil.c png.h pngconf.h
-$   CALL MAKE pngerror.OBJ "cc ''CCOPT' pngerror" -
-                pngerror.c png.h pngconf.h
-$   CALL MAKE pngmem.OBJ "cc ''CCOPT' pngmem" -
-                pngmem.c png.h pngconf.h
-$   CALL MAKE pngrio.OBJ "cc ''CCOPT' pngrio" -
-                pngrio.c png.h pngconf.h
-$   CALL MAKE pngwio.OBJ "cc ''CCOPT' pngwio" -
-                pngwio.c png.h pngconf.h
-$   CALL MAKE pngtrans.OBJ "cc ''CCOPT' pngtrans" -
-                pngtrans.c png.h pngconf.h
-$   CALL MAKE pngwrite.OBJ "cc ''CCOPT' pngwrite" -
-                pngwrite.c png.h pngconf.h
-$   CALL MAKE pngwtran.OBJ "cc ''CCOPT' pngwtran" -
-                pngwtran.c png.h pngconf.h
-$   CALL MAKE pngwutil.OBJ "cc ''CCOPT' pngwutil" -
-                pngwutil.c png.h pngconf.h
-$   write sys$output "Building Libpng ..."
-$   CALL MAKE libpng.OLB "lib/crea libpng.olb *.obj" *.OBJ
-$   write sys$output "Building pngtest..."
-$   CALL MAKE pngtest.OBJ "cc ''CCOPT' pngtest" -
-                pngtest.c png.h pngconf.h
-$   call make pngtest.exe - 
-                "LINK pngtest,libpng.olb/lib,''zlibsrc'libgz.olb/lib" - 
-                pngtest.obj libpng.olb
-$   write sys$output "Testing Libpng..."
-$   run pngtest
-$  else
-$   mms/macro=('comp',zlibsrc='zlibsrc')
-$  endif
-$ write sys$output "Libpng build completed"
-$ exit
-$!
-$!
-$MAKE: SUBROUTINE   !SUBROUTINE TO CHECK DEPENDENCIES
-$ V = 'F$Verify(0)
-$! P1 = What we are trying to make
-$! P2 = Command to make it
-$! P3 - P8  What it depends on
-$
-$ If F$Search(P1) .Eqs. "" Then Goto Makeit
-$ Time = F$CvTime(F$File(P1,"RDT"))
-$arg=3
-$Loop:
-$       Argument = P'arg
-$       If Argument .Eqs. "" Then Goto Exit
-$       El=0
-$Loop2:
-$       File = F$Element(El," ",Argument)
-$       If File .Eqs. " " Then Goto Endl
-$       AFile = ""
-$Loop3:
-$       OFile = AFile
-$       AFile = F$Search(File)
-$       If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
-$       If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
-$       Goto Loop3
-$NextEL:
-$       El = El + 1
-$       Goto Loop2
-$EndL:
-$ arg=arg+1
-$ If arg .Le. 8 Then Goto Loop
-$ Goto Exit
-$
-$Makeit:
-$ VV=F$VERIFY(0)
-$ write sys$output P2
-$ 'P2
-$ VV='F$Verify(VV)
-$Exit:
-$ If V Then Set Verify
-$ENDSUBROUTINE
-

+ 74 - 0
sys/src/cmd/gs/libpng/png.5

@@ -0,0 +1,74 @@
+.TH PNG 5 "December 3, 2004"
+.SH NAME
+png \- Portable Network Graphics (PNG) format
+.SH DESCRIPTION
+PNG (Portable Network Graphics) is an extensible file format for the
+lossless, portable, well-compressed storage of raster images. PNG provides
+a patent-free replacement for GIF and can also replace many
+common uses of TIFF. Indexed-color, grayscale, and truecolor images are
+supported, plus an optional alpha channel. Sample depths range from
+1 to 16 bits.
+.br
+
+PNG is designed to work well in online viewing applications, such as the
+World Wide Web, so it is fully streamable with a progressive display
+option. PNG is robust, providing both full file integrity checking and
+fast, simple detection of common transmission errors. Also, PNG can store
+gamma and chromaticity data for improved color matching on heterogeneous
+platforms.
+
+.SH "SEE ALSO"
+.IR libpng(3), zlib(3), deflate(5), and zlib(5)
+.LP
+PNG specification (second edition), November 2003:
+.IP
+.br
+  <http://www.w3.org/TR/2003/REC-PNG-20031110/
+PNG 1.2 specification, July 1999:
+.IP
+.br
+http://www.libpng.org/pub/png
+.LP
+PNG 1.0 specification, October 1996:
+.IP
+.br
+RFC 2083
+.IP
+.br
+ftp://ds.internic.net/rfc/rfc2083.txt
+.br
+or (as a W3C Recommendation) at
+.br
+http://www.w3.org/TR/REC-png.html
+.SH AUTHORS
+This man page: Glenn Randers-Pehrson
+.LP
+Portable Network Graphics (PNG) Specification (Second Edition)
+Information technology - Computer graphics and image processing -
+Portable Network Graphics (PNG): Functional specification.
+ISO/IEC 15948:2003 (E) (November 10, 2003): David Duce and others.
+.LP
+Portable Network Graphics (PNG) Specification Version 1.2 (July 8, 1999):
+Glenn Randers-Pehrson and others (png-list).
+.LP
+Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996):
+Thomas Boutell and others (png-list).
+.LP
+
+
+.SH COPYRIGHT NOTICE
+.LP
+This man page is Copyright (c) 1998-2004 Glenn Randers-Pehrson.  See png.h
+for conditions of use and distribution.
+.LP
+The PNG Specification (Second Edition) is
+Copyright (c) 2003 W3C. (MIT, ERCIM, Keio), All Rights Reserved.
+.LP
+The PNG-1.2 specification is copyright (c) 1999 Glenn Randers-Pehrson.
+See the specification for conditions of use and distribution.
+.LP
+The PNG-1.0 specification is copyright (c) 1996 Massachusetts Institute of
+Technology.  See the specification for conditions of use and distribution.
+.LP
+.\" end of man page
+

+ 0 - 50
sys/src/cmd/gs/man/ansi2knr.1

@@ -1,50 +0,0 @@
-.\" $Id: ansi2knr.1,v 1.2 2000/03/10 03:16:17 lpd Exp $
-.TH ANSI2KNR 1 "8 March 2000" \" -*- nroff -*-
-.SH NAME
-ansi2knr \- convert ANSI C to Kernighan & Ritchie C
-.SH SYNOPSIS
-\fBansi2knr\fR [\fB--filename\fR \fIfilename\fR] [\fIinput_file\fR [\fIoutput_file\fR]]
-.br
-.SH DESCRIPTION
-\fB--filename\fR provides the file name for the #line directive in the output,
-overriding \fIinput_file\fR (if present).
-.sp
-If no \fIinput_file\fR is supplied, input is read from stdin.
-.sp
-If no \fIoutput_file\fR is supplied, output goes to stdout.
-.sp
-There are no error messages.
-.sp
-\fBansi2knr\fR
-recognizes function definitions by seeing a non-keyword identifier at the left
-margin, followed by a left parenthesis, with a right parenthesis as the last
-character on the line, and with a left brace as the first token on the
-following line (ignoring possible intervening comments).  It will recognize a
-multi-line header provided that no intervening line ends with a left or right
-brace or a semicolon.  These algorithms ignore whitespace and comments, except
-that the function name must be the first thing on the line.
-.sp
-\fBansi2knr\fP
-also recognizes adjacent string literals and concatenates them.
-.sp
-The following constructs will confuse it:
-.br
-     - Any other construct that starts at the left margin and follows the
-above syntax (such as a macro or function call).
-.br
-     - Some macros that tinker with the syntax of the function header.
-.br
-     - String literals whose concatenation requires rewriting
-their contents; e.g. "ab\0" "07c" is concatenated to "ab\007c",
-which is not correct.
-.sp
-The --varargs switch is obsolete, and is recognized only for
-backwards compatibility.  The present version of
-\fBansi2knr\fR
-will always attempt to convert a ... argument to va_alist and va_dcl.
-.SH AUTHOR
-L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
-continues to maintain the current version; most of the code in the current
-version is his work.  ansi2knr also includes contributions by Francois
-Pinard <pinard@iro.umontreal.ca>, Jim Avera <jima@netcom.com>, and Paul
-Eggert <eggert@twinsun.com>.

+ 9 - 15
sys/src/cmd/gs/mkfile

@@ -24,20 +24,7 @@
 # scripts to remove some local dependencies (e.g. calling outside and the
 # cpu call to thresher, alpha to make mips.h, alpha.h).
 #
-# If you get weird floating point errors, the culprit is usually the
-# halftone code, which converts double to uint, something 8c handles
-# incorrectly (treats as double to int).  Look in src/gshtscr.c for a line like
-# 
-# 	sample = (ht_sample_t)((value+1) * max_ht_sample);
-# 
-# and change it to one of:
-#
-# 	sample = (int)(vlong)((value+1) * max_ht_sample);
-#	sample = (ht_sample_t)(value * max_ht_sample) + max_ht_sample;
-#
-# depending on your preference.
-#
-# Also, recent versions of src/gxshade1.c cause the compiler to run out
+# Recent versions of src/gxshade1.c cause the compiler to run out
 # of registers.  Brucee is looking into this.  In the meantime, use this
 # replacement:
 #
@@ -61,9 +48,16 @@
 #	}
 #	
 # (the original includes the /3 in the big expressions).
+#
+# src/gxshade6.c also needs editing to remove use of the
+# vlong , operator on some architectures.
+#
+# you may need to change this line in gs/src/gshtscr.c:
+# //      sample = (int) (value * max_ht_sample) + max_ht_sample;
+# to
+# 	sample = (vlong)(value * max_ht_sample) + max_ht_sample;
 
 </$objtype/mkfile
-CPUS=386 mips alpha arm power
 
 BIN=/$objtype/bin
 

+ 0 - 739
sys/src/cmd/gs/src/ansi2knr.c

@@ -1,739 +0,0 @@
-/* Copyright (C) 1989, 2000 Aladdin Enterprises.  All rights reserved. */
-
-/*$Id: ansi2knr.c,v 1.3 2000/04/13 03:41:48 lpd Exp $*/
-/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
-
-/*
-ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY.  No author or distributor accepts responsibility to anyone for the
-consequences of using it or for whether it serves any particular purpose or
-works at all, unless he says so in writing.  Refer to the GNU General Public
-License (the "GPL") for full details.
-
-Everyone is granted permission to copy, modify and redistribute ansi2knr,
-but only under the conditions described in the GPL.  A copy of this license
-is supposed to have been given to you along with ansi2knr so you can know
-your rights and responsibilities.  It should be in a file named COPYLEFT,
-or, if there is no file named COPYLEFT, a file named COPYING.  Among other
-things, the copyright notice and this notice must be preserved on all
-copies.
-
-We explicitly state here what we believe is already implied by the GPL: if
-the ansi2knr program is distributed as a separate set of sources and a
-separate executable file which are aggregated on a storage medium together
-with another program, this in itself does not bring the other program under
-the GPL, nor does the mere fact that such a program or the procedures for
-constructing it invoke the ansi2knr executable bring any other part of the
-program under the GPL.
-*/
-
-/*
- * Usage:
-	ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]
- * --filename provides the file name for the #line directive in the output,
- * overriding input_file (if present).
- * If no input_file is supplied, input is read from stdin.
- * If no output_file is supplied, output goes to stdout.
- * There are no error messages.
- *
- * ansi2knr recognizes function definitions by seeing a non-keyword
- * identifier at the left margin, followed by a left parenthesis, with a
- * right parenthesis as the last character on the line, and with a left
- * brace as the first token on the following line (ignoring possible
- * intervening comments and/or preprocessor directives), except that a line
- * consisting of only
- *	identifier1(identifier2)
- * will not be considered a function definition unless identifier2 is
- * the word "void", and a line consisting of
- *	identifier1(identifier2, <<arbitrary>>)
- * will not be considered a function definition.
- * ansi2knr will recognize a multi-line header provided that no intervening
- * line ends with a left or right brace or a semicolon.  These algorithms
- * ignore whitespace, comments, and preprocessor directives, except that
- * the function name must be the first thing on the line.  The following
- * constructs will confuse it:
- *	- Any other construct that starts at the left margin and
- *	    follows the above syntax (such as a macro or function call).
- *	- Some macros that tinker with the syntax of function headers.
- */
-
-/*
- * The original and principal author of ansi2knr is L. Peter Deutsch
- * <ghost@aladdin.com>.  Other authors are noted in the change history
- * that follows (in reverse chronological order):
-
-	lpd 2000-04-12 backs out Eggert's changes because of bugs:
-	- concatlits didn't declare the type of its bufend argument;
-	- concatlits didn't't recognize when it was inside a comment;
-	- scanstring could scan backward past the beginning of the string; when
-	- the check for \ + newline in scanstring was unnecessary.
-
-	2000-03-05  Paul Eggert  <eggert@twinsun.com>
-
-	Add support for concatenated string literals.
-	* ansi2knr.c (concatlits): New decl.
-	(main): Invoke concatlits to concatenate string literals.
-	(scanstring): Handle backslash-newline correctly.  Work with
-	character constants.  Fix bug when scanning backwards through
-	backslash-quote.  Check for unterminated strings.
-	(convert1): Parse character constants, too.
-	(appendline, concatlits): New functions.
-	* ansi2knr.1: Document this.
-
-	lpd 1999-08-17 added code to allow preprocessor directives
-		wherever comments are allowed
-	lpd 1999-04-12 added minor fixes from Pavel Roskin
-		<pavel_roskin@geocities.com> for clean compilation with
-		gcc -W -Wall
-	lpd 1999-03-22 added hack to recognize lines consisting of
-		identifier1(identifier2, xxx) as *not* being procedures
-	lpd 1999-02-03 made indentation of preprocessor commands consistent
-	lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an
-		endless loop; quoted strings within an argument list
-		confused the parser
-	lpd 1999-01-24 added a check for write errors on the output,
-		suggested by Jim Meyering <meyering@ascend.com>
-	lpd 1998-11-09 added further hack to recognize identifier(void)
-		as being a procedure
-	lpd 1998-10-23 added hack to recognize lines consisting of
-		identifier1(identifier2) as *not* being procedures
-	lpd 1997-12-08 made input_file optional; only closes input and/or
-		output file if not stdin or stdout respectively; prints
-		usage message on stderr rather than stdout; adds
-		--filename switch (changes suggested by
-		<ceder@lysator.liu.se>)
-	lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with
-		compilers that don't understand void, as suggested by
-		Tom Lane
-	lpd 1996-01-15 changed to require that the first non-comment token
-		on the line following a function header be a left brace,
-		to reduce sensitivity to macros, as suggested by Tom Lane
-		<tgl@sss.pgh.pa.us>
-	lpd 1995-06-22 removed #ifndefs whose sole purpose was to define
-		undefined preprocessor symbols as 0; changed all #ifdefs
-		for configuration symbols to #ifs
-	lpd 1995-04-05 changed copyright notice to make it clear that
-		including ansi2knr in a program does not bring the entire
-		program under the GPL
-	lpd 1994-12-18 added conditionals for systems where ctype macros
-		don't handle 8-bit characters properly, suggested by
-		Francois Pinard <pinard@iro.umontreal.ca>;
-		removed --varargs switch (this is now the default)
-	lpd 1994-10-10 removed CONFIG_BROKETS conditional
-	lpd 1994-07-16 added some conditionals to help GNU `configure',
-		suggested by Francois Pinard <pinard@iro.umontreal.ca>;
-		properly erase prototype args in function parameters,
-		contributed by Jim Avera <jima@netcom.com>;
-		correct error in writeblanks (it shouldn't erase EOLs)
-	lpd 1989-xx-xx original version
- */
-
-/* Most of the conditionals here are to make ansi2knr work with */
-/* or without the GNU configure machinery. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if HAVE_CONFIG_H
-
-/*
-   For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
-   This will define HAVE_CONFIG_H and so, activate the following lines.
- */
-
-# if STDC_HEADERS || HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-#else /* not HAVE_CONFIG_H */
-
-/* Otherwise do it the hard way */
-
-# ifdef BSD
-#  include <strings.h>
-# else
-#  ifdef VMS
-    extern int strlen(), strncmp();
-#  else
-#   include <string.h>
-#  endif
-# endif
-
-#endif /* not HAVE_CONFIG_H */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#else
-/*
-   malloc and free should be declared in stdlib.h,
-   but if you've got a K&R compiler, they probably aren't.
- */
-# ifdef MSDOS
-#  include <malloc.h>
-# else
-#  ifdef VMS
-     extern char *malloc();
-     extern void free();
-#  else
-     extern char *malloc();
-     extern int free();
-#  endif
-# endif
-
-#endif
-
-/* Define NULL (for *very* old compilers). */
-#ifndef NULL
-# define NULL (0)
-#endif
-
-/*
- * The ctype macros don't always handle 8-bit characters correctly.
- * Compensate for this here.
- */
-#ifdef isascii
-# undef HAVE_ISASCII		/* just in case */
-# define HAVE_ISASCII 1
-#else
-#endif
-#if STDC_HEADERS || !HAVE_ISASCII
-# define is_ascii(c) 1
-#else
-# define is_ascii(c) isascii(c)
-#endif
-
-#define is_space(c) (is_ascii(c) && isspace(c))
-#define is_alpha(c) (is_ascii(c) && isalpha(c))
-#define is_alnum(c) (is_ascii(c) && isalnum(c))
-
-/* Scanning macros */
-#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
-#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
-
-/* Forward references */
-char *ppdirforward();
-char *ppdirbackward();
-char *skipspace();
-char *scanstring();
-int writeblanks();
-int test1();
-int convert1();
-
-/* The main program */
-int
-main(argc, argv)
-    int argc;
-    char *argv[];
-{	FILE *in = stdin;
-	FILE *out = stdout;
-	char *filename = 0;
-	char *program_name = argv[0];
-	char *output_name = 0;
-#define bufsize 5000			/* arbitrary size */
-	char *buf;
-	char *line;
-	char *more;
-	char *usage =
-	  "Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]\n";
-	/*
-	 * In previous versions, ansi2knr recognized a --varargs switch.
-	 * If this switch was supplied, ansi2knr would attempt to convert
-	 * a ... argument to va_alist and va_dcl; if this switch was not
-	 * supplied, ansi2knr would simply drop any such arguments.
-	 * Now, ansi2knr always does this conversion, and we only
-	 * check for this switch for backward compatibility.
-	 */
-	int convert_varargs = 1;
-	int output_error;
-
-	while ( argc > 1 && argv[1][0] == '-' ) {
-	  if ( !strcmp(argv[1], "--varargs") ) {
-	    convert_varargs = 1;
-	    argc--;
-	    argv++;
-	    continue;
-	  }
-	  if ( !strcmp(argv[1], "--filename") && argc > 2 ) {
-	    filename = argv[2];
-	    argc -= 2;
-	    argv += 2;
-	    continue;
-	  }
-	  fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name,
-		  argv[1]);
-	  fprintf(stderr, usage);
-	  exit(1);
-	}
-	switch ( argc )
-	   {
-	default:
-		fprintf(stderr, usage);
-		exit(0);
-	case 3:
-		output_name = argv[2];
-		out = fopen(output_name, "w");
-		if ( out == NULL ) {
-		  fprintf(stderr, "%s: Cannot open output file %s\n",
-			  program_name, output_name);
-		  exit(1);
-		}
-		/* falls through */
-	case 2:
-		in = fopen(argv[1], "r");
-		if ( in == NULL ) {
-		  fprintf(stderr, "%s: Cannot open input file %s\n",
-			  program_name, argv[1]);
-		  exit(1);
-		}
-		if ( filename == 0 )
-		  filename = argv[1];
-		/* falls through */
-	case 1:
-		break;
-	   }
-	if ( filename )
-	  fprintf(out, "#line 1 \"%s\"\n", filename);
-	buf = malloc(bufsize);
-	if ( buf == NULL )
-	   {
-		fprintf(stderr, "Unable to allocate read buffer!\n");
-		exit(1);
-	   }
-	line = buf;
-	while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
-	   {
-test:		line += strlen(line);
-		switch ( test1(buf) )
-		   {
-		case 2:			/* a function header */
-			convert1(buf, out, 1, convert_varargs);
-			break;
-		case 1:			/* a function */
-			/* Check for a { at the start of the next line. */
-			more = ++line;
-f:			if ( line >= buf + (bufsize - 1) ) /* overflow check */
-			  goto wl;
-			if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
-			  goto wl;
-			switch ( *skipspace(ppdirforward(more), 1) )
-			  {
-			  case '{':
-			    /* Definitely a function header. */
-			    convert1(buf, out, 0, convert_varargs);
-			    fputs(more, out);
-			    break;
-			  case 0:
-			    /* The next line was blank or a comment: */
-			    /* keep scanning for a non-comment. */
-			    line += strlen(line);
-			    goto f;
-			  default:
-			    /* buf isn't a function header, but */
-			    /* more might be. */
-			    fputs(buf, out);
-			    strcpy(buf, more);
-			    line = buf;
-			    goto test;
-			  }
-			break;
-		case -1:		/* maybe the start of a function */
-			if ( line != buf + (bufsize - 1) ) /* overflow check */
-			  continue;
-			/* falls through */
-		default:		/* not a function */
-wl:			fputs(buf, out);
-			break;
-		   }
-		line = buf;
-	   }
-	if ( line != buf )
-	  fputs(buf, out);
-	free(buf);
-	if ( output_name ) {
-	  output_error = ferror(out);
-	  output_error |= fclose(out);
-	} else {		/* out == stdout */
-	  fflush(out);
-	  output_error = ferror(out);
-	}
-	if ( output_error ) {
-	  fprintf(stderr, "%s: error writing to %s\n", program_name,
-		  (output_name ? output_name : "stdout"));
-	  exit(1);
-	}
-	if ( in != stdin )
-	  fclose(in);
-	return 0;
-}
-
-/*
- * Skip forward or backward over one or more preprocessor directives.
- */
-char *
-ppdirforward(p)
-    char *p;
-{
-    for (; *p == '#'; ++p) {
-	for (; *p != '\r' && *p != '\n'; ++p)
-	    if (*p == 0)
-		return p;
-	if (*p == '\r' && p[1] == '\n')
-	    ++p;
-    }
-    return p;
-}
-char *
-ppdirbackward(p, limit)
-    char *p;
-    char *limit;
-{
-    char *np = p;
-
-    for (;; p = --np) {
-	if (*np == '\n' && np[-1] == '\r')
-	    --np;
-	for (; np > limit && np[-1] != '\r' && np[-1] != '\n'; --np)
-	    if (np[-1] == 0)
-		return np;
-	if (*np != '#')
-	    return p;
-    }
-}
-
-/*
- * Skip over whitespace, comments, and preprocessor directives,
- * in either direction.
- */
-char *
-skipspace(p, dir)
-    char *p;
-    int dir;			/* 1 for forward, -1 for backward */
-{
-    for ( ; ; ) {
-	while ( is_space(*p) )
-	    p += dir;
-	if ( !(*p == '/' && p[dir] == '*') )
-	    break;
-	p += dir;  p += dir;
-	while ( !(*p == '*' && p[dir] == '/') ) {
-	    if ( *p == 0 )
-		return p;	/* multi-line comment?? */
-	    p += dir;
-	}
-	p += dir;  p += dir;
-    }
-    return p;
-}
-
-/* Scan over a quoted string, in either direction. */
-char *
-scanstring(p, dir)
-    char *p;
-    int dir;
-{
-    for (p += dir; ; p += dir)
-	if (*p == '"' && p[-dir] != '\\')
-	    return p + dir;
-}
-
-/*
- * Write blanks over part of a string.
- * Don't overwrite end-of-line characters.
- */
-int
-writeblanks(start, end)
-    char *start;
-    char *end;
-{	char *p;
-	for ( p = start; p < end; p++ )
-	  if ( *p != '\r' && *p != '\n' )
-	    *p = ' ';
-	return 0;
-}
-
-/*
- * Test whether the string in buf is a function definition.
- * The string may contain and/or end with a newline.
- * Return as follows:
- *	0 - definitely not a function definition;
- *	1 - definitely a function definition;
- *	2 - definitely a function prototype (NOT USED);
- *	-1 - may be the beginning of a function definition,
- *		append another line and look again.
- * The reason we don't attempt to convert function prototypes is that
- * Ghostscript's declaration-generating macros look too much like
- * prototypes, and confuse the algorithms.
- */
-int
-test1(buf)
-    char *buf;
-{	char *p = buf;
-	char *bend;
-	char *endfn;
-	int contin;
-
-	if ( !isidfirstchar(*p) )
-	  return 0;		/* no name at left margin */
-	bend = skipspace(ppdirbackward(buf + strlen(buf) - 1, buf), -1);
-	switch ( *bend )
-	   {
-	   case ';': contin = 0 /*2*/; break;
-	   case ')': contin = 1; break;
-	   case '{': return 0;		/* not a function */
-	   case '}': return 0;		/* not a function */
-	   default: contin = -1;
-	   }
-	while ( isidchar(*p) )
-	  p++;
-	endfn = p;
-	p = skipspace(p, 1);
-	if ( *p++ != '(' )
-	  return 0;		/* not a function */
-	p = skipspace(p, 1);
-	if ( *p == ')' )
-	  return 0;		/* no parameters */
-	/* Check that the apparent function name isn't a keyword. */
-	/* We only need to check for keywords that could be followed */
-	/* by a left parenthesis (which, unfortunately, is most of them). */
-	   {	static char *words[] =
-		   {	"asm", "auto", "case", "char", "const", "double",
-			"extern", "float", "for", "if", "int", "long",
-			"register", "return", "short", "signed", "sizeof",
-			"static", "switch", "typedef", "unsigned",
-			"void", "volatile", "while", 0
-		   };
-		char **key = words;
-		char *kp;
-		unsigned len = endfn - buf;
-
-		while ( (kp = *key) != 0 )
-		   {	if ( strlen(kp) == len && !strncmp(kp, buf, len) )
-			  return 0;	/* name is a keyword */
-			key++;
-		   }
-	   }
-	   {
-	       char *id = p;
-	       int len;
-	       /*
-		* Check for identifier1(identifier2) and not
-		* identifier1(void), or identifier1(identifier2, xxxx).
-		*/
-
-	       while ( isidchar(*p) )
-		   p++;
-	       len = p - id;
-	       p = skipspace(p, 1);
-	       if (*p == ',' ||
-		   (*p == ')' && (len != 4 || strncmp(id, "void", 4)))
-		   )
-		   return 0;	/* not a function */
-	   }
-	/*
-	 * If the last significant character was a ), we need to count
-	 * parentheses, because it might be part of a formal parameter
-	 * that is a procedure.
-	 */
-	if (contin > 0) {
-	    int level = 0;
-
-	    for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1))
-		level += (*p == '(' ? 1 : *p == ')' ? -1 : 0);
-	    if (level > 0)
-		contin = -1;
-	}
-	return contin;
-}
-
-/* Convert a recognized function definition or header to K&R syntax. */
-int
-convert1(buf, out, header, convert_varargs)
-    char *buf;
-    FILE *out;
-    int header;			/* Boolean */
-    int convert_varargs;	/* Boolean */
-{	char *endfn;
-	char *p;
-	/*
-	 * The breaks table contains pointers to the beginning and end
-	 * of each argument.
-	 */
-	char **breaks;
-	unsigned num_breaks = 2;	/* for testing */
-	char **btop;
-	char **bp;
-	char **ap;
-	char *vararg = 0;
-
-	/* Pre-ANSI implementations don't agree on whether strchr */
-	/* is called strchr or index, so we open-code it here. */
-	for ( endfn = buf; *(endfn++) != '('; )
-	  ;
-top:	p = endfn;
-	breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
-	if ( breaks == NULL )
-	   {	/* Couldn't allocate break table, give up */
-		fprintf(stderr, "Unable to allocate break table!\n");
-		fputs(buf, out);
-		return -1;
-	   }
-	btop = breaks + num_breaks * 2 - 2;
-	bp = breaks;
-	/* Parse the argument list */
-	do
-	   {	int level = 0;
-		char *lp = NULL;
-		char *rp = NULL;
-		char *end = NULL;
-
-		if ( bp >= btop )
-		   {	/* Filled up break table. */
-			/* Allocate a bigger one and start over. */
-			free((char *)breaks);
-			num_breaks <<= 1;
-			goto top;
-		   }
-		*bp++ = p;
-		/* Find the end of the argument */
-		for ( ; end == NULL; p++ )
-		   {	switch(*p)
-			   {
-			   case ',':
-				if ( !level ) end = p;
-				break;
-			   case '(':
-				if ( !level ) lp = p;
-				level++;
-				break;
-			   case ')':
-				if ( --level < 0 ) end = p;
-				else rp = p;
-				break;
-			   case '/':
-				if (p[1] == '*')
-				    p = skipspace(p, 1) - 1;
-				break;
-			   case '"':
-			       p = scanstring(p, 1) - 1;
-			       break;
-			   default:
-				;
-			   }
-		   }
-		/* Erase any embedded prototype parameters. */
-		if ( lp && rp )
-		  writeblanks(lp + 1, rp);
-		p--;			/* back up over terminator */
-		/* Find the name being declared. */
-		/* This is complicated because of procedure and */
-		/* array modifiers. */
-		for ( ; ; )
-		   {	p = skipspace(p - 1, -1);
-			switch ( *p )
-			   {
-			   case ']':	/* skip array dimension(s) */
-			   case ')':	/* skip procedure args OR name */
-			   {	int level = 1;
-				while ( level )
-				 switch ( *--p )
-				   {
-				   case ']': case ')':
-				       level++;
-				       break;
-				   case '[': case '(':
-				       level--;
-				       break;
-				   case '/':
-				       if (p > buf && p[-1] == '*')
-					   p = skipspace(p, -1) + 1;
-				       break;
-				   case '"':
-				       p = scanstring(p, -1) + 1;
-				       break;
-				   default: ;
-				   }
-			   }
-				if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
-				   {	/* We found the name being declared */
-					while ( !isidfirstchar(*p) )
-					  p = skipspace(p, 1) + 1;
-					goto found;
-				   }
-				break;
-			   default:
-				goto found;
-			   }
-		   }
-found:		if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
-		  {	if ( convert_varargs )
-			  {	*bp++ = "va_alist";
-				vararg = p-2;
-			  }
-			else
-			  {	p++;
-				if ( bp == breaks + 1 )	/* sole argument */
-				  writeblanks(breaks[0], p);
-				else
-				  writeblanks(bp[-1] - 1, p);
-				bp--;
-			  }
-		   }
-		else
-		   {	while ( isidchar(*p) ) p--;
-			*bp++ = p+1;
-		   }
-		p = end;
-	   }
-	while ( *p++ == ',' );
-	*bp = p;
-	/* Make a special check for 'void' arglist */
-	if ( bp == breaks+2 )
-	   {	p = skipspace(breaks[0], 1);
-		if ( !strncmp(p, "void", 4) )
-		   {	p = skipspace(p+4, 1);
-			if ( p == breaks[2] - 1 )
-			   {	bp = breaks;	/* yup, pretend arglist is empty */
-				writeblanks(breaks[0], p + 1);
-			   }
-		   }
-	   }
-	/* Put out the function name and left parenthesis. */
-	p = buf;
-	while ( p != endfn ) putc(*p, out), p++;
-	/* Put out the declaration. */
-	if ( header )
-	  {	fputs(");", out);
-		for ( p = breaks[0]; *p; p++ )
-		  if ( *p == '\r' || *p == '\n' )
-		    putc(*p, out);
-	  }
-	else
-	  {	for ( ap = breaks+1; ap < bp; ap += 2 )
-		  {	p = *ap;
-			while ( isidchar(*p) )
-			  putc(*p, out), p++;
-			if ( ap < bp - 1 )
-			  fputs(", ", out);
-		  }
-		fputs(")  ", out);
-		/* Put out the argument declarations */
-		for ( ap = breaks+2; ap <= bp; ap += 2 )
-		  (*ap)[-1] = ';';
-		if ( vararg != 0 )
-		  {	*vararg = 0;
-			fputs(breaks[0], out);		/* any prior args */
-			fputs("va_dcl", out);		/* the final arg */
-			fputs(bp[0], out);
-		  }
-		else
-		  fputs(breaks[0], out);
-	  }
-	free((char *)breaks);
-	return 0;
-}

+ 0 - 24
sys/src/cmd/gs/src/ccgs

@@ -1,24 +0,0 @@
-#!/bin/sh
-# $Id: ccgs,v 1.1 2000/03/09 08:40:40 lpd Exp $
-# Pre-process ANSI C files with ansi2knr before compiling.
-# Usage: ccgs ansi2knr "cc switches..." ...switches... -c inputfile ... -o outputfile
-
-CFILE=""
-OFILE=""
-CSWITCH=""
-A2K=$1
-shift
-CMD=$1
-while [ $# -gt 1 ]
-do
-	shift
-	case "$1" in
-	-c) CSWITCH=$1;;
-	-o) OFILE=$2; shift;;
-	-*) CMD="$CMD $1";;
-	*) CFILE="$CFILE $1";;
-	esac
-done
-$A2K $CFILE _temp_$$.c
-$CMD $CSWITCH _temp_$$.c -o $OFILE
-rm -f _temp_$$.c

+ 0 - 609
sys/src/cmd/gs/src/gdevalph.c

@@ -1,609 +0,0 @@
-/* Copyright (C) 1997, 1999 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevalph.c,v 1.2 2000/09/19 19:00:11 lpd Exp $ */
-/* Alpha-channel storage device */
-#include "memory_.h"
-#include "gx.h"
-#include "gserrors.h"
-#include "gsdcolor.h"
-#include "gxdevice.h"
-#include "gxdevmem.h"
-#include "gxgetbit.h"
-
-/*
- * Very few devices (actually, none right now) actually store an alpha
- * channel.  Here we provide a device that acts as a "wrapper" around
- * another device, and adds alpha channel storage.
- */
-
-/* Define the device. */
-typedef struct gx_device_store_alpha_s {
-    gx_device_forward_common;
-    bool open_close_target;	/* if true, open/close target when opening/closing */
-    int alpha_depth;		/* # of bits of stored alpha */
-    gx_device_memory *adev;	/* stores the alpha values -- created when needed */
-} gx_device_store_alpha;
-
-gs_private_st_suffix_add1_final(st_device_store_alpha,
-			     gx_device_store_alpha, "gx_device_store_alpha",
-		device_store_alpha_enum_ptrs, device_store_alpha_reloc_ptrs,
-				gx_device_finalize, st_device_forward, adev);
-/* The device descriptor. */
-private dev_proc_open_device(dsa_open);
-private dev_proc_close_device(dsa_close);
-private dev_proc_fill_rectangle(dsa_fill_rectangle);
-private dev_proc_map_rgb_color(dsa_map_rgb_color);
-private dev_proc_map_color_rgb(dsa_map_color_rgb);
-private dev_proc_copy_mono(dsa_copy_mono);
-private dev_proc_copy_color(dsa_copy_color);
-private dev_proc_put_params(dsa_put_params);
-private dev_proc_map_rgb_alpha_color(dsa_map_rgb_alpha_color);
-private dev_proc_map_color_rgb_alpha(dsa_map_color_rgb_alpha);
-private dev_proc_copy_alpha(dsa_copy_alpha);
-private dev_proc_fill_path(dsa_fill_path);
-private dev_proc_stroke_path(dsa_stroke_path);
-private dev_proc_get_bits_rectangle(dsa_get_bits_rectangle);
-private const gx_device_store_alpha gs_store_alpha_device =
-{std_device_std_body_open(gx_device_store_alpha, 0,
-			  "alpha storage", 0, 0, 1, 1),
- {dsa_open,
-  gx_forward_get_initial_matrix,
-  gx_forward_sync_output,
-  gx_forward_output_page,
-  dsa_close,
-  dsa_map_rgb_color,
-  dsa_map_color_rgb,
-  dsa_fill_rectangle,
-  gx_default_tile_rectangle,
-  dsa_copy_mono,
-  dsa_copy_color,
-  gx_default_draw_line,
-  gx_default_get_bits,
-  gx_forward_get_params,
-  dsa_put_params,
-  gx_default_cmyk_map_cmyk_color,	/* only called for CMYK */
-  gx_forward_get_xfont_procs,
-  gx_forward_get_xfont_device,
-  dsa_map_rgb_alpha_color,
-  gx_forward_get_page_device,
-  gx_forward_get_alpha_bits,
-  dsa_copy_alpha,
-  gx_forward_get_band,
-  gx_default_copy_rop,
-  dsa_fill_path,
-  dsa_stroke_path,
-		/*
-		 * We should do the same thing for the "mid-level"
-		 * drawing operations that we do for fill_path and
-		 * stroke_path, but we don't bother to do this yet.
-		 */
-  gx_default_fill_mask,
-  gx_default_fill_trapezoid,
-  gx_default_fill_parallelogram,
-  gx_default_fill_triangle,
-  gx_default_draw_thin_line,
-  gx_default_begin_image,
-  gx_default_image_data,
-  gx_default_end_image,
-  gx_default_strip_tile_rectangle,
-  gx_default_strip_copy_rop,
-  gx_forward_get_clipping_box,
-  gx_default_begin_typed_image,
-  dsa_get_bits_rectangle,
-  dsa_map_color_rgb_alpha,
-  gx_default_create_compositor
- }
-};
-
-/* Forward references */
-private int alloc_alpha_storage(P1(gx_device_store_alpha * sadev));
-
-#define sadev ((gx_device_store_alpha *)dev)
-
-/* ------ Open/close ------ */
-
-private int
-dsa_open(gx_device * dev)
-{
-    gx_device *tdev = sadev->target;
-    int max_value =
-    max(tdev->color_info.max_gray, tdev->color_info.max_color);
-    int adepth = (max_value <= 3 ? 2 : max_value <= 15 ? 4 : 8);
-    int depth = tdev->color_info.depth + adepth;
-    int code;
-
-    if (depth > 32)
-	return_error(gs_error_rangecheck);
-    code =
-	(sadev->open_close_target ?
-	 (*dev_proc(tdev, open_device)) (tdev) : 0);
-    if (code < 0)
-	return code;
-    sadev->width = tdev->width;
-    sadev->height = tdev->height;
-    sadev->color_info = tdev->color_info;
-    sadev->color_info.depth = (depth <= 4 ? 4 : ROUND_UP(depth, 8));
-    sadev->alpha_depth = adepth;
-    sadev->adev = 0;
-    return 0;
-}
-
-private int
-dsa_close(gx_device * dev)
-{
-    gx_device *adev = (gx_device *) sadev->adev;
-
-    if (adev) {
-	(*dev_proc(adev, close_device)) (adev);
-	gs_free_object(dev->memory, adev, "dsa_close(adev)");
-	sadev->adev = 0;
-    }
-    if (sadev->open_close_target) {
-	gx_device *tdev = sadev->target;
-
-	return (*dev_proc(tdev, close_device)) (tdev);
-    }
-    return 0;
-}
-
-/* ------ Color mapping ------ */
-
-private gx_color_index
-dsa_map_rgb_color(gx_device * dev,
-	      gx_color_value red, gx_color_value green, gx_color_value blue)
-{
-    return dsa_map_rgb_alpha_color(dev, red, green, blue,
-				   gx_max_color_value);
-}
-
-private int
-dsa_map_color_rgb(gx_device * dev,
-		  gx_color_index color, gx_color_value rgb[3])
-{
-    gx_device *tdev = sadev->target;
-
-    return (*dev_proc(tdev, map_color_rgb))
-	(tdev, color >> sadev->alpha_depth, rgb);
-}
-
-private gx_color_index
-dsa_map_rgb_alpha_color(gx_device * dev,
-	      gx_color_value red, gx_color_value green, gx_color_value blue,
-			gx_color_value alpha)
-{
-    gx_device *tdev = sadev->target;
-    int adepth = sadev->alpha_depth;
-
-    return
-	((*dev_proc(tdev, map_rgb_color)) (tdev, red, green, blue)
-	 << adepth) + (alpha * ((1 << adepth) - 1) / gx_max_color_value);
-}
-
-private int
-dsa_map_color_rgb_alpha(gx_device * dev,
-			gx_color_index color, gx_color_value rgba[4])
-{
-    int code = dsa_map_color_rgb(dev, color, rgba);
-    int amask = (1 << sadev->alpha_depth) - 1;
-
-    if (code < 0)
-	return code;
-    rgba[3] = (color & amask) * gx_max_color_value / amask;
-    return code;
-}
-
-/* ------ Low-level drawing ------ */
-
-private int
-dsa_fill_rectangle(gx_device * dev,
-		   int x, int y, int width, int height, gx_color_index color)
-{
-    gx_device *tdev = sadev->target;
-    gx_device *adev = (gx_device *) sadev->adev;
-    int adepth = sadev->alpha_depth;
-    uint amask = (1 << adepth) - 1;
-
-    if ((~color & amask) && !adev) {
-	int code = alloc_alpha_storage(sadev);
-
-	if (code < 0)
-	    return code;
-	adev = (gx_device *) sadev->adev;
-    }
-    if (adev)
-	(*dev_proc(adev, fill_rectangle))
-	    (adev, x, y, width, height, color & amask);
-    return (*dev_proc(tdev, fill_rectangle))
-	(tdev, x, y, width, height, color >> adepth);
-}
-
-private int
-dsa_copy_mono(gx_device * dev,
-	      const byte * data, int data_x, int raster, gx_bitmap_id id,
-	      int x, int y, int width, int height,
-	      gx_color_index color0, gx_color_index color1)
-{
-    gx_device *tdev = sadev->target;
-    gx_device *adev = (gx_device *) sadev->adev;
-    int adepth = sadev->alpha_depth;
-    uint amask = (1 << adepth) - 1;
-
-    if ((((color0 != gx_no_color_index) && (~color0 & amask)) ||
-	 ((color1 != gx_no_color_index) && (~color1 & amask))) && !adev
-	) {
-	int code = alloc_alpha_storage(sadev);
-
-	if (code < 0)
-	    return code;
-	adev = (gx_device *) sadev->adev;
-    }
-    if (adev)
-	(*dev_proc(adev, copy_mono))
-	    (adev, data, data_x, raster, id, x, y, width, height,
-	     (color0 == gx_no_color_index ? color0 : color0 & amask),
-	     (color1 == gx_no_color_index ? color1 : color1 & amask));
-    return (*dev_proc(tdev, copy_mono))
-	(tdev, data, data_x, raster, id, x, y, width, height,
-	 (color0 == gx_no_color_index ? color0 : color0 >> adepth),
-	 (color1 == gx_no_color_index ? color1 : color1 >> adepth));
-}
-
-private int
-dsa_copy_color(gx_device * dev,
-	       const byte * data, int data_x, int raster, gx_bitmap_id id,
-	       int x, int y, int width, int height)
-{
-    int sdepth = dev->color_info.depth;
-    gx_device *tdev = sadev->target;
-    int tdepth = tdev->color_info.depth;
-    gx_device *adev = (gx_device *) sadev->adev;
-    int adepth = sadev->alpha_depth;	/* = adev->color_info.depth */
-    uint amask = (1 << adepth) - 1;
-    gs_memory_t *mem = dev->memory;
-    byte *color_row;
-    byte *alpha_row;
-    int code = 0;
-    int xbit, yi;
-
-    fit_copy(dev, data, data_x, raster, id, x, y, width, height);
-    color_row =
-	gs_alloc_bytes(mem, bitmap_raster(width * tdepth),
-		       "dsa_copy_color(color)");
-    /*
-     * If we aren't already storing alpha, alpha_row remains 0 until we
-     * encounter a source value with a non-unity alpha.
-     */
-    alpha_row =
-	(adev ?
-	 gs_alloc_bytes(mem, bitmap_raster(width * adepth),
-			"dsa_copy_color(color)") : 0);
-    if (color_row == 0 || (adev && alpha_row == 0)) {
-	code = gs_note_error(gs_error_VMerror);
-	goto out;
-    }
-    xbit = data_x * dev->color_info.depth;
-    for (yi = y; yi < y + height; ++yi) {
-	const byte *source_row = data + (yi - y) * raster;
-
-	sample_load_declare_setup(sptr, sbit, source_row + (xbit >> 3),
-				  xbit & 7, sdepth);
-	sample_store_declare_setup(dcptr, dcbit, dcbyte,
-				   color_row, 0, tdepth);
-	sample_store_declare_setup(daptr, dabit, dabyte,
-				   alpha_row, 0, adepth);
-	int xi;
-
-	for (xi = 0; xi < width; ++xi) {
-	    gx_color_index source;
-
-	    sample_load_next32(source, sptr, sbit, sdepth);
-	    {
-		gx_color_index dest_color = source >> adepth;
-
-		sample_store_next32(dest_color, dcptr, dcbit, tdepth, dcbyte);
-	    }
-	    {
-		uint dest_alpha = source & amask;
-
-		if (dest_alpha != amask && !alpha_row) {
-		    /*
-		     * Create an alpha row (and, if necessary, alpha storage).
-		     */
-		    int axbit = (xi - x) * adepth;
-
-		    if (!adev) {
-			code = alloc_alpha_storage(sadev);
-			if (code < 0)
-			    return code;
-			adev = (gx_device *) sadev->adev;
-		    }
-		    alpha_row =
-			gs_alloc_bytes(mem, bitmap_raster(width * adepth),
-				       "dsa_copy_color(color)");
-		    if (alpha_row == 0) {
-			code = gs_note_error(gs_error_VMerror);
-			goto out;
-		    }
-		    /*
-		     * All the alpha values up to this point are unity, so we
-		     * can fill them into the alpha row quickly.
-		     */
-		    memset(alpha_row, 0xff, (axbit + 7) >> 3);
-		    daptr = alpha_row + (axbit >> 3);
-		    sample_store_setup(dabit, axbit & 7, adepth);
-		    sample_store_preload(dabyte, daptr, dabit, adepth);
-		}
-		if (alpha_row)
-		    sample_store_next12(dest_alpha, daptr, dabit, adepth, dabyte);
-	    }
-	}
-	if (alpha_row) {
-	    sample_store_flush(daptr, dabit, adepth, dabyte);
-	    (*dev_proc(adev, copy_color))
-		(adev, alpha_row, 0, 0 /* irrelevant */ , gx_no_bitmap_id,
-		 x, yi, width, 1);
-	}
-	sample_store_flush(dcptr, dcbit, adepth, dcbyte);
-	(*dev_proc(tdev, copy_color))
-	    (tdev, color_row, 0, 0 /* irrelevant */ , gx_no_bitmap_id,
-	     x, yi, width, 1);
-    }
-  out:gs_free_object(mem, alpha_row, "dsa_copy_color(alpha)");
-    gs_free_object(mem, color_row, "dsa_copy_color(color)");
-    return code;
-}
-
-private int
-dsa_copy_alpha(gx_device * dev, const byte * data, int data_x,
-	   int raster, gx_bitmap_id id, int x, int y, int width, int height,
-	       gx_color_index color, int depth)
-{
-    gx_device *tdev = sadev->target;
-    gx_device *adev = (gx_device *) sadev->adev;
-    int adepth = sadev->alpha_depth;
-    uint amask = (1 << adepth) - 1;
-
-    if ((~color & amask) && !adev) {
-	int code = alloc_alpha_storage(sadev);
-
-	if (code < 0)
-	    return code;
-	adev = (gx_device *) sadev->adev;
-    }
-    if (adev)
-	(*dev_proc(adev, copy_alpha))
-	    (adev, data, data_x, raster, id, x, y, width, height,
-	     color & amask, depth);
-    return (*dev_proc(tdev, copy_alpha))
-	(tdev, data, data_x, raster, id, x, y, width, height,
-	 color >> adepth, depth);
-}
-
-/* ------ High-level drawing ------ */
-
-private int
-dsa_fill_path(gx_device * dev, const gs_imager_state * pis, gx_path * ppath,
-	    const gx_fill_params * params, const gx_drawing_color * pdcolor,
-	      const gx_clip_path * pcpath)
-{
-    if (!color_is_pure(pdcolor))
-	return gx_default_fill_path(dev, pis, ppath, params, pdcolor,
-				    pcpath);
-
-    {
-	gx_color_index color = gx_dc_pure_color(pdcolor);
-	gx_drawing_color dcolor;
-	gx_device *tdev = sadev->target;
-	gx_device *adev = (gx_device *) sadev->adev;
-	int adepth = sadev->alpha_depth;
-	uint amask = (1 << adepth) - 1;
-	int code;
-
-	if ((~color & amask) && !adev) {
-	    code = alloc_alpha_storage(sadev);
-	    if (code < 0)
-		return code;
-	    adev = (gx_device *) sadev->adev;
-	}
-	if (adev) {
-	    color_set_pure(&dcolor, color & amask);
-	    code = (*dev_proc(adev, fill_path))
-		(adev, pis, ppath, params, &dcolor, pcpath);
-	    if (code < 0)
-		return code;
-	}
-	color_set_pure(&dcolor, color >> adepth);
-	return (*dev_proc(tdev, fill_path))
-	    (tdev, pis, ppath, params, &dcolor, pcpath);
-    }
-}
-
-private int
-dsa_stroke_path(gx_device * dev, const gs_imager_state * pis, gx_path * ppath,
-	  const gx_stroke_params * params, const gx_drawing_color * pdcolor,
-		const gx_clip_path * pcpath)
-{
-    if (!color_is_pure(pdcolor))
-	return gx_default_stroke_path(dev, pis, ppath, params, pdcolor,
-				      pcpath);
-
-    {
-	gx_color_index color = gx_dc_pure_color(pdcolor);
-	gx_drawing_color dcolor;
-	gx_device *tdev = sadev->target;
-	gx_device *adev = (gx_device *) sadev->adev;
-	int adepth = sadev->alpha_depth;
-	uint amask = (1 << adepth) - 1;
-	int code;
-
-	if ((~color & amask) && !adev) {
-	    code = alloc_alpha_storage(sadev);
-	    if (code < 0)
-		return code;
-	    adev = (gx_device *) sadev->adev;
-	}
-	if (adev) {
-	    color_set_pure(&dcolor, color & amask);
-	    code = (*dev_proc(adev, stroke_path))
-		(adev, pis, ppath, params, &dcolor, pcpath);
-	    if (code < 0)
-		return code;
-	}
-	color_set_pure(&dcolor, color >> adepth);
-	return (*dev_proc(tdev, stroke_path))
-	    (tdev, pis, ppath, params, &dcolor, pcpath);
-    }
-}
-
-/* ------ Reading bits ------ */
-
-private int
-dsa_get_bits_rectangle(gx_device * dev, const gs_int_rect * prect,
-		       gs_get_bits_params_t * params, gs_int_rect ** unread)
-{
-    int ddepth = dev->color_info.depth;
-    gx_device *tdev = sadev->target;
-    int tdepth = tdev->color_info.depth;
-    gx_device *adev = (gx_device *) sadev->adev;
-    int adepth = sadev->alpha_depth;	/* = adev->color_info.depth */
-    uint alpha = (1 << adepth) - 1;
-    gs_get_bits_options_t options = params->options;
-    int x = prect->p.x, w = prect->q.x - x, y = prect->p.y, h = prect->q.y - y;
-    int yi;
-    uint raster =
-    (options & gb_raster_standard ? bitmap_raster(w * ddepth) :
-     params->raster);
-
-    if ((~options &
-	 (gb_colors_native | gb_alpha_last | gb_packing_chunky |
-	  gb_return_copy | gb_offset_0)) ||
-	!(options & (gb_raster_standard | gb_raster_specified))
-	) {
-	if (options == 0) {
-	    params->options =
-		gb_colors_native | gb_alpha_last | gb_packing_chunky |
-		gb_return_copy | gb_offset_0 |
-		(gb_raster_standard | gb_raster_specified);
-	    return_error(gs_error_rangecheck);
-	}
-    }
-    if ((w <= 0) | (h <= 0)) {
-	if ((w | h) < 0)
-	    return_error(gs_error_rangecheck);
-	return 0;
-    }
-    if (x < 0 || w > dev->width - x ||
-	y < 0 || h > dev->height - y
-	)
-	return_error(gs_error_rangecheck);
-    for (yi = y; yi < y + h; ++yi) {
-	sample_load_declare(scptr, scbit);
-	sample_load_declare(saptr, sabit);
-	sample_store_declare(dptr, dbit, dbbyte);
-	byte *data = params->data[0] + (yi - y) * raster;
-	gs_get_bits_params_t color_params;
-	gs_int_rect rect;
-	int code, xi;
-
-	rect.p.x = x, rect.p.y = yi;
-	rect.q.x = x + w, rect.q.y = yi + 1;
-	color_params.options =
-	    gb_colors_native | gb_alpha_none | gb_packing_chunky |
-	    (gb_return_copy | gb_return_pointer) | gb_offset_specified |
-	    gb_raster_all /*irrelevant */  | gb_align_all /*irrelevant */ ;
-	color_params.x_offset = w;
-	code = (*dev_proc(tdev, get_bits_rectangle))
-	    (tdev, &rect, &color_params, NULL);
-	if (code < 0)
-	    return code;
-	dptr = data;
-	sample_store_setup(dbit, 0, ddepth);
-	sample_store_preload(dbbyte, dptr, dbit, ddepth);
-	{
-	    int cxbit = (color_params.data[0] == data ? w * tdepth : 0);
-
-	    scptr = data + (cxbit >> 3);
-	    sample_load_setup(scbit, cxbit & 7, tdepth);
-	}
-	if (adev) {
-	    int axbit = x * adepth;
-
-	    saptr = data + (axbit >> 3);
-	    sample_load_setup(sabit, axbit & 7, adepth);
-	}
-	for (xi = 0; xi < w; ++xi) {
-	    gx_color_index colors;
-
-	    sample_load_next32(colors, scptr, scbit, tdepth);
-	    if (adev)
-		sample_load_next12(alpha, saptr, sabit, adepth);
-	    colors = (colors << adepth) + alpha;
-	    sample_store_next32(colors, dptr, dbit, ddepth, dbbyte);
-	}
-	sample_store_flush(dptr, dbit, ddepth, dbbyte);
-    }
-    return 0;
-}
-
-/* ------ Setting parameters ------ */
-
-private int
-dsa_put_params(gx_device * dev, gs_param_list * plist)
-{
-    gx_device *tdev = sadev->target;
-    int code = (*dev_proc(tdev, put_params)) (tdev, plist);
-
-    if (code < 0)
-	return code;
-    gx_device_copy_params(dev, tdev);
-    return code;
-}
-
-#undef sadev
-
-/* ------ Internal utilities ------ */
-
-/* Allocate the alpha storage memory device. */
-private int
-alloc_alpha_storage(gx_device_store_alpha * sadev)
-{
-    int adepth = sadev->alpha_depth;
-    const gx_device_memory *mdproto = gdev_mem_device_for_bits(adepth);
-    gs_memory_t *mem = sadev->memory;
-    gx_device_memory *mdev =
-    gs_alloc_struct(mem, gx_device_memory,
-		    &st_device_memory, "alloc_alpha_storage(adev)");
-    int code;
-
-    if (mdev == 0)
-	return_error(gs_error_VMerror);
-    gs_make_mem_device(mdev, mdproto, mem, 0, NULL);
-    mdev->width = sadev->width;
-    mdev->height = sadev->height;
-    mdev->bitmap_memory = mem;
-    code = (*dev_proc(mdev, open_device)) ((gx_device *) mdev);
-    if (code < 0) {
-	gs_free_object(mem, mdev, "alloc_alpha_storage(adev)");
-	return_error(gs_error_VMerror);
-    }
-    sadev->adev = mdev;
-    return (*dev_proc(mdev, fill_rectangle))
-	((gx_device *) mdev, 0, 0, mdev->width, mdev->height,
-	 (gx_color_index) ((1 << adepth) - 1));
-}

+ 0 - 627
sys/src/cmd/gs/src/gdevhpij.c

@@ -1,627 +0,0 @@
-/*
- * Hewlett-Packard Co. Inkjet Driver
- * Copyright (c) 2001, Hewlett-Packard Co.
- *
- * This ghostscript printer driver is the glue code for using the 
- * HP Inkjet Server (hpijs).
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "gdevprn.h"
-#include "gdevpcl.h"
-#include "gxdevice.h"
-#include <sys/stat.h>
-#include <sys/shm.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <syslog.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <limits.h>
-#include "gdevhpij.h"
-
-
-/* Structure for hpijs device. */
-typedef struct gx_device_hpijs_s
-{
-   gx_device_common;
-   gx_prn_device_common;
-   /* Additional parameters for hpijs */
-   int PrintMode;		/* qrayscale=0, normal=1, photo=2, ??? */
-   SRVD sd;			/* server descriptor */
-   gs_param_string DeviceName;
-} gx_device_hpijs;
-
-/* Default X and Y resolution. */
-#ifndef X_DPI
-#  define X_DPI 300
-#endif
-#ifndef Y_DPI
-#  define Y_DPI 300
-#endif
-
-/* Margins are left, bottom, right, top. */
-#define DESKJET_MARGINS_LETTER   0.25, 0.44, -0.25, 0.167
-#define DESKJET_MARGINS_A4       0.125, 0.44, -0.125, 0.167
-//#define DESKJET_MARGINS_LETTER   0.25, 0.44, 0, 0.167
-//#define DESKJET_MARGINS_A4       0.125, 0.44, 0, 0.167
-
-private int hpijs_print_page(gx_device_printer * pdev, FILE * prn_stream, const char *dname);
-
-private dev_proc_open_device(hpijs_open);
-private dev_proc_close_device(hpijs_close);
-private dev_proc_print_page(dj630_print_page);
-private dev_proc_print_page(dj6xx_print_page);
-private dev_proc_print_page(dj6xx_photo_print_page);
-private dev_proc_print_page(dj8xx_print_page);
-private dev_proc_print_page(dj9xx_print_page);
-private dev_proc_print_page(dj9xx_vip_print_page);
-private dev_proc_print_page(ap21xx_print_page);
-private dev_proc_print_page(hpijs_ext_print_page);
-private dev_proc_get_params(hpijs_get_params);
-private dev_proc_put_params(hpijs_put_params);
-
-private gx_device_procs prn_hpijs_procs =
-prn_color_params_procs(hpijs_open, gdev_prn_output_page, hpijs_close,
-		       gx_default_rgb_map_rgb_color,
-		       gx_default_rgb_map_color_rgb, hpijs_get_params,
-		       hpijs_put_params);
-
-gx_device_hpijs gs_DJ630_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ630",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj630_print_page),
-   2				/* PrintMode default */
-};
-
-gx_device_hpijs gs_DJ6xx_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ6xx",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj6xx_print_page),
-   1				/* PrintMode default */
-};
-
-gx_device_hpijs gs_DJ6xxP_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ6xxP",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj6xx_photo_print_page),
-   1				/* PrintMode default */
-};
-
-gx_device_hpijs gs_DJ8xx_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ8xx",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj8xx_print_page),
-   1				/* PrintMode default */
-};
-
-gx_device_hpijs gs_DJ9xx_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ9xx",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj9xx_print_page),
-   1				/* PrintMode default */
-};
-
-gx_device_hpijs gs_DJ9xxVIP_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "DJ9xxVIP",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, dj9xx_vip_print_page),
-   1				/* PrintMode default */
-};
-
-gx_device_hpijs gs_AP21xx_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "AP21xx",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, ap21xx_print_page),
-   2				/* PrintMode default */
-};
-
-gx_device_hpijs gs_hpijs_device =
-    { prn_device_std_body(gx_device_hpijs, prn_hpijs_procs, "hpijs",
-			  DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
-			  X_DPI, Y_DPI,
-			  0, 0, 0, 0,	/* margins (lm,bm,rm,tm)  */
-			  24, hpijs_ext_print_page),
-   1				/* PrintMode default */
-};
-
-static char s2c[80];
-static char c2s[80];
-
-private int bug(const char *fmt, ...)
-{
-   char buf[256];
-   va_list args;
-   int n;
-
-   va_start(args, fmt);
-
-   if ((n = vsnprintf(buf, 256, fmt, args)) == -1)
-      buf[255] = 0;		/* output was truncated */
-
-   fprintf(stderr, buf);
-   syslog(LOG_WARNING, buf);
-
-   fflush(stderr);
-   va_end(args);
-   return n;
-}
-
-/* Get packet from the server. */
-private int hpijs_get_pk(PK * pk, int fd)
-{
-   return read(fd, pk, PIPE_BUF - 1);
-}
-
-/* Write packet to the server. */
-private int hpijs_put_pk(PK * pk, int fd)
-{
-   return write(fd, pk, sizeof(PK));
-}
-
-/* Write single command packet to server. */
-private int hpijs_put_cmd(SRVD * sd, int cmd)
-{
-   PK pk;
-
-   pk.cmd = cmd;
-   if (hpijs_put_pk(&pk, sd->fdc2s) < 0)
-   {
-      bug("unable to write fifo %d: %m\n", sd->client_to_srv);
-      return -1;
-   }
-   if (hpijs_get_pk(&pk, sd->fds2c) < 0)	/* ack */
-   {
-      bug("unable to read fifo %d: %m\n", sd->client_to_srv);
-      return -1;
-   }
-
-   return 0;
-}
-
-/* Init server discriptor. */
-private int hpijs_init_sd(SRVD * sd)
-{
-   sd->fds2c = -1;
-   sd->fdc2s = -1;
-   sd->shmid = -1;
-   sd->shmbuf = NULL;
-   sd->srv_to_client = NULL;
-   sd->client_to_srv = NULL;
-   return 0;
-}
-
-/* Close the server. */
-private int hpijs_close_srv(SRVD * sd)
-{
-   PK pk;
-
-   if (sd->fdc2s >= 0)
-   {
-      /* Kill the server. */
-      pk.cmd = KILL;
-      hpijs_put_pk(&pk, sd->fdc2s);
-   }
-   if (sd->shmbuf != NULL)
-   {
-      /* Detach and release shared memory. */
-      shmdt(sd->shmbuf);
-      shmctl(sd->shmid, IPC_RMID, 0);
-   }
-   close(sd->fds2c);
-   close(sd->fdc2s);
-
-   remove(sd->srv_to_client);
-   remove(sd->client_to_srv);
-   return 0;
-}
-
-/* Spawn the server as a coprocess. */
-private int hpijs_open_srv(SRVD * sd, FILE * prn_stream, int raster_width)
-{
-   PK pk;
-   int fd;
-   mode_t mode = 0666;
-   int pid;
-
-   /* Make sure we can find the server. */
-   //   if (access(SRVPATH, F_OK) < 0)
-   //   {
-   //      bug("unable to locate %s: %m\n", SRVPATH);
-   //      return -1;
-   //   }    
-
-   /* Assign fifo names for environment space, names must be const char. */
-   sprintf(s2c, "SRV_TO_CLIENT=/tmp/hpijs_s2c_%d", getpid());
-   sprintf(c2s, "CLIENT_TO_SRV=/tmp/hpijs_c2s_%d", getpid());
-
-   /* Put fifo names in envirmoment space for child process. */
-   putenv(s2c);
-   putenv(c2s);
-
-   /* Get local copy. */
-   sd->srv_to_client = getenv("SRV_TO_CLIENT");
-   sd->client_to_srv = getenv("CLIENT_TO_SRV");
-
-   /* Create actual fifos in filesystem. */
-   if ((mkfifo(sd->srv_to_client, mode)) < 0)
-   {
-      bug("unable to create fifo %s: %m\n", sd->srv_to_client);
-      return -1;
-   }
-   if ((mkfifo(sd->client_to_srv, mode)) < 0)
-   {
-      bug("unable to create fifo %s: %m\n", sd->client_to_srv);
-      goto BUGOUT;
-   }
-
-   /* Create shared memory for raster data. */
-   if ((sd->shmid = shmget(IPC_PRIVATE, raster_width, mode)) < 0)
-   {
-      bug("unable to create shared memory: %m\n");
-      goto BUGOUT;
-   }
-
-   /* Spawn the server. */
-   if ((pid = fork()) < 0)
-   {
-      bug("unable to fork server: %m\n");
-      goto BUGOUT;
-   } else if (pid > 0)
-   {				/* parent */
-
-      /* Open fifos. */
-      if ((sd->fds2c = open(sd->srv_to_client, O_RDONLY)) < 0)
-      {
-	 bug("unable to open fifo %d: %m\n", sd->srv_to_client);
-	 goto BUGOUT;
-      }
-      if ((sd->fdc2s = open(sd->client_to_srv, O_WRONLY)) < 0)
-      {
-	 bug("unable to open fifo %d: %m\n", sd->client_to_srv);
-	 goto BUGOUT;
-      }
-
-      /* Attach to shared memory. */
-      if ((sd->shmbuf = shmat(sd->shmid, 0, 0)) < (char *) 0)
-      {
-	 bug("unable to attach shared memory: %m\n");
-	 goto BUGOUT;
-      }
-
-      /* Send shmid to server. */
-      pk.shm.cmd = SET_SHMID;
-      pk.shm.id = sd->shmid;
-      hpijs_put_pk(&pk, sd->fdc2s);
-      hpijs_get_pk(&pk, sd->fds2c);
-
-      return 0;
-
-    BUGOUT:
-      hpijs_close_srv(sd);
-      return -1;
-
-   } else
-   {				/* child */
-      /* Redirect print_stream to stdout. */
-      fd = fileno(prn_stream);
-      if (fd != STDOUT_FILENO)
-      {
-	 if (dup2(fd, STDOUT_FILENO) != STDOUT_FILENO)
-	    bug("unable redirect stdout: %m\n");
-      }
-      if (execlp(SRVPATH, SNAME, (char *) 0) < 0)
-      {
-	 bug("unable to exec %s: %m\n", SRVPATH);
-	 goto BUGOUT2;
-      }
-      exit(0);
-
-    BUGOUT2:
-      exit(EXIT_FAILURE);
-   }
-
-   return -1;
-}
-
-private int hpijs_spawn_srv(gx_device_hpijs *pdev, FILE * prn_stream, 
-			    const char *dname)
-{
-   PK pk;
-
-   hpijs_init_sd(&pdev->sd);
-   if (hpijs_open_srv(&pdev->sd, prn_stream, pdev->width * 3) < 0)
-   {
-      bug("unable to spawn server\n");
-      return -1;
-   }
-
-   pk.dev.cmd = SET_DEVICE_NAME;
-   strcpy(pk.dev.name, dname);
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-
-   pk.mode.cmd = SET_PRINTMODE;
-   pk.mode.val = pdev->PrintMode;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-
-   pk.paper.cmd = SET_PAPER;
-   pk.paper.size = gdev_pcl_paper_size((gx_device *)pdev);
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-
-   pk.res.cmd = SET_RESOLUTION;
-   pk.res.x = pdev->x_pixels_per_inch;
-   pk.res.y = pdev->y_pixels_per_inch;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-
-   pk.ppr.cmd = SET_PIXELS_PER_ROW;
-   pk.ppr.width = pdev->width;
-   pk.ppr.outwidth = pdev->width;      /* no simple pixel replication (scaling) */
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-
-#ifdef zero_and_no_warning
-/* API Test code. */
-   pk.ppr.cmd = GET_PRINTMODE;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("printmode=%d\n", pk.mode.val);
-
-   pk.ppr.cmd = GET_PRINTMODE_CNT;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("number of printmodes=%d\n", pk.mode.val);
-
-   pk.ppr.cmd = GET_PAPER;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("paper size=%d\n", pk.paper.size);
-
-   pk.ppr.cmd = GET_EFFECTIVE_RESOLUTION;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("eff resolution x=%d, y=%d\n", pk.res.x, pk.res.y);
-
-   pk.ppr.cmd = GET_PIXELS_PER_ROW;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("input width=%d, outwidth=%d\n", pk.ppr.width, pk.ppr.outwidth);
-
-   pk.ppr.cmd = GET_SRV_VERSION;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("hpijs server %s\n", pk.ver.str);
-
-   pk.ppr.cmd = GET_PRINTABLE_AREA;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("printable width=%.2f, height=%.2f (inches)\n", pk.parea.width, pk.parea.height);
-
-   pk.ppr.cmd = GET_PHYSICAL_PAGE_SIZE;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("physical page size x=%.2f, y=%.2f (inches)\n", pk.psize.x, pk.psize.y);
-
-   pk.ppr.cmd = GET_PRINTABLE_START;
-   hpijs_put_pk(&pk, pdev->sd.fdc2s);
-   hpijs_get_pk(&pk, pdev->sd.fds2c);	/* ack */
-   bug("printable start x=%.2f, y=%.2f (inches)\n", pk.pstart.x, pk.pstart.y);
-/* End API test code. */
-#endif
-
-   return 0;
-}
-
-private int hpijs_get_params(gx_device * pdev, gs_param_list * plist)
-{
-   int code = gdev_prn_get_params(pdev, plist);
-   int ecode;
-
-   if (code < 0)
-      return code;
-
-   if ((ecode = param_write_int(plist, "PrintMode",
-			&((gx_device_hpijs *)pdev)->PrintMode)) < 0)
-      code = ecode;
-
-   if ((ecode = param_write_string(plist, "DeviceName", &((gx_device_hpijs *)pdev)->DeviceName)) < 0)
-     code = ecode;
-
-   return code;
-}
-
-private int hpijs_put_params(gx_device * pdev, gs_param_list * plist)
-{
-   int ecode = 0;
-   int code;
-   gs_param_name param_name;
-   int pm = ((gx_device_hpijs *)pdev)->PrintMode;
-   gs_param_string dname = ((gx_device_hpijs *)pdev)->DeviceName;
-
-   switch (code = param_read_int(plist, (param_name = "PrintMode"), &pm))
-   {
-   case 0:
-      if (pm < 0 || pm > 6)
-	 ecode = gs_error_limitcheck;
-      else
-	 break;
-      goto jqe;
-   default:
-      ecode = code;
-    jqe:param_signal_error(plist, param_name, ecode);
-   case 1:
-      break;
-   }
-
-   if ((code = param_read_string(plist, (param_name = "DeviceName"), &dname)) < 0)
-     ecode = code;
-
-   if (ecode < 0)
-      return ecode;
-   code = gdev_prn_put_params(pdev, plist);
-   if (code < 0)
-      return code;
-
-   ((gx_device_hpijs *)pdev)->PrintMode = pm;
-   ((gx_device_hpijs *)pdev)->DeviceName = dname;
-   return 0;
-}
-
-private int hpijs_open(gx_device * pdev)
-{
-   static const float dj_a4[4] = { DESKJET_MARGINS_A4 };
-   static const float dj_letter[4] = { DESKJET_MARGINS_LETTER };
-   const float *m = NULL;
-
-   /* Make sure width does not exceed 8". */
-   if (pdev->width > (pdev->x_pixels_per_inch * 8))
-      gx_device_set_width_height(pdev, pdev->x_pixels_per_inch * 8,
-				 pdev->height);
-
-   m = (gdev_pcl_paper_size(pdev) == PAPER_SIZE_A4 ? dj_a4 : dj_letter);
-   gx_device_set_margins(pdev, m, true);
-
-   return gdev_prn_open(pdev);
-}
-
-private int hpijs_close(gx_device * pdev)
-{
-   hpijs_close_srv(&((gx_device_hpijs *) pdev)->sd);
-   return gdev_prn_close(pdev);
-}
-
-private int white(unsigned char *data, int size)
-{
-   int clean = 1;
-   int i;
-   for (i = 0; i < size; i++)
-      if (data[i] != 0xFF)
-      {
-	 clean = 0;
-	 break;
-      }
-   return clean;
-}
-
-private int dj630_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ630");
-}
-
-private int dj6xx_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ6xx");
-}
-
-private int dj6xx_photo_print_page(gx_device_printer * pdev,
-				   FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ6xxPhoto");
-}
-
-private int dj8xx_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ8xx");
-}
-
-private int dj9xx_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ9xx");
-}
-
-private int dj9xx_vip_print_page(gx_device_printer * pdev,
-				 FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "DJ9xxVIP");
-}
-
-private int ap21xx_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   return hpijs_print_page(pdev, prn_stream, "AP21xx");
-}
-
-private int hpijs_ext_print_page(gx_device_printer * pdev, FILE * prn_stream)
-{
-   char name[DEVICE_NAME_MAX];
-   int len;
-
-   len = ((gx_device_hpijs *)pdev)->DeviceName.size; 
-   if ((len == 0) || (len >= DEVICE_NAME_MAX))
-      return gs_note_error(gs_error_invalidaccess);
-   
-   strncpy(name, ((gx_device_hpijs *)pdev)->DeviceName.data, len);
-   name[len]=0;
-   return hpijs_print_page(pdev, prn_stream, name);
-}
-
-/* Send the page to the printer. */
-private int hpijs_print_page(gx_device_printer * pdev, FILE * prn_stream, const char *dname)
-{
-   int line_size;
-   int last_row;
-   int lnum, code = 0;
-   int isnew;
-
-   isnew = gdev_prn_file_is_new(pdev);
-
-   if (isnew)
-   {
-      if (hpijs_spawn_srv((gx_device_hpijs *)pdev, prn_stream, dname) != 0)
-	 return gs_note_error(gs_error_invalidaccess);
-   }
-
-   line_size = gx_device_raster((gx_device *)pdev, 0);
-   last_row = dev_print_scan_lines(pdev);
-
-   for (lnum = 0; lnum < last_row; lnum++)
-   {
-      code = gdev_prn_copy_scan_lines(pdev, lnum,
-				   ((gx_device_hpijs *) pdev)->sd.shmbuf,
-				   line_size);
-      if (code < 0)
-	 return -1;
-      if (!white(((gx_device_hpijs *)pdev)->sd.shmbuf, line_size))
-      {
-	if (hpijs_put_cmd(&((gx_device_hpijs *)pdev)->sd, SND_RASTER) == -1)
-	  return -1;
-      } else
-      {
-	  if (hpijs_put_cmd (&((gx_device_hpijs *)pdev)->sd, SND_NULL_RASTER) == -1)
-	    return -1;
-      }
-   }
-
-   hpijs_put_cmd(&((gx_device_hpijs *)pdev)->sd, NEW_PAGE);
-
-   return code;
-}

+ 0 - 178
sys/src/cmd/gs/src/gdevhpij.h

@@ -1,178 +0,0 @@
-/*
- * Hewlett-Packard Co. Inkjet Driver
- * Copyright (c) 2001, Hewlett-Packard Co.
- *
- * This ghostscript printer driver is the glue code for using the 
- * HP Inkjet Server (hpijs).
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/*
- * gdevhpij.h
- */
-
-#ifndef gdevhpij_INCLUDED
-#define gdevhpij_INCLUDED
-
-/*
- * The following defines come from hpijs models.h .
- */
-
-typedef enum { UNSUPPORTED=-1, 
-                    DJ400, 
-                    DJ540, 
-                    DJ600, 
-                    DJ6xx, 
-                    DJ6xxPhoto, 
-                    DJ8xx, 
-                    DJ9xx,
-                    DJ9xxVIP,
-                    DJ630,
-                    AP2100,
-                    HPIJS } PRINTER_TYPE;
-
-/*
- * The following defines come from hpijs hpijs.h .
- */
-
-#define SNAME "hpijs"
-#define SRVPATH "hpijs"	/* server path */
-
-#define DEVICE_NAME_MAX 16
-
-/* Packet commands. */
-typedef enum
-{
-   ACK = 1,
-   KILL,        /* kill server, no ack */
-   SET_SHMID,
-   SET_MODEL,
-   SET_PRINTMODE,
-   SET_PAPER,
-   SET_PIXELS_PER_ROW,
-   SND_RASTER,
-   SND_NULL_RASTER,
-   NEW_PAGE,
-   GET_MODEL,
-   GET_PRINTMODE,
-   GET_PRINTMODE_CNT,
-   GET_PAPER,
-   GET_RESOLUTION,
-   GET_EFFECTIVE_RESOLUTION,
-   GET_SRV_VERSION,
-   SET_RESOLUTION,
-   SET_DEVICE_NAME,
-   GET_PIXELS_PER_ROW,
-   GET_PRINTABLE_AREA,        /* in inches */
-   GET_PHYSICAL_PAGE_SIZE,    /* in inches */
-   GET_PRINTABLE_START        /* in inches */
-} PK_CMD;
-
-/* Individual packets. PK_CMD must be first in all packets. */
-typedef struct
-{
-   PK_CMD cmd;
-   int id;
-} PK_SHMID;
-
-typedef struct
-{
-   PK_CMD cmd;
-   int width;
-  int outwidth;
-} PK_PIXELS_PER_ROW;
-
-typedef struct
-{
-  PK_CMD cmd;
-  int val;
-} PK_MODEL;
-
-typedef PK_MODEL PK_MODE;
-
-typedef struct
-{
-  PK_CMD cmd;
-  int size;
-} PK_PAPER;
-
-typedef struct
-{
-  PK_CMD cmd;
-  int x;
-  int y;
-} PK_RESOLUTION;
-
-typedef struct
-{
-  PK_CMD cmd;
-  char name[DEVICE_NAME_MAX];
-} PK_DEVICE_NAME;
-
-typedef struct
-{
-  PK_CMD cmd;
-  char str[DEVICE_NAME_MAX];
-} PK_VERSION;
-
-typedef struct
-{
-   PK_CMD cmd;
-   float width;
-   float height;
-} PK_PRINTABLE_AREA;
-
-typedef struct
-{
-   PK_CMD cmd;
-   float x;
-   float y;
-} PK_PHYSICAL_PAGE_SIZE;
-
-typedef PK_PHYSICAL_PAGE_SIZE PK_PRINTABLE_START;
-
-/* Common packet. */
-typedef union
-{
-  PK_CMD cmd;
-  PK_SHMID shm;
-  PK_MODEL model;
-  PK_MODE mode;
-  PK_PAPER paper;
-  PK_RESOLUTION res;
-  PK_PIXELS_PER_ROW ppr;
-  PK_DEVICE_NAME dev;
-  PK_VERSION ver;
-  PK_PRINTABLE_AREA parea;
-  PK_PHYSICAL_PAGE_SIZE psize;
-  PK_PRINTABLE_START pstart;
-} PK;
-
-/* Server descriptor. */
-typedef struct
-{
-   int fds2c;   /* server to client */
-   int fdc2s;   /* client to server */
-   int shmid;
-   char *shmbuf;
-   char *srv_to_client;
-   char *client_to_srv;
-} SRVD;
-
-
-#endif        /* gdevhpij_INCLUDED */
-
-

+ 0 - 400
sys/src/cmd/gs/src/gdevht.c

@@ -1,400 +0,0 @@
-/* Copyright (C) 1995, 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevht.c,v 1.3 2000/09/19 19:00:13 lpd Exp $ */
-/* Halftoning device implementation */
-#include "gx.h"
-#include "gserrors.h"
-#include "gxdevice.h"
-#include "gdevht.h"
-#include "gxdcolor.h"
-#include "gxdcconv.h"
-#include "gxdither.h"
-
-/* The device procedures */
-private dev_proc_open_device(ht_open);
-private dev_proc_map_rgb_color(ht_map_rgb_color);
-private dev_proc_map_color_rgb(ht_map_color_rgb);
-private dev_proc_fill_rectangle(ht_fill_rectangle);
-private dev_proc_map_cmyk_color(ht_map_cmyk_color);
-private dev_proc_map_rgb_alpha_color(ht_map_rgb_alpha_color);
-private dev_proc_fill_path(ht_fill_path);
-private dev_proc_stroke_path(ht_stroke_path);
-private dev_proc_fill_mask(ht_fill_mask);
-private dev_proc_fill_trapezoid(ht_fill_trapezoid);
-private dev_proc_fill_parallelogram(ht_fill_parallelogram);
-private dev_proc_fill_triangle(ht_fill_triangle);
-private dev_proc_draw_thin_line(ht_draw_thin_line);
-private const gx_device_ht gs_ht_device =
-{std_device_dci_body(gx_device_ht, 0, "halftoner",
-		     0, 0, 1, 1,
-		     1, 8, 255, 0, 0, 0),
- {ht_open,
-  gx_forward_get_initial_matrix,
-  gx_forward_sync_output,
-  gx_forward_output_page,
-  gx_default_close_device,
-  ht_map_rgb_color,
-  ht_map_color_rgb,
-  ht_fill_rectangle,
-  gx_default_tile_rectangle,
-  gx_default_copy_mono,
-  gx_default_copy_color,
-  gx_default_draw_line,
-  gx_default_get_bits,
-  gx_forward_get_params,
-  gx_forward_put_params,
-  ht_map_cmyk_color,
-  gx_forward_get_xfont_procs,
-  gx_forward_get_xfont_device,
-  ht_map_rgb_alpha_color,
-  gx_forward_get_page_device,
-  gx_forward_get_alpha_bits,
-  gx_default_copy_alpha,
-  gx_forward_get_band,
-  gx_default_copy_rop,
-  ht_fill_path,
-  ht_stroke_path,
-  ht_fill_mask,
-  ht_fill_trapezoid,
-  ht_fill_parallelogram,
-  ht_fill_triangle,
-  ht_draw_thin_line,
-  gx_default_begin_image,
-  gx_default_image_data,
-  gx_default_end_image,
-  gx_default_strip_tile_rectangle,
-  gx_default_strip_copy_rop,
-  gx_forward_get_clipping_box,
-  gx_default_begin_typed_image,
-  gx_no_get_bits_rectangle,
-  gx_default_map_color_rgb_alpha,
-  gx_no_create_compositor,
-  gx_forward_get_hardware_params,
-  gx_default_text_begin,
-  gx_default_finish_copydevice
- }
-};
-
-/*
- * Define the packing of two target colors and a halftone level into
- * a gx_color_index.  Since C doesn't let us cast between a structure
- * and a scalar, we have to use explicit shifting and masking.
- */
-#define cx_color0(color) ((color) & htdev->color_mask)
-#define cx_color1(color) (((color) >> htdev->color_shift) & htdev->color_mask)
-#define cx_level(color) ((color) >> htdev->level_shift)
-#define cx_values(c0, c1, lev)\
-  ( ((lev) << htdev->level_shift) + ((c1) << htdev->color_shift) + (c0) )
-
-/* ---------------- Non-drawing procedures ---------------- */
-
-/* Open the device.  Right now we just make some error checks. */
-private int
-ht_open(gx_device * dev)
-{
-    gx_device_ht *htdev = (gx_device_ht *) dev;
-    const gx_device *target = htdev->target;
-    const gx_device_halftone *pdht = htdev->dev_ht;
-    int target_depth;
-    uint num_levels;
-
-    if (target == 0 || pdht == 0 || pdht->num_comp != 0)
-	return_error(gs_error_rangecheck);
-    /*
-     * Make sure we can fit a halftone level and two target colors
-     * into a gx_color_index.  If we're lucky, we can pack them into
-     * even less space.
-     */
-    target_depth = target->color_info.depth;
-    num_levels = pdht->order.num_levels;
-    {
-	int depth = target_depth * 2 + num_levels;
-
-	if (depth > sizeof(gx_color_index) * 8)
-	    return_error(gs_error_rangecheck);
-	/*
-	 * If there are too few halftone levels (fewer than 32),
-	 * we can't treat this device as contone.
-	 */
-	if (num_levels < 32)
-	    return_error(gs_error_rangecheck);
-	/* Set up color information. */
-	htdev->color_info.num_components = target->color_info.num_components;
-	htdev->color_info.depth = depth;
-	htdev->color_info.max_gray = num_levels - 1;
-	htdev->color_info.max_color = num_levels - 1;
-	htdev->color_info.dither_grays = num_levels;
-	htdev->color_info.dither_colors = num_levels;
-    }
-    htdev->color_shift = target_depth;
-    htdev->level_shift = target_depth * 2;
-    htdev->color_mask = ((gx_color_index) 1 << target_depth) - 1;
-    htdev->phase.x = imod(-htdev->ht_phase.x, pdht->lcm_width);
-    htdev->phase.y = imod(-htdev->ht_phase.y, pdht->lcm_height);
-    return 0;
-}
-
-/* Map from RGB or CMYK colors to the packed representation. */
-private gx_color_index
-ht_finish_map_color(const gx_device_ht * htdev, int code,
-		    const gx_device_color * pdevc)
-{
-    if (code < 0)
-	return gx_no_color_index;
-    if (gx_dc_is_pure(pdevc))
-	return cx_values(pdevc->colors.pure, 0, 0);
-    if (gx_dc_is_binary_halftone(pdevc))
-	return cx_values(pdevc->colors.binary.color[0],
-			 pdevc->colors.binary.color[1],
-			 pdevc->colors.binary.b_level);
-    lprintf("bad type in ht color mapping!");
-    return gx_no_color_index;
-}
-private gx_color_index
-ht_map_rgb_color(gx_device * dev, gx_color_value r, gx_color_value g,
-		 gx_color_value b)
-{
-    return ht_map_rgb_alpha_color(dev, r, g, b, gx_max_color_value);
-}
-private gx_color_index
-ht_map_cmyk_color(gx_device * dev, gx_color_value c, gx_color_value m,
-		  gx_color_value y, gx_color_value k)
-{
-    gx_device_ht *htdev = (gx_device_ht *) dev;
-    gx_device_color devc;
-    frac fc = cv2frac(k);
-    frac fk = cv2frac(k);
-    int code =
-    (c == m && m == y ?
-     gx_render_device_gray(color_cmyk_to_gray(fc, fc, fc, fk, NULL),
-			   gx_max_color_value,
-			   &devc, htdev->target, htdev->dev_ht,
-			   &htdev->ht_phase) :
-     gx_render_device_color(fc, cv2frac(m), cv2frac(y),
-			    fk, false, gx_max_color_value,
-			    &devc, htdev->target, htdev->dev_ht,
-			    &htdev->ht_phase));
-
-    return ht_finish_map_color(htdev, code, &devc);
-}
-private gx_color_index
-ht_map_rgb_alpha_color(gx_device * dev, gx_color_value r,
-		   gx_color_value g, gx_color_value b, gx_color_value alpha)
-{
-    gx_device_ht *htdev = (gx_device_ht *) dev;
-    gx_device_color devc;
-    int code =
-    (r == g && g == b ?
-     gx_render_device_gray(cv2frac(r), alpha,
-			   &devc, htdev->target, htdev->dev_ht,
-			   &htdev->ht_phase) :
-     gx_render_device_color(cv2frac(r), cv2frac(g), cv2frac(b),
-			    frac_0, false, alpha,
-			    &devc, htdev->target, htdev->dev_ht,
-			    &htdev->ht_phase));
-
-    return ht_finish_map_color(htdev, code, &devc);
-}
-
-/* Map back to an RGB color. */
-private int
-ht_map_color_rgb(gx_device * dev, gx_color_index color,
-		 gx_color_value prgb[3])
-{
-    gx_device_ht *htdev = (gx_device_ht *) dev;
-    gx_device *tdev = htdev->target;
-    gx_color_index color0 = cx_color0(color);
-    uint level = cx_level(color);
-
-    dev_proc_map_color_rgb((*map)) = dev_proc(tdev, map_color_rgb);
-
-    if (level == 0)
-	return (*map) (tdev, color0, prgb);
-    {
-	gx_color_index color1 = cx_color1(color);
-	gx_color_value rgb0[3], rgb1[3];
-	uint num_levels = htdev->dev_ht->order.num_levels;
-	int i;
-
-	(*map) (tdev, color0, rgb0);
-	(*map) (tdev, color1, rgb1);
-	for (i = 0; i < 3; ++i)
-	    prgb[i] = rgb0[i] +
-		(rgb1[i] - rgb0[i]) * (ulong) level / num_levels;
-	return 0;
-    }
-}
-
-/* ---------------- Drawing procedures ---------------- */
-
-/*
- * Map a (pure) contone color into a gx_device_color, either pure or
- * halftoned.  Return 0 if pure, 1 if halftoned, <0 if the original color
- * wasn't pure.  (This is not a driver procedure.)
- */
-private int
-ht_map_device_color(const gx_device_ht * htdev, gx_device_color * pdevc,
-		    const gx_device_color * pcdevc)
-{
-    if (!gx_dc_is_pure(pcdevc))
-	return -1;
-    {
-	gx_color_index color = pcdevc->colors.pure;
-	gx_color_index color0 = cx_color0(color);
-	uint level = cx_level(color);
-
-	if (level == 0) {
-	    color_set_pure(pdevc, color0);
-	    return 0;
-	} else {
-	    color_set_binary_halftone(pdevc, htdev->dev_ht, color0,
-				      cx_color1(color), level);
-	    color_set_phase(pdevc, htdev->phase.x, htdev->phase.y);
-	    return 1;
-	}
-    }
-}
-
-/* Fill a rectangle by tiling with a halftone. */
-private int
-ht_fill_rectangle(gx_device * dev, int x, int y, int w, int h,
-		  gx_color_index color)
-{
-    gx_device_ht *htdev = (gx_device_ht *) dev;
-    gx_device *tdev = htdev->target;
-    gx_color_index color0 = cx_color0(color);
-    uint level = cx_level(color);
-
-    if (level == 0)
-	return (*dev_proc(tdev, fill_rectangle))
-	    (tdev, x, y, w, h, color0);
-    {
-	const gx_ht_order *porder = &htdev->dev_ht->order;
-	gx_ht_cache *pcache = porder->cache;
-	gx_ht_tile *tile;
-
-	/* Ensure that the tile cache is current. */
-	if (pcache->order.bits != porder->bits)
-	    gx_ht_init_cache(pcache, porder);
-	/* Ensure that the tile we want is cached. */
-	tile = gx_render_ht(pcache, level);
-	if (tile == 0)
-	    return_error(gs_error_Fatal);
-	/* Fill the rectangle with the tile. */
-	return (*dev_proc(tdev, strip_tile_rectangle))
-	    (tdev, &tile->tiles, x, y, w, h, color0, cx_color1(color),
-	     htdev->phase.x, htdev->phase.y);
-    }
-}
-
-/*
- * Create a halftoned color if necessary for the high-level drawing
- * operations.
- */
-
-#define MAP_DRAWING_COLOR(proc, default_proc)\
-	gx_device_ht *htdev = (gx_device_ht *)dev;\
-	gx_device_color dcolor;\
-	gx_device *tdev;\
-	const gx_device_color *tdcolor;\
-\
-	if ( ht_map_device_color(htdev, &dcolor, pdcolor) < 0 )\
-	  tdev = dev, tdcolor = pdcolor, proc = default_proc;\
-	else\
-	  tdev = htdev->target, tdcolor = &dcolor,\
-	    proc = dev_proc(tdev, proc)
-
-private int
-ht_fill_path(gx_device * dev,
-	     const gs_imager_state * pis, gx_path * ppath,
-	     const gx_fill_params * params,
-	     const gx_drawing_color * pdcolor, const gx_clip_path * pcpath)
-{
-    dev_proc_fill_path((*fill_path));
-    MAP_DRAWING_COLOR(fill_path, gx_default_fill_path);
-    return (*fill_path) (tdev, pis, ppath, params, tdcolor, pcpath);
-}
-
-private int
-ht_stroke_path(gx_device * dev,
-	       const gs_imager_state * pis, gx_path * ppath,
-	       const gx_stroke_params * params,
-	       const gx_drawing_color * pdcolor, const gx_clip_path * pcpath)
-{
-    dev_proc_stroke_path((*stroke_path));
-    MAP_DRAWING_COLOR(stroke_path, gx_default_stroke_path);
-    return (*stroke_path) (tdev, pis, ppath, params, tdcolor, pcpath);
-}
-
-private int
-ht_fill_mask(gx_device * dev,
-	     const byte * data, int data_x, int raster, gx_bitmap_id id,
-	     int x, int y, int width, int height,
-	     const gx_drawing_color * pdcolor, int depth,
-	     gs_logical_operation_t lop, const gx_clip_path * pcpath)
-{
-    dev_proc_fill_mask((*fill_mask));
-    MAP_DRAWING_COLOR(fill_mask, gx_default_fill_mask);
-    return (*fill_mask) (tdev, data, data_x, raster, id, x, y,
-			 width, height, tdcolor, depth, lop, pcpath);
-}
-
-private int
-ht_fill_trapezoid(gx_device * dev,
-		  const gs_fixed_edge * left, const gs_fixed_edge * right,
-		  fixed ybot, fixed ytop, bool swap_axes,
-	       const gx_drawing_color * pdcolor, gs_logical_operation_t lop)
-{
-    dev_proc_fill_trapezoid((*fill_trapezoid));
-    MAP_DRAWING_COLOR(fill_trapezoid, gx_default_fill_trapezoid);
-    return (*fill_trapezoid) (tdev, left, right, ybot, ytop, swap_axes,
-			      tdcolor, lop);
-}
-
-private int
-ht_fill_parallelogram(gx_device * dev,
-		 fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,
-	       const gx_drawing_color * pdcolor, gs_logical_operation_t lop)
-{
-    dev_proc_fill_parallelogram((*fill_parallelogram));
-    MAP_DRAWING_COLOR(fill_parallelogram, gx_default_fill_parallelogram);
-    return (*fill_parallelogram) (tdev, px, py, ax, ay, bx, by,
-				  tdcolor, lop);
-}
-
-private int
-ht_fill_triangle(gx_device * dev,
-		 fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by,
-	       const gx_drawing_color * pdcolor, gs_logical_operation_t lop)
-{
-    dev_proc_fill_triangle((*fill_triangle));
-    MAP_DRAWING_COLOR(fill_triangle, gx_default_fill_triangle);
-    return (*fill_triangle) (tdev, px, py, ax, ay, bx, by,
-			     tdcolor, lop);
-}
-
-private int
-ht_draw_thin_line(gx_device * dev,
-		  fixed fx0, fixed fy0, fixed fx1, fixed fy1,
-	       const gx_drawing_color * pdcolor, gs_logical_operation_t lop)
-{
-    dev_proc_draw_thin_line((*draw_thin_line));
-    MAP_DRAWING_COLOR(draw_thin_line, gx_default_draw_thin_line);
-    return (*draw_thin_line) (tdev, fx0, fy0, fx1, fy1, tdcolor, lop);
-}

+ 0 - 46
sys/src/cmd/gs/src/gdevht.h

@@ -1,46 +0,0 @@
-/* Copyright (C) 1995, 1998 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevht.h,v 1.2 2000/09/19 19:00:13 lpd Exp $ */
-/* Halftoning "device" definitions */
-/* Requires gxdevice.h */
-
-#ifndef gdevht_INCLUDED
-#  define gdevht_INCLUDED
-
-#include "gzht.h"
-
-/*
- * A halftoning device converts between a non-halftoned device color space
- * (e.g., 8-bit gray) and a halftoned space (e.g., 1-bit black and white).
- * We represent colors by packing the two colors being halftoned and the
- * halftone level into a gx_color_index.
- */
-typedef struct gx_device_ht_s {
-    gx_device_forward_common;
-    /* Following + target are set before opening. */
-    const gx_device_halftone *dev_ht;
-    gs_int_point ht_phase;	/* halftone phase from gstate */
-    /* Following are computed when device is opened. */
-    int color_shift;		/* # of bits of color */
-    int level_shift;		/* = color_shift * 2 */
-    gx_color_index color_mask;	/* (1 << color_shift) - 1 */
-    gs_int_point phase;		/* halftone tile offset */
-} gx_device_ht;
-
-#endif /* gdevht_INCLUDED */

+ 0 - 1
sys/src/cmd/gs/src/gdevpdfd.c

@@ -682,7 +682,6 @@ image_line_to_clip(gx_device_pdf *pdev, byte *base, int x0, int x1, int y0, int
 	pprintld2(pdev->strm, "%ld %ld l h\n", xx, y1);
 	c += 4;
     }
-    return c;
 }
 
 private int

+ 0 - 373
sys/src/cmd/gs/src/gdevpdfe.c

@@ -1,373 +0,0 @@
-/* Copyright (C) 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevpdfe.c,v 1.10 2001/07/31 06:32:42 lpd Exp $ */
-/* Embedded font writing for pdfwrite driver. */
-#include "memory_.h"
-#include "string_.h"
-#include "gx.h"
-#include "gserrors.h"
-#include "gsmatrix.h"
-#include "gxfcid.h"
-#include "gxfont.h"
-#include "gxfont0.h"
-#include "gdevpdfx.h"
-#include "gdevpdff.h"
-#include "gdevpsf.h"
-#include "scommon.h"
-
-/* ---------------- Utilities ---------------- */
-
-/* Begin writing FontFile* data. */
-private int
-pdf_begin_fontfile(gx_device_pdf *pdev, long FontFile_id,
-		   const char *entries, long len1, pdf_data_writer_t *pdw)
-{
-    stream *s;
-
-    pdf_open_separate(pdev, FontFile_id);
-    s = pdev->strm;
-    stream_puts(s, "<<");
-    if (entries)
-	stream_puts(pdev->strm, entries);
-    if (len1 >= 0)
-	pprintld1(pdev->strm, "/Length1 %ld", len1);
-    return pdf_begin_data(pdev, pdw);
-}
-
-/* Finish writing FontFile* data. */
-private int
-pdf_end_fontfile(gx_device_pdf *pdev, pdf_data_writer_t *pdw)
-{
-    return pdf_end_data(pdw);
-}
-
-/* ---------------- Individual font types ---------------- */
-
-/* ------ Type 1 family ------ */
-
-/*
- * Acrobat Reader apparently doesn't accept CFF fonts with Type 1
- * CharStrings, so we need to convert them.  Also remove lenIV,
- * so Type 2 fonts will compress better.
- */
-#define TYPE2_OPTIONS (WRITE_TYPE2_NO_LENIV | WRITE_TYPE2_CHARSTRINGS)
-
-/* Write the FontFile[3] data for an embedded Type 1, Type 2, or */
-/* CIDFontType 0 font. */
-private int
-pdf_embed_font_as_type1(gx_device_pdf *pdev, gs_font_type1 *font,
-			long FontFile_id, gs_glyph subset_glyphs[256],
-			uint subset_size, const gs_const_string *pfname)
-{
-    stream poss;
-    int lengths[3];
-    int code;
-    pdf_data_writer_t writer;
-#define MAX_INT_CHARS ((sizeof(int) * 8 + 2) / 3)
-    char lengths_str[9 + MAX_INT_CHARS + 11];  /* /Length2 %d/Length3 0\0 */
-#undef MAX_INT_CHARS
-
-    swrite_position_only(&poss);
-    /*
-     * We omit the 512 zeros and the cleartomark, and set Length3 to 0.
-     * Note that the interpreter adds them implicitly (per documentation),
-     * so we must set MARK so that the encrypted portion pushes a mark on
-     * the stack.
-     *
-     * NOTE: the options were set to 0 in the first checked-in version of
-     * this file.  We can't explain this: Acrobat Reader requires eexec
-     * encryption, so the code can't possibly have worked.
-     *
-     * Acrobat Reader 3 allows lenIV = -1 in Type 1 fonts, but Acrobat
-     * Reader 4 doesn't.  Therefore, we can't allow it.
-     */
-#define TYPE1_OPTIONS (WRITE_TYPE1_EEXEC | WRITE_TYPE1_EEXEC_MARK |\
-		       WRITE_TYPE1_WITH_LENIV)
-    code = psf_write_type1_font(&poss, font, TYPE1_OPTIONS,
-				 subset_glyphs, subset_size, pfname, lengths);
-    if (code < 0)
-	return code;
-    sprintf(lengths_str, "/Length2 %d/Length3 0", lengths[1]);
-    code = pdf_begin_fontfile(pdev, FontFile_id, lengths_str, lengths[0],
-			      &writer);
-    if (code < 0)
-	return code;
-    code = psf_write_type1_font(writer.binary.strm, font, TYPE1_OPTIONS,
-				subset_glyphs, subset_size, pfname,
-				lengths /*ignored*/);
-#undef TYPE1_OPTIONS
-    pdf_end_fontfile(pdev, &writer);
-    return code;
-}
-
-/* Embed a font as Type 2. */
-private int
-pdf_embed_font_as_type2(gx_device_pdf *pdev, gs_font_type1 *font,
-			long FontFile_id, gs_glyph subset_glyphs[256],
-			uint subset_size, const gs_const_string *pfname)
-{
-    int code;
-    pdf_data_writer_t writer;
-    int options = TYPE2_OPTIONS |
-	(pdev->CompatibilityLevel < 1.3 ? WRITE_TYPE2_AR3 : 0);
-
-    code = pdf_begin_fontfile(pdev, FontFile_id, "/Subtype/Type1C", -1L,
-			      &writer);
-    if (code < 0)
-	return code;
-    code = psf_write_type2_font(writer.binary.strm, font, options,
-				subset_glyphs, subset_size, pfname);
-    pdf_end_fontfile(pdev, &writer);
-    return code;
-}
-
-/* Embed a Type 1 or Type 2 font. */
-private int
-pdf_embed_font_type1(gx_device_pdf *pdev, gs_font_type1 *font,
-		     long FontFile_id, gs_glyph subset_glyphs[256],
-		     uint subset_size, const gs_const_string *pfname)
-{
-    switch (((const gs_font *)font)->FontType) {
-    case ft_encrypted:
-	if (pdev->CompatibilityLevel < 1.2)
-	    return pdf_embed_font_as_type1(pdev, font, FontFile_id,
-					   subset_glyphs, subset_size, pfname);
-	/* For PDF 1.2 and later, write Type 1 fonts as Type1C. */
-    case ft_encrypted2:
-	return pdf_embed_font_as_type2(pdev, font, FontFile_id,
-				       subset_glyphs, subset_size, pfname);
-    default:
-	return_error(gs_error_rangecheck);
-    }
-}
-
-/* Embed a CIDFontType0 font. */
-private int
-pdf_embed_font_cid0(gx_device_pdf *pdev, gs_font_cid0 *font,
-		    long FontFile_id, const byte *subset_cids,
-		    uint subset_size, const gs_const_string *pfname)
-{
-    int code;
-    pdf_data_writer_t writer;
-
-    if (pdev->CompatibilityLevel < 1.2)
-	return_error(gs_error_rangecheck);
-    code = pdf_begin_fontfile(pdev, FontFile_id, "/Subtype/CIDFontType0C", -1L,
-			      &writer);
-    if (code < 0)
-	return code;
-    code = psf_write_cid0_font(writer.binary.strm, font, TYPE2_OPTIONS,
-			       subset_cids, subset_size, pfname);
-    pdf_end_fontfile(pdev, &writer);
-    return code;
-}
-
-/* ------ TrueType family ------ */
-
-/* Embed a TrueType font. */
-private int
-pdf_embed_font_type42(gx_device_pdf *pdev, gs_font_type42 *font,
-		      long FontFile_id, gs_glyph subset_glyphs[256],
-		      uint subset_size, const gs_const_string *pfname)
-{
-    /* Acrobat Reader 3 doesn't handle cmap format 6 correctly. */
-    const int options = WRITE_TRUETYPE_CMAP | WRITE_TRUETYPE_NAME |
-	(pdev->CompatibilityLevel <= 1.2 ?
-	 WRITE_TRUETYPE_NO_TRIMMED_TABLE : 0);
-    stream poss;
-    int code;
-    pdf_data_writer_t writer;
-
-    swrite_position_only(&poss);
-    code = psf_write_truetype_font(&poss, font, options,
-				   subset_glyphs, subset_size, pfname);
-    if (code < 0)
-	return code;
-    code = pdf_begin_fontfile(pdev, FontFile_id, NULL, stell(&poss), &writer);
-    if (code < 0)
-	return code;
-    psf_write_truetype_font(writer.binary.strm, font, options,
-			    subset_glyphs, subset_size, pfname);
-    pdf_end_fontfile(pdev, &writer);
-    return 0;
-}
-
-/* Embed a CIDFontType2 font. */
-private int
-pdf_embed_font_cid2(gx_device_pdf *pdev, gs_font_cid2 *font,
-		    long FontFile_id, const byte *subset_bits,
-		    uint subset_size, const gs_const_string *pfname)
-{
-    /* CIDFontType 2 fonts don't use cmap, name, OS/2, or post. */
-#define OPTIONS 0
-    int code;
-    pdf_data_writer_t writer;
-
-    code = pdf_begin_fontfile(pdev, FontFile_id, NULL, -1L, &writer);
-    if (code < 0)
-	return code;
-    psf_write_cid2_font(writer.binary.strm, font, OPTIONS,
-			subset_bits, subset_size, pfname);
-#undef OPTIONS
-    pdf_end_fontfile(pdev, &writer);
-    return 0;
-}
-
-/* ---------------- Entry point ---------------- */
-
-/*
- * Write the FontDescriptor and FontFile* data for an embedded font.
- * Return a rangecheck error if the font can't be embedded.
- */
-int
-pdf_write_embedded_font(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
-{
-    gs_font *font = pfd->base_font;
-    gs_const_string font_name;
-    byte *fnchars = pfd->FontName.chars;
-    uint fnsize = pfd->FontName.size;
-    bool do_subset;
-    long FontFile_id = pfd->FontFile_id;
-    gs_glyph subset_glyphs[256];
-    gs_glyph *subset_list = 0;	/* for non-CID fonts */
-    byte *subset_bits = 0;	/* for CID fonts */
-    uint subset_size = 0;
-    gs_matrix save_mat;
-    int code;
-
-    /* Determine whether to subset the font. */
-    switch (pfd->do_subset) {
-    case FONT_SUBSET_OK:
-	do_subset = pdev->params.SubsetFonts && pdev->params.MaxSubsetPct > 0;
-	break;
-    case FONT_SUBSET_YES:
-	do_subset = true;
-	break;
-    case FONT_SUBSET_NO:
-	do_subset = false;
-	break;
-    }
-    if (do_subset) {
-	int max_pct = pdev->params.MaxSubsetPct;
-	int used, i;
-
-	for (i = 0, used = 0; i < pfd->chars_used.size; ++i)
-	    used += byte_count_bits[pfd->chars_used.data[i]];
-	/*
-	 * We want to subset iff used / total <= MaxSubsetPct / 100, i.e.,
-	 * iff total >= used * 100 / MaxSubsetPct.  This observation
-	 * allows us to stop the enumeration loop early.
-	 */
-	if (max_pct < 100) {
-	    do_subset = false;
-	    if (max_pct > 0) {
-		int max_total = used * 100 / max_pct;
-		int index, total;
-		gs_glyph ignore_glyph;
-
-		for (index = 0, total = 0;
-		     (font->procs.enumerate_glyph(font, &index,
-						  GLYPH_SPACE_INDEX,
-						  &ignore_glyph), index != 0);
-		     )
-		    if (++total >= max_total) {
-			do_subset = true;
-			break;
-		    }
-	    }
-	}
-    }
-
-    /* Generate an appropriate font name. */
-    if (pdf_has_subset_prefix(fnchars, fnsize)) {
-	/* Strip off any existing subset prefix. */
-	fnsize -= SUBSET_PREFIX_SIZE;
-	memmove(fnchars, fnchars + SUBSET_PREFIX_SIZE, fnsize);
-    }
-    if (do_subset) {
-	memmove(fnchars + SUBSET_PREFIX_SIZE, fnchars, fnsize);
-	pdf_make_subset_prefix(pdev, fnchars, FontFile_id);
-	fnsize += SUBSET_PREFIX_SIZE;
-    }
-    font_name.data = fnchars;
-    font_name.size = pfd->FontName.size = fnsize;
-    code = pdf_write_FontDescriptor(pdev, pfd);
-    if (code >= 0) {
-	pfd->written = true;
-
-	/*
-	 * Finally, write the font (or subset), using the original
-	 * (unscaled) FontMatrix.
-	 */
-	save_mat = font->FontMatrix;
-	font->FontMatrix = pfd->orig_matrix;
-	switch (font->FontType) {
-	case ft_composite:
-	    /* Nothing to embed -- the descendant fonts do it all. */
-	    break;
-	case ft_encrypted:
-	case ft_encrypted2:
-	    if (do_subset) {
-		subset_size = psf_subset_glyphs(subset_glyphs, font,
-						pfd->chars_used.data);
-		subset_list = subset_glyphs;
-	    }
-	    code = pdf_embed_font_type1(pdev, (gs_font_type1 *)font,
-					FontFile_id, subset_list,
-					subset_size, &font_name);
-	    break;
-	case ft_TrueType:
-	    if (do_subset) {
-		subset_size = psf_subset_glyphs(subset_glyphs, font,
-						pfd->chars_used.data);
-		subset_list = subset_glyphs;
-	    }
-	    code = pdf_embed_font_type42(pdev, (gs_font_type42 *)font,
-					 FontFile_id, subset_list,
-					 subset_size, &font_name);
-	    break;
-	case ft_CID_encrypted:
-	    if (do_subset) {
-		subset_size = pfd->chars_used.size << 3;
-		subset_bits = pfd->chars_used.data;
-	    }
-	    code = pdf_embed_font_cid0(pdev, (gs_font_cid0 *)font,
-				       FontFile_id, subset_bits,
-				       subset_size, &font_name);
-	    break;
-	case ft_CID_TrueType:
-	    if (do_subset) {
-		/*
-		 * Note that the subset mask for CIDFontType 2 fonts is
-		 * indexed by the TrueType glyph number, not the CID.
-		 */
-		subset_size = pfd->glyphs_used.size << 3;
-		subset_bits = pfd->glyphs_used.data;
-	    }
-	    code = pdf_embed_font_cid2(pdev, (gs_font_cid2 *)font,
-				       FontFile_id, subset_bits,
-				       subset_size, &font_name);
-	    break;
-	default:
-	    code = gs_note_error(gs_error_rangecheck);
-	}
-	font->FontMatrix = save_mat;
-    }
-    return code;
-}

+ 0 - 1400
sys/src/cmd/gs/src/gdevpdff.c

@@ -1,1400 +0,0 @@
-/* Copyright (C) 1999, 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevpdff.c,v 1.22 2001/10/05 05:40:41 lpd Exp $ */
-/* Font handling for pdfwrite driver. */
-#include "ctype_.h"
-#include "math_.h"
-#include "memory_.h"
-#include "string_.h"
-#include <stdlib.h>
-#include "gx.h"
-#include "gserrors.h"
-#include "gsmalloc.h"		/* for patching font memory */
-#include "gsmatrix.h"
-#include "gspath.h"
-#include "gsutil.h"		/* for bytes_compare */
-#include "gxfixed.h"		/* for gxfcache.h */
-#include "gxfont.h"
-#include "gxfcache.h"		/* for orig_fonts list */
-#include "gxfcid.h"
-#include "gxfont1.h"
-#include "gxfont42.h"
-#include "gxpath.h"		/* for getting current point */
-#include "gdevpdfx.h"
-#include "gdevpdff.h"
-#include "gdevpdfo.h"
-#include "gdevpsf.h"
-#include "scommon.h"
-
-/*
- * In our quest to work around Acrobat Reader quirks, we're resorting to
- * making all font names in the output unique by adding a suffix derived
- * from the PDF object number.  We hope to get rid of this someday....
- */
-private const bool MAKE_FONT_NAMES_UNIQUE = true;
-
-/* GC descriptors */
-public_st_pdf_font();
-public_st_pdf_char_proc();
-public_st_pdf_font_descriptor();
-private_st_pdf_encoding_element();
-private ENUM_PTRS_WITH(pdf_encoding_elt_enum_ptrs, pdf_encoding_element_t *pe) {
-    uint count = size / (uint)sizeof(*pe);
-
-    if (index >= count)
-	return 0;
-    return ENUM_CONST_STRING(&pe[index].str);
-} ENUM_PTRS_END
-private RELOC_PTRS_WITH(pdf_encoding_elt_reloc_ptrs, pdf_encoding_element_t *pe)
-    uint count = size / (uint)sizeof(*pe);
-    uint i;
-
-    for (i = 0; i < count; ++i)
-	RELOC_CONST_STRING_VAR(pe[i].str);
-RELOC_PTRS_END
-
-/* Define the 14 standard built-in fonts. */
-const pdf_standard_font_t pdf_standard_fonts[] = {
-#define m(name, enc) {name, enc},
-    pdf_do_std_fonts(m)
-#undef m
-    {0}
-};
-
-/* ---------------- Embedding status ---------------- */
-
-/* Return the index of a standard font name, or -1 if missing. */
-int
-pdf_find_standard_font(const byte *str, uint size)
-{
-    const pdf_standard_font_t *ppsf;
-
-    for (ppsf = pdf_standard_fonts; ppsf->fname; ++ppsf)
-	if (strlen(ppsf->fname) == size &&
-	    !strncmp(ppsf->fname, (const char *)str, size)
-	    )
-	    return ppsf - pdf_standard_fonts;
-    return -1;
-}
-
-/*
- * If there is a standard font with the same appearance (CharStrings,
- * Private, WeightVector) as the given font, set *psame to the mask of
- * identical properties, and return the standard-font index; otherwise,
- * set *psame to 0 and return -1.
- */
-private int
-find_std_appearance(const gx_device_pdf *pdev, const gs_font_base *bfont,
-		    int mask, int *psame)
-{
-    bool has_uid = uid_is_UniqueID(&bfont->UID) && bfont->UID.id != 0;
-    const pdf_std_font_t *psf = pdev->std_fonts;
-    int i;
-
-    mask |= FONT_SAME_OUTLINES;
-    for (i = 0; i < PDF_NUM_STD_FONTS; ++psf, ++i) {
-	if (has_uid) {
-	    if (!uid_equal(&bfont->UID, &psf->uid))
-		continue;
-	    if (!psf->font) {
-		/*
-		 * Identity of UIDs is supposed to guarantee that the
-		 * fonts have the same outlines and metrics.
-		 */
-		*psame = FONT_SAME_OUTLINES | FONT_SAME_METRICS;
-		return i;
-	    }
-	}
-	if (psf->font) {
-	    int same = *psame =
-		bfont->procs.same_font((const gs_font *)bfont, psf->font,
-				       mask);
-
-	    if (same & FONT_SAME_OUTLINES)
-		return i;
-	}
-    }
-    *psame = 0;
-    return -1;
-}
-
-/*
- * We register the fonts in pdev->std_fonts so that the pointers can
- * be weak (get set to 0 when the font is freed).
- */
-private GS_NOTIFY_PROC(pdf_std_font_notify_proc);
-typedef struct pdf_std_font_notify_s {
-    gx_device_pdf *pdev;
-    int index;			/* in std_fonts */
-    gs_font *font;	/* for checking */
-} pdf_std_font_notify_t;
-gs_private_st_ptrs2(st_pdf_std_font_notify, pdf_std_font_notify_t,
-		    "pdf_std_font_notify_t",
-		    pdf_std_font_notify_enum_ptrs,
-		    pdf_std_font_notify_reloc_ptrs,
-		    pdev, font);
-private int
-pdf_std_font_notify_proc(void *vpsfn /*proc_data*/, void *event_data)
-{
-    pdf_std_font_notify_t *const psfn = vpsfn;
-    gx_device_pdf *const pdev = psfn->pdev;
-    gs_font *const font = psfn->font;
-
-    if (event_data)
-	return 0;		/* unknown event */
-    if_debug4('_',
-	      "[_]  notify 0x%lx: gs_font 0x%lx, id %ld, index=%d\n",
-	      (ulong)psfn, (ulong)font, font->id, psfn->index);
-#ifdef DEBUG
-    if (pdev->std_fonts[psfn->index].font != font)
-	lprintf3("pdf_std_font_notify font = 0x%lx, std_fonts[%d] = 0x%lx\n",
-		 (ulong)font, psfn->index,
-		 (ulong)pdev->std_fonts[psfn->index].font);
-    else
-#endif
-	pdev->std_fonts[psfn->index].font = 0;
-    gs_font_notify_unregister(font, pdf_std_font_notify_proc, vpsfn);
-    gs_free_object(pdev->pdf_memory, vpsfn, "pdf_std_font_notify_proc");
-    return 0;
-}
-
-/* Unregister the standard fonts when cleaning up. */
-private void
-pdf_std_font_unreg_proc(void *vpsfn /*proc_data*/)
-{
-    pdf_std_font_notify_proc(vpsfn, NULL);
-}
-void
-pdf_unregister_fonts(gx_device_pdf *pdev)
-{
-    int j;
-
-    for (j = 0; j < PDF_NUM_STD_FONTS; ++j)
-	if (pdev->std_fonts[j].font != 0)
-	    gs_notify_unregister_calling(&pdev->std_fonts[j].font->notify_list,
-					 pdf_std_font_notify_proc, NULL,
-					 pdf_std_font_unreg_proc);
-}
-
-/*
- * Scan a font directory for standard fonts.  Return true if any new ones
- * were found.
- */
-private bool
-scan_for_standard_fonts(gx_device_pdf *pdev, const gs_font_dir *dir)
-{
-    bool found = false;
-    gs_font *orig = dir->orig_fonts;
-
-    for (; orig; orig = orig->next) {
-	gs_font_base *obfont;
-
-	if (orig->FontType == ft_composite || !orig->is_resource)
-	    continue;
-	obfont = (gs_font_base *)orig;
-	if (uid_is_UniqueID(&obfont->UID)) {
-	    /* Is it one of the standard fonts? */
-	    int i = pdf_find_standard_font(orig->key_name.chars,
-					   orig->key_name.size);
-	    pdf_std_font_t *psf;
-
-	    if (i >= 0 && (psf = &pdev->std_fonts[i])->font == 0) {
-		pdf_std_font_notify_t *psfn =
-		    gs_alloc_struct(pdev->pdf_memory, pdf_std_font_notify_t,
-				    &st_pdf_std_font_notify,
-				    "scan_for_standard_fonts");
-
-		if (psfn == 0)
-		    continue;	/* can't register */
-		psfn->pdev = pdev;
-		psfn->index = i;
-		psfn->font = orig;
-		if_debug4('_',
-			  "[_]register 0x%lx: gs_font 0x%lx, id %ld, index=%d\n",
-			  (ulong)psfn, (ulong)orig, orig->id, i);
-		gs_font_notify_register(orig, pdf_std_font_notify_proc, psfn);
-		psf->font = orig;
-		psf->orig_matrix = obfont->FontMatrix;
-		psf->uid = obfont->UID;
-		found = true;
-	    }
-	}
-    }
-    return found;
-}
-
-/*
- * Determine the embedding status of a font.  If the font is in the base
- * 14, store its index (0..13) in *pindex, otherwise store -1 there.
- */
-private bool
-font_is_symbolic(const gs_font *font)
-{
-    if (font->FontType == ft_composite)
-	return true;		/* arbitrary */
-    switch (((const gs_font_base *)font)->nearest_encoding_index) {
-    case ENCODING_INDEX_STANDARD:
-    case ENCODING_INDEX_ISOLATIN1:
-    case ENCODING_INDEX_WINANSI:
-    case ENCODING_INDEX_MACROMAN:
-	return false;
-    default:
-	return true;
-    }
-}
-private bool
-embed_list_includes(const gs_param_string_array *psa, const byte *chars,
-		    uint size)
-{
-    uint i;
-
-    for (i = 0; i < psa->size; ++i)
-	if (!bytes_compare(psa->data[i].data, psa->data[i].size, chars, size))
-	    return true;
-    return false;
-}
-pdf_font_embed_t
-pdf_font_embed_status(gx_device_pdf *pdev, gs_font *font, int *pindex,
-		      int *psame)
-{
-    const byte *chars = font->font_name.chars;
-    uint size = font->font_name.size;
-
-    /*
-     * The behavior of Acrobat Distiller changed between 3.0 (PDF 1.2),
-     * which will never embed the base 14 fonts, and 4.0 (PDF 1.3), which
-     * doesn't treat them any differently from any other fonts.
-     */
-    if (pdev->CompatibilityLevel < 1.3) {
-	/* Check whether the font is in the base 14. */
-	int index = pdf_find_standard_font(chars, size);
-
-	if (index >= 0) {
-	    *pindex = index;
-	    if (font->is_resource) {
-		*psame = ~0;
-		return FONT_EMBED_STANDARD;
-	    } else if (font->FontType != ft_composite &&
-		       find_std_appearance(pdev, (gs_font_base *)font, -1,
-					   psame) == index)
-		return FONT_EMBED_STANDARD;
-	}
-    }
-    *pindex = -1;
-    *psame = 0;
-    /* Check the Embed lists. */
-    if (embed_list_includes(&pdev->params.NeverEmbed, chars, size))
-	return FONT_EMBED_NO;
-    if (pdev->params.EmbedAllFonts || font_is_symbolic(font) ||
-	embed_list_includes(&pdev->params.AlwaysEmbed, chars, size))
-	return FONT_EMBED_YES;
-    return FONT_EMBED_NO;
-}
-
-/* ---------------- Everything else ---------------- */
-
-/*
- * Compute and return the orig_matrix of a font.
- */
-int
-pdf_font_orig_matrix(const gs_font *font, gs_matrix *pmat)
-{
-    switch (font->FontType) {
-    case ft_composite:		/* subfonts have their own FontMatrix */
-    case ft_TrueType:
-    case ft_CID_TrueType:
-	/* The TrueType FontMatrix is 1 unit per em, which is what we want. */
-	gs_make_identity(pmat);
-	break;
-    case ft_encrypted:
-    case ft_encrypted2:
-    case ft_CID_encrypted:
-	/*
-	 * Type 1 fonts are supposed to use a standard FontMatrix of
-	 * [0.001 0 0 0.001 0 0], with a 1000-unit cell.  However,
-	 * Windows NT 4.0 creates Type 1 fonts, apparently derived from
-	 * TrueType fonts, that use a 2048-unit cell and corresponding
-	 * FontMatrix.  Detect and correct for this here.
-	 */
-	{
-	    const gs_font *base_font = font;
-	    double scale;
-
-	    while (base_font->base != base_font)
-		base_font = base_font->base;
-	    if (base_font->FontMatrix.xx == 1.0/2048 &&
-		base_font->FontMatrix.xy == 0 &&
-		base_font->FontMatrix.yx == 0 &&
-		base_font->FontMatrix.yy == 1.0/2048
-		)
-		scale = 1.0/2048;
-	    else
-		scale = 0.001;
-	    gs_make_scaling(scale, scale, pmat);
-	}
-	break;
-    default:
-	return_error(gs_error_rangecheck);
-    }
-    return 0;
-}
-
-/*
- * Find the original (unscaled) standard font corresponding to an
- * arbitrary font, if any.  Return its index in standard_fonts, or -1.
- */
-int
-pdf_find_orig_font(gx_device_pdf *pdev, gs_font *font, gs_matrix *pfmat)
-{
-    bool scan = true;
-    int i;
-
-    if (font->FontType == ft_composite)
-	return -1;
-    for (;; font = font->base) {
-	gs_font_base *bfont = (gs_font_base *)font;
-	int same;
-
-	/* Look for a standard font with the same appearance. */
-	i = find_std_appearance(pdev, bfont, 0, &same);
-	if (i >= 0)
-	    break;
-	if (scan) {
-	    /* Scan for fonts with any of the standard names that */
-	    /* have a UID. */
-	    bool found = scan_for_standard_fonts(pdev, font->dir);
-
-	    scan = false;
-	    if (found) {
-		i = find_std_appearance(pdev, bfont, 0, &same);
-		if (i >= 0)
-		    break;
-	    }
-	}
-	if (font->base == font)
-	    return -1;
-    }
-    *pfmat = pdev->std_fonts[i].orig_matrix;
-    return i;
-}
-
-/*
- * Determine the resource type (resourceFont or resourceCIDFont) for
- * a font.
- */
-pdf_resource_type_t
-pdf_font_resource_type(const gs_font *font)
-{
-    switch (font->FontType) {
-    case ft_CID_encrypted:	/* CIDFontType 0 */
-    case ft_CID_user_defined:	/* CIDFontType 1 */
-    case ft_CID_TrueType:	/* CIDFontType 2 */
-    case ft_CID_bitmap:		/* CIDFontType 4 */
-	return resourceCIDFont;
-    default:
-	return resourceFont;
-    }
-}
-
-/*
- * Determine the chars_count (number of entries in chars_used and Widths)
- * for a font.  For CIDFonts, this is CIDCount.
- */
-private int
-pdf_font_chars_count(const gs_font *font)
-{
-    switch (font->FontType) {
-    case ft_composite:
-	/* Composite fonts don't use chars_used or Widths. */
-	return 0;
-    case ft_CID_encrypted:
-	return ((const gs_font_cid0 *)font)->cidata.common.CIDCount;
-    case ft_CID_TrueType:
-	return ((const gs_font_cid2 *)font)->cidata.common.CIDCount;
-    default:
-	return 256;		/* Encoding size */
-    }
-}
-
-/*
- * Determine the glyphs_count (number of entries in glyphs_used) for a font.
- * This is only non-zero for TrueType-based fonts.
- */
-private int
-pdf_font_glyphs_count(const gs_font *font)
-{
-    switch (font->FontType) {
-    case ft_TrueType:
-    case ft_CID_TrueType:
-	return ((const gs_font_type42 *)font)->data.numGlyphs;
-    default:
-	return 0;
-    }
-}
-
-/*
- * Allocate a font resource.  If pfd != 0, a FontDescriptor is allocated,
- * with its id, values, and chars_count taken from *pfd_in.
- * If font != 0, its FontType is used to determine whether the resource
- * is of type Font or of (pseudo-)type CIDFont; in this case, pfres->font
- * and pfres->FontType are also set.
- */
-int
-pdf_alloc_font(gx_device_pdf *pdev, gs_id rid, pdf_font_t **ppfres,
-	       const pdf_font_descriptor_t *pfd_in, gs_font *font)
-{
-    gs_memory_t *mem = pdev->v_memory;
-    pdf_font_descriptor_t *pfd = 0;
-    pdf_resource_type_t rtype = resourceFont;
-    gs_string chars_used, glyphs_used;
-    int *Widths = 0;
-    byte *widths_known = 0;
-    ushort *CIDToGIDMap = 0;
-    int code;
-    pdf_font_t *pfres;
-
-    chars_used.data = 0;
-    glyphs_used.data = 0;
-    if (pfd_in) {
-	uint chars_count = pfd_in->chars_count;
-	uint glyphs_count = pfd_in->glyphs_count;
-
-	code = pdf_alloc_resource(pdev, resourceFontDescriptor,
-				  pfd_in->rid, (pdf_resource_t **)&pfd, 0L);
-	if (code < 0)
-	    return code;
-	chars_used.size = (chars_count + 7) >> 3;
-	chars_used.data = gs_alloc_string(mem, chars_used.size,
-					  "pdf_alloc_font(chars_used)");
-	if (chars_used.data == 0)
-	    goto vmfail;
-	if (glyphs_count) {
-	    glyphs_used.size = (glyphs_count + 7) >> 3;
-	    glyphs_used.data = gs_alloc_string(mem, glyphs_used.size,
-					       "pdf_alloc_font(glyphs_used)");
-	    if (glyphs_used.data == 0)
-		goto vmfail;
-	    memset(glyphs_used.data, 0, glyphs_used.size);
-	}
-	memset(chars_used.data, 0, chars_used.size);
-	pfd->values = pfd_in->values;
-	pfd->chars_count = chars_count;
-	pfd->chars_used = chars_used;
-	pfd->glyphs_count = glyphs_count;
-	pfd->glyphs_used = glyphs_used;
-	pfd->do_subset = FONT_SUBSET_OK;
-	pfd->FontFile_id = 0;
-	pfd->base_font = 0;
-	pfd->notified = false;
-	pfd->written = false;
-    }
-    if (font) {
-	uint chars_count = pdf_font_chars_count(font);
-	uint widths_known_size = (chars_count + 7) >> 3;
-
-	Widths = (void *)gs_alloc_byte_array(mem, chars_count, sizeof(*Widths),
-					     "pdf_alloc_font(Widths)");
-	widths_known = gs_alloc_bytes(mem, widths_known_size,
-				      "pdf_alloc_font(widths_known)");
-	if (Widths == 0 || widths_known == 0)
-	    goto vmfail;
-	if (font->FontType == ft_CID_TrueType) {
-	    CIDToGIDMap = (void *)
-		gs_alloc_byte_array(mem, chars_count, sizeof(*CIDToGIDMap),
-				    "pdf_alloc_font(CIDToGIDMap)");
-	    if (CIDToGIDMap == 0)
-		goto vmfail;
-	    memset(CIDToGIDMap, 0, chars_count * sizeof(*CIDToGIDMap));
-	}
-	memset(widths_known, 0, widths_known_size);
-	rtype = pdf_font_resource_type(font);
-    }
-    code = pdf_alloc_resource(pdev, rtype, rid, (pdf_resource_t **)ppfres, 0L);
-    if (code < 0)
-	goto fail;
-    pfres = *ppfres;
-    memset((byte *)pfres + sizeof(pdf_resource_t), 0,
-	   sizeof(*pfres) - sizeof(pdf_resource_t));
-    pfres->font = font;
-    if (font)
-	pfres->FontType = font->FontType;
-    pfres->index = -1;
-    pfres->is_MM_instance = false;
-    pfres->FontDescriptor = pfd;
-    pfres->write_Widths = false;
-    pfres->Widths = Widths;
-    pfres->widths_known = widths_known;
-    pfres->BaseEncoding = ENCODING_INDEX_UNKNOWN;
-    pfres->Differences = 0;
-    pfres->DescendantFont = 0;
-    pfres->glyphshow_font = 0;
-    pfres->CIDToGIDMap = CIDToGIDMap;
-    pfres->char_procs = 0;
-    return 0;
- vmfail:
-    code = gs_note_error(gs_error_VMerror);
- fail:
-    gs_free_object(mem, CIDToGIDMap, "pdf_alloc_font(CIDToGIDMap)");
-    gs_free_object(mem, widths_known, "pdf_alloc_font(widths_known)");
-    gs_free_object(mem, Widths, "pdf_alloc_font(Widths)");
-    if (glyphs_used.data)
-	gs_free_string(mem, glyphs_used.data, glyphs_used.size,
-		       "pdf_alloc_font(glyphs_used)");
-    if (chars_used.data)
-	gs_free_string(mem, chars_used.data, chars_used.size,
-		       "pdf_alloc_font(chars_used)");
-    gs_free_object(mem, pfd, "pdf_alloc_font(descriptor)");
-    return code;
-}
-
-/*
- * Create a new pdf_font for a gs_font.  This procedure is only intended
- * to be called from a few places in gdevpdft.c.
- */
-int
-pdf_create_pdf_font(gx_device_pdf *pdev, gs_font *font, const gs_matrix *pomat,
-		    pdf_font_t **pppf)
-{
-    int index = -1;
-    int ftemp_Widths[256];
-    byte ftemp_widths_known[256/8];
-    int BaseEncoding = ENCODING_INDEX_UNKNOWN;
-    int same = 0, base_same = 0;
-    pdf_font_embed_t embed =
-	pdf_font_embed_status(pdev, font, &index, &same);
-    bool have_widths = false;
-    bool is_standard = false;
-    long ffid = 0;
-    pdf_font_descriptor_t *pfd = 0;
-    pdf_std_font_t *psf = 0;
-    gs_font *base_font = font;
-    gs_font *below;
-    pdf_font_descriptor_t fdesc;
-    pdf_font_t *ppf;
-    int code;
-#define BASE_UID(fnt) (&((const gs_font_base *)(fnt))->UID)
-
-    /* Find the "lowest" base font that has the same outlines. */
-    while ((below = base_font->base) != base_font &&
-	   base_font->procs.same_font(base_font, below,
-				      FONT_SAME_OUTLINES))
-	base_font = below;
-    /*
-     * set_base is the head of a logical loop; we return here if we
-     * decide to change the base_font to one registered as a resource.
-     */
- set_base:
-    if (base_font == font)
-	base_same = same;
-    else
-	embed = pdf_font_embed_status(pdev, base_font, &index, &base_same);
-    if (embed == FONT_EMBED_STANDARD) {
-	psf = &pdev->std_fonts[index];
-	if (psf->font != 0 || psf->pfd != 0) {
-	    /*
-	     * Use the standard font as the base font.  Either base_font
-	     * or pfd may be zero, but not both.
-	     */
-	    base_font = psf->font;
-	    pfd = psf->pfd;
-	}
-	is_standard = true;
-    } else if (embed == FONT_EMBED_YES &&
-	       base_font->FontType != ft_composite &&
-	       uid_is_valid(BASE_UID(base_font)) &&
-	       !base_font->is_resource
-	       ) {
-	/*
-	 * The base font has a UID, but it isn't a resource.  Look for a
-	 * resource with the same UID, in the hope that that will be
-	 * longer-lived.
-	 */
-	gs_font *orig = base_font->dir->orig_fonts;
-
-	for (; orig; orig = orig->next)
-	    if (orig != base_font && orig->FontType == base_font->FontType &&
-		orig->is_resource &&
-		uid_equal(BASE_UID(base_font), BASE_UID(orig))
-		) {
-		/* Use this as the base font instead. */
-		base_font = orig;
-		/*
-		 * Recompute the embedding status of the base font.  This
-		 * can't lead to a loop, because base_font->is_resource is
-		 * now known to be true.
-		 */
-		goto set_base;
-	    }
-    }
-	 
-    /* Composite fonts don't have descriptors. */
-    if (font->FontType == ft_composite) {
-	code = pdf_alloc_font(pdev, font->id, &ppf, NULL, font);
-	if (code < 0)
-	    return code;
-	if_debug2('_',
-		  "[_]created ft_composite pdf_font_t 0x%lx, id %ld\n",
-		  (ulong)ppf, pdf_resource_id((pdf_resource_t *)ppf));
-	ppf->index = -1;
-	code = pdf_register_font(pdev, font, ppf);
-	*pppf = ppf;
-	return code;
-    }
-
-    /* See if we already have a descriptor for this base font. */
-    if (pfd == 0)		/* if non-zero, was standard font */
-	pfd = (pdf_font_descriptor_t *)
-	    pdf_find_resource_by_gs_id(pdev, resourceFontDescriptor,
-				       base_font->id);
-    if (pfd != 0 && pfd->base_font != base_font && pfd->base_font != 0)
-	pfd = 0;
-
-    /* Create an appropriate font and descriptor. */
-
-    switch (embed) {
-    case FONT_EMBED_YES:
-	/*
-	 * HACK: Acrobat Reader 3 has a bug that makes cmap formats 4
-	 * and 6 not work in embedded TrueType fonts.  Consequently, it
-	 * can only handle embedded TrueType fonts if all the glyphs
-	 * referenced by the Encoding have numbers 0-255.  Check for
-	 * this now.
-	 */
-	if ((font->FontType == ft_TrueType ||
-	     font->FontType == ft_CID_TrueType) &&
-	    pdev->CompatibilityLevel <= 1.2
-	    ) {
-	    int i;
-
-	    for (i = 0; i <= 0xff; ++i) {
-		gs_glyph glyph =
-		    font->procs.encode_char(font, (gs_char)i,
-					    GLYPH_SPACE_INDEX);
-
-		if (glyph == gs_no_glyph ||
-		    (glyph >= gs_min_cid_glyph &&
-		     glyph <= gs_min_cid_glyph + 0xff)
-		    )
-		    continue;
-		/* Can't embed, punt. */
-		return_error(gs_error_rangecheck);
-	    }
-	}
-	if (!pfd) {
-	    code = pdf_compute_font_descriptor(pdev, &fdesc, font, NULL);
-	    if (code < 0)
-		return code;
-	    ffid = pdf_obj_ref(pdev);
-	}
-	/* The font isn't standard: make sure we write the Widths. */
-	same &= ~FONT_SAME_METRICS;
-	break;
-    case FONT_EMBED_NO:
-	/*
-	 * Per the PDF 1.3 documentation, there are only 3 BaseEncoding
-	 * values allowed for non-embedded fonts.  Pick one here.
-	 */
-	BaseEncoding =
-	    ((const gs_font_base *)base_font)->nearest_encoding_index;
-	switch (BaseEncoding) {
-	default:
-	    BaseEncoding = ENCODING_INDEX_WINANSI;
-	case ENCODING_INDEX_WINANSI:
-	case ENCODING_INDEX_MACROMAN:
-	case ENCODING_INDEX_MACEXPERT:
-	    break;
-	}
-	code = pdf_compute_font_descriptor(pdev, &fdesc, font, NULL);
-	if (code < 0)
-	    return code;
-	/* The font isn't standard: make sure we write the Widths. */
-	same &= ~FONT_SAME_METRICS;
-	break;
-    case FONT_EMBED_STANDARD:
-	break;
-    }
-    if (~same & (FONT_SAME_METRICS | FONT_SAME_ENCODING)) {
-	/*
-	 * Before allocating the font resource, check that we can
-	 * get all the widths for non-CID-keyed fonts.
-	 */
-	switch (font->FontType) {
-	case ft_composite:
-	case ft_CID_encrypted:
-	case ft_CID_TrueType:
-	    break;
-	default:
-	    {
-		pdf_font_t ftemp;
-		int i;
-
-		memset(&ftemp, 0, sizeof(ftemp));
-		pdf_font_orig_matrix(font, &ftemp.orig_matrix);
-		ftemp.Widths = ftemp_Widths;
-		ftemp.widths_known = ftemp_widths_known;
-		memset(ftemp.widths_known, 0, sizeof(ftemp_widths_known));
-		for (i = 0; i <= 255; ++i) {
-		    code = pdf_char_width(&ftemp, i, font, NULL);
-		    if (code < 0 && code != gs_error_undefined)
-			return code;
-		}
-		have_widths = true;
-	    }
-	}
-    }
-    if (pfd) {
-	code = pdf_alloc_font(pdev, font->id, &ppf, NULL, font);
-	if (code < 0)
-	    return code;
-	if_debug4('_',
-		  "[_]created pdf_font_t 0x%lx, id %ld, FontDescriptor 0x%lx, id %ld (old)\n",
-		  (ulong)ppf, pdf_resource_id((pdf_resource_t *)ppf),
-		  (ulong)pfd, pdf_resource_id((pdf_resource_t *)pfd));
-	ppf->FontDescriptor = pfd;
-    } else {
-	int name_index = index;
-
-	fdesc.rid = base_font->id;
-	fdesc.chars_count = pdf_font_chars_count(base_font);
-	fdesc.glyphs_count = pdf_font_glyphs_count(base_font);
-	code = pdf_alloc_font(pdev, font->id, &ppf, &fdesc, font);
-	if (code < 0)
-	    return code;
-	pfd = ppf->FontDescriptor;
-	if_debug4('_',
-		  "[_]created pdf_font_t 0x%lx, id %ld, FontDescriptor 0x%lx, id %ld (new)\n",
-		  (ulong)ppf, pdf_resource_id((pdf_resource_t *)ppf),
-		  (ulong)pfd, pdf_resource_id((pdf_resource_t *)pfd));
-	if (index < 0) {
-	    int ignore_same;
-	    const gs_font_name *pfname = &base_font->font_name;
-
-	    /* CIDFonts may have a key_name but no font_name. */
-	    if (pfname->size == 0)
-		pfname = &base_font->key_name;
-	    memcpy(pfd->FontName.chars, pfname->chars, pfname->size);
-	    pfd->FontName.size = pfname->size;
-	    pfd->FontFile_id = ffid;
-	    pfd->base_font = base_font;
-	    /* Don't allow non-standard fonts with standard names. */
-	    pdf_font_embed_status(pdev, base_font, &name_index,
-				  &ignore_same);
-	} else {
-	    /* Use the standard name. */
-	    const pdf_standard_font_t *ppsf = &pdf_standard_fonts[index];
-	    const char *fnchars = ppsf->fname;
-	    uint fnsize = strlen(fnchars);
-
-	    memcpy(pfd->FontName.chars, fnchars, fnsize);
-	    pfd->FontName.size = fnsize;
-	    memset(&pfd->values, 0, sizeof(&pfd->values));
-	}
-	pfd->orig_matrix = *pomat;
-	if (is_standard) {
-	    psf->pfd = pfd;
-	    if (embed == FONT_EMBED_STANDARD)
-		pfd->base_font = 0;
-	} else {
-	    code = pdf_adjust_font_name(pdev, pfd, name_index >= 0);
-	    if (code < 0)
-		return code;
-	}
-    } /* end else (!pfd) */
-    ppf->index = index;
-
-    switch (font->FontType) {
-    case ft_encrypted:
-    case ft_encrypted2:
-	ppf->is_MM_instance =
-	    ((const gs_font_type1 *)font)->data.WeightVector.count > 0;
-	break;
-    case ft_CID_encrypted:
-    case ft_CID_TrueType:
-	/*
-	 * Write the CIDSystemInfo now, so we don't try to access it after
-	 * the font may no longer be available.
-	 */
-	{
-	    long cidsi_id = pdf_begin_separate(pdev);
-
-	    pdf_write_CIDFont_system_info(pdev, font);
-	    pdf_end_separate(pdev);
-	    ppf->CIDSystemInfo_id = cidsi_id;
-	}
-    default:
-	DO_NOTHING;
-    }
-
-    ppf->BaseEncoding = BaseEncoding;
-    ppf->fname = pfd->FontName;
-    ppf->orig_matrix = *pomat;
-    if (~same & FONT_SAME_METRICS) {
-	/*
-	 * Contrary to the PDF 1.3 documentation, FirstChar and
-	 * LastChar are *not* simply a way to strip off initial and
-	 * final entries in the Widths array that are equal to
-	 * MissingWidth.  Acrobat Reader assumes that characters
-	 * with codes less than FirstChar or greater than LastChar
-	 * are undefined, without bothering to consult the Encoding.
-	 * Therefore, the implicit value of MissingWidth is pretty
-	 * useless, because there must be explicit Width entries for
-	 * every character in the font that is ever used.
-	 * Furthermore, if there are several subsets of the same
-	 * font in a document, it appears to be random as to which
-	 * one Acrobat Reader uses to decide what the FirstChar and
-	 * LastChar values are.  Therefore, we must write the Widths
-	 * array for the entire font even for subsets.
-	 */
-	ppf->write_Widths = true;
-	/*
-	 * If the font is being downloaded incrementally, the range we
-	 * determine here will be too small.  The character encoding
-	 * loop in pdf_process_string takes care of expanding it.
-	 */
-	pdf_find_char_range(font, &ppf->FirstChar, &ppf->LastChar);
-    }
-    if (have_widths) {
-	memcpy(ppf->Widths, ftemp_Widths, sizeof(ftemp_Widths));
-	memcpy(ppf->widths_known, ftemp_widths_known,
-	       sizeof(ftemp_widths_known));
-    }
-    code = pdf_register_font(pdev, font, ppf);
-
-    *pppf = ppf;
-    return code;
-}
-
-/*
- * Determine whether a font is a subset font by examining the name.
- */
-bool
-pdf_has_subset_prefix(const byte *str, uint size)
-{
-    int i;
-
-    if (size < SUBSET_PREFIX_SIZE || str[SUBSET_PREFIX_SIZE - 1] != '+')
-	return false;
-    for (i = 0; i < SUBSET_PREFIX_SIZE - 1; ++i)
-	if ((uint)(str[i] - 'A') >= 26)
-	    return false;
-    return true;
-}
-
-/*
- * Make the prefix for a subset font from the font's resource ID.
- */
-void
-pdf_make_subset_prefix(const gx_device_pdf *pdev, byte *str, ulong id)
-{
-    int i;
-    ulong v;
-
-    /* We disregard the id and generate a random prefix. */
-    v = (ulong)(pdev->random_offset + rand());
-    for (i = 0; i < SUBSET_PREFIX_SIZE - 1; ++i, v /= 26)
-	str[i] = 'A' + (v % 26);
-    str[SUBSET_PREFIX_SIZE - 1] = '+';
-}
-
-/*
- * Adjust the FontName of a newly created FontDescriptor so that it is
- * unique if necessary.
- */
-int
-pdf_adjust_font_name(const gx_device_pdf *pdev, pdf_font_descriptor_t *pfd,
-		     bool is_standard)
-{
-    int code = 0;
-
-    if (MAKE_FONT_NAMES_UNIQUE) {
-	/* Check whether this name has already been used. */
-	int j = 0;
-	pdf_font_descriptor_t *old;
-	byte *chars = pfd->FontName.chars;
-	uint size = pfd->FontName.size;
-
-#define SUFFIX_CHAR '~'
-	/*
-	 * If the name looks as though it has one of our unique suffixes,
-	 * remove the suffix.
-	 */
-	{
-	    int i;
-
-	    for (i = size;
-		 i > 0 && isxdigit(chars[i - 1]);
-		 --i)
-		DO_NOTHING;
-	    if (i < size && i > 0 && chars[i - 1] == SUFFIX_CHAR) {
-		do {
-		    --i;
-		} while (i > 0 && chars[i - 1] == SUFFIX_CHAR);
-		size = i + 1;
-	    }
-	    code = size != pfd->FontName.size;
-	}
-	/*
-	 * Non-standard fonts with standard names must always use a suffix
-	 * to avoid being confused with the standard fonts.
-	 */
-	if (!is_standard)
-	    for (; j < NUM_RESOURCE_CHAINS; ++j)
-		for (old = (pdf_font_descriptor_t *)pdev->resources[resourceFontDescriptor].chains[j];
-		     old != 0; old = old->next
-		     ) {
-		    const byte *old_chars = old->FontName.chars;
-		    uint old_size = old->FontName.size;
-
-		    if (old == pfd)
-			continue;
-		    if (pdf_has_subset_prefix(old_chars, old_size))
-			old_chars += SUBSET_PREFIX_SIZE,
-			    old_size -= SUBSET_PREFIX_SIZE;
-		    if (!bytes_compare(old_chars, old_size, chars, size))
-			goto found; /* do a double 'break' */
-		}
-    found:			/* only used for double 'break' above */
-	if (j < NUM_RESOURCE_CHAINS) {
-	    /* Create a unique name. */
-	    char suffix[sizeof(long) * 2 + 2];
-	    uint suffix_size;
-
-	    sprintf(suffix, "%c%lx", SUFFIX_CHAR,
-		    pdf_resource_id((pdf_resource_t *)pfd));
-	    suffix_size = strlen(suffix);
-	    if (size + suffix_size > sizeof(pfd->FontName.chars))
-		return_error(gs_error_rangecheck);
-	    memcpy(chars + size, (const byte *)suffix, suffix_size);
-	    size += suffix_size;
-	    code = 1;
-	}
-	pfd->FontName.size = size;
-#undef SUFFIX_CHAR
-    }
-    return code;
-}
-
-/* Add an encoding difference to a font. */
-int
-pdf_add_encoding_difference(gx_device_pdf *pdev, pdf_font_t *ppf, int chr,
-			    gs_font_base *bfont, gs_glyph glyph)
-{
-    pdf_encoding_element_t *pdiff = ppf->Differences;
-    /*
-     * Since the font Widths are indexed by character code, changing the
-     * encoding also changes the Widths.
-     */
-    int width;
-    int code = pdf_glyph_width(ppf, glyph, (gs_font *)bfont, &width);
-
-    if (code < 0)
-	return code;
-    if (pdiff == 0) {
-	pdiff = gs_alloc_struct_array(pdev->pdf_memory, 256,
-				      pdf_encoding_element_t,
-				      &st_pdf_encoding_element,
-				      "Differences");
-	if (pdiff == 0)
-	    return_error(gs_error_VMerror);
-	memset(pdiff, 0, sizeof(pdf_encoding_element_t) * 256);
-	ppf->Differences = pdiff;
-    }
-    pdiff[chr].glyph = glyph;
-    pdiff[chr].str.data = (const byte *)
-	bfont->procs.callbacks.glyph_name(glyph, &pdiff[chr].str.size);
-    ppf->Widths[chr] = width;
-    if (code == 0)
-	ppf->widths_known[chr >> 3] |= 0x80 >> (chr & 7);
-    else
-	ppf->widths_known[chr >> 3] &= ~(0x80 >> (chr & 7));
-    return 0;
-}
-
-/*
- * Get the width of a given character in a (base) font.  May add the width
- * to the widths cache (ppf->Widths).
- */
-int
-pdf_char_width(pdf_font_t *ppf, int ch, gs_font *font,
-	       int *pwidth /* may be NULL */)
-{
-    if (ch < 0 || ch > 255)
-	return_error(gs_error_rangecheck);
-    if (!(ppf->widths_known[ch >> 3] & (0x80 >> (ch & 7)))) {
-	gs_font_base *bfont = (gs_font_base *)font;
-	gs_glyph glyph = bfont->procs.encode_char(font, (gs_char)ch,
-						  GLYPH_SPACE_INDEX);
-	int width = 0;
-	int code = pdf_glyph_width(ppf, glyph, font, &width);
-
-	if (code < 0)
-	    return code;
-	ppf->Widths[ch] = width;
-	if (code == 0)
-	    ppf->widths_known[ch >> 3] |= 0x80 >> (ch & 7);
-    }
-    if (pwidth)
-	*pwidth = ppf->Widths[ch];
-    return 0;
-}
-
-/*
- * Get the width of a glyph in a (base) font.  Return 1 if the width was
- * defaulted to MissingWidth.
- */
-int
-pdf_glyph_width(pdf_font_t *ppf, gs_glyph glyph, gs_font *font,
-		int *pwidth /* must not be NULL */)
-{
-    int wmode = font->WMode;
-    gs_glyph_info_t info;
-    /*
-     * orig_matrix.xx is 1.0 for TrueType, 0.001 or 1.0/2048 for Type 1.
-     */
-    double scale = ppf->orig_matrix.xx * 1000.0;
-    int code;
-
-    if (glyph != gs_no_glyph &&
-	(code = font->procs.glyph_info(font, glyph, NULL,
-				       GLYPH_INFO_WIDTH0 << wmode,
-				       &info)) >= 0
-	) {
-	double w, v;
-
-	if (wmode && (w = info.width[wmode].y) != 0)
-	    v = info.width[wmode].x;
-	else
-	    w = info.width[wmode].x, v = info.width[wmode].y;
-	if (v != 0)
-	    return_error(gs_error_rangecheck);
-	*pwidth = (int)(w * scale);
-	/*
-	 * If the character is .notdef, don't cache the width,
-	 * just in case this is an incrementally defined font.
-	 */
-	return (gs_font_glyph_is_notdef((gs_font_base *)font, glyph) ? 1 : 0);
-    } else {
-	/* Try for MissingWidth. */
-	gs_point scale2;
-	const gs_point *pscale = 0;
-	gs_font_info_t finfo;
-
-	if (scale != 1)
-	    scale2.x = scale2.y = scale, pscale = &scale2;
-	code = font->procs.font_info(font, pscale, FONT_INFO_MISSING_WIDTH,
-				     &finfo);
-	if (code < 0)
-	    return code;
-	*pwidth = finfo.MissingWidth;
-	/*
-	 * Don't mark the width as known, just in case this is an
-	 * incrementally defined font.
-	 */
-	return 1;
-    }
-}
-
-/*
- * Find the range of character codes that includes all the defined
- * characters in a font.  This is a separate procedure only for
- * readability: it is only called from one place in pdf_update_text_state.
- */
-void
-pdf_find_char_range(gs_font *font, int *pfirst, int *plast)
-{
-    gs_glyph notdef = gs_no_glyph;
-    int first = 0, last = 255;
-    gs_glyph glyph;
-
-    switch (font->FontType) {
-    case ft_encrypted:
-    case ft_encrypted2: {
-	/* Scan the Encoding vector looking for .notdef. */
-	gs_font_base *const bfont = (gs_font_base *)font;
-	int ch;
-
-	for (ch = 0; ch <= 255; ++ch) {
-	    gs_glyph glyph =
-		font->procs.encode_char(font, (gs_char)ch,
-					GLYPH_SPACE_INDEX);
-
-	    if (glyph == gs_no_glyph)
-		continue;
-	    if (gs_font_glyph_is_notdef(bfont, glyph)) {
-		notdef = glyph;
-		break;
-	    }
-	}
-	break;
-    }
-    default:
-	DO_NOTHING;
-    }
-    while (last >= first &&
-	   ((glyph =
-	     font->procs.encode_char(font, (gs_char)last,
-				     GLYPH_SPACE_INDEX))== gs_no_glyph ||
-	    glyph == notdef || glyph == gs_min_cid_glyph)
-	   )
-	--last;
-    while (first <= last &&
-	   ((glyph =
-	     font->procs.encode_char(font, (gs_char)first,
-				     GLYPH_SPACE_INDEX))== gs_no_glyph ||
-	    glyph == notdef || glyph == gs_min_cid_glyph)
-	   )
-	++first;
-    if (first > last)
-	last = first;	/* no characters used */
-    *pfirst = first;
-    *plast = last;
-}
-
-/* Compute the FontDescriptor.values for a font. */
-private int
-font_char_bbox(gs_rect *pbox, gs_glyph *pglyph, gs_font *font, int ch,
-	       const gs_matrix *pmat)
-{
-    gs_glyph glyph;
-    gs_glyph_info_t info;
-    int code;
-
-    glyph = font->procs.encode_char(font, (gs_char)ch, GLYPH_SPACE_INDEX);
-    if (glyph == gs_no_glyph)
-	return gs_error_undefined;
-    code = font->procs.glyph_info(font, glyph, pmat, GLYPH_INFO_BBOX, &info);
-    if (code < 0)
-	return code;
-    *pbox = info.bbox;
-    if (pglyph)
-	*pglyph = glyph;
-    return 0;
-}
-int
-pdf_compute_font_descriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd,
-			    gs_font *font, const byte *used /*[32]*/)
-{
-    gs_font_base *bfont = (gs_font_base *)font;
-    gs_glyph glyph, notdef;
-    int index;
-    int wmode = font->WMode;
-    int members = (GLYPH_INFO_WIDTH0 << wmode) |
-	GLYPH_INFO_BBOX | GLYPH_INFO_NUM_PIECES;
-    gs_glyph letters[52];
-    int num_letters = 0;
-    pdf_font_descriptor_values_t desc;
-    gs_matrix smat;
-    gs_matrix *pmat = NULL;
-    int fixed_width = 0;
-    int small_descent = 0, small_height = 0;
-    int code;
-
-    memset(&desc, 0, sizeof(desc));
-    desc.FontType = font->FontType;
-    desc.FontBBox.p.x = desc.FontBBox.p.y = max_int;
-    desc.FontBBox.q.x = desc.FontBBox.q.y = min_int;
-    /*
-     * Embedded TrueType fonts use a 1000-unit character space, but the
-     * font itself uses a 1-unit space.  Compensate for this here.
-     */
-    switch (font->FontType) {
-    case ft_TrueType:
-    case ft_CID_TrueType:
-	gs_make_scaling(1000.0, 1000.0, &smat);
-	pmat = &smat;
-    default:
-	break;
-    }
-    /*
-     * See the note on FONT_IS_ADOBE_ROMAN / FONT_USES_STANDARD_ENCODING
-     * in gdevpdff.h for why the following substitution is made.
-     */
-#if 0
-#  define CONSIDER_FONT_SYMBOLIC(font) font_is_symbolic(font)
-#else
-#  define CONSIDER_FONT_SYMBOLIC(font)\
-  ((font)->FontType == ft_composite ||\
-   ((const gs_font_base *)(font))->encoding_index != ENCODING_INDEX_STANDARD)
-#endif
-    if (CONSIDER_FONT_SYMBOLIC(font))
-	desc.Flags |= FONT_IS_SYMBOLIC;
-    else {
-	/*
-	 * Look at various specific characters to guess at the remaining
-	 * descriptor values (CapHeight, ItalicAngle, StemV, XHeight,
-	 * and flags SERIF, SCRIPT, ITALIC, ALL_CAPS, and SMALL_CAPS).
-	 * The algorithms are pretty crude.
-	 */
-	/*
-	 * Look at the glyphs for the lower-case letters.  If they are
-	 * all missing, this is an all-cap font; if any is present, check
-	 * the relative heights to determine whether this is a small-cap font.
-	 */
-	bool small_present = false;
-	int ch;
-	int x_height = min_int;
-	int cap_height = 0;
-	gs_rect bbox, bbox2;
-
-	desc.Flags |= FONT_IS_ADOBE_ROMAN; /* required if not symbolic */
-	for (ch = 'a'; ch <= 'z'; ++ch) {
-	    int y0, y1;
-
-	    code =
-		font_char_bbox(&bbox, &letters[num_letters], font, ch, pmat);
-	    if (code < 0)
-		continue;
-	    ++num_letters;
-	    rect_merge(desc.FontBBox, bbox);
-	    small_present = true;
-	    y0 = (int)bbox.p.y;
-	    y1 = (int)bbox.q.y;
-	    switch (ch) {
-	    case 'b': case 'd': case 'f': case 'h':
-	    case 'k': case 'l': case 't': /* ascender */
-		small_height = max(small_height, y1);
-	    case 'i':		/* anomalous ascent */
-		break;
-	    case 'j':		/* descender with anomalous ascent */
-		small_descent = min(small_descent, y0);
-		break;
-	    case 'g': case 'p': case 'q': case 'y': /* descender */
-		small_descent = min(small_descent, y0);
-	    default:		/* no ascender or descender */
-		x_height = max(x_height, y1);		
-	    }
-	}
-	desc.XHeight = (int)x_height;
-	if (!small_present)
-	    desc.Flags |= FONT_IS_ALL_CAPS;
-	for (ch = 'A'; ch <= 'Z'; ++ch) {
-	    code =
-		font_char_bbox(&bbox, &letters[num_letters], font, ch, pmat);
-	    if (code < 0)
-		continue;
-	    ++num_letters;
-	    rect_merge(desc.FontBBox, bbox);
-	    cap_height = max(cap_height, (int)bbox.q.y);
-	}
-	desc.CapHeight = cap_height;
-	/*
-	 * Look at various glyphs to determine ItalicAngle, StemV,
-	 * SERIF, SCRIPT, and ITALIC.
-	 */
-	if ((code = font_char_bbox(&bbox, NULL, font, ':', pmat)) >= 0 &&
-	    (code = font_char_bbox(&bbox2, NULL, font, '.', pmat)) >= 0
-	    ) {
-	    /* Calculate the dominant angle. */
-	    int angle = 
-		(int)(atan2((bbox.q.y - bbox.p.y) - (bbox2.q.y - bbox2.p.y),
-			    (bbox.q.x - bbox.p.x) - (bbox2.q.x - bbox2.p.x)) *
-		      radians_to_degrees) - 90;
-
-	    /* Normalize to [-90..90]. */
-	    while (angle > 90)
-		angle -= 180;
-	    while (angle < -90)
-		angle += 180;
-	    if (angle < -30)
-		angle = -30;
-	    else if (angle > 30)
-		angle = 30;
-	    /*
-	     * For script or embellished fonts, we can get an angle that is
-	     * slightly off from zero even for non-italic fonts.
-	     * Compensate for this now.
-	     */
-	    if (angle <= 2 && angle >= -2)
-		angle = 0;
-	    desc.ItalicAngle = angle;
-	}
-	if (desc.ItalicAngle)
-	    desc.Flags |= FONT_IS_ITALIC;
-	if (code >= 0) {
-	    double wdot = bbox2.q.x - bbox2.p.x;
-
-	    if ((code = font_char_bbox(&bbox2, NULL, font, 'I', pmat)) >= 0) {
-		double wcolon = bbox.q.x - bbox.p.x;
-		double wI = bbox2.q.x - bbox2.p.x;
-
-		desc.StemV = (int)wdot;
-		if (wI > wcolon * 2.5 || wI > (bbox2.q.y - bbox2.p.y) * 0.25)
-		    desc.Flags |= FONT_IS_SERIF;
-	    }
-	}
-    }
-    /*
-     * Scan the entire glyph space to compute Ascent, Descent, FontBBox,
-     * and the fixed width if any.  Avoid computing the bounding box of
-     * letters a second time.
-     */
-    num_letters = psf_sort_glyphs(letters, num_letters);
-    desc.Ascent = desc.FontBBox.q.y;
-    notdef = gs_no_glyph;
-    for (index = 0;
-	 (code = font->procs.enumerate_glyph(font, &index, GLYPH_SPACE_INDEX, &glyph)) >= 0 &&
-	     index != 0;
-	 ) {
-	gs_glyph_info_t info;
-
-	if (psf_sorted_glyphs_include(letters, num_letters, glyph)) {
-	    /* We don't need the bounding box. */
-	    code = font->procs.glyph_info(font, glyph, pmat,
-					  members - GLYPH_INFO_BBOX, &info);
-	    if (code < 0)
-		return code;
-	} else {
-	    code = font->procs.glyph_info(font, glyph, pmat, members, &info);
-	    if (code < 0)
-		return code;
-	    rect_merge(desc.FontBBox, info.bbox);
-	    if (!info.num_pieces)
-		desc.Ascent = max(desc.Ascent, info.bbox.q.y);
-	}
-	if (notdef == gs_no_glyph && gs_font_glyph_is_notdef(bfont, glyph)) {
-	    notdef = glyph;
-	    desc.MissingWidth = info.width[wmode].x;
-	}
-	if (info.width[wmode].y != 0)
-	    fixed_width = min_int;
-	else if (fixed_width == 0)
-	    fixed_width = info.width[wmode].x;
-	else if (info.width[wmode].x != fixed_width)
-	    fixed_width = min_int;
-    }
-    if (code < 0)
-	return code;
-    if (desc.Ascent == 0)
-	desc.Ascent = desc.FontBBox.q.y;
-    desc.Descent = desc.FontBBox.p.y;
-    if (!(desc.Flags & (FONT_IS_SYMBOLIC | FONT_IS_ALL_CAPS)) &&
-	(small_descent > desc.Descent / 3 || desc.XHeight > small_height * 0.9)
-	)
-	desc.Flags |= FONT_IS_SMALL_CAPS;
-    if (fixed_width > 0) {
-	desc.Flags |= FONT_IS_FIXED_WIDTH;
-	desc.AvgWidth = desc.MaxWidth = desc.MissingWidth = fixed_width;
-    }
-    if (desc.CapHeight == 0)
-	desc.CapHeight = desc.Ascent;
-    if (desc.StemV == 0)
-	desc.StemV = (int)(desc.FontBBox.q.x * 0.15);
-    pfd->values = desc;
-    return 0;
-}

+ 0 - 472
sys/src/cmd/gs/src/gdevpdff.h

@@ -1,472 +0,0 @@
-/* Copyright (C) 1999, 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevpdff.h,v 1.11 2001/08/06 19:36:01 lpd Exp $ */
-/* Font-related definitions for PDF-writing driver. */
-
-#ifndef gdevpdff_INCLUDED
-#  define gdevpdff_INCLUDED
-
-/* ================ Types and structures ================ */
-
-/*
- * The PDF writer creates several different kinds of font resources.
- * The key differences between them are the values of num_chars, index,
- * and descriptor.
- *
- *	- Synthesized Type 3 bitmap fonts are identified by num_chars != 0 (or
- *	equivalently PDF_FONT_IS_SYNTHESIZED = true).  They have index < 0,
- *	FontDescriptor == 0.  All other fonts have num_chars == 0.
- *
- *	- Type 0 fonts have num_chars == 0, index < 0, FontDescriptor == 0.
- *	All other non-synthesized fonts have FontDescriptor != 0.
- *
- *	- The base 14 fonts (when not embedded) have num_chars == 0, index
- *	>= 0, FontDescriptor != 0, FontDescriptor->base_font == 0.  All
- *	other fonts have index < 0.
- *
- *	- All other fonts, embedded or not, have num_chars == 0, index < 0,
- *	FontDescriptor != 0, FontDescriptor->base_font != 0.  A font is
- *	embedded iff FontDescriptor->FontFile_id != 0.
- *
- * For non-synthesized fonts, the structure representation is designed to
- * represent directly the information that will be written in the font
- * resource, Encoding, and FontDescriptor dictionaries.  See the comments
- * on the pdf_font_t structure below for more detail.
- */
-
-/*
- * PDF font names must be large enough for the 14 built-in fonts,
- * and also large enough for any reasonable font name + 7 characters
- * for the subsetting prefix + a suffix derived from the PDF object number.
- */
-#define SUBSET_PREFIX_SIZE 7
-#define MAX_PDF_FONT_NAME\
-  (SUBSET_PREFIX_SIZE + gs_font_name_max + 1 + 1 + sizeof(long) * 2)
-typedef struct pdf_font_name_s {
-    byte chars[MAX_PDF_FONT_NAME];
-    uint size;
-} pdf_font_name_t;
-
-/* ---------------- Font descriptor (pseudo-resource) ---------------- */
-
-/*
- * A FontDescriptor refers to an unscaled, possibly built-in base_font.
- * Multiple pdf_fonts with the same outlines (but possibly different
- * encodings, metrics, and scaling) may share a single FontDescriptor.
- * Each such pdf_font refers to a corresponding gs_font object, and
- * the gs_fonts of all such pdf_fonts will have the base_font of the
- * FontDescriptor as their eventual base font (through a chain of 0 or
- * more base pointers).
- *
- * Since gs_font objects may be freed at any time, we register a procedure
- * to be called when that happens.  The (gs_)font of a pdf_font may be freed
- * either before or after the base_font in the FontDescriptor.  Therefore, a
- * pdf_font copies enough information from its gs_font that when the gs_font
- * is freed, the pdf_font still has enough information to write the Font
- * resource dictionary at a later time.  When freeing a gs_font referenced
- * from a pdf_font, we only clear the pointer to it from its referencing
- * pdf_font.  However, when the base_font of a FontDescriptor is about to be
- * freed, we must write the FontDescriptor, and, if the font is embedded,
- * the FontFile data.
- */
-
-/*
- * Font descriptors are handled as pseudo-resources.  Multiple pdf_fonts
- * may share a descriptor.  We don't need to use reference counting to
- * keep track of this, since all descriptors persist until the device
- * is closed, even though the base_font they reference may have been
- * freed.
- */
-typedef struct pdf_font_descriptor_values_s {
-    font_type FontType;		/* copied from font */
-    /* Required elements */
-    int Ascent, CapHeight, Descent, ItalicAngle, StemV;
-    gs_int_rect FontBBox;
-    uint Flags;
-    /* Optional elements (default to 0) */
-    int AvgWidth, Leading, MaxWidth, MissingWidth, StemH, XHeight;
-} pdf_font_descriptor_values_t;
-
-#ifndef pdf_font_descriptor_DEFINED
-#  define pdf_font_descriptor_DEFINED
-typedef struct pdf_font_descriptor_s pdf_font_descriptor_t;
-#endif
-
-/*
- * Define whether an embedded font must, may, or must not be subsetted.
- */
-typedef enum {
-    FONT_SUBSET_OK,
-    FONT_SUBSET_YES,
-    FONT_SUBSET_NO
-} pdf_font_do_subset_t;
-
-struct pdf_font_descriptor_s {
-    pdf_resource_common(pdf_font_descriptor_t);
-    pdf_font_name_t FontName;
-    pdf_font_descriptor_values_t values;
-    gs_matrix orig_matrix;	/* unscaled font matrix */
-    uint chars_count;		/* size of chars_used in bits */
-    gs_string chars_used;	/* 1 bit per character code or CID */
-    uint glyphs_count;		/* size of glyphs_used in bits */
-    gs_string glyphs_used;	/* 1 bit per glyph, for TrueType fonts */
-    pdf_font_do_subset_t do_subset;
-    long FontFile_id;		/* non-0 iff the font is embedded */
-    gs_font *base_font;		/* unscaled font defining the base encoding, */
-				/* matrix, and character set, 0 iff */
-				/* non-embedded standard font */
-    bool notified;		/* if true, base_font will notify on freeing */
-    bool written;		/* if true, descriptor has been written out */
-};
-/* Flag bits */
-/*#define FONT_IS_FIXED_WIDTH (1<<0)*/  /* defined in gxfont.h */
-#define FONT_IS_SERIF (1<<1)
-#define FONT_IS_SYMBOLIC (1<<2)
-#define FONT_IS_SCRIPT (1<<3)
-/*
- * There is confusion over the meaning of the 1<<5 bit.  According to the
- * published PDF documentation, in PDF 1.1, it meant "font uses
- * StandardEncoding", and as of PDF 1.2, it means "font uses (a subset of)
- * the Adobe standard Latin character set"; however, Acrobat Reader 3 and 4
- * seem to use the former interpretation, even if the font is embedded and
- * the file is identified as a PDF 1.2 file.  We have to use the former
- * interpretation in order to produce output that Acrobat will handle
- * correctly.
- */
-#define FONT_USES_STANDARD_ENCODING (1<<5) /* always used */
-#define FONT_IS_ADOBE_ROMAN (1<<5) /* never used */
-#define FONT_IS_ITALIC (1<<6)
-#define FONT_IS_ALL_CAPS (1<<16)
-#define FONT_IS_SMALL_CAPS (1<<17)
-#define FONT_IS_FORCE_BOLD (1<<18)
-/*
- * Font descriptors are pseudo-resources, so their GC descriptors
- * must be public.
- */
-#define public_st_pdf_font_descriptor()	/* in gdevpdff.c */\
-  BASIC_PTRS(pdf_font_descriptor_ptrs) {\
-    GC_STRING_ELT(pdf_font_descriptor_t, chars_used),\
-    GC_STRING_ELT(pdf_font_descriptor_t, glyphs_used),\
-    GC_OBJ_ELT(pdf_font_descriptor_t, base_font)\
-  };\
-  gs_public_st_basic_super(st_pdf_font_descriptor, pdf_font_descriptor_t,\
-    "pdf_font_descriptor_t", pdf_font_descriptor_ptrs,\
-    pdf_font_descriptor_data, &st_pdf_resource, 0)
-
-/* ---------------- Font (resource) ---------------- */
-
-typedef struct pdf_char_proc_s pdf_char_proc_t;	/* forward reference */
-/*typedef struct pdf_font_s pdf_font_t;*/
-typedef struct pdf_encoding_element_s {
-    gs_glyph glyph;
-    gs_const_string str;
-} pdf_encoding_element_t;
-#define private_st_pdf_encoding_element()\
-  gs_private_st_composite(st_pdf_encoding_element, pdf_encoding_element_t,\
-    "pdf_encoding_element_t[]", pdf_encoding_elt_enum_ptrs,\
-    pdf_encoding_elt_reloc_ptrs)
-/*
- * Structure elements beginning with a capital letter correspond directly
- * to keys in the font or Encoding dictionary.  Currently these are:
- *	(font) FontType, FirstChar, LastChar, Widths, FontDescriptor,
- *	  DescendantFont[s]
- *	(Encoding) BaseEncoding, Differences
- * This structure is untidy: it is really a union of 4 different variants
- * (plain font, composite font, CIDFont, synthesized font).  It's simpler
- * to "flatten" the union.
- */
-struct pdf_font_s {
-    pdf_resource_common(pdf_font_t);
-    pdf_font_name_t fname;
-    font_type FontType;
-    gs_font *font;		/* non-0 iff font will notify us; */
-				/* should be a weak pointer */
-    int index;			/* in pdf_standard_fonts, -1 if not base 14 */
-    gs_matrix orig_matrix;	/* FontMatrix of unscaled font for embedding */
-    bool is_MM_instance;	/* for Type 1/2 fonts, true iff the font */
-				/* is a Multiple Master instance */
-
-    /* Members for all non-synthesized fonts. */
-
-    pdf_font_descriptor_t *FontDescriptor; /* 0 for composite */
-    bool write_Widths;
-    int *Widths;		/* [256] for non-composite, non-CID */
-    byte *widths_known;		/* 1 bit per Widths element */
-
-    /* Members for non-synthesized fonts other than composite or CID. */
-
-    int FirstChar, LastChar;
-    /* Encoding for base fonts. */
-    gs_encoding_index_t BaseEncoding;
-    pdf_encoding_element_t *Differences; /* [256] */
-
-    /* Members for composite fonts (with FMapType = fmap_CMap). */
-
-    pdf_font_t *DescendantFont;	/* CIDFont */
-    char cmapname[max(		/* standard name or <id> 0 R */
-		      16,	/* UniJIS-UCS2-HW-H */
-		      sizeof(long) * 8 / 3 + 1 + 4 /* <id> 0 R */
-		      ) + 1];
-    font_type sub_font_type;	/* FontType of DescendantFont */
-
-    /* Members for CIDFonts. */
-
-    long CIDSystemInfo_id;
-    pdf_font_t *glyphshow_font;	/* type 0 font created for glyphshow */
-    ushort *CIDToGIDMap;	/* CIDFontType 2 only */
-
-    /* Members for synthesized fonts. */
-
-    int num_chars;
-#define PDF_FONT_IS_SYNTHESIZED(pdfont) ((pdfont)->num_chars != 0)
-    pdf_char_proc_t *char_procs;
-    int max_y_offset;
-    /* Pseudo-characters for spacing. */
-    /* The range should be determined by the device resolution.... */
-/*#define X_SPACE_MIN xxx*/ /* in gdevpdfx.h */
-/*#define X_SPACE_MAX nnn*/ /* in gdevpdfx.h */
-    byte spaces[X_SPACE_MAX - X_SPACE_MIN + 1];
-};
-
-/* The descriptor is public for pdf_resource_type_structs. */
-#define public_st_pdf_font()\
-  gs_public_st_suffix_add9(st_pdf_font, pdf_font_t, "pdf_font_t",\
-    pdf_font_enum_ptrs, pdf_font_reloc_ptrs, st_pdf_resource,\
-    font, FontDescriptor, Widths, widths_known, Differences, DescendantFont,\
-    glyphshow_font, CIDToGIDMap, char_procs)
-
-/* CharProc pseudo-resources for synthesized fonts */
-struct pdf_char_proc_s {
-    pdf_resource_common(pdf_char_proc_t);
-    pdf_font_t *font;
-    pdf_char_proc_t *char_next;	/* next char_proc for same font */
-    int width, height;
-    int x_width;		/* X escapement */
-    int y_offset;		/* of character (0,0) */
-    byte char_code;
-};
-
-/* The descriptor is public for pdf_resource_type_structs. */
-#define public_st_pdf_char_proc()\
-  gs_public_st_suffix_add2(st_pdf_char_proc, pdf_char_proc_t,\
-    "pdf_char_proc_t", pdf_char_proc_enum_ptrs,\
-    pdf_char_proc_reloc_ptrs, st_pdf_resource, font, char_next)
-
-/* ================ Procedures ================ */
-
-/* ---------------- Exported by gdevpdft.c ---------------- */
-
-     /* For gdevpdfs.c */
-
-/* Define the text enumerator. */
-typedef struct pdf_text_enum_s {
-    gs_text_enum_common;
-    gs_text_enum_t *pte_default;
-    gs_fixed_point origin;
-} pdf_text_enum_t;
-#define private_st_pdf_text_enum() /* in gdevpdft.c */\
-  extern_st(st_gs_text_enum);\
-  gs_private_st_suffix_add1(st_pdf_text_enum, pdf_text_enum_t,\
-    "pdf_text_enum_t", pdf_text_enum_enum_ptrs, pdf_text_enum_reloc_ptrs,\
-    st_gs_text_enum, pte_default)
-
-/*
- * Set the current font and size, writing a Tf command if needed.
- */
-int pdf_set_font_and_size(P3(gx_device_pdf * pdev, pdf_font_t * font,
-			     floatp size));
-/*
- * Set the text matrix for writing text, writing a Tm, TL, or Tj command
- * if needed.
- */
-int pdf_set_text_matrix(P2(gx_device_pdf * pdev, const gs_matrix * pmat));
-
-/*
- * Append characters to a string being accumulated.
- */
-int pdf_append_chars(P3(gx_device_pdf * pdev, const byte * str, uint size));
-
-     /* For gdevpdfb.c */
-
-/* Begin a CharProc for an embedded (bitmap) font. */
-int pdf_begin_char_proc(P8(gx_device_pdf * pdev, int w, int h, int x_width,
-			   int y_offset, gs_id id, pdf_char_proc_t **ppcp,
-			   pdf_stream_position_t * ppos));
-
-/* End a CharProc. */
-int pdf_end_char_proc(P2(gx_device_pdf * pdev, pdf_stream_position_t * ppos));
-
-/* Put out a reference to an image as a character in an embedded font. */
-int pdf_do_char_image(P3(gx_device_pdf * pdev, const pdf_char_proc_t * pcp,
-			 const gs_matrix * pimat));
-
-/* ---------------- Exported by gdevpdfs.c for gdevpdft.c ---------------- */
-
-/* ---------------- Exported by gdevpdff.c ---------------- */
-
-typedef enum {
-    FONT_EMBED_STANDARD,	/* 14 standard fonts */
-    FONT_EMBED_NO,
-    FONT_EMBED_YES
-} pdf_font_embed_t;
-
-typedef struct pdf_standard_font_s {
-    const char *fname;
-    gs_encoding_index_t base_encoding;
-} pdf_standard_font_t;
-extern const pdf_standard_font_t pdf_standard_fonts[];
-
-/* Return the index of a standard font name, or -1 if missing. */
-int pdf_find_standard_font(P2(const byte *str, uint size));
-
-/*
- * Compute and return the orig_matrix of a font.
- */
-int pdf_font_orig_matrix(P2(const gs_font *font, gs_matrix *pmat));
-
-/*
- * Find the original (unscaled) standard font corresponding to an
- * arbitrary font, if any.  Return its index in standard_fonts, or -1.
- */
-int pdf_find_orig_font(P3(gx_device_pdf *pdev, gs_font *font,
-			  gs_matrix *pfmat));
-
-/*
- * Determine the embedding status of a font.  If the font is in the base
- * 14, store its index (0..13) in *pindex and its similarity to the base
- * font (as determined by the font's same_font procedure) in *psame.
- */
-pdf_font_embed_t pdf_font_embed_status(P4(gx_device_pdf *pdev, gs_font *font,
-					  int *pindex, int *psame));
-
-/*
- * Determine the resource type (resourceFont or resourceCIDFont) for
- * a font.
- */
-pdf_resource_type_t pdf_font_resource_type(P1(const gs_font *font));
-
-/*
- * Allocate a font resource.  If pfd != 0, a FontDescriptor is allocated,
- * with its id, values, and char_count taken from *pfd.
- * If font != 0, its FontType is used to determine whether the resource
- * is of type Font or of (pseudo-)type CIDFont; in this case, pfres->font
- * and pfres->FontType are also set.
- */
-int pdf_alloc_font(P5(gx_device_pdf *pdev, gs_id rid, pdf_font_t **ppfres,
-		      const pdf_font_descriptor_t *pfd,
-		      gs_font *font));
-
-/*
- * Create a new pdf_font for a gs_font.  This procedure is only intended
- * to be called from one place in gdevpdft.c.
- */
-int pdf_create_pdf_font(P4(gx_device_pdf *pdev, gs_font *font,
-			   const gs_matrix *pomat, pdf_font_t **pppf));
-
-/*
- * Determine whether a font is a subset font by examining the name.
- */
-bool pdf_has_subset_prefix(P2(const byte *str, uint size));
-
-/*
- * Make the prefix for a subset font from the font's resource ID.
- */
-void pdf_make_subset_prefix(P3(const gx_device_pdf *pdev, byte *str,
-			       ulong id));
-
-/*
- * Adjust the FontName of a newly created FontDescriptor so that it is
- * unique if necessary.  If the name was changed, return 1.
- */
-int pdf_adjust_font_name(P3(const gx_device_pdf *pdev,
-			    pdf_font_descriptor_t *pfd,
-			    bool is_standard));
-
-/* Add an encoding difference to a font. */
-int pdf_add_encoding_difference(P5(gx_device_pdf *pdev, pdf_font_t *ppf,
-				   int chr, gs_font_base *bfont,
-				   gs_glyph glyph));
-
-/*
- * Get the width of a given character in a (base) font.  May add the width
- * to the widths cache (ppf->Widths).
- */
-int pdf_char_width(P4(pdf_font_t *ppf, int ch, gs_font *font,
-		      int *pwidth /* may be NULL */));
-
-/*
- * Get the width of a glyph in a (base) font.  Return 1 if the width should
- * not be cached.
- */
-int pdf_glyph_width(P4(pdf_font_t *ppf, gs_glyph glyph, gs_font *font,
-		       int *pwidth /* must not be NULL */));
-
-/*
- * Find the range of character codes that includes all the defined
- * characters in a font.
- */
-void pdf_find_char_range(P3(gs_font *font, int *pfirst, int *plast));
-
-/* Compute the FontDescriptor for a font or a font subset. */
-int pdf_compute_font_descriptor(P4(gx_device_pdf *pdev,
-				   pdf_font_descriptor_t *pfd, gs_font *font,
-				   const byte *used /*[32]*/));
-
-/* Unregister the standard fonts when cleaning up. */
-void pdf_unregister_fonts(P1(gx_device_pdf *pdev));
-
-/* ---------------- Exported by gdevpdfw.c ---------------- */
-
-/* Register a font for eventual writing (embedded or not). */
-int pdf_register_font(P3(gx_device_pdf *pdev, gs_font *font, pdf_font_t *ppf));
-
-/* Write out the font resources when wrapping up the output. */
-int pdf_write_font_resources(P1(gx_device_pdf *pdev));
-
-/*
- * Write a font descriptor.
- * (Exported only for gdevpdfe.c.)
- */
-int pdf_write_FontDescriptor(P2(gx_device_pdf *pdev,
-				const pdf_font_descriptor_t *pfd));
-
-/*
- * Write CIDSystemInfo for a CIDFont or CMap.
- * (Exported only for gdevpdff.c.)
- */
-int pdf_write_CIDFont_system_info(P2(gx_device_pdf *pdev,
-				     const gs_font *pcidfont));
-#ifndef gs_cmap_DEFINED
-#  define gs_cmap_DEFINED
-typedef struct gs_cmap_s gs_cmap_t;
-#endif
-int pdf_write_CMap_system_info(P2(gx_device_pdf *pdev,
-				  const gs_cmap_t *pcmap));
-
-/* ---------------- Exported by gdevpdfe.c ---------------- */
-
-/*
- * Write the FontDescriptor and FontFile* data for an embedded font.
- * Return a rangecheck error if the font can't be embedded.
- * (Exported only for gdevpdfw.c.)
- */
-int pdf_write_embedded_font(P2(gx_device_pdf *pdev,
-			       pdf_font_descriptor_t *pfd));
-
-#endif /* gdevpdff_INCLUDED */

+ 0 - 1576
sys/src/cmd/gs/src/gdevpdfs.c

@@ -1,1576 +0,0 @@
-/* Copyright (C) 1996, 2000, 2001 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevpdfs.c,v 1.7 2001/08/06 19:36:01 lpd Exp $ */
-/* Text string processing for PDF-writing driver. */
-#include "math_.h"
-#include "memory_.h"
-#include "string_.h"
-#include "gx.h"
-#include "gserrors.h"
-#include "gsmatrix.h"
-#include "gsutil.h"		/* for bytes_compare */
-#include "gxfixed.h"		/* for gxfcache.h */
-#include "gxfont.h"
-#include "gxfont0.h"
-#include "gxfont1.h"
-#include "gxfont42.h"
-#include "gxfcache.h"		/* for orig_fonts list */
-#include "gxfcid.h"
-#include "gxfcmap.h"
-#include "gxpath.h"		/* for getting current point */
-#include "gdevpsf.h"
-#include "gdevpdfx.h"
-#include "gdevpdff.h"
-#include "gdevpdfg.h"
-#include "gdevpdfo.h"		/* only to mark CMap as written */
-#include "scommon.h"
-
-/*
- * Continue processing text.  Per the check in pdf_text_begin, we know the
- * operation is not a charpath, but it could be anything else.
- */
-
-/*
- * Define quantities derived from the current font and CTM, used within
- * the text processing loop.
- */
-typedef struct pdf_text_process_state_s {
-    float chars;		/* scaled character spacing (Tc) */
-    float words;		/* scaled word spacing (Tw) */
-    float size;			/* font size for Tf */
-    gs_matrix text_matrix;	/* normalized FontMatrix * CTM for Tm */
-    int mode;			/* render mode (Tr) */
-    gs_font *font;
-    pdf_font_t *pdfont;
-} pdf_text_process_state_t;
-
-/*
- * Declare the procedures for processing different species of text.
- * These procedures may, but need not, copy pte->text into buf
- * (a caller-supplied buffer large enough to hold the string).
- */
-#define PROCESS_TEXT_PROC(proc)\
-  int proc(P4(gs_text_enum_t *pte, const void *vdata, void *vbuf, uint size))
-private PROCESS_TEXT_PROC(process_plain_text);
-private PROCESS_TEXT_PROC(process_composite_text);
-private PROCESS_TEXT_PROC(process_cmap_text);
-private PROCESS_TEXT_PROC(process_cid_text);
-
-/* Other forward declarations */
-private int encoding_find_glyph(P3(gs_font_base *bfont, gs_glyph font_glyph,
-				   gs_encoding_index_t index));
-private int pdf_process_string(P6(pdf_text_enum_t *penum, gs_string *pstr,
-				  const gs_matrix *pfmat, bool encoded,
-				  pdf_text_process_state_t *pts, int *pindex));
-private int pdf_update_text_state(P3(pdf_text_process_state_t *ppts,
-				     const pdf_text_enum_t *penum,
-				     const gs_matrix *pfmat));
-private int pdf_encode_char(P4(gx_device_pdf *pdev, int chr,
-			       gs_font_base *bfont, pdf_font_t *ppf));
-private int pdf_encode_glyph(P5(gx_device_pdf *pdev, int chr, gs_glyph glyph,
-				gs_font_base *bfont, pdf_font_t *ppf));
-private int pdf_write_text_process_state(P4(gx_device_pdf *pdev,
-			const gs_text_enum_t *pte,	/* for pdcolor, pis */
-			const pdf_text_process_state_t *ppts,
-			const gs_const_string *pstr));
-private int process_text_return_width(P7(const gs_text_enum_t *pte,
-					 gs_font *font, pdf_font_t *pdfont,
-					 const gs_matrix *pfmat,
-					 const gs_const_string *pstr,
-					 int *pindex, gs_point *pdpt));
-private int process_text_add_width(P7(gs_text_enum_t *pte,
-				      gs_font *font, const gs_matrix *pfmat,
-				      const pdf_text_process_state_t *ppts,
-				      const gs_const_string *pstr,
-				      int *pindex, gs_point *pdpt));
-
-/*
- * Continue processing text.  This is the 'process' procedure in the text
- * enumerator.
- */
-private int
-pdf_default_text_begin(gs_text_enum_t *pte, const gs_text_params_t *text,
-		       gs_text_enum_t **ppte)
-{
-    return gx_default_text_begin(pte->dev, pte->pis, text, pte->current_font,
-				 pte->path, pte->pdcolor, pte->pcpath,
-				 pte->memory, ppte);
-}
-int
-pdf_text_process(gs_text_enum_t *pte)
-{
-    pdf_text_enum_t *const penum = (pdf_text_enum_t *)pte;
-    uint operation = pte->text.operation;
-    const void *vdata;
-    uint size = pte->text.size - pte->index;
-    gs_text_enum_t *pte_default;
-    PROCESS_TEXT_PROC((*process));
-    int code = -1;		/* to force default implementation */
-#define BUF_SIZE 100		/* arbitrary > 0 */
-
-    /*
-     * If we fell back to the default implementation, continue using it.
-     */
- top:
-    pte_default = penum->pte_default;
-    if (pte_default) {
-	code = gs_text_process(pte_default);
-	gs_text_enum_copy_dynamic(pte, pte_default, true);
-	if (code)
-	    return code;
-	gs_text_release(pte_default, "pdf_text_process");
-	penum->pte_default = 0;
-	return 0;
-    }
-    {
-	gs_font *font = pte->current_font;
-
-	switch (font->FontType) {
-	case ft_CID_encrypted:
-	case ft_CID_TrueType:
-	    process = process_cid_text;
-	    break;
-	case ft_encrypted:
-	case ft_encrypted2:
-	case ft_TrueType:
-	    /* The data may be either glyphs or characters. */
-	    process = process_plain_text;
-	    break;
-	case ft_composite:
-	    process =
-		(((gs_font_type0 *)font)->data.FMapType == fmap_CMap ?
-		 process_cmap_text :
-		 process_composite_text);
-	    break;
-	default:
-	    goto skip;
-	}
-    }
-
-    /*
-     * We want to process the entire string in a single call, but we may
-     * need to modify it.  Copy it to a buffer.  Note that it may consist
-     * of bytes, gs_chars, or gs_glyphs.
-     */
-
-    if (operation & (TEXT_FROM_STRING | TEXT_FROM_BYTES))
-	vdata = pte->text.data.bytes;
-    else if (operation & TEXT_FROM_CHARS)
-	vdata = pte->text.data.chars, size *= sizeof(gs_char);
-    else if (operation & TEXT_FROM_SINGLE_CHAR)
-	vdata = &pte->text.data.d_char, size = sizeof(gs_char);
-    else if (operation & TEXT_FROM_GLYPHS)
-	vdata = pte->text.data.glyphs, size *= sizeof(gs_glyph);
-    else if (operation & TEXT_FROM_SINGLE_GLYPH)
-	vdata = &pte->text.data.d_glyph, size = sizeof(gs_glyph);
-    else
-	goto skip;
-
-    if (size <= BUF_SIZE) {
-	/* Use a union to ensure alignment. */
-	union bu_ {
-	    byte bytes[BUF_SIZE];
-	    gs_char chars[BUF_SIZE / sizeof(gs_char)];
-	    gs_glyph glyphs[BUF_SIZE / sizeof(gs_glyph)];
-	} buf;
-
-	code = process(pte, vdata, buf.bytes, size);
-    } else {
-	byte *buf = gs_alloc_string(pte->memory, size, "pdf_text_process");
-
-	if (buf == 0)
-	    return_error(gs_error_VMerror);
-	code = process(pte, vdata, buf, size);
-	gs_free_string(pte->memory, buf, size, "pdf_text_process");
-    }
-
- skip:
-    if (code < 0) {
-	/* Fall back to the default implementation. */
-	code = pdf_default_text_begin(pte, &pte->text, &pte_default);
-	if (code < 0)
-	    return code;
-	penum->pte_default = pte_default;
-	gs_text_enum_copy_dynamic(pte_default, pte, false);
-    }
-    /* The 'process' procedure might also have set pte_default itself. */
-    if (penum->pte_default && !code)
-	goto top;
-    return code;
-}
-
-/*
- * Process a text string in an ordinary font.
- */
-private int
-process_plain_text(gs_text_enum_t *pte, const void *vdata, void *vbuf,
-		   uint size)
-{
-    byte *const buf = vbuf;
-    uint operation = pte->text.operation;
-    pdf_text_enum_t *const penum = (pdf_text_enum_t *)pte;
-    int index = 0, code;
-    gs_string str;
-    bool encoded;
-    pdf_text_process_state_t text_state;
-
-    if (operation & (TEXT_FROM_STRING | TEXT_FROM_BYTES)) {
-	memcpy(buf, (const byte *)vdata + pte->index, size);
-	encoded = false;
-    } else if (operation & (TEXT_FROM_CHARS | TEXT_FROM_SINGLE_CHAR)) {
-	/* Check that all chars fit in a single byte. */
-	const gs_char *const cdata = vdata;
-	int i;
-
-	size /= sizeof(gs_char);
-	for (i = 0; i < size; ++i) {
-	    gs_char chr = cdata[pte->index + i];
-
-	    if (chr & ~0xff)
-		return_error(gs_error_rangecheck);
-	    buf[i] = (byte)chr;
-	}
-	encoded = false;
-    } else if (operation & (TEXT_FROM_GLYPHS | TEXT_FROM_SINGLE_GLYPH)) {
-	/*
-	 * Reverse-map the glyphs into the encoding.  Eventually, assign
-	 * them to empty slots if missing.
-	 */
-	const gs_glyph *const gdata = vdata;
-	gs_font *font = pte->current_font;
-	int i;
-
-	size /= sizeof(gs_glyph);
-	code = pdf_update_text_state(&text_state, penum, &font->FontMatrix);
-	if (code < 0)
-	    return code;
-	for (i = 0; i < size; ++i) {
-	    gs_glyph glyph = gdata[pte->index + i];
-	    int chr = pdf_encode_glyph((gx_device_pdf *)pte->dev, -1, glyph,
-				       (gs_font_base *)font,
-				       text_state.pdfont);
-
-	    if (chr < 0)
-		return_error(gs_error_rangecheck);
-	    buf[i] = (byte)chr;
-	}
-	encoded = true;
-    } else
-	return_error(gs_error_rangecheck);
-    str.data = buf;
-    if (size > 1 && (pte->text.operation & TEXT_INTERVENE)) {
-	/* Just do one character. */
-	str.size = 1;
-	code = pdf_process_string(penum, &str, NULL, encoded, &text_state,
-				  &index);
-	if (code >= 0) {
-	    pte->returned.current_char = buf[0];
-	    code = TEXT_PROCESS_INTERVENE;
-	}
-    } else {
-	str.size = size;
-	code = pdf_process_string(penum, &str, NULL, encoded, &text_state,
-				  &index);
-    }
-    pte->index += index;
-    return code;
-}
-
-/*
- * Process a text string in a composite font with FMapType != 9 (CMap).
- */
-private int
-process_composite_text(gs_text_enum_t *pte, const void *vdata, void *vbuf,
-		       uint size)
-{
-    byte *const buf = vbuf;
-    pdf_text_enum_t *const penum = (pdf_text_enum_t *)pte;
-    int index = 0, code;
-    gs_string str;
-    pdf_text_process_state_t text_state;
-    pdf_text_enum_t curr, prev;
-    gs_point total_width;
-
-    str.data = buf;
-    if (pte->text.operation &
-	(TEXT_FROM_ANY - (TEXT_FROM_STRING | TEXT_FROM_BYTES))
-	)
-	return_error(gs_error_rangecheck);
-    if (pte->text.operation & TEXT_INTERVENE) {
-	/* Not implemented. (PostScript doesn't even allow this case.) */
-	return_error(gs_error_rangecheck);
-    }
-    total_width.x = total_width.y = 0;
-    curr = *penum;
-    prev = curr;
-    prev.current_font = 0;
-    /* Scan runs of characters in the same leaf font. */
-    for ( ; ; ) {
-	int font_code, buf_index;
-	gs_font *new_font;
-
-	for (buf_index = 0; ; ++buf_index) {
-	    gs_char chr;
-	    gs_glyph glyph;
-
-	    gs_text_enum_copy_dynamic((gs_text_enum_t *)&prev,
-				      (gs_text_enum_t *)&curr, false);
-	    font_code = pte->orig_font->procs.next_char_glyph
-		((gs_text_enum_t *)&curr, &chr, &glyph);
-	    /*
-	     * We check for a font change by comparing the current
-	     * font, rather than testing the return code, because
-	     * it makes the control structure a little simpler.
-	     */
-	    switch (font_code) {
-	    case 0:		/* no font change */
-	    case 1:		/* font change */
-		new_font = curr.fstack.items[curr.fstack.depth].font;
-		if (new_font != prev.current_font)
-		    break;
-		if (chr != (byte)chr)	/* probably can't happen */
-		    return_error(gs_error_rangecheck);
-		buf[buf_index] = (byte)chr;
-		continue;
-	    case 2:		/* end of string */
-		break;
-	    default:	/* error */
-		return font_code;
-	    }
-	    break;
-	}
-	str.size = buf_index;
-	gs_text_enum_copy_dynamic((gs_text_enum_t *)&curr,
-				  (gs_text_enum_t *)&prev, false);
-	if (buf_index) {
-	    /* buf_index == 0 is only possible the very first time. */
-	    /*
-	     * The FontMatrix of leaf descendant fonts is not updated
-	     * by scalefont.  Compute the effective FontMatrix now.
-	     */
-	    const gs_matrix *psmat =
-		&curr.fstack.items[curr.fstack.depth - 1].font->FontMatrix;
-	    gs_matrix fmat;
-
-	    gs_matrix_multiply(&curr.current_font->FontMatrix, psmat,
-			       &fmat);
-	    code = pdf_process_string(&curr, &str, &fmat, false, &text_state,
-				      &index);
-	    if (code < 0)
-		return code;
-	    gs_text_enum_copy_dynamic(pte, (gs_text_enum_t *)&curr, true);
-	    if (pte->text.operation & TEXT_RETURN_WIDTH) {
-		pte->returned.total_width.x = total_width.x +=
-		    curr.returned.total_width.x;
-		pte->returned.total_width.y = total_width.y +=
-		    curr.returned.total_width.y;
-	    }
-	}
-	if (font_code == 2)
-	    break;
-	curr.current_font = new_font;
-    }
-    return code;
-}
-
-/*
- * Process a text string in a composite font with FMapType == 9 (CMap).
- */
-private const char *const standard_cmap_names[] = {
-    "Identity-H", "Identity-V",
-
-    "GB-EUC-H", "GB-EUC-V",
-    "GBpc-EUC-H", "GBpc-EUC-V",
-    "GBK-EUC-H", "GBK-EUC-V",
-    "UniGB-UCS2-H", "UniGB-UCS2-V",
-
-    "B5pc-H", "B5pc-V",
-    "ETen-B5-H", "ETen-B5-V",
-    "ETenms-B5-H", "ETenms-B5-V",
-    "CNS-EUC-H", "CNS-EUC-V",
-    "UniCNS-UCS2-H", "UniCNS-UCS2-V",
-
-    "83pv-RKSJ-H",
-    "90ms-RKSJ-H", "90ms-RKSJ-V",
-    "90msp-RKSJ-H", "90msp-RKSJ-V",
-    "90pv-RKSJ-H",
-    "Add-RKSJ-H", "Add-RKSJ-V",
-    "EUC-H", "EUC-V",
-    "Ext-RKSJ-H", "Ext-RKSJ-V",
-    "H", "V",
-    "UniJIS-UCS2-H", "UniJIS-UCS2-V",
-    "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V",
-
-    "KSC-EUC-H", "KSC-EUC-V",
-    "KSCms-UHC-H", "KSCms-UHC-V",
-    "KSCms-UHC-HW-H", "KSCms-UHC-HW-V",
-    "KSCpc-EUC-H",
-    "UniKS-UCS2-H", "UniKS-UCS2-V",
-
-    0
-};
-/* Mark a glyph and all its pieces as used. */
-private int
-mark_glyphs_used(gs_font *font, gs_glyph orig_glyph,
-		 const pdf_font_descriptor_t *pfd)
-{
-#define MAX_GLYPH_PIECES 10	/* arbitrary */
-    gs_glyph glyphs[MAX_GLYPH_PIECES];
-    int count = 1;
-
-    glyphs[0] = orig_glyph;
-    while (count > 0) {
-	gs_glyph glyph = glyphs[--count];
-
-	if (glyph >= gs_min_cid_glyph &&
-	    glyph - gs_min_cid_glyph < pfd->glyphs_count
-	    ) {
-	    int gid = glyph - gs_min_cid_glyph;
-	    int index = gid >> 3, mask = 0x80 >> (gid & 7);
-
-	    if (!(pfd->glyphs_used.data[index] & mask)) {
-		uint piece_count = 1;
-		uint max_pieces = MAX_GLYPH_PIECES - 1 - count;
-		psf_add_subset_pieces(&glyphs[count], &piece_count,
-				      max_pieces, max_pieces, font);
-
-		count += piece_count - 1;
-		if (count > MAX_GLYPH_PIECES)
-		    return_error(gs_error_limitcheck);
-		pfd->glyphs_used.data[index] |= mask;
-	    }
-	}
-    }
-#undef MAX_GLYPH_PIECES
-    return 0;
-}
-/* Record widths and CID => GID mappings. */
-private int
-scan_cmap_text(gs_text_enum_t *pte, gs_font *font, pdf_font_t *psubf,
-	       gs_font *subfont)
-{
-    pdf_font_descriptor_t *pfd = psubf->FontDescriptor;
-
-    for ( ; ; ) {
-	gs_char chr;
-	gs_glyph glyph;
-	int code = font->procs.next_char_glyph(pte, &chr, &glyph);
-
-	if (code == 2)		/* end of string */
-	    break;
-	if (code < 0)
-	    return code;
-	if (glyph >= gs_min_cid_glyph) {
-	    uint cid = glyph - gs_min_cid_glyph;
-
-	    if (cid < pfd->chars_count) {
-		int index = cid >> 3, mask = 0x80 >> (cid & 7);
-
-		if (!(pfd->chars_used.data[index] & mask)) {
-		    pfd->chars_used.data[index] |= mask;
-		    if (psubf->CIDToGIDMap) {
-			gs_font_cid2 *const subfont2 =
-			    (gs_font_cid2 *)subfont;
-			int gid =
-			    subfont2->cidata.CIDMap_proc(subfont2, glyph);
-
-			if (gid >= 0) {
-			    psubf->CIDToGIDMap[cid] = gid;
-			    mark_glyphs_used(subfont, gid + gs_min_cid_glyph,
-					     pfd);
-			}
-		    }
-		}
-		if (!(psubf->widths_known[index] & mask)) {
-		    int width;
-
-		    code = pdf_glyph_width(psubf, glyph, subfont, &width);
-		    if (code == 0) {
-			psubf->Widths[cid] = width;
-			psubf->widths_known[index] |= mask;
-		    }
-		}
-	    }
-	}
-    }
-    return 0;
-}
-private int
-process_cmap_text(gs_text_enum_t *pte, const void *vdata, void *vbuf,
-		  uint size)
-{
-    gx_device_pdf *const pdev = (gx_device_pdf *)pte->dev;
-    pdf_text_enum_t *const penum = (pdf_text_enum_t *)pte;
-    gs_font *font = pte->current_font;
-    gs_font_type0 *const pfont = (gs_font_type0 *)font;
-    gs_font *subfont = pfont->data.FDepVector[0];
-    const gs_cmap_t *pcmap = pfont->data.CMap;
-    const char *const *pcmn = standard_cmap_names;
-    pdf_resource_t *pcmres = 0;
-    pdf_font_t *ppf;
-    pdf_font_t *psubf;
-    pdf_text_process_state_t text_state;
-    int code;
-
-    if (pte->text.operation &
-	(TEXT_FROM_ANY - (TEXT_FROM_STRING | TEXT_FROM_BYTES))
-	)
-	return_error(gs_error_rangecheck);
-    if (pte->text.operation & TEXT_INTERVENE) {
-	/* Not implemented.  (PostScript doesn't allow TEXT_INTERVENE.) */
-	return_error(gs_error_rangecheck);
-    }
-    /* Require a single CID-keyed DescendantFont. */
-    if (pfont->data.fdep_size != 1)
-	return_error(gs_error_rangecheck);
-    switch (subfont->FontType) {
-    case ft_CID_encrypted:
-    case ft_CID_TrueType:
-	break;
-    default:
-	return_error(gs_error_rangecheck);
-    }
-
-    /*
-     * If the CMap isn't standard, write it out if necessary.
-     */
-
-    for (; *pcmn != 0; ++pcmn)
-	if (!bytes_compare((const byte *)*pcmn, strlen(*pcmn),
-			   pcmap->CMapName.data, pcmap->CMapName.size))
-	    break;
-    if (*pcmn == 0) {		/* not standard */
-	pcmres = pdf_find_resource_by_gs_id(pdev, resourceCMap, pcmap->id);
-	if (pcmres == 0) {
-	    /*
-	     * Create the CMap object, and write the stream.
-	     */
-	    pdf_data_writer_t writer;
-	    stream *s;
-
-	    code = pdf_begin_resource(pdev, resourceCMap, pcmap->id, &pcmres);
-	    if (code < 0)
-		return code;
-	    s = pdev->strm;
-	    pprintd1(s, "/WMode %d/CMapName", pcmap->WMode);
-	    pdf_put_name(pdev, pcmap->CMapName.data, pcmap->CMapName.size);
-	    stream_puts(s, "/CIDSystemInfo");
-	    code = pdf_write_CMap_system_info(pdev, pcmap);
-	    if (code < 0)
-		return code;
-	    code = pdf_begin_data_binary(pdev, &writer, false);
-	    if (code < 0)
-		return code;
-	    code = psf_write_cmap(writer.binary.strm, pcmap,
-				  pdf_put_name_chars_proc(pdev), NULL);
-	    if (code < 0)
-		return code;
-	    code = pdf_end_data(&writer);
-	    if (code < 0)
-		return code;
-	    pcmres->object->written = true; /* don't try to write at end */
-	}
-    }
-
-    /* Create pdf_font_t objects for the composite font and the CIDFont. */
-
-    pte->current_font = subfont; /* CIDFont */
-    {
-	/* See process_composite_text re the following matrix computation. */
-	gs_matrix fmat;
-
-	gs_matrix_multiply(&subfont->FontMatrix, &font->FontMatrix, &fmat);
-	code = pdf_update_text_state(&text_state, penum, &fmat);
-    }
-    pte->current_font = font;	/* restore composite font */
-    if (code < 0)
-	return code;
-    psubf = text_state.pdfont;
-    /* Make sure we always write glyph 0. */
-    psubf->FontDescriptor->chars_used.data[0] |= 0x80;
-    if (psubf->FontDescriptor->glyphs_used.data)
-	psubf->FontDescriptor->glyphs_used.data[0] |= 0x80;
-    code = pdf_update_text_state(&text_state, penum, &font->FontMatrix);
-    if (code < 0)
-	return code;
-    if (code > 0)
-	return_error(gs_error_rangecheck);
-    ppf = text_state.pdfont;
-    ppf->DescendantFont = psubf;
-    /* Copy the subfont name and type to the composite font. */
-    ppf->fname = psubf->FontDescriptor->FontName;
-    ppf->sub_font_type = subfont->FontType;
-    if (pcmres) {
-	sprintf(ppf->cmapname, "%ld 0 R", pdf_resource_id(pcmres));
-    } else {
-	strcpy(ppf->cmapname, "/");
-	strcat(ppf->cmapname, *pcmn);
-    }
-
-    /*
-     * Scan the string to mark CIDs as used, record widths, and
-     * (for CIDFontType 2 fonts) record CID => GID mappings and mark
-     * glyphs as used.
-     */
-
-    {
-	gs_text_enum_t orig;
-
-	gs_text_enum_copy_dynamic(&orig, pte, false);
-	code = scan_cmap_text(pte, font, psubf, subfont);
-	gs_text_enum_copy_dynamic(pte, &orig, false);
-    }
-
-    /*
-     * Let the default implementation do the rest of the work, but don't
-     * allow it to draw anything in the output; instead, append the
-     * characters to the output now.
-     */
-
-    {
-	gs_text_params_t text;
-	gs_text_enum_t *pte_default;
-	gs_const_string str;
-	int acode;
-
-	text = pte->text;
-	if (text.operation & TEXT_DO_DRAW)
-	    text.operation =
-		(text.operation - TEXT_DO_DRAW) | TEXT_DO_CHARWIDTH;
-	code = pdf_default_text_begin(pte, &text, &pte_default);
-	if (code < 0)
-	    return code;
-	str.data = vdata;
-	str.size = size;
-	if ((acode = pdf_write_text_process_state(pdev, pte, &text_state, &str)) < 0 ||
-	    (acode = pdf_append_chars(pdev, str.data, str.size)) < 0
-	    ) {
-	    gs_text_release(pte_default, "process_cmap_text");
-	    return acode;
-	}
-	/* Let the caller (pdf_text_process) handle pte_default. */
-	gs_text_enum_copy_dynamic(pte_default, pte, false);
-	penum->pte_default = pte_default;
-	return code;
-    }	
-}
-
-/*
- * Process a text string in a CIDFont.  (Only glyphshow is supported.)
- */
-private int
-process_cid_text(gs_text_enum_t *pte, const void *vdata, void *vbuf,
-		 uint size)
-{
-    uint operation = pte->text.operation;
-    gs_text_enum_t save;
-    gs_font *scaled_font = pte->current_font;
-    gs_font *font;		/* unscaled font */
-    gx_device_pdf *pdev = (gx_device_pdf *)pte->dev;
-    const gs_glyph *glyphs = (const gs_glyph *)vdata;
-    gs_matrix scale_matrix;
-    pdf_font_t *ppf;
-    int code;
-
-    if (!(operation & (TEXT_FROM_GLYPHS | TEXT_FROM_SINGLE_GLYPH)))
-	return_error(gs_error_rangecheck);
-
-    /*
-     * PDF doesn't support glyphshow directly: we need to create a Type 0
-     * font with an Identity CMap.  Make sure all the glyph numbers fit
-     * into 16 bits.  (Eventually we should support wider glyphs too.)
-     */
-    {
-	int i;
-	byte *pchars = vbuf;
-
-	for (i = 0; i * sizeof(gs_glyph) < size; ++i) {
-	    ulong gnum = glyphs[i] - gs_min_cid_glyph;
-
-	    if (gnum & ~0xffffL)
-		return_error(gs_error_rangecheck);
-	    *pchars++ = (byte)(gnum >> 8);
-	    *pchars++ = (byte)gnum;
-	}
-    }
-
-    /* Find the original (unscaled) version of this font. */
-
-    for (font = scaled_font; font->base != font; )
-	font = font->base;
-    /* Compute the scaling matrix. */
-    gs_matrix_invert(&font->FontMatrix, &scale_matrix);
-    gs_matrix_multiply(&scale_matrix, &scaled_font->FontMatrix, &scale_matrix);
-
-    /* Find or create the CIDFont resource. */
-
-    ppf = (pdf_font_t *)
-	pdf_find_resource_by_gs_id(pdev, resourceCIDFont, font->id);
-    /* Check for the possibility that the base font has been freed. */
-    if (ppf && ppf->FontDescriptor->written)
-	ppf = 0;
-    if (ppf == 0 || ppf->font == 0) {
-	code = pdf_create_pdf_font(pdev, font, &font->FontMatrix, &ppf);
-	if (code < 0)
-	    return code;
-    }
-
-    /* Create the CMap and Type 0 font if they don't exist already. */
-
-    if (!ppf->glyphshow_font) {
-	gs_memory_t *mem = font->memory;
-	gs_font_type0 *font0 = (gs_font_type0 *)
-	    gs_font_alloc(mem, &st_gs_font_type0,
-			  &gs_font_procs_default, NULL, "process_cid_text");
-	/* We allocate Encoding dynamically only for the sake of the GC. */
-	uint *encoding = (uint *)
-	    gs_alloc_bytes(mem, sizeof(uint), "process_cid_text");
-	gs_font **fdep = gs_alloc_struct_array(mem, 1, gs_font *,
-					       &st_gs_font_ptr_element,
-					       "process_cid_text");
-	gs_cmap_t *pcmap;
-	pdf_font_t *pgsf;
-
-	if (font0 == 0 || encoding == 0 || fdep == 0)
-	    return_error(gs_error_VMerror);
-	code = gs_cmap_create_identity(&pcmap, 2, font->WMode, mem);
-	if (code < 0)
-	    return code;
-
-	font0->FontMatrix = scale_matrix;
-	font0->FontType = ft_composite;
-	font0->procs.init_fstack = gs_type0_init_fstack;
-	font0->procs.define_font = 0; /* not called */
-	font0->procs.make_font = 0; /* not called */
-	font0->procs.next_char_glyph = gs_type0_next_char_glyph;
-	font0->key_name = font->key_name;
-	font0->font_name = font->font_name;
-	font0->data.FMapType = fmap_CMap;
-	encoding[0] = 0;
-	font0->data.Encoding = encoding;
-	font0->data.encoding_size = 1;
-	fdep[0] = font;
-	font0->data.FDepVector = fdep;
-	font0->data.fdep_size = 1;
-	font0->data.CMap = pcmap;
-
-	code = pdf_create_pdf_font(pdev, (gs_font *)font0, &font0->FontMatrix,
-				   &pgsf);
-	if (code < 0)
-	    return code;
-	pgsf->DescendantFont = ppf;
-	ppf->glyphshow_font = pgsf;
-    }
-
-    /* Now handle the glyphshow as a show in the Type 0 font. */
-
-    save = *pte;
-    pte->current_font = ppf->glyphshow_font->font;
-    /* Patch the operation temporarily for init_fstack. */
-    pte->text.operation = (operation & ~TEXT_FROM_ANY) | TEXT_FROM_BYTES;
-    /* Patch the data for process_cmap_text. */
-    pte->text.data.bytes = vbuf;
-    pte->text.size = size / sizeof(gs_glyph) * 2;
-    pte->index = 0;
-    gs_type0_init_fstack(pte, pte->current_font);
-    code = process_cmap_text(pte, vbuf, vbuf, pte->text.size);
-    pte->current_font = font;
-    pte->text = save.text;
-    pte->index = save.index + pte->index / 2;
-    pte->fstack = save.fstack;
-    return code;
-}
-
-/*
- * Internal procedure to process a string in a non-composite font.
- * Doesn't use or set pte->{data,size,index}; may use/set pte->xy_index;
- * may set pte->returned.total_width.
- */
-private int
-pdf_process_string(pdf_text_enum_t *penum, gs_string *pstr,
-		   const gs_matrix *pfmat, bool encoded,
-		   pdf_text_process_state_t *pts, int *pindex)
-{
-    gs_text_enum_t *const pte = (gs_text_enum_t *)penum;
-    gx_device_pdf *const pdev = (gx_device_pdf *)penum->dev;
-    gs_font *font;
-    const gs_text_params_t *text = &pte->text;
-    int i;
-    int code = 0, mask;
-
-    font = penum->current_font;
-    if (pfmat == 0)
-	pfmat = &font->FontMatrix;
-    if (text->operation & TEXT_RETURN_WIDTH)
-	gx_path_current_point(pte->path, &penum->origin);
-
-    switch (font->FontType) {
-    case ft_TrueType:
-    case ft_encrypted:
-    case ft_encrypted2:
-	break;
-    default:
-	return_error(gs_error_rangecheck);
-    }
-
-    code = pdf_update_text_state(pts, penum, pfmat);
-    if (code > 0) {
-	/* Try not to emulate ADD_TO_WIDTH if we don't have to. */
-	if (code & TEXT_ADD_TO_SPACE_WIDTH) {
-	    if (!memchr(pstr->data, pte->text.space.s_char, pstr->size))
-		code &= ~TEXT_ADD_TO_SPACE_WIDTH;
-	}
-    }
-    if (code < 0)
-	return code;
-    mask = code;
-
-    /* Check that all characters can be encoded. */
-
-    for (i = 0; i < pstr->size; ++i) {
-	int chr = pstr->data[i];
-	pdf_font_t *pdfont = pts->pdfont;
-	int code =
-	    (encoded ? chr :
-	     pdf_encode_char(pdev, chr, (gs_font_base *)font, pdfont));
-
-	if (code < 0)
-	    return code;
-	/*
-	 * For incrementally loaded fonts, expand FirstChar..LastChar
-	 * if needed.
-	 */
-	if (code < pdfont->FirstChar)
-	    pdfont->FirstChar = code;
-	if (code > pdfont->LastChar)
-	    pdfont->LastChar = code;
-	pstr->data[i] = (byte)code;
-    }
-
-    /* Bring the text-related parameters in the output up to date. */
-    code = pdf_write_text_process_state(pdev, pte, pts,
-					(gs_const_string *)pstr);
-    if (code < 0)
-	return code;
-
-    if (text->operation & TEXT_REPLACE_WIDTHS) {
-	gs_point w;
-	gs_matrix tmat;
-
-	w.x = w.y = 0;
-	tmat = pts->text_matrix;
-	for (i = 0; i < pstr->size; *pindex = ++i, pte->xy_index++) {
-	    gs_point d, dpt;
-
-	    if (text->operation & TEXT_DO_DRAW) {
-		code = pdf_append_chars(pdev, pstr->data + i, 1);
-		if (code < 0)
-		    return code;
-	    }
-	    gs_text_replaced_width(&pte->text, pte->xy_index, &d);
-	    w.x += d.x, w.y += d.y;
-	    gs_distance_transform(d.x, d.y, &ctm_only(pte->pis), &dpt);
-	    tmat.tx += dpt.x;
-	    tmat.ty += dpt.y;
-	    if (i + 1 < pstr->size) {
-		code = pdf_set_text_matrix(pdev, &tmat);
-		if (code < 0)
-		    return code;
-	    }
-	}
-	pte->returned.total_width = w;
-	if (text->operation & TEXT_RETURN_WIDTH)
-	    code = gx_path_add_point(pte->path, float2fixed(tmat.tx),
-				     float2fixed(tmat.ty));
-	return code;
-    }
-
-    /* Write out the characters, unless we have to emulate ADD_TO_WIDTH. */
-    if (mask == 0 && (text->operation & TEXT_DO_DRAW)) {
-	code = pdf_append_chars(pdev, pstr->data, pstr->size);
-	if (code < 0)
-	    return code;
-    }
-
-    /*
-     * If we don't need the total width, and don't have to emulate
-     * ADD_TO_WIDTH, return now.  If the widths are available directly from
-     * the font, place the characters and/or compute and return the total
-     * width now.  Otherwise, call the default implementation.
-     */
-    {
-	gs_point dpt;
-
-	if (mask) {
-	    /*
-	     * Cancel the word and character spacing, since we're going
-	     * to emulate them.
-	     */
-	    pts->words = pts->chars = 0;
-	    code = pdf_write_text_process_state(pdev, pte, pts,
-						(gs_const_string *)pstr);
-	    if (code < 0)
-		return code;
-	    code = process_text_add_width(pte, font, pfmat, pts,
-					  (gs_const_string *)pstr,
-					  pindex, &dpt);
-	    if (code < 0)
-		return code;
-	    if (!(text->operation & TEXT_RETURN_WIDTH))
-		return 0;
-	} else if (!(text->operation & TEXT_RETURN_WIDTH))
-	    return 0;
-	else {
-	    code = process_text_return_width(pte, font, pts->pdfont, pfmat,
-					     (gs_const_string *)pstr,
-					     pindex, &dpt);
-	    if (code < 0)
-		return code;
-	}
-	pte->returned.total_width = dpt;
-	gs_distance_transform(dpt.x, dpt.y, &ctm_only(pte->pis), &dpt);
-	return gx_path_add_point(pte->path,
-				 penum->origin.x + float2fixed(dpt.x),
-				 penum->origin.y + float2fixed(dpt.y));
-    }
-}
-
-/*
- * Compute the cached values in the text processing state from the text
- * parameters, current_font, and pis->ctm.  Return either an error code (<
- * 0) or a mask of operation attributes that the caller must emulate.
- * Currently the only such attributes are TEXT_ADD_TO_ALL_WIDTHS and
- * TEXT_ADD_TO_SPACE_WIDTH.
- */
-private int
-transform_delta_inverse(const gs_point *pdelta, const gs_matrix *pmat,
-			gs_point *ppt)
-{
-    int code = gs_distance_transform_inverse(pdelta->x, pdelta->y, pmat, ppt);
-    gs_point delta;
-
-    if (code < 0)
-	return code;
-    if (ppt->y == 0)
-	return 0;
-    /* Check for numerical fuzz. */
-    code = gs_distance_transform(ppt->x, 0.0, pmat, &delta);
-    if (code < 0)
-	return 0;		/* punt */
-    if (fabs(delta.x - pdelta->x) < 0.01 && fabs(delta.y - pdelta->y) < 0.01) {
-	/* Close enough to y == 0: device space error < 0.01 pixel. */
-	ppt->y = 0;
-    }
-    return 0;
-}
-private int
-pdf_update_text_state(pdf_text_process_state_t *ppts,
-		      const pdf_text_enum_t *penum, const gs_matrix *pfmat)
-{
-    gx_device_pdf *const pdev = (gx_device_pdf *)penum->dev;
-    gs_font *font = penum->current_font;
-    pdf_font_t *ppf;
-    gs_fixed_point cpt;
-    gs_matrix orig_matrix, smat, tmat;
-    double
-	sx = pdev->HWResolution[0] / 72.0,
-	sy = pdev->HWResolution[1] / 72.0;
-    float chars = 0, words = 0, size;
-    int mask = 0;
-    int code = gx_path_current_point(penum->path, &cpt);
-
-    if (code < 0)
-	return code;
-
-    pdf_font_orig_matrix(font, &orig_matrix);
-    DISCARD(pdf_find_orig_font(pdev, font, &orig_matrix));
-
-    /* Compute the scaling matrix and combined matrix. */
-
-    gs_matrix_invert(&orig_matrix, &smat);
-    gs_matrix_multiply(&smat, pfmat, &smat);
-    tmat = ctm_only(penum->pis);
-    tmat.tx = tmat.ty = 0;
-    gs_matrix_multiply(&smat, &tmat, &tmat);
-
-    /* Try to find a reasonable size value.  This isn't necessary, */
-    /* but it's worth a little effort. */
-
-    size = fabs(tmat.yy) / sy;
-    if (size < 0.01)
-	size = fabs(tmat.xx) / sx;
-    if (size < 0.01)
-	size = 1;
-
-    /* Check for spacing parameters we can handle, and transform them. */
-
-    if (penum->text.operation & TEXT_ADD_TO_ALL_WIDTHS) {
-	gs_point pt;
-
-	code = transform_delta_inverse(&penum->text.delta_all, &smat, &pt);
-	if (code >= 0 && pt.y == 0)
-	    chars = pt.x * size;
-	else
-	    mask |= TEXT_ADD_TO_ALL_WIDTHS;
-    }
-
-    if (penum->text.operation & TEXT_ADD_TO_SPACE_WIDTH) {
-	gs_point pt;
-
-	code = transform_delta_inverse(&penum->text.delta_space, &smat, &pt);
-	if (code >= 0 && pt.y == 0 && penum->text.space.s_char == 32)
-	    words = pt.x * size;
-	else
-	    mask |= TEXT_ADD_TO_SPACE_WIDTH;
-    }
-
-    /* Find or create the font resource. */
-
-    ppf = (pdf_font_t *)
-	pdf_find_resource_by_gs_id(pdev, pdf_font_resource_type(font),
-				   font->id);
-    /* Check for the possibility that the base font has been freed. */
-    if (ppf && ppf->FontDescriptor && ppf->FontDescriptor->written)
-	ppf = 0;
-    if (ppf == 0 || ppf->font == 0) {
-	code = pdf_create_pdf_font(pdev, font, &orig_matrix, &ppf);
-	if (code < 0)
-	    return code;
-    }
-
-    /* Store the updated values. */
-
-    tmat.xx /= size;
-    tmat.xy /= size;
-    tmat.yx /= size;
-    tmat.yy /= size;
-    tmat.tx += fixed2float(cpt.x);
-    tmat.ty += fixed2float(cpt.y);
-
-    ppts->chars = chars;
-    ppts->words = words;
-    ppts->size = size;
-    ppts->text_matrix = tmat;
-    ppts->mode = (font->PaintType == 0 ? 0 : 1);
-    ppts->font = font;
-    ppts->pdfont = ppf;
-
-    return mask;
-}
-
-/*
- * For a given character, check whether the encoding of bfont (the current
- * font) is compatible with that of the underlying unscaled, possibly
- * standard, base font, and if not, whether we can re-encode the character
- * using the base font's encoding.  Return the (possibly re-encoded)
- * character if successful.
- *
- * We have to handle re-encoded Type 1 fonts, because TeX output makes
- * constant use of them.  We have several alternatives for how to handle
- * characters whose encoding doesn't match their encoding in the base font's
- * built-in encoding.  If a character's glyph doesn't match the character's
- * glyph in the encoding built up so far, we check if the font has that
- * glyph at all; if not, we fall back to a bitmap.  Otherwise, we use one or
- * both of the following algorithms:
- *
- *      1. If this is the first time a character at this position has been
- *      seen, assign its glyph to that position in the encoding.
- *      We do this step if the device parameter ReAssignCharacters is true.
- *      (This is the default.)
- *
- *      2. If the glyph is present in the encoding at some other position,
- *      substitute that position for the character; otherwise, assign the
- *      glyph to an unoccupied (.notdef) position.
- *      We do this step if the device parameter ReEncodeCharacters is true.
- *      (This is the default.)
- *
- *      3. Finally, fall back to using a bitmap.
- *
- * If it is essential that all strings in the output contain exactly the
- * same character codes as the input, set ReEncodeCharacters to false.  If
- * it is important that strings be searchable, but some non-searchable
- * strings can be tolerated, the defaults are appropriate.  If searchability
- * is not important, set ReAssignCharacters to false.
- * 
- * Since the chars_used bit vector keeps track of characters by their
- * position in the Encoding, not by their glyph identifier, it can't record
- * use of unencoded characters.  Therefore, if we ever use an unencoded
- * character in an embedded font, we force writing the entire font rather
- * than a subset.  This is inelegant but (for the moment) too awkward to
- * fix.
- *
- * Acrobat Reader 3's Print function has a bug that make re-encoded
- * characters print as blank if the font is substituted (not embedded or one
- * of the base 14).  To work around this bug, when CompatibilityLevel <= 1.2,
- * for non-embedded non-base fonts, no substitutions or re-encodings are
- * allowed.
- */
-inline private void
-record_used(pdf_font_descriptor_t *pfd, int c)
-{
-    pfd->chars_used.data[c >> 3] |= 0x80 >> (c & 7);
-}
-inline private gs_encoding_index_t
-base_encoding_index(const pdf_font_t *ppf)
-{
-    return
-	(ppf->BaseEncoding != ENCODING_INDEX_UNKNOWN ? ppf->BaseEncoding :
-	 ppf->index >= 0 ? pdf_standard_fonts[ppf->index].base_encoding :
-	 ENCODING_INDEX_UNKNOWN);
-}
-
-private int
-pdf_encode_char(gx_device_pdf *pdev, int chr, gs_font_base *bfont,
-		pdf_font_t *ppf)
-{
-    pdf_font_descriptor_t *const pfd = ppf->FontDescriptor;
-    /*
-     * bfont is the current font in which the text is being shown.
-     * ei is its encoding_index.
-     */
-    gs_encoding_index_t ei = bfont->encoding_index;
-    /*
-     * base_font is the font that underlies this PDF font (i.e., this PDF
-     * font is base_font plus some possible Encoding and Widths differences,
-     * and possibly a different FontMatrix).  base_font is 0 iff this PDF
-     * font is one of the standard 14 (i.e., ppf->index >= 0).  bei is the
-     * index of the BaseEncoding (explicit or, for the standard fonts,
-     * implicit) that will be written in the PDF file: it is not necessarily
-     * the same as base_font->encoding_index, or even
-     * base_font->nearest_encoding_index.
-     */
-    gs_font *base_font = pfd->base_font;
-    bool have_font = base_font != 0 && base_font->FontType != ft_composite;
-    bool is_standard = ppf->index >= 0;
-    gs_encoding_index_t bei = base_encoding_index(ppf);
-    pdf_encoding_element_t *pdiff = ppf->Differences;
-    /*
-     * If set, font_glyph is the glyph currently associated with chr in
-     * base_font + bei + diffs; glyph is the glyph corresponding to chr in
-     * bfont.
-     */
-    gs_glyph font_glyph, glyph;
-#define IS_USED(c)\
-  (((pfd)->chars_used.data[(c) >> 3] & (0x80 >> ((c) & 7))) != 0)
-
-    if (ei == bei && ei != ENCODING_INDEX_UNKNOWN && pdiff == 0) {
-	/*
-	 * Just note that the character has been used with its original
-	 * encoding.
-	 */
-	record_used(pfd, chr);
-	return chr;
-    }
-    if (!is_standard && !have_font)
-	return_error(gs_error_undefined); /* can't encode */
-
-#define ENCODE_NO_DIFF(ch)\
-   (bei != ENCODING_INDEX_UNKNOWN ?\
-    bfont->procs.callbacks.known_encode((gs_char)(ch), bei) :\
-    /* have_font */ bfont->procs.encode_char(base_font, ch, GLYPH_SPACE_NAME))
-#define HAS_DIFF(ch) (pdiff != 0 && pdiff[ch].str.data != 0)
-#define ENCODE_DIFF(ch) (pdiff[ch].glyph)
-#define ENCODE(ch)\
-  (HAS_DIFF(ch) ? ENCODE_DIFF(ch) : ENCODE_NO_DIFF(ch))
-
-    font_glyph = ENCODE(chr);
-    glyph =
-	(ei == ENCODING_INDEX_UNKNOWN ?
-	 bfont->procs.encode_char((gs_font *)bfont, chr, GLYPH_SPACE_NAME) :
-	 bfont->procs.callbacks.known_encode(chr, ei));
-    if (glyph == font_glyph) {
-	record_used(pfd, chr);
-	return chr;
-    }
-
-    return pdf_encode_glyph(pdev, chr, glyph, bfont, ppf);
-}
-/*
- * Encode a glyph that doesn't appear in the default place in an encoding.
- * chr will be -1 if we are encoding a glyph for glyphshow.
- */
-private int
-pdf_encode_glyph(gx_device_pdf *pdev, int chr, gs_glyph glyph,
-		 gs_font_base *bfont, pdf_font_t *ppf)
-{
-    pdf_font_descriptor_t *const pfd = ppf->FontDescriptor;
-    pdf_encoding_element_t *pdiff = ppf->Differences;
-    gs_font *base_font = pfd->base_font;
-    gs_encoding_index_t bei = base_encoding_index(ppf);
-
-    if (ppf->index < 0 && pfd->FontFile_id == 0 &&
-	pdev->CompatibilityLevel <= 1.2
-	) {
-	/*
-	 * Work around the bug in Acrobat Reader 3's Print function
-	 * that makes re-encoded characters in substituted fonts
-	 * print as blank.
-	 */
-	return_error(gs_error_undefined);
-    }
-
-    /*
-     * TrueType fonts don't allow Differences in the encoding, but we might
-     * be able to re-encode the character if it appears elsewhere in the
-     * encoding.
-     */
-    if (bfont->FontType == ft_TrueType) {
-	if (pdev->ReEncodeCharacters) {
-	    int c;
-
-	    for (c = 0; c < 256; ++c)
-		if (ENCODE_NO_DIFF(c) == glyph) {
-		    record_used(pfd, c);
-		    return c;
-		}
-	}
-	return_error(gs_error_undefined);
-    }
-
-    /*
-     * If the font isn't going to be embedded, check whether this glyph is
-     * available in the base font's glyph set at all.
-     */
-    if (pfd->FontFile_id == 0) {
-	switch (bei) {
-	case ENCODING_INDEX_STANDARD:
-	case ENCODING_INDEX_ISOLATIN1:
-	case ENCODING_INDEX_WINANSI:
-	case ENCODING_INDEX_MACROMAN:
-	    if (encoding_find_glyph(bfont, glyph, ENCODING_INDEX_ALOGLYPH) < 0
-	    /*
-	     * One would expect that the standard Latin character set in PDF
-	     * 1.3, which was released after PostScript 3, would be the full
-	     * 315-character PostScript 3 set.  However, the PDF 1.3
-	     * reference manual clearly specifies that the PDF 1.3 Latin
-	     * character set is the smaller PostScript Level 2 set,
-	     * and we have verified that this is the case in Acrobat 4.
-	     * Therefore, we have commented out the second part of the
-	     * conditional below.
-	     */
-#if 0
-		&&
-		(pdev->CompatibilityLevel < 1.3 ||
-		 encoding_find_glyph(bfont, glyph, ENCODING_INDEX_ALXGLYPH) < 0)
-#endif
-		)
-		return_error(gs_error_undefined);
-	default:
-	    break;
-	}
-    }
-
-    if (pdev->ReAssignCharacters && chr >= 0) {
-	/*
-	 * If this is the first time we've seen this character,
-	 * assign the glyph to its position in the encoding.
-	 */
-	if (!HAS_DIFF(chr) && !IS_USED(chr)) {
-	    int code =
-		pdf_add_encoding_difference(pdev, ppf, chr, bfont, glyph);
-
-	    if (code >= 0) {
-		/*
-		 * As noted in the comments at the beginning of this file,
-		 * we don't have any way to record, for the purpose of
-		 * subsetting, the fact that a particular unencoded glyph
-		 * was used.  If this glyph doesn't appear anywhere else in
-		 * the base encoding, fall back to writing the entire font.
-		 */
-		int c;
-
-		for (c = 0; c < 256; ++c)
-		    if (ENCODE_NO_DIFF(c) == glyph)
-			break;
-		if (c < 256)	/* found */
-		    record_used(pfd, c);
-		else {		/* not found */
-		    if (pfd->do_subset == FONT_SUBSET_YES)
-			return_error(gs_error_undefined);
-		    pfd->do_subset = FONT_SUBSET_NO;
-		}
-		return chr;
-	    }
-	}
-    }
-
-    if (pdev->ReEncodeCharacters || chr < 0) {
-	/*
-	 * Look for the glyph at some other position in the encoding.
-	 */
-	int c, code;
-
-	for (c = 0; c < 256; ++c) {
-	    if (HAS_DIFF(c)) {
-		if (ENCODE_DIFF(c) == glyph)
-		    return c;
-	    } else if (ENCODE_NO_DIFF(c) == glyph) {
-		record_used(pfd, c);
-		return c;
-	    }
-	}
-	/*
-	 * The glyph isn't encoded anywhere.  Look for a
-	 * never-referenced .notdef position where we can put it.
-	 */
-	for (c = 0; c < 256; ++c) {
-	    gs_glyph font_glyph;
-
-	    if (HAS_DIFF(c) || IS_USED(c))
-		continue; /* slot already referenced */
-	    font_glyph = ENCODE_NO_DIFF(c);
-	    if (font_glyph == gs_no_glyph ||
-		gs_font_glyph_is_notdef(bfont, font_glyph)
-		)
-		break;
-	}
-	if (c == 256)	/* no .notdef positions left */
-	    return_error(gs_error_undefined);
-	code = pdf_add_encoding_difference(pdev, ppf, c, bfont, glyph);
-	if (code < 0)
-	    return code;
-	/* See under ReAssignCharacters above regarding the following: */
-	if (pfd->do_subset == FONT_SUBSET_YES)
-	    return_error(gs_error_undefined);
-	pfd->do_subset = FONT_SUBSET_NO;
-	return c;
-    }
-
-    return_error(gs_error_undefined);
-
-#undef IS_USED
-#undef ENCODE_NO_DIFF
-#undef HAS_DIFF
-#undef ENCODE_DIFF
-#undef ENCODE
-}
-
-/*
- * Write out commands to make the output state match the processing state.
- */
-private double
-font_matrix_scaling(const gs_font *font)
-{
-    return fabs((font->FontMatrix.yy != 0 ? font->FontMatrix.yy :
-		 font->FontMatrix.yx));
-}
-private int
-pdf_write_text_process_state(gx_device_pdf *pdev,
-			     const gs_text_enum_t *pte,	/* for pdcolor, pis */
-			     const pdf_text_process_state_t *ppts,
-			     const gs_const_string *pstr)
-{
-    int code;
-
-    pdf_set_font_and_size(pdev, ppts->pdfont, ppts->size);
-    code = pdf_set_text_matrix(pdev, &ppts->text_matrix);
-    if (code < 0)
-	return code;
-
-    if (pdev->text.character_spacing != ppts->chars &&
-	pstr->size + pdev->text.buffer_count > 1
-	) {
-	code = pdf_open_page(pdev, PDF_IN_TEXT);
-	if (code < 0)
-	    return code;
-	pprintg1(pdev->strm, "%g Tc\n", ppts->chars);
-	pdev->text.character_spacing = ppts->chars;
-    }
-
-    if (pdev->text.word_spacing != ppts->words &&
-	(memchr(pstr->data, 32, pstr->size) ||
-	 memchr(pdev->text.buffer, 32, pdev->text.buffer_count))
-	) {
-	code = pdf_open_page(pdev, PDF_IN_TEXT);
-	if (code < 0)
-	    return code;
-	pprintg1(pdev->strm, "%g Tw\n", ppts->words);
-	pdev->text.word_spacing = ppts->words;
-    }
-
-    if (pdev->text.render_mode != ppts->mode) {
-	code = pdf_open_page(pdev, PDF_IN_TEXT);
-	if (code < 0)
-	    return code;
-	pprintd1(pdev->strm, "%d Tr\n", ppts->mode);
-	if (ppts->mode) {
-	    /* Also write all the parameters for stroking. */
-	    gs_imager_state *pis = pte->pis;
-	    float save_width = pis->line_params.half_width;
-	    const gs_font *font = ppts->font;
-	    const gs_font *bfont = font;
-	    double scaled_width = font->StrokeWidth;
-
-	    /*
-	     * The font's StrokeWidth is in the character coordinate system,
-	     * which means that it should be scaled by the inverse of any
-	     * scaling in the FontMatrix.  Do the best we can with this.
-	     */
-	    while (bfont != bfont->base)
-		bfont = bfont->base;
-	    scaled_width *= font_matrix_scaling(bfont) /
-		font_matrix_scaling(font);
-	    pis->line_params.half_width = scaled_width / 2;
-	    code = pdf_prepare_stroke(pdev, pis);
-	    if (code >= 0) {
-		/*
-		 * See stream_to_text in gdevpdfu.c re the computation of
-		 * the scaling value.
-		 */
-		double scale = 72.0 / pdev->HWResolution[1];
-
-		code = gdev_vector_prepare_stroke((gx_device_vector *)pdev,
-						  pis, NULL, NULL, scale);
-	    }
-	    pis->line_params.half_width = save_width;
-	    if (code < 0)
-		return code;
-	}
-	pdev->text.render_mode = ppts->mode;
-    }
-
-    return 0;
-}
-
-/* Compute the total text width (in user space). */
-private int
-process_text_return_width(const gs_text_enum_t *pte, gs_font *font,
-			  pdf_font_t *pdfont, const gs_matrix *pfmat,
-			  const gs_const_string *pstr,
-			  int *pindex, gs_point *pdpt)
-{
-    int i, w;
-    double scale = (font->FontType == ft_TrueType ? 0.001 : 1.0);
-    gs_point dpt;
-    int num_spaces = 0;
-    int space_char =
-	(pte->text.operation & TEXT_ADD_TO_SPACE_WIDTH ?
-	 pte->text.space.s_char : -1);
-
-    for (i = *pindex, w = 0; i < pstr->size; ++i) {
-	int cw;
-	int code = pdf_char_width(pdfont, pstr->data[i], font, &cw);
-
-	if (code < 0)
-	    return code;
-	w += cw;
-	if (pstr->data[i] == space_char)
-	    ++num_spaces;
-    }
-    gs_distance_transform(w * scale, 0.0, pfmat, &dpt);
-    if (pte->text.operation & TEXT_ADD_TO_ALL_WIDTHS) {
-	int num_chars = pstr->size - pte->index;
-
-	dpt.x += pte->text.delta_all.x * num_chars;
-	dpt.y += pte->text.delta_all.y * num_chars;
-    }
-    if (pte->text.operation & TEXT_ADD_TO_SPACE_WIDTH) {
-	dpt.x += pte->text.delta_space.x * num_spaces;
-	dpt.y += pte->text.delta_space.y * num_spaces;
-    }
-    *pindex = i;
-    *pdpt = dpt;
-    return 0;
-}
-/*
- * Emulate TEXT_ADD_TO_ALL_WIDTHS and/or TEXT_ADD_TO_SPACE_WIDTH.
- * We know that the Tw and Tc values are zero.
- */
-private int
-process_text_add_width(gs_text_enum_t *pte, gs_font *font,
-		       const gs_matrix *pfmat,
-		       const pdf_text_process_state_t *ppts,
-		       const gs_const_string *pstr,
-		       int *pindex, gs_point *pdpt)
-{
-    gx_device_pdf *const pdev = (gx_device_pdf *)pte->dev;
-    int i, w;
-    double scale = (font->FontType == ft_TrueType ? 0.001 : 1.0);
-    gs_point dpt;
-	gs_matrix tmat;
-    int space_char =
-	(pte->text.operation & TEXT_ADD_TO_SPACE_WIDTH ?
-	 pte->text.space.s_char : -1);
-    int code = 0;
-    bool move = false;
-
-    dpt.x = dpt.y = 0;
-    tmat = ppts->text_matrix;
-    for (i = *pindex, w = 0; i < pstr->size; ++i) {
-	int cw;
-	int code = pdf_char_width(ppts->pdfont, pstr->data[i], font, &cw);
-	gs_point wpt;
-
-	if (code < 0)
-	    break;
-	if (move) {
-	    gs_point mpt;
-
-	    gs_distance_transform(dpt.x, dpt.y, &ctm_only(pte->pis), &mpt);
-	    tmat.tx = ppts->text_matrix.tx + mpt.x;
-	    tmat.ty = ppts->text_matrix.ty + mpt.y;
-	    code = pdf_set_text_matrix(pdev, &tmat);
-	    if (code < 0)
-		break;
-	    move = false;
-	}
-	if (pte->text.operation & TEXT_DO_DRAW) {
-	    code = pdf_append_chars(pdev, &pstr->data[i], 1);
-	    if (code < 0)
-		break;
-	}
-	gs_distance_transform(cw * scale, 0.0, pfmat, &wpt);
-	dpt.x += wpt.x, dpt.y += wpt.y;
-	if (pte->text.operation & TEXT_ADD_TO_ALL_WIDTHS) {
-	    dpt.x += pte->text.delta_all.x;
-	    dpt.y += pte->text.delta_all.y;
-	    move = true;
-	}
-	if (pstr->data[i] == space_char) {
-	    dpt.x += pte->text.delta_space.x;
-	    dpt.y += pte->text.delta_space.y;
-	    move = true;
-	}
-    }
-    *pindex = i;		/* only do the part we haven't done yet */
-    *pdpt = dpt;
-    return code;
-}
-
-/* ---------------- Text and font utilities ---------------- */
-
-/*
- * Try to find a glyph in a (pseudo-)encoding.  If present, return the
- * index (character code); if absent, return -1.
- */
-private int
-encoding_find_glyph(gs_font_base *bfont, gs_glyph font_glyph,
-		    gs_encoding_index_t index)
-{
-    int ch;
-    gs_glyph glyph;
-
-    for (ch = 0;
-	 (glyph = bfont->procs.callbacks.known_encode((gs_char)ch, index)) !=
-	     gs_no_glyph;
-	 ++ch)
-	if (glyph == font_glyph)
-	    return ch;
-    return -1;
-}

+ 0 - 1
sys/src/cmd/gs/src/gdevpdft.c

@@ -349,7 +349,6 @@ gdev_pdf_create_compositor(gx_device *dev,
 	    default :
 		return_error(gs_error_unregistered); /* Must not happen. */
 	}
-	return 0;
     }
     return psdf_create_compositor(dev, pcdev, pct, pis, memory);
 }

+ 0 - 858
sys/src/cmd/gs/src/gdevpdfw.c

@@ -1,858 +0,0 @@
-/* Copyright (C) 1999, 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gdevpdfw.c,v 1.12 2001/07/30 15:11:00 lpd Exp $ */
-/* Font writing for pdfwrite driver. */
-#include "memory_.h"
-#include "string_.h"
-#include "gx.h"
-#include "gsalloc.h"		/* for patching font memory */
-#include "gsbittab.h"
-#include "gserrors.h"
-#include "gsmatrix.h"
-#include "gsutil.h"		/* for bytes_compare */
-#include "gxfcid.h"
-#include "gxfcmap.h"
-#include "gxfont.h"
-#include "gxfont0.h"
-#include "gdevpdfx.h"
-#include "gdevpdff.h"
-#include "gdevpsf.h"
-#include "scommon.h"
-
-/* Get the ID of various kinds of resources, with type checking. */
-inline private long
-pdf_font_id(const pdf_font_t *pdfont)
-{
-    return pdf_resource_id((const pdf_resource_t *)pdfont);
-}
-inline private long
-pdf_font_descriptor_id(const pdf_font_descriptor_t *pfd)
-{
-    return pdf_resource_id((const pdf_resource_t *)pfd);
-}
-inline private long
-pdf_char_proc_id(const pdf_char_proc_t *pcp)
-{
-    return pdf_resource_id((const pdf_resource_t *)pcp);
-}
-
-/* Write the Widths for a font. */
-private int
-pdf_write_Widths(gx_device_pdf *pdev, int first, int last,
-		 const int widths[256])
-{
-    stream *s = pdev->strm;
-    int i;
-
-    pprintd2(s, "/FirstChar %d/LastChar %d/Widths[", first, last);
-    for (i = first; i <= last; ++i)
-	pprintd1(s, (i & 15 ? " %d" : "\n%d"), widths[i]);
-    stream_puts(s, "]\n");
-    return 0;
-}
-
-/* Write a FontBBox dictionary element. */
-private int
-pdf_write_font_bbox(gx_device_pdf *pdev, const gs_int_rect *pbox)
-{
-    stream *s = pdev->strm;
-    /* AR 4 doesn't like fonts with empty FontBBox which
-     * happens when the font contains only space characters.
-     * Small bbox causes AR 4 to display a hairline. So we use
-     * the full BBox.
-     */ 
-    int x= pbox->q.x + ((pbox->p.x == pbox->q.x) ? 1000 : 0);
-    int y= pbox->q.y + ((pbox->p.y == pbox->q.y) ? 1000 : 0);
-
-    pprintd4(s, "/FontBBox[%d %d %d %d]",
-	     pbox->p.x, pbox->p.y, x, y);
-    return 0;
-}
-
-/* Write a synthesized bitmap font resource. */
-private int
-pdf_write_synthesized_type3(gx_device_pdf *pdev, const pdf_font_t *pef)
-{
-    stream *s;
-    gs_int_rect bbox;
-    int widths[256];
-
-    memset(&bbox, 0, sizeof(bbox));
-    memset(widths, 0, sizeof(widths));
-    pdf_open_separate(pdev, pdf_font_id(pef));
-    s = pdev->strm;
-    pprints1(s, "<</Type/Font/Name/%s/Subtype/Type3", pef->rname);
-    pprintld1(s, "/Encoding %ld 0 R/CharProcs", pdev->embedded_encoding_id);
-
-    /* Write the CharProcs. */
-    {
-	const pdf_char_proc_t *pcp;
-	int w;
-
-	stream_puts(s, "<<");
-	/* Write real characters. */
-	for (pcp = pef->char_procs; pcp; pcp = pcp->char_next) {
-	    bbox.p.y = min(bbox.p.y, pcp->y_offset);
-	    bbox.q.x = max(bbox.q.x, pcp->width);
-	    bbox.q.y = max(bbox.q.y, pcp->height + pcp->y_offset);
-	    widths[pcp->char_code] = pcp->x_width;
-	    pprintld2(s, "/a%ld\n%ld 0 R", (long)pcp->char_code,
-		      pdf_char_proc_id(pcp));
-	}
-	/* Write space characters. */
-	for (w = 0; w < countof(pef->spaces); ++w) {
-	    byte ch = pef->spaces[w];
-
-	    if (ch) {
-		pprintld2(s, "/a%ld\n%ld 0 R", (long)ch,
-			  pdev->space_char_ids[w]);
-		widths[ch] = w + X_SPACE_MIN;
-	    }
-	}
-	stream_puts(s, ">>");
-    }
-
-    pdf_write_font_bbox(pdev, &bbox);
-    stream_puts(s, "/FontMatrix[1 0 0 1 0 0]");
-    pdf_write_Widths(pdev, 0, pef->num_chars - 1, widths);
-    stream_puts(s, ">>\n");
-    pdf_end_separate(pdev);
-    return 0;
-}
-
-/* Write a font descriptor. */
-int
-pdf_write_FontDescriptor(gx_device_pdf *pdev, const pdf_font_descriptor_t *pfd)
-{
-    gs_font *font = pfd->base_font;
-    bool is_subset =
-	pdf_has_subset_prefix(pfd->FontName.chars, pfd->FontName.size);
-    long cidset_id = 0;		/* pro forma initialization */
-    stream *s;
-    int code = 0;
-
-    /* If this is a CIDFont subset, write the CIDSet now. */
-    if (font && is_subset) {
-	switch (pfd->values.FontType) {
-	case ft_CID_encrypted:
-	case ft_CID_TrueType: {
-	    pdf_data_writer_t writer;
-
-	    cidset_id = pdf_begin_separate(pdev);
-	    s = pdev->strm;
-	    stream_puts(s, "<<");
-	    code = pdf_begin_data(pdev, &writer);
-	    if (code >= 0) {
-		stream_write(writer.binary.strm, pfd->chars_used.data,
-		       pfd->chars_used.size);
-		code = pdf_end_data(&writer);
-	    } else		/* code < 0 */
-		pdf_end_separate(pdev);
-	}
-	default:
-	    break;
-	}
-    }
-    pdf_open_separate(pdev, pdf_font_descriptor_id(pfd));
-    s = pdev->strm;
-    stream_puts(s, "<</Type/FontDescriptor/FontName");
-    pdf_put_name(pdev, pfd->FontName.chars, pfd->FontName.size);
-    if (font) {		/* not a built-in font */
-	param_printer_params_t params;
-	printer_param_list_t rlist;
-	gs_param_list *const plist = (gs_param_list *)&rlist;
-
-	pdf_write_font_bbox(pdev, &pfd->values.FontBBox);
-	params = param_printer_params_default;
-	code = s_init_param_printer(&rlist, &params, s);
-	if (code >= 0) {
-#define DESC_INT(str, memb)\
- {str, gs_param_type_int, offset_of(pdf_font_descriptor_t, values.memb)}
-	    static const gs_param_item_t required_items[] = {
-		DESC_INT("Ascent", Ascent),
-		DESC_INT("CapHeight", CapHeight),
-		DESC_INT("Descent", Descent),
-		DESC_INT("ItalicAngle", ItalicAngle),
-		DESC_INT("StemV", StemV),
-		gs_param_item_end
-	    };
-	    static const gs_param_item_t optional_items[] = {
-		DESC_INT("AvgWidth", AvgWidth),
-		DESC_INT("Leading", Leading),
-		DESC_INT("MaxWidth", MaxWidth),
-		DESC_INT("MissingWidth", MissingWidth),
-		DESC_INT("StemH", StemH),
-		DESC_INT("XHeight", XHeight),
-		gs_param_item_end
-	    };
-#undef DESC_INT
-	    int Flags = pfd->values.Flags;
-	    pdf_font_descriptor_t defaults;
-
-	    /*
-	     * Hack: make all embedded subset TrueType fonts "symbolic" to
-	     * work around undocumented assumptions in Acrobat Reader.
-	     */
-	    if (pfd->values.FontType == ft_TrueType &&
-		pdf_has_subset_prefix(pfd->FontName.chars, pfd->FontName.size))
-		Flags = (Flags & ~(FONT_IS_ADOBE_ROMAN)) | FONT_IS_SYMBOLIC;
-	    param_write_int(plist, "Flags", &Flags);
-	    gs_param_write_items(plist, pfd, NULL, required_items);
-	    memset(&defaults, 0, sizeof(defaults));
-	    gs_param_write_items(plist, pfd, &defaults, optional_items);
-	    s_release_param_printer(&rlist);
-	}
-	if (is_subset) {
-	    switch (pfd->values.FontType) {
-	    case ft_CID_encrypted:
-	    case ft_CID_TrueType:
-		pprintld1(s, "/CIDSet %ld 0 R\n", cidset_id);
-		break;
-	    case ft_composite:
-		return_error(gs_error_rangecheck);
-	    case ft_encrypted: {
-		gs_glyph subset_glyphs[256];
-		uint subset_size = psf_subset_glyphs(subset_glyphs, font,
-						     pfd->chars_used.data);
-		int i;
-
-		stream_puts(s, "/CharSet(");
-		for (i = 0; i < subset_size; ++i) {
-		    uint len;
-		    const char *str = font->procs.callbacks.glyph_name
-			(subset_glyphs[i], &len);
-
-		    /* Don't include .notdef. */
-		    if (bytes_compare((const byte *)str, len,
-				      (const byte *)".notdef", 7))
-			pdf_put_name(pdev, (const byte *)str, len);
-		}
-		stream_puts(s, ")\n");
-	    }
-	    default:
-		break;
-	    }
-	}
-	if (pfd->FontFile_id) {
-	    const char *FontFile_key;
-
-	    switch (pfd->values.FontType) {
-	    case ft_TrueType:
-	    case ft_CID_TrueType:
-		FontFile_key = "/FontFile2";
-		break;
-	    default:
-		code = gs_note_error(gs_error_rangecheck);
-		/* falls through */
-	    case ft_encrypted:
-		if (pdev->CompatibilityLevel < 1.2) {
-		    FontFile_key = "/FontFile";
-		    break;
-		}
-		/* For PDF 1.2 and later, write Type 1 fonts as Type1C. */
-	    case ft_encrypted2:
-	    case ft_CID_encrypted:
-		FontFile_key = "/FontFile3";
-		break;
-	    }
-	    stream_puts(s, FontFile_key);
-	    pprintld1(s, " %ld 0 R", pfd->FontFile_id);
-	}
-    }
-    stream_puts(s, ">>\n");
-    pdf_end_separate(pdev);
-    return code;
-}
-
-/* Write CIDSystemInfo for a CIDFont or CMap. */
-private int
-pdf_write_cid_system_info(gx_device_pdf *pdev,
-			  const gs_cid_system_info_t *pcidsi)
-{
-    stream *s = pdev->strm;
-
-    stream_puts(s, "<<\n/Registry");
-    s_write_ps_string(s, pcidsi->Registry.data, pcidsi->Registry.size,
-		      PRINT_HEX_NOT_OK);
-    stream_puts(s, "\n/Ordering");
-    s_write_ps_string(s, pcidsi->Ordering.data, pcidsi->Ordering.size,
-		      PRINT_HEX_NOT_OK);
-    pprintd1(s, "\n/Supplement %d\n>>\n", pcidsi->Supplement);
-    return 0;
-}
-int
-pdf_write_CIDFont_system_info(gx_device_pdf *pdev, const gs_font *pcidfont)
-{
-    const gs_cid_system_info_t *pcidsi;
-
-    switch (pcidfont->FontType) {
-    case ft_CID_encrypted:
-	pcidsi = &((const gs_font_cid0 *)pcidfont)->
-	    cidata.common.CIDSystemInfo;
-	break;
-    case ft_CID_TrueType:
-	pcidsi = &((const gs_font_cid2 *)pcidfont)->
-	    cidata.common.CIDSystemInfo;
-	break;
-    default:
-	return_error(gs_error_rangecheck);
-    }
-    return pdf_write_cid_system_info(pdev, pcidsi);
-}
-int
-pdf_write_CMap_system_info(gx_device_pdf *pdev, const gs_cmap_t *pcmap)
-{
-    return pdf_write_cid_system_info(pdev, pcmap->CIDSystemInfo);
-}
-
-/*
- * Write the [D]W[2] entries for a CIDFont.  *pfont is known to be a
- * CIDFont (type 0 or 2).
- */
-private int
-pdf_write_CIDFont_widths(gx_device_pdf *pdev, const pdf_font_t *ppf)
-{
-    /*
-     * The values of the CIDFont width keys are as follows:
-     *   DW = w (default 0)
-     *   W = [{c [w ...] | cfirst clast w}*]
-     *   DW2 = [vy w1y] (default [880 -1000])
-     *   W2 = [{c [w1y vx vy ...] | cfirst clast w1y vx vy}*]
-     * Currently we only write DW and W.
-     */
-    stream *s = pdev->strm;
-    psf_glyph_enum_t genum;
-    gs_glyph glyph;
-    int dw = 0;
-
-    psf_enumerate_bits_begin(&genum, NULL, ppf->widths_known,
-			     ppf->FontDescriptor->chars_count,
-			     GLYPH_SPACE_INDEX);
-
-    /* Use the most common width as DW. */
-
-    {
-	ushort counts[1001];
-	int dw_count = 0, i;
-
-	memset(counts, 0, sizeof(counts));
-	while (!psf_enumerate_glyphs_next(&genum, &glyph)) {
-	    int width = ppf->Widths[glyph - gs_min_cid_glyph];
-
-	    counts[min(width, countof(counts) - 1)]++;
-	}
-	for (i = 0; i < countof(counts); ++i)
-	    if (counts[i] > dw_count)
-		dw = i, dw_count = counts[i];
-	if (dw != 0)
-	    pprintd1(s, "/DW %d\n", dw);
-    }
-
-    /*
-     * Now write all widths different from DW.  Currently we make no
-     * attempt to optimize this: we write every width individually.
-     */
-
-    psf_enumerate_glyphs_reset(&genum);
-    {
-	int prev = -2;
-
-	while (!psf_enumerate_glyphs_next(&genum, &glyph)) {
-	    int cid = glyph - gs_min_cid_glyph;
-	    int width = ppf->Widths[cid];
-
-	    if (cid == prev + 1)
-		pprintd1(s, "\n%d", width);
-	    else if (width == dw)
-		continue;
-	    else {
-		if (prev >= 0)
-		    stream_puts(s, "]\n");
-		else
-		    stream_puts(s, "/W[");
-		pprintd2(s, "%d[%d", cid, width);
-	    }
-	    prev = cid;
-	}
-	if (prev >= 0)
-	    stream_puts(s, "]]");
-    }    
-
-    return 0;
-}
-
-/*
- * Write the CIDToGIDMap for a CIDFontType 2 font.  We only need to worry
- * about mapping CIDs that have actually been used.
- */
-private int
-pdf_write_CIDToGIDMap(gx_device_pdf *pdev, pdf_font_t *ppf,
-		      long *pcidmap_id)
-{
-    stream *s = pdev->strm;
-    psf_glyph_enum_t genum;
-    gs_glyph glyph;
-
-    psf_enumerate_bits_begin(&genum, NULL, ppf->widths_known,
-			     ppf->FontDescriptor->chars_count,
-			     GLYPH_SPACE_INDEX);
-
-    /* Check for the identity map. */
-    while (!psf_enumerate_glyphs_next(&genum, &glyph)) {
-	int cid = glyph - gs_min_cid_glyph;
-	int gid = ppf->CIDToGIDMap[cid];
-
-	if (gid != cid) {
-	    /*
-	     * The map isn't Identity.  Assign an object ID for writing the
-	     * map later.
-	     */
-	    *pcidmap_id = pdf_obj_ref(pdev);
-	    pprintld1(s, "/CIDToGIDMap %ld 0 R\n", *pcidmap_id);
-	    return 1;
-	}
-    }
-    /* All CIDs and GIDs match. */
-    stream_puts(s, "/CIDToGIDMap/Identity\n");
-    *pcidmap_id = 0;
-    return 0;
-}
-private int
-pdf_write_CIDMap(stream *s, pdf_font_t *ppf)
-{
-    psf_glyph_enum_t genum;
-    int next = 0, count = ppf->FontDescriptor->chars_count;
-    gs_glyph glyph;
-
-    psf_enumerate_bits_begin(&genum, NULL, ppf->widths_known, count,
-			     GLYPH_SPACE_INDEX);
-    while (!psf_enumerate_glyphs_next(&genum, &glyph)) {
-	int cid = glyph - gs_min_cid_glyph;
-	int gid = ppf->CIDToGIDMap[cid];
-
-	for (; next < cid; ++next) {
-	    stream_putc(s, 0); stream_putc(s, 0);
-	}
-	stream_putc(s, (byte)(gid >> 8));
-	stream_putc(s, (byte)gid);
-	next = cid + 1;
-    }
-    for (; next < count; ++next) {
-	stream_putc(s, 0); stream_putc(s, 0);
-    }
-    return 0;
-}
-
-/*
- * Write a font resource, including Widths and/or Encoding if relevant,
- * but not the FontDescriptor or embedded font data.  Note that the
- * font itself may not be available.
- *
- * If the font is a subset, we must write the Widths even if it is a
- * built-in font.
- */
-private int
-pdf_write_font_resource(gx_device_pdf *pdev, pdf_font_t *pef,
-			const gs_const_string *pfname)
-{
-    stream *s;
-    const pdf_font_descriptor_t *pfd = pef->FontDescriptor;
-    static const char *const encoding_names[] = {
-	KNOWN_REAL_ENCODING_NAMES
-    };
-    /* write_Widths = 0 if not writing, 1 if Widths, -1 if [D]W[2]. */
-    int write_Widths =
-	(pef->write_Widths ||
-	 pdf_has_subset_prefix(pfname->data, pfname->size) ? 1 : 0);
-    long cidmap_id = 0;
-    gs_const_string fname;
-    byte fnchars[MAX_PDF_FONT_NAME];
-
-    fname = *pfname;
-    pdf_open_separate(pdev, pdf_font_id(pef));
-    s = pdev->strm;
-    switch (pef->FontType) {
-    case ft_composite: {
-	byte *chars = pef->fname.chars;
-	uint size = pef->fname.size;
-
-	stream_puts(s, "<</Type/Font/Subtype/Type0/BaseFont");
-	if (pdf_has_subset_prefix(chars, size))
-	    chars += SUBSET_PREFIX_SIZE, size -= SUBSET_PREFIX_SIZE;
-	pdf_put_name(pdev, chars, size);
-	if (pef->sub_font_type == ft_CID_encrypted &&
-	    pef->cmapname[0] == '/'
-	    ) {
-	    stream_putc(s, '-');
-	    pdf_put_name_chars(pdev, (const byte*) (pef->cmapname + 1),
-			       strlen(pef->cmapname + 1));
-	}
-	pprints1(s, "/Encoding %s", pef->cmapname);
-	pprintld1(s, "/DescendantFonts[%ld 0 R]",
-		pdf_resource_id((const pdf_resource_t *)pef->DescendantFont));
-	write_Widths = 0;
-	goto out;
-    }
-    case ft_encrypted:
-    case ft_encrypted2:
-	/*
-	 * Multiple Master instances must be identified as such iff they
-	 * are not embedded.
-	 */
-	if (pef->is_MM_instance && !pfd->FontFile_id) {
-	    /* Replace spaces in the name by underscores. */
-	    uint i;
-
-	    stream_puts(s, "<</Subtype/MMType1");
-	    if (fname.size > sizeof(fnchars))
-		return_error(gs_error_rangecheck);
-	    for (i = 0; i < fname.size; ++i)
-		fnchars[i] = (fname.data[i] == ' ' ? '_' : fname.data[i]);
-	    fname.data = fnchars;
-	} else {
-	    stream_puts(s, "<</Subtype/Type1");
-	}
-    bfname:
-	stream_puts(s, "/BaseFont");
-	pdf_put_name(pdev, fname.data, fname.size);
-	break;
-    case ft_CID_encrypted:
-	pprintld1(s, "<</Subtype/CIDFontType0/CIDSystemInfo %ld 0 R",
-		  pef->CIDSystemInfo_id);
-	write_Widths = -write_Widths;
-	goto bfname;
-    case ft_CID_TrueType:
-	pprintld1(s, "<</Subtype/CIDFontType2/CIDSystemInfo %ld 0 R",
-		  pef->CIDSystemInfo_id);
-	write_Widths = -write_Widths;
-	goto ttname;
-    case ft_TrueType:
-	stream_puts(s, "<</Subtype/TrueType");
-    ttname:
-	stream_puts(s, "/BaseFont");
-	pdf_put_name(pdev, fname.data, fname.size);
-	/****** WHAT ABOUT STYLE INFO? ******/
-	break;
-    default:
-	return_error(gs_error_rangecheck);
-    }
-    pprintld1(s, "/Type/Font/Name/R%ld", pdf_font_id(pef));
-    if (pef->index < 0 || pfd->base_font || pfd->FontFile_id)
-	pprintld1(s, "/FontDescriptor %ld 0 R", pdf_font_descriptor_id(pfd));
-    switch (write_Widths) {
-    case 0:
-	break;
-    case 1:
-	pdf_write_Widths(pdev, pef->FirstChar, pef->LastChar, pef->Widths);
-	break;
-    case -1:
-	pdf_write_CIDFont_widths(pdev, pef);
-	if (pef->FontType == ft_CID_TrueType)
-	    pdf_write_CIDToGIDMap(pdev, pef, &cidmap_id);
-	break;
-    }
-    if (pef->Differences) {
-	long diff_id = pdf_obj_ref(pdev);
-	int prev = 256;
-	int i;
-
-	pprintld1(s, "/Encoding %ld 0 R>>\n", diff_id);
-	pdf_end_separate(pdev);
-	pdf_open_separate(pdev, diff_id);
-	s = pdev->strm;
-	stream_puts(s, "<</Type/Encoding");
-	if (pef->BaseEncoding != ENCODING_INDEX_UNKNOWN)
-	    pprints1(s, "/BaseEncoding/%s", encoding_names[pef->BaseEncoding]);
-	stream_puts(s, "/Differences[");
-	for (i = 0; i < 256; ++i)
-	    if (pef->Differences[i].str.data != 0) {
-		if (i != prev + 1)
-		    pprintd1(s, "\n%d", i);
-		pdf_put_name(pdev, pef->Differences[i].str.data,
-			     pef->Differences[i].str.size);
-		prev = i;
-	    }
-	stream_puts(s, "]");
-    } else if (pef->BaseEncoding != ENCODING_INDEX_UNKNOWN) {
-	pprints1(s, "/Encoding/%s", encoding_names[pef->BaseEncoding]);
-    }
-    if (cidmap_id) {
-	pdf_data_writer_t writer;
-
-	stream_puts(pdev->strm, ">>\n");
-	pdf_end_separate(pdev);
-	pdf_open_separate(pdev, cidmap_id);
-	stream_puts(pdev->strm, "<<");
-	pdf_begin_data(pdev, &writer);
-	pdf_write_CIDMap(writer.binary.strm, pef);
-	return pdf_end_data(&writer);
-    }
- out:
-    stream_puts(s, ">>\n");
-    return pdf_end_separate(pdev);
-}
-
-/* Register a font for eventual writing (embedded or not). */
-private GS_NOTIFY_PROC(pdf_font_notify_proc);
-typedef struct pdf_font_notify_s {
-    gs_memory_t *memory;	/* used to allocate this object */
-    gx_device_pdf *pdev;
-    pdf_font_t *pdfont;		/* 0 if only for base_font */
-    pdf_font_descriptor_t *pfd;	/* 0 if not for base_font */
-} pdf_font_notify_t;
-gs_private_st_ptrs3(st_pdf_font_notify, pdf_font_notify_t, "pdf_font_notify_t",
-		    pdf_font_notify_enum_ptrs, pdf_font_notify_reloc_ptrs,
-		    pdev, pdfont, pfd);
-int
-pdf_register_font(gx_device_pdf *pdev, gs_font *font, pdf_font_t *ppf)
-{
-    /*
-     * Note that we do this allocation in stable font->memory, not
-     * pdev->pdf_memory.
-     */
-    pdf_font_descriptor_t *pfd = ppf->FontDescriptor;
-    gs_font *base_font = (pfd ? pfd->base_font : NULL);
-    gs_memory_t *fn_memory = gs_memory_stable(font->memory);
-    pdf_font_notify_t *pfn =
-	gs_alloc_struct(fn_memory, pdf_font_notify_t,
-			&st_pdf_font_notify, "pdf_register_font");
-    int code;
-
-    if (pfn == 0)
-	return_error(gs_error_VMerror);
-    pfn->memory = fn_memory;
-    pfn->pdev = pdev;
-    pfn->pfd = pfd;
-    if (base_font == 0 || pfd->notified)
-	pfn->pfd = 0;
-    else if (base_font != font) {
-	/*
-	 * We need two notifications: one for ppf->font, one for
-	 * base_font.  Create the latter first.
-	 */
-	pfn->pdfont = 0;
-	if_debug4('_', "[_]register 0x%lx: pdf_font_descriptor_t 0x%lx => 0x%lx, id %ld\n",
-		  (ulong)pfn, (ulong)pfd, (ulong)base_font, base_font->id);
-	code = gs_font_notify_register(base_font, pdf_font_notify_proc, pfn);
-	if (code < 0)
-	    return 0;
-	pfn = gs_alloc_struct(fn_memory, pdf_font_notify_t,
-			      &st_pdf_font_notify, "pdf_register_font");
-	if (pfn == 0)
-	    return_error(gs_error_VMerror);
-	pfn->memory = fn_memory;
-	pfn->pdev = pdev;
-	pfn->pfd = 0;
-    }
-    if (pfd)
-	pfd->notified = true;
-    pfn->pdfont = ppf;
-#ifdef DEBUG
-    if_debug4('_', "[_]register 0x%lx: pdf_font_t 0x%lx => 0x%lx, id %ld\n",
-	      (ulong)pfn, (ulong)ppf, (ulong)font, font->id);
-    if (pfn->pfd)
-	if_debug3('_',
-		  "                pdf_font_descriptor_t 0x%lx => 0x%lx, id %ld\n",
-		  (ulong)pfd, (ulong)pfd->base_font, pfd->base_font->id);
-#endif
-    ppf->font = font;
-    return gs_font_notify_register(font, pdf_font_notify_proc, pfn);
-}
-private int
-pdf_finalize_font_descriptor(gx_device_pdf *pdev, pdf_font_descriptor_t *pfd)
-{
-    gs_font *font = pfd->base_font;
-    int code =
-	(font ? pdf_compute_font_descriptor(pdev, pfd, font, NULL) : 0);
-
-    if (code >= 0) {
-	if (pfd->FontFile_id)
-	    code = pdf_write_embedded_font(pdev, pfd);
-	else
-	    code = pdf_write_FontDescriptor(pdev, pfd);
-	pfd->written = true;
-    }
-    pfd->base_font = 0;		/* clean up for GC */
-    return code;
-}
-private int
-pdf_font_notify_proc(void *vpfn /*proc_data*/, void *event_data)
-{
-    pdf_font_notify_t *const pfn = vpfn;
-    gx_device_pdf *const pdev = pfn->pdev;
-    pdf_font_t *const ppf = pfn->pdfont;	/* may be 0 */
-    pdf_font_descriptor_t *pfd = pfn->pfd;	/* may be 0 */
-    int code = 0;
-
-    if (event_data)
-	return 0;		/* unknown event */
-
-    if (ppf) {
-	/*
-	 * The font of this pdf_font is about to be freed.  Just clear the
-	 * pointer.
-	 */
-	gs_font *const font = ppf->font;
-
-	if_debug4('_',
-		  "[_]  notify 0x%lx: pdf_font_t 0x%lx => 0x%lx, id %ld\n",
-		  (ulong)pfn, (ulong)ppf, (ulong)font, font->id);
-	gs_font_notify_unregister(font, pdf_font_notify_proc, vpfn);
-	ppf->font = 0;
-    }
-
-    if (pfd) {
-	/*
-	 * The base_font of this FontDescriptor is about to be freed.
-	 * Write the FontDescriptor and, if relevant, the FontFile.
-	 */
-	gs_font *const font = pfd->base_font;
-
-	if_debug4('_',
-		  "[_]  notify 0x%lx: pdf_font_descriptor_t 0x%lx => 0x%lx, id %ld\n",
-		  (ulong)pfn, (ulong)pfd, (ulong)font, font->id);
-	gs_font_notify_unregister(font, pdf_font_notify_proc, vpfn);
-	/*
-	 * HACK: temporarily patch the font's memory to one that we know is
-	 * available even during GC or restore.  (Eventually we need to fix
-	 * this by prohibiting implementations of font_info and glyph_info
-	 * from doing any allocations.)  However, don't use gs_memory_default
-	 * directly, because some malloc/free implementations (such as the
-	 * default one in some versions of Linux) don't recognize LIFO
-	 * behavior and can wind up allocation huge amounts of address space.
-	 */
-	{
-	    gs_memory_t *save_memory = font->memory;
-	    gs_ref_memory_t *fmem =
-		ialloc_alloc_state((gs_raw_memory_t *)&gs_memory_default,
-				   5000);
-
-	    if (fmem == 0)
-		return_error(gs_error_VMerror);
-	    font->memory = (gs_memory_t *)fmem;
-	    code = pdf_finalize_font_descriptor(pdev, pfd);
-	    gs_memory_free_all((gs_memory_t *)fmem, FREE_ALL_EVERYTHING,
-			       "pdf_font_notify_proc");
-	    font->memory = save_memory;
-	}
-    }
-    gs_free_object(pfn->memory, vpfn, "pdf_font_notify_proc");
-    return code;
-}
-
-/* Write out the font resources when wrapping up the output. */
-private void
-pdf_font_unreg_proc(void *vpfn /*proc_data*/)
-{
-    pdf_font_notify_t *const pfn = vpfn;
-
-    gs_free_object(pfn->memory, vpfn, "pdf_font_unreg_proc");
-}
-/* Write out the font resources when wrapping up the output. */
-int
-pdf_write_font_resources(gx_device_pdf *pdev)
-{
-    int j;
-
-    /* Write the fonts and descriptors. */
-
-    for (j = 0; j < NUM_RESOURCE_CHAINS; ++j) {
-	pdf_font_t *ppf;
-	pdf_font_descriptor_t *pfd;
-
-	for (ppf = (pdf_font_t *)pdev->resources[resourceFont].chains[j];
-	     ppf != 0; ppf = ppf->next
-	     ) {
-	    if (PDF_FONT_IS_SYNTHESIZED(ppf))
-		pdf_write_synthesized_type3(pdev, ppf);
-	    else {
-		gs_const_string font_name;
-
-		pfd = ppf->FontDescriptor;
-		if (pfd) {
-		    font_name.data = pfd->FontName.chars;
-		    font_name.size = pfd->FontName.size;
-		} else {	/* must be composite */
-		    font_name.data = 0;
-		    font_name.size = 0;
-		}
-		pdf_write_font_resource(pdev, ppf, &font_name);
-		if (ppf->font)
-		    gs_notify_unregister_calling(&ppf->font->notify_list,
-						 pdf_font_notify_proc, NULL,
-						 pdf_font_unreg_proc);
-	    }
-	}
-
-	for (ppf = (pdf_font_t *)pdev->resources[resourceCIDFont].chains[j];
-	     ppf != 0; ppf = ppf->next
-	     ) {
-	    gs_const_string font_name;
-
-	    pfd = ppf->FontDescriptor;
-	    font_name.data = pfd->FontName.chars;
-	    font_name.size = pfd->FontName.size;
-	    pdf_write_font_resource(pdev, ppf, &font_name);
-	    if (ppf->font)
-		gs_notify_unregister_calling(&ppf->font->notify_list,
-					     pdf_font_notify_proc, NULL,
-					     pdf_font_unreg_proc);
-	}
-
-	for (pfd = (pdf_font_descriptor_t *)pdev->resources[resourceFontDescriptor].chains[j];
-	     pfd != 0; pfd = pfd->next
-	     ) {
-	    if (!pfd->written) {
-		pdf_finalize_font_descriptor(pdev, pfd);
-		if (pfd->base_font)
-		    gs_notify_unregister_calling(&pfd->base_font->notify_list,
-						 pdf_font_notify_proc, NULL,
-						 pdf_font_unreg_proc);
-	    }
-	}
-
-    }
-
-    /* If required, write the Encoding for Type 3 bitmap fonts. */
-
-    if (pdev->embedded_encoding_id) {
-	stream *s;
-	int i;
-
-	pdf_open_separate(pdev, pdev->embedded_encoding_id);
-	s = pdev->strm;
-	/*
-	 * Even though the PDF reference documentation says that a
-	 * BaseEncoding key is required unless the encoding is
-	 * "based on the base font's encoding" (and there is no base
-	 * font in this case), Acrobat 2.1 gives an error if the
-	 * BaseEncoding key is present.
-	 */
-	stream_puts(s, "<</Type/Encoding/Differences[0");
-	for (i = 0; i <= pdev->max_embedded_code; ++i) {
-	    if (!(i & 15))
-		stream_puts(s, "\n");
-	    pprintd1(s, "/a%d", i);
-	}
-	stream_puts(s, "\n] >>\n");
-	pdf_end_separate(pdev);
-    }
-
-    return 0;
-}

+ 0 - 48
sys/src/cmd/gs/src/gscsepnm.h

@@ -1,48 +0,0 @@
-/* Copyright (C) 1998 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gscsepnm.h,v 1.2 2000/09/19 19:00:27 lpd Exp $ */
-/* Standard color space separation names */
-
-#ifndef gscsepnm_INCLUDED
-#  define gscsepnm_INCLUDED
-
-/*
- * Define enumeration indices for the standard separation names, and the
- * corresponding name strings. These are only used internally: in all
- * externally accessible APIs, separations are defined either by a string
- * name or by an opaque identifier.
- *
- * NB: the enumeration and the list of strings must be synchronized.  */
-typedef enum {
-    gs_ht_separation_Default,	/* must be first */
-    gs_ht_separation_Gray,
-    gs_ht_separation_Red,
-    gs_ht_separation_Green,
-    gs_ht_separation_Blue,
-    gs_ht_separation_Cyan,
-    gs_ht_separation_Magenta,
-    gs_ht_separation_Yellow,
-    gs_ht_separation_Black
-} gs_ht_separation_name;
-
-#define gs_ht_separation_name_strings            \
-    "Default", "Gray", "Red", "Green", "Blue",   \
-    "Cyan", "Magenta", "Yellow", "Black"
-
-#endif /* gscsepnm_INCLUDED */

+ 0 - 91
sys/src/cmd/gs/src/gsfuncv.c

@@ -1,91 +0,0 @@
-/* Copyright (C) 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gsfuncv.c,v 1.2 2000/09/19 19:00:28 lpd Exp $ */
-/* "Vanilla" Function support */
-#include "gx.h"
-#include "gserrors.h"
-#include "gsfuncv.h"
-#include "gsparam.h"
-#include "gxfunc.h"
-
-/* GC descriptor */
-private_st_function_Va();
-
-/*
- * Test whether a Vanilla function is monotonic.  (This information is
- * provided at function definition time.)
- */
-private int
-fn_Va_is_monotonic(const gs_function_t * pfn_common,
-		   const float *lower, const float *upper,
-		   gs_function_effort_t effort)
-{
-    const gs_function_Va_t *const pfn =
-	(const gs_function_Va_t *)pfn_common;
-
-    return pfn->params.is_monotonic;
-}
-
-/* Free the parameters of a Vanilla function. */
-void
-gs_function_Va_free_params(gs_function_Va_params_t * params,
-			   gs_memory_t * mem)
-{
-    gs_free_object(mem, params->eval_data, "eval_data");
-    fn_common_free_params((gs_function_params_t *) params, mem);
-}
-
-/* Allocate and initialize a Vanilla function. */
-int
-gs_function_Va_init(gs_function_t ** ppfn,
-		    const gs_function_Va_params_t * params,
-		    gs_memory_t * mem)
-{
-    static const gs_function_head_t function_Va_head = {
-	function_type_Vanilla,
-	{
-	    NULL,			/* filled in from params */
-	    (fn_is_monotonic_proc_t) fn_Va_is_monotonic,
-	    gs_function_get_info_default,
-	    fn_common_get_params,	/****** WHAT TO DO ABOUT THIS? ******/
-	    (fn_free_params_proc_t) gs_function_Va_free_params,
-	    fn_common_free
-	}
-    };
-    int code;
-
-    *ppfn = 0;			/* in case of error */
-    code = fn_check_mnDR((const gs_function_params_t *)params, 1, params->n);
-    if (code < 0)
-	return code;
-    {
-	gs_function_Va_t *pfn =
-	    gs_alloc_struct(mem, gs_function_Va_t, &st_function_Va,
-			    "gs_function_Va_init");
-
-	if (pfn == 0)
-	    return_error(gs_error_VMerror);
-	pfn->params = *params;
-	pfn->head = function_Va_head;
-	pfn->head.procs.evaluate = params->eval_proc;
-	pfn->head.is_monotonic = params->is_monotonic;
-	*ppfn = (gs_function_t *) pfn;
-    }
-    return 0;
-}

+ 0 - 64
sys/src/cmd/gs/src/gsfuncv.h

@@ -1,64 +0,0 @@
-/* Copyright (C) 2000 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gsfuncv.h,v 1.2 2000/09/19 19:00:28 lpd Exp $ */
-/* Definitions for "Vanilla" Functions */
-
-#ifndef gsfuncv_INCLUDED
-#  define gsfuncv_INCLUDED
-
-#include "gsfunc.h"
-
-/*
- * The simplest type of Function, "Vanilla" Functions just store closure
- * data.  The client provides the evaluation procedure.
- */
-
-/* ---------------- Types and structures ---------------- */
-
-#define function_type_Vanilla (-1)
-
-typedef struct gs_function_Va_params_s {
-    gs_function_params_common;
-    fn_evaluate_proc_t eval_proc;
-    void *eval_data;
-    int is_monotonic;
-} gs_function_Va_params_t;
-
-typedef struct gs_function_Va_s {
-    gs_function_head_t head;
-    gs_function_Va_params_t params;
-} gs_function_Va_t;
-
-#define private_st_function_Va()	/* in gsfunc.c */\
-  gs_private_st_suffix_add1(st_function_Va, gs_function_Va_t,\
-    "gs_function_Va_t", function_Va_enum_ptrs, function_Va_reloc_ptrs,\
-    st_function, params.eval_data)
-
-/* ---------------- Procedures ---------------- */
-
-/* Allocate and initialize a Vanilla function. */
-int gs_function_Va_init(P3(gs_function_t ** ppfn,
-			   const gs_function_Va_params_t * params,
-			   gs_memory_t * mem));
-
-/* Free the parameters of a Vanilla function. */
-void gs_function_Va_free_params(P2(gs_function_Va_params_t * params,
-				   gs_memory_t * mem));
-
-#endif /* gsfuncv_INCLUDED */

+ 0 - 127
sys/src/cmd/gs/src/gsgraph.icx

@@ -1,127 +0,0 @@
-0000010004002020100000000000e802
-00004600000010101000000000002801
-00002e0300001414100000000000a801
-0000560400001818100000000000e801
-0000fe05000028000000200000004000
-00000100040000000000800200000000
-00000000000000000000000000000000
-00000000800000800000008080008000
-00008000800080800000c0c0c0008080
-80000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff000000
-0000fffffffffffff000000000000000
-00ffcccccccccccccffff00000000000
-ffccccfffffffffffccccff00000000f
-ccccfffffffffffffffffccf0000000f
-cccffffffcccccccccccfffcf00000fc
-cccfffffcfffffffffccccffcf0000fc
-cccfffffcffffffffffccccff000000f
-ccccfffffffffffffffcccccf0000000
-fffffffffffffffffccccccccf000000
-00ffcccccccccccccccccccccf000000
-0fccccccccccccccccccccccf0000000
-fccccccccccccccccccccccf0000000f
-ccccccccccccccccccccccf00000000f
-cccccccccccccccccccfff000000000f
-cccccccfffffffffffff000000000000
-fcccccfffffffffff000000000000000
-0fccccccccffffffff00000000000000
-00ffffcccccfffffcff0000000000000
-000fccccccfffffffccf000000000000
-00fccccccfffccfffcccf00000000000
-0fccccccffffccfffccccf0000000000
-fccccccfffffffffccccccf000000000
-fccccccffcfffffcccccccf000000000
-fccccccffcfcffccccccccf000000000
-0fcccccffffcffccccccccf000000000
-0fccccccfffffffccccccf0000000000
-00fcccccccffffffccccf00000000000
-000fccccccccccfffcccf00000000000
-0000fffccccccccfffccf00000000000
-0000000ffffffffcffcf000000000000
-000000000000000fcfcf000000000000
-000000000000000fcff000000000ff00
-07fffc00007ff000001fe000000fe000
-0007c0000003c0000007e0000007f000
-0003fc000003f8000007f000000fe000
-001fe000003fe00000fff00007fff800
-03fffc0001fffe0000fffc00007ff800
-003ff000001ff000001ff000001ff800
-001ff800003ffc00007ffe00007fff00
-007fffe000ffffffe0ffffffe1ff2800
-00001000000020000000010004000000
-0000c000000000000000000000000000
-00000000000000000000000080000080
-00000080800080000000800080008080
-0000c0c0c000808080000000ff0000ff
-000000ffff00ff000000ff00ff00ffff
-0000ffffff000cccc000000000000000
-cccfffcc000000cccccfffffcc000ccc
-ccfffffffcc00ccccfffccfffccccccc
-cfffccffccccccccfffffffccccccccc
-ffcfffccccccccccffcfcfcccccccccc
-cfffcffccccc0ccccccfffffccc000cc
-ccccccfffcc00000cccccccffcc00000
-0000000cfcc0000000000000fc000000
-00000000c00087ff5408f00f0000c003
-00008001766580004327000050720000
-72610000433a0000726f0000616d8001
-696cc0015c4df001f00dffe1800afff3
-0005fff7000a28000000140000002800
-00000100040000000000400100000000
-00000000000000000000000000000000
-00000000800000800000008080008000
-00008000800080800000c0c0c0008080
-80000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff0000cc
-cccffffff0000000000000000ccccfff
-ffc0000002610000ccccccfffffc0000
-0172000ccccccfffffffcc00073d00cc
-ccccffffffffccc002000cccccccfffc
-cfffcccc00000ccccccffffccfffcccc
-ffffccccccfffffffffccccc0030cccc
-ccffffffffccccccffffccccccffcfff
-fccccccc0054ccccccffcfcffccccccc
-ffffccccccffffcffccccccc002c0ccc
-cccfffffffccccccffc000cccccccfff
-fffcccc00034000ccccccccccfffccc0
-80ff00000cccccccccfffcc0006d0000
-0000000000cffcc000ff000000000000
-00cffc0000450000000000000cffc000
-00ff000000000000000c0000000ac007
-fc1ff801f000f000f0ffe0003f00c000
-10008000003a80000f00000000000000
-00ff00000f0000000000000000698000
-0fffc0001000e00010fff8001f00fffc
-1000fffc3073fff87ffffffeffff2800
-00001800000030000000010004000000
-00008001000000000000000000000000
-00000000000000000000000080000080
-00000080800080000000800080008080
-0000c0c0c000808080000000ff0000ff
-000000ffff00ff000000ff00ff00ffff
-0000ffffff0000000000000000000000
-00000000cccccfffffff000000000000
-00cccccfffffcc000000000000cccccc
-fffffcc000000000cccccccffffffccc
-0000000cccccccffffffffccc000000c
-cccccffffffffffccc0000ccccccffff
-fccffffccc0000ccccccfffffccfffcc
-ccc00ccccccffffffffffcccccc00ccc
-cccfffffffffccccccc00ccccccfffcf
-fffcccccccc00ccccccfffcfcffccccc
-ccc00cccccccffffcffcccccccc000cc
-cccccfffffffccccccc0000ccccccccf
-fffffcccccc00000ccccccccccffffcc
-cc0000000cccccccccccfffccc000000
-00000ccccccccffccc00000000000000
-0000cffccc000000000000000000cffc
-c000000000000000000ccfcc00000000
-0000000000000cc00000000000000000
-000000000000ffffff00f000ff00fc00
-3f00fc001f00f0000f00e0000700e000
-0300c0000300c0000100800001008000
-0100800001008000010080000100c000
-0100e0000100f0000300f8000300ff80
-0300ffff0300ffff0700fffe0f00ffff
-9f00ffffff000a

+ 2 - 1
sys/src/cmd/gs/src/gshtscr.c

@@ -604,7 +604,8 @@ gs_screen_next(gs_screen_enum * penum, floatp value)
 
 	if (value < -1.0 || value > 1.0)
 	    return_error(gs_error_rangecheck);
-	sample = (int) (value * max_ht_sample) + max_ht_sample;
+	sample = (long long)(value * max_ht_sample) + max_ht_sample;
+//	sample = (ht_sample_t)((value+1) * max_ht_sample);
 #ifdef DEBUG
 	if (gs_debug_c('H')) {
 	    gs_point pt;

+ 0 - 127
sys/src/cmd/gs/src/gstext.icx

@@ -1,127 +0,0 @@
-0000010004002020100000000000e802
-00004600000010101000000000002801
-00002e0300001414100000000000a801
-0000560400001818100000000000e801
-0000fe05000028000000200000004000
-00000100040000000000800200000000
-00000000000000000000000000000000
-00000000800000800000008080008000
-00008000800080800000c0c0c0008080
-80000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff000000
-0000fffffffffffff000000000000000
-00ff0000000000000ffff00000000000
-ff0000fffffffffff0000ff00000000f
-0000fffffffffffffffff00f0000000f
-000ffffff00000000000fff0f00000f0
-000fffff0fffffffff0000ff0f0000f0
-000fffff0ffffffffff0000ff000000f
-0000fffffffffffffff00000f0000000
-fffffffffffffffff00000000f000000
-00ff000000000000000000000f000000
-0f0000000000000000000000f0000000
-f0000000000000000000000f0000000f
-0000000000000000000000f00000000f
-0000000000000000000fff000000000f
-0000000fffffffffffff000000000000
-f00000fffffffffff000000000000000
-0f00000000ffffffff00000000000000
-00ffff00000fffff0ff0000000000000
-000f000000fffffff00f000000000000
-00f000008fffccfff000f00000000000
-0f000000ffffccfff0000f0000000000
-f000000fffffffff000000f000000000
-f000000ffcfffff0000000f000000000
-f000000ffcfcff00000000f000000000
-0f00000ffffcff00000000f000000000
-0f000000fffffff000000f0000000000
-00f0000000ffffff8000f00000000000
-000f0000000007fff700f00000000000
-0000fff00000000fff00f00000000000
-0000000ffffffff0ff0f000000000000
-000000000000000f0f0f000000000000
-000000000000000f0ff000000000ff00
-07fffc00007ff000001fe000000fe000
-0007c0000003c0000007e0000007f000
-0003fc000003f8000007f000000fe000
-001fe000003fe00000fff00007fff800
-03fffc0001fffe0000fffc00007ff800
-003ff000001ff000001ff000001ff800
-001ff800003ffc00007ffe00007fff00
-007fffe000ffffffe0ffffffe1ff2800
-00001000000020000000010004000000
-0000c000000000000000000000000000
-00000000000000000000000080000080
-00000080800080000000800080008080
-0000c0c0c000808080000000ff0000ff
-000000ffff00ff000000ff00ff00ffff
-0000ffffff0008000000000000000000
-000fff8800000000000fffff00000000
-08fffffff00000000fffccfff0088000
-8fffccff00000000fffffff000000000
-ffcfff8000000000ffcfcf8000008000
-0fffcff000000000000fffff80000000
-000007fff00000008000000ff0000000
-00000000f080000000000000f0000000
-00000000000087ff0000f00f0000c003
-000080010ff080000000000007ff0000
-007f0000001f0000000f000000078001
-0003c0010007f0010007ffe10003fff3
-0003fff7000728000000140000002800
-00000100040000000000400100000000
-00000000000000000000000000000000
-00000000800000800000008080008000
-00008000800080800000c0c0c0008080
-80000000ff0000ff000000ffff00ff00
-0000ff00ff00ffff0000ffffff000080
-000ffffff00000000000000000000fff
-ff00000000000000800000fffff00000
-0000000000000fffffff000000000000
-0008ffffffff0000000008000008fffc
-cfff000800000000000ffffccfff0000
-0000800000fffffffff0000000000000
-00ffffffff0000000000000000ffcfff
-f00000000000000000ffcfcff0000000
-0000800000ffffcff000000000000000
-000fffffff0000000000000000000fff
-fff8000000000000000000007fff7000
-000000000800000000fff00000000000
-00000000000ff0800000000000000000
-000ff000000000000000000000ff0000
-0000000000000000000000000000c007
-fffff801f000f000f000e0003000c000
-10008000000080000000000000000000
-00000000000000000000000000008000
-0000c0001000e0001000f8001000fffc
-1000fffc3000fff87000fffef0002800
-00001800000030000000010004000000
-00008001000000000000000000000000
-00000000000000000000000080000080
-00000080800080000000800080008080
-0000c0c0c000808080000000ff0000ff
-000000ffff00ff000000ff00ff00ffff
-0000ffffff0000000000000000000000
-0000000000000fffffff000000000000
-0080000fffff88000000000000800000
-fffff8000000000080000007fffff780
-000000080000007fffffff7000000000
-000008fffffffff00000008000008fff
-fccfff70000000000000fffffccfff80
-00000800000ffffffffff80000000000
-000fffffffff000000000000000fffcf
-fff0000000000000000fffcfcff00000
-000008000008ffffcff0000000000000
-00008fffffff0000000000000000008f
-ffff78000080000000000000887fff78
-000000000880000000087ff800000000
-00000800000087f70000000000000000
-000008f70800000000000000000008f7
-000000000000000000007f7800000000
-00000000000008800000000000000000
-000000000000ffffff04f000fffffc00
-3ffffc001ffff0000fffe00007ffe000
-0375c00003ffc00001ff800001ff8000
-01ff800001ff800001ff800001ffc000
-01ffe00001fff00003fff800036eff80
-03ffffff03ffffff07fffffe0fffffff
-9f00ffffffff0a

+ 0 - 578
sys/src/cmd/gs/src/gxdither.c

@@ -1,578 +0,0 @@
-/* Copyright (C) 1989, 1995, 1996, 1998, 1999 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gxdither.c,v 1.2 2000/09/19 19:00:36 lpd Exp $ */
-#include "gx.h"
-#include "gsstruct.h"
-#include "gsdcolor.h"
-#include "gxdevice.h"
-#include "gxlum.h"
-#include "gxcmap.h"
-#include "gxdither.h"
-#include "gzht.h"
-
-/*
- * Binary halftoning algorithms.
- *
- * The procedures in this file use halftoning (if necessary)
- * to implement a given device color that has already gone through
- * the transfer function.  There are two major cases: gray and color.
- * Gray halftoning always uses a binary screen.  Color halftoning
- * uses either a fast algorithm with a binary screen that produces
- * relatively poor approximations, or a very slow algorithm with a
- * general colored screen (or screens) that faithfully implements
- * the Adobe specifications.
- */
-
-/* Tables for fast computation of fractional color levels. */
-/* We have to put the table before any uses of it because of a bug */
-/* in the VAX C compiler. */
-/* We have to split up the definition of the table itself because of a bug */
-/*  in the IBM AIX 3.2 C compiler. */
-private const gx_color_value q0[] = {
-    0
-};
-private const gx_color_value q1[] = {
-    0, frac_color_(1, 1)
-};
-private const gx_color_value q2[] = {
-    0, frac_color_(1, 2), frac_color_(2, 2)
-};
-private const gx_color_value q3[] = {
-    0, frac_color_(1, 3), frac_color_(2, 3), frac_color_(3, 3)
-};
-private const gx_color_value q4[] = {
-    0, frac_color_(1, 4), frac_color_(2, 4), frac_color_(3, 4),
-    frac_color_(4, 4)
-};
-private const gx_color_value q5[] = {
-    0, frac_color_(1, 5), frac_color_(2, 5), frac_color_(3, 5),
-    frac_color_(4, 5), frac_color_(5, 5)
-};
-private const gx_color_value q6[] = {
-    0, frac_color_(1, 6), frac_color_(2, 6), frac_color_(3, 6),
-    frac_color_(4, 6), frac_color_(5, 6), frac_color_(6, 6)
-};
-private const gx_color_value q7[] = {
-    0, frac_color_(1, 7), frac_color_(2, 7), frac_color_(3, 7),
-    frac_color_(4, 7), frac_color_(5, 7), frac_color_(6, 7), frac_color_(7, 7)
-};
-
-/* We export fc_color_quo for the fractional_color macro in gzht.h. */
-const gx_color_value *const fc_color_quo[8] = {
-    q0, q1, q2, q3, q4, q5, q6, q7
-};
-
-/* Render a gray, possibly by halftoning. */
-int
-gx_render_device_gray(frac gray, gx_color_value alpha, gx_device_color * pdevc,
-		      gx_device * dev, gx_device_halftone * pdht,
-		      const gs_int_point * ht_phase)
-{
-    bool cmyk = dev->color_info.num_components == 4;
-
-/* Make a special check for black and white. */
-    if (alpha == gx_max_color_value) {
-	gx_color_value lum;
-
-	switch (gray) {
-	    case frac_0:
-		lum = 0;
-		goto bw;
-	    case frac_1:
-		lum = gx_max_color_value;
-	      bw:color_set_pure(pdevc,
-			       (cmyk ?
-				gx_map_cmyk_color(dev, 0, 0, 0,
-						  gx_max_color_value - lum) :
-				gx_map_rgb_color(dev, lum, lum, lum)));
-		return 0;
-	    default:
-		;
-	}
-    }
-/* get a few handy values */
-    {
-	uint max_value = dev->color_info.dither_grays - 1;
-	unsigned long hsize = (unsigned)pdht->order.num_levels;
-	unsigned long nshades = hsize * max_value + 1;
-	unsigned long lx = (nshades * gray) / (frac_1_long + 1);
-	uint v = lx / hsize;
-	gx_color_value lum = fractional_color(v, max_value);
-	gx_color_index color1;
-	int level = lx % hsize;
-
-	/* The following should be a conditional expression, */
-	/* but the DECStation 3100 Ultrix 4.3 compiler */
-	/* generates bad code for it. */
-#define SET_COLOR_LUM(col, lum)\
-  if ( cmyk )\
-    col = gx_map_cmyk_color(dev, 0, 0, 0,\
-			       gx_max_color_value - lum);\
-  else if ( alpha == gx_max_color_value )\
-    col = gx_map_rgb_color(dev, lum, lum, lum);\
-  else\
-    col = gx_map_rgb_alpha_color(dev, lum, lum, lum, alpha)
-	SET_COLOR_LUM(color1, lum);
-	if_debug5('c', "[c]gray=0x%x --> (%d+%d/%lu)/%d\n",
-		  (unsigned)gray, v, level, hsize, max_value + 1);
-	if (level == 0) {	/* Close enough to a pure color, */
-	    /* no dithering needed. */
-	    color_set_pure(pdevc, color1);
-	    return 0;
-	} else {
-	    gx_color_index color2;
-
-	    v++;
-	    lum = fractional_color(v, max_value);
-	    SET_COLOR_LUM(color2, lum);
-	    color_set_binary_halftone(pdevc, pdht,
-				      color1, color2, level);
-	    color_set_phase_mod(pdevc, ht_phase->x, ht_phase->y,
-				pdht->order.width,
-				pdht->order.full_height);
-	    return 1;
-	}
-#undef SET_COLOR_LUM
-    }
-}
-
-/* 
- *    Color dithering for Ghostscript.  The underlying device imaging model
- *      supports dithering between two colors to generate intermediate shades.
- *      
- *      If the device has high quality colors (at least 32 values
- *      per axis), we ask it to map the color directly.
- *
- *      Otherwise, things are a bit more complicated.  If the device 
- *      supports N shades of each R, G and B independently, there are a total 
- *      of N*N*N colors.  These colors form a 3-D grid in a cubical color 
- *      space.  The following dithering technique works by locating the 
- *      color we want in this 3-D color grid and finding the eight colors 
- *      that surround it.  In the case of dithering into 8 colors with 1 
- *      bit for each red, green and blue, these eight colors will always 
- *      be the same.
- *
- *      Now we consider all possible diagonal paths between the eight colors
- *      and chose the path that runs closest to our desired color in 3-D
- *      color space.  There are 28 such paths.  Then we find the position
- *      on the path that is closest to our color.
- *
- *      The search is made faster by always reflecting our color into
- *      the bottom octant of the cube and comparing it to 7 paths.
- *      After the best path and the best position on that path are found,
- *      the results are reflected back into the original color space.
- *
- *      NOTE: This code has been tested for B/W and Color imaging with
- *      1, 2, 3 and 8 bits per component.
- *
- *      --- original code by Paul Haeberli @ Silicon Graphics - 1990
- *      --- extensively revised by L. Peter Deutsch, Aladdin Enterprises
- *
- *      lpd 3/14/94: added support for CMYK.
- */
-
-/*
- * The weights are arbitrary, as long as their ratios are correct
- * and they will fit into the difference between a ulong and a frac
- * with room to spare.  By making WEIGHT1 and WEIGHT4 powers of 2,
- * we can turn some multiplies into shifts.
- */
-#define WNUM 128000
-#define	WEIGHT1		(ulong)(WNUM/1000)	/* 1.0                    */
-#define	WEIGHT2		(ulong)(WNUM/1414)	/* 1/sqrt(2.0)            */
-#define	WEIGHT3		(ulong)(WNUM/1732)	/* 1/sqrt(3.0)            */
-#define WEIGHT4		(ulong)(WNUM/2000)	/* 1/sqrt(4.0)            */
-
-#define	DIAG_R		(0x1)
-#define	DIAG_G		(0x2)
-#define	DIAG_B		(0x4)
-#define DIAG_W		(0x8)
-#define	DIAG_RG		(0x3)
-#define	DIAG_GB		(0x6)
-#define	DIAG_BR		(0x5)
-#define	DIAG_RGB	(0x7)
-#define DIAG_RGBW	(0xf)
-
-/* What should we do about the W/K component?  For the moment, */
-/* we ignore it in the luminance computation. */
-#define lum_white_weight 0
-private const unsigned short lum_w[16] =
-{
-    (0 * lum_blue_weight + 0 * lum_green_weight + 0 * lum_red_weight + 0 * lum_white_weight),
-    (0 * lum_blue_weight + 0 * lum_green_weight + 1 * lum_red_weight + 0 * lum_white_weight),
-    (0 * lum_blue_weight + 1 * lum_green_weight + 0 * lum_red_weight + 0 * lum_white_weight),
-    (0 * lum_blue_weight + 1 * lum_green_weight + 1 * lum_red_weight + 0 * lum_white_weight),
-    (1 * lum_blue_weight + 0 * lum_green_weight + 0 * lum_red_weight + 0 * lum_white_weight),
-    (1 * lum_blue_weight + 0 * lum_green_weight + 1 * lum_red_weight + 0 * lum_white_weight),
-    (1 * lum_blue_weight + 1 * lum_green_weight + 0 * lum_red_weight + 0 * lum_white_weight),
-    (1 * lum_blue_weight + 1 * lum_green_weight + 1 * lum_red_weight + 0 * lum_white_weight),
-    (0 * lum_blue_weight + 0 * lum_green_weight + 0 * lum_red_weight + 1 * lum_white_weight),
-    (0 * lum_blue_weight + 0 * lum_green_weight + 1 * lum_red_weight + 1 * lum_white_weight),
-    (0 * lum_blue_weight + 1 * lum_green_weight + 0 * lum_red_weight + 1 * lum_white_weight),
-    (0 * lum_blue_weight + 1 * lum_green_weight + 1 * lum_red_weight + 1 * lum_white_weight),
-    (1 * lum_blue_weight + 0 * lum_green_weight + 0 * lum_red_weight + 1 * lum_white_weight),
-    (1 * lum_blue_weight + 0 * lum_green_weight + 1 * lum_red_weight + 1 * lum_white_weight),
-    (1 * lum_blue_weight + 1 * lum_green_weight + 0 * lum_red_weight + 1 * lum_white_weight),
-    (1 * lum_blue_weight + 1 * lum_green_weight + 1 * lum_red_weight + 1 * lum_white_weight)
-};
-
-/*
- * Render RGB or CMYK, possibly by halftoning.  If we are rendering RGB,
- * white is ignored.  If we are rendering CMYK, red/green/blue/white are
- * actually cyan/magenta/yellow/black.
- */
-int
-gx_render_device_color(frac red, frac green, frac blue, frac white, bool cmyk,
-	gx_color_value alpha, gx_device_color * pdevc, gx_device * dev,
-	gx_device_halftone * pdht, const gs_int_point * ht_phase)
-{
-    uint max_value = dev->color_info.dither_colors - 1;
-    uint num_levels = pdht->order.num_levels;
-    frac rem_r, rem_g, rem_b, rem_w;
-    uint r, g, b, w;
-    gx_color_value vr, vg, vb, vw;
-
-#define MAP_COLOR_RGB()\
-  (alpha == gx_max_color_value ?\
-   gx_map_rgb_color(dev, vr, vg, vb) :\
-   gx_map_rgb_alpha_color(dev, vr, vg, vb, alpha))
-#define MAP_COLOR_CMYK()\
-  gx_map_cmyk_color(dev, vr, vg, vb, vw)
-#define MAP_COLOR()\
-  (cmyk ? MAP_COLOR_CMYK() : MAP_COLOR_RGB())
-
-    /* Compute the quotient and remainder of each color component */
-    /* with the actual number of available colors. */
-    switch (max_value) {
-	case 1:		/* 8 or 16 colors */
-	    if (red == frac_1)
-		rem_r = 0, r = 1;
-	    else
-		rem_r = red, r = 0;
-	    if (green == frac_1)
-		rem_g = 0, g = 1;
-	    else
-		rem_g = green, g = 0;
-	    if (blue == frac_1)
-		rem_b = 0, b = 1;
-	    else
-		rem_b = blue, b = 0;
-	    if (white == frac_1)
-		rem_w = 0, w = 1;
-	    else
-		rem_w = white, w = 0;
-	    break;
-	default:
-	    {
-		ulong want_r, want_g, want_b, want_w;
-
-		want_r = (ulong) max_value * red;
-		r = frac_1_quo(want_r);
-		rem_r = frac_1_rem(want_r, r);
-
-		want_g = (ulong) max_value * green;
-		g = frac_1_quo(want_g);
-		rem_g = frac_1_rem(want_g, g);
-
-		want_b = (ulong) max_value * blue;
-		b = frac_1_quo(want_b);
-		rem_b = frac_1_rem(want_b, b);
-
-		want_w = (ulong) max_value * white;
-		w = frac_1_quo(want_w);
-		rem_w = frac_1_rem(want_w, w);
-	    }
-    }
-
-    /* Check for no dithering required */
-    if (!(rem_r | rem_g | rem_b | rem_w)) {
-	vr = fractional_color(r, max_value);
-	vg = fractional_color(g, max_value);
-	vb = fractional_color(b, max_value);
-	vw = fractional_color(w, max_value);
-	color_set_pure(pdevc, MAP_COLOR());
-	return 0;
-    }
-    if_debug12('c', "[c]rgbw=0x%x,0x%x,0x%x,0x%x -->\n   %x+0x%x,%x+0x%x,%x+0x%x,%x+0x%x -->\n",
-	    (unsigned)red, (unsigned)green, (unsigned)blue, (unsigned)white,
-	       (unsigned)r, (unsigned)rem_r, (unsigned)g, (unsigned)rem_g,
-	       (unsigned)b, (unsigned)rem_b, (unsigned)w, (unsigned)rem_w);
-
-    /* Dithering is required.  Choose between two algorithms. */
-
-    if (dev->color_info.num_components >= 4) {
-	/* This is a CMYK device. */
-	/* Use the slow, general colored halftone algorithm. */
-#define RGB_REM(rem_v, i)\
-  (rem_v * (ulong)(pdht->components ? pdht->components[pdht->color_indices[i]].corder.num_levels : num_levels) / frac_1)
-	uint lr = RGB_REM(rem_r, 0), lg = RGB_REM(rem_g, 1),
-	    lb = RGB_REM(rem_b, 2);
-
-	if (cmyk)
-	    color_set_cmyk_halftone(pdevc, pdht, r, lr, g, lg, b, lb,
-				    w, RGB_REM(rem_w, 3));
-	else
-	    color_set_rgb_halftone(pdevc, pdht, r, lr, g, lg, b, lb, alpha);
-#undef RGB_REM
-	color_set_phase_mod(pdevc, ht_phase->x, ht_phase->y,
-			    pdht->lcm_width, pdht->lcm_height);
-	if (!(pdevc->colors.colored.plane_mask &
-	      (pdevc->colors.colored.plane_mask - 1))) {
-	    /* We can reduce this color to a binary halftone or pure color. */
-	    return gx_reduce_colored_halftone(pdevc, dev, cmyk);
-	}
-	return 1;
-    }
-    /* Fast, approximate binary halftone algorithm. */
-
-    {
-	ulong hsize = num_levels;
-	int adjust_r, adjust_b, adjust_g, adjust_w;
-	gx_color_index color1;
-	frac amax, amin;
-	ulong fmax, cmax;
-	int axisc, facec, cubec, diagc;
-	unsigned short lum_invert;
-	ulong dot1, dot2, dot3, dot4;
-	int level;
-	int code;
-
-/* Flip the remainder color into the 0, 0, 0 octant. */
-	lum_invert = 0;
-#define half (frac_1/2)
-	if (rem_r > half)
-	    rem_r = frac_1 - rem_r,
-		adjust_r = -1, r++, lum_invert += lum_red_weight * 2;
-	else
-	    adjust_r = 1;
-	if (rem_g > half)
-	    rem_g = frac_1 - rem_g,
-		adjust_g = -1, g++, lum_invert += lum_green_weight * 2;
-	else
-	    adjust_g = 1;
-	if (rem_b > half)
-	    rem_b = frac_1 - rem_b,
-		adjust_b = -1, b++, lum_invert += lum_blue_weight * 2;
-	else
-	    adjust_b = 1;
-	vr = fractional_color(r, max_value);
-	vg = fractional_color(g, max_value);
-	vb = fractional_color(b, max_value);
-	if (cmyk) {
-	    if (rem_w > half)
-		rem_w = frac_1 - rem_w,
-		    adjust_w = -1, w++, lum_invert += lum_white_weight * 2;
-	    else
-		adjust_w = 1;
-	    vw = fractional_color(w, max_value);
-	    color1 = MAP_COLOR_CMYK();
-	} else
-	    color1 = MAP_COLOR_RGB();
-
-/* 
- * Dot the color with each axis to find the best one of 15;
- * find the color at the end of the axis chosen.
- */
-	cmax = (ulong) rem_r + rem_g + rem_b;
-	dot4 = cmax + rem_w;
-	if (rem_g > rem_r) {
-	    if (rem_b > rem_g)
-		amax = rem_b, axisc = DIAG_B;
-	    else
-		amax = rem_g, axisc = DIAG_G;
-	    if (rem_b > rem_r)
-		amin = rem_r, fmax = (ulong) rem_g + rem_b, facec = DIAG_GB;
-	    else
-		amin = rem_b, fmax = (ulong) rem_r + rem_g, facec = DIAG_RG;
-	} else {
-	    if (rem_b > rem_r)
-		amax = rem_b, axisc = DIAG_B;
-	    else
-		amax = rem_r, axisc = DIAG_R;
-	    if (rem_b > rem_g)
-		amin = rem_g, fmax = (ulong) rem_b + rem_r, facec = DIAG_BR;
-	    else
-		amin = rem_b, fmax = (ulong) rem_r + rem_g, facec = DIAG_RG;
-	}
-	if (rem_w > amin) {
-	    cmax = fmax + rem_w, cubec = facec + DIAG_W;
-	    if (rem_w > amax)
-		fmax = (ulong) amax + rem_w, facec = axisc + DIAG_W,
-		    amax = rem_w, axisc = DIAG_W;
-	    else if (rem_w > fmax - amax)
-		fmax = (ulong) amax + rem_w, facec = axisc + DIAG_W;
-	} else
-	    cubec = DIAG_RGB;
-
-	dot1 = amax * WEIGHT1;
-	dot2 = fmax * WEIGHT2;
-	dot3 = cmax * WEIGHT3;
-	/*dot4 see above */
-#define use_axis()\
-  diagc = axisc, level = (hsize * amax + (frac_1_long / 2)) / frac_1_long
-#define use_face()\
-  diagc = facec, level = (hsize * fmax + frac_1_long) / (2 * frac_1_long)
-#define use_cube()\
-  diagc = cubec, level = (hsize * cmax + (3 * frac_1_long / 2)) / (3 * frac_1_long)
-#define use_tesseract()\
-  diagc = DIAG_RGBW, level = (hsize * dot4 + (2 * frac_1_long)) / (4 * frac_1_long)
-	if (dot1 > dot2) {
-	    if (dot3 > dot1) {
-		if (dot4 * WEIGHT4 > dot3)
-		    use_tesseract();
-		else
-		    use_cube();
-	    } else {
-		if (dot4 * WEIGHT4 > dot1)
-		    use_tesseract();
-		else
-		    use_axis();
-	    }
-	} else {
-	    if (dot3 > dot2) {
-		if (dot4 * WEIGHT4 > dot3)
-		    use_tesseract();
-		else
-		    use_cube();
-	    } else {
-		if (dot4 * WEIGHT4 > dot2)
-		    use_tesseract();
-		else
-		    use_face();
-	    }
-	};
-
-	if_debug12('c', "   %x+0x%x,%x+0x%x,%x+0x%x,%x+0x%x; adjust=%d,%d,%d,%d\n",
-		 (unsigned)r, (unsigned)rem_r, (unsigned)g, (unsigned)rem_g,
-		 (unsigned)b, (unsigned)rem_b, (unsigned)w, (unsigned)rem_w,
-		   adjust_r, adjust_g, adjust_b, adjust_w);
-
-	if (level == 0) {
-	    color_set_pure(pdevc, color1);
-	    code = 0;
-	} else {
-	    gx_color_index color2;
-
-/* construct the second color, inverting back to original space if needed */
-	    if (diagc & DIAG_R)
-		r += adjust_r;
-	    if (diagc & DIAG_G)
-		g += adjust_g;
-	    if (diagc & DIAG_B)
-		b += adjust_b;
-/* get the second device color, sorting by luminance */
-	    vr = fractional_color(r, max_value);
-	    vg = fractional_color(g, max_value);
-	    vb = fractional_color(b, max_value);
-	    if (cmyk) {
-		if (diagc & DIAG_W)
-		    w += adjust_w;
-		vw = fractional_color(w, max_value);
-		color2 = MAP_COLOR_CMYK();
-	    } else
-		color2 = MAP_COLOR_RGB();
-	    if (level == num_levels) {	/* This can only happen through rounding.... */
-		color_set_pure(pdevc, color2);
-		code = 0;
-	    } else {
-		if (lum_w[diagc] < lum_invert)
-		    color_set_binary_halftone(pdevc, pdht, color2, color1, hsize - level);
-		else
-		    color_set_binary_halftone(pdevc, pdht, color1, color2, level);
-		color_set_phase_mod(pdevc, ht_phase->x, ht_phase->y,
-				    pdht->order.width,
-				    pdht->order.full_height);
-		code = 1;
-	    }
-	}
-
-	if_debug7('c', "[c]diagc=%d; colors=0x%lx,0x%lx; level=%d/%d; lum=%d,diag=%d\n",
-		  diagc, (ulong) pdevc->colors.binary.color[0],
-		  (ulong) pdevc->colors.binary.color[1],
-		  level, (unsigned)hsize, lum_invert, lum_w[diagc]);
-	return code;
-    }
-}
-
-/* Reduce a colored halftone to a binary halftone or pure color. */
-int
-gx_reduce_colored_halftone(gx_device_color *pdevc, gx_device *dev, bool cmyk)
-{
-    int planes = pdevc->colors.colored.plane_mask;
-    gx_color_value max_color = dev->color_info.dither_colors - 1;
-    uint b[4];
-    gx_color_value v[4];
-    gx_color_index c0, c1;
-
-    b[0] = pdevc->colors.colored.c_base[0];
-    v[0] = fractional_color(b[0], max_color);
-    b[1] = pdevc->colors.colored.c_base[1];
-    v[1] = fractional_color(b[1], max_color);
-    b[2] = pdevc->colors.colored.c_base[2];
-    v[2] = fractional_color(b[2], max_color);
-    if (cmyk) {
-	b[3] = pdevc->colors.colored.c_base[3];
-	v[3] = fractional_color(b[3], max_color);
-	c0 = dev_proc(dev, map_cmyk_color)(dev, v[0], v[1], v[2], v[3]);
-    } else
-	c0 = dev_proc(dev, map_rgb_color)(dev, v[0], v[1], v[2]);
-    if (planes == 0) {
-	/*
-	 * Use a pure color.  This case is unlikely, but it can occur if
-	 * (and only if) the difference of each component from the nearest
-	 * device color is less than one halftone level.
-	 */
-	color_set_pure(pdevc, c0);
-	return 0;
-    } else {
-	/* Use a binary color. */
-	int i = (planes >> 1) - (planes >> 3);  /* log2 for 1,2,4,8 */
-	uint bi = b[i] + 1;
-	const gx_device_halftone *pdht = pdevc->colors.colored.c_ht;
-	int index =
-	    (pdht->components == 0 ? -1 : pdht->color_indices[i]);
-	/*
-	 * NB: the halftone orders are all set up for an additive color
-	 *     space.  To use these work with a cmyk color space, it is
-	 *     necessary to invert both the color level and the color
-	 *     pair. Note that if the original color was provided an
-	 *     additive space, this will reverse (in an approximate sense)
-	 *     the color conversion performed to express the color in cmyk
-	 *     space.
-	 */
-	bool invert = dev->color_info.num_components == 4; /****** HACK ******/
-	uint level = pdevc->colors.colored.c_level[i];
-
-	v[i] = fractional_color(bi, max_color);
-	c1 = (cmyk ?
-	      dev_proc(dev, map_cmyk_color)(dev, v[0], v[1], v[2], v[3]) :
-	      dev_proc(dev, map_rgb_color)(dev, v[0], v[1], v[2]));
-	if (invert) {
-	    level =
-		(index < 0 ? &pdht->order : &pdht->components[index].corder)
-		  ->num_levels - level;
-	    color_set_binary_halftone_component(pdevc, pdht, index, c1, c0,
-						level);
-	} else
-	    color_set_binary_halftone_component(pdevc, pdht, index, c0, c1, level);
-					    
-	return 1;
-    }
-}
-

+ 0 - 269
sys/src/cmd/gs/src/gxhint1.c

@@ -1,269 +0,0 @@
-/* Copyright (C) 1990, 1992, 1993, 1997, 1998 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gxhint1.c,v 1.2 2000/09/19 19:00:37 lpd Exp $ */
-/* Font level hints for Type 1 fonts */
-#include "gx.h"
-#include "gserrors.h"
-#include "gxarith.h"
-#include "gxfixed.h"
-#include "gxmatrix.h"
-#include "gxfont.h"
-#include "gxfont1.h"
-#include "gxtype1.h"
-
-/* Define whether to use font hints. */
-/* Only set this to false for debugging the hint machinery. */
-static bool USE_HINTS = true;
-
-/* ------ Initialization ------ */
-
-typedef zone_table(1) a_zone_table;
-typedef stem_table(1) a_stem_table;
-private void
-    compute_snaps(P6(const gs_matrix_fixed *, const a_stem_table *,
-		     stem_snap_table *, int, int, const char *));
-private alignment_zone *
-    compute_zones(P6(const gs_matrix_fixed *, const font_hints *,
-	const a_zone_table *, const a_zone_table *, alignment_zone *, int));
-private int
-    transform_zone(P4(const gs_matrix_fixed *, const font_hints *,
-		      const float *, alignment_zone *));
-
-/* Reset the font-level hints. */
-void
-reset_font_hints(font_hints * pfh, const gs_log2_scale_point * plog2_scale)
-{
-    set_pixel_scale(&pfh->scale.x, plog2_scale->x);
-    set_pixel_scale(&pfh->scale.y, plog2_scale->y);
-    pfh->axes_swapped = pfh->x_inverted = pfh->y_inverted = false;
-    pfh->use_x_hints = pfh->use_y_hints = false;
-    pfh->snap_h.count = pfh->snap_v.count = 0;
-    pfh->a_zone_count = 0;
-}
-
-/* Compute the font-level hints from the font and the matrix. */
-/* We should cache this with the font/matrix pair.... */
-void
-compute_font_hints(font_hints * pfh, const gs_matrix_fixed * pmat,
-       const gs_log2_scale_point * plog2_scale, const gs_type1_data * pdata)
-{
-    alignment_zone *zp = &pfh->a_zones[0];
-
-    reset_font_hints(pfh, plog2_scale);
-    /* Figure out which hints, if any, to use, */
-    /* and the orientation of the axes. */
-    if (is_fzero(pmat->xy))
-	pfh->y_inverted = is_fneg(pmat->yy),
-	    pfh->use_y_hints = USE_HINTS;
-    else if (is_fzero(pmat->xx))
-	pfh->y_inverted = is_fneg(pmat->xy),
-	    pfh->axes_swapped = true,
-	    pfh->use_y_hints = USE_HINTS;
-    if (is_fzero(pmat->yx))
-	pfh->x_inverted = is_fneg(pmat->xx),
-	    pfh->use_x_hints = USE_HINTS;
-    else if (is_fzero(pmat->yy))
-	pfh->x_inverted = is_fneg(pmat->yx),
-	    pfh->axes_swapped = true,
-	    pfh->use_x_hints = USE_HINTS;
-    if_debug6('y', "[y]ctm=[%g %g %g %g %g %g]\n",
-	      pmat->xx, pmat->xy, pmat->yx, pmat->yy,
-	      pmat->tx, pmat->ty);
-    if_debug7('y', "[y]scale=%d/%d, swapped=%d, x/y_hints=%d,%d, x/y_inverted=%d,%d\n",
-	      1 << plog2_scale->x, 1 << plog2_scale->y,
-	      pfh->axes_swapped, pfh->use_x_hints, pfh->use_y_hints,
-	      pfh->x_inverted, pfh->y_inverted);
-    /* Transform the actual hints. */
-    if (pfh->use_x_hints) {
-	compute_snaps(pmat, (const a_stem_table *)&pdata->StdHW,
-		      &pfh->snap_h, 0, pfh->axes_swapped, "h");
-	compute_snaps(pmat, (const a_stem_table *)&pdata->StemSnapH,
-		      &pfh->snap_h, 0, pfh->axes_swapped, "h");
-    }
-    if (pfh->use_y_hints) {
-	gs_fixed_point vw;
-	fixed *vp = (pfh->axes_swapped ? &vw.x : &vw.y);
-	pixel_scale *psp =
-	(pfh->axes_swapped ? &pfh->scale.x : &pfh->scale.y);
-
-	/* Convert BlueFuzz to device pixels. */
-	if (gs_distance_transform2fixed(pmat, 0.0,
-					(float)pdata->BlueFuzz,
-					&vw) < 0
-	    )
-	    vw.x = vw.y = fixed_0;
-	pfh->blue_fuzz = any_abs(*vp);
-	/*
-	 * Decide whether to suppress overshoots.  The formula in
-	 * section 5.6 of the "Adobe Type 1 Font Format" says that
-	 * at 300 dpi, if BlueScale = (P - 0.49) / 240, overshoot
-	 * suppression turns off at point sizes at least P, i.e.:
-	 *      P >= BlueScale * 240 + 0.49.
-	 * At 300 dpi, P = |CTM.yy| / (300/72), so the condition is
-	 * equivalent to
-	 *      |CTM.yy| >= BlueScale * 1000 + 2.0417,
-	 * or
-	 *      BlueScale >= (|CTM.yy| - 2.0417) / 1000.
-	 * Since *pmat is the concatenation of the FontMatrix and
-	 * CTM, if we assume a 1000-unit scale, this is equivalent to
-	 *      BlueScale >= |pmat->yy| - 0.00020417.
-	 * Since the constant term is slightly smaller than
-	 * fixed_epsilon, we just disregard it.
-	 *
-	 * According to the same section of the Adobe documentation,
-	 * there is a requirement that BlueScale times the maximum
-	 * alignment zone height must be less than 1.  We enforced
-	 * this when the font was constructed (in zfont1.c).
-	 */
-	if (gs_distance_transform2fixed(pmat, 0.0, 1.0, &vw) < 0)
-	    vw.x = vw.y = fixed_0;
-	pfh->suppress_overshoot =
-	    fixed2float(any_abs(*vp) >> psp->log2_unit) <
-	    pdata->BlueScale;
-	if (gs_distance_transform2fixed(pmat, 0.0, pdata->BlueShift,
-					&vw) < 0
-	    )
-	    vw.x = vw.y = fixed_0;
-	pfh->blue_shift = any_abs(*vp);
-	/*
-	 * Don't let the blue shift exceed half a pixel.
-	 * See the discussion of BlueShift in section 5.7 of the
-	 * "Adobe Type 1 Font Format" book.
-	 */
-	if (pfh->blue_shift > psp->half)
-	    pfh->blue_shift = psp->half;
-	if_debug6('y', "[y]blue_fuzz=%d->%g, blue_scale=%g, blue_shift=%g->%g, sup_ov=%d\n",
-		  pdata->BlueFuzz, fixed2float(pfh->blue_fuzz),
-		  pdata->BlueScale,
-		  pdata->BlueShift, fixed2float(pfh->blue_shift),
-		  pfh->suppress_overshoot);
-	zp = compute_zones(pmat, pfh,
-			   (const a_zone_table *)&pdata->BlueValues,
-			   (const a_zone_table *)&pdata->FamilyBlues,
-			   zp, 1);
-	zp = compute_zones(pmat, pfh,
-			   (const a_zone_table *)&pdata->OtherBlues,
-			   (const a_zone_table *)&pdata->FamilyOtherBlues,
-			   zp, max_OtherBlues);
-	compute_snaps(pmat, (const a_stem_table *)&pdata->StdVW,
-		      &pfh->snap_v, 1, !pfh->axes_swapped, "v");
-	compute_snaps(pmat, (const a_stem_table *)&pdata->StemSnapV,
-		      &pfh->snap_v, 1, !pfh->axes_swapped, "v");
-    }
-    pfh->a_zone_count = zp - &pfh->a_zones[0];
-}
-
-/* Transform one set of stem snap widths. */
-private void
-compute_snaps(const gs_matrix_fixed * pmat, const a_stem_table * pst,
-	    stem_snap_table * psst, int from_y, int to_y, const char *tname)
-{
-    gs_fixed_point wxy;
-    fixed *wp = (to_y ? &wxy.y : &wxy.x);
-    int i;
-    int j = psst->count;
-
-    for (i = 0; i < pst->count; i++) {
-	float w = pst->values[i];
-	int code =
-	(from_y ?
-	 gs_distance_transform2fixed(pmat, 0.0, w, &wxy) :
-	 gs_distance_transform2fixed(pmat, w, 0.0, &wxy)
-	);
-
-	if (code < 0)
-	    continue;
-	psst->data[j] = any_abs(*wp);
-	if_debug3('y', "[y]snap_%s[%d]=%g\n", tname, j,
-		  fixed2float(psst->data[j]));
-	j++;
-    }
-    psst->count = j;
-}
-
-/* Compute the alignment zones for one set of 'blue' values. */
-private alignment_zone *
-compute_zones(const gs_matrix_fixed * pmat, const font_hints * pfh,
-	      const a_zone_table * blues, const a_zone_table * family_blues,
-	      alignment_zone * zp, int bottom_count)
-{
-    int i;
-    fixed fuzz = pfh->blue_fuzz;
-    int inverted =
-    (pfh->axes_swapped ? pfh->x_inverted : pfh->y_inverted);
-
-    for (i = 0; i < blues->count; i += 2) {
-	const float *vp = &blues->values[i];
-
-	zp->is_top_zone = i >> 1 >= bottom_count;
-	if (transform_zone(pmat, pfh, vp, zp) < 0)
-	    continue;
-	if_debug5('y', "[y]blues[%d]=%g,%g -> %g,%g\n",
-		  i >> 1, vp[0], vp[1],
-		  fixed2float(zp->v0), fixed2float(zp->v1));
-	if (i < family_blues->count) {	/* Check whether family blues should supersede. */
-	    alignment_zone fz;
-	    const float *fvp = &family_blues->values[i];
-	    fixed unit = (pfh->axes_swapped ?
-			  pfh->scale.x.unit : pfh->scale.y.unit);
-	    fixed diff;
-
-	    if (transform_zone(pmat, pfh, fvp, &fz) < 0)
-		continue;
-	    if_debug5('y', "[y]f_blues[%d]=%g,%g -> %g,%g\n",
-		      i >> 1, fvp[0], fvp[1],
-		      fixed2float(fz.v0), fixed2float(fz.v1));
-	    diff = (zp->v1 - zp->v0) - (fz.v1 - fz.v0);
-	    if (diff > -unit && diff < unit)
-		zp->v0 = fz.v0, zp->v1 = fz.v1;
-	}
-	/* Compute the flat position, and add the fuzz. */
-	if ((inverted ? zp->is_top_zone : !zp->is_top_zone))
-	    zp->flat = zp->v1, zp->v0 -= fuzz;
-	else
-	    zp->flat = zp->v0, zp->v1 += fuzz;
-	zp++;
-    }
-    return zp;
-}
-
-/* Transform a single alignment zone to device coordinates, */
-/* taking axis swapping into account. */
-private int
-transform_zone(const gs_matrix_fixed * pmat, const font_hints * pfh,
-	       const float *vp, alignment_zone * zp)
-{
-    gs_fixed_point p0, p1;
-    fixed v0, v1;
-    int code;
-
-    if ((code = gs_point_transform2fixed(pmat, 0.0, vp[0], &p0)) < 0 ||
-	(code = gs_point_transform2fixed(pmat, 0.0, vp[1], &p1)) < 0
-	)
-	return code;
-    if (pfh->axes_swapped)
-	v0 = p0.x, v1 = p1.x;
-    else
-	v0 = p0.y, v1 = p1.y;
-    if (v0 <= v1)
-	zp->v0 = v0, zp->v1 = v1;
-    else
-	zp->v0 = v1, zp->v1 = v0;
-    return 0;
-}

+ 0 - 410
sys/src/cmd/gs/src/gxhint2.c

@@ -1,410 +0,0 @@
-/* Copyright (C) 1990, 1995, 1997, 1998, 1999 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gxhint2.c,v 1.2 2000/09/19 19:00:37 lpd Exp $ */
-/* Character level hints for Type 1 fonts. */
-#include "memory_.h"
-#include "gx.h"
-#include "gserrors.h"
-#include "gxarith.h"
-#include "gxfixed.h"
-#include "gxmatrix.h"
-#include "gxfont.h"
-#include "gxfont1.h"
-#include "gxtype1.h"
-
-/* Define the tolerance for testing whether a point is in a zone, */
-/* in device pixels.  (Maybe this should be variable?) */
-#define STEM_TOLERANCE float2fixed(0.05)
-
-/* Forward references */
-
-private stem_hint *type1_stem(P4(const gs_type1_state *, stem_hint_table *, fixed, fixed));
-private fixed find_snap(P3(fixed, const stem_snap_table *, const pixel_scale *));
-private alignment_zone *find_zone(P3(gs_type1_state *, fixed, fixed));
-
-/* Reset the stem hints. */
-void
-reset_stem_hints(gs_type1_state * pcis)
-{
-    pcis->hstem_hints.count = pcis->hstem_hints.replaced_count = 0;
-    pcis->vstem_hints.count = pcis->vstem_hints.replaced_count = 0;
-    update_stem_hints(pcis);
-}
-
-/* Prepare to replace the stem hints. */
-private void
-save_replaced_hints(stem_hint_table * psht)
-{
-    int rep_count = min(psht->replaced_count + psht->count, max_stems);
-
-    memmove(&psht->data[max_stems - rep_count], &psht->data[0],
-	    psht->count * sizeof(psht->data[0]));
-    psht->replaced_count = rep_count;
-    psht->count = psht->current = 0;
-}
-void
-type1_replace_stem_hints(gs_type1_state * pcis)
-{
-    if_debug2('y', "[y]saving hints: %d hstem, %d vstem\n",
-	      pcis->hstem_hints.count, pcis->vstem_hints.count);
-    save_replaced_hints(&pcis->hstem_hints);
-    save_replaced_hints(&pcis->vstem_hints);
-    if_debug2('y', "[y]total saved hints: %d hstem, %d vstem\n",
-	      pcis->hstem_hints.replaced_count,
-	      pcis->vstem_hints.replaced_count);
-}
-
-/* Update the internal stem hint pointers after moving or copying the state. */
-void
-update_stem_hints(gs_type1_state * pcis)
-{
-    pcis->hstem_hints.current = 0;
-    pcis->vstem_hints.current = 0;
-}
-
-/* ------ Add hints ------ */
-
-#undef c_fixed
-#define c_fixed(d, c) m_fixed(d, c, pcis->fc, max_coeff_bits)
-
-#define if_debug_print_add_stem(chr, msg, psht, psh, c, dc, v, dv)\
-	if_debug10(chr, "%s %d/%d: %g,%g -> %g(%g)%g ; d = %g,%g\n",\
-		   msg, (int)((psh) - &(psht)->data[0]), (psht)->count,\
-		   fixed2float(c), fixed2float(dc),\
-		   fixed2float(v), fixed2float(dv), fixed2float((v) + (dv)),\
-		   fixed2float((psh)->dv0), fixed2float((psh)->dv1))
-
-/* Compute and store the adjusted stem coordinates. */
-private void
-store_stem_deltas(const stem_hint_table * psht, stem_hint * psh,
-		  const pixel_scale * psp, fixed v, fixed dv, fixed adj_dv)
-{
-    /*
-     * We want to align the stem so its edges fall on pixel boundaries
-     * (possibly "big pixel" boundaries if we are oversampling),
-     * but if hint replacement has occurred, we must shift edges in a
-     * consistent way.  This is a real nuisance, but I don't see how
-     * to avoid it; if we don't do it, we get bizarre anomalies like
-     * disappearing stems.
-     */
-    const stem_hint *psh0 = 0;
-    const stem_hint *psh1 = 0;
-    int i;
-
-    /*
-     * If we ever had a hint with the same edge(s), align this one
-     * the same way.
-     */
-    for (i = max_stems - psht->replaced_count; i < max_stems; ++i) {
-	const stem_hint *ph = &psht->data[i];
-
-	if (ph == psh)
-	    continue;
-	if (ph->v0 == psh->v0)
-	    psh0 = ph;
-	if (ph->v1 == psh->v1)
-	    psh1 = ph;
-    }
-    for (i = 0; i < psht->count; ++i) {
-	const stem_hint *ph = &psht->data[i];
-
-	if (ph == psh)
-	    continue;
-	if (ph->v0 == psh->v0)
-	    psh0 = ph;
-	if (ph->v1 == psh->v1)
-	    psh1 = ph;
-    }
-    if (psh0 != 0) {
-	psh->dv0 = psh0->dv0;
-	if (psh1 != 0) {	/* Both edges are determined. */
-	    psh->dv1 = psh1->dv1;
-	} else {		/* Only the lower edge is determined. */
-	    psh->dv1 = psh->dv0 + adj_dv - dv;
-	}
-    } else if (psh1 != 0) {	/* Only the upper edge is determined. */
-	psh->dv1 = psh1->dv1;
-	psh->dv0 = psh->dv1 + adj_dv - dv;
-    } else {			/* Neither edge is determined. */
-	fixed diff2_dv = arith_rshift_1(adj_dv - dv);
-	fixed edge = v - diff2_dv;
-	fixed diff_v = scaled_rounded(edge, psp) - edge;
-
-	psh->dv0 = diff_v - diff2_dv;
-	psh->dv1 = diff_v + diff2_dv;
-    }
-}
-
-/*
- * The Type 1 font format uses negative stem widths to indicate edge hints.
- * We need to convert these into zero-width stem hints.
- */
-private void
-detect_edge_hint(fixed *xy, fixed *dxy)
-{
-    if (*dxy == -21) {
-	/* Bottom edge hint. */
-	*xy -= 21, *dxy = 0;
-    } else if (*dxy == -20) {
-	/* Top edge hint. */
-	*dxy = 0;
-    }
-}
-
-/* Add a horizontal stem hint. */
-void
-type1_do_hstem(gs_type1_state * pcis, fixed y, fixed dy,
-	       const gs_matrix_fixed * pmat)
-{
-    stem_hint *psh;
-    alignment_zone *pz;
-    const pixel_scale *psp;
-    fixed v, dv, adj_dv;
-    fixed vtop, vbot;
-
-    if (!pcis->fh.use_y_hints || !pmat->txy_fixed_valid)
-	return;
-    detect_edge_hint(&y, &dy);
-    y += pcis->lsb.y + pcis->adxy.y;
-    if (pcis->fh.axes_swapped) {
-	psp = &pcis->scale.x;
-	v = pcis->vs_offset.x + c_fixed(y, yx) + pmat->tx_fixed;
-	dv = c_fixed(dy, yx);
-    } else {
-	psp = &pcis->scale.y;
-	v = pcis->vs_offset.y + c_fixed(y, yy) + pmat->ty_fixed;
-	dv = c_fixed(dy, yy);
-    }
-    if (dy < 0)
-	vbot = v + dv, vtop = v;
-    else
-	vbot = v, vtop = v + dv;
-    if (dv < 0)
-	v += dv, dv = -dv;
-    psh = type1_stem(pcis, &pcis->hstem_hints, v, dv);
-    if (psh == 0)
-	return;
-    adj_dv = find_snap(dv, &pcis->fh.snap_h, psp);
-    pz = find_zone(pcis, vbot, vtop);
-    if (pz != 0) {		/* Use the alignment zone to align the outer stem edge. */
-	int inverted =
-	(pcis->fh.axes_swapped ? pcis->fh.x_inverted : pcis->fh.y_inverted);
-	int adjust_v1 =
-	(inverted ? !pz->is_top_zone : pz->is_top_zone);
-	fixed flat_v = pz->flat;
-	fixed overshoot =
-	(pz->is_top_zone ? vtop - flat_v : flat_v - vbot);
-	fixed pos_over =
-	(inverted ? -overshoot : overshoot);
-	fixed ddv = adj_dv - dv;
-	fixed shift = scaled_rounded(flat_v, psp) - flat_v;
-
-	if (pos_over > 0) {
-	    if (pos_over < pcis->fh.blue_shift || pcis->fh.suppress_overshoot) {	/* Character is small, suppress overshoot. */
-		if_debug0('y', "[y]suppress overshoot\n");
-		if (pz->is_top_zone)
-		    shift -= overshoot;
-		else
-		    shift += overshoot;
-	    } else if (pos_over < psp->unit) {	/* Enforce overshoot. */
-		if_debug0('y', "[y]enforce overshoot\n");
-		if (overshoot < 0)
-		    overshoot = -psp->unit - overshoot;
-		else
-		    overshoot = psp->unit - overshoot;
-		if (pz->is_top_zone)
-		    shift += overshoot;
-		else
-		    shift -= overshoot;
-	    }
-	}
-	if (adjust_v1)
-	    psh->dv1 = shift, psh->dv0 = shift - ddv;
-	else
-	    psh->dv0 = shift, psh->dv1 = shift + ddv;
-	if_debug2('y', "[y]flat_v = %g, overshoot = %g for:\n",
-		  fixed2float(flat_v), fixed2float(overshoot));
-    } else {			/* Align the stem so its edges fall on pixel boundaries. */
-	store_stem_deltas(&pcis->hstem_hints, psh, psp, v, dv, adj_dv);
-    }
-    if_debug_print_add_stem('y', "[y]hstem", &pcis->hstem_hints, psh,
-			    y, dy, v, dv);
-}
-
-/* Add a vertical stem hint. */
-void
-type1_do_vstem(gs_type1_state * pcis, fixed x, fixed dx,
-	       const gs_matrix_fixed * pmat)
-{
-    stem_hint *psh;
-    const pixel_scale *psp;
-    fixed v, dv, adj_dv;
-
-    if (!pcis->fh.use_x_hints)
-	return;
-    detect_edge_hint(&x, &dx);
-    x += pcis->lsb.x + pcis->adxy.x;
-    if (pcis->fh.axes_swapped) {
-	psp = &pcis->scale.y;
-	v = pcis->vs_offset.y + c_fixed(x, xy) + pmat->ty_fixed;
-	dv = c_fixed(dx, xy);
-    } else {
-	psp = &pcis->scale.x;
-	v = pcis->vs_offset.x + c_fixed(x, xx) + pmat->tx_fixed;
-	dv = c_fixed(dx, xx);
-    }
-    if (dv < 0)
-	v += dv, dv = -dv;
-    psh = type1_stem(pcis, &pcis->vstem_hints, v, dv);
-    if (psh == 0)
-	return;
-    adj_dv = find_snap(dv, &pcis->fh.snap_v, psp);
-    if (pcis->pfont->data.ForceBold && adj_dv < psp->unit)
-	adj_dv = psp->unit;
-    /* Align the stem so its edges fall on pixel boundaries. */
-    store_stem_deltas(&pcis->vstem_hints, psh, psp, v, dv, adj_dv);
-    if_debug_print_add_stem('y', "[y]vstem", &pcis->vstem_hints, psh,
-			    x, dx, v, dv);
-}
-
-/* Adjust the character center for a vstem3. */
-/****** NEEDS UPDATING FOR SCALE ******/
-void
-type1_do_center_vstem(gs_type1_state * pcis, fixed x0, fixed dx,
-		      const gs_matrix_fixed * pmat)
-{
-    fixed x1 = x0 + dx;
-    gs_fixed_point pt0, pt1, width;
-    fixed center, int_width;
-    fixed *psxy;
-
-    if (gs_point_transform2fixed(pmat, fixed2float(x0), 0.0, &pt0) < 0 ||
-	gs_point_transform2fixed(pmat, fixed2float(x1), 0.0, &pt1) < 0
-	) {			/* Punt. */
-	return;
-    }
-    width.x = pt0.x - pt1.x;
-    if (width.x < 0)
-	width.x = -width.x;
-    width.y = pt0.y - pt1.y;
-    if (width.y < 0)
-	width.y = -width.y;
-    if (width.y < float2fixed(0.05)) {	/* Vertical on device */
-	center = arith_rshift_1(pt0.x + pt1.x);
-	int_width = fixed_rounded(width.x);
-	psxy = &pcis->vs_offset.x;
-    } else {			/* Horizontal on device */
-	center = arith_rshift_1(pt0.y + pt1.y);
-	int_width = fixed_rounded(width.y);
-	psxy = &pcis->vs_offset.y;
-    }
-    if (int_width == fixed_0 || (int_width & fixed_1) == 0) {	/* Odd width, center stem over pixel. */
-	*psxy = fixed_floor(center) + fixed_half - center;
-    } else {			/* Even width, center stem between pixels. */
-	*psxy = fixed_rounded(center) - center;
-    }
-    /* We can't fix up the current point here, */
-    /* but we can fix up everything else. */
-/****** TO BE COMPLETED ******/
-}
-
-/* Add a stem hint, keeping the table sorted. */
-/* We know that d >= 0. */
-/* Return the stem hint pointer, or 0 if the table is full. */
-private stem_hint *
-type1_stem(const gs_type1_state * pcis, stem_hint_table * psht,
-	   fixed v0, fixed d)
-{
-    stem_hint *bot = &psht->data[0];
-    stem_hint *top = bot + psht->count;
-
-    if (psht->count >= max_stems)
-	return 0;
-    while (top > bot && v0 < top[-1].v0) {
-	*top = top[-1];
-	top--;
-    }
-    /* Add a little fuzz for insideness testing. */
-    top->v0 = v0 - STEM_TOLERANCE;
-    top->v1 = v0 + d + STEM_TOLERANCE;
-    top->index = pcis->hstem_hints.count + pcis->vstem_hints.count;
-    top->active = true;
-    psht->count++;
-    return top;
-}
-
-/* Compute the adjusted width of a stem. */
-/* The value returned is always a multiple of scale.unit. */
-private fixed
-find_snap(fixed dv, const stem_snap_table * psst, const pixel_scale * pps)
-{				/* We aren't sure why a maximum difference of pps->half */
-    /* works better than pps->unit, but it does. */
-#define max_snap_distance (pps->half)
-    fixed best = max_snap_distance;
-    fixed adj_dv;
-    int i;
-
-    for (i = 0; i < psst->count; i++) {
-	fixed diff = psst->data[i] - dv;
-
-	if (any_abs(diff) < any_abs(best)) {
-	    if_debug3('Y', "[Y]possibly snap %g to [%d]%g\n",
-		      fixed2float(dv), i,
-		      fixed2float(psst->data[i]));
-	    best = diff;
-	}
-    }
-    adj_dv = scaled_rounded((any_abs(best) < max_snap_distance ?
-			     dv + best : dv),
-			    pps);
-    if (adj_dv == 0)
-	adj_dv = pps->unit;
-#ifdef DEBUG
-    if (adj_dv == dv)
-	if_debug1('Y', "[Y]no snap %g\n", fixed2float(dv));
-    else
-	if_debug2('Y', "[Y]snap %g to %g\n",
-		  fixed2float(dv), fixed2float(adj_dv));
-#endif
-    return adj_dv;
-#undef max_snap_distance
-}
-
-/* Find the applicable alignment zone for a stem, if any. */
-/* vbot and vtop are the bottom and top of the stem, */
-/* but without interchanging if the y axis is inverted. */
-private alignment_zone *
-find_zone(gs_type1_state * pcis, fixed vbot, fixed vtop)
-{
-    alignment_zone *pz;
-
-    for (pz = &pcis->fh.a_zones[pcis->fh.a_zone_count];
-	 --pz >= &pcis->fh.a_zones[0];
-	) {
-	fixed v = (pz->is_top_zone ? vtop : vbot);
-
-	if (v >= pz->v0 && v <= pz->v1) {
-	    if_debug2('Y', "[Y]stem crosses %s-zone %d\n",
-		      (pz->is_top_zone ? "top" : "bottom"),
-		      (int)(pz - &pcis->fh.a_zones[0]));
-	    return pz;
-	}
-    }
-    return 0;
-}

+ 0 - 556
sys/src/cmd/gs/src/gxhint3.c

@@ -1,556 +0,0 @@
-/* Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gxhint3.c,v 1.3 2001/08/29 19:04:55 lpd Exp $ */
-/* Apply hints for Type 1 fonts. */
-#include "gx.h"
-#include "gserrors.h"
-#include "gxarith.h"
-#include "gxfixed.h"
-#include "gxmatrix.h"
-#include "gxfont.h"
-#include "gxfont1.h"
-#include "gxtype1.h"
-#include "gzpath.h"
-
-/* ------ Path hints ------ */
-
-/* Forward references */
-private void
-     apply_hstem_hints(P3(gs_type1_state *, int, gs_fixed_point *)), apply_vstem_hints(P3(gs_type1_state *, int, gs_fixed_point *));
-
-
-/*
- * Apply hints along a newly added tail of a subpath.
- * Path segments require hints as follows:
- *      Nearly vertical line: vstem hints at both ends.
- *      Nearly horizontal line: hstem hints at both ends.
- *      Curve with nearly vertical/horizontal start/end:
- *        vstem/hstem hints at start/end.
- * We also must take care to handle the implicit closing line for
- * subpaths that aren't explicitly closed.
- *
- * Note that "upper" and "lower" refer to device coordinates, which are
- * what we use throughout the Type 1 code; however, "horizontal" and
- * "vertical" refer to the character space coordinate system.
- */
-#define HINT_VERT_LOWER 1
-#define HINT_VERT_UPPER 2	/* must be > lower */
-#define HINT_VERT (HINT_VERT_LOWER | HINT_VERT_UPPER)
-#define HINT_HORZ_LOWER 4
-#define HINT_HORZ_UPPER 8	/* must be > lower */
-#define HINT_HORZ (HINT_HORZ_LOWER | HINT_HORZ_UPPER)
-private inline bool
-nearly_axial(fixed dmajor, fixed dminor)
-{
-    return (dminor <= dmajor >> 4);
-}
-
-/*
- * Determine which types of hints, if any, are applicable to a given
- * line segment.
- */
-private int
-line_hints(const gs_type1_state * pcis, const gs_fixed_point * p0,
-	   const gs_fixed_point * p1)
-{
-    fixed dx = p1->x - p0->x;
-    fixed dy = p1->y - p0->y;
-    fixed adx, ady;
-    bool xi = pcis->fh.x_inverted, yi = pcis->fh.y_inverted;
-    int hints;
-
-    /*
-     * To figure out which side of the stem we are on, we assume that the
-     * inside of the filled area is always to the left of the edge, i.e.,
-     * edges moving in -X or +Y in character space are on the "upper" side
-     * of the stem, while edges moving by +X or -Y are on the "lower" side.
-     * (See section 3.5 of the Adobe Type 1 Font Format book.)
-     */
-
-    /*
-     * Map the deltas back into character space.  This is essentially an
-     * inverse-distance-transform with the combined matrix, but we don't
-     * bother to undo the scaling, since it only matters for the axiality
-     * test and we don't care about situations where X and Y scaling are
-     * radically different.
-     */
-    if (xi)
-	dx = -dx;
-    if (yi)
-	dy = -dy;
-    if (pcis->fh.axes_swapped) {
-	fixed t = dx;
-	int ti = xi;
-
-	dx = dy, xi = yi;
-	dy = t, yi = ti;
-    }
-    adx = any_abs(dx);
-    ady = any_abs(dy);
-    /*
-     * Note that since upper/lower refer to device space, we must
-     * interchange them if the corresponding axis is inverted.
-     */
-    if (dy != 0 && nearly_axial(ady, adx)) {
-	hints = (dy > 0 ? HINT_VERT_UPPER : HINT_VERT_LOWER);
-	if (xi)
-	    hints ^= (HINT_VERT_LOWER | HINT_VERT_UPPER);
-    } else if (dx != 0 && nearly_axial(adx, ady)) {
-	hints = (dx < 0 ? HINT_HORZ_UPPER : HINT_HORZ_LOWER);
-	if (yi)
-	    hints ^= (HINT_HORZ_LOWER | HINT_HORZ_UPPER);
-    } else
-	hints = 0;
-    if_debug7('y', "[y]hint from 0x%lx(%1.4f,%1.4f) to 0x%lx(%1.4f,%1.4f) = %d\n",
-	      (ulong) p0, fixed2float(p0->x), fixed2float(p0->y),
-	      (ulong) p1, fixed2float(p1->x), fixed2float(p1->y),
-	      hints);
-    return hints;
-}
-
-/* Apply hints at a point.  Optionally return the amount of adjustment. */
-private void
-apply_hints_at(gs_type1_state * pcis, int hints, gs_fixed_point * ppt,
-	       gs_fixed_point * pdiff)
-{
-    fixed px = ppt->x, py = ppt->y;
-
-    if_debug4('y', "[y]applying hints %d to 0x%lx(%1.4f,%1.4f) ...\n",
-	      hints, (ulong) ppt, fixed2float(px), fixed2float(py));
-    if ((hints & HINT_VERT) != 0 &&
-	(pcis->vstem_hints.count & pcis->dotsection_flag) != 0
-	)
-	apply_vstem_hints(pcis, (hints & HINT_VERT_UPPER) -
-			  (hints & HINT_VERT_LOWER), ppt);
-    if ((hints & HINT_HORZ) != 0 &&
-	(pcis->hstem_hints.count & pcis->dotsection_flag) != 0
-	)
-	apply_hstem_hints(pcis, (hints & HINT_HORZ_UPPER) -
-			  (hints & HINT_HORZ_LOWER), ppt);
-    if (pdiff != NULL)
-	pdiff->x = ppt->x - px,
-	    pdiff->y = ppt->y - py;
-    /* Here is where we would round *ppt to the nearest quarter-pixel */
-    /* if we wanted to. */
-    if_debug2('y', "[y] ... => (%1.4f,%1.4f)\n",
-	      fixed2float(ppt->x), fixed2float(ppt->y));
-}
-
-/* Add a hint delta to a point. */
-#ifndef DEBUG
-inline
-#endif
-private void
-add_hint_diff(gs_fixed_point * ppt, gs_fixed_point delta)
-{
-    if_debug7('y', "[y]adding diff (%1.4f,%1.4f) to 0x%lx(%1.4f,%1.4f) => (%1.4f,%1.4f)\n",
-	      fixed2float(delta.x), fixed2float(delta.y), (ulong) ppt,
-	      fixed2float(ppt->x), fixed2float(ppt->y),
-	      fixed2float(ppt->x + delta.x), fixed2float(ppt->y + delta.y));
-    ppt->x += delta.x;
-    ppt->y += delta.y;
-}
-
-/* Test whether a line is null. */
-inline private bool
-line_is_null(gs_fixed_point p0, gs_fixed_point p1)
-{
-    return (any_abs(p1.x - p0.x) + any_abs(p1.y - p0.y) < fixed_epsilon * 4);
-}
-
-/*
- * Adjust the other control points of a curve proportionately when moving
- * one end.  The Boolean argument indicates whether the point being
- * adjusted is the one nearer the point that was moved.
- */
-private fixed
-scale_delta(fixed diff, fixed dv, fixed lv, bool nearer)
-{
-    if (dv == 0)
-	return 0;
-    /*
-     * fixed_mult_quo requires non-negative 2nd and 3rd arguments,
-     * and also 2nd argument < 3rd argument.
-     * If it weren't for that, we would just use it directly.
-     *
-     * lv = 0 is implausible, but we have to allow for it.
-     */
-    if (lv == 0)
-	return (nearer ? diff : fixed_0);
-    if (lv < 0)
-	lv = -lv, dv = -dv;
-    if (dv < 0)
-	dv = -dv, diff = -diff;
-    /*
-     * If dv > lv, there has been some kind of anomaly similar to
-     * the lv = 0 case.
-     */
-    if (dv >= lv)
-	return (nearer ? diff : fixed_0);
-    else
-	return fixed_mult_quo(diff, dv, lv);
-}
-private void
-adjust_curve_start(curve_segment * pcseg, const gs_fixed_point * pdiff)
-{
-    fixed dx = pdiff->x, dy = pdiff->y;
-    fixed end_x = pcseg->pt.x, end_y = pcseg->pt.y;
-    const segment *prev = pcseg->prev;
-    fixed lx = end_x - (prev->pt.x - dx), ly = end_y - (prev->pt.y - dy);
-    gs_fixed_point delta;
-
-    delta.x = scale_delta(dx, end_x - pcseg->p1.x, lx, true);
-    delta.y = scale_delta(dy, end_y - pcseg->p1.y, ly, true);
-    add_hint_diff(&pcseg->p1, delta);
-    delta.x = scale_delta(dx, end_x - pcseg->p2.x, lx, false);
-    delta.y = scale_delta(dy, end_y - pcseg->p2.y, ly, false);
-    add_hint_diff(&pcseg->p2, delta);
-}
-private void
-adjust_curve_end(curve_segment * pcseg, const gs_fixed_point * pdiff)
-{
-    fixed dx = pdiff->x, dy = pdiff->y;
-    const segment *prev = pcseg->prev;
-    fixed start_x = prev->pt.x, start_y = prev->pt.y;
-    fixed lx = pcseg->pt.x - dx - start_x, ly = pcseg->pt.y - dy - start_y;
-    gs_fixed_point delta;
-
-    delta.x = scale_delta(dx, pcseg->p1.x - start_x, lx, false);
-    delta.y = scale_delta(dy, pcseg->p1.y - start_y, ly, false);
-    add_hint_diff(&pcseg->p1, delta);
-    delta.x = scale_delta(dx, pcseg->p2.x - start_x, lx, true);
-    delta.y = scale_delta(dy, pcseg->p2.y - start_y, ly, true);
-    add_hint_diff(&pcseg->p2, delta);
-}
-
-/*
- * Propagate a final wraparound hint back through any null line segments
- * to a possible curve.  pseg_last.pt has already been adjusted.
- */
-private void
-apply_final_hint(segment * pseg_last, const gs_fixed_point * pdiff)
-{
-    segment *pseg;
-
-    for (pseg = pseg_last;; pseg = pseg->prev) {
-	segment *prev = pseg->prev;
-
-	switch (pseg->type) {
-	    case s_curve:
-		adjust_curve_end(((curve_segment *) pseg), pdiff);
-		return;
-	    case s_line:
-	    case s_line_close:
-		if (!line_is_null(prev->pt, pseg->pt))
-		    return;
-		add_hint_diff(&prev->pt, *pdiff);
-		break;
-	    default:		/* s_start */
-		return;
-	}
-    }
-}
-
-/*
- * Handle the end of the subpath wrapping around to the start.  This is
- * ugly, messy code that we should be able to improve, but I neither see how
- * to do it nor understand how the IBM Type 1 rasterizer can produce such
- * good results without doing anything like this.
- *
- * This is a separate procedure only for readability: it is only called
- * from one place in the next procedure.
- */
-private void
-apply_wrapped_hints(gs_type1_state * pcis, subpath * psub, segment * pseg,
-		    int hints, gs_fixed_point * pdiff)
-{
-    /* Some fonts don't use closepath when they should.... */
-    fixed ctemp;
-    bool closed =
-	(pseg->type == s_line_close ||
-	 ((ctemp = pseg->pt.x - psub->pt.x,
-	   any_abs(ctemp) < float2fixed(0.1)) &&
-	  (ctemp = pseg->pt.y - psub->pt.y,
-	   any_abs(ctemp) < float2fixed(0.1))));
-    segment *const pfirst = psub->next;
-    int hints_first = pcis->hints_initial;
-
-    if (closed) {
-	/*
-	 * Apply the union of the hints at both the end (pseg) and the start
-	 * (psub) of the subpath.  Note that we have already applied hints
-	 * at the end, and hints_first at the start.  However, because of
-	 * hint replacement, the points might differ even if hints ==
-	 * hints_first.  In this case, the initial hints take priority,
-	 * because the initial segment was laid down first.
-	 */
-	int do_x, do_y;
-	gs_fixed_point diff2;
-
-	if_debug2('y', "[y]closing closed, hints=%d, hints_first=%d\n",
-		  hints, hints_first);
-	if (pcis->fh.axes_swapped)
-	    do_x = HINT_HORZ, do_y = HINT_VERT;
-	else
-	    do_x = HINT_VERT, do_y = HINT_HORZ;
-	{
-	    /* Apply hints_first - hints to the end. */
-	    int hints_end = hints_first & ~hints;
-
-	    diff2.x =
-		(hints_end & do_x ?
-		 psub->pt.x - pcis->unmoved_start.x : 0);
-	    diff2.y =
-		(hints_end & do_y ?
-		 psub->pt.y - pcis->unmoved_start.y : 0);
-	}
-	{
-	    /* Apply hints - hints_first to the start. */
-	    int hints_start = hints & ~hints_first;
-
-	    pdiff->x =
-		(hints_start & do_x ?
-		 pseg->pt.x - pcis->unmoved_end.x : 0);
-	    pdiff->y =
-		(hints_start & do_y ?
-		 pseg->pt.y - pcis->unmoved_end.y : 0);
-	}
-	add_hint_diff(&pseg->pt, diff2);
-	apply_final_hint(pseg, &diff2);
-	add_hint_diff(&psub->pt, *pdiff);
-	/*
-	 * Now align the initial and final points, to deal with hint
-	 * replacement.
-	 */
-	diff2.x = psub->pt.x - pseg->pt.x;
-	diff2.y = psub->pt.y - pseg->pt.y;
-	if (diff2.x || diff2.y) {
-	    /* Force the points to coincide. */
-	    pseg->pt = psub->pt;
-	    apply_final_hint(pseg, &diff2);
-	}
-    } else {
-	int hints_close =
-	line_hints(pcis, &pcis->unmoved_end, &pcis->unmoved_start);
-
-	hints_close &= ~(hints | hints_first);
-	if_debug3('y', "[y]closing open, hints=%d, hints_close=%d, hints_first=%d\n",
-		  hints, hints_close, hints_first);
-	if (hints_close) {
-	    apply_hints_at(pcis, hints_close, &pseg->pt, pdiff);
-	    apply_final_hint(pseg, pdiff);
-	    apply_hints_at(pcis, hints_close, &psub->pt, pdiff);
-	} else
-	    pdiff->x = pdiff->y = 0;
-    }
-    if (pfirst->type == s_curve)
-	adjust_curve_start((curve_segment *) pfirst, pdiff);
-}
-
-/*
- * Apply hints along a subpath.  If closing is true, consider the subpath
- * closed; if not, we may add more to the subpath later.  In the latter case,
- * don't do anything if the subpath is closed, because we already applied
- * the hints.
- */
-void
-type1_apply_path_hints(gs_type1_state * pcis, bool closing, gx_path * ppath)
-{
-    segment *pseg = pcis->hint_next;
-    segment *pnext;
-    subpath *const psub = ppath->current_subpath;
-
-    /*
-     * hints holds the set of hints that have already been applied (if
-     * applicable) to pseg->pt, and hence should not be applied again.
-     */
-    int hints = pcis->hints_pending;
-    gs_fixed_point diff;
-
-    /*
-     * Since unknown OtherSubrs call apply_path_hints before returning
-     * to the client, and since OtherSubrs may be invoked before the
-     * [h]sbw is seen, it's possible that init_done < 0, i.e., the path
-     * and hint members of the state haven't been set up yet.  In this
-     * case, we know there are no relevant hints.
-     */
-    if (pcis->init_done < 0 || !(pcis->fh.use_x_hints | pcis->fh.use_y_hints))
-	return;
-    if (pseg == 0) {
-	/* Start at the beginning of the subpath. */
-	if (psub == 0)
-	    return;
-	if (psub->is_closed && !closing)
-	    return;
-	pseg = (segment *) psub;
-	if (pseg->next == 0)
-	    return;
-	hints = 0;
-	pcis->unmoved_start = psub->pt;
-	pcis->unmoved_end = psub->pt;
-    } else
-	hints = pcis->hints_pending;
-    diff.x = diff.y = 0;
-    for (; (pnext = pseg->next) != 0; pseg = pnext) {
-	int hints_next;
-
-	/*
-	 * Apply hints to the end of the previous segment (pseg)
-	 * and the beginning of this one (pnext).
-	 */
-	gs_fixed_point dseg;
-
-	switch (pnext->type) {
-	    case s_curve:{
-		    curve_segment *const pnext_curve = (curve_segment *) pnext;
-		    int hints_first =
-		    line_hints(pcis, &pcis->unmoved_end,
-			       &pnext_curve->p1) & ~hints;
-		    gs_fixed_point diff2;
-
-		    if (pseg == (segment *) psub)
-			pcis->hints_initial = hints_first;
-		    if (hints_first)
-			apply_hints_at(pcis, hints_first, &pseg->pt, &dseg);
-		    else
-			dseg.x = dseg.y = 0;
-		    diff2.x = pseg->pt.x - pcis->unmoved_end.x;
-		    diff2.y = pseg->pt.y - pcis->unmoved_end.y;
-		    hints_next = line_hints(pcis, &pnext_curve->p2, &pnext->pt);
-		    adjust_curve_start(pnext_curve, &diff2);
-		    if (hints_next) {
-			apply_hints_at(pcis, hints_next, &pnext_curve->p2, &diff);
-			pcis->unmoved_end = pnext->pt;
-			add_hint_diff(&pnext->pt, diff);
-		    } else
-			pcis->unmoved_end = pnext->pt;
-		    break;
-		}
-	    case s_line_close:
-		/* Undo any initial hints propagated to the end. */
-		pnext->pt = pcis->unmoved_start;
-	    default:		/* s_line, s_line_close */
-		if (line_is_null(pnext->pt, pcis->unmoved_end)) {
-		    /* This is a null line, just move it. */
-		    hints_next = hints;
-		    dseg.x = dseg.y = 0;	/* don't move p2 again */
-		} else {
-		    hints_next =
-			line_hints(pcis, &pcis->unmoved_end, &pnext->pt);
-		    if (hints_next & ~hints)
-			apply_hints_at(pcis, hints_next & ~hints,
-				       &pseg->pt, &dseg);
-		    else
-			dseg.x = dseg.y = 0;
-		}
-		if (pseg == (segment *) psub)
-		    pcis->hints_initial = hints_next;
-		pcis->unmoved_end = pnext->pt;
-		if (hints_next)
-		    apply_hints_at(pcis, hints_next, &pnext->pt, NULL);
-	}
-	if (pseg->type == s_curve)
-	    adjust_curve_end((curve_segment *) pseg, &dseg);
-	hints = hints_next;
-    }
-    if (closing) {
-	apply_wrapped_hints(pcis, psub, pseg, hints, &diff);
-	pcis->hint_next = 0;
-	pcis->hints_pending = 0;
-    } else {
-	pcis->hint_next = pseg;
-	pcis->hints_pending = hints;
-    }
-}
-
-/* ------ Individual hints ------ */
-
-private const stem_hint *search_hints(P2(stem_hint_table *, fixed));
-
-/*
- * Adjust a point according to the relevant hints.
- * dx or dy is > 0 for the upper edge, < 0 for the lower.
- * The caller is responsible for checking use_hstem_hints or use_vstem_hints
- * and not calling the find_xxx_hints routine if this is false.
- * Note that if use_x/y_hints is false, no entries ever get made
- * in the stem hint tables, so these routines will not get called.
- */
-
-private void
-apply_vstem_hints(gs_type1_state * pcis, int dy, gs_fixed_point * ppt)
-{
-    fixed *pv = (pcis->fh.axes_swapped ? &ppt->y : &ppt->x);
-    const stem_hint *ph = search_hints(&pcis->vstem_hints, *pv);
-
-    if (ph != 0) {
-	if_debug3('Y', "[Y]use vstem %d: %1.4f (%s)",
-		  (int)(ph - &pcis->vstem_hints.data[0]),
-		  fixed2float(*pv),
-		  (dy == 0 ? "?!" : dy > 0 ? "upper" : "lower"));
-#ifdef DEBUG
-	if (dy == 0) {
-	    lprintf("dy == 0 in apply_vstem_hints!\n");
-	    return;
-	}
-#endif
-	*pv += (dy > 0 ? ph->dv1 : ph->dv0);
-	if_debug1('Y', " -> %1.4f\n", fixed2float(*pv));
-    }
-}
-
-private void
-apply_hstem_hints(gs_type1_state * pcis, int dx, gs_fixed_point * ppt)
-{
-    fixed *pv = (pcis->fh.axes_swapped ? &ppt->x : &ppt->y);
-    const stem_hint *ph = search_hints(&pcis->hstem_hints, *pv);
-
-    if (ph != 0) {
-	if_debug3('Y', "[Y]use hstem %d: %1.4f (%s)",
-		  (int)(ph - &pcis->hstem_hints.data[0]),
-		  fixed2float(*pv),
-		  (dx == 0 ? "?!" : dx > 0 ? "upper" : "lower"));
-#ifdef DEBUG
-	if (dx == 0) {
-	    lprintf("dx == 0 in apply_vstem_hints!\n");
-	    return;
-	}
-#endif
-	*pv += (dx > 0 ? ph->dv1 : ph->dv0);
-	if_debug1('Y', " -> %1.4f\n", fixed2float(*pv));
-    }
-}
-
-/* Search one hint table for an adjustment. */
-private const stem_hint *
-search_hints(stem_hint_table * psht, fixed v)
-{
-    const stem_hint *table = &psht->data[0];
-    const stem_hint *ph = table + psht->current;
-
-    if (v >= ph->v0 && v <= ph->v1 && ph->active)
-	return ph;
-    /* We don't bother with binary or even up/down search, */
-    /* because there won't be very many hints. */
-    for (ph = &table[psht->count]; --ph >= table;)
-	if (v >= ph->v0 && v <= ph->v1 && ph->active) {
-	    psht->current = ph - table;
-	    return ph;
-	}
-    return 0;
-}

+ 0 - 75
sys/src/cmd/gs/src/gxop1.h

@@ -1,75 +0,0 @@
-/* Copyright (C) 1991, 1992, 1998 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: gxop1.h,v 1.2 2000/09/19 19:00:39 lpd Exp $ */
-/* Type 1 state shared between interpreter and compiled fonts. */
-
-#ifndef gxop1_INCLUDED
-#  define gxop1_INCLUDED
-
-/*
- * The current point (px,py) in the Type 1 interpreter state is not
- * necessarily the same as the current position in the path being built up.
- * Specifically, (px,py) may not reflect adjustments for hinting,
- * whereas the current path position does reflect those adjustments.
- */
-
-/* Define the shared Type 1 interpreter state. */
-#define max_coeff_bits 11	/* max coefficient in char space */
-typedef struct gs_op1_state_s {
-    struct gx_path_s *ppath;
-    struct gs_type1_state_s *pcis;
-    fixed_coeff fc;
-    gs_fixed_point co;		/* character origin (device space) */
-    gs_fixed_point p;		/* current point (device space) */
-} gs_op1_state;
-typedef gs_op1_state *is_ptr;
-
-/* Define the state used by operator procedures. */
-/* These macros refer to a current instance (s) of gs_op1_state. */
-#define sppath s.ppath
-#define sfc s.fc
-#define spt s.p
-#define ptx s.p.x
-#define pty s.p.y
-
-/* Accumulate relative coordinates */
-/****** THESE ARE NOT ACCURATE FOR NON-INTEGER DELTAS. ******/
-/* This probably doesn't make any difference in practice. */
-#define c_fixed(d, c) m_fixed(d, c, sfc, max_coeff_bits)
-#define accum_x(dx)\
-  BEGIN\
-    ptx += c_fixed(dx, xx);\
-    if ( sfc.skewed ) pty += c_fixed(dx, xy);\
-  END
-#define accum_y(dy)\
-  BEGIN\
-    pty += c_fixed(dy, yy);\
-    if ( sfc.skewed ) ptx += c_fixed(dy, yx);\
-  END
-void accum_xy_proc(P3(is_ptr ps, fixed dx, fixed dy));
-
-#define accum_xy(dx,dy)\
-  accum_xy_proc(&s, dx, dy)
-
-/* Define operator procedures. */
-int gs_op1_closepath(P1(is_ptr ps));
-int gs_op1_rrcurveto(P7(is_ptr ps, fixed dx1, fixed dy1,
-			fixed dx2, fixed dy2, fixed dx3, fixed dy3));
-
-#endif /* gxop1_INCLUDED */

+ 0 - 33
sys/src/cmd/gs/src/macsysstat.h

@@ -1,33 +0,0 @@
-/* Copyright (C) 1994, 1995 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of Aladdin Ghostscript.
-  
-  Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author
-  or distributor accepts any responsibility for the consequences of using it,
-  or for whether it serves any particular purpose or works at all, unless he
-  or she says so in writing.  Refer to the Aladdin Ghostscript Free Public
-  License (the "License") for full details.
-  
-  Every copy of Aladdin Ghostscript must include a copy of the License,
-  normally in a plain ASCII text file named PUBLIC.  The License grants you
-  the right to copy, modify and redistribute Aladdin Ghostscript, but only
-  under certain conditions described in the License.  Among other things, the
-  License requires that the copyright notice and this notice be preserved on
-  all copies.
-*/
-
-#ifndef __sys_stat_h__
-#define __sys_stat_h__
-
-#include "unix.mac.h"
-
-//struct stat {
-//	unsigned long	st_blocks;		// number of blocks allocated
-//	unsigned long	st_size;		// total size in bytes
-//	unsigned long	st_mtime;		// mod time
-//	unsigned long	st_ctime;		// create time
-//};
-
-//int stat(const char * file_name, struct stat *buf);
-
-#endif /* __sys_stat_h__ */

BIN
sys/src/cmd/gs/src/obj


+ 0 - 161
sys/src/cmd/gs/src/slzwce.c

@@ -1,161 +0,0 @@
-/* Copyright (C) 1994, 1995, 1996, 1998, 1999 Aladdin Enterprises.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: slzwce.c,v 1.2 2000/09/19 19:00:50 lpd Exp $ */
-/* Simple encoder compatible with LZW decoding filter */
-#include "stdio_.h"		/* includes std.h */
-#include "gdebug.h"
-#include "strimpl.h"
-#include "slzwx.h"
-
-/* ------ Alternate LZWEncode filter implementation ------ */
-
-/*
-
-   The encoded data stream produced by this implementation of the LZWEncode
-   filter consists of a sequence of 9-bit data elements.  These elements are
-   packed into bytes in big-endian order, e.g. the elements
-
-   100000000 001100001
-
-   occurring at the very beginning of the data stream would be packed into
-   bytes as
-
-   10000000 00011000 01......
-
-   The first bit of each data element is a control bit.  If the control bit is
-   0, the remaining 8 bits of the data element are a data byte.  If the control
-   bit is 1, the remaining 8 bits of the data element define a control
-   function:
-
-   1 00000000   synchronization mark, see below
-   1 00000001   end of data
-   1 xxxxxxxx   not used (all other values)
-
-   The synchronization mark occurs at the beginning of the data stream, and at
-   least once every 254 data bytes thereafter.
-
-   This format is derived from basic principles of data encoding (the use of a
-   separate flag bit to distinguish out-of-band control information from data
-   per se, and the use of a periodic synchronization mark to help verify the
-   validity of a data stream); it has no relationship to data compression.  It
-   is, however, compatible with LZW decompressors.  It produces output that is
-   approximately 9/8 times the size of the input.
-
- */
-
-/* Define the special codes, relative to 1 << InitialCodeLength. */
-#define CODE_RESET 0
-#define CODE_EOD 1
-#define CODE_0 2		/* first assignable code */
-
-/* Internal routine to put a code into the output buffer. */
-/* Let S = ss->code_size. */
-/* Relevant invariants: 9 <= S <= 15, 0 <= code < 1 << S; */
-/* 1 <= ss->bits_left <= 8; only the rightmost (8 - ss->bits_left) */
-/* bits of ss->bits contain valid data. */
-private byte *
-lzw_put_code(register stream_LZW_state * ss, byte * q, uint code)
-{
-    uint size = ss->code_size;
-    byte cb = (ss->bits << ss->bits_left) +
-	(code >> (size - ss->bits_left));
-
-    if_debug2('W', "[w]writing 0x%x,%d\n", code, ss->code_size);
-    *++q = cb;
-    if ((ss->bits_left += 8 - size) <= 0) {
-	*++q = code >> -ss->bits_left;
-	ss->bits_left += 8;
-    }
-    ss->bits = code;
-    return q;
-}
-
-/* Initialize LZW-compatible encoding filter. */
-private int
-s_LZWE_reset(stream_state * st)
-{
-    stream_LZW_state *const ss = (stream_LZW_state *) st;
-
-    ss->code_size = ss->InitialCodeLength + 1;
-    ss->bits_left = 8;
-    /* Force the first code emitted to be a reset. */
-    ss->next_code = (1 << ss->code_size) - 2;
-    return 0;
-}
-private int
-s_LZWE_init(stream_state * st)
-{
-    stream_LZW_state *const ss = (stream_LZW_state *) st;
-
-    ss->InitialCodeLength = 8;
-    ss->table.encode = 0;
-    return s_LZWE_reset(st);
-}
-
-/* Process a buffer */
-private int
-s_LZWE_process(stream_state * st, stream_cursor_read * pr,
-	       stream_cursor_write * pw, bool last)
-{
-    stream_LZW_state *const ss = (stream_LZW_state *) st;
-    register const byte *p = pr->ptr;
-    const byte *rlimit = pr->limit;
-    register byte *q = pw->ptr;
-    byte *wlimit = pw->limit;
-    int status = 0;
-    int signal = 1 << (ss->code_size - 1);
-    uint limit_code = (1 << ss->code_size) - 2;		/* reset 1 early */
-    uint next_code = ss->next_code;
-
-    while (p < rlimit) {
-	if (next_code == limit_code) {	/* Emit a reset code. */
-	    if (wlimit - q < 2) {
-		status = 1;
-		break;
-	    }
-	    q = lzw_put_code(ss, q, signal + CODE_RESET);
-	    next_code = signal + CODE_0;
-	}
-	if (wlimit - q < 2) {
-	    status = 1;
-	    break;
-	}
-	q = lzw_put_code(ss, q, *++p);
-	next_code++;
-    }
-    if (last && status == 0) {
-	if (wlimit - q < 2)
-	    status = 1;
-	else {
-	    q = lzw_put_code(ss, q, signal + CODE_EOD);
-	    if (ss->bits_left < 8)
-		*++q = ss->bits << ss->bits_left;	/* final byte */
-	}
-    }
-    ss->next_code = next_code;
-    pr->ptr = p;
-    pw->ptr = q;
-    return status;
-}
-
-/* Stream template */
-const stream_template s_LZWE_template = {
-    &st_LZW_state, s_LZWE_init, s_LZWE_process, 1, 2, NULL,
-    s_LZW_set_defaults, s_LZWE_reset
-};

+ 1 - 1
sys/src/cmd/gs/src/ttobjs.h

@@ -589,7 +589,7 @@ typedef struct _TExecution_Context TExecution_Context;
     PLong            cvt;
 
     Int              storeSize; /* The storage area is now part of the */
-    PLong            storage;   /* instance                            */
+    PStorage            storage;   /* instance                            */
 
   };
 

+ 7 - 1
sys/src/cmd/gs/src/tttypes.h

@@ -117,7 +117,13 @@
 #define NULL  (void*)0
 #endif
 
-#if   ARCH_SIZEOF_PTR == SIZEOF_LONG
+#ifdef Plan9
+#ifdef Tamd64
+  typedef unsigned long long* PStorage;
+#else
+  typedef unsigned int* PStorage;
+#endif
+#elif   ARCH_SIZEOF_PTR == SIZEOF_LONG
   typedef long*  PStorage;
 #elif ARCH_SIZEOF_PTR == SIZEOF_INT
   typedef int*   PStorage;

+ 0 - 395
sys/src/cmd/gs/src/unixtrad.mak

@@ -1,395 +0,0 @@
-#    Copyright (C) 1997, 2000 Aladdin Enterprises.  All rights reserved.
-# 
-# This file is part of AFPL Ghostscript.
-# 
-# AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-# distributor accepts any responsibility for the consequences of using it, or
-# for whether it serves any particular purpose or works at all, unless he or
-# she says so in writing.  Refer to the Aladdin Free Public License (the
-# "License") for full details.
-# 
-# Every copy of AFPL Ghostscript must include a copy of the License, normally
-# in a plain ASCII text file named PUBLIC.  The License grants you the right
-# to copy, modify and redistribute AFPL Ghostscript, but only under certain
-# conditions described in the License.  Among other things, the License
-# requires that the copyright notice and this notice be preserved on all
-# copies.
-
-# $Id: unixtrad.mak,v 1.16.2.1 2002/02/01 03:25:46 raph Exp $
-# makefile for Unix/"Traditional" C/X11 configuration.
-
-# ------------------------------- Options ------------------------------- #
-
-####### The following are the only parts of the file you should need to edit.
-
-# Define the directory for the final executable, and the
-# source, generated intermediate file, and object directories
-# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
-
-BINDIR=./bin
-GLSRCDIR=./src
-GLGENDIR=./obj
-GLOBJDIR=./obj
-PSSRCDIR=./src
-PSLIBDIR=./lib
-PSGENDIR=./obj
-PSOBJDIR=./obj
-
-# Do not edit the next group of lines.
-
-#include $(COMMONDIR)/ccdefs.mak
-#include $(COMMONDIR)/unixdefs.mak
-#include $(COMMONDIR)/generic.mak
-include $(GLSRCDIR)/version.mak
-DD=$(GLGENDIR)/
-GLD=$(GLGENDIR)/
-PSD=$(PSGENDIR)/
-
-# ------ Generic options ------ #
-
-# Define the installation commands and target directories for
-# executables and files.  The commands are only relevant to `make install';
-# the directories also define the default search path for the
-# initialization files (gs_*.ps) and the fonts.
-
-INSTALL = $(GLSRCDIR)/instcopy -c
-INSTALL_PROGRAM = $(INSTALL) -m 755
-INSTALL_DATA = $(INSTALL) -m 644
-
-prefix = /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-scriptdir = $(bindir)
-mandir = $(prefix)/man
-man1ext = 1
-datadir = $(prefix)/share
-gsdir = $(datadir)/ghostscript
-gsdatadir = $(gsdir)/$(GS_DOT_VERSION)
-
-docdir=$(gsdatadir)/doc
-exdir=$(gsdatadir)/examples
-GS_DOCDIR=$(docdir)
-
-# Define the default directory/ies for the runtime initialization and
-# font files.  Separate multiple directories with a :.
-
-GS_LIB_DEFAULT=$(gsdatadir)/lib:$(gsdir)/fonts
-
-# Define whether or not searching for initialization files should always
-# look in the current directory first.  This leads to well-known security
-# and confusion problems, but users insist on it.
-# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of Use.htm for full details.
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
-
-SEARCH_HERE_FIRST=1
-
-# Define the name of the interpreter initialization file.
-# (There is no reason to change this.)
-
-GS_INIT=gs_init.ps
-
-# Choose generic configuration options.
-
-# -DDEBUG
-#	includes debugging features (-Z switch) in the code.
-#	  Code runs substantially slower even if no debugging switches
-#	  are set.
-# -DNOPRIVATE
-#	makes private (static) procedures and variables public,
-#	  so they are visible to the debugger and profiler.
-#	  No execution time or space penalty.
-
-GENOPT=
-
-# Define the name of the executable file.
-
-GS=gs
-
-# Define the name of a pre-built executable that can be invoked at build
-# time.  Currently, this is only needed for compiled fonts.  The usual
-# alternatives are:
-#   - the standard name of Ghostscript on your system (typically `gs'):
-BUILD_TIME_GS=gs
-#   - the name of the executable you are building now.  If you choose this
-# option, then you must build the executable first without compiled fonts,
-# and then again with compiled fonts.
-#BUILD_TIME_GS=$(BINDIR)/$(GS) -I$(PSLIBDIR)
-
-# Define the directories for debugging and profiling binaries, relative to
-# the standard binaries.
-
-DEBUGRELDIR=../debugobj
-PGRELDIR=../pgobj
-
-# Define the directory where the IJG JPEG library sources are stored,
-# and the major version of the library that is stored there.
-# You may need to change this if the IJG library version changes.
-# See jpeg.mak for more information.
-
-JSRCDIR=jpeg
-JVERSION=6
-
-# Choose whether to use a shared version of the IJG JPEG library (-ljpeg).
-# DON'T DO THIS. If you do, the resulting executable will not be able to
-# read some PostScript files containing JPEG data, because Adobe chose to
-# define PostScript's JPEG capabilities in a way that is slightly
-# incompatible with the JPEG standard.  Note also that if you set SHARE_JPEG
-# to 1, you must still have the library header files available to compile
-# Ghostscript.  See doc/Make.htm for more information.
-
-# DON'T SET THIS TO 1!  See the comment just above.
-SHARE_JPEG=0
-JPEG_NAME=jpeg
-
-# Define the directory where the PNG library sources are stored,
-# and the version of the library that is stored there.
-# You may need to change this if the libpng version changes.
-# See libpng.mak for more information.
-
-PSRCDIR=libpng
-PVERSION=10201
-
-# Choose whether to use a shared version of the PNG library, and if so,
-# what its name is.
-# See gs.mak and Make.htm for more information.
-
-SHARE_LIBPNG=0
-LIBPNG_NAME=png
-
-# Define the directory where the zlib sources are stored.
-# See zlib.mak for more information.
-
-ZSRCDIR=zlib
-
-# Choose whether to use a shared version of the zlib library, and if so,
-# what its name is (usually libz, but sometimes libgz).
-# See gs.mak and Make.htm for more information.
-
-SHARE_ZLIB=0
-#ZLIB_NAME=gz
-ZLIB_NAME=z
-
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
-
-ICCSRCDIR=icclib
-
-# Define how to build the library archives.  (These are not used in any
-# standard configuration.)
-
-AR=ar
-ARFLAGS=qc
-RANLIB=ranlib
-
-# ------ Platform-specific options ------ #
-
-# Define the name of the linker for the final link step.
-# Normally this is the same as the C compiler.
-
-CCLD=$(CC)
-
-# Define the added flags for standard, debugging, and profiling builds.
-
-CFLAGS_STANDARD=-O
-CFLAGS_DEBUG=-g
-CFLAGS_PROFILE=-pg -O
-
-# Define the other compilation flags.  Add at most one of the following:
-#	-DBSD4_2 for 4.2bsd systems.
-#	-DSYSV for System V or DG/UX.
-# 	-DSYSV -D__SVR3 for SCO ODT, ISC Unix 2.2 or before,
-#	   or any System III Unix, or System V release 3-or-older Unix.
-#	   Also add -Xa if your compiler accepts it.
-#	-DSVR4 -DSVR4_0 (not -DSYSV) for System V release 4.0.
-#	-DSVR4 (not -DSYSV) for System V release 4.2 (or later) and Solaris 2.
-# XCFLAGS can be set from the command line.
-XCFLAGS=
-
-CFLAGS=$(CFLAGS_STANDARD) $(XCFLAGS)
-
-# Define platform flags for ld.
-# SunOS and some others want -X; Ultrix wants -x.
-# SunOS 4.n may need -Bstatic.
-# Solaris 2.6 (and possibly some other versions) with any of the SHARE_
-# parameters set to 1 may need
-#	-R /usr/local/xxx/lib:/usr/local/lib
-# giving the full path names of the shared library directories.
-# XLDFLAGS can be set from the command line.
-XLDFLAGS=
-
-LDFLAGS=$(XLDFLAGS)
-
-# Define any extra libraries to link into the executable.
-# ISC Unix 2.2 wants -linet.
-# SCO Unix needs -lsocket if you aren't including the X11 driver.
-# SVR4 may need -lnsl.
-# Solaris may need -lnsl -lsocket -lposix4.
-# (Libraries required by individual drivers are handled automatically.)
-
-EXTRALIBS=
-
-# Define the standard libraries to search at the end of linking.
-# Most platforms require -lpthread for the POSIX threads library;
-# on FreeBSD, change -lpthread to -lc_r; BSDI and perhaps some others
-# include pthreads in libc and don't require any additional library.
-# All reasonable platforms require -lm, but Rhapsody and perhaps one or
-# two others fold libm into libc and don't require any additional library.
-
-#STDLIBS=-lpthread -lm
-
-# Since the default build is for nosync, don't include pthread lib
-STDLIBS=-lm
-
-# Define the include switch(es) for the X11 header files.
-# This can be null if handled in some other way (e.g., the files are
-# in /usr/include, or the directory is supplied by an environment variable);
-# in particular, SCO Xenix, Unix, and ODT just want
-#XINCLUDE=
-# Note that x_.h expects to find the header files in $(XINCLUDE)/X11,
-# not in $(XINCLUDE).
-
-XINCLUDE=-I/usr/X11R6/include
-
-# Define the directory/ies and library names for the X11 library files.
-# XLIBDIRS is for ld and should include -L; XLIBDIR is for LD_RUN_PATH
-# (dynamic libraries on SVR4) and should not include -L.
-# Newer SVR4 systems can use -R in XLIBDIRS rather than setting XLIBDIR.
-# Both can be null if these files are in the default linker search path;
-# in particular, SCO Xenix, Unix, and ODT just want
-#XLIBDIRS=
-# Solaris and other SVR4 systems with dynamic linking probably want
-#XLIBDIRS=-L/usr/openwin/lib -R/usr/openwin/lib
-# X11R6 (on any platform) may need
-#XLIBS=Xt SM ICE Xext X11
-
-XLIBDIRS=-L/usr/X11R6/lib
-XLIBDIR=
-XLIBS=Xt Xext X11
-
-# Define whether this platform has floating point hardware:
-#	FPU_TYPE=2 means floating point is faster than fixed point.
-# (This is the case on some RISCs with multiple instruction dispatch.)
-#	FPU_TYPE=1 means floating point is at worst only slightly slower
-# than fixed point.
-#	FPU_TYPE=0 means that floating point may be considerably slower.
-#	FPU_TYPE=-1 means that floating point is always much slower than
-# fixed point.
-
-FPU_TYPE=1
-
-# Define the .dev module that implements thread and synchronization
-# primitives for this platform.  Don't change this unless you really know
-# what you're doing.
-
-# If POSIX sync primitives are used, also change the STDLIBS to include
-# the pthread library.
-#SYNC=posync
-
-# Default is No sync primitives since some platforms don't have it (HP-UX)
-SYNC=nosync
-
-# ------ Devices and features ------ #
-
-# Choose the language feature(s) to include.  See gs.mak for details.
-
-FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(GLD)pipe.dev
-
-# Choose whether to compile the .ps initialization files into the executable.
-# See gs.mak for details.
-
-COMPILE_INITS=0
-
-# Choose whether to store band lists on files or in memory.
-# The choices are 'file' or 'memory'.
-
-BAND_LIST_STORAGE=file
-
-# Choose which compression method to use when storing band lists in memory.
-# The choices are 'lzw' or 'zlib'.  lzw is not recommended, because the
-# LZW-compatible code in Ghostscript doesn't actually compress its input.
-
-BAND_LIST_COMPRESSOR=zlib
-
-# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
-# See gs.mak and sfxfd.c for more details.
-
-FILE_IMPLEMENTATION=stdio
-
-# Choose the implementation of stdio: '' for file I/O and 'c' for callouts
-# See gs.mak and ziodevs.c/ziodevsc.c for more details.
-
-STDIO_IMPLEMENTATION=c
-
-# Choose the device(s) to include.  See devs.mak for details,
-# devs.mak and contrib.mak for the list of available devices.
-
-DEVICE_DEVS=$(DD)x11.dev $(DD)x11alpha.dev $(DD)x11cmyk.dev $(DD)x11mono.dev
-DEVICE_DEVS1=
-DEVICE_DEVS2=
-DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev $(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev
-# Sun's cc can't compile gdevcdj.c.
-#DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev $(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev
-DEVICE_DEVS4=
-DEVICE_DEVS5=$(DD)uniprint.dev
-DEVICE_DEVS6=$(DD)bj10e.dev $(DD)bj200.dev $(DD)bjc600.dev $(DD)bjc800.dev
-DEVICE_DEVS6=
-DEVICE_DEVS7=$(DD)faxg3.dev $(DD)faxg32d.dev $(DD)faxg4.dev
-DEVICE_DEVS8=$(DD)jpeg.dev $(DD)jpeggray.dev $(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev
-DEVICE_DEVS9=$(DD)pbm.dev $(DD)pbmraw.dev $(DD)pgm.dev $(DD)pgmraw.dev $(DD)pgnm.dev $(DD)pgnmraw.dev $(DD)pnm.dev $(DD)pnmraw.dev $(DD)ppm.dev $(DD)ppmraw.dev
-DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev
-DEVICE_DEVS11=$(DD)tiff12nc.dev $(DD)tiff24nc.dev
-DEVICE_DEVS12=$(DD)psmono.dev $(DD)psgray.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev
-DEVICE_DEVS13=$(DD)pngmono.dev $(DD)pnggray.dev $(DD)png16.dev $(DD)png256.dev $(DD)png16m.dev
-DEVICE_DEVS14=
-DEVICE_DEVS15=$(DD)pdfwrite.dev $(DD)pswrite.dev $(DD)epswrite.dev $(DD)pxlmono.dev $(DD)pxlcolor.dev
-DEVICE_DEVS16=
-DEVICE_DEVS17=
-DEVICE_DEVS18=
-DEVICE_DEVS19=
-DEVICE_DEVS20=
-
-# ---------------------------- End of options --------------------------- #
-
-# Define the name of the partial makefile that specifies options --
-# used in dependencies.
-
-MAKEFILE=$(GLSRCDIR)/unixtrad.mak
-TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)/unixhead.mak
-
-# Define the ANSI-to-K&R dependency.
-
-# This should be ansi2knr$(XEAUX), or $(ANSI2KNR_XE), but these macros
-# haven't been defined yet, and some buggy 'make' programs expand macros in
-# definitions at the time of definition rather than at the time of use.
-AK=$(GLGENDIR)/ansi2knr
-
-# Define the compilation rules and flags.
-
-CCFLAGS=$(GENOPT) $(CFLAGS)
-CC_=$(GLSRCDIR)/ccgs $(AK) "$(CC) $(CCFLAGS)"
-# We compile ansi2knr, and only ansi2knr, unmodified.
-CCA2K=$(CC)
-CCAUX=$(GLSRCDIR)/ccgs $(AK) "$(CC)"
-CC_LEAF=$(CC_)
-CC_LEAF_PG=$(CC_)
-CC_NO_WARN=$(CC_)
-
-# ---------------- End of platform-specific section ---------------- #
-
-include $(GLSRCDIR)/unixhead.mak
-include $(GLSRCDIR)/gs.mak
-include $(GLSRCDIR)/lib.mak
-include $(PSSRCDIR)/int.mak
-include $(PSSRCDIR)/cfonts.mak
-include $(GLSRCDIR)/jpeg.mak
-# zlib.mak must precede libpng.mak
-include $(GLSRCDIR)/zlib.mak
-include $(GLSRCDIR)/libpng.mak
-include $(GLSRCDIR)/icclib.mak
-include $(GLSRCDIR)/devs.mak
-include $(GLSRCDIR)/contrib.mak
-include $(GLSRCDIR)/unix-aux.mak
-include $(GLSRCDIR)/unixlink.mak
-include $(GLSRCDIR)/unix-end.mak
-include $(GLSRCDIR)/unixinst.mak

+ 0 - 331
sys/src/cmd/gs/src/watc.mak

@@ -1,331 +0,0 @@
-#    Copyright (C) 1991, 1995, 1996, 1997, 1998, 1999, 2000 Aladdin Enterprises.  All rights reserved.
-# 
-# This file is part of AFPL Ghostscript.
-# 
-# AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-# distributor accepts any responsibility for the consequences of using it, or
-# for whether it serves any particular purpose or works at all, unless he or
-# she says so in writing.  Refer to the Aladdin Free Public License (the
-# "License") for full details.
-# 
-# Every copy of AFPL Ghostscript must include a copy of the License, normally
-# in a plain ASCII text file named PUBLIC.  The License grants you the right
-# to copy, modify and redistribute AFPL Ghostscript, but only under certain
-# conditions described in the License.  Among other things, the License
-# requires that the copyright notice and this notice be preserved on all
-# copies.
-
-# $Id: watc.mak,v 1.16.2.1 2002/02/01 03:25:46 raph Exp $
-# makefile for MS-DOS/Watcom C386 platform.
-# We strongly recommend that you read the Watcom section of Make.htm
-# before attempting to build Ghostscript with the Watcom compiler.
-
-# ------------------------------- Options ------------------------------- #
-
-###### This section is the only part of the file you should need to edit.
-
-# ------ Generic options ------ #
-
-# Define the directory for the final executable, and the
-# source, generated intermediate file, and object directories
-# for the graphics library (GL) and the PostScript/PDF interpreter (PS).
-
-BINDIR=bin
-GLSRCDIR=src
-GLGENDIR=obj
-GLOBJDIR=obj
-PSSRCDIR=src
-PSLIBDIR=lib
-PSGENDIR=obj
-PSOBJDIR=obj
-
-# Define the root directory for Ghostscript installation.
-
-AROOTDIR=c:/gs
-GSROOTDIR=$(AROOTDIR)/gs$(GS_DOT_VERSION)
-
-# Define the directory that will hold documentation at runtime.
-
-GS_DOCDIR=$(GSROOTDIR)/doc
-
-# Define the default directory/ies for the runtime
-# initialization and font files.  Separate multiple directories with \;.
-# Use / to indicate directories, not a single \.
-
-GS_LIB_DEFAULT=$(GSROOTDIR)/lib\;$(AROOTDIR)/fonts
-
-# Define whether or not searching for initialization files should always
-# look in the current directory first.  This leads to well-known security
-# and confusion problems, but users insist on it.
-# NOTE: this also affects searching for files named on the command line:
-# see the "File searching" section of Use.htm for full details.
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
-
-SEARCH_HERE_FIRST=1
-
-# Define the name of the interpreter initialization file.
-# (There is no reason to change this.)
-
-GS_INIT=gs_init.ps
-
-# Choose generic configuration options.
-
-# Setting DEBUG=1 includes debugging features (-Z switch) in the code.
-# Code runs substantially slower even if no debugging switches are set,
-# and also takes about another 25K of memory.
-
-DEBUG=0
-
-# Setting TDEBUG=1 includes symbol table information for the Watcom debugger.
-# (This option is NOT needed for using the Watcom profiler.)
-# Code runs substantially slower, because some optimizations are disabled.
-
-TDEBUG=0
-
-# Setting NOPRIVATE=1 makes private (static) procedures and variables public,
-# so they are visible to the debugger and profiler.
-# No execution time or space penalty, just larger .OBJ and .EXE files.
-
-NOPRIVATE=0
-
-# Define the name of the executable file.
-
-GS=gs386
-
-# Define the name of a pre-built executable that can be invoked at build
-# time.  Currently, this is only needed for compiled fonts.  The usual
-# alternatives are:
-#   - the standard name of Ghostscript on your system (typically `gs'):
-BUILD_TIME_GS=gs386
-#   - the name of the executable you are building now.  If you choose this
-# option, then you must build the executable first without compiled fonts,
-# and then again with compiled fonts.
-#BUILD_TIME_GS=$(BINDIR)\$(GS) -I$(PSLIBDIR)
-
-# Do not edit the next group of lines.
-NUL=
-DD=$(GLGENDIR)\$(NUL)
-GLD=$(GLGENDIR)\$(NUL)
-PSD=$(PSGENDIR)\$(NUL)
-
-# Define the directory where the IJG JPEG library sources are stored,
-# and the major version of the library that is stored there.
-# You may need to change this if the IJG library version changes.
-# See jpeg.mak for more information.
-
-JSRCDIR=jpeg
-JVERSION=6
-
-# Define the directory where the PNG library sources are stored,
-# and the version of the library that is stored there.
-# You may need to change this if the libpng version changes.
-# See libpng.mak for more information.
-
-PSRCDIR=libpng
-PVERSION=10201
-
-# Define the directory where the zlib sources are stored.
-# See zlib.mak for more information.
-
-ZSRCDIR=zlib
-
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
-
-ICCSRCDIR=icclib
-
-# Define any other compilation flags.  Including -DA4 makes A4 paper size
-# the default for most, but not, printer drivers.
-
-CFLAGS=
-
-# ------ Platform-specific options ------ #
-
-# Define which version of Watcom C we are using.
-# Possible values are 8.5, 9.0, 9.5, 10.0, 10.5, or 11.0.
-# Unfortunately, wmake can only test identity, not compare magnitudes,
-# so the version must be exactly one of those strings.
-#
-# 10.695 equates to version 10.6 on 95 or NT
-WCVERSION=10.0
-
-# Define the locations of the libraries.
-LIBPATHS=LIBPATH $(%WATCOM)\lib386 LIBPATH $(%WATCOM)\lib386\dos
-
-# Choose platform-specific options.
-
-# Define the processor (CPU) type.  Options are 386,
-# 485 (486SX or Cyrix 486SLC), 486 (486DX), or 586 (Pentium).
-# Currently the only difference is that 486 and above assume
-# the presence of a FPU, and the other processor types do not.
-
-CPU_TYPE=386
-
-# Define the math coprocessor (FPU) type.
-# Options are -1 (optimize for no FPU), 0 (optimize for FPU present,
-# but do not require a FPU), 87, 287, or 387.
-# If CPU_TYPE is 486 or above, FPU_TYPE is implicitly set to 387,
-# since 486DX and later processors include the equivalent of an 80387 on-chip.
-# An xx87 option means that the executable will run only if a FPU
-# of that type (or higher) is available: this is NOT currently checked
-# at runtime.
-
-FPU_TYPE=0
-
-# Define the .dev module that implements thread and synchronization
-# primitives for this platform.  Don't change this unless you really know
-# what you're doing.
-
-SYNC=winsync
-
-# ---------------------------- End of options ---------------------------- #
-
-# Define the platform name.
-
-PLATFORM=watc_
-
-# Define the name of the makefile -- used in dependencies.
-
-MAKEFILE=$(GLSRCDIR)\watc.mak
-TOP_MAKEFILES=$(MAKEFILE) $(GLSRCDIR)\wccommon.mak
-
-# Define additional platform compilation flags.
-
-PLATOPT=
-
-!include $(GLSRCDIR)\wccommon.mak
-
-# ------ Devices and features ------ #
-
-# Choose the language feature(s) to include.  See gs.mak for details.
-# Since we have a large address space, we include some optional features.
-
-FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev
-
-# Choose whether to compile the .ps initialization files into the executable.
-# See gs.mak for details.
-
-COMPILE_INITS=0
-
-# Choose whether to store band lists on files or in memory.
-# The choices are 'file' or 'memory'.
-
-BAND_LIST_STORAGE=file
-
-# Choose which compression method to use when storing band lists in memory.
-# The choices are 'lzw' or 'zlib'.  lzw is not recommended, because the
-# LZW-compatible code in Ghostscript doesn't actually compress its input.
-
-BAND_LIST_COMPRESSOR=zlib
-
-# Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
-# See gs.mak and sfxfd.c for more details.
-
-FILE_IMPLEMENTATION=stdio
-
-# Choose the implementation of stdio: '' for file I/O and 'c' for callouts
-# See gs.mak and ziodevs.c/ziodevsc.c for more details.
-
-STDIO_IMPLEMENTATION=c
-
-# Choose the device(s) to include.  See devs.mak for details,
-# devs.mak and contrib.mak for the list of available devices.
-
-# ****** NOTE: the PC frame buffer devices won't compile with the binnt
-# ****** compiler.  If you know what needs to be changed, let us know!
-# ****** Probably it's just a compiler command line switch.
-#DEVICE_DEVS=$(DD)vga.dev $(DD)ega.dev $(DD)svga16.dev
-DEVICE_DEVS=
-#DEVICE_DEVS1=$(DD)atiw.dev $(DD)tseng.dev $(DD)tvga.dev
-DEVICE_DEVS1=
-DEVICE_DEVS2=
-DEVICE_DEVS3=$(DD)deskjet.dev $(DD)djet500.dev $(DD)laserjet.dev $(DD)ljetplus.dev $(DD)ljet2p.dev
-DEVICE_DEVS4=$(DD)cdeskjet.dev $(DD)cdjcolor.dev $(DD)cdjmono.dev $(DD)cdj550.dev
-DEVICE_DEVS5=$(DD)uniprint.dev
-DEVICE_DEVS6=$(DD)epson.dev $(DD)eps9high.dev $(DD)ibmpro.dev $(DD)bj10e.dev $(DD)bj200.dev $(DD)bjc600.dev $(DD)bjc800.dev
-DEVICE_DEVS7=
-DEVICE_DEVS8=$(DD)pcxmono.dev $(DD)pcxgray.dev $(DD)pcx16.dev $(DD)pcx256.dev $(DD)pcx24b.dev $(DD)pcxcmyk.dev
-DEVICE_DEVS9=
-DEVICE_DEVS10=$(DD)tiffcrle.dev $(DD)tiffg3.dev $(DD)tiffg32d.dev $(DD)tiffg4.dev $(DD)tifflzw.dev $(DD)tiffpack.dev
-DEVICE_DEVS11=$(DD)bmpmono.dev $(DD)bmpgray.dev $(DD)bmp16.dev $(DD)bmp256.dev $(DD)bmp16m.dev $(DD)tiff12nc.dev $(DD)tiff24nc.dev
-DEVICE_DEVS12=$(DD)psmono.dev $(DD)psgray.dev $(DD)bit.dev $(DD)bitrgb.dev $(DD)bitcmyk.dev
-DEVICE_DEVS13=
-DEVICE_DEVS14=$(DD)jpeg.dev $(DD)jpeggray.dev
-DEVICE_DEVS15=$(DD)pdfwrite.dev
-# Overflow for DEVS3,4,5,6,9
-DEVICE_DEVS16=$(DD)ljet3.dev $(DD)ljet3d.dev $(DD)ljet4.dev $(DD)ljet4d.dev
-DEVICE_DEVS17=$(DD)pj.dev $(DD)pjxl.dev $(DD)pjxl300.dev
-DEVICE_DEVS18=
-DEVICE_DEVS19=
-DEVICE_DEVS20=
-
-!include $(GLSRCDIR)\wctail.mak
-!include $(GLSRCDIR)\devs.mak
-!include $(GLSRCDIR)\contrib.mak
-!include $(PSSRCDIR)\int.mak
-!include $(PSSRCDIR)\cfonts.mak
-
-# -------------------------------- Library -------------------------------- #
-
-# make sure the target directories exist - use special Watcom .BEFORE
-# (This is not the best way to do this, but we will have to wait until
-# the makefiles get disentangled to do it better.)
-.BEFORE
-	@if not exist $(GLGENDIR) mkdir $(GLGENDIR)
-	@if not exist $(GLOBJDIR) mkdir $(GLOBJDIR)
-	@if not exist $(PSGENDIR) mkdir $(PSGENDIR)
-	@if not exist $(PSOBJDIR) mkdir $(PSOBJDIR)
-
-GLCCWIN=$(GLCC)
-
-!include $(GLSRCDIR)\winplat.mak
-
-# The Watcom C platform
-
-watc_1=$(GLOBJ)gp_getnv.$(OBJ) $(GLOBJ)gp_iwatc.$(OBJ) $(GLOBJ)gp_stdin.$(OBJ)
-watc_2=$(GLOBJ)gp_mktmp.$(OBJ)
-!ifeq WAT32 0
-watc_3=$(GLOBJ)gp_dosfs.$(OBJ) $(GLOBJ)gp_dosfe.$(OBJ) $(GLOBJ)gp_msdos.$(OBJ)
-watc_inc=
-!else
-watc_3=
-watc_inc=$(GLD)winplat.dev
-!endif
-watc__=$(watc_1) $(watc_2) $(watc_3)
-$(GLGEN)watc_.dev: $(watc__) $(GLD)nosync.dev $(watc_inc)
-	$(SETMOD) $(GLGEN)watc_ $(watc_1)
-	$(ADDMOD) $(GLGEN)watc_ $(watc_2)
-	$(ADDMOD) $(GLGEN)watc_ -obj $(watc_3)
-	$(ADDMOD) $(GLGEN)watc_ -include $(GLD)nosync $(watc_inc)
-
-$(GLOBJ)gp_iwatc.$(OBJ): $(GLSRC)gp_iwatc.c $(stat__h) $(string__h)\
- $(gx_h) $(gp_h) $(gpmisc_h)
-	$(GLCC) $(GLO_)gp_iwatc.$(OBJ) $(C_) $(GLSRC)gp_iwatc.c
-
-$(GLOBJ)gp_mktmp.$(OBJ): $(GLSRC)gp_mktmp.c $(stat__h) $(string__h)
-	$(GLCC) $(GLO_)gp_mktmp.$(OBJ) $(C_) $(GLSRC)gp_mktmp.c
-
-$(GLOBJ)gp_stdin.$(OBJ): $(GLSRC)gp_stdin.c $(AK) $(stdio__h) $(gx_h) $(gp_h)
-	$(GLCC) $(GLO_)gp_stdin.$(OBJ) $(C_) $(GLSRC)gp_stdin.c
-
-
-# ----------------------------- Main program ------------------------------ #
-
-BEGINFILES=*.err
-
-LIBDOS=$(LIB_ALL) $(watc__) $(ld_tr)
-
-# Interpreter main program
-
-GS_ALL=$(GLOBJ)gs.$(OBJ) $(INT_ALL) $(INTASM) $(LIBDOS)
-
-ll_tr=$(GLOBJ)ll.tr
-$(ll_tr): $(TOP_MAKEFILES)
-	echo OPTION STACK=64k >$(ll_tr)
-!ifeq WAT32 0
-	echo SYSTEM DOS4G >>$(ll_tr)
-	echo OPTION STUB=$(STUB) >>$(ll_tr)
-!endif
-
-$(GS_XE): $(GS_ALL) $(DEVS_ALL) $(ll_tr)
-	$(LINK) $(LCT) NAME $(GS) OPTION MAP=$(GS) FILE $(GLOBJ)gs @$(ld_tr) @$(ll_tr)

+ 0 - 465
sys/src/cmd/gs/src/zccube.c

@@ -1,465 +0,0 @@
-/* Copyright (C) 2002 Artifex Software Inc.  All rights reserved.
-  
-  This file is part of AFPL Ghostscript.
-  
-  AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author or
-  distributor accepts any responsibility for the consequences of using it, or
-  for whether it serves any particular purpose or works at all, unless he or
-  she says so in writing.  Refer to the Aladdin Free Public License (the
-  "License") for full details.
-  
-  Every copy of AFPL Ghostscript must include a copy of the License, normally
-  in a plain ASCII text file named PUBLIC.  The License grants you the right
-  to copy, modify and redistribute AFPL Ghostscript, but only under certain
-  conditions described in the License.  Among other things, the License
-  requires that the copyright notice and this notice be preserved on all
-  copies.
-*/
-
-/*$Id: zccube.c,v 1.1.2.1 2002/01/17 06:57:55 dancoby Exp $ */
-/* Create Color Cube routines for tint transform replacement. */
-#include "memory_.h"
-#include "ghost.h"
-#include "oper.h"
-#include "gxcspace.h"
-#include "estack.h"
-#include "ialloc.h"
-#include "ifunc.h"
-#include "ostack.h"
-#include "store.h"
-#include "gsfunc0.h"
-
-typedef ushort color_cube_value;
-
-/* Forward references */
-
-private int color_cube_enum_init(i_ctx_t *i_ctx_p, int num_in, int num_out,
-	const ref * pproc, int (*finish_proc)(P1(i_ctx_t *)),
-	gs_memory_t * mem);
-private int color_cube_finish(i_ctx_t *i_ctx_p);
-
-/*
- * Build a color cube to replace the tint transform procedure
- * <num_inputs> <num_outputs> <tint_proc> .buildcolorcube <cubeproc>
- */
-private int
-zbuildcolorcube(i_ctx_t *i_ctx_p)
-{
-    os_ptr op = osp;
-    const ref * pfunc = op;
-    int num_inputs, num_outputs;
-    gs_function_t *pfn;
-    int code = 0;
-
-    /* Check tint transform procedure. */
-    check_proc(*pfunc);
-
-    /* Verify that we have a valid num_inputs value */
-    check_type(op[-2], t_integer);
-    num_inputs = op[-2].value.intval;
-    if (num_inputs <= 0 || num_inputs > GS_CLIENT_COLOR_MAX_COMPONENTS)
-	return_error(e_limitcheck);
-
-    /* Verify that we have a valid num_outputs value */
-    check_type(op[-1], t_integer);
-    num_outputs = op[-1].value.intval;
-    if (num_outputs <= 0 || num_outputs > GS_CLIENT_COLOR_MAX_COMPONENTS)
-	return_error(e_limitcheck);
-
-    pop(2);
-
-    /* Now setup to collect the color cube data */
-    return color_cube_enum_init(i_ctx_p, num_inputs, num_outputs,
-			pfunc, color_cube_finish, imemory);
-}
-    
-/* ------ Internal procedures ------ */
-
-/* -------- Build color cube ------- */
-
-/*
- * This structure is used to hold data required while collecting the
- * color cube information for an "alternate tint transform" that cannot
- * be converted into a type 4 function.
- */
-struct gs_color_cube_enum_s {
-    int indexes[GS_CLIENT_COLOR_MAX_COMPONENTS];
-    gs_function_t * pfn;
-};
-
-typedef struct gs_color_cube_enum_s gs_color_cube_enum;
-
-
-gs_private_st_ptrs1(st_gs_color_cube_enum, gs_color_cube_enum, "gs_color_cube_enum",
-		    gs_color_cube_enum_enum_ptrs, gs_color_cube_enum_reloc_ptrs, pfn);
-
-/*
- * Determine how big of a cube that we want to use.  The space requirements
- * is cube_size ** num_inputs.  Thus we must use fewer points if we have
- * many input components. 
- *
- * We will return a e_rangecheck error if the cube will not fit into the maximum
- * string size.
- */
-private int
-determine_color_cube_size(int num_inputs, int num_outputs)
-{
-    static const int size_list[] = {512, 50, 20, 10, 7, 5, 4, 3};
-    int size;
-
-    /* Start with initial guess at cube size */
-    if (num_inputs > 0 && num_inputs <= 8)
-	size = size_list[num_inputs - 1];
-    else
-	size = 2;
-
-    /*
-     * Verify that the cube will fit into 64k.  We are using a string
-     * to hold the data for the cube.  Max string size is 64k.
-     */
-#define MAX_CUBE_SIZE 0x10000
-    while (true) {
-        int i, total_size = num_outputs * sizeof(color_cube_value);
-
-        for (i = 0; i < num_inputs; i++) {
-	    total_size *= size;
-	    if (total_size > MAX_CUBE_SIZE)
-	        break;
-	}
-	if (total_size <= MAX_CUBE_SIZE)
-	    return size;		/* return value if size fits */
-	if (size == 2)
-	    return_error(e_rangecheck); /* Cannot have less than 2 points per side */
-	size--;
-    }
-#undef MAX_CUBE_SIZE
-}
-
-
-/* Allocate a color cube enumerator. */
-private gs_color_cube_enum *
-gs_color_cube_enum_alloc(gs_memory_t * mem, client_name_t cname)
-{
-    return gs_alloc_struct(mem, gs_color_cube_enum, &st_gs_color_cube_enum, cname);
-}
-
-/*
- * This routine will determine the location of a block of data
- * in the color cube.  Basically this does an index calculation
- * for an n dimensional cube.
- */
-private color_cube_value *
-cube_ptr_from_index(gs_function_Sd_params_t * params, int indexes[])
-{
-    int i, sum = indexes[params->m - 1];
-
-    for (i = params->m - 2; i >= 0; i--) {
-	sum *= params->Size[i];
-	sum += indexes[i];
-    }
-    return (color_cube_value *)(params->DataSource.data.str.data) + sum * params->n;
-}
-
-/*
- * This routine will increment the index values.  This is
- * used for collecting the data.  If we have incremented the
- * last index beyond its last value then we return a 1, else 0;
- */
-private int
-increment_cube_indexes(gs_function_Sd_params_t * params, int indexes[])
-{
-    int i = 0;
-
-    while (1) {
-	indexes[i]++;
-	if (indexes[i] < params->Size[i])
-	    return 0;
-	indexes[i] = 0;
-	i++;
-	if (i == params->m)
-	    return 1;
-    }
-}
-
-/*
- * Fill in the data for a function type 0 parameer object to be used while
- * we collect the data for the color cube.  At the end of the process, we
- * will create a function type 0 object to be used to calculate values
- * for the alternate tint transform.
- */
-int
-cube_build_func0(int num_inputs, int num_outputs,
-		    gs_function_Sd_params_t * params, gs_memory_t *mem)
-{
-    color_cube_value * bytes = 0;
-    int code, i, cube_size;
-    int total_size;
-    int * size;
-    float * domain, * range;
-
-    params->m = num_inputs;
-    params->n = num_outputs;
-    params->Order = 3;			/* Use cubic interpolation */
-    params->BitsPerSample = 8 * sizeof(color_cube_value); /* Use 16 bits per sample */
-    params->Encode = 0;
-    params->Decode = 0;
-    params->Size = 0;
-
-    /* Allocate  storage for pieces */
-
-    if (!(domain = (float *) gs_alloc_byte_array(mem, 2 * params->m,
-    	    			sizeof(float), "cube_build_func0(Domain)" )) ||
-    	!(range = (float *) gs_alloc_byte_array(mem, 2 * params->n,
-    	    			sizeof(float), "cube_build_func0(Range)" )) ||
-    	!(size = (int *) gs_alloc_byte_array(mem, params->m,
-    	    			sizeof(int), "cube_build_func0(Size)"))) {
-	code = gs_note_error(e_VMerror);
-	goto fail;
-    }
-    params->Domain = domain;
-    params->Range = range;
-    params->Size = size;
-    if (!domain || !range  || !size) {
-	code = gs_note_error(e_VMerror);
-	goto fail;
-    }
-
-    /* Determine space required for the color cube storage */
-
-    code = cube_size = determine_color_cube_size(params->m, params->n);
-    if (code < 0)
-        goto fail;
-
-    total_size = params->n;
-    for (i = 0; i < params->m; i++)
-	total_size *= cube_size;
-
-    /* Allocate space for the color cube itself */
-
-    bytes = (color_cube_value *) gs_alloc_byte_array(mem, total_size,
-			sizeof(color_cube_value), "cube_build_func0(bytes)");
-    if (!bytes) {
-	code = gs_note_error(e_VMerror);
-	goto fail;
-    }
-    data_source_init_bytes(&params->DataSource, (const unsigned char *)bytes,
-    			total_size * sizeof(color_cube_value));
-
-    /* Initialize Domain, Range, and Size arrays */
-
-    for (i = 0; i < params->m; i++) {
-        domain[2 * i] = 0.0;
-        domain[2 * i + 1] = 1.0;
-	size[i] = cube_size;
-    }
-    for (i = 0; i < params->n; i++) {
-        range[2 * i] = 0.0;
-        range[2 * i + 1] = 1.0;
-    }
-
-    return 0;
-
-fail:
-    gs_function_Sd_free_params(params, mem);
-    return (code < 0 ? code : gs_note_error(e_rangecheck));
-}
-
-private int color_cube_sample(i_ctx_t *i_ctx_p);
-private int color_cube_continue(i_ctx_t *i_ctx_p);
-
-/*
- * Layout of stuff pushed on estack while collecting color cube data.
- * The data is saved there since it is safe from attack by the tint
- * transform function and is convient.
- *
- *      finishing procedure (or 0)
- *      alternate tint transform procedure
- *      enumeration structure (as bytes)
- */
-#define estack_storage 3
-#define esp_finish_proc (*real_opproc(esp - 2))
-#define tint_proc esp[-1]
-#define senum r_ptr(esp, gs_color_cube_enum)
-
-/*
- * Set up to collect the data for the color cube.  This is used for
- * those alternate tine transforms that cannot be converted into a
- * type 4 function.
- */
-private int
-color_cube_enum_init(i_ctx_t *i_ctx_p, int num_in, int num_out,
-	const ref * pproc, int (*finish_proc)(P1(i_ctx_t *)), gs_memory_t * mem)
-{
-    gs_color_cube_enum *penum;
-    int i, code;
-    gs_function_t *pfn;
-    gs_function_Sd_params_t params;
-
-    check_estack(estack_storage + 1);		/* Verify space on estack */
-    check_ostack(num_in);			/* and the operand stack */
-    check_ostack(num_out);
-
-    penum = gs_color_cube_enum_alloc(imemory, "color_cube_enum_init");
-    if (penum == 0)
-	return_error(e_VMerror);
-
-    code = cube_build_func0(num_in, num_out, &params, mem);
-    if (code < 0) {
-	gs_free_object(mem, penum, "color_cube_enum_init(penum)");
-	return code;
-    }
-
-    /*
-     * This is temporary.  We will call gs_function_Sd_init again after
-     * we have collected the cube data.  We are doing it now because we need
-     * a function structure created (along with its GC enumeration stuff)
-     * that we can use while collecting the cube data.  We will call
-     * the routine again after the cube data is collected to correctly
-     * initialize the function.
-     */
-    code = gs_function_Sd_init(&pfn, &params, mem);
-    if (code < 0) {
-	gs_free_object(mem, penum, "color_cube_enum_init(penum)");
-	return code;
-    }
-
-    /* Initialize data in the enumeration structure */
-
-    penum->pfn = pfn;
-    for(i=0; i< num_in; i++)
-        penum->indexes[i] = 0;
-
-    /* Push everything on the estack */
-
-    esp += estack_storage;
-    make_op_estack(esp - 2, finish_proc);	/* Finish proc onto estack */
-    tint_proc = *pproc;				/* Alternate tint xform onto estack */
-    make_istruct(esp, 0, penum);		/* Color cube enumeration structure */
-    push_op_estack(color_cube_sample);		/* Start sampling data */
-    return o_push_estack;
-}
-
-/*
- * Set up to collect the next color cube value.
- */
-private int
-color_cube_sample(i_ctx_t *i_ctx_p)
-{
-    os_ptr op = osp;
-    gs_color_cube_enum *penum = senum;
-    gs_point pt;
-    ref proc;
-    gs_function_Sd_params_t * params = (gs_function_Sd_params_t *)&penum->pfn->params;
-    int i;
-    int num_inputs = params->m;
-    color_cube_value * data_ptr;
-    double cube_step = 1.0 / (params->Size[0] - 1);	/* All sizes are the same */
-
-    /*
-     * Put set of color values onto the stack.
-     */
-    push(num_inputs);
-    for (i = 0; i < num_inputs; i++)
-	make_real(op - num_inputs + i + 1, penum->indexes[i] * cube_step);
-
-    proc = tint_proc;			    /* Get tint xfrom from storage */
-    push_op_estack(color_cube_continue);    /* Put 'save' routine on estack, after tint xform */
-    *++esp = proc;			    /* Put tint xform to be executed */
-    return o_push_estack;
-}
-
-/* 
- * Continuation procedure for processing sampled pixels.
- */
-private int
-color_cube_continue(i_ctx_t *i_ctx_p)
-{
-    os_ptr op = osp;
-    gs_color_cube_enum *penum = senum;
-    gs_function_Sd_params_t * params = (gs_function_Sd_params_t *)&penum->pfn->params;
-    int i, done, num_out = params->n;
-    int code;
-    byte * data_ptr;
-    int color_cube_value_max = (1 << (sizeof(color_cube_value) * 8)) - 1;
-
-    /* Save data from tint transform function */
-
-    check_op(num_out);
-    data_ptr = (byte *)cube_ptr_from_index(params, penum->indexes);
-    for (i=0; i < num_out; i++) {
-	color_cube_value cv;
-        double value;
-
-        code = real_param(op + i - num_out + 1, &value);
-        if (code < 0)
-	    return code;
-	if (value < 0.0)
-	    value = 0.0;
-	else if (value > 1.0)
-	    value = 1.0;
-	cv = (color_cube_value) (value * color_cube_value_max + 0.5);
-	data_ptr[2 * i] = cv >> 8;	/* MSB first */
-	data_ptr[2 * i + 1] = cv;	/* LSB second */
-    }
-    pop(num_out);		    /* Move op to base of result values */
-    
-    /* Check if we are done collecting data. */
-
-    done = increment_cube_indexes(params, penum->indexes);
-    if (done) {
-
-	/* Execute the closing procedure, if given */
-	code = 0;
-	if (esp_finish_proc != 0)
-	    code = esp_finish_proc(i_ctx_p);
-
-	return code;
-    }
-
-    /* Now get the data for the next location */
-
-    return color_cube_sample(i_ctx_p);
-}
-
-/*
- * Finish collecting color cube.
- */
-private int
-color_cube_finish(i_ctx_t *i_ctx_p)
-{
-    os_ptr op = osp;
-    gs_color_cube_enum *penum = senum;
-    /* Build a type 0 function using the given parameters */
-    gs_function_Sd_params_t * params = (gs_function_Sd_params_t *)&penum->pfn->params;
-    gs_function_t * pfn;
-    ref cref;			/* closure */
-    int code = gs_function_Sd_init(&pfn, params, imemory);
-
-    if (code < 0)
-	return code;
-
-    code = ialloc_ref_array(&cref, a_executable | a_execute, 2,
-			    "color_cube_finish(cref)");
-    if (code < 0)
-	return code;
-
-    make_istruct_new(cref.value.refs, a_executable | a_execute, pfn);
-    make_oper_new(cref.value.refs + 1, 0, zexecfunction);
-    ref_assign(op, &cref);
-
-    esp -= estack_storage;
-    ifree_object(penum->pfn, "color_cube_finish(pfn)");
-    ifree_object(penum, "color_cube_finish(enum)");
-    return o_pop_estack;
-}
-
-
-/* ------ Initialization procedure ------ */
-
-const op_def zccube_op_defs[] =
-{
-    op_def_begin_level2(),
-    {"3.buildcolorcube", zbuildcolorcube},
-    op_def_end(0)
-};
-

+ 0 - 115
sys/src/cmd/gs/zlib/Make_vms.com

@@ -1,115 +0,0 @@
-$! make libz under VMS
-$! written by Martin P.J. Zinser <m.zinser@gsi.de>
-$!
-$! Look for the compiler used
-$!
-$ ccopt = ""
-$ if f$getsyi("HW_MODEL").ge.1024
-$ then
-$  ccopt = "/prefix=all"+ccopt
-$  comp  = "__decc__=1"
-$  if f$trnlnm("SYS").eqs."" then define sys sys$library:
-$ else
-$  if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
-$   then
-$    comp  = "__vaxc__=1"
-$    if f$trnlnm("SYS").eqs."" then define sys sys$library:
-$   else
-$    if f$trnlnm("SYS").eqs."" then define sys decc$library_include:
-$    ccopt = "/decc/prefix=all"+ccopt
-$    comp  = "__decc__=1"
-$  endif
-$ endif
-$!
-$! Build the thing plain or with mms
-$!
-$ write sys$output "Compiling Zlib sources ..."
-$ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
-$  then
-$   dele example.obj;*,minigzip.obj;*
-$   CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
-                adler32.c zutil.h zlib.h zconf.h
-$   CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
-                compress.c zlib.h zconf.h
-$   CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
-                crc32.c zutil.h zlib.h zconf.h
-$   CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
-                deflatec.c deflate.h zutil.h zlib.h zconf.h
-$   CALL MAKE gzio.OBJ "CC ''CCOPT' gzio" -
-                gsio.c zutil.h zlib.h zconf.h
-$   CALL MAKE infblock.OBJ "CC ''CCOPT' infblock" -
-                infblock.c zutil.h zlib.h zconf.h infblock.h
-$   CALL MAKE infcodes.OBJ "CC ''CCOPT' infcodes" -
-                infcodes.c zutil.h zlib.h zconf.h inftrees.h
-$   CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
-                inffast.c zutil.h zlib.h zconf.h inffast.h
-$   CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
-                inflate.c zutil.h zlib.h zconf.h infblock.h
-$   CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
-                inftrees.c zutil.h zlib.h zconf.h inftrees.h
-$   CALL MAKE infutil.OBJ "CC ''CCOPT' infutil" -
-                infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-$   CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
-                trees.c deflate.h zutil.h zlib.h zconf.h
-$   CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
-                uncompr.c zlib.h zconf.h
-$   CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
-                zutil.c zutil.h zlib.h zconf.h
-$   write sys$output "Building Zlib ..."
-$   CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
-$   write sys$output "Building example..."
-$   CALL MAKE example.OBJ "CC ''CCOPT' example" -
-                example.c zlib.h zconf.h
-$   call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
-$   write sys$output "Building minigzip..."
-$   CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" -
-                minigzip.c zlib.h zconf.h
-$   call make minigzip.exe - 
-                "LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" - 
-                minigzip.obj libz.olb
-$  else
-$   mms/macro=('comp')
-$  endif
-$ write sys$output "Zlib build completed"
-$ exit
-$!
-$!
-$MAKE: SUBROUTINE   !SUBROUTINE TO CHECK DEPENDENCIES
-$ V = 'F$Verify(0)
-$! P1 = What we are trying to make
-$! P2 = Command to make it
-$! P3 - P8  What it depends on
-$
-$ If F$Search(P1) .Eqs. "" Then Goto Makeit
-$ Time = F$CvTime(F$File(P1,"RDT"))
-$arg=3
-$Loop:
-$       Argument = P'arg
-$       If Argument .Eqs. "" Then Goto Exit
-$       El=0
-$Loop2:
-$       File = F$Element(El," ",Argument)
-$       If File .Eqs. " " Then Goto Endl
-$       AFile = ""
-$Loop3:
-$       OFile = AFile
-$       AFile = F$Search(File)
-$       If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
-$       If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
-$       Goto Loop3
-$NextEL:
-$       El = El + 1
-$       Goto Loop2
-$EndL:
-$ arg=arg+1
-$ If arg .Le. 8 Then Goto Loop
-$ Goto Exit
-$
-$Makeit:
-$ VV=F$VERIFY(0)
-$ write sys$output P2
-$ 'P2
-$ VV='F$Verify(VV)
-$Exit:
-$ If V Then Set Verify
-$ENDSUBROUTINE

+ 0 - 104
sys/src/cmd/gs/zlib/Makefile.b32

@@ -1,104 +0,0 @@
-# Makefile for zlib
-# Borland C++   
-
-# This version of the zlib makefile was adapted by Chris Young for use
-# with Borland C 4.5x with the Dos Power Pack for a 32-bit protected mode
-# flat memory model.  It was created for use with POV-Ray ray tracer and
-# you may choose to edit the CFLAGS to suit your needs but the
-# switches -WX and -DMSDOS are required.
-# -- Chris Young 76702.1655@compuserve.com
-
-# To use, do "make -fmakefile.b32"
-
-# See zconf.h for details about the memory requirements.
-
-# ------------- Borland C++ -------------
-MODEL=-WX 
-CFLAGS= $(MODEL) -P-C -K -N- -k- -d -3 -r- -v- -f -DMSDOS
-CC=bcc32
-LD=bcc32
-LIB=tlib
-LDFLAGS= $(MODEL)
-O=.obj
-
-# variables
-OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
-  trees$(O)
-OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
-  trees$(O)
-OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
-  infutil$(O) inffast$(O)
-OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
-  infutil$(O)+inffast$(O)
-
-all: test
-
-adler32.obj: adler32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-compress.obj: compress.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-crc32.obj: crc32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-gzio.obj: gzio.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
-   infcodes.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
-   infcodes.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-uncompr.obj: uncompr.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-example.obj: example.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-minigzip.obj: minigzip.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-# we must cut the command line to fit in the MS/DOS 128 byte limit:
-zlib.lib: $(OBJ1) $(OBJ2)
-	del zlib.lib
-	$(LIB) zlib +$(OBJP1)
-	$(LIB) zlib +$(OBJP2)
-
-example.exe: example.obj zlib.lib
-	$(LD) $(LDFLAGS) example.obj zlib.lib
-
-minigzip.exe: minigzip.obj zlib.lib
-	$(LD) $(LDFLAGS) minigzip.obj zlib.lib
-
-test: example.exe minigzip.exe
-	example
-	echo hello world | minigzip | minigzip -d 
-
-#clean:
-#	del *.obj
-#	del *.exe

+ 0 - 105
sys/src/cmd/gs/zlib/Makefile.bor

@@ -1,105 +0,0 @@
-# Makefile for zlib
-# Borland C++   ************ UNTESTED ***********
-
-# To use, do "make -fmakefile.bor"
-# To compile in small model, set below: MODEL=-ms
-
-# WARNING: the small model is supported but only for small values of
-# MAX_WBITS and MAX_MEM_LEVEL. For example:
-#    -DMAX_WBITS=11 -DDEF_WBITS=11 -DMAX_MEM_LEVEL=3
-# If you wish to reduce the memory requirements (default 256K for big
-# objects plus a few K), you can add to CFLAGS below: 
-#   -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
-# See zconf.h for details about the memory requirements.
-
-# ------------- Turbo C++, Borland C++ -------------
-MODEL=-ml
-CFLAGS=-O2 -Z $(MODEL)
-CC=bcc
-LD=bcc
-LIB=tlib
-#   replace bcc with tcc for Turbo C++ 1.0, with bcc32 for the 32 bit version
-LDFLAGS=$(MODEL)
-O=.obj
-
-# variables
-OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
-  trees$(O)
-OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
-  trees$(O)
-OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
-  infutil$(O) inffast$(O)
-OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
-  infutil$(O)+inffast$(O)
-
-all: test
-
-adler32.obj: adler32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-compress.obj: compress.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-crc32.obj: crc32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-gzio.obj: gzio.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
-   infcodes.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
-   infcodes.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-uncompr.obj: uncompr.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-example.obj: example.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-minigzip.obj: minigzip.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-# we must cut the command line to fit in the MS/DOS 128 byte limit:
-zlib.lib: $(OBJ1) $(OBJ2)
-	del zlib.lib
-	$(LIB) zlib +$(OBJP1)
-	$(LIB) zlib +$(OBJP2)
-
-example.exe: example.obj zlib.lib
-	$(LD) $(LDFLAGS) example.obj zlib.lib
-
-minigzip.exe: minigzip.obj zlib.lib
-	$(LD) $(LDFLAGS) minigzip.obj zlib.lib
-
-test: example.exe minigzip.exe
-	example
-	echo hello world | minigzip | minigzip -d 
-
-#clean:
-#	del *.obj
-#	del *.exe

+ 0 - 93
sys/src/cmd/gs/zlib/Makefile.dj2

@@ -1,93 +0,0 @@
-# Makefile for zlib.  Modified for djgpp v2.0 by F. J. Donahoe, 3/15/96.
-# Copyright (C) 1995-1996 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h 
-
-# To compile, or to compile and test, type:
-# 
-#   make -fmakefile.dj2;  make test -fmakefile.dj2
-# 
-# To install libz.a, zconf.h and zlib.h in the djgpp directories, type:
-# 
-#    make install -fmakefile.dj2
-# 
-# after first defining LIBRARY_PATH and INCLUDE_PATH in djgpp.env as
-# in the sample below if the pattern of the DJGPP distribution is to
-# be followed.  Remember that, while <sp>'es around <=> are ignored in
-# makefiles, they are *not* in batch files or in djgpp.env.
-# - - - - -
-# [make]
-# INCLUDE_PATH=%\>;INCLUDE_PATH%%\DJDIR%\include
-# LIBRARY_PATH=%\>;LIBRARY_PATH%%\DJDIR%\lib
-# BUTT=-m486
-# - - - - -
-# Alternately, these variables may be defined below, overriding the values
-# in djgpp.env, as
-INCLUDE_PATH=c:\usr\include
-
-CC=gcc
-
-#CFLAGS=-MMD -O
-#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
-#CFLAGS=-MMD -g -DDEBUG
-CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-             -Wstrict-prototypes -Wmissing-prototypes
-
-# If cp.exe is not found, replace with copy /Y .
-CP=cp -f
-# If install.exe is not found, replace with $(CP).
-INSTALL=install
-# The default value of RM is "rm -f."  If "rm.exe" is not found, uncomment:
-# RM=del
-LDLIBS=-L. -lz
-LD=$(CC) -s -o
-LDSHARED=$(CC)
-
-INCL=zlib.h zconf.h
-LIBS=libz.a
-
-AR=ar rcs
-
-prefix=/usr/local
-exec_prefix = $(prefix)
-
-OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
-       zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: example.exe minigzip.exe
-
-test: all
-	./example
-	echo hello world | .\minigzip | .\minigzip -d 
-
-%.o : %.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-libz.a: $(OBJS)
-	$(AR) $@ $(OBJS)
-
-%.exe : %.o $(LIBS)
-	$(LD) $@ $< $(LDLIBS)
-
-# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env .
-
-.PHONY : uninstall clean
-
-install: $(INCL) $(LIBS)
-	-@if not exist $(INCLUDE_PATH)\nul mkdir $(INCLUDE_PATH)
-	-@if not exist $(LIBRARY_PATH)\nul mkdir $(LIBRARY_PATH)
-	for %%f in ($(INCL)) do $(INSTALL) %%f $(INCLUDE_PATH)
-	for %%p in ($(LIBS)) do $(INSTALL) %%p $(LIBRARY_PATH)
-
-uninstall:
-	for %%f in ($(INCL)) do $(RM) $(INCLUDE_PATH)\%%f
-	for %%p in ($(LIBS)) do $(RM) $(LIBRARY_PATH)\%%p
-
-clean:
-	for %%p in (*.d *.o *.exe libz.a libz.so* foo.gz) do $(RM) %%p
-
-DEPS := $(wildcard *.d)
-ifneq ($(DEPS),)
-include $(DEPS)
-endif

+ 0 - 101
sys/src/cmd/gs/zlib/Makefile.msc

@@ -1,101 +0,0 @@
-# Makefile for zlib
-# Microsoft C 5.1 or later
-
-# To use, do "make makefile.msc"
-# To compile in small model, set below: MODEL=-AS
-
-# If you wish to reduce the memory requirements (default 256K for big
-# objects plus a few K), you can add to CFLAGS below: 
-#   -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
-# See zconf.h for details about the memory requirements.
-
-# ------------- Microsoft C 5.1 and later -------------
-MODEL=-AL
-CFLAGS=-Oait -Gs -nologo -W3 $(MODEL)
-#-Ox generates bad code with MSC 5.1
-CC=cl
-LD=link
-LDFLAGS=/e/st:0x1000/noe
-O=.obj
-
-# variables
-OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
-  trees$(O)
-OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
-  trees$(O)
-OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
-  infutil$(O) inffast$(O)
-OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
-  infutil$(O)+inffast$(O)
-
-all:  zlib.lib example.exe minigzip.exe
-
-adler32.obj: adler32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-compress.obj: compress.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-crc32.obj: crc32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-gzio.obj: gzio.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
-   infcodes.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
-   infcodes.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-uncompr.obj: uncompr.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-example.obj: example.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-minigzip.obj: minigzip.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-# we must cut the command line to fit in the MS/DOS 128 byte limit:
-zlib.lib: $(OBJ1) $(OBJ2)
-	if exist zlib.lib del zlib.lib
-	lib zlib $(OBJ1);
-	lib zlib $(OBJ2);
-
-example.exe: example.obj zlib.lib
-	$(LD) $(LDFLAGS) example.obj,,,zlib.lib;
-
-minigzip.exe: minigzip.obj zlib.lib
-	$(LD) $(LDFLAGS) minigzip.obj,,,zlib.lib;
-
-test: example.exe minigzip.exe
-	example
-	echo hello world | minigzip | minigzip -d 
-
-#clean:
-#	del *.obj
-#	del *.exe

+ 0 - 46
sys/src/cmd/gs/zlib/Makefile.riscos

@@ -1,46 +0,0 @@
-# Project:   zlib_1_03
-
-
-# Toolflags:
-CCflags = -c -depend !Depend -IC: -g -throwback  -DRISCOS  -fnah 
-C++flags = -c -depend !Depend -IC: -throwback
-Linkflags = -aif -c++ -o $@ 
-ObjAsmflags = -throwback -NoCache -depend !Depend
-CMHGflags = 
-LibFileflags = -c -l -o $@ 
-Squeezeflags = -o $@
-
-
-# Final targets:
-@.zlib_lib:   @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \
-        @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \
-        @.o.uncompress @.o.zutil 
-        LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \
-        @.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \
-        @.o.trees @.o.uncompress @.o.zutil 
-@.test:   @.tests.minigzip @.tests.example 
-        echo Please run "Test" in directory tests 
-@.tests.minigzip:   @.o.minigzip @.zlib_lib C:o.Stubs 
-        Link $(Linkflags) @.o.minigzip @.zlib_lib C:o.Stubs 
-@.tests.example:   @.o.example @.zlib_lib C:o.Stubs 
-        Link $(Linkflags) @.o.example @.zlib_lib C:o.Stubs 
-
-
-# User-editable dependencies:
-.c.o:
-        cc $(ccflags) -o $@ $<
-
-# Static dependencies:
-@.o.example:   @.tests.c.example
-        cc $(ccflags) -o @.o.example @.tests.c.example 
-@.o.minigzip:   @.tests.c.minigzip
-        cc $(ccflags) -o @.o.minigzip @.tests.c.minigzip 
-
-
-# Dynamic dependencies:
-o.minigzip:	tests.c.minigzip
-o.minigzip:	h.zlib
-o.minigzip:	h.zconf
-o.example:	tests.c.example
-o.example:	h.zlib
-o.example:	h.zconf

+ 0 - 64
sys/src/cmd/gs/zlib/Makefile.sas

@@ -1,64 +0,0 @@
-# SMakefile for zlib
-# Modified from the standard UNIX Makefile Copyright Jean-loup Gailly
-# Osma Ahvenlampi <Osma.Ahvenlampi@hut.fi>
-# Amiga, SAS/C 6.56 & Smake
-
-CC=sc
-CFLAGS=OPT
-#CFLAGS=OPT CPU=68030
-#CFLAGS=DEBUG=LINE
-LDFLAGS=LIB z.lib
-
-SCOPTIONS=OPTSCHED OPTINLINE OPTALIAS OPTTIME OPTINLOCAL STRMERGE \
-       NOICONS PARMS=BOTH NOSTACKCHECK UTILLIB NOVERSION ERRORREXX 
-
-OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
-       zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: SCOPTIONS example minigzip
-
-test: all
-	`cd`/example
-	echo hello world | minigzip | minigzip -d 
-
-install: z.lib
-	copy zlib.h zconf.h INCLUDE: clone
-	copy z.lib LIB: clone
-
-z.lib: $(OBJS)
-	oml z.lib r $(OBJS)
-
-example: example.o z.lib
-	$(CC) $(CFLAGS) LINK TO $@ example.o $(LDFLAGS)
-
-minigzip: minigzip.o z.lib
-	$(CC) $(CFLAGS) LINK TO $@ minigzip.o $(LDFLAGS)
-
-clean:
-	-delete force quiet *.o example minigzip z.lib foo.gz *.lnk SCOPTIONS
-
-SCOPTIONS: Smakefile
-        copy to $@ <from <
-$(SCOPTIONS)
-<
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-adler32.o: zutil.h zlib.h zconf.h
-compress.o: zlib.h zconf.h
-crc32.o: zutil.h zlib.h zconf.h
-deflate.o: deflate.h zutil.h zlib.h zconf.h
-example.o: zlib.h zconf.h
-gzio.o: zutil.h zlib.h zconf.h
-infblock.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
-infcodes.o: zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h
-inffast.o: zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-inflate.o: zutil.h zlib.h zconf.h infblock.h
-inftrees.o: zutil.h zlib.h zconf.h inftrees.h
-infutil.o: zutil.h zlib.h zconf.h inftrees.h infutil.h
-minigzip.o: zlib.h zconf.h
-trees.o: deflate.h zutil.h zlib.h zconf.h
-uncompr.o: zlib.h zconf.h
-zutil.o: zutil.h zlib.h zconf.h

+ 0 - 105
sys/src/cmd/gs/zlib/Makefile.tc

@@ -1,105 +0,0 @@
-# Makefile for zlib
-# TurboC 2.0
-
-# To use, do "make -fmakefile.tc"
-# To compile in small model, set below: MODEL=-ms
-
-# WARNING: the small model is supported but only for small values of
-# MAX_WBITS and MAX_MEM_LEVEL. For example:
-#    -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
-# If you wish to reduce the memory requirements (default 256K for big
-# objects plus a few K), you can add to CFLAGS below: 
-#   -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
-# See zconf.h for details about the memory requirements.
-
-# ------------- Turbo C 2.0 -------------
-MODEL=-ml
-# CFLAGS=-O2 -G -Z $(MODEL) -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
-CFLAGS=-O2 -G -Z $(MODEL)
-CC=tcc -I\tc\include
-LD=tcc -L\tc\lib
-LIB=tlib
-LDFLAGS=$(MODEL) -f-
-O=.obj
-
-# variables
-OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
-  trees$(O)
-OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
-  trees$(O)
-OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
-  infutil$(O) inffast$(O)
-OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
-  infutil$(O)+inffast$(O)
-
-all: test
-
-adler32.obj: adler32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-compress.obj: compress.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-crc32.obj: crc32.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-gzio.obj: gzio.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
-   infcodes.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
-   infcodes.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
-	$(CC) -c $(CFLAGS) $*.c
-
-infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-	$(CC) -c $(CFLAGS) $*.c
-
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-	$(CC) -c $(CFLAGS) $*.c
-
-trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-uncompr.obj: uncompr.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-example.obj: example.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-minigzip.obj: minigzip.c zlib.h zconf.h
-	$(CC) -c $(CFLAGS) $*.c
-
-# we must cut the command line to fit in the MS/DOS 128 byte limit:
-zlib.lib: $(OBJ1) $(OBJ2)
-	del zlib.lib
-	$(LIB) zlib +$(OBJP1)
-	$(LIB) zlib +$(OBJP2)
-
-example.exe: example.obj zlib.lib
-	$(LD) $(LDFLAGS) -eexample.exe example.obj zlib.lib
-
-minigzip.exe: minigzip.obj zlib.lib
-	$(LD) $(LDFLAGS) -eminigzip.exe minigzip.obj zlib.lib
-
-test: example.exe minigzip.exe
-	example
-	echo hello world | minigzip | minigzip -d 
-
-#clean:
-#	del *.obj
-#	del *.exe

+ 0 - 103
sys/src/cmd/gs/zlib/Makefile.wat

@@ -1,103 +0,0 @@
-# Makefile for zlib
-# Watcom 10a
-
-# This version of the zlib makefile was adapted by Chris Young for use
-# with Watcom 10a 32-bit protected mode flat memory model.  It was created 
-# for use with POV-Ray ray tracer and you may choose to edit the CFLAGS to 
-# suit your needs but the -DMSDOS is required.
-# -- Chris Young 76702.1655@compuserve.com
-
-# To use, do "wmake -f makefile.wat"
-
-# See zconf.h for details about the memory requirements.
-
-# ------------- Watcom 10a -------------
-MODEL=-mf 
-CFLAGS= $(MODEL) -fpi87 -fp5 -zp4 -5r -w5 -oneatx -DMSDOS
-CC=wcc386
-LD=wcl386
-LIB=wlib -b -c 
-LDFLAGS= 
-O=.obj
-
-# variables
-OBJ1=adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) 
-OBJ2=trees$(O) zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) 
-OBJ3=infutil$(O) inffast$(O)
-OBJP1=adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)
-OBJP2=trees$(O)+zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)
-OBJP3=infutil$(O)+inffast$(O)
-
-all: test
-
-adler32.obj: adler32.c zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-compress.obj: compress.c zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-crc32.obj: crc32.c zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-gzio.obj: gzio.c zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h &
-  infcodes.h infutil.h
-	$(CC) $(CFLAGS) $*.c
-
-infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h &
-  infcodes.h inffast.h
-	$(CC) $(CFLAGS) $*.c
-
-inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
-	$(CC) $(CFLAGS) $*.c
-
-inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
-	$(CC) $(CFLAGS) $*.c
-
-infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
-	$(CC) $(CFLAGS) $*.c
-
-inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-	$(CC) $(CFLAGS) $*.c
-
-trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-uncompr.obj: uncompr.c zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-zutil.obj: zutil.c zutil.h zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-example.obj: example.c zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-minigzip.obj: minigzip.c zlib.h zconf.h
-	$(CC) $(CFLAGS) $*.c
-
-# we must cut the command line to fit in the MS/DOS 128 byte limit:
-zlib.lib: $(OBJ1) $(OBJ2) $(OBJ3) 
-	del zlib.lib
-	$(LIB) zlib.lib +$(OBJP1)
-	$(LIB) zlib.lib +$(OBJP2)
-	$(LIB) zlib.lib +$(OBJP3)
-
-example.exe: example.obj zlib.lib
-	$(LD) $(LDFLAGS) example.obj zlib.lib
-
-minigzip.exe: minigzip.obj zlib.lib
-	$(LD) $(LDFLAGS) minigzip.obj zlib.lib
-
-test: minigzip.exe example.exe
-	example
-	echo hello world | minigzip | minigzip -d >test
-	type test
-
-#clean:
-#	del *.obj
-#	del *.exe

+ 0 - 105
sys/src/cmd/gs/zlib/algorithm.doc

@@ -1,105 +0,0 @@
-1. Compression algorithm (deflate)
-
-The deflation algorithm used by zlib (also zip and gzip) is a variation of
-LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in
-the input data.  The second occurrence of a string is replaced by a
-pointer to the previous string, in the form of a pair (distance,
-length).  Distances are limited to 32K bytes, and lengths are limited
-to 258 bytes. When a string does not occur anywhere in the previous
-32K bytes, it is emitted as a sequence of literal bytes.  (In this
-description, `string' must be taken as an arbitrary sequence of bytes,
-and is not restricted to printable characters.)
-
-Literals or match lengths are compressed with one Huffman tree, and
-match distances are compressed with another tree. The trees are stored
-in a compact form at the start of each block. The blocks can have any
-size (except that the compressed data for one block must fit in
-available memory). A block is terminated when deflate() determines that
-it would be useful to start another block with fresh trees. (This is
-somewhat similar to the behavior of LZW-based _compress_.)
-
-Duplicated strings are found using a hash table. All input strings of
-length 3 are inserted in the hash table. A hash index is computed for
-the next 3 bytes. If the hash chain for this index is not empty, all
-strings in the chain are compared with the current input string, and
-the longest match is selected.
-
-The hash chains are searched starting with the most recent strings, to
-favor small distances and thus take advantage of the Huffman encoding.
-The hash chains are singly linked. There are no deletions from the
-hash chains, the algorithm simply discards matches that are too old.
-
-To avoid a worst-case situation, very long hash chains are arbitrarily
-truncated at a certain length, determined by a runtime option (level
-parameter of deflateInit). So deflate() does not always find the longest
-possible match but generally finds a match which is long enough.
-
-deflate() also defers the selection of matches with a lazy evaluation
-mechanism. After a match of length N has been found, deflate() searches for a
-longer match at the next input byte. If a longer match is found, the
-previous match is truncated to a length of one (thus producing a single
-literal byte) and the longer match is emitted afterwards.  Otherwise,
-the original match is kept, and the next match search is attempted only
-N steps later.
-
-The lazy match evaluation is also subject to a runtime parameter. If
-the current match is long enough, deflate() reduces the search for a longer
-match, thus speeding up the whole process. If compression ratio is more
-important than speed, deflate() attempts a complete second search even if
-the first match is already long enough.
-
-The lazy match evaluation is not performed for the fastest compression
-modes (level parameter 1 to 3). For these fast modes, new strings
-are inserted in the hash table only when no match was found, or
-when the match is not too long. This degrades the compression ratio
-but saves time since there are both fewer insertions and fewer searches.
-
-
-2. Decompression algorithm (inflate)
-
-The real question is, given a Huffman tree, how to decode fast.  The most
-important realization is that shorter codes are much more common than
-longer codes, so pay attention to decoding the short codes fast, and let
-the long codes take longer to decode.
-
-inflate() sets up a first level table that covers some number of bits of
-input less than the length of longest code.  It gets that many bits from the
-stream, and looks it up in the table.  The table will tell if the next
-code is that many bits or less and how many, and if it is, it will tell
-the value, else it will point to the next level table for which inflate()
-grabs more bits and tries to decode a longer code.
-
-How many bits to make the first lookup is a tradeoff between the time it
-takes to decode and the time it takes to build the table.  If building the
-table took no time (and if you had infinite memory), then there would only
-be a first level table to cover all the way to the longest code.  However,
-building the table ends up taking a lot longer for more bits since short
-codes are replicated many times in such a table.  What inflate() does is
-simply to make the number of bits in the first table a variable, and set it
-for the maximum speed.
-
-inflate() sends new trees relatively often, so it is possibly set for a
-smaller first level table than an application that has only one tree for
-all the data.  For inflate, which has 286 possible codes for the
-literal/length tree, the size of the first table is nine bits.  Also the
-distance trees have 30 possible values, and the size of the first table is
-six bits.  Note that for each of those cases, the table ended up one bit
-longer than the ``average'' code length, i.e. the code length of an
-approximately flat code which would be a little more than eight bits for
-286 symbols and a little less than five bits for 30 symbols.  It would be
-interesting to see if optimizing the first level table for other
-applications gave values within a bit or two of the flat code size.
-
-
-Jean-loup Gailly        Mark Adler
-gzip@prep.ai.mit.edu    madler@alumni.caltech.edu
-
-
-References:
-
-[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data
-Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
-pp. 337-343.
-
-``DEFLATE Compressed Data Format Specification'' available in
-ftp://ds.internic.net/rfc/rfc1951.txt

+ 0 - 48
sys/src/cmd/gs/zlib/configure

@@ -1,48 +0,0 @@
-# descrip.mms: MMS description file for building zlib on VMS
-# written by Martin P.J. Zinser <m.zinser@gsi.de>
-
-cc_defs = 
-c_deb = 
-
-.ifdef __DECC__
-pref = /prefix=all
-.endif
-
-OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj,\
-       deflate.obj, trees.obj, zutil.obj, inflate.obj, infblock.obj,\
-       inftrees.obj, infcodes.obj, infutil.obj, inffast.obj
-
-CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF)
-
-all : example.exe minigzip.exe
-        @ write sys$output " Example applications available"
-libz.olb : libz.olb($(OBJS))
-	@ write sys$output " libz available"
-
-example.exe : example.obj libz.olb
-              link example,libz.olb/lib
-
-minigzip.exe : minigzip.obj libz.olb
-              link minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib
-
-clean : 
-	delete *.obj;*,libz.olb;*
-
-
-# Other dependencies.
-adler32.obj : zutil.h zlib.h zconf.h
-compress.obj : zlib.h zconf.h
-crc32.obj : zutil.h zlib.h zconf.h
-deflate.obj : deflate.h zutil.h zlib.h zconf.h
-example.obj : zlib.h zconf.h
-gzio.obj : zutil.h zlib.h zconf.h
-infblock.obj : zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
-infcodes.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h
-inffast.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
-inflate.obj : zutil.h zlib.h zconf.h infblock.h
-inftrees.obj : zutil.h zlib.h zconf.h inftrees.h
-infutil.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h
-minigzip.obj : zlib.h zconf.h
-trees.obj : deflate.h zutil.h zlib.h zconf.h
-uncompr.obj : zlib.h zconf.h
-zutil.obj : zutil.h zlib.h zconf.h

+ 0 - 402
sys/src/cmd/gs/zlib/infblock.c

@@ -1,402 +0,0 @@
-/* infblock.c -- interpret and process block types to last block
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-#include "zutil.h"
-#include "infblock.h"
-#include "inftrees.h"
-#include "infcodes.h"
-#include "infutil.h"
-
-struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-
-/* Table for deflate from PKZIP's appnote.txt. */
-local uInt border[] = { /* Order of the bit length code lengths */
-        16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-/*
-   Notes beyond the 1.93a appnote.txt:
-
-   1. Distance pointers never point before the beginning of the output
-      stream.
-   2. Distance pointers can point back across blocks, up to 32k away.
-   3. There is an implied maximum of 7 bits for the bit length table and
-      15 bits for the actual data.
-   4. If only one code exists, then it is encoded using one bit.  (Zero
-      would be more efficient, but perhaps a little confusing.)  If two
-      codes exist, they are coded using one bit each (0 and 1).
-   5. There is no way of sending zero distance codes--a dummy must be
-      sent if there are none.  (History: a pre 2.0 version of PKZIP would
-      store blocks with no distance codes, but this was discovered to be
-      too harsh a criterion.)  Valid only for 1.93a.  2.04c does allow
-      zero distance codes, which is sent as one code of zero bits in
-      length.
-   6. There are up to 286 literal/length codes.  Code 256 represents the
-      end-of-block.  Note however that the static length tree defines
-      288 codes just to fill out the Huffman codes.  Codes 286 and 287
-      cannot be used though, since there is no length base or extra bits
-      defined for them.  Similarily, there are up to 30 distance codes.
-      However, static trees define 32 codes (all 5 bits) to fill out the
-      Huffman codes, but the last two had better not show up in the data.
-   7. Unzip can check dynamic Huffman blocks for complete code sets.
-      The exception is that a single code would not be complete (see #4).
-   8. The five bits following the block type is really the number of
-      literal codes sent minus 257.
-   9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
-      (1+6+6).  Therefore, to output three times the length, you output
-      three codes (1+1+1), whereas to output four times the same length,
-      you only need two codes (1+3).  Hmm.
-  10. In the tree reconstruction algorithm, Code = Code + Increment
-      only if BitLength(i) is not zero.  (Pretty obvious.)
-  11. Correction: 4 Bits: # of Bit Length codes - 4     (4 - 19)
-  12. Note: length code 284 can represent 227-258, but length code 285
-      really is 258.  The last length deserves its own, short code
-      since it gets used a lot in very redundant files.  The length
-      258 is special since 258 - 3 (the min match length) is 255.
-  13. The literal/length and distance code bit lengths are read as a
-      single stream of lengths.  It is possible (and advantageous) for
-      a repeat code (16, 17, or 18) to go across the boundary between
-      the two sets of lengths.
- */
-
-
-void inflate_blocks_reset(s, z, c)
-inflate_blocks_statef *s;
-z_streamp z;
-uLongf *c;
-{
-  if (s->checkfn != Z_NULL)
-    *c = s->check;
-  if (s->mode == BTREE || s->mode == DTREE)
-    ZFREE(z, s->sub.trees.blens);
-  if (s->mode == CODES)
-  {
-    inflate_codes_free(s->sub.decode.codes, z);
-    inflate_trees_free(s->sub.decode.td, z);
-    inflate_trees_free(s->sub.decode.tl, z);
-  }
-  s->mode = TYPE;
-  s->bitk = 0;
-  s->bitb = 0;
-  s->read = s->write = s->window;
-  if (s->checkfn != Z_NULL)
-    z->adler = s->check = (*s->checkfn)(0L, Z_NULL, 0);
-  Trace((stderr, "inflate:   blocks reset\n"));
-}
-
-
-inflate_blocks_statef *inflate_blocks_new(z, c, w)
-z_streamp z;
-check_func c;
-uInt w;
-{
-  inflate_blocks_statef *s;
-
-  if ((s = (inflate_blocks_statef *)ZALLOC
-       (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
-    return s;
-  if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
-  {
-    ZFREE(z, s);
-    return Z_NULL;
-  }
-  s->end = s->window + w;
-  s->checkfn = c;
-  s->mode = TYPE;
-  Trace((stderr, "inflate:   blocks allocated\n"));
-  inflate_blocks_reset(s, z, &s->check);
-  return s;
-}
-
-
-#ifdef DEBUG
-  extern uInt inflate_hufts;
-#endif
-int inflate_blocks(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
-  uInt t;               /* temporary storage */
-  uLong b;              /* bit buffer */
-  uInt k;               /* bits in bit buffer */
-  Bytef *p;             /* input data pointer */
-  uInt n;               /* bytes available there */
-  Bytef *q;             /* output window write pointer */
-  uInt m;               /* bytes to end of window or read pointer */
-
-  /* copy input/output information to locals (UPDATE macro restores) */
-  LOAD
-
-  /* process input based on current state */
-  while (1) switch (s->mode)
-  {
-    case TYPE:
-      NEEDBITS(3)
-      t = (uInt)b & 7;
-      s->last = t & 1;
-      switch (t >> 1)
-      {
-        case 0:                         /* stored */
-          Trace((stderr, "inflate:     stored block%s\n",
-                 s->last ? " (last)" : ""));
-          DUMPBITS(3)
-          t = k & 7;                    /* go to byte boundary */
-          DUMPBITS(t)
-          s->mode = LENS;               /* get length of stored block */
-          break;
-        case 1:                         /* fixed */
-          Trace((stderr, "inflate:     fixed codes block%s\n",
-                 s->last ? " (last)" : ""));
-          {
-            uInt bl, bd;
-            inflate_huft *tl, *td;
-
-            inflate_trees_fixed(&bl, &bd, &tl, &td);
-            s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
-            if (s->sub.decode.codes == Z_NULL)
-            {
-              r = Z_MEM_ERROR;
-              LEAVE
-            }
-            s->sub.decode.tl = Z_NULL;  /* don't try to free these */
-            s->sub.decode.td = Z_NULL;
-          }
-          DUMPBITS(3)
-          s->mode = CODES;
-          break;
-        case 2:                         /* dynamic */
-          Trace((stderr, "inflate:     dynamic codes block%s\n",
-                 s->last ? " (last)" : ""));
-          DUMPBITS(3)
-          s->mode = TABLE;
-          break;
-        case 3:                         /* illegal */
-          DUMPBITS(3)
-          s->mode = BAD;
-          z->msg = (char*)"invalid block type";
-          r = Z_DATA_ERROR;
-          LEAVE
-      }
-      break;
-    case LENS:
-      NEEDBITS(32)
-      if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
-      {
-        s->mode = BAD;
-        z->msg = (char*)"invalid stored block lengths";
-        r = Z_DATA_ERROR;
-        LEAVE
-      }
-      s->sub.left = (uInt)b & 0xffff;
-      b = k = 0;                      /* dump bits */
-      Tracev((stderr, "inflate:       stored length %u\n", s->sub.left));
-      s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
-      break;
-    case STORED:
-      if (n == 0)
-        LEAVE
-      NEEDOUT
-      t = s->sub.left;
-      if (t > n) t = n;
-      if (t > m) t = m;
-      zmemcpy(q, p, t);
-      p += t;  n -= t;
-      q += t;  m -= t;
-      if ((s->sub.left -= t) != 0)
-        break;
-      Tracev((stderr, "inflate:       stored end, %lu total out\n",
-              z->total_out + (q >= s->read ? q - s->read :
-              (s->end - s->read) + (q - s->window))));
-      s->mode = s->last ? DRY : TYPE;
-      break;
-    case TABLE:
-      NEEDBITS(14)
-      s->sub.trees.table = t = (uInt)b & 0x3fff;
-#ifndef PKZIP_BUG_WORKAROUND
-      if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
-      {
-        s->mode = BAD;
-        z->msg = (char*)"too many length or distance symbols";
-        r = Z_DATA_ERROR;
-        LEAVE
-      }
-#endif
-      t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
-      if (t < 19)
-        t = 19;
-      if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
-      {
-        r = Z_MEM_ERROR;
-        LEAVE
-      }
-      DUMPBITS(14)
-      s->sub.trees.index = 0;
-      Tracev((stderr, "inflate:       table sizes ok\n"));
-      s->mode = BTREE;
-    case BTREE:
-      while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
-      {
-        NEEDBITS(3)
-        s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
-        DUMPBITS(3)
-      }
-      while (s->sub.trees.index < 19)
-        s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
-      s->sub.trees.bb = 7;
-      t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
-                             &s->sub.trees.tb, z);
-      if (t != Z_OK)
-      {
-        r = t;
-        if (r == Z_DATA_ERROR)
-          s->mode = BAD;
-        LEAVE
-      }
-      s->sub.trees.index = 0;
-      Tracev((stderr, "inflate:       bits tree ok\n"));
-      s->mode = DTREE;
-    case DTREE:
-      while (t = s->sub.trees.table,
-             s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
-      {
-        inflate_huft *h;
-        uInt i, j, c;
-
-        t = s->sub.trees.bb;
-        NEEDBITS(t)
-        h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
-        t = h->word.what.Bits;
-        c = h->more.Base;
-        if (c < 16)
-        {
-          DUMPBITS(t)
-          s->sub.trees.blens[s->sub.trees.index++] = c;
-        }
-        else /* c == 16..18 */
-        {
-          i = c == 18 ? 7 : c - 14;
-          j = c == 18 ? 11 : 3;
-          NEEDBITS(t + i)
-          DUMPBITS(t)
-          j += (uInt)b & inflate_mask[i];
-          DUMPBITS(i)
-          i = s->sub.trees.index;
-          t = s->sub.trees.table;
-          if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
-              (c == 16 && i < 1))
-          {
-            s->mode = BAD;
-            z->msg = (char*)"invalid bit length repeat";
-            r = Z_DATA_ERROR;
-            LEAVE
-          }
-          c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
-          do {
-            s->sub.trees.blens[i++] = c;
-          } while (--j);
-          s->sub.trees.index = i;
-        }
-      }
-      inflate_trees_free(s->sub.trees.tb, z);
-      s->sub.trees.tb = Z_NULL;
-      {
-        uInt bl, bd;
-        inflate_huft *tl, *td;
-        inflate_codes_statef *c;
-
-        bl = 9;         /* must be <= 9 for lookahead assumptions */
-        bd = 6;         /* must be <= 9 for lookahead assumptions */
-        t = s->sub.trees.table;
-#ifdef DEBUG
-      inflate_hufts = 0;
-#endif
-        t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
-                                  s->sub.trees.blens, &bl, &bd, &tl, &td, z);
-        if (t != Z_OK)
-        {
-          if (t == (uInt)Z_DATA_ERROR)
-            s->mode = BAD;
-          r = t;
-          LEAVE
-        }
-        Tracev((stderr, "inflate:       trees ok, %d * %d bytes used\n",
-              inflate_hufts, sizeof(inflate_huft)));
-        if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
-        {
-          inflate_trees_free(td, z);
-          inflate_trees_free(tl, z);
-          r = Z_MEM_ERROR;
-          LEAVE
-        }
-        ZFREE(z, s->sub.trees.blens);
-        s->sub.decode.codes = c;
-        s->sub.decode.tl = tl;
-        s->sub.decode.td = td;
-      }
-      s->mode = CODES;
-    case CODES:
-      UPDATE
-      if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
-        return inflate_flush(s, z, r);
-      r = Z_OK;
-      inflate_codes_free(s->sub.decode.codes, z);
-      inflate_trees_free(s->sub.decode.td, z);
-      inflate_trees_free(s->sub.decode.tl, z);
-      LOAD
-      Tracev((stderr, "inflate:       codes end, %lu total out\n",
-              z->total_out + (q >= s->read ? q - s->read :
-              (s->end - s->read) + (q - s->window))));
-      if (!s->last)
-      {
-        s->mode = TYPE;
-        break;
-      }
-      if (k > 7)              /* return unused byte, if any */
-      {
-        Assert(k < 16, "inflate_codes grabbed too many bytes")
-        k -= 8;
-        n++;
-        p--;                    /* can always return one */
-      }
-      s->mode = DRY;
-    case DRY:
-      FLUSH
-      if (s->read != s->write)
-        LEAVE
-      s->mode = DONE;
-    case DONE:
-      r = Z_STREAM_END;
-      LEAVE
-    case BAD:
-      r = Z_DATA_ERROR;
-      LEAVE
-    default:
-      r = Z_STREAM_ERROR;
-      LEAVE
-  }
-}
-
-
-int inflate_blocks_free(s, z, c)
-inflate_blocks_statef *s;
-z_streamp z;
-uLongf *c;
-{
-  inflate_blocks_reset(s, z, c);
-  ZFREE(z, s->window);
-  ZFREE(z, s);
-  Trace((stderr, "inflate:   blocks freed\n"));
-  return Z_OK;
-}
-
-
-void inflate_set_dictionary(s, d, n)
-inflate_blocks_statef *s;
-const Bytef *d;
-uInt  n;
-{
-  zmemcpy((charf *)s->window, d, n);
-  s->read = s->write = s->window + n;
-}

+ 0 - 37
sys/src/cmd/gs/zlib/infblock.h

@@ -1,37 +0,0 @@
-/* infblock.h -- header to use infblock.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_blocks_state;
-typedef struct inflate_blocks_state FAR inflate_blocks_statef;
-
-extern inflate_blocks_statef * inflate_blocks_new OF((
-    z_streamp z,
-    check_func c,               /* check function */
-    uInt w));                   /* window size */
-
-extern int inflate_blocks OF((
-    inflate_blocks_statef *,
-    z_streamp ,
-    int));                      /* initial return code */
-
-extern void inflate_blocks_reset OF((
-    inflate_blocks_statef *,
-    z_streamp ,
-    uLongf *));                  /* check value on output */
-
-extern int inflate_blocks_free OF((
-    inflate_blocks_statef *,
-    z_streamp ,
-    uLongf *));                  /* check value on output */
-
-extern void inflate_set_dictionary OF((
-    inflate_blocks_statef *s,
-    const Bytef *d,  /* dictionary */
-    uInt  n));       /* dictionary length */

+ 0 - 247
sys/src/cmd/gs/zlib/infcodes.c

@@ -1,247 +0,0 @@
-/* infcodes.c -- process literals and length/distance pairs
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "infblock.h"
-#include "infcodes.h"
-#include "infutil.h"
-#include "inffast.h"
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-/* inflate codes private state */
-struct inflate_codes_state {
-
-  /* mode */
-  enum {        /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-      START,    /* x: set up for LEN */
-      LEN,      /* i: get length/literal/eob next */
-      LENEXT,   /* i: getting length extra (have base) */
-      DIST,     /* i: get distance next */
-      DISTEXT,  /* i: getting distance extra */
-      COPY,     /* o: copying bytes in window, waiting for space */
-      LIT,      /* o: got literal, waiting for output space */
-      WASH,     /* o: got eob, possibly still output waiting */
-      END,      /* x: got eob and all data flushed */
-      BADCODE}  /* x: got error */
-    mode;               /* current inflate_codes mode */
-
-  /* mode dependent information */
-  uInt len;
-  union {
-    struct {
-      inflate_huft *tree;       /* pointer into tree */
-      uInt need;                /* bits needed */
-    } code;             /* if LEN or DIST, where in tree */
-    uInt lit;           /* if LIT, literal */
-    struct {
-      uInt get;                 /* bits to get for extra */
-      uInt dist;                /* distance back to copy from */
-    } copy;             /* if EXT or COPY, where and how much */
-  } sub;                /* submode */
-
-  /* mode independent information */
-  Byte lbits;           /* ltree bits decoded per branch */
-  Byte dbits;           /* dtree bits decoder per branch */
-  inflate_huft *ltree;          /* literal/length/eob tree */
-  inflate_huft *dtree;          /* distance tree */
-
-};
-
-
-inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
-uInt bl, bd;
-inflate_huft *tl;
-inflate_huft *td; /* need separate declaration for Borland C++ */
-z_streamp z;
-{
-  inflate_codes_statef *c;
-
-  if ((c = (inflate_codes_statef *)
-       ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
-  {
-    c->mode = START;
-    c->lbits = (Byte)bl;
-    c->dbits = (Byte)bd;
-    c->ltree = tl;
-    c->dtree = td;
-    Tracev((stderr, "inflate:       codes new\n"));
-  }
-  return c;
-}
-
-
-int inflate_codes(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
-  uInt j;               /* temporary storage */
-  inflate_huft *t;      /* temporary pointer */
-  uInt e;               /* extra bits or operation */
-  uLong b;              /* bit buffer */
-  uInt k;               /* bits in bit buffer */
-  Bytef *p;             /* input data pointer */
-  uInt n;               /* bytes available there */
-  Bytef *q;             /* output window write pointer */
-  uInt m;               /* bytes to end of window or read pointer */
-  Bytef *f;             /* pointer to copy strings from */
-  inflate_codes_statef *c = s->sub.decode.codes;  /* codes state */
-
-  /* copy input/output information to locals (UPDATE macro restores) */
-  LOAD
-
-  /* process input and output based on current state */
-  while (1) switch (c->mode)
-  {             /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
-    case START:         /* x: set up for LEN */
-#ifndef SLOW
-      if (m >= 258 && n >= 10)
-      {
-        UPDATE
-        r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
-        LOAD
-        if (r != Z_OK)
-        {
-          c->mode = r == Z_STREAM_END ? WASH : BADCODE;
-          break;
-        }
-      }
-#endif /* !SLOW */
-      c->sub.code.need = c->lbits;
-      c->sub.code.tree = c->ltree;
-      c->mode = LEN;
-    case LEN:           /* i: get length/literal/eob next */
-      j = c->sub.code.need;
-      NEEDBITS(j)
-      t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
-      DUMPBITS(t->bits)
-      e = (uInt)(t->exop);
-      if (e == 0)               /* literal */
-      {
-        c->sub.lit = t->base;
-        Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
-                 "inflate:         literal '%c'\n" :
-                 "inflate:         literal 0x%02x\n", t->base));
-        c->mode = LIT;
-        break;
-      }
-      if (e & 16)               /* length */
-      {
-        c->sub.copy.get = e & 15;
-        c->len = t->base;
-        c->mode = LENEXT;
-        break;
-      }
-      if ((e & 64) == 0)        /* next table */
-      {
-        c->sub.code.need = e;
-        c->sub.code.tree = t->next;
-        break;
-      }
-      if (e & 32)               /* end of block */
-      {
-        Tracevv((stderr, "inflate:         end of block\n"));
-        c->mode = WASH;
-        break;
-      }
-      c->mode = BADCODE;        /* invalid code */
-      z->msg = (char*)"invalid literal/length code";
-      r = Z_DATA_ERROR;
-      LEAVE
-    case LENEXT:        /* i: getting length extra (have base) */
-      j = c->sub.copy.get;
-      NEEDBITS(j)
-      c->len += (uInt)b & inflate_mask[j];
-      DUMPBITS(j)
-      c->sub.code.need = c->dbits;
-      c->sub.code.tree = c->dtree;
-      Tracevv((stderr, "inflate:         length %u\n", c->len));
-      c->mode = DIST;
-    case DIST:          /* i: get distance next */
-      j = c->sub.code.need;
-      NEEDBITS(j)
-      t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
-      DUMPBITS(t->bits)
-      e = (uInt)(t->exop);
-      if (e & 16)               /* distance */
-      {
-        c->sub.copy.get = e & 15;
-        c->sub.copy.dist = t->base;
-        c->mode = DISTEXT;
-        break;
-      }
-      if ((e & 64) == 0)        /* next table */
-      {
-        c->sub.code.need = e;
-        c->sub.code.tree = t->next;
-        break;
-      }
-      c->mode = BADCODE;        /* invalid code */
-      z->msg = (char*)"invalid distance code";
-      r = Z_DATA_ERROR;
-      LEAVE
-    case DISTEXT:       /* i: getting distance extra */
-      j = c->sub.copy.get;
-      NEEDBITS(j)
-      c->sub.copy.dist += (uInt)b & inflate_mask[j];
-      DUMPBITS(j)
-      Tracevv((stderr, "inflate:         distance %u\n", c->sub.copy.dist));
-      c->mode = COPY;
-    case COPY:          /* o: copying bytes in window, waiting for space */
-#ifndef __TURBOC__ /* Turbo C bug for following expression */
-      f = (uInt)(q - s->window) < c->sub.copy.dist ?
-          s->end - (c->sub.copy.dist - (q - s->window)) :
-          q - c->sub.copy.dist;
-#else
-      f = q - c->sub.copy.dist;
-      if ((uInt)(q - s->window) < c->sub.copy.dist)
-        f = s->end - (c->sub.copy.dist - (uInt)(q - s->window));
-#endif
-      while (c->len)
-      {
-        NEEDOUT
-        OUTBYTE(*f++)
-        if (f == s->end)
-          f = s->window;
-        c->len--;
-      }
-      c->mode = START;
-      break;
-    case LIT:           /* o: got literal, waiting for output space */
-      NEEDOUT
-      OUTBYTE(c->sub.lit)
-      c->mode = START;
-      break;
-    case WASH:          /* o: got eob, possibly more output */
-      FLUSH
-      if (s->read != s->write)
-        LEAVE
-      c->mode = END;
-    case END:
-      r = Z_STREAM_END;
-      LEAVE
-    case BADCODE:       /* x: got error */
-      r = Z_DATA_ERROR;
-      LEAVE
-    default:
-      r = Z_STREAM_ERROR;
-      LEAVE
-  }
-}
-
-
-void inflate_codes_free(c, z)
-inflate_codes_statef *c;
-z_streamp z;
-{
-  ZFREE(z, c);
-  Tracev((stderr, "inflate:       codes free\n"));
-}

+ 0 - 27
sys/src/cmd/gs/zlib/infcodes.h

@@ -1,27 +0,0 @@
-/* infcodes.h -- header to use infcodes.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_codes_state;
-typedef struct inflate_codes_state FAR inflate_codes_statef;
-
-extern inflate_codes_statef *inflate_codes_new OF((
-    uInt, uInt,
-    inflate_huft *, inflate_huft *,
-    z_streamp ));
-
-extern int inflate_codes OF((
-    inflate_blocks_statef *,
-    z_streamp ,
-    int));
-
-extern void inflate_codes_free OF((
-    inflate_codes_statef *,
-    z_streamp ));
-

+ 0 - 87
sys/src/cmd/gs/zlib/infutil.c

@@ -1,87 +0,0 @@
-/* inflate_util.c -- data and routines common to blocks and codes
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-#include "zutil.h"
-#include "infblock.h"
-#include "inftrees.h"
-#include "infcodes.h"
-#include "infutil.h"
-
-struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-
-/* And'ing with mask[n] masks the lower n bits */
-uInt inflate_mask[17] = {
-    0x0000,
-    0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
-    0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
-};
-
-
-/* copy as much as possible from the sliding window to the output area */
-int inflate_flush(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
-  uInt n;
-  Bytef *p;
-  Bytef *q;
-
-  /* local copies of source and destination pointers */
-  p = z->next_out;
-  q = s->read;
-
-  /* compute number of bytes to copy as far as end of window */
-  n = (uInt)((q <= s->write ? s->write : s->end) - q);
-  if (n > z->avail_out) n = z->avail_out;
-  if (n && r == Z_BUF_ERROR) r = Z_OK;
-
-  /* update counters */
-  z->avail_out -= n;
-  z->total_out += n;
-
-  /* update check information */
-  if (s->checkfn != Z_NULL)
-    z->adler = s->check = (*s->checkfn)(s->check, q, n);
-
-  /* copy as far as end of window */
-  zmemcpy(p, q, n);
-  p += n;
-  q += n;
-
-  /* see if more to copy at beginning of window */
-  if (q == s->end)
-  {
-    /* wrap pointers */
-    q = s->window;
-    if (s->write == s->end)
-      s->write = s->window;
-
-    /* compute bytes to copy */
-    n = (uInt)(s->write - q);
-    if (n > z->avail_out) n = z->avail_out;
-    if (n && r == Z_BUF_ERROR) r = Z_OK;
-
-    /* update counters */
-    z->avail_out -= n;
-    z->total_out += n;
-
-    /* update check information */
-    if (s->checkfn != Z_NULL)
-      z->adler = s->check = (*s->checkfn)(s->check, q, n);
-
-    /* copy */
-    zmemcpy(p, q, n);
-    p += n;
-    q += n;
-  }
-
-  /* update pointers */
-  z->next_out = p;
-  s->read = q;
-
-  /* done */
-  return r;
-}

+ 0 - 99
sys/src/cmd/gs/zlib/infutil.h

@@ -1,99 +0,0 @@
-/* infutil.h -- types and macros common to blocks and codes
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-#ifndef _INFUTIL_H
-#define _INFUTIL_H
-
-typedef enum {
-      TYPE,     /* get type bits (3, including end bit) */
-      LENS,     /* get lengths for stored */
-      STORED,   /* processing stored block */
-      TABLE,    /* get table lengths */
-      BTREE,    /* get bit lengths tree for a dynamic block */
-      DTREE,    /* get length, distance trees for a dynamic block */
-      CODES,    /* processing fixed or dynamic block */
-      DRY,      /* output remaining window bytes */
-      DONE,     /* finished last block, done */
-      BAD}      /* got a data error--stuck here */
-inflate_block_mode;
-
-/* inflate blocks semi-private state */
-struct inflate_blocks_state {
-
-  /* mode */
-  inflate_block_mode  mode;     /* current inflate_block mode */
-
-  /* mode dependent information */
-  union {
-    uInt left;          /* if STORED, bytes left to copy */
-    struct {
-      uInt table;               /* table lengths (14 bits) */
-      uInt index;               /* index into blens (or border) */
-      uIntf *blens;             /* bit lengths of codes */
-      uInt bb;                  /* bit length tree depth */
-      inflate_huft *tb;         /* bit length decoding tree */
-    } trees;            /* if DTREE, decoding info for trees */
-    struct {
-      inflate_huft *tl;
-      inflate_huft *td;         /* trees to free */
-      inflate_codes_statef 
-         *codes;
-    } decode;           /* if CODES, current state */
-  } sub;                /* submode */
-  uInt last;            /* true if this block is the last block */
-
-  /* mode independent information */
-  uInt bitk;            /* bits in bit buffer */
-  uLong bitb;           /* bit buffer */
-  Bytef *window;        /* sliding window */
-  Bytef *end;           /* one byte after sliding window */
-  Bytef *read;          /* window read pointer */
-  Bytef *write;         /* window write pointer */
-  check_func checkfn;   /* check function */
-  uLong check;          /* check on output */
-
-};
-
-
-/* defines for inflate input/output */
-/*   update pointers and return */
-#define UPDBITS {s->bitb=b;s->bitk=k;}
-#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
-#define UPDOUT {s->write=q;}
-#define UPDATE {UPDBITS UPDIN UPDOUT}
-#define LEAVE {UPDATE return inflate_flush(s,z,r);}
-/*   get bytes and bits */
-#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
-#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
-#define NEXTBYTE (n--,*p++)
-#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-#define DUMPBITS(j) {b>>=(j);k-=(j);}
-/*   output bytes */
-#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
-#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
-#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
-#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
-#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
-#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
-/*   load local pointers */
-#define LOAD {LOADIN LOADOUT}
-
-/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
-extern uInt inflate_mask[17];
-
-/* copy as much as possible from the sliding window to the output area */
-extern int inflate_flush OF((
-    inflate_blocks_statef *,
-    z_streamp ,
-    int));
-
-struct internal_state      {int dummy;}; /* for buggy compilers */
-
-#endif

+ 0 - 46
sys/src/cmd/gs/zlib/zlib.def

@@ -1,46 +0,0 @@
-LIBRARY		"zlib"
-
-DESCRIPTION	'"""zlib data compression library"""'
-
-EXETYPE		NT
-
-SUBSYSTEM	WINDOWS
-
-STUB		'WINSTUB.EXE'
-
-VERSION		1.04
-
-CODE		 EXECUTE READ
-
-DATA		 READ WRITE
-
-HEAPSIZE	1048576,4096
-
-EXPORTS
-		zlibVersion
-		deflate
-		deflateEnd
-		inflate
-		inflateEnd
-		deflateSetDictionary
-		deflateCopy
-		deflateReset
-		deflateParams
-		inflateSetDictionary
-		inflateSync
-		inflateReset
-		compress
-		uncompress
-		gzopen
-		gzdopen
-		gzread
-		gzwrite
-		gzflush
-		gzclose
-		gzerror
-		adler32
-		crc32
-		deflateInit_
-		inflateInit_
-		deflateInit2_
-		inflateInit2_

+ 0 - 32
sys/src/cmd/gs/zlib/zlib.rc

@@ -1,32 +0,0 @@
-#include <windows.h>
-
-#define IDR_VERSION1  1
-IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1,0,4,0
-  PRODUCTVERSION 1,0,4,0
-  FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
-  FILEFLAGS	0
-  FILEOS	VOS_DOS_WINDOWS32
-  FILETYPE	VFT_DLL
-  FILESUBTYPE	0	// not used
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, char set = Windows, Multilingual
-
-    BEGIN
-      VALUE "FileDescription", "zlib data compression library\0"
-      VALUE "FileVersion",	"1.0.4\0"
-      VALUE "InternalName",	"zlib\0"
-      VALUE "OriginalFilename",	"zlib.lib\0"
-      VALUE "ProductName",	"ZLib.DLL\0"
-      VALUE "Comments",	"DLL support by Alessandro Iacopetti\0"
-      VALUE "LegalCopyright", "(C) 1995-1996 Jean-loup Gailly & Mark Adler\0"
-    END
-  END
-  BLOCK "VarFileInfo"
-  BEGIN
-    VALUE "Translation", 0x0409, 1252
-  END
-END

+ 42 - 12
sys/src/cmd/ndb/query.c

@@ -6,13 +6,25 @@
 #include <bio.h>
 #include <ndb.h>
 
+static int all, multiple;
+
 void
 usage(void)
 {
-	fprint(2, "usage: query attr value [returned attribute]\n");
+	fprint(2, "usage: query [-am] [-f ndbfile] attr value "
+		"[returned-attr [reps]]\n");
 	exits("usage");
 }
 
+/* print values of nt's attributes matching rattr */
+static void
+prmatch(Ndbtuple *nt, char *rattr)
+{
+	for(; nt; nt = nt->entry)
+		if (strcmp(nt->attr, rattr) == 0)
+			print("%s\n", nt->val);
+}
+
 void
 search(Ndb *db, char *attr, char *val, char *rattr)
 {
@@ -20,22 +32,34 @@ search(Ndb *db, char *attr, char *val, char *rattr)
 	Ndbs s;
 	Ndbtuple *t, *nt;
 
-	if(rattr){
-		p = ndbgetvalue(db, &s, attr, val, rattr, nil);
-		if(p){
+	/* first entry with a matching rattr */
+	if(rattr && !all){
+		p = ndbgetvalue(db, &s, attr, val, rattr, &t);
+		if (multiple)
+			prmatch(t, rattr);
+		else if(p)
 			print("%s\n", p);
-			free(p);
+		ndbfree(t);
+		free(p);
+		return;
+	}
+
+	/* all entries with matching rattrs */
+	if(rattr) {
+		for(t = ndbsearch(db, &s, attr, val); t != nil;
+		    t = ndbsnext(&s, attr, val)){
+			prmatch(t, rattr);
+			ndbfree(t);
 		}
 		return;
 	}
 
-	t = ndbsearch(db, &s, attr, val);
-	while(t){
+	/* all entries */
+	for(t = ndbsearch(db, &s, attr, val); t; t = ndbsnext(&s, attr, val)){
 		for(nt = t; nt; nt = nt->entry)
 			print("%s=%s ", nt->attr, nt->val);
 		print("\n");
 		ndbfree(t);
-		t = ndbsnext(&s, attr, val);
 	}
 }
 
@@ -47,6 +71,12 @@ main(int argc, char **argv)
 	Ndb *db;
 
 	ARGBEGIN{
+	case 'a':
+		all++;
+		break;
+	case 'm':
+		multiple++;
+		break;
 	case 'f':
 		dbfile = ARGF();
 		break;
@@ -56,21 +86,21 @@ main(int argc, char **argv)
 
 	switch(argc){
 	case 4:
-		reps = atoi(argv[3]);
+		reps = atoi(argv[3]);	/* wtf use is this? */
 		/* fall through */
 	case 3:
 		rattr = argv[2];
 		break;
 	case 2:
-		rattr = 0;
+		rattr = nil;
 		break;
 	default:
 		usage();
 	}
 	
 	db = ndbopen(dbfile);
-	if(db == 0){
-		fprint(2, "no db files\n");
+	if(db == nil){
+		fprint(2, "%s: no db files\n", argv0);
 		exits("no db");
 	}
 	while(reps--)

+ 10 - 3
sys/src/libauthsrv/readnvram.c

@@ -138,15 +138,22 @@ findnvram(Nvrwhere *locp)
 	cputype = getenv("cputype");
 	if(cputype == nil)
 		cputype = strdup("mips");
-	if(strcmp(cputype, "386")==0 || strcmp(cputype, "alpha")==0)
+	if(strcmp(cputype, "386")==0 || strcmp(cputype, "alpha")==0) {
+		free(cputype);
 		cputype = strdup("pc");
+	}
 
 	fd = -1;
 	safeoff = -1;
 	safelen = -1;
-	if(nvrfile != nil){
+	if(nvrfile != nil && *nvrfile != '\0'){
 		/* accept device and device!file */
 		i = gettokens(nvrfile, v, nelem(v), "!");
+		if (i < 1) {
+			i = 1;
+			v[0] = "";
+			v[1] = nil;
+		}
 		fd = open(v[0], ORDWR);
 		if (fd < 0)
 			fd = open(v[0], OREAD);
@@ -172,7 +179,6 @@ findnvram(Nvrwhere *locp)
 		}
 		free(nvroff);
 		free(nvrlen);
-		free(nvrfile);
 	}else
 		for(i=0; i<nelem(nvtab); i++){
 			if(strcmp(cputype, nvtab[i].cputype) != 0)
@@ -191,6 +197,7 @@ findnvram(Nvrwhere *locp)
 			}
 			break;
 		}
+	free(nvrfile);
 	free(cputype);
 	locp->fd = fd;
 	locp->safelen = safelen;

Some files were not shown because too many files changed in this diff