IOWA 1.0.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 (502) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTORS +14 -0
  3. data/README.md +23 -0
  4. data/RELEASE_NOTES +77 -0
  5. data/ToDo +21 -0
  6. data/components/CRUDList/CRUDList.html +13 -0
  7. data/components/CRUDList/CRUDList.iwa +136 -0
  8. data/components/Content/Content.html +0 -0
  9. data/components/Content/Content.iwa +143 -0
  10. data/components/Content/example/README +9 -0
  11. data/components/Content/example/cgi/iowa.cgi +10 -0
  12. data/components/Content/example/demo.rb +30 -0
  13. data/components/Content/example/doc/index.html +7 -0
  14. data/components/Content/example/iowa/Content.html +1 -0
  15. data/components/Content/example/iowa/Content.iwa +1 -0
  16. data/components/Content/example/iowa/Main.html +6 -0
  17. data/components/Content/example/iowa/Main.iwa +3 -0
  18. data/components/Content/example/iowa/_content/body +7 -0
  19. data/components/Content/example/iowa/_content/body2 +3 -0
  20. data/components/Content/example/iowa/_content/title +2 -0
  21. data/components/Content/example/iowa/app.cnf +8 -0
  22. data/components/Content/example/iowa/app.rb +8 -0
  23. data/components/Content/example/webrick.rb +38 -0
  24. data/components/Include/Include.html +1 -0
  25. data/components/Include/Include.iwa +30 -0
  26. data/components/Include/readme +5 -0
  27. data/components/JumpTo/JumpTo.html +8 -0
  28. data/components/JumpTo/JumpTo.iwa +8 -0
  29. data/components/JumpTo/readme +6 -0
  30. data/doc/Architecture.txt +6 -0
  31. data/doc/History.txt +33 -0
  32. data/doc/StandardDispatcher.txt +19 -0
  33. data/examples/blog/README +1 -0
  34. data/examples/hello_world/README +17 -0
  35. data/examples/hello_world/htdocs/hello_world_html.html +24 -0
  36. data/examples/hello_world/htdocs/hello_world_ruby.html +41 -0
  37. data/examples/hello_world/iowa/HelloWorld.html +14 -0
  38. data/examples/hello_world/iowa/HelloWorld.iwa +31 -0
  39. data/examples/hello_world/iowa/Index.html +16 -0
  40. data/examples/hello_world/iowa/Index.iwa +5 -0
  41. data/examples/hello_world/iowa/iowa_hello_world.cnf +19 -0
  42. data/examples/hello_world/iowa/iowa_hello_world.rb +5 -0
  43. data/examples/hello_world/iowa/mapfile.cnf +6 -0
  44. data/examples/hw1/iowa/Main.html +1 -0
  45. data/examples/hw1/iowa/README +9 -0
  46. data/examples/hw1/iowa/hw.rb +4 -0
  47. data/examples/hw2/iowa/Main.html +10 -0
  48. data/examples/hw2/iowa/Main.iwa +7 -0
  49. data/examples/hw2/iowa/README +16 -0
  50. data/examples/hw2/iowa/hw.rb +4 -0
  51. data/examples/hw3/iowa/Main.html +11 -0
  52. data/examples/hw3/iowa/Main.iwa +7 -0
  53. data/examples/hw3/iowa/README +22 -0
  54. data/examples/hw3/iowa/hw.rb +4 -0
  55. data/examples/hw4/iowa/Greetings.html +10 -0
  56. data/examples/hw4/iowa/Greetings.iwa +9 -0
  57. data/examples/hw4/iowa/Main.html +12 -0
  58. data/examples/hw4/iowa/Main.iwa +10 -0
  59. data/examples/hw4/iowa/README +28 -0
  60. data/examples/hw4/iowa/hw.rb +4 -0
  61. data/examples/hw5/iowa/Footer.html +2 -0
  62. data/examples/hw5/iowa/Greetings.html +4 -0
  63. data/examples/hw5/iowa/Greetings.iwa +12 -0
  64. data/examples/hw5/iowa/Header.html +6 -0
  65. data/examples/hw5/iowa/Main.html +12 -0
  66. data/examples/hw5/iowa/Main.iwa +13 -0
  67. data/examples/hw5/iowa/README +16 -0
  68. data/examples/hw5/iowa/hw.rb +4 -0
  69. data/examples/template_server/iowa/Content.iwa +121 -0
  70. data/examples/template_server/iowa/Content.view +0 -0
  71. data/examples/template_server/iowa/DBContentDispatcher.rb +112 -0
  72. data/examples/template_server/iowa/DBContentPage.html +3 -0
  73. data/examples/template_server/iowa/DBContentPage.iwa +85 -0
  74. data/examples/template_server/iowa/app.cnf +13 -0
  75. data/examples/template_server/iowa/app.rb +5 -0
  76. data/ext/Classifier/classifier.c +256 -0
  77. data/ext/Classifier/ext_help.h +14 -0
  78. data/ext/Classifier/extconf.rb +5 -0
  79. data/ext/Classifier/tst.h +40 -0
  80. data/ext/Classifier/tst_cleanup.c +24 -0
  81. data/ext/Classifier/tst_delete.c +146 -0
  82. data/ext/Classifier/tst_grow_node_free_list.c +38 -0
  83. data/ext/Classifier/tst_init.c +41 -0
  84. data/ext/Classifier/tst_insert.c +192 -0
  85. data/ext/Classifier/tst_search.c +68 -0
  86. data/ext/http11/README +11 -0
  87. data/ext/http11/ext_help.h +15 -0
  88. data/ext/http11/extconf.rb +5 -0
  89. data/ext/http11/http11.c +534 -0
  90. data/ext/http11/http11.c.dif +422 -0
  91. data/ext/http11/http11_parser.c +1243 -0
  92. data/ext/http11/http11_parser.c.dif +193 -0
  93. data/ext/http11/http11_parser.h +49 -0
  94. data/ext/http11/http11_parser.h.dif +20 -0
  95. data/ext/http11/http11_parser.rl +192 -0
  96. data/ext/httpmachine/Makefile +149 -0
  97. data/ext/httpmachine/extconf.rb +33 -0
  98. data/ext/httpmachine/http.cpp +430 -0
  99. data/ext/httpmachine/http.h +156 -0
  100. data/ext/httpmachine/rubyhttp.cpp +165 -0
  101. data/external/mime-types/LICENCE +18 -0
  102. data/external/mime-types/README +46 -0
  103. data/external/mime-types/doc/classes/MIME.html +120 -0
  104. data/external/mime-types/doc/classes/MIME/InvalidContentType.html +119 -0
  105. data/external/mime-types/doc/classes/MIME/Type.html +866 -0
  106. data/external/mime-types/doc/classes/MIME/Type.src/M000010.html +22 -0
  107. data/external/mime-types/doc/classes/MIME/Type.src/M000011.html +18 -0
  108. data/external/mime-types/doc/classes/MIME/Type.src/M000012.html +19 -0
  109. data/external/mime-types/doc/classes/MIME/Type.src/M000013.html +18 -0
  110. data/external/mime-types/doc/classes/MIME/Type.src/M000014.html +26 -0
  111. data/external/mime-types/doc/classes/MIME/Type.src/M000015.html +33 -0
  112. data/external/mime-types/doc/classes/MIME/Type.src/M000016.html +27 -0
  113. data/external/mime-types/doc/classes/MIME/Type.src/M000017.html +35 -0
  114. data/external/mime-types/doc/classes/MIME/Type.src/M000018.html +34 -0
  115. data/external/mime-types/doc/classes/MIME/Type.src/M000019.html +24 -0
  116. data/external/mime-types/doc/classes/MIME/Type.src/M000020.html +38 -0
  117. data/external/mime-types/doc/classes/MIME/Type.src/M000021.html +22 -0
  118. data/external/mime-types/doc/classes/MIME/Type.src/M000022.html +18 -0
  119. data/external/mime-types/doc/classes/MIME/Type.src/M000023.html +18 -0
  120. data/external/mime-types/doc/classes/MIME/Type.src/M000024.html +18 -0
  121. data/external/mime-types/doc/classes/MIME/Type.src/M000025.html +18 -0
  122. data/external/mime-types/doc/classes/MIME/Type.src/M000026.html +18 -0
  123. data/external/mime-types/doc/classes/MIME/Type.src/M000027.html +18 -0
  124. data/external/mime-types/doc/classes/MIME/Type.src/M000028.html +18 -0
  125. data/external/mime-types/doc/classes/MIME/Type.src/M000029.html +18 -0
  126. data/external/mime-types/doc/classes/MIME/Type.src/M000030.html +19 -0
  127. data/external/mime-types/doc/classes/MIME/Type.src/M000031.html +26 -0
  128. data/external/mime-types/doc/classes/MIME/Types.html +459 -0
  129. data/external/mime-types/doc/classes/MIME/Types.src/M000001.html +19 -0
  130. data/external/mime-types/doc/classes/MIME/Types.src/M000002.html +32 -0
  131. data/external/mime-types/doc/classes/MIME/Types.src/M000003.html +21 -0
  132. data/external/mime-types/doc/classes/MIME/Types.src/M000004.html +18 -0
  133. data/external/mime-types/doc/classes/MIME/Types.src/M000005.html +26 -0
  134. data/external/mime-types/doc/classes/MIME/Types.src/M000006.html +18 -0
  135. data/external/mime-types/doc/classes/MIME/Types.src/M000007.html +18 -0
  136. data/external/mime-types/doc/classes/MIME/Types.src/M000008.html +18 -0
  137. data/external/mime-types/doc/classes/MIME/Types.src/M000009.html +18 -0
  138. data/external/mime-types/doc/created.rid +1 -0
  139. data/external/mime-types/doc/files/ChangeLog.html +320 -0
  140. data/external/mime-types/doc/files/README.html +145 -0
  141. data/external/mime-types/doc/files/lib/mime/types_rb.html +101 -0
  142. data/external/mime-types/doc/fr_class_index.html +30 -0
  143. data/external/mime-types/doc/fr_file_index.html +29 -0
  144. data/external/mime-types/doc/fr_method_index.html +57 -0
  145. data/external/mime-types/doc/index.html +24 -0
  146. data/external/mime-types/doc/rdoc-style.css +208 -0
  147. data/external/mime-types/lib/mime/types.rb +1558 -0
  148. data/external/package.rb +672 -0
  149. data/external/test_support.rb +95 -0
  150. data/external/tmail/README +7 -0
  151. data/external/tmail/tmail.rb +4 -0
  152. data/external/tmail/tmail/address.rb +222 -0
  153. data/external/tmail/tmail/base64.rb +52 -0
  154. data/external/tmail/tmail/compat.rb +39 -0
  155. data/external/tmail/tmail/config.rb +50 -0
  156. data/external/tmail/tmail/encode.rb +447 -0
  157. data/external/tmail/tmail/header.rb +895 -0
  158. data/external/tmail/tmail/info.rb +14 -0
  159. data/external/tmail/tmail/loader.rb +1 -0
  160. data/external/tmail/tmail/mail.rb +869 -0
  161. data/external/tmail/tmail/mailbox.rb +386 -0
  162. data/external/tmail/tmail/mbox.rb +1 -0
  163. data/external/tmail/tmail/net.rb +260 -0
  164. data/external/tmail/tmail/obsolete.rb +123 -0
  165. data/external/tmail/tmail/parser.rb +1475 -0
  166. data/external/tmail/tmail/parser.y +372 -0
  167. data/external/tmail/tmail/port.rb +356 -0
  168. data/external/tmail/tmail/scanner.rb +17 -0
  169. data/external/tmail/tmail/scanner_r.rb +243 -0
  170. data/external/tmail/tmail/stringio.rb +256 -0
  171. data/external/tmail/tmail/textutils.rb +197 -0
  172. data/external/tmail/tmail/tmail.rb +1 -0
  173. data/external/tmail/tmail/utils.rb +23 -0
  174. data/external/win32-process/README +133 -0
  175. data/external/win32-process/lib/win32/process.rb +561 -0
  176. data/external/windows-pr/README +145 -0
  177. data/external/windows-pr/doc/conversion_guide.txt +25 -0
  178. data/external/windows-pr/lib/windows/clipboard.rb +72 -0
  179. data/external/windows-pr/lib/windows/console.rb +323 -0
  180. data/external/windows-pr/lib/windows/device_io.rb +88 -0
  181. data/external/windows-pr/lib/windows/directory.rb +80 -0
  182. data/external/windows-pr/lib/windows/error.rb +313 -0
  183. data/external/windows-pr/lib/windows/eventlog.rb +120 -0
  184. data/external/windows-pr/lib/windows/file.rb +349 -0
  185. data/external/windows-pr/lib/windows/filesystem.rb +16 -0
  186. data/external/windows-pr/lib/windows/handle.rb +31 -0
  187. data/external/windows-pr/lib/windows/library.rb +76 -0
  188. data/external/windows-pr/lib/windows/limits.rb +13 -0
  189. data/external/windows-pr/lib/windows/memory.rb +117 -0
  190. data/external/windows-pr/lib/windows/msvcrt/buffer.rb +48 -0
  191. data/external/windows-pr/lib/windows/msvcrt/file.rb +18 -0
  192. data/external/windows-pr/lib/windows/msvcrt/string.rb +46 -0
  193. data/external/windows-pr/lib/windows/national.rb +557 -0
  194. data/external/windows-pr/lib/windows/path.rb +296 -0
  195. data/external/windows-pr/lib/windows/pipe.rb +77 -0
  196. data/external/windows-pr/lib/windows/process.rb +171 -0
  197. data/external/windows-pr/lib/windows/registry.rb +238 -0
  198. data/external/windows-pr/lib/windows/security.rb +89 -0
  199. data/external/windows-pr/lib/windows/service.rb +183 -0
  200. data/external/windows-pr/lib/windows/shell.rb +88 -0
  201. data/external/windows-pr/lib/windows/sound.rb +52 -0
  202. data/external/windows-pr/lib/windows/synchronize.rb +161 -0
  203. data/external/windows-pr/lib/windows/system_info.rb +70 -0
  204. data/external/windows-pr/lib/windows/unicode.rb +138 -0
  205. data/external/windows-pr/lib/windows/window.rb +22 -0
  206. data/iowa.gemspec +45 -0
  207. data/microprojects/DiskCache/LICENSE +28 -0
  208. data/microprojects/DiskCache/README +17 -0
  209. data/microprojects/DiskCache/external/package.rb +608 -0
  210. data/microprojects/DiskCache/external/test_support.rb +8 -0
  211. data/microprojects/DiskCache/setup.rb +22 -0
  212. data/microprojects/DiskCache/src/iowa/Association.rb +67 -0
  213. data/microprojects/DiskCache/src/iowa/Constants.rb +159 -0
  214. data/microprojects/DiskCache/src/iowa/DiskStore.rb +377 -0
  215. data/microprojects/DiskCache/src/iowa/Hash.rb +63 -0
  216. data/microprojects/DiskCache/src/iowa/Lockfile.rb +575 -0
  217. data/microprojects/DiskCache/src/iowa/Mutex.rb +142 -0
  218. data/microprojects/DiskCache/src/iowa/caches/DiskCache.rb +605 -0
  219. data/microprojects/DiskCache/src/iowa/caches/LRUCache.rb +287 -0
  220. data/microprojects/DiskCache/test/TC_DiskCache.rb +218 -0
  221. data/microprojects/LRUCache/LICENSE +28 -0
  222. data/microprojects/LRUCache/README +13 -0
  223. data/microprojects/LRUCache/external/package.rb +608 -0
  224. data/microprojects/LRUCache/external/test_support.rb +8 -0
  225. data/microprojects/LRUCache/setup.rb +22 -0
  226. data/microprojects/LRUCache/src/iowa/Association.rb +57 -0
  227. data/microprojects/LRUCache/src/iowa/Constants.rb +159 -0
  228. data/microprojects/LRUCache/src/iowa/Hash.rb +63 -0
  229. data/microprojects/LRUCache/src/iowa/Mutex.rb +129 -0
  230. data/microprojects/LRUCache/src/iowa/caches/LRUCache.rb +287 -0
  231. data/microprojects/LRUCache/test/TC_LRUCache.rb +65 -0
  232. data/microprojects/LinkedList/LICENSE +28 -0
  233. data/microprojects/LinkedList/README +13 -0
  234. data/microprojects/LinkedList/external/package.rb +608 -0
  235. data/microprojects/LinkedList/external/test_support.rb +8 -0
  236. data/microprojects/LinkedList/setup.rb +22 -0
  237. data/microprojects/LinkedList/src/iowa/LinkedList.rb +165 -0
  238. data/microprojects/LinkedList/test/TC_LinkedList.rb +42 -0
  239. data/microprojects/README +8 -0
  240. data/setup.rb +116 -0
  241. data/share/iowa/app_skeleton/Main.html +8 -0
  242. data/share/iowa/app_skeleton/Main.iwa +15 -0
  243. data/share/iowa/app_skeleton/app.cnf +48 -0
  244. data/share/iowa/app_skeleton/app.rb +58 -0
  245. data/share/iowa/app_skeleton/models/model.rb +49 -0
  246. data/src/ihc.rb +223 -0
  247. data/src/iowa.cgi +29 -0
  248. data/src/iowa.rb +637 -0
  249. data/src/iowa/AbstractCache.rb +96 -0
  250. data/src/iowa/AcceptLanguage.rb +76 -0
  251. data/src/iowa/Application.rb +928 -0
  252. data/src/iowa/ApplicationStats.rb +72 -0
  253. data/src/iowa/Association.rb +67 -0
  254. data/src/iowa/BindingsParser.rb +62 -0
  255. data/src/iowa/Breakpoint.rb +273 -0
  256. data/src/iowa/CSS.rb +564 -0
  257. data/src/iowa/Client.rb +192 -0
  258. data/src/iowa/Component.rb +405 -0
  259. data/src/iowa/ComponentProxy.rb +26 -0
  260. data/src/iowa/Config.rb +21 -0
  261. data/src/iowa/Constants.rb +226 -0
  262. data/src/iowa/Context.rb +218 -0
  263. data/src/iowa/ContextLogger.rb +16 -0
  264. data/src/iowa/DbPool.rb +222 -0
  265. data/src/iowa/DetachedComponent.rb +18 -0
  266. data/src/iowa/Dispatcher.rb +27 -0
  267. data/src/iowa/DynamicElements.rb +471 -0
  268. data/src/iowa/Element.rb +100 -0
  269. data/src/iowa/Email.rb +287 -0
  270. data/src/iowa/Extensions/AllExtensions.rb +4 -0
  271. data/src/iowa/Extensions/Class.rb +94 -0
  272. data/src/iowa/Extensions/Date.rb +88 -0
  273. data/src/iowa/Extensions/DateTime.rb +88 -0
  274. data/src/iowa/Extensions/Hash.rb +22 -0
  275. data/src/iowa/Extensions/Kernel.rb +6 -0
  276. data/src/iowa/Extensions/Numeric.rb +47 -0
  277. data/src/iowa/Extensions/Object.rb +11 -0
  278. data/src/iowa/Extensions/String.rb +60 -0
  279. data/src/iowa/Extensions/Time.rb +89 -0
  280. data/src/iowa/Extensions/TimeExtensions.rb +6 -0
  281. data/src/iowa/Form.rb +368 -0
  282. data/src/iowa/Hash.rb +85 -0
  283. data/src/iowa/ISAAC.rb +175 -0
  284. data/src/iowa/ImageSize.rb +279 -0
  285. data/src/iowa/IowaComponentMixins.rb +7 -0
  286. data/src/iowa/JSON-lexer.rb +296 -0
  287. data/src/iowa/JSON-objects.rb +201 -0
  288. data/src/iowa/KeyValueCoding.rb +91 -0
  289. data/src/iowa/LinkedList.rb +175 -0
  290. data/src/iowa/Loader.rb +22 -0
  291. data/src/iowa/Lockfile.rb +575 -0
  292. data/src/iowa/Logger.rb +74 -0
  293. data/src/iowa/Monkey.rb +20 -0
  294. data/src/iowa/Mutex.rb +142 -0
  295. data/src/iowa/Policy.rb +70 -0
  296. data/src/iowa/Pool.rb +243 -0
  297. data/src/iowa/PrettyException.rb +1091 -0
  298. data/src/iowa/Request.rb +244 -0
  299. data/src/iowa/Response.rb +133 -0
  300. data/src/iowa/Session.rb +354 -0
  301. data/src/iowa/SessionStats.rb +78 -0
  302. data/src/iowa/String.rb +65 -0
  303. data/src/iowa/Tag.rb +101 -0
  304. data/src/iowa/TemplateParser.rb +236 -0
  305. data/src/iowa/Util.rb +314 -0
  306. data/src/iowa/Webcache.rb +122 -0
  307. data/src/iowa/caches/BiLevelCache.rb +65 -0
  308. data/src/iowa/caches/ClassLimitedCache.rb +67 -0
  309. data/src/iowa/caches/DiskCache.rb +609 -0
  310. data/src/iowa/caches/DiskStore.rb +380 -0
  311. data/src/iowa/caches/LRUCache-alternative.rb +155 -0
  312. data/src/iowa/caches/LRUCache.rb +290 -0
  313. data/src/iowa/caches/SimpleLRUCache.rb +112 -0
  314. data/src/iowa/dispatchers/StandardDispatcher.rb +396 -0
  315. data/src/iowa/dispatchers/StandardDispatcherWithClassifier.rb +93 -0
  316. data/src/iowa/js/iowa_jsonrpc.js +381 -0
  317. data/src/iowa/js/jsonrpc.js +187 -0
  318. data/src/iowa/js/jsonrpc_async.js +261 -0
  319. data/src/iowa/loaders/DiskLoader.rb +50 -0
  320. data/src/iowa/loggers/Analogger.rb +54 -0
  321. data/src/iowa/loggers/AsyncLogger.rb +54 -0
  322. data/src/iowa/loggers/BitBucket.rb +38 -0
  323. data/src/iowa/loggers/Log4R.rb +13 -0
  324. data/src/iowa/loggers/Log4rLogger.rb +48 -0
  325. data/src/iowa/loggers/Logger.rb +29 -0
  326. data/src/iowa/loggers/RubyLogger.rb +9 -0
  327. data/src/iowa/pools/DBConnectionPool.rb +53 -0
  328. data/src/iowa/request/Apache.rb +90 -0
  329. data/src/iowa/request/EMHybrid.rb +59 -0
  330. data/src/iowa/request/ENV.rb +80 -0
  331. data/src/iowa/request/FCGI.rb +68 -0
  332. data/src/iowa/request/HTTPMachine.rb +75 -0
  333. data/src/iowa/request/Mongrel.rb +68 -0
  334. data/src/iowa/request/WEBrick.rb +48 -0
  335. data/src/iowa/version.rb +3 -0
  336. data/src/iowa/webrick/HTTPServer.rb +43 -0
  337. data/src/iowa/webrick/WEBrickServlet.rb +28 -0
  338. data/src/iowa_fcgi_handler.rb +101 -0
  339. data/src/iowa_httpmachine.rb +141 -0
  340. data/src/iowa_hybrid.rb +193 -0
  341. data/src/iowa_hybrid_cluster.rb +231 -0
  342. data/src/iowa_mongrel.rb +136 -0
  343. data/src/iowa_webrick.rb +194 -0
  344. data/src/iowa_webrick_legacy.rb +104 -0
  345. data/src/mod_iowa.rb +104 -0
  346. data/tcss.rb +61 -0
  347. data/test/README.windows +12 -0
  348. data/test/TC_AcceptLanguage.rb +61 -0
  349. data/test/TC_AppConfig.rb +43 -0
  350. data/test/TC_AppConfig/cgi/iowa.cgi +7 -0
  351. data/test/TC_AppConfig/doc/index.html +1 -0
  352. data/test/TC_AppConfig/iowa/Main.html +4 -0
  353. data/test/TC_AppConfig/iowa/Main.iwa +17 -0
  354. data/test/TC_AppConfig/iowa/README +1 -0
  355. data/test/TC_AppConfig/iowa/app.cnf +19 -0
  356. data/test/TC_AppConfig/iowa/app.rb +8 -0
  357. data/test/TC_AppConfig/webrick.rb +38 -0
  358. data/test/TC_Association.rb +29 -0
  359. data/test/TC_BiLevelCache.rb +71 -0
  360. data/test/TC_CGI_Adaptor.rb +55 -0
  361. data/test/TC_CGI_Adaptor/cgi/iowa.cgi +7 -0
  362. data/test/TC_CGI_Adaptor/doc/index.html +1 -0
  363. data/test/TC_CGI_Adaptor/iowa/Main.html +8 -0
  364. data/test/TC_CGI_Adaptor/iowa/Main.iwa +14 -0
  365. data/test/TC_CGI_Adaptor/iowa/README +1 -0
  366. data/test/TC_CGI_Adaptor/iowa/app.cnf +8 -0
  367. data/test/TC_CGI_Adaptor/iowa/app.rb +8 -0
  368. data/test/TC_CGI_Adaptor/webrick.rb +38 -0
  369. data/test/TC_CSS.rb +660 -0
  370. data/test/TC_ClassLimitedCache.rb +89 -0
  371. data/test/TC_Classifier.rb +80 -0
  372. data/test/TC_DbPool.rb +127 -0
  373. data/test/TC_DiskCache.rb +218 -0
  374. data/test/TC_Hybrid.rb +58 -0
  375. data/test/TC_Hybrid/doc/thing.txt +1 -0
  376. data/test/TC_Hybrid/iowa/Main.html +3 -0
  377. data/test/TC_Hybrid/iowa/Main.iwa +7 -0
  378. data/test/TC_Hybrid/iowa/NewPage.html +1 -0
  379. data/test/TC_Hybrid/iowa/NewPage.iwa +5 -0
  380. data/test/TC_Hybrid/iowa/app.cnf +10 -0
  381. data/test/TC_Hybrid/iowa/app.rb +5 -0
  382. data/test/TC_IOWAFunctions/doc/Ajax1.html +1 -0
  383. data/test/TC_IOWAFunctions/doc/Ajax1.iwa +1 -0
  384. data/test/TC_IOWAFunctions/doc/index.html +1 -0
  385. data/test/TC_IOWAFunctions/doc/js/dojo.js +9686 -0
  386. data/test/TC_IOWAFunctions/iowa/Ajax1.html +40 -0
  387. data/test/TC_IOWAFunctions/iowa/Ajax1.iwa +23 -0
  388. data/test/TC_IOWAFunctions/iowa/AjaxWidget.iwa +19 -0
  389. data/test/TC_IOWAFunctions/iowa/AjaxWidget.view +22 -0
  390. data/test/TC_IOWAFunctions/iowa/DanielTest.html +9 -0
  391. data/test/TC_IOWAFunctions/iowa/DanielTest.iwa +10 -0
  392. data/test/TC_IOWAFunctions/iowa/IntervalWidget.html +1 -0
  393. data/test/TC_IOWAFunctions/iowa/IntervalWidget.iwa +14 -0
  394. data/test/TC_IOWAFunctions/iowa/Main.html +1 -0
  395. data/test/TC_IOWAFunctions/iowa/NestedRepeat1.html +12 -0
  396. data/test/TC_IOWAFunctions/iowa/NestedRepeat1.iwa +24 -0
  397. data/test/TC_IOWAFunctions/iowa/RPCResponse.iwa +7 -0
  398. data/test/TC_IOWAFunctions/iowa/RPCResponse.view +1 -0
  399. data/test/TC_IOWAFunctions/iowa/Repeat1.iwa +31 -0
  400. data/test/TC_IOWAFunctions/iowa/Repeat1.view +9 -0
  401. data/test/TC_IOWAFunctions/iowa/Repeat2.iwa +32 -0
  402. data/test/TC_IOWAFunctions/iowa/Repeat2.view +11 -0
  403. data/test/TC_IOWAFunctions/iowa/Repeat3.iwa +44 -0
  404. data/test/TC_IOWAFunctions/iowa/Repeat3.view +18 -0
  405. data/test/TC_IOWAFunctions/iowa/TesCon.html +1 -0
  406. data/test/TC_IOWAFunctions/iowa/TesCon.iwa +5 -0
  407. data/test/TC_IOWAFunctions/iowa/app.cnf +19 -0
  408. data/test/TC_IOWAFunctions/iowa/app.rb +9 -0
  409. data/test/TC_IOWAFunctions/iowa/mapfile.cnf +8 -0
  410. data/test/TC_ISAAC.rb +52 -0
  411. data/test/TC_ImageSize.rb +84 -0
  412. data/test/TC_ImageSize/img.bmp +0 -0
  413. data/test/TC_ImageSize/img.gif +0 -0
  414. data/test/TC_ImageSize/img.jpg +0 -0
  415. data/test/TC_ImageSize/img.pcx +0 -0
  416. data/test/TC_ImageSize/img.pgm +7144 -0
  417. data/test/TC_ImageSize/img.png +0 -0
  418. data/test/TC_ImageSize/img.ppm +0 -0
  419. data/test/TC_ImageSize/img.psd +0 -0
  420. data/test/TC_ImageSize/img.tiff +0 -0
  421. data/test/TC_ImageSize/img.xbm +22 -0
  422. data/test/TC_KeyValueCoding.rb +35 -0
  423. data/test/TC_LRUCache.rb +296 -0
  424. data/test/TC_LinkedList.rb +46 -0
  425. data/test/TC_Lockfile.rb +106 -0
  426. data/test/TC_Minimal.rb +45 -0
  427. data/test/TC_Minimal/app.cnf +8 -0
  428. data/test/TC_Minimal/cgi-bin/iowa.cgi +11 -0
  429. data/test/TC_Minimal/doc/index.html +1 -0
  430. data/test/TC_Minimal/iowa/Main.html +1 -0
  431. data/test/TC_Minimal/iowa/README +1 -0
  432. data/test/TC_Minimal/iowa/app.rb +3 -0
  433. data/test/TC_Minimal/webrick.rb +38 -0
  434. data/test/TC_Mongrel.rb +58 -0
  435. data/test/TC_Mongrel/doc/thing.txt +1 -0
  436. data/test/TC_Mongrel/iowa/Main.html +3 -0
  437. data/test/TC_Mongrel/iowa/Main.iwa +7 -0
  438. data/test/TC_Mongrel/iowa/NewPage.html +1 -0
  439. data/test/TC_Mongrel/iowa/NewPage.iwa +5 -0
  440. data/test/TC_Mongrel/iowa/app.cnf +10 -0
  441. data/test/TC_Mongrel/iowa/app.rb +5 -0
  442. data/test/TC_NoSubclass.rb +56 -0
  443. data/test/TC_NoSubclass/cgi/iowa.cgi +7 -0
  444. data/test/TC_NoSubclass/doc/index.html +1 -0
  445. data/test/TC_NoSubclass/iowa/Main.html +8 -0
  446. data/test/TC_NoSubclass/iowa/Main.iwa +14 -0
  447. data/test/TC_NoSubclass/iowa/README +1 -0
  448. data/test/TC_NoSubclass/iowa/app.cnf +8 -0
  449. data/test/TC_NoSubclass/iowa/app.rb +5 -0
  450. data/test/TC_NoSubclass/webrick.rb +38 -0
  451. data/test/TC_Pool.rb +139 -0
  452. data/test/TC_RenderedCache/doc/thing.txt +1 -0
  453. data/test/TC_RenderedCache/iowa/BigPage.html +1 -0
  454. data/test/TC_RenderedCache/iowa/BigPage.iwa +12 -0
  455. data/test/TC_RenderedCache/iowa/Main.html +3 -0
  456. data/test/TC_RenderedCache/iowa/Main.iwa +7 -0
  457. data/test/TC_RenderedCache/iowa/NewPage.html +1 -0
  458. data/test/TC_RenderedCache/iowa/NewPage.iwa +11 -0
  459. data/test/TC_RenderedCache/iowa/app.cnf +13 -0
  460. data/test/TC_RenderedCache/iowa/app.rb +5 -0
  461. data/test/TC_RenderedCache/iowa/mapfile.map +4 -0
  462. data/test/TC_ResourceURL.rb +73 -0
  463. data/test/TC_ResourceURL/iowa/Main.html +2 -0
  464. data/test/TC_ResourceURL/iowa/Main.iwa +10 -0
  465. data/test/TC_ResourceURL/iowa/app.cnf +10 -0
  466. data/test/TC_ResourceURL/iowa/app.rb +5 -0
  467. data/test/TC_SimpleDetached.rb +41 -0
  468. data/test/TC_StandardDispatcher.rb +362 -0
  469. data/test/TC_StandardDispatcherWithClassifier.rb +358 -0
  470. data/test/TC_String.rb +24 -0
  471. data/test/TC_Tag.rb +41 -0
  472. data/test/TC_Webrick.rb +56 -0
  473. data/test/TC_Webrick/doc/thing.txt +1 -0
  474. data/test/TC_Webrick/iowa/Main.html +3 -0
  475. data/test/TC_Webrick/iowa/Main.iwa +7 -0
  476. data/test/TC_Webrick/iowa/NewPage.html +1 -0
  477. data/test/TC_Webrick/iowa/NewPage.iwa +5 -0
  478. data/test/TC_Webrick/iowa/app.cnf +10 -0
  479. data/test/TC_Webrick/iowa/app.rb +5 -0
  480. data/test/tc_template.rb +15 -0
  481. data/test/tests.conf +19 -0
  482. data/utils/CVS/Entries +3 -0
  483. data/utils/CVS/Repository +1 -0
  484. data/utils/CVS/Root +1 -0
  485. data/utils/QuickCert-1.0.2.tar.gz +0 -0
  486. data/utils/QuickCert-1.0.2/InstalledFiles +7 -0
  487. data/utils/QuickCert-1.0.2/MANIFEST +10 -0
  488. data/utils/QuickCert-1.0.2/Makefile +15 -0
  489. data/utils/QuickCert-1.0.2/README +56 -0
  490. data/utils/QuickCert-1.0.2/bin/QuickCert +355 -0
  491. data/utils/QuickCert-1.0.2/config.save +12 -0
  492. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/README +60 -0
  493. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_c.rb +26 -0
  494. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_s.rb +35 -0
  495. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/qc_config +21 -0
  496. data/utils/QuickCert-1.0.2/lib/QuickCert/defaults.rb +28 -0
  497. data/utils/QuickCert-1.0.2/setup.rb +1312 -0
  498. data/utils/iowa_apps +422 -0
  499. data/utils/smtp_sink.rb +9 -0
  500. data/utils/startup_template.cnf +27 -0
  501. data/utils/startup_template.rb +73 -0
  502. metadata +551 -0
@@ -0,0 +1,88 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module DeviceIO
5
+ # Device Types
6
+ FILE_DEVICE_BEEP = 0x00000001
7
+ FILE_DEVICE_CD_ROM = 0x00000002
8
+ FILE_DEVICE_CD_ROM_FILE_SYSTEM = 0x00000003
9
+ FILE_DEVICE_CONTROLLER = 0x00000004
10
+ FILE_DEVICE_DATALINK = 0x00000005
11
+ FILE_DEVICE_DFS = 0x00000006
12
+ FILE_DEVICE_DISK = 0x00000007
13
+ FILE_DEVICE_DISK_FILE_SYSTEM = 0x00000008
14
+ FILE_DEVICE_FILE_SYSTEM = 0x00000009
15
+ FILE_DEVICE_INPORT_PORT = 0x0000000a
16
+ FILE_DEVICE_KEYBOARD = 0x0000000b
17
+ FILE_DEVICE_MAILSLOT = 0x0000000c
18
+ FILE_DEVICE_MIDI_IN = 0x0000000d
19
+ FILE_DEVICE_MIDI_OUT = 0x0000000e
20
+ FILE_DEVICE_MOUSE = 0x0000000f
21
+ FILE_DEVICE_MULTI_UNC_PROVIDER = 0x00000010
22
+ FILE_DEVICE_NAMED_PIPE = 0x00000011
23
+ FILE_DEVICE_NETWORK = 0x00000012
24
+ FILE_DEVICE_NETWORK_BROWSER = 0x00000013
25
+ FILE_DEVICE_NETWORK_FILE_SYSTEM = 0x00000014
26
+ FILE_DEVICE_NULL = 0x00000015
27
+ FILE_DEVICE_PARALLEL_PORT = 0x00000016
28
+ FILE_DEVICE_PHYSICAL_NETCARD = 0x00000017
29
+ FILE_DEVICE_PRINTER = 0x00000018
30
+ FILE_DEVICE_SCANNER = 0x00000019
31
+ FILE_DEVICE_SERIAL_MOUSE_PORT = 0x0000001a
32
+ FILE_DEVICE_SERIAL_PORT = 0x0000001b
33
+ FILE_DEVICE_SCREEN = 0x0000001c
34
+ FILE_DEVICE_SOUND = 0x0000001d
35
+ FILE_DEVICE_STREAMS = 0x0000001e
36
+ FILE_DEVICE_TAPE = 0x0000001f
37
+ FILE_DEVICE_TAPE_FILE_SYSTEM = 0x00000020
38
+ FILE_DEVICE_TRANSPORT = 0x00000021
39
+ FILE_DEVICE_UNKNOWN = 0x00000022
40
+ FILE_DEVICE_VIDEO = 0x00000023
41
+ FILE_DEVICE_VIRTUAL_DISK = 0x00000024
42
+ FILE_DEVICE_WAVE_IN = 0x00000025
43
+ FILE_DEVICE_WAVE_OUT = 0x00000026
44
+ FILE_DEVICE_8042_PORT = 0x00000027
45
+ FILE_DEVICE_NETWORK_REDIRECTOR = 0x00000028
46
+ FILE_DEVICE_BATTERY = 0x00000029
47
+ FILE_DEVICE_BUS_EXTENDER = 0x0000002a
48
+ FILE_DEVICE_MODEM = 0x0000002b
49
+ FILE_DEVICE_VDM = 0x0000002c
50
+ FILE_DEVICE_MASS_STORAGE = 0x0000002d
51
+ FILE_DEVICE_SMB = 0x0000002e
52
+ FILE_DEVICE_KS = 0x0000002f
53
+ FILE_DEVICE_CHANGER = 0x00000030
54
+ FILE_DEVICE_SMARTCARD = 0x00000031
55
+ FILE_DEVICE_ACPI = 0x00000032
56
+ FILE_DEVICE_DVD = 0x00000033
57
+ FILE_DEVICE_FULLSCREEN_VIDEO = 0x00000034
58
+ FILE_DEVICE_DFS_FILE_SYSTEM = 0x00000035
59
+ FILE_DEVICE_DFS_VOLUME = 0x00000036
60
+ FILE_DEVICE_SERENUM = 0x00000037
61
+ FILE_DEVICE_TERMSRV = 0x00000038
62
+ FILE_DEVICE_KSEC = 0x00000039
63
+ FILE_DEVICE_FIPS = 0x0000003A
64
+ FILE_DEVICE_INFINIBAND = 0x0000003B
65
+
66
+ METHOD_BUFFERED = 0
67
+ FILE_ANY_ACCESS = 0
68
+
69
+ DeviceIoControl = Win32API.new('kernel32', 'DeviceIoControl', 'LLPLPLPP', 'I')
70
+
71
+ def DeviceIoControl(dev, code, in_buf, in_buf_size, out_buf, out_buf_size, bytes, overlapped)
72
+ DeviceIoControl.call(dev, code, in_buf, in_buf_size, out_buf, out_buf_size, bytes, overlapped) > 0
73
+ end
74
+
75
+ # Macros from WinIoCtl.h
76
+ def CTL_CODE(device, function, method, access)
77
+ ((device) << 16) | ((access) << 14) | ((function) << 2) | (method)
78
+ end
79
+
80
+ def FSCTL_SET_COMPRESSION
81
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, 0, FILE_READ_DATA | FILE_WRITE_DATA)
82
+ end
83
+
84
+ def FSCTL_SET_SPARSE
85
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, 0, FILE_SPECIAL_ACCESS)
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,80 @@
1
+ require 'windows/unicode'
2
+
3
+ module Windows
4
+ module Directory
5
+ CreateDirectory = Win32API.new('kernel32', 'CreateDirectory', 'PP', 'I')
6
+ CreateDirectoryW = Win32API.new('kernel32', 'CreateDirectoryW', 'PP', 'I')
7
+ CreateDirectoryEx = Win32API.new('kernel32', 'CreateDirectoryEx', 'PPP', 'I')
8
+ CreateDirectoryExW = Win32API.new('kernel32', 'CreateDirectoryExW', 'PPP', 'I')
9
+ FindCloseChangeNotification = Win32API.new('kernel32', 'FindCloseChangeNotification', 'L', 'I')
10
+ FindFirstChangeNotification = Win32API.new('kernel32', 'FindFirstChangeNotification', 'PIL', 'L')
11
+ FindNextChangeNotification = Win32API.new('kernel32', 'FindFirstChangeNotification', 'PIL', 'I')
12
+ GetCurrentDirectory = Win32API.new('kernel32', 'GetCurrentDirectory', 'LP', 'L')
13
+ GetCurrentDirectoryW = Win32API.new('kernel32', 'GetCurrentDirectoryW', 'LP', 'L')
14
+ ReadDirectoryChangesW = Win32API.new('kernel32', 'ReadDirectoryChangesW', 'LPLILPPP', 'I')
15
+ RemoveDirectory = Win32API.new('kernel32', 'RemoveDirectory', 'P', 'I')
16
+ RemoveDirectoryW = Win32API.new('kernel32', 'RemoveDirectoryW', 'P', 'I')
17
+ SetCurrentDirectory = Win32API.new('kernel32', 'SetCurrentDirectory', 'P', 'I')
18
+ SetCurrentDirectoryW = Win32API.new('kernel32', 'SetCurrentDirectoryW', 'P', 'I')
19
+
20
+ def CreateDirectory(path, attributes = 0)
21
+ CreateDirectory.call(path, attributes) != 0
22
+ end
23
+
24
+ def CreateDirectoryW(path, attributes)
25
+ path = multi_to_wide(path) unless IsTextUnicode(path)
26
+ CreateDirectoryW.call(path, attributes) != 0
27
+ end
28
+
29
+ def CreateDirectoryEx(template, new_dir, attributes)
30
+ CreateDirectoryEx.call(template, new_dir, attributes) != 0
31
+ end
32
+
33
+ def CreateDirectoryExW(template, new_dir, attributes)
34
+ new_dir = multi_to_wide(new_dir) unless IsTextUnicode(new_dir)
35
+ CreateDirectoryExW.call(template, new_dir, attributes) != 0
36
+ end
37
+
38
+ def FindCloseChangeNotification(handle)
39
+ FindCloseChangeNotification.call(handle) != 0
40
+ end
41
+
42
+ def FindFirstChangeNotification(path, subtree, filter)
43
+ FindFirstChangeNotification.call(path, subtree, filter)
44
+ end
45
+
46
+ def FindNextChangeNotification(handle)
47
+ FindNextChangeNotification.call(handle) != 0
48
+ end
49
+
50
+ def GetCurrentDirectory(buf_len, buf)
51
+ GetCurrentDirectory.call(buf_len, buf)
52
+ end
53
+
54
+ def GetCurrentDirectoryW(buf_len, buf)
55
+ GetCurrentDirectoryW.call(buf_len, buf)
56
+ end
57
+
58
+ def ReadDirectoryChangesW(handle, buf, buf_len, subtree, filter, bytes, overlapped, routine)
59
+ ReadDirectoryChangesW.call(handle, buf, buf_len, subtree, filter, bytes, overlapped, routine) != 0
60
+ end
61
+
62
+ def RemoveDirectory(path)
63
+ RemoveDirectory.call(path) != 0
64
+ end
65
+
66
+ def RemoveDirectoryW(path)
67
+ path = multi_to_wide(path) unless IsTextUnicode(path)
68
+ RemoveDirectoryW.call(path) != 0
69
+ end
70
+
71
+ def SetCurrentDirectory(path)
72
+ SetCurrentDirectory.call(path) != 0
73
+ end
74
+
75
+ def SetCurrentDirectoryW(path)
76
+ path = multi_to_wide(path) unless IsTextUnicode(path)
77
+ SetCurrentDirectoryW.call(path) != 0
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,313 @@
1
+ ############################################################################
2
+ # error.rb
3
+ #
4
+ # Includes all of the error codes in error.h and some from winerror.h.
5
+ #
6
+ # Adds the following convenience methods:
7
+ #
8
+ # get_last_error - Returns a human readable string for the error returned
9
+ # by the GetLastError() function.
10
+ ############################################################################
11
+ require 'windows/unicode'
12
+
13
+ module Windows
14
+ module Error
15
+ FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
16
+ FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
17
+ FORMAT_MESSAGE_FROM_STRING = 0x00000400
18
+ FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
19
+ FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
20
+ FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
21
+ FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
22
+
23
+ SEM_FAILCRITICALERRORS = 0x0001
24
+ SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
25
+ SEM_NOGPFAULTERRORBOX = 0x0002
26
+ SEM_NOOPENFILEERRORBOX = 0x8000
27
+
28
+ NO_ERROR = 0
29
+ ERROR_SUCCESS = 0
30
+ ERROR_INVALID_FUNCTION = 1
31
+ ERROR_FILE_NOT_FOUND = 2
32
+ ERROR_PATH_NOT_FOUND = 3
33
+ ERROR_TOO_MANY_OPEN_FILES = 4
34
+ ERROR_ACCESS_DENIED = 5
35
+ ERROR_INVALID_HANDLE = 6
36
+ ERROR_ARENA_TRASHED = 7
37
+ ERROR_NOT_ENOUGH_MEMORY = 8
38
+ ERROR_INVALID_BLOCK = 9
39
+ ERROR_BAD_ENVIRONMENT = 10
40
+ ERROR_BAD_FORMAT = 11
41
+ ERROR_INVALID_ACCESS = 12
42
+ ERROR_INVALID_DATA = 13
43
+ ERROR_INVALID_DRIVE = 15
44
+ ERROR_CURRENT_DIRECTORY = 16
45
+ ERROR_NOT_SAME_DEVICE = 17
46
+ ERROR_NO_MORE_FILES = 18
47
+
48
+ ERROR_WRITE_PROTECT = 19
49
+ ERROR_BAD_UNIT = 20
50
+ ERROR_NOT_READY = 21
51
+ ERROR_BAD_COMMAND = 22
52
+ ERROR_CRC = 23
53
+ ERROR_BAD_LENGTH = 24
54
+ ERROR_SEEK = 25
55
+ ERROR_NOT_DOS_DISK = 26
56
+ ERROR_SECTOR_NOT_FOUND = 27
57
+ ERROR_OUT_OF_PAPER = 28
58
+ ERROR_WRITE_FAULT = 29
59
+ ERROR_READ_FAULT = 30
60
+ ERROR_GEN_FAILURE = 31
61
+
62
+ ERROR_SHARING_VIOLATION = 32
63
+ ERROR_LOCK_VIOLATION = 33
64
+ ERROR_WRONG_DISK = 34
65
+ ERROR_FCB_UNAVAILABLE = 35
66
+ ERROR_SHARING_BUFFER_EXCEEDED = 36
67
+
68
+ ERROR_NOT_SUPPORTED = 50
69
+
70
+ ERROR_FILE_EXISTS = 80
71
+ ERROR_DUP_FCB = 81
72
+ ERROR_CANNOT_MAKE = 82
73
+ ERROR_FAIL_I24 = 83
74
+
75
+ ERROR_OUT_OF_STRUCTURES = 84
76
+ ERROR_ALREADY_ASSIGNED = 85
77
+ ERROR_INVALID_PASSWORD = 86
78
+ ERROR_INVALID_PARAMETER = 87
79
+ ERROR_NET_WRITE_FAULT = 88
80
+
81
+ ERROR_NO_PROC_SLOTS = 89 # no process slots available
82
+ ERROR_NOT_FROZEN = 90
83
+ ERR_TSTOVFL = 91 # timer service table overflow
84
+ ERR_TSTDUP = 92 # timer service table duplicate
85
+ ERROR_NO_ITEMS = 93 # There were no items to operate upon
86
+ ERROR_INTERRUPT = 95 # interrupted system call
87
+
88
+ ERROR_TOO_MANY_SEMAPHORES = 100
89
+ ERROR_EXCL_SEM_ALREADY_OWNED = 101
90
+ ERROR_SEM_IS_SET = 102
91
+ ERROR_TOO_MANY_SEM_REQUESTS = 103
92
+ ERROR_INVALID_AT_INTERRUPT_TIME = 104
93
+
94
+ ERROR_SEM_OWNER_DIED = 105 # waitsem found owner died
95
+ ERROR_SEM_USER_LIMIT = 106 # too many procs have this sem
96
+ ERROR_DISK_CHANGE = 107 # insert disk b into drive a
97
+ ERROR_DRIVE_LOCKED = 108 # drive locked by another process
98
+ ERROR_BROKEN_PIPE = 109 # write on pipe with no reader
99
+
100
+ ERROR_OPEN_FAILED = 110 # open/created failed
101
+ ERROR_DISK_FULL = 112 # not enough space
102
+ ERROR_NO_MORE_SEARCH_HANDLES = 113 # can't allocate
103
+ ERROR_INVALID_TARGET_HANDLE = 114 # handle in DOSDUPHANDLE is invalid
104
+ ERROR_PROTECTION_VIOLATION = 115 # bad user virtual address
105
+ ERROR_VIOKBD_REQUEST = 116
106
+ ERROR_INVALID_CATEGORY = 117 # category for DEVIOCTL not defined
107
+ ERROR_INVALID_VERIFY_SWITCH = 118 # invalid value
108
+ ERROR_BAD_DRIVER_LEVEL = 119 # DosDevIOCTL not level four
109
+ ERROR_CALL_NOT_IMPLEMENTED = 120
110
+ ERROR_SEM_TIMEOUT = 121 # timeout from semaphore function
111
+ ERROR_INSUFFICIENT_BUFFER = 122
112
+
113
+ ERROR_INVALID_NAME = 123 # illegal char or malformed file system name
114
+ ERROR_INVALID_LEVEL = 124 # unimplemented level for info retrieval
115
+ ERROR_NO_VOLUME_LABEL = 125 # no volume label found
116
+ ERROR_MOD_NOT_FOUND = 126 # w_getprocaddr, w_getmodhandle
117
+ ERROR_PROC_NOT_FOUND = 127 # w_getprocaddr
118
+
119
+ ERROR_WAIT_NO_CHILDREN = 128 # CWait finds to children
120
+ ERROR_CHILD_NOT_COMPLETE = 129 # CWait children not dead yet
121
+
122
+ ERROR_DIRECT_ACCESS_HANDLE = 130 # invalid for direct disk access
123
+ ERROR_NEGATIVE_SEEK = 131 # tried to seek negative offset
124
+ ERROR_SEEK_ON_DEVICE = 132 # tried to seek on device or pipe
125
+
126
+ ERROR_IS_JOIN_TARGET = 133
127
+ ERROR_IS_JOINED = 134
128
+ ERROR_IS_SUBSTED = 135
129
+ ERROR_NOT_JOINED = 136
130
+ ERROR_NOT_SUBSTED = 137
131
+ ERROR_JOIN_TO_JOIN = 138
132
+ ERROR_SUBST_TO_SUBST = 139
133
+ ERROR_JOIN_TO_SUBST = 140
134
+ ERROR_SUBST_TO_JOIN = 141
135
+ ERROR_BUSY_DRIVE = 142
136
+ ERROR_SAME_DRIVE = 143
137
+ ERROR_DIR_NOT_ROOT = 144
138
+ ERROR_DIR_NOT_EMPTY = 145
139
+ ERROR_IS_SUBST_PATH = 146
140
+ ERROR_IS_JOIN_PATH = 147
141
+ ERROR_PATH_BUSY = 148
142
+ ERROR_IS_SUBST_TARGET = 149
143
+ ERROR_SYSTEM_TRACE = 150 # system trace error
144
+ ERROR_INVALID_EVENT_COUNT = 151 # DosMuxSemWait errors
145
+ ERROR_TOO_MANY_MUXWAITERS = 152
146
+ ERROR_INVALID_LIST_FORMAT = 153
147
+ ERROR_LABEL_TOO_LONG = 154
148
+ ERROR_TOO_MANY_TCBS = 155
149
+ ERROR_SIGNAL_REFUSED = 156
150
+ ERROR_DISCARDED = 157
151
+ ERROR_NOT_LOCKED = 158
152
+ ERROR_BAD_THREADID_ADDR = 159
153
+ ERROR_BAD_ARGUMENTS = 160
154
+ ERROR_BAD_PATHNAME = 161
155
+ ERROR_SIGNAL_PENDING = 162
156
+ ERROR_UNCERTAIN_MEDIA = 163
157
+ ERROR_MAX_THRDS_REACHED = 164
158
+ ERROR_MONITORS_NOT_SUPPORTED = 165
159
+
160
+ ERROR_INVALID_SEGMENT_NUMBER = 180
161
+ ERROR_INVALID_CALLGATE = 181
162
+ ERROR_INVALID_ORDINAL = 182
163
+ ERROR_ALREADY_EXISTS = 183
164
+ ERROR_NO_CHILD_PROCESS = 184
165
+ ERROR_CHILD_ALIVE_NOWAIT = 185
166
+ ERROR_INVALID_FLAG_NUMBER = 186
167
+ ERROR_SEM_NOT_FOUND = 187
168
+
169
+ ERROR_INVALID_STARTING_CODESEG = 188
170
+ ERROR_INVALID_STACKSEG = 189
171
+ ERROR_INVALID_MODULETYPE = 190
172
+ ERROR_INVALID_EXE_SIGNATURE = 191
173
+ ERROR_EXE_MARKED_INVALID = 192
174
+ ERROR_BAD_EXE_FORMAT = 193
175
+ ERROR_ITERATED_DATA_EXCEEDS_64k = 194
176
+ ERROR_INVALID_MINALLOCSIZE = 195
177
+ ERROR_DYNLINK_FROM_INVALID_RING = 196
178
+ ERROR_IOPL_NOT_ENABLED = 197
179
+ ERROR_INVALID_SEGDPL = 198
180
+ ERROR_AUTODATASEG_EXCEEDS_64k = 199
181
+ ERROR_RING2SEG_MUST_BE_MOVABLE = 200
182
+ ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201
183
+ ERROR_INFLOOP_IN_RELOC_CHAIN = 202
184
+
185
+ ERROR_ENVVAR_NOT_FOUND = 203
186
+ ERROR_NOT_CURRENT_CTRY = 204
187
+ ERROR_NO_SIGNAL_SENT = 205
188
+ ERROR_FILENAME_EXCED_RANGE = 206 # if filename > 8.3
189
+ ERROR_RING2_STACK_IN_USE = 207 # for FAPI
190
+ ERROR_META_EXPANSION_TOO_LONG = 208 # if "*a" > 8.3
191
+
192
+ ERROR_INVALID_SIGNAL_NUMBER = 209
193
+ ERROR_THREAD_1_INACTIVE = 210
194
+ ERROR_INFO_NOT_AVAIL = 211 #@@ PTM 5550
195
+ ERROR_LOCKED = 212
196
+ ERROR_BAD_DYNALINK = 213 #@@ PTM 5760
197
+ ERROR_TOO_MANY_MODULES = 214
198
+ ERROR_NESTING_NOT_ALLOWED = 215
199
+ ERROR_MORE_DATA = 234
200
+
201
+ ERROR_USER_DEFINED_BASE = 0xF000
202
+
203
+ ERROR_I24_WRITE_PROTECT = 0
204
+ ERROR_I24_BAD_UNIT = 1
205
+ ERROR_I24_NOT_READY = 2
206
+ ERROR_I24_BAD_COMMAND = 3
207
+ ERROR_I24_CRC = 4
208
+ ERROR_I24_BAD_LENGTH = 5
209
+ ERROR_I24_SEEK = 6
210
+ ERROR_I24_NOT_DOS_DISK = 7
211
+ ERROR_I24_SECTOR_NOT_FOUND = 8
212
+ ERROR_I24_OUT_OF_PAPER = 9
213
+ ERROR_I24_WRITE_FAULT = 0x0A
214
+ ERROR_I24_READ_FAULT = 0x0B
215
+ ERROR_I24_GEN_FAILURE = 0x0C
216
+ ERROR_I24_DISK_CHANGE = 0x0D
217
+ ERROR_I24_WRONG_DISK = 0x0F
218
+ ERROR_I24_UNCERTAIN_MEDIA = 0x10
219
+ ERROR_I24_CHAR_CALL_INTERRUPTED = 0x11
220
+ ERROR_I24_NO_MONITOR_SUPPORT = 0x12
221
+ ERROR_I24_INVALID_PARAMETER = 0x13
222
+
223
+ ALLOWED_FAIL = 0x0001
224
+ ALLOWED_ABORT = 0x0002
225
+ ALLOWED_RETRY = 0x0004
226
+ ALLOWED_IGNORE = 0x0008
227
+
228
+ I24_OPERATION = 0x1
229
+ I24_AREA = 0x6
230
+ I24_CLASS = 0x80
231
+
232
+
233
+ ERRCLASS_OUTRES = 1 # Out of Resource
234
+ ERRCLASS_TEMPSIT = 2 # Temporary Situation
235
+ ERRCLASS_AUTH = 3 # Permission problem
236
+ ERRCLASS_INTRN = 4 # Internal System Error
237
+ ERRCLASS_HRDFAIL = 5 # Hardware Failure
238
+ ERRCLASS_SYSFAIL = 6 # System Failure
239
+ ERRCLASS_APPERR = 7 # Application Error
240
+ ERRCLASS_NOTFND = 8 # Not Found
241
+ ERRCLASS_BADFMT = 9 # Bad Format
242
+ ERRCLASS_LOCKED = 10 # Locked
243
+ ERRCLASS_MEDIA = 11 # Media Failure
244
+ ERRCLASS_ALREADY = 12 # Collision with Existing Item
245
+ ERRCLASS_UNK = 13 # Unknown/other
246
+ ERRCLASS_CANT = 14
247
+ ERRCLASS_TIME = 15
248
+
249
+ ERRACT_RETRY = 1 # Retry
250
+ ERRACT_DLYRET = 2 # Delay Retry, retry after pause
251
+ ERRACT_USER = 3 # Ask user to regive info
252
+ ERRACT_ABORT = 4 # abort with clean up
253
+ ERRACT_PANIC = 5 # abort immediately
254
+ ERRACT_IGNORE = 6 # ignore
255
+ ERRACT_INTRET = 7 # Retry after User Intervention
256
+
257
+ ERRLOC_UNK = 1 # No appropriate value
258
+ ERRLOC_DISK = 2 # Random Access Mass Storage
259
+ ERRLOC_NET = 3 # Network
260
+ ERRLOC_SERDEV = 4 # Serial Device
261
+ ERRLOC_MEM = 5 # Memory
262
+
263
+ TC_NORMAL = 0
264
+ TC_HARDERR = 1
265
+ TC_GP_TRAP = 2
266
+ TC_SIGNAL = 3
267
+
268
+ # From WinError.h
269
+ ERROR_INVALID_FLAGS = 4100 # 1004L
270
+ ERROR_NO_UNICODE_TRANSLATION = 4371
271
+
272
+ GetLastError = Win32API.new('kernel32', 'GetLastError', 'V', 'L')
273
+ SetLastError = Win32API.new('kernel32', 'GetLastError', 'L', 'V')
274
+ SetLastErrorEx = Win32API.new('kernel32', 'GetLastError', 'LL', 'V')
275
+ SetErrorMode = Win32API.new('kernel32', 'SetErrorMode', 'I', 'I')
276
+ FormatMessage = Win32API.new('kernel32', 'FormatMessage', 'LLLLPLP', 'L')
277
+ FormatMessageW = Win32API.new('kernel32', 'FormatMessageW', 'LLLLPLP', 'L')
278
+
279
+ def GetLastError
280
+ GetLastError.call
281
+ end
282
+
283
+ def SetLastError(error)
284
+ SetLastError.call(error)
285
+ end
286
+
287
+ def SetLastErrorEx(error, type=0)
288
+ SetLastErrorEx.call(error, type)
289
+ end
290
+
291
+ def SetErrorMode(mode)
292
+ SetErrorMode.call(mode)
293
+ end
294
+
295
+ def FormatMessage(flags, src, msg_id, lang_id, buf, size, args)
296
+ FormatMessage.call(flags, src, msg_id, lang_id, buf, size, args)
297
+ end
298
+
299
+ def FormatMessageW(flags, src, msg_id, lang_id, buf, size, args)
300
+ FormatMessageW.call(flags, src, msg_id, lang_id, buf, size, args)
301
+ end
302
+
303
+ # Convenience method that wraps FormatMessage with some sane defaults and
304
+ # returns a human readable string.
305
+ #
306
+ def get_last_error(err_num = GetLastError.call)
307
+ buf = 0.chr * 260
308
+ flags = FORMAT_MESSAGE_FROM_SYSTEM + FORMAT_MESSAGE_ARGUMENT_ARRAY
309
+ FormatMessage.call(flags, 0, err_num, 0, buf, buf.size, 0)
310
+ buf.split(0.chr).first.chomp
311
+ end
312
+ end
313
+ end