pdf2json 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. data/README.markdown +9 -0
  2. data/bin/.gitkeep +0 -0
  3. data/ext/extconf.rb +30 -0
  4. data/lib/pdf2json.rb +8 -0
  5. data/pdf2json-0.52-source/AUTHORS +24 -0
  6. data/pdf2json-0.52-source/CHANGES +11 -0
  7. data/pdf2json-0.52-source/Makefile +84 -0
  8. data/pdf2json-0.52-source/Makefile.in +84 -0
  9. data/pdf2json-0.52-source/aclocal.m4 +274 -0
  10. data/pdf2json-0.52-source/aconf-win32.h +86 -0
  11. data/pdf2json-0.52-source/aconf.h +42 -0
  12. data/pdf2json-0.52-source/aconf.h.in +41 -0
  13. data/pdf2json-0.52-source/autom4te.cache/output.0 +6908 -0
  14. data/pdf2json-0.52-source/autom4te.cache/requests +76 -0
  15. data/pdf2json-0.52-source/autom4te.cache/traces.0 +466 -0
  16. data/pdf2json-0.52-source/config.log +1259 -0
  17. data/pdf2json-0.52-source/config.status +1050 -0
  18. data/pdf2json-0.52-source/configure +6908 -0
  19. data/pdf2json-0.52-source/configure.ac +93 -0
  20. data/pdf2json-0.52-source/doc/pdffonts.1 +130 -0
  21. data/pdf2json-0.52-source/doc/pdffonts.cat +107 -0
  22. data/pdf2json-0.52-source/doc/pdffonts.hlp +117 -0
  23. data/pdf2json-0.52-source/doc/pdfimages.1 +102 -0
  24. data/pdf2json-0.52-source/doc/pdfimages.cat +92 -0
  25. data/pdf2json-0.52-source/doc/pdfimages.hlp +101 -0
  26. data/pdf2json-0.52-source/doc/pdfinfo.1 +158 -0
  27. data/pdf2json-0.52-source/doc/pdfinfo.cat +119 -0
  28. data/pdf2json-0.52-source/doc/pdfinfo.hlp +129 -0
  29. data/pdf2json-0.52-source/doc/pdftoppm.1 +115 -0
  30. data/pdf2json-0.52-source/doc/pdftoppm.cat +105 -0
  31. data/pdf2json-0.52-source/doc/pdftoppm.hlp +114 -0
  32. data/pdf2json-0.52-source/doc/pdftops.1 +229 -0
  33. data/pdf2json-0.52-source/doc/pdftops.cat +221 -0
  34. data/pdf2json-0.52-source/doc/pdftops.hlp +231 -0
  35. data/pdf2json-0.52-source/doc/pdftotext.1 +137 -0
  36. data/pdf2json-0.52-source/doc/pdftotext.cat +120 -0
  37. data/pdf2json-0.52-source/doc/pdftotext.hlp +133 -0
  38. data/pdf2json-0.52-source/doc/sample-xpdfrc +91 -0
  39. data/pdf2json-0.52-source/doc/xpdf.1 +513 -0
  40. data/pdf2json-0.52-source/doc/xpdf.cat +476 -0
  41. data/pdf2json-0.52-source/doc/xpdf.hlp +489 -0
  42. data/pdf2json-0.52-source/doc/xpdfrc.5 +480 -0
  43. data/pdf2json-0.52-source/doc/xpdfrc.cat +474 -0
  44. data/pdf2json-0.52-source/doc/xpdfrc.hlp +479 -0
  45. data/pdf2json-0.52-source/fofi/.DS_Store +0 -0
  46. data/pdf2json-0.52-source/fofi/FoFiBase.cc +156 -0
  47. data/pdf2json-0.52-source/fofi/FoFiBase.h +57 -0
  48. data/pdf2json-0.52-source/fofi/FoFiBase.o +0 -0
  49. data/pdf2json-0.52-source/fofi/FoFiEncodings.cc +994 -0
  50. data/pdf2json-0.52-source/fofi/FoFiEncodings.h +36 -0
  51. data/pdf2json-0.52-source/fofi/FoFiEncodings.o +0 -0
  52. data/pdf2json-0.52-source/fofi/FoFiTrueType.cc +2027 -0
  53. data/pdf2json-0.52-source/fofi/FoFiTrueType.h +174 -0
  54. data/pdf2json-0.52-source/fofi/FoFiTrueType.o +0 -0
  55. data/pdf2json-0.52-source/fofi/FoFiType1.cc +252 -0
  56. data/pdf2json-0.52-source/fofi/FoFiType1.h +59 -0
  57. data/pdf2json-0.52-source/fofi/FoFiType1.o +0 -0
  58. data/pdf2json-0.52-source/fofi/FoFiType1C.cc +2603 -0
  59. data/pdf2json-0.52-source/fofi/FoFiType1C.h +233 -0
  60. data/pdf2json-0.52-source/fofi/FoFiType1C.o +0 -0
  61. data/pdf2json-0.52-source/fofi/Makefile +70 -0
  62. data/pdf2json-0.52-source/fofi/Makefile.dep +0 -0
  63. data/pdf2json-0.52-source/fofi/Makefile.in +70 -0
  64. data/pdf2json-0.52-source/fofi/libfofi.a +0 -0
  65. data/pdf2json-0.52-source/fofi/vms_make.com +0 -0
  66. data/pdf2json-0.52-source/freetype.win32/.DS_Store +0 -0
  67. data/pdf2json-0.52-source/freetype.win32/include/.DS_Store +0 -0
  68. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftconfig.h +528 -0
  69. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftheader.h +780 -0
  70. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftmodule.h +32 -0
  71. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftoption.h +733 -0
  72. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftstdlib.h +173 -0
  73. data/pdf2json-0.52-source/freetype.win32/include/freetype/freetype.h +3919 -0
  74. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftadvanc.h +179 -0
  75. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbbox.h +94 -0
  76. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbdf.h +209 -0
  77. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbitmap.h +227 -0
  78. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcache.h +1128 -0
  79. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftchapters.h +103 -0
  80. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcid.h +166 -0
  81. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrdef.h +244 -0
  82. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrors.h +206 -0
  83. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgasp.h +120 -0
  84. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftglyph.h +613 -0
  85. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgxval.h +358 -0
  86. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgzip.h +102 -0
  87. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftimage.h +1313 -0
  88. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftincrem.h +353 -0
  89. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlcdfil.h +213 -0
  90. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlist.h +277 -0
  91. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlzw.h +99 -0
  92. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmac.h +274 -0
  93. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmm.h +378 -0
  94. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmodapi.h +483 -0
  95. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmoderr.h +155 -0
  96. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftotval.h +203 -0
  97. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftoutln.h +537 -0
  98. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftpfr.h +172 -0
  99. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftrender.h +230 -0
  100. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsizes.h +159 -0
  101. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsnames.h +200 -0
  102. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftstroke.h +716 -0
  103. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsynth.h +80 -0
  104. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsystem.h +347 -0
  105. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttrigon.h +350 -0
  106. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttypes.h +588 -0
  107. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftwinfnt.h +274 -0
  108. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftxf86.h +83 -0
  109. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/autohint.h +231 -0
  110. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftcalc.h +179 -0
  111. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdebug.h +250 -0
  112. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdriver.h +422 -0
  113. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftgloadr.h +168 -0
  114. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftmemory.h +380 -0
  115. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftobjs.h +1428 -0
  116. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftpic.h +67 -0
  117. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftrfork.h +196 -0
  118. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftserv.h +620 -0
  119. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftstream.h +539 -0
  120. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/fttrace.h +139 -0
  121. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftvalid.h +150 -0
  122. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/internal.h +51 -0
  123. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pcftypes.h +56 -0
  124. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/psaux.h +873 -0
  125. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pshints.h +712 -0
  126. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svbdf.h +77 -0
  127. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svcid.h +83 -0
  128. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgldict.h +82 -0
  129. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgxval.h +72 -0
  130. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svkern.h +51 -0
  131. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svmm.h +104 -0
  132. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svotval.h +55 -0
  133. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpfr.h +66 -0
  134. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpostnm.h +79 -0
  135. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpscmap.h +164 -0
  136. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpsinfo.h +92 -0
  137. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svsfnt.h +102 -0
  138. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttcmap.h +106 -0
  139. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svtteng.h +53 -0
  140. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttglyf.h +67 -0
  141. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svwinfnt.h +50 -0
  142. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svxf86nm.h +55 -0
  143. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/sfnt.h +897 -0
  144. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/t1types.h +270 -0
  145. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/tttypes.h +1543 -0
  146. data/pdf2json-0.52-source/freetype.win32/include/freetype/t1tables.h +504 -0
  147. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttnameid.h +1247 -0
  148. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttables.h +759 -0
  149. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttags.h +107 -0
  150. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttunpat.h +59 -0
  151. data/pdf2json-0.52-source/freetype.win32/include/ft2build.h +39 -0
  152. data/pdf2json-0.52-source/freetype.win32/lib/freetype_a.lib +0 -0
  153. data/pdf2json-0.52-source/goo/.DS_Store +0 -0
  154. data/pdf2json-0.52-source/goo/FixedPoint.cc +118 -0
  155. data/pdf2json-0.52-source/goo/FixedPoint.h +155 -0
  156. data/pdf2json-0.52-source/goo/FixedPoint.o +0 -0
  157. data/pdf2json-0.52-source/goo/GHash.cc +380 -0
  158. data/pdf2json-0.52-source/goo/GHash.h +78 -0
  159. data/pdf2json-0.52-source/goo/GHash.o +0 -0
  160. data/pdf2json-0.52-source/goo/GList.cc +97 -0
  161. data/pdf2json-0.52-source/goo/GList.h +96 -0
  162. data/pdf2json-0.52-source/goo/GList.o +0 -0
  163. data/pdf2json-0.52-source/goo/GMutex.h +49 -0
  164. data/pdf2json-0.52-source/goo/GString.cc +724 -0
  165. data/pdf2json-0.52-source/goo/GString.cc.fixed +718 -0
  166. data/pdf2json-0.52-source/goo/GString.h +136 -0
  167. data/pdf2json-0.52-source/goo/GString.o +0 -0
  168. data/pdf2json-0.52-source/goo/ImgWriter.o +0 -0
  169. data/pdf2json-0.52-source/goo/JpegWriter.o +0 -0
  170. data/pdf2json-0.52-source/goo/Makefile +72 -0
  171. data/pdf2json-0.52-source/goo/Makefile.dep +0 -0
  172. data/pdf2json-0.52-source/goo/Makefile.in +72 -0
  173. data/pdf2json-0.52-source/goo/PNGWriter.o +0 -0
  174. data/pdf2json-0.52-source/goo/gfile.cc +731 -0
  175. data/pdf2json-0.52-source/goo/gfile.h +138 -0
  176. data/pdf2json-0.52-source/goo/gfile.o +0 -0
  177. data/pdf2json-0.52-source/goo/gmem.cc +264 -0
  178. data/pdf2json-0.52-source/goo/gmem.h +79 -0
  179. data/pdf2json-0.52-source/goo/gmem.o +0 -0
  180. data/pdf2json-0.52-source/goo/gmempp.cc +32 -0
  181. data/pdf2json-0.52-source/goo/gmempp.o +0 -0
  182. data/pdf2json-0.52-source/goo/gtypes.h +29 -0
  183. data/pdf2json-0.52-source/goo/libGoo.a +0 -0
  184. data/pdf2json-0.52-source/goo/parseargs.c +190 -0
  185. data/pdf2json-0.52-source/goo/parseargs.h +71 -0
  186. data/pdf2json-0.52-source/goo/parseargs.o +0 -0
  187. data/pdf2json-0.52-source/goo/vms_directory.c +214 -0
  188. data/pdf2json-0.52-source/goo/vms_dirent.h +67 -0
  189. data/pdf2json-0.52-source/goo/vms_make.com +82 -0
  190. data/pdf2json-0.52-source/goo/vms_sys_dirent.h +54 -0
  191. data/pdf2json-0.52-source/goo/vms_unix_time.h +102 -0
  192. data/pdf2json-0.52-source/goo/vms_unix_times.c +42 -0
  193. data/pdf2json-0.52-source/goo/vms_unlink.c +22 -0
  194. data/pdf2json-0.52-source/ms_make.bat +199 -0
  195. data/pdf2json-0.52-source/splash/.DS_Store +0 -0
  196. data/pdf2json-0.52-source/splash/Makefile +103 -0
  197. data/pdf2json-0.52-source/splash/Makefile.dep +0 -0
  198. data/pdf2json-0.52-source/splash/Makefile.in +103 -0
  199. data/pdf2json-0.52-source/splash/Splash.cc +3310 -0
  200. data/pdf2json-0.52-source/splash/Splash.h +293 -0
  201. data/pdf2json-0.52-source/splash/Splash.o +0 -0
  202. data/pdf2json-0.52-source/splash/SplashBitmap.cc +188 -0
  203. data/pdf2json-0.52-source/splash/SplashBitmap.h +64 -0
  204. data/pdf2json-0.52-source/splash/SplashBitmap.o +0 -0
  205. data/pdf2json-0.52-source/splash/SplashClip.cc +382 -0
  206. data/pdf2json-0.52-source/splash/SplashClip.h +107 -0
  207. data/pdf2json-0.52-source/splash/SplashClip.o +0 -0
  208. data/pdf2json-0.52-source/splash/SplashErrorCodes.h +32 -0
  209. data/pdf2json-0.52-source/splash/SplashFTFont.cc +357 -0
  210. data/pdf2json-0.52-source/splash/SplashFTFont.h +58 -0
  211. data/pdf2json-0.52-source/splash/SplashFTFont.o +0 -0
  212. data/pdf2json-0.52-source/splash/SplashFTFontEngine.cc +179 -0
  213. data/pdf2json-0.52-source/splash/SplashFTFontEngine.h +65 -0
  214. data/pdf2json-0.52-source/splash/SplashFTFontEngine.o +0 -0
  215. data/pdf2json-0.52-source/splash/SplashFTFontFile.cc +114 -0
  216. data/pdf2json-0.52-source/splash/SplashFTFontFile.h +73 -0
  217. data/pdf2json-0.52-source/splash/SplashFTFontFile.o +0 -0
  218. data/pdf2json-0.52-source/splash/SplashFont.cc +176 -0
  219. data/pdf2json-0.52-source/splash/SplashFont.h +104 -0
  220. data/pdf2json-0.52-source/splash/SplashFont.o +0 -0
  221. data/pdf2json-0.52-source/splash/SplashFontEngine.cc +317 -0
  222. data/pdf2json-0.52-source/splash/SplashFontEngine.h +91 -0
  223. data/pdf2json-0.52-source/splash/SplashFontEngine.o +0 -0
  224. data/pdf2json-0.52-source/splash/SplashFontFile.cc +55 -0
  225. data/pdf2json-0.52-source/splash/SplashFontFile.h +60 -0
  226. data/pdf2json-0.52-source/splash/SplashFontFile.o +0 -0
  227. data/pdf2json-0.52-source/splash/SplashFontFileID.cc +23 -0
  228. data/pdf2json-0.52-source/splash/SplashFontFileID.h +30 -0
  229. data/pdf2json-0.52-source/splash/SplashFontFileID.o +0 -0
  230. data/pdf2json-0.52-source/splash/SplashGlyphBitmap.h +26 -0
  231. data/pdf2json-0.52-source/splash/SplashMath.h +89 -0
  232. data/pdf2json-0.52-source/splash/SplashPath.cc +184 -0
  233. data/pdf2json-0.52-source/splash/SplashPath.h +121 -0
  234. data/pdf2json-0.52-source/splash/SplashPath.o +0 -0
  235. data/pdf2json-0.52-source/splash/SplashPattern.cc +40 -0
  236. data/pdf2json-0.52-source/splash/SplashPattern.h +65 -0
  237. data/pdf2json-0.52-source/splash/SplashPattern.o +0 -0
  238. data/pdf2json-0.52-source/splash/SplashScreen.cc +383 -0
  239. data/pdf2json-0.52-source/splash/SplashScreen.h +56 -0
  240. data/pdf2json-0.52-source/splash/SplashScreen.o +0 -0
  241. data/pdf2json-0.52-source/splash/SplashState.cc +165 -0
  242. data/pdf2json-0.52-source/splash/SplashState.h +103 -0
  243. data/pdf2json-0.52-source/splash/SplashState.o +0 -0
  244. data/pdf2json-0.52-source/splash/SplashT1Font.cc +287 -0
  245. data/pdf2json-0.52-source/splash/SplashT1Font.h +57 -0
  246. data/pdf2json-0.52-source/splash/SplashT1Font.o +0 -0
  247. data/pdf2json-0.52-source/splash/SplashT1FontEngine.cc +124 -0
  248. data/pdf2json-0.52-source/splash/SplashT1FontEngine.h +53 -0
  249. data/pdf2json-0.52-source/splash/SplashT1FontEngine.o +0 -0
  250. data/pdf2json-0.52-source/splash/SplashT1FontFile.cc +97 -0
  251. data/pdf2json-0.52-source/splash/SplashT1FontFile.h +58 -0
  252. data/pdf2json-0.52-source/splash/SplashT1FontFile.o +0 -0
  253. data/pdf2json-0.52-source/splash/SplashTypes.h +132 -0
  254. data/pdf2json-0.52-source/splash/SplashXPath.cc +438 -0
  255. data/pdf2json-0.52-source/splash/SplashXPath.h +100 -0
  256. data/pdf2json-0.52-source/splash/SplashXPath.o +0 -0
  257. data/pdf2json-0.52-source/splash/SplashXPathScanner.cc +428 -0
  258. data/pdf2json-0.52-source/splash/SplashXPathScanner.h +87 -0
  259. data/pdf2json-0.52-source/splash/SplashXPathScanner.o +0 -0
  260. data/pdf2json-0.52-source/splash/libsplash.a +0 -0
  261. data/pdf2json-0.52-source/splash/vms_make.com +0 -0
  262. data/pdf2json-0.52-source/src/.DS_Store +0 -0
  263. data/pdf2json-0.52-source/src/GVector.h +101 -0
  264. data/pdf2json-0.52-source/src/ImgOutputDev.cc +1243 -0
  265. data/pdf2json-0.52-source/src/ImgOutputDev.h +307 -0
  266. data/pdf2json-0.52-source/src/ImgOutputDev.o +0 -0
  267. data/pdf2json-0.52-source/src/Makefile +68 -0
  268. data/pdf2json-0.52-source/src/Makefile.in +68 -0
  269. data/pdf2json-0.52-source/src/XmlFonts.cc +367 -0
  270. data/pdf2json-0.52-source/src/XmlFonts.h +91 -0
  271. data/pdf2json-0.52-source/src/XmlFonts.o +0 -0
  272. data/pdf2json-0.52-source/src/XmlLinks.cc +101 -0
  273. data/pdf2json-0.52-source/src/XmlLinks.h +54 -0
  274. data/pdf2json-0.52-source/src/XmlLinks.o +0 -0
  275. data/pdf2json-0.52-source/src/pdf2json +0 -0
  276. data/pdf2json-0.52-source/src/pdf2json.cc +343 -0
  277. data/pdf2json-0.52-source/src/pdf2json.o +0 -0
  278. data/pdf2json-0.52-source/src/pdf2xml.dtd +22 -0
  279. data/pdf2json-0.52-source/src/pdf2xmljson.dtd +9 -0
  280. data/pdf2json-0.52-source/xpdf/.DS_Store +0 -0
  281. data/pdf2json-0.52-source/xpdf/Annot.cc +1556 -0
  282. data/pdf2json-0.52-source/xpdf/Annot.h +142 -0
  283. data/pdf2json-0.52-source/xpdf/Annot.o +0 -0
  284. data/pdf2json-0.52-source/xpdf/Array.cc +73 -0
  285. data/pdf2json-0.52-source/xpdf/Array.h +58 -0
  286. data/pdf2json-0.52-source/xpdf/Array.o +0 -0
  287. data/pdf2json-0.52-source/xpdf/BuiltinFont.cc +65 -0
  288. data/pdf2json-0.52-source/xpdf/BuiltinFont.h +57 -0
  289. data/pdf2json-0.52-source/xpdf/BuiltinFont.o +0 -0
  290. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.cc +4284 -0
  291. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.h +23 -0
  292. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.o +0 -0
  293. data/pdf2json-0.52-source/xpdf/CMap.cc +408 -0
  294. data/pdf2json-0.52-source/xpdf/CMap.h +102 -0
  295. data/pdf2json-0.52-source/xpdf/CMap.o +0 -0
  296. data/pdf2json-0.52-source/xpdf/Catalog.cc +374 -0
  297. data/pdf2json-0.52-source/xpdf/Catalog.h +97 -0
  298. data/pdf2json-0.52-source/xpdf/Catalog.o +0 -0
  299. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.cc +540 -0
  300. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.h +117 -0
  301. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.o +0 -0
  302. data/pdf2json-0.52-source/xpdf/CharTypes.h +24 -0
  303. data/pdf2json-0.52-source/xpdf/CompactFontTables.h +464 -0
  304. data/pdf2json-0.52-source/xpdf/CoreOutputDev.cc +61 -0
  305. data/pdf2json-0.52-source/xpdf/CoreOutputDev.h +61 -0
  306. data/pdf2json-0.52-source/xpdf/Decrypt.cc +776 -0
  307. data/pdf2json-0.52-source/xpdf/Decrypt.h +95 -0
  308. data/pdf2json-0.52-source/xpdf/Decrypt.o +0 -0
  309. data/pdf2json-0.52-source/xpdf/Dict.cc +95 -0
  310. data/pdf2json-0.52-source/xpdf/Dict.h +77 -0
  311. data/pdf2json-0.52-source/xpdf/Dict.o +0 -0
  312. data/pdf2json-0.52-source/xpdf/Error.cc +38 -0
  313. data/pdf2json-0.52-source/xpdf/Error.h +23 -0
  314. data/pdf2json-0.52-source/xpdf/Error.o +0 -0
  315. data/pdf2json-0.52-source/xpdf/ErrorCodes.h +36 -0
  316. data/pdf2json-0.52-source/xpdf/FontEncodingTables.cc +1824 -0
  317. data/pdf2json-0.52-source/xpdf/FontEncodingTables.h +20 -0
  318. data/pdf2json-0.52-source/xpdf/FontEncodingTables.o +0 -0
  319. data/pdf2json-0.52-source/xpdf/Function.cc +1573 -0
  320. data/pdf2json-0.52-source/xpdf/Function.h +229 -0
  321. data/pdf2json-0.52-source/xpdf/Function.o +0 -0
  322. data/pdf2json-0.52-source/xpdf/Gfx.cc +4187 -0
  323. data/pdf2json-0.52-source/xpdf/Gfx.h +312 -0
  324. data/pdf2json-0.52-source/xpdf/Gfx.o +0 -0
  325. data/pdf2json-0.52-source/xpdf/GfxFont.cc +1568 -0
  326. data/pdf2json-0.52-source/xpdf/GfxFont.h +320 -0
  327. data/pdf2json-0.52-source/xpdf/GfxFont.o +0 -0
  328. data/pdf2json-0.52-source/xpdf/GfxState.cc +4137 -0
  329. data/pdf2json-0.52-source/xpdf/GfxState.h +1244 -0
  330. data/pdf2json-0.52-source/xpdf/GfxState.o +0 -0
  331. data/pdf2json-0.52-source/xpdf/GlobalParams.cc +2924 -0
  332. data/pdf2json-0.52-source/xpdf/GlobalParams.cc.old +2908 -0
  333. data/pdf2json-0.52-source/xpdf/GlobalParams.h +466 -0
  334. data/pdf2json-0.52-source/xpdf/GlobalParams.h.old +463 -0
  335. data/pdf2json-0.52-source/xpdf/GlobalParams.o +0 -0
  336. data/pdf2json-0.52-source/xpdf/ImageOutputDev.cc +195 -0
  337. data/pdf2json-0.52-source/xpdf/ImageOutputDev.h +76 -0
  338. data/pdf2json-0.52-source/xpdf/ImageOutputDev.o +0 -0
  339. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.cc +322 -0
  340. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.h +109 -0
  341. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.o +0 -0
  342. data/pdf2json-0.52-source/xpdf/JBIG2Stream.cc +3413 -0
  343. data/pdf2json-0.52-source/xpdf/JBIG2Stream.h +145 -0
  344. data/pdf2json-0.52-source/xpdf/JBIG2Stream.o +0 -0
  345. data/pdf2json-0.52-source/xpdf/JPXStream.cc +3144 -0
  346. data/pdf2json-0.52-source/xpdf/JPXStream.h +351 -0
  347. data/pdf2json-0.52-source/xpdf/JPXStream.o +0 -0
  348. data/pdf2json-0.52-source/xpdf/Lexer.cc +485 -0
  349. data/pdf2json-0.52-source/xpdf/Lexer.h +80 -0
  350. data/pdf2json-0.52-source/xpdf/Lexer.o +0 -0
  351. data/pdf2json-0.52-source/xpdf/Link.cc +806 -0
  352. data/pdf2json-0.52-source/xpdf/Link.cc.old +784 -0
  353. data/pdf2json-0.52-source/xpdf/Link.h +415 -0
  354. data/pdf2json-0.52-source/xpdf/Link.h.old +369 -0
  355. data/pdf2json-0.52-source/xpdf/Link.o +0 -0
  356. data/pdf2json-0.52-source/xpdf/Makefile +232 -0
  357. data/pdf2json-0.52-source/xpdf/Makefile.dep +0 -0
  358. data/pdf2json-0.52-source/xpdf/Makefile.in +232 -0
  359. data/pdf2json-0.52-source/xpdf/NameToCharCode.cc +116 -0
  360. data/pdf2json-0.52-source/xpdf/NameToCharCode.h +42 -0
  361. data/pdf2json-0.52-source/xpdf/NameToCharCode.o +0 -0
  362. data/pdf2json-0.52-source/xpdf/NameToUnicodeTable.h +1097 -0
  363. data/pdf2json-0.52-source/xpdf/Object.cc +231 -0
  364. data/pdf2json-0.52-source/xpdf/Object.h +303 -0
  365. data/pdf2json-0.52-source/xpdf/Object.o +0 -0
  366. data/pdf2json-0.52-source/xpdf/Outline.cc +151 -0
  367. data/pdf2json-0.52-source/xpdf/Outline.h +76 -0
  368. data/pdf2json-0.52-source/xpdf/Outline.o +0 -0
  369. data/pdf2json-0.52-source/xpdf/OutputDev.cc +131 -0
  370. data/pdf2json-0.52-source/xpdf/OutputDev.h +253 -0
  371. data/pdf2json-0.52-source/xpdf/OutputDev.o +0 -0
  372. data/pdf2json-0.52-source/xpdf/PDFCore.cc +2044 -0
  373. data/pdf2json-0.52-source/xpdf/PDFCore.h +321 -0
  374. data/pdf2json-0.52-source/xpdf/PDFDoc.cc +404 -0
  375. data/pdf2json-0.52-source/xpdf/PDFDoc.h +183 -0
  376. data/pdf2json-0.52-source/xpdf/PDFDoc.o +0 -0
  377. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.cc +44 -0
  378. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.h +16 -0
  379. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.o +0 -0
  380. data/pdf2json-0.52-source/xpdf/PSOutputDev.cc +6224 -0
  381. data/pdf2json-0.52-source/xpdf/PSOutputDev.h +395 -0
  382. data/pdf2json-0.52-source/xpdf/PSOutputDev.o +0 -0
  383. data/pdf2json-0.52-source/xpdf/PSTokenizer.cc +135 -0
  384. data/pdf2json-0.52-source/xpdf/PSTokenizer.h +41 -0
  385. data/pdf2json-0.52-source/xpdf/PSTokenizer.o +0 -0
  386. data/pdf2json-0.52-source/xpdf/Page.cc +454 -0
  387. data/pdf2json-0.52-source/xpdf/Page.h +187 -0
  388. data/pdf2json-0.52-source/xpdf/Page.o +0 -0
  389. data/pdf2json-0.52-source/xpdf/Parser.cc +227 -0
  390. data/pdf2json-0.52-source/xpdf/Parser.h +59 -0
  391. data/pdf2json-0.52-source/xpdf/Parser.o +0 -0
  392. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.cc +257 -0
  393. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.h +130 -0
  394. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.o +0 -0
  395. data/pdf2json-0.52-source/xpdf/SecurityHandler.cc +390 -0
  396. data/pdf2json-0.52-source/xpdf/SecurityHandler.h +160 -0
  397. data/pdf2json-0.52-source/xpdf/SecurityHandler.o +0 -0
  398. data/pdf2json-0.52-source/xpdf/SplashOutputDev.cc +2845 -0
  399. data/pdf2json-0.52-source/xpdf/SplashOutputDev.h +247 -0
  400. data/pdf2json-0.52-source/xpdf/SplashOutputDev.o +0 -0
  401. data/pdf2json-0.52-source/xpdf/Stream-CCITT.h +459 -0
  402. data/pdf2json-0.52-source/xpdf/Stream.cc +4627 -0
  403. data/pdf2json-0.52-source/xpdf/Stream.h +858 -0
  404. data/pdf2json-0.52-source/xpdf/Stream.o +0 -0
  405. data/pdf2json-0.52-source/xpdf/TextOutputDev.cc +4090 -0
  406. data/pdf2json-0.52-source/xpdf/TextOutputDev.h +661 -0
  407. data/pdf2json-0.52-source/xpdf/TextOutputDev.o +0 -0
  408. data/pdf2json-0.52-source/xpdf/UTF8.h +56 -0
  409. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc +302 -0
  410. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc.old +293 -0
  411. data/pdf2json-0.52-source/xpdf/UnicodeMap.h +135 -0
  412. data/pdf2json-0.52-source/xpdf/UnicodeMap.h.old +123 -0
  413. data/pdf2json-0.52-source/xpdf/UnicodeMap.o +0 -0
  414. data/pdf2json-0.52-source/xpdf/UnicodeMapTables.h +361 -0
  415. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.cc +949 -0
  416. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.h +20 -0
  417. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.o +0 -0
  418. data/pdf2json-0.52-source/xpdf/XPDFApp.cc +447 -0
  419. data/pdf2json-0.52-source/xpdf/XPDFApp.h +114 -0
  420. data/pdf2json-0.52-source/xpdf/XPDFCore.cc +1655 -0
  421. data/pdf2json-0.52-source/xpdf/XPDFCore.h +251 -0
  422. data/pdf2json-0.52-source/xpdf/XPDFTree.cc +931 -0
  423. data/pdf2json-0.52-source/xpdf/XPDFTree.h +45 -0
  424. data/pdf2json-0.52-source/xpdf/XPDFTreeP.h +87 -0
  425. data/pdf2json-0.52-source/xpdf/XPDFViewer.cc +3488 -0
  426. data/pdf2json-0.52-source/xpdf/XPDFViewer.h +352 -0
  427. data/pdf2json-0.52-source/xpdf/XRef.cc +896 -0
  428. data/pdf2json-0.52-source/xpdf/XRef.h +133 -0
  429. data/pdf2json-0.52-source/xpdf/XRef.o +0 -0
  430. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.cc +262 -0
  431. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.h +341 -0
  432. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.o +0 -0
  433. data/pdf2json-0.52-source/xpdf/about-text.h +48 -0
  434. data/pdf2json-0.52-source/xpdf/about.xbm +6 -0
  435. data/pdf2json-0.52-source/xpdf/backArrow.xbm +6 -0
  436. data/pdf2json-0.52-source/xpdf/backArrowDis.xbm +6 -0
  437. data/pdf2json-0.52-source/xpdf/config.h +112 -0
  438. data/pdf2json-0.52-source/xpdf/dblLeftArrow.xbm +6 -0
  439. data/pdf2json-0.52-source/xpdf/dblLeftArrowDis.xbm +6 -0
  440. data/pdf2json-0.52-source/xpdf/dblRightArrow.xbm +6 -0
  441. data/pdf2json-0.52-source/xpdf/dblRightArrowDis.xbm +6 -0
  442. data/pdf2json-0.52-source/xpdf/find.xbm +6 -0
  443. data/pdf2json-0.52-source/xpdf/findDis.xbm +6 -0
  444. data/pdf2json-0.52-source/xpdf/forwardArrow.xbm +6 -0
  445. data/pdf2json-0.52-source/xpdf/forwardArrowDis.xbm +6 -0
  446. data/pdf2json-0.52-source/xpdf/leftArrow.xbm +5 -0
  447. data/pdf2json-0.52-source/xpdf/leftArrowDis.xbm +5 -0
  448. data/pdf2json-0.52-source/xpdf/libXpdf.a +0 -0
  449. data/pdf2json-0.52-source/xpdf/pdffonts +0 -0
  450. data/pdf2json-0.52-source/xpdf/pdffonts.cc +298 -0
  451. data/pdf2json-0.52-source/xpdf/pdffonts.o +0 -0
  452. data/pdf2json-0.52-source/xpdf/pdfimages +0 -0
  453. data/pdf2json-0.52-source/xpdf/pdfimages.cc +155 -0
  454. data/pdf2json-0.52-source/xpdf/pdfimages.o +0 -0
  455. data/pdf2json-0.52-source/xpdf/pdfinfo +0 -0
  456. data/pdf2json-0.52-source/xpdf/pdfinfo.cc +387 -0
  457. data/pdf2json-0.52-source/xpdf/pdfinfo.o +0 -0
  458. data/pdf2json-0.52-source/xpdf/pdftoppm.cc +203 -0
  459. data/pdf2json-0.52-source/xpdf/pdftops +0 -0
  460. data/pdf2json-0.52-source/xpdf/pdftops.cc +344 -0
  461. data/pdf2json-0.52-source/xpdf/pdftops.o +0 -0
  462. data/pdf2json-0.52-source/xpdf/pdftotext +0 -0
  463. data/pdf2json-0.52-source/xpdf/pdftotext.cc +333 -0
  464. data/pdf2json-0.52-source/xpdf/pdftotext.o +0 -0
  465. data/pdf2json-0.52-source/xpdf/print.xbm +6 -0
  466. data/pdf2json-0.52-source/xpdf/printDis.xbm +6 -0
  467. data/pdf2json-0.52-source/xpdf/rightArrow.xbm +5 -0
  468. data/pdf2json-0.52-source/xpdf/rightArrowDis.xbm +5 -0
  469. data/pdf2json-0.52-source/xpdf/vms_make.com +129 -0
  470. data/pdf2json-0.52-source/xpdf/xpdf.cc +344 -0
  471. data/pdf2json-0.52-source/xpdf/xpdfIcon.xpm +62 -0
  472. data/pdf2json.gemspec +29 -0
  473. metadata +518 -0
@@ -0,0 +1,136 @@
1
+ //========================================================================
2
+ //
3
+ // GString.h
4
+ //
5
+ // Simple variable-length string type.
6
+ //
7
+ // Copyright 1996-2003 Glyph & Cog, LLC
8
+ //
9
+ //========================================================================
10
+
11
+ #ifndef GSTRING_H
12
+ #define GSTRING_H
13
+
14
+ #include <aconf.h>
15
+
16
+ #ifdef USE_GCC_PRAGMAS
17
+ #pragma interface
18
+ #endif
19
+
20
+ #include <stdarg.h>
21
+ #include "gtypes.h"
22
+
23
+ class GString {
24
+ public:
25
+
26
+ // Create an empty string.
27
+ GString();
28
+
29
+ // Create a string from a C string.
30
+ GString(const char *sA);
31
+
32
+ // Create a string from <lengthA> chars at <sA>. This string
33
+ // can contain null characters.
34
+ GString(const char *sA, int lengthA);
35
+
36
+ // Create a string from <lengthA> chars at <idx> in <str>.
37
+ GString(GString *str, int idx, int lengthA);
38
+
39
+ // Copy a string.
40
+ GString(GString *str);
41
+ GString *copy() { return new GString(this); }
42
+
43
+ // Concatenate two strings.
44
+ GString(GString *str1, GString *str2);
45
+
46
+ // Convert an integer to a string.
47
+ static GString *fromInt(int x);
48
+
49
+ // Create a formatted string. Similar to printf, but without the
50
+ // string overflow issues. Formatting elements consist of:
51
+ // {<arg>:[<width>][.<precision>]<type>}
52
+ // where:
53
+ // - <arg> is the argument number (arg 0 is the first argument
54
+ // following the format string) -- NB: args must be first used in
55
+ // order; they can be reused in any order
56
+ // - <width> is the field width -- negative to reverse the alignment;
57
+ // starting with a leading zero to zero-fill (for integers)
58
+ // - <precision> is the number of digits to the right of the decimal
59
+ // point (for floating point numbers)
60
+ // - <type> is one of:
61
+ // d, x, o, b -- int in decimal, hex, octal, binary
62
+ // ud, ux, uo, ub -- unsigned int
63
+ // ld, lx, lo, lb, uld, ulx, ulo, ulb -- long, unsigned long
64
+ // f, g -- double
65
+ // c -- char
66
+ // s -- string (char *)
67
+ // t -- GString *
68
+ // w -- blank space; arg determines width
69
+ // To get literal curly braces, use {{ or }}.
70
+ static GString *format(char *fmt, ...);
71
+ static GString *formatv(char *fmt, va_list argList);
72
+
73
+ // Destructor.
74
+ ~GString();
75
+
76
+ // Get length.
77
+ int getLength() { return length; }
78
+
79
+ // Get C string.
80
+ char *getCString() { return s; }
81
+
82
+ // Get <i>th character.
83
+ char getChar(int i) { return s[i]; }
84
+
85
+ // Change <i>th character.
86
+ void setChar(int i, char c) { s[i] = c; }
87
+
88
+ // Clear string to zero length.
89
+ GString *clear();
90
+
91
+ // Append a character or string.
92
+ GString *append(char c);
93
+ GString *append(GString *str);
94
+ GString *append(const char *str);
95
+ GString *append(const char *str, int lengthA);
96
+
97
+ // Append a formatted string.
98
+ GString *appendf(char *fmt, ...);
99
+ GString *appendfv(char *fmt, va_list argList);
100
+
101
+ // Insert a character or string.
102
+ GString *insert(int i, char c);
103
+ GString *insert(int i, GString *str);
104
+ GString *insert(int i, const char *str);
105
+ GString *insert(int i, const char *str, int lengthA);
106
+
107
+ // Delete a character or range of characters.
108
+ GString *del(int i, int n = 1);
109
+
110
+ // Convert string to all-upper/all-lower case.
111
+ GString *upperCase();
112
+ GString *lowerCase();
113
+
114
+ // Compare two strings: -1:< 0:= +1:>
115
+ int cmp(GString *str);
116
+ int cmpN(GString *str, int n);
117
+ int cmp(const char *sA);
118
+ int cmpN(const char *sA, int n);
119
+
120
+ private:
121
+
122
+ int length;
123
+ char *s;
124
+
125
+ void resize(int length1);
126
+ static void formatInt(long x, char *buf, int bufSize,
127
+ GBool zeroFill, int width, int base,
128
+ char **p, int *len);
129
+ static void formatUInt(Gulong x, char *buf, int bufSize,
130
+ GBool zeroFill, int width, int base,
131
+ char **p, int *len);
132
+ static void formatDouble(double x, char *buf, int bufSize, int prec,
133
+ GBool trim, char **p, int *len);
134
+ };
135
+
136
+ #endif
Binary file
@@ -0,0 +1,72 @@
1
+ #========================================================================
2
+ #
3
+ # Goo library Makefile
4
+ #
5
+ # Copyright 1996-2003 Glyph & Cog, LLC
6
+ #
7
+ #========================================================================
8
+
9
+ SHELL = /bin/sh
10
+
11
+ srcdir = .
12
+
13
+
14
+ CFLAGS = -g -O2 -DHAVE_CONFIG_H -I.. -I$(srcdir)
15
+ CXXFLAGS = -I/usr/local/include -g -O2 -DHAVE_CONFIG_H -I.. -I$(srcdir)
16
+
17
+ CC = gcc
18
+ CXX = g++
19
+ AR = ar rc
20
+ RANLIB = ranlib
21
+
22
+ LIBPREFIX = lib
23
+
24
+ #------------------------------------------------------------------------
25
+
26
+ .SUFFIXES: .cc
27
+
28
+ .cc.o:
29
+ $(CXX) $(CXXFLAGS) -c $<
30
+
31
+ #------------------------------------------------------------------------
32
+
33
+ CXX_SRC = \
34
+ $(srcdir)/GHash.cc \
35
+ $(srcdir)/GList.cc \
36
+ $(srcdir)/GString.cc \
37
+ $(srcdir)/gmem.cc \
38
+ $(srcdir)/gmempp.cc \
39
+ $(srcdir)/gfile.cc \
40
+ $(srcdir)/FixedPoint.cc
41
+
42
+ C_SRC = \
43
+ $(srcdir)/parseargs.c
44
+
45
+ #------------------------------------------------------------------------
46
+
47
+ all: $(LIBPREFIX)Goo.a
48
+
49
+ #------------------------------------------------------------------------
50
+
51
+ GOO_CXX_OBJS = GHash.o GList.o GString.o gmem.o gmempp.o gfile.o FixedPoint.o
52
+ GOO_C_OBJS = parseargs.o
53
+ GOO_OBJS = $(GOO_CXX_OBJS) $(GOO_C_OBJS)
54
+ GOO_WINOBJS = libGoo.lib
55
+
56
+ $(LIBPREFIX)Goo.a: $(GOO_OBJS)
57
+ rm -f $(LIBPREFIX)Goo.a
58
+ $(AR) $(LIBPREFIX)Goo.a $(GOO_OBJS)
59
+ $(RANLIB) $(LIBPREFIX)Goo.a
60
+
61
+ #------------------------------------------------------------------------
62
+
63
+ clean:
64
+ rm -f $(GOO_OBJS) $(LIBPREFIX)Goo.a $(GOO_WINOBJS)
65
+
66
+ #------------------------------------------------------------------------
67
+
68
+ depend:
69
+ $(CXX) $(CXXFLAGS) -MM $(CXX_SRC) >Makefile.dep
70
+ $(CC) $(CFLAGS) -MM $(C_SRC) >>Makefile.dep
71
+
72
+ include Makefile.dep
File without changes
@@ -0,0 +1,72 @@
1
+ #========================================================================
2
+ #
3
+ # Goo library Makefile
4
+ #
5
+ # Copyright 1996-2003 Glyph & Cog, LLC
6
+ #
7
+ #========================================================================
8
+
9
+ SHELL = /bin/sh
10
+
11
+ srcdir = @srcdir@
12
+ VPATH = @srcdir@
13
+
14
+ CFLAGS = @CFLAGS@ @DEFS@ -I.. -I$(srcdir)
15
+ CXXFLAGS = -I/usr/local/include @CXXFLAGS@ @DEFS@ -I.. -I$(srcdir)
16
+
17
+ CC = @CC@
18
+ CXX = @CXX@
19
+ AR = ar rc
20
+ RANLIB = @RANLIB@
21
+
22
+ LIBPREFIX = lib
23
+
24
+ #------------------------------------------------------------------------
25
+
26
+ .SUFFIXES: .cc
27
+
28
+ .cc.o:
29
+ $(CXX) $(CXXFLAGS) -c $<
30
+
31
+ #------------------------------------------------------------------------
32
+
33
+ CXX_SRC = \
34
+ $(srcdir)/GHash.cc \
35
+ $(srcdir)/GList.cc \
36
+ $(srcdir)/GString.cc \
37
+ $(srcdir)/gmem.cc \
38
+ $(srcdir)/gmempp.cc \
39
+ $(srcdir)/gfile.cc \
40
+ $(srcdir)/FixedPoint.cc
41
+
42
+ C_SRC = \
43
+ $(srcdir)/parseargs.c
44
+
45
+ #------------------------------------------------------------------------
46
+
47
+ all: $(LIBPREFIX)Goo.a
48
+
49
+ #------------------------------------------------------------------------
50
+
51
+ GOO_CXX_OBJS = GHash.o GList.o GString.o gmem.o gmempp.o gfile.o FixedPoint.o
52
+ GOO_C_OBJS = parseargs.o
53
+ GOO_OBJS = $(GOO_CXX_OBJS) $(GOO_C_OBJS)
54
+ GOO_WINOBJS = libGoo.lib
55
+
56
+ $(LIBPREFIX)Goo.a: $(GOO_OBJS)
57
+ rm -f $(LIBPREFIX)Goo.a
58
+ $(AR) $(LIBPREFIX)Goo.a $(GOO_OBJS)
59
+ $(RANLIB) $(LIBPREFIX)Goo.a
60
+
61
+ #------------------------------------------------------------------------
62
+
63
+ clean:
64
+ rm -f $(GOO_OBJS) $(LIBPREFIX)Goo.a $(GOO_WINOBJS)
65
+
66
+ #------------------------------------------------------------------------
67
+
68
+ depend:
69
+ $(CXX) $(CXXFLAGS) -MM $(CXX_SRC) >Makefile.dep
70
+ $(CC) $(CFLAGS) -MM $(C_SRC) >>Makefile.dep
71
+
72
+ include Makefile.dep
@@ -0,0 +1,731 @@
1
+ //========================================================================
2
+ //
3
+ // gfile.cc
4
+ //
5
+ // Miscellaneous file and directory name manipulation.
6
+ //
7
+ // Copyright 1996-2003 Glyph & Cog, LLC
8
+ //
9
+ //========================================================================
10
+
11
+ #include <aconf.h>
12
+
13
+ #ifdef WIN32
14
+ # include <time.h>
15
+ #else
16
+ # if defined(MACOS)
17
+ # include <sys/stat.h>
18
+ # elif !defined(ACORN)
19
+ # include <sys/types.h>
20
+ # include <sys/stat.h>
21
+ # include <fcntl.h>
22
+ # endif
23
+ # include <limits.h>
24
+ # include <string.h>
25
+ # if !defined(VMS) && !defined(ACORN) && !defined(MACOS)
26
+ # include <pwd.h>
27
+ # endif
28
+ # if defined(VMS) && (__DECCXX_VER < 50200000)
29
+ # include <unixlib.h>
30
+ # endif
31
+ #endif // WIN32
32
+ #include "GString.h"
33
+ #include "gfile.h"
34
+
35
+ // Some systems don't define this, so just make it something reasonably
36
+ // large.
37
+ #ifndef PATH_MAX
38
+ #define PATH_MAX 1024
39
+ #endif
40
+
41
+ //------------------------------------------------------------------------
42
+
43
+ GString *getHomeDir() {
44
+ #ifdef VMS
45
+ //---------- VMS ----------
46
+ return new GString("SYS$LOGIN:");
47
+
48
+ #elif defined(__EMX__) || defined(WIN32)
49
+ //---------- OS/2+EMX and Win32 ----------
50
+ char *s;
51
+ GString *ret;
52
+
53
+ if ((s = getenv("HOME")))
54
+ ret = new GString(s);
55
+ else
56
+ ret = new GString(".");
57
+ return ret;
58
+
59
+ #elif defined(ACORN)
60
+ //---------- RISCOS ----------
61
+ return new GString("@");
62
+
63
+ #elif defined(MACOS)
64
+ //---------- MacOS ----------
65
+ return new GString(":");
66
+
67
+ #else
68
+ //---------- Unix ----------
69
+ char *s;
70
+ struct passwd *pw;
71
+ GString *ret;
72
+
73
+ if ((s = getenv("HOME"))) {
74
+ ret = new GString(s);
75
+ } else {
76
+ if ((s = getenv("USER")))
77
+ pw = getpwnam(s);
78
+ else
79
+ pw = getpwuid(getuid());
80
+ if (pw)
81
+ ret = new GString(pw->pw_dir);
82
+ else
83
+ ret = new GString(".");
84
+ }
85
+ return ret;
86
+ #endif
87
+ }
88
+
89
+ GString *getCurrentDir() {
90
+ char buf[PATH_MAX+1];
91
+
92
+ #if defined(__EMX__)
93
+ if (_getcwd2(buf, sizeof(buf)))
94
+ #elif defined(WIN32)
95
+ if (GetCurrentDirectory(sizeof(buf), buf))
96
+ #elif defined(ACORN)
97
+ if (strcpy(buf, "@"))
98
+ #elif defined(MACOS)
99
+ if (strcpy(buf, ":"))
100
+ #else
101
+ if (getcwd(buf, sizeof(buf)))
102
+ #endif
103
+ return new GString(buf);
104
+ return new GString();
105
+ }
106
+
107
+ GString *appendToPath(GString *path, char *fileName) {
108
+ #if defined(VMS)
109
+ //---------- VMS ----------
110
+ //~ this should handle everything necessary for file
111
+ //~ requesters, but it's certainly not complete
112
+ char *p0, *p1, *p2;
113
+ char *q1;
114
+
115
+ p0 = path->getCString();
116
+ p1 = p0 + path->getLength() - 1;
117
+ if (!strcmp(fileName, "-")) {
118
+ if (*p1 == ']') {
119
+ for (p2 = p1; p2 > p0 && *p2 != '.' && *p2 != '['; --p2) ;
120
+ if (*p2 == '[')
121
+ ++p2;
122
+ path->del(p2 - p0, p1 - p2);
123
+ } else if (*p1 == ':') {
124
+ path->append("[-]");
125
+ } else {
126
+ path->clear();
127
+ path->append("[-]");
128
+ }
129
+ } else if ((q1 = strrchr(fileName, '.')) && !strncmp(q1, ".DIR;", 5)) {
130
+ if (*p1 == ']') {
131
+ path->insert(p1 - p0, '.');
132
+ path->insert(p1 - p0 + 1, fileName, q1 - fileName);
133
+ } else if (*p1 == ':') {
134
+ path->append('[');
135
+ path->append(']');
136
+ path->append(fileName, q1 - fileName);
137
+ } else {
138
+ path->clear();
139
+ path->append(fileName, q1 - fileName);
140
+ }
141
+ } else {
142
+ if (*p1 != ']' && *p1 != ':')
143
+ path->clear();
144
+ path->append(fileName);
145
+ }
146
+ return path;
147
+
148
+ #elif defined(WIN32)
149
+ //---------- Win32 ----------
150
+ GString *tmp;
151
+ char buf[256];
152
+ char *fp;
153
+
154
+ tmp = new GString(path);
155
+ tmp->append('/');
156
+ tmp->append(fileName);
157
+ GetFullPathName(tmp->getCString(), sizeof(buf), buf, &fp);
158
+ delete tmp;
159
+ path->clear();
160
+ path->append(buf);
161
+ return path;
162
+
163
+ #elif defined(ACORN)
164
+ //---------- RISCOS ----------
165
+ char *p;
166
+ int i;
167
+
168
+ path->append(".");
169
+ i = path->getLength();
170
+ path->append(fileName);
171
+ for (p = path->getCString() + i; *p; ++p) {
172
+ if (*p == '/') {
173
+ *p = '.';
174
+ } else if (*p == '.') {
175
+ *p = '/';
176
+ }
177
+ }
178
+ return path;
179
+
180
+ #elif defined(MACOS)
181
+ //---------- MacOS ----------
182
+ char *p;
183
+ int i;
184
+
185
+ path->append(":");
186
+ i = path->getLength();
187
+ path->append(fileName);
188
+ for (p = path->getCString() + i; *p; ++p) {
189
+ if (*p == '/') {
190
+ *p = ':';
191
+ } else if (*p == '.') {
192
+ *p = ':';
193
+ }
194
+ }
195
+ return path;
196
+
197
+ #elif defined(__EMX__)
198
+ //---------- OS/2+EMX ----------
199
+ int i;
200
+
201
+ // appending "." does nothing
202
+ if (!strcmp(fileName, "."))
203
+ return path;
204
+
205
+ // appending ".." goes up one directory
206
+ if (!strcmp(fileName, "..")) {
207
+ for (i = path->getLength() - 2; i >= 0; --i) {
208
+ if (path->getChar(i) == '/' || path->getChar(i) == '\\' ||
209
+ path->getChar(i) == ':')
210
+ break;
211
+ }
212
+ if (i <= 0) {
213
+ if (path->getChar(0) == '/' || path->getChar(0) == '\\') {
214
+ path->del(1, path->getLength() - 1);
215
+ } else if (path->getLength() >= 2 && path->getChar(1) == ':') {
216
+ path->del(2, path->getLength() - 2);
217
+ } else {
218
+ path->clear();
219
+ path->append("..");
220
+ }
221
+ } else {
222
+ if (path->getChar(i-1) == ':')
223
+ ++i;
224
+ path->del(i, path->getLength() - i);
225
+ }
226
+ return path;
227
+ }
228
+
229
+ // otherwise, append "/" and new path component
230
+ if (path->getLength() > 0 &&
231
+ path->getChar(path->getLength() - 1) != '/' &&
232
+ path->getChar(path->getLength() - 1) != '\\')
233
+ path->append('/');
234
+ path->append(fileName);
235
+ return path;
236
+
237
+ #else
238
+ //---------- Unix ----------
239
+ int i;
240
+
241
+ // appending "." does nothing
242
+ if (!strcmp(fileName, "."))
243
+ return path;
244
+
245
+ // appending ".." goes up one directory
246
+ if (!strcmp(fileName, "..")) {
247
+ for (i = path->getLength() - 2; i >= 0; --i) {
248
+ if (path->getChar(i) == '/')
249
+ break;
250
+ }
251
+ if (i <= 0) {
252
+ if (path->getChar(0) == '/') {
253
+ path->del(1, path->getLength() - 1);
254
+ } else {
255
+ path->clear();
256
+ path->append("..");
257
+ }
258
+ } else {
259
+ path->del(i, path->getLength() - i);
260
+ }
261
+ return path;
262
+ }
263
+
264
+ // otherwise, append "/" and new path component
265
+ if (path->getLength() > 0 &&
266
+ path->getChar(path->getLength() - 1) != '/')
267
+ path->append('/');
268
+ path->append(fileName);
269
+ return path;
270
+ #endif
271
+ }
272
+
273
+ GString *grabPath(char *fileName) {
274
+ #ifdef VMS
275
+ //---------- VMS ----------
276
+ char *p;
277
+
278
+ if ((p = strrchr(fileName, ']')))
279
+ return new GString(fileName, p + 1 - fileName);
280
+ if ((p = strrchr(fileName, ':')))
281
+ return new GString(fileName, p + 1 - fileName);
282
+ return new GString();
283
+
284
+ #elif defined(__EMX__) || defined(WIN32)
285
+ //---------- OS/2+EMX and Win32 ----------
286
+ char *p;
287
+
288
+ if ((p = strrchr(fileName, '/')))
289
+ return new GString(fileName, p - fileName);
290
+ if ((p = strrchr(fileName, '\\')))
291
+ return new GString(fileName, p - fileName);
292
+ if ((p = strrchr(fileName, ':')))
293
+ return new GString(fileName, p + 1 - fileName);
294
+ return new GString();
295
+
296
+ #elif defined(ACORN)
297
+ //---------- RISCOS ----------
298
+ char *p;
299
+
300
+ if ((p = strrchr(fileName, '.')))
301
+ return new GString(fileName, p - fileName);
302
+ return new GString();
303
+
304
+ #elif defined(MACOS)
305
+ //---------- MacOS ----------
306
+ char *p;
307
+
308
+ if ((p = strrchr(fileName, ':')))
309
+ return new GString(fileName, p - fileName);
310
+ return new GString();
311
+
312
+ #else
313
+ //---------- Unix ----------
314
+ char *p;
315
+
316
+ if ((p = strrchr(fileName, '/')))
317
+ return new GString(fileName, p - fileName);
318
+ return new GString();
319
+ #endif
320
+ }
321
+
322
+ GBool isAbsolutePath(char *path) {
323
+ #ifdef VMS
324
+ //---------- VMS ----------
325
+ return strchr(path, ':') ||
326
+ (path[0] == '[' && path[1] != '.' && path[1] != '-');
327
+
328
+ #elif defined(__EMX__) || defined(WIN32)
329
+ //---------- OS/2+EMX and Win32 ----------
330
+ return path[0] == '/' || path[0] == '\\' || path[1] == ':';
331
+
332
+ #elif defined(ACORN)
333
+ //---------- RISCOS ----------
334
+ return path[0] == '$';
335
+
336
+ #elif defined(MACOS)
337
+ //---------- MacOS ----------
338
+ return path[0] != ':';
339
+
340
+ #else
341
+ //---------- Unix ----------
342
+ return path[0] == '/';
343
+ #endif
344
+ }
345
+
346
+ GString *makePathAbsolute(GString *path) {
347
+ #ifdef VMS
348
+ //---------- VMS ----------
349
+ char buf[PATH_MAX+1];
350
+
351
+ if (!isAbsolutePath(path->getCString())) {
352
+ if (getcwd(buf, sizeof(buf))) {
353
+ path->insert(0, buf);
354
+ }
355
+ }
356
+ return path;
357
+
358
+ #elif defined(WIN32)
359
+ //---------- Win32 ----------
360
+ char buf[_MAX_PATH];
361
+ char *fp;
362
+
363
+ buf[0] = '\0';
364
+ if (!GetFullPathName(path->getCString(), _MAX_PATH, buf, &fp)) {
365
+ path->clear();
366
+ return path;
367
+ }
368
+ path->clear();
369
+ path->append(buf);
370
+ return path;
371
+
372
+ #elif defined(ACORN)
373
+ //---------- RISCOS ----------
374
+ path->insert(0, '@');
375
+ return path;
376
+
377
+ #elif defined(MACOS)
378
+ //---------- MacOS ----------
379
+ path->del(0, 1);
380
+ return path;
381
+
382
+ #else
383
+ //---------- Unix and OS/2+EMX ----------
384
+ struct passwd *pw;
385
+ char buf[PATH_MAX+1];
386
+ GString *s;
387
+ char *p1, *p2;
388
+ int n;
389
+
390
+ if (path->getChar(0) == '~') {
391
+ if (path->getChar(1) == '/' ||
392
+ #ifdef __EMX__
393
+ path->getChar(1) == '\\' ||
394
+ #endif
395
+ path->getLength() == 1) {
396
+ path->del(0, 1);
397
+ s = getHomeDir();
398
+ path->insert(0, s);
399
+ delete s;
400
+ } else {
401
+ p1 = path->getCString() + 1;
402
+ #ifdef __EMX__
403
+ for (p2 = p1; *p2 && *p2 != '/' && *p2 != '\\'; ++p2) ;
404
+ #else
405
+ for (p2 = p1; *p2 && *p2 != '/'; ++p2) ;
406
+ #endif
407
+ if ((n = p2 - p1) > PATH_MAX)
408
+ n = PATH_MAX;
409
+ strncpy(buf, p1, n);
410
+ buf[n] = '\0';
411
+ if ((pw = getpwnam(buf))) {
412
+ path->del(0, p2 - p1 + 1);
413
+ path->insert(0, pw->pw_dir);
414
+ }
415
+ }
416
+ } else if (!isAbsolutePath(path->getCString())) {
417
+ if (getcwd(buf, sizeof(buf))) {
418
+ #ifndef __EMX__
419
+ path->insert(0, '/');
420
+ #endif
421
+ path->insert(0, buf);
422
+ }
423
+ }
424
+ return path;
425
+ #endif
426
+ }
427
+
428
+ time_t getModTime(char *fileName) {
429
+ #ifdef WIN32
430
+ //~ should implement this, but it's (currently) only used in xpdf
431
+ return 0;
432
+ #else
433
+ struct stat statBuf;
434
+
435
+ if (stat(fileName, &statBuf)) {
436
+ return 0;
437
+ }
438
+ return statBuf.st_mtime;
439
+ #endif
440
+ }
441
+
442
+ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) {
443
+ #if defined(WIN32)
444
+ //---------- Win32 ----------
445
+ char *tempDir;
446
+ GString *s, *s2;
447
+ char buf[32];
448
+ FILE *f2;
449
+ int t, i;
450
+
451
+ // this has the standard race condition problem, but I haven't found
452
+ // a better way to generate temp file names with extensions on
453
+ // Windows
454
+ if ((tempDir = getenv("TEMP"))) {
455
+ s = new GString(tempDir);
456
+ s->append('\\');
457
+ } else {
458
+ s = new GString();
459
+ }
460
+ s->append("x");
461
+ t = (int)time(NULL);
462
+ for (i = 0; i < 1000; ++i) {
463
+ sprintf(buf, "%d", t + i);
464
+ s2 = s->copy()->append(buf);
465
+ if (ext) {
466
+ s2->append(ext);
467
+ }
468
+ if (!(f2 = fopen(s2->getCString(), "r"))) {
469
+ if (!(f2 = fopen(s2->getCString(), mode))) {
470
+ delete s2;
471
+ delete s;
472
+ return gFalse;
473
+ }
474
+ *name = s2;
475
+ *f = f2;
476
+ delete s;
477
+ return gTrue;
478
+ }
479
+ fclose(f2);
480
+ delete s2;
481
+ }
482
+ delete s;
483
+ return gFalse;
484
+ #elif defined(VMS) || defined(__EMX__) || defined(ACORN) || defined(MACOS)
485
+ //---------- non-Unix ----------
486
+ char *s;
487
+
488
+ // There is a security hole here: an attacker can create a symlink
489
+ // with this file name after the tmpnam call and before the fopen
490
+ // call. I will happily accept fixes to this function for non-Unix
491
+ // OSs.
492
+ if (!(s = tmpnam(NULL))) {
493
+ return gFalse;
494
+ }
495
+ *name = new GString(s);
496
+ if (ext) {
497
+ (*name)->append(ext);
498
+ }
499
+ if (!(*f = fopen((*name)->getCString(), mode))) {
500
+ delete (*name);
501
+ return gFalse;
502
+ }
503
+ return gTrue;
504
+ #else
505
+ //---------- Unix ----------
506
+ char *s;
507
+ int fd;
508
+
509
+ if (ext) {
510
+ #if HAVE_MKSTEMPS
511
+ if ((s = getenv("TMPDIR"))) {
512
+ *name = new GString(s);
513
+ } else {
514
+ *name = new GString("/tmp");
515
+ }
516
+ (*name)->append("/XXXXXX")->append(ext);
517
+ fd = mkstemps((*name)->getCString(), strlen(ext));
518
+ #else
519
+ if (!(s = tmpnam(NULL))) {
520
+ return gFalse;
521
+ }
522
+ *name = new GString(s);
523
+ (*name)->append(ext);
524
+ fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600);
525
+ #endif
526
+ } else {
527
+ #if HAVE_MKSTEMP
528
+ if ((s = getenv("TMPDIR"))) {
529
+ *name = new GString(s);
530
+ } else {
531
+ *name = new GString("/tmp");
532
+ }
533
+ (*name)->append("/XXXXXX");
534
+ fd = mkstemp((*name)->getCString());
535
+ #else // HAVE_MKSTEMP
536
+ if (!(s = tmpnam(NULL))) {
537
+ return gFalse;
538
+ }
539
+ *name = new GString(s);
540
+ fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600);
541
+ #endif // HAVE_MKSTEMP
542
+ }
543
+ if (fd < 0 || !(*f = fdopen(fd, mode))) {
544
+ delete *name;
545
+ return gFalse;
546
+ }
547
+ return gTrue;
548
+ #endif
549
+ }
550
+
551
+ GBool executeCommand(char *cmd) {
552
+ #ifdef VMS
553
+ return system(cmd) ? gTrue : gFalse;
554
+ #else
555
+ return system(cmd) ? gFalse : gTrue;
556
+ #endif
557
+ }
558
+
559
+ char *getLine(char *buf, int size, FILE *f) {
560
+ int c, i;
561
+
562
+ i = 0;
563
+ while (i < size - 1) {
564
+ if ((c = fgetc(f)) == EOF) {
565
+ break;
566
+ }
567
+ buf[i++] = (char)c;
568
+ if (c == '\x0a') {
569
+ break;
570
+ }
571
+ if (c == '\x0d') {
572
+ c = fgetc(f);
573
+ if (c == '\x0a' && i < size - 1) {
574
+ buf[i++] = (char)c;
575
+ } else if (c != EOF) {
576
+ ungetc(c, f);
577
+ }
578
+ break;
579
+ }
580
+ }
581
+ buf[i] = '\0';
582
+ if (i == 0) {
583
+ return NULL;
584
+ }
585
+ return buf;
586
+ }
587
+
588
+ //------------------------------------------------------------------------
589
+ // GDir and GDirEntry
590
+ //------------------------------------------------------------------------
591
+
592
+ GDirEntry::GDirEntry(char *dirPath, char *nameA, GBool doStat) {
593
+ #ifdef VMS
594
+ char *p;
595
+ #elif defined(WIN32)
596
+ int fa;
597
+ GString *s;
598
+ #elif defined(ACORN)
599
+ #else
600
+ struct stat st;
601
+ GString *s;
602
+ #endif
603
+
604
+ name = new GString(nameA);
605
+ dir = gFalse;
606
+ if (doStat) {
607
+ #ifdef VMS
608
+ if (!strcmp(nameA, "-") ||
609
+ ((p = strrchr(nameA, '.')) && !strncmp(p, ".DIR;", 5)))
610
+ dir = gTrue;
611
+ #elif defined(ACORN)
612
+ #else
613
+ s = new GString(dirPath);
614
+ appendToPath(s, nameA);
615
+ #ifdef WIN32
616
+ fa = GetFileAttributes(s->getCString());
617
+ dir = (fa != 0xFFFFFFFF && (fa & FILE_ATTRIBUTE_DIRECTORY));
618
+ #else
619
+ if (stat(s->getCString(), &st) == 0)
620
+ dir = S_ISDIR(st.st_mode);
621
+ #endif
622
+ delete s;
623
+ #endif
624
+ }
625
+ }
626
+
627
+ GDirEntry::~GDirEntry() {
628
+ delete name;
629
+ }
630
+
631
+ GDir::GDir(char *name, GBool doStatA) {
632
+ path = new GString(name);
633
+ doStat = doStatA;
634
+ #if defined(WIN32)
635
+ GString *tmp;
636
+
637
+ tmp = path->copy();
638
+ tmp->append("/*.*");
639
+ hnd = FindFirstFile(tmp->getCString(), &ffd);
640
+ delete tmp;
641
+ #elif defined(ACORN)
642
+ #elif defined(MACOS)
643
+ #else
644
+ dir = opendir(name);
645
+ #ifdef VMS
646
+ needParent = strchr(name, '[') != NULL;
647
+ #endif
648
+ #endif
649
+ }
650
+
651
+ GDir::~GDir() {
652
+ delete path;
653
+ #if defined(WIN32)
654
+ if (hnd) {
655
+ FindClose(hnd);
656
+ hnd = NULL;
657
+ }
658
+ #elif defined(ACORN)
659
+ #elif defined(MACOS)
660
+ #else
661
+ if (dir)
662
+ closedir(dir);
663
+ #endif
664
+ }
665
+
666
+ GDirEntry *GDir::getNextEntry() {
667
+ GDirEntry *e;
668
+
669
+ #if defined(WIN32)
670
+ if (hnd) {
671
+ e = new GDirEntry(path->getCString(), ffd.cFileName, doStat);
672
+ if (hnd && !FindNextFile(hnd, &ffd)) {
673
+ FindClose(hnd);
674
+ hnd = NULL;
675
+ }
676
+ } else {
677
+ e = NULL;
678
+ }
679
+ #elif defined(ACORN)
680
+ #elif defined(MACOS)
681
+ #elif defined(VMS)
682
+ struct dirent *ent;
683
+ e = NULL;
684
+ if (dir) {
685
+ if (needParent) {
686
+ e = new GDirEntry(path->getCString(), "-", doStat);
687
+ needParent = gFalse;
688
+ return e;
689
+ }
690
+ ent = readdir(dir);
691
+ if (ent) {
692
+ e = new GDirEntry(path->getCString(), ent->d_name, doStat);
693
+ }
694
+ }
695
+ #else
696
+ struct dirent *ent;
697
+ e = NULL;
698
+ if (dir) {
699
+ ent = (struct dirent *)readdir(dir);
700
+ if (ent && !strcmp(ent->d_name, ".")) {
701
+ ent = (struct dirent *)readdir(dir);
702
+ }
703
+ if (ent) {
704
+ e = new GDirEntry(path->getCString(), ent->d_name, doStat);
705
+ }
706
+ }
707
+ #endif
708
+
709
+ return e;
710
+ }
711
+
712
+ void GDir::rewind() {
713
+ #ifdef WIN32
714
+ GString *tmp;
715
+
716
+ if (hnd)
717
+ FindClose(hnd);
718
+ tmp = path->copy();
719
+ tmp->append("/*.*");
720
+ hnd = FindFirstFile(tmp->getCString(), &ffd);
721
+ delete tmp;
722
+ #elif defined(ACORN)
723
+ #elif defined(MACOS)
724
+ #else
725
+ if (dir)
726
+ rewinddir(dir);
727
+ #ifdef VMS
728
+ needParent = strchr(path->getCString(), '[') != NULL;
729
+ #endif
730
+ #endif
731
+ }