rufus-lua-win 5.1.5

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 (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,23 @@
1
+ -- This file was automatically generated by LuaDist
2
+
3
+ -- LuaDist specific "relarive" root when using portable Lua install
4
+ local root = [[C:/Users/drahosp/Desktop/Work/Repository/_install/bin/_batteries/]]
5
+ if _PROGDIR then
6
+ root = _PROGDIR .. "/../"
7
+ end
8
+
9
+ module("luarocks.site_config")
10
+
11
+ LUAROCKS_PREFIX = root
12
+ LUA_INCDIR = root .. [[include]]
13
+ LUA_LIBDIR = root .. [[lib]]
14
+ LUA_BINDIR = root .. [[bin]]
15
+ LUA_BIN = [[lua]]
16
+ LUA_LIB = [[lua]]
17
+ LUAROCKS_SYSCONFIG = root .. [[etc/config.lua]]
18
+ LUAROCKS_ROCKS_TREE = root .. [[share/luarocks/rocks]]
19
+ LUAROCKS_FORCE_CONFIG = true
20
+ LUAROCKS_UNAME_S = [[MINGW]]
21
+ LUAROCKS_UNAME_M = [[x86]]
22
+ LUAROCKS_DOWNLOADER = [[curl]]
23
+ LUAROCKS_MD5CHECKER = [[md5]]
@@ -0,0 +1,712 @@
1
+ --- Patch utility to apply unified diffs.
2
+ --
3
+ -- http://lua-users.org/wiki/LuaPatch
4
+ --
5
+ -- (c) 2008 David Manura, Licensed under the same terms as Lua (MIT license).
6
+ -- Code is heavilly based on the Python-based patch.py version 8.06-1
7
+ -- Copyright (c) 2008 rainforce.org, MIT License
8
+ -- Project home: http://code.google.com/p/python-patch/ .
9
+
10
+ module("luarocks.tools.patch", package.seeall)
11
+
12
+ local fs = require("luarocks.fs")
13
+
14
+ local version = '0.1'
15
+
16
+ local io = io
17
+ local os = os
18
+ local string = string
19
+ local table = table
20
+ local format = string.format
21
+
22
+ -- logging
23
+ local debugmode = false
24
+ local function debug(s) end
25
+ local function info(s) end
26
+ local function warning(s) io.stderr:write(s .. '\n') end
27
+
28
+ -- Returns boolean whether string s2 starts with string s.
29
+ local function startswith(s, s2)
30
+ return s:sub(1, #s2) == s2
31
+ end
32
+
33
+ -- Returns boolean whether string s2 ends with string s.
34
+ local function endswith(s, s2)
35
+ return #s >= #s2 and s:sub(#s-#s2+1) == s2
36
+ end
37
+
38
+ -- Returns string s after filtering out any new-line characters from end.
39
+ local function endlstrip(s)
40
+ return s:gsub('[\r\n]+$', '')
41
+ end
42
+
43
+ -- Returns shallow copy of table t.
44
+ local function table_copy(t)
45
+ local t2 = {}
46
+ for k,v in pairs(t) do t2[k] = v end
47
+ return t2
48
+ end
49
+
50
+ -- Returns boolean whether array t contains value v.
51
+ local function array_contains(t, v)
52
+ for _,v2 in ipairs(t) do if v == v2 then return true end end
53
+ return false
54
+ end
55
+
56
+ local function exists(filename)
57
+ local fh = io.open(filename)
58
+ local result = fh ~= nil
59
+ if fh then fh:close() end
60
+ return result
61
+ end
62
+ local function isfile() return true end --FIX?
63
+
64
+ local function read_file(filename)
65
+ local fh, err, oserr = io.open(filename, 'rb')
66
+ if not fh then return fh, err, oserr end
67
+ local data, err, oserr = fh:read'*a'
68
+ fh:close()
69
+ if not data then return nil, err, oserr end
70
+ return data
71
+ end
72
+
73
+ local function write_file(filename, data)
74
+ local fh, err, oserr = io.open(filename 'wb')
75
+ if not fh then return fh, err, oserr end
76
+ local status, err, oserr = fh:write(data)
77
+ fh:close()
78
+ if not status then return nil, err, oserr end
79
+ return true
80
+ end
81
+
82
+ local function file_copy(src, dest)
83
+ local data, err, oserr = read_file(src)
84
+ if not data then return data, err, oserr end
85
+ local status, err, oserr = write_file(dest)
86
+ if not status then return status, err, oserr end
87
+ return true
88
+ end
89
+
90
+ local function string_as_file(s)
91
+ return {
92
+ at = 0,
93
+ str = s,
94
+ len = #s,
95
+ eof = false,
96
+ read = function(self, n)
97
+ if self.eof then return nil end
98
+ local chunk = self.str:sub(self.at, self.at+n)
99
+ self.at = self.at + n
100
+ if self.at > self.len then
101
+ self.eof = true
102
+ end
103
+ return chunk
104
+ end,
105
+ close = function(self)
106
+ self.eof = true
107
+ end,
108
+ }
109
+ end
110
+
111
+ --
112
+ -- file_lines(f) is similar to f:lines() for file f.
113
+ -- The main difference is that read_lines includes
114
+ -- new-line character sequences ("\n", "\r\n", "\r"),
115
+ -- if any, at the end of each line. Embedded "\0" are also handled.
116
+ -- Caution: The newline behavior can depend on whether f is opened
117
+ -- in binary or ASCII mode.
118
+ -- (file_lines - version 20080913)
119
+ --
120
+ local function file_lines(f)
121
+ local CHUNK_SIZE = 1024
122
+ local buffer = ""
123
+ local pos_beg = 1
124
+ return function()
125
+ local pos, chars
126
+ while 1 do
127
+ pos, chars = buffer:match('()([\r\n].)', pos_beg)
128
+ if pos or not f then
129
+ break
130
+ elseif f then
131
+ local chunk = f:read(CHUNK_SIZE)
132
+ if chunk then
133
+ buffer = buffer:sub(pos_beg) .. chunk
134
+ pos_beg = 1
135
+ else
136
+ f = nil
137
+ end
138
+ end
139
+ end
140
+ if not pos then
141
+ pos = #buffer
142
+ elseif chars == '\r\n' then
143
+ pos = pos + 1
144
+ end
145
+ local line = buffer:sub(pos_beg, pos)
146
+ pos_beg = pos + 1
147
+ if #line > 0 then
148
+ return line
149
+ end
150
+ end
151
+ end
152
+
153
+ local function match_linerange(line)
154
+ local m1, m2, m3, m4 = line:match("^@@ %-(%d+),(%d+) %+(%d+),(%d+)")
155
+ if not m1 then m1, m3, m4 = line:match("^@@ %-(%d+) %+(%d+),(%d+)") end
156
+ if not m1 then m1, m2, m3 = line:match("^@@ %-(%d+),(%d+) %+(%d+)") end
157
+ if not m1 then m1, m3 = line:match("^@@ %-(%d+) %+(%d+)") end
158
+ return m1, m2, m3, m4
159
+ end
160
+
161
+ function read_patch(filename, data)
162
+ -- define possible file regions that will direct the parser flow
163
+ local state = 'header'
164
+ -- 'header' - comments before the patch body
165
+ -- 'filenames' - lines starting with --- and +++
166
+ -- 'hunkhead' - @@ -R +R @@ sequence
167
+ -- 'hunkbody'
168
+ -- 'hunkskip' - skipping invalid hunk mode
169
+
170
+ local all_ok = true
171
+ local lineends = {lf=0, crlf=0, cr=0}
172
+ local files = {source={}, target={}, hunks={}, fileends={}, hunkends={}}
173
+ local nextfileno = 0
174
+ local nexthunkno = 0 --: even if index starts with 0 user messages
175
+ -- number hunks from 1
176
+
177
+ -- hunkinfo holds parsed values, hunkactual - calculated
178
+ local hunkinfo = {
179
+ startsrc=nil, linessrc=nil, starttgt=nil, linestgt=nil,
180
+ invalid=false, text={}
181
+ }
182
+ local hunkactual = {linessrc=nil, linestgt=nil}
183
+
184
+ info(format("reading patch %s", filename))
185
+
186
+ local fp
187
+ if data then
188
+ fp = string_as_file(data)
189
+ else
190
+ fp = filename == '-' and io.stdin or assert(io.open(filename, "rb"))
191
+ end
192
+ local lineno = 0
193
+
194
+ for line in file_lines(fp) do
195
+ lineno = lineno + 1
196
+ if state == 'header' then
197
+ if startswith(line, "--- ") then
198
+ state = 'filenames'
199
+ end
200
+ -- state is 'header' or 'filenames'
201
+ end
202
+ if state == 'hunkbody' then
203
+ -- skip hunkskip and hunkbody code until definition of hunkhead read
204
+
205
+ -- process line first
206
+ if line:match"^[- +\\]" or line:match"^[\r\n]*$" then
207
+ -- gather stats about line endings
208
+ local he = files.hunkends[nextfileno]
209
+ if endswith(line, "\r\n") then
210
+ he.crlf = he.crlf + 1
211
+ elseif endswith(line, "\n") then
212
+ he.lf = he.lf + 1
213
+ elseif endswith(line, "\r") then
214
+ he.cr = he.cr + 1
215
+ end
216
+ if startswith(line, "-") then
217
+ hunkactual.linessrc = hunkactual.linessrc + 1
218
+ elseif startswith(line, "+") then
219
+ hunkactual.linestgt = hunkactual.linestgt + 1
220
+ elseif startswith(line, "\\") then
221
+ -- nothing
222
+ else
223
+ hunkactual.linessrc = hunkactual.linessrc + 1
224
+ hunkactual.linestgt = hunkactual.linestgt + 1
225
+ end
226
+ table.insert(hunkinfo.text, line)
227
+ -- todo: handle \ No newline cases
228
+ else
229
+ warning(format("invalid hunk no.%d at %d for target file %s",
230
+ nexthunkno, lineno, files.target[nextfileno]))
231
+ -- add hunk status node
232
+ table.insert(files.hunks[nextfileno], table_copy(hunkinfo))
233
+ files.hunks[nextfileno][nexthunkno].invalid = true
234
+ all_ok = false
235
+ state = 'hunkskip'
236
+ end
237
+
238
+ -- check exit conditions
239
+ if hunkactual.linessrc > hunkinfo.linessrc or
240
+ hunkactual.linestgt > hunkinfo.linestgt
241
+ then
242
+ warning(format("extra hunk no.%d lines at %d for target %s",
243
+ nexthunkno, lineno, files.target[nextfileno]))
244
+ -- add hunk status node
245
+ table.insert(files.hunks[nextfileno], table_copy(hunkinfo))
246
+ files.hunks[nextfileno][nexthunkno].invalid = true
247
+ state = 'hunkskip'
248
+ elseif hunkinfo.linessrc == hunkactual.linessrc and
249
+ hunkinfo.linestgt == hunkactual.linestgt
250
+ then
251
+ table.insert(files.hunks[nextfileno], table_copy(hunkinfo))
252
+ state = 'hunkskip'
253
+
254
+ -- detect mixed window/unix line ends
255
+ local ends = files.hunkends[nextfileno]
256
+ if (ends.cr~=0 and 1 or 0) + (ends.crlf~=0 and 1 or 0) +
257
+ (ends.lf~=0 and 1 or 0) > 1
258
+ then
259
+ warning(format("inconsistent line ends in patch hunks for %s",
260
+ files.source[nextfileno]))
261
+ end
262
+ if debugmode then
263
+ local debuglines = {crlf=ends.crlf, lf=ends.lf, cr=ends.cr,
264
+ file=files.target[nextfileno], hunk=nexthunkno}
265
+ debug(format("crlf: %(crlf)d lf: %(lf)d cr: %(cr)d\t " ..
266
+ "- file: %(file)s hunk: %(hunk)d", debuglines))
267
+ end
268
+ end
269
+ -- state is 'hunkbody' or 'hunkskip'
270
+ end
271
+
272
+ if state == 'hunkskip' then
273
+ if match_linerange(line) then
274
+ state = 'hunkhead'
275
+ elseif startswith(line, "--- ") then
276
+ state = 'filenames'
277
+ if debugmode and #files.source > 0 then
278
+ debug(format("- %2d hunks for %s", #files.hunks[nextfileno],
279
+ files.source[nextfileno]))
280
+ end
281
+ end
282
+ -- state is 'hunkskip', 'hunkhead', or 'filenames'
283
+ end
284
+ local advance
285
+ if state == 'filenames' then
286
+ if startswith(line, "--- ") then
287
+ if array_contains(files.source, nextfileno) then
288
+ all_ok = false
289
+ warning(format("skipping invalid patch for %s",
290
+ files.source[nextfileno+1]))
291
+ table.remove(files.source, nextfileno+1)
292
+ -- double source filename line is encountered
293
+ -- attempt to restart from this second line
294
+ end
295
+ -- Accept a space as a terminator, like GNU patch does.
296
+ -- Breaks patches containing filenames with spaces...
297
+ -- FIXME Figure out what does GNU patch do in those cases.
298
+ local match = line:match("^--- ([^\t ]+)")
299
+ if not match then
300
+ all_ok = false
301
+ warning(format("skipping invalid filename at line %d", lineno+1))
302
+ state = 'header'
303
+ else
304
+ table.insert(files.source, match)
305
+ end
306
+ elseif not startswith(line, "+++ ") then
307
+ if array_contains(files.source, nextfileno) then
308
+ all_ok = false
309
+ warning(format("skipping invalid patch with no target for %s",
310
+ files.source[nextfileno+1]))
311
+ table.remove(files.source, nextfileno+1)
312
+ else
313
+ -- this should be unreachable
314
+ warning("skipping invalid target patch")
315
+ end
316
+ state = 'header'
317
+ else
318
+ if array_contains(files.target, nextfileno) then
319
+ all_ok = false
320
+ warning(format("skipping invalid patch - double target at line %d",
321
+ lineno+1))
322
+ table.remove(files.source, nextfileno+1)
323
+ table.remove(files.target, nextfileno+1)
324
+ nextfileno = nextfileno - 1
325
+ -- double target filename line is encountered
326
+ -- switch back to header state
327
+ state = 'header'
328
+ else
329
+ -- Accept a space as a terminator, like GNU patch does.
330
+ -- Breaks patches containing filenames with spaces...
331
+ -- FIXME Figure out what does GNU patch do in those cases.
332
+ local re_filename = "^%+%+%+ ([^ \t]+)"
333
+ local match = line:match(re_filename)
334
+ if not match then
335
+ all_ok = false
336
+ warning(format(
337
+ "skipping invalid patch - no target filename at line %d",
338
+ lineno+1))
339
+ state = 'header'
340
+ else
341
+ table.insert(files.target, match)
342
+ nextfileno = nextfileno + 1
343
+ nexthunkno = 0
344
+ table.insert(files.hunks, {})
345
+ table.insert(files.hunkends, table_copy(lineends))
346
+ table.insert(files.fileends, table_copy(lineends))
347
+ state = 'hunkhead'
348
+ advance = true
349
+ end
350
+ end
351
+ end
352
+ -- state is 'filenames', 'header', or ('hunkhead' with advance)
353
+ end
354
+ if not advance and state == 'hunkhead' then
355
+ local m1, m2, m3, m4 = match_linerange(line)
356
+ if not m1 then
357
+ if not array_contains(files.hunks, nextfileno-1) then
358
+ all_ok = false
359
+ warning(format("skipping invalid patch with no hunks for file %s",
360
+ files.target[nextfileno]))
361
+ end
362
+ state = 'header'
363
+ else
364
+ hunkinfo.startsrc = tonumber(m1)
365
+ hunkinfo.linessrc = tonumber(m2 or 1)
366
+ hunkinfo.starttgt = tonumber(m3)
367
+ hunkinfo.linestgt = tonumber(m4 or 1)
368
+ hunkinfo.invalid = false
369
+ hunkinfo.text = {}
370
+
371
+ hunkactual.linessrc = 0
372
+ hunkactual.linestgt = 0
373
+
374
+ state = 'hunkbody'
375
+ nexthunkno = nexthunkno + 1
376
+ end
377
+ -- state is 'header' or 'hunkbody'
378
+ end
379
+ end
380
+ if state ~= 'hunkskip' then
381
+ warning(format("patch file incomplete - %s", filename))
382
+ all_ok = false
383
+ -- os.exit(?)
384
+ else
385
+ -- duplicated message when an eof is reached
386
+ if debugmode and #files.source > 0 then
387
+ debug(format("- %2d hunks for %s", #files.hunks[nextfileno],
388
+ files.source[nextfileno]))
389
+ end
390
+ end
391
+
392
+ local sum = 0; for _,hset in ipairs(files.hunks) do sum = sum + #hset end
393
+ info(format("total files: %d total hunks: %d", #files.source, sum))
394
+ fp:close()
395
+ return files, all_ok
396
+ end
397
+
398
+ local function find_hunk(file, h, hno)
399
+ for fuzz=0,2 do
400
+ local lineno = h.startsrc
401
+ for i=0,#file do
402
+ local found = true
403
+ local location = lineno
404
+ local total = #h.text - fuzz
405
+ for l, hline in ipairs(h.text) do
406
+ if l > fuzz then
407
+ -- todo: \ No newline at the end of file
408
+ if startswith(hline, " ") or startswith(hline, "-") then
409
+ local line = file[lineno]
410
+ lineno = lineno + 1
411
+ if not line or #line == 0 then
412
+ found = false
413
+ break
414
+ end
415
+ if endlstrip(line) ~= endlstrip(hline:sub(2)) then
416
+ found = false
417
+ break
418
+ end
419
+ end
420
+ end
421
+ end
422
+ if found then
423
+ local offset = location - h.startsrc - fuzz
424
+ if offset ~= 0 then
425
+ warning(format("Hunk %d found at offset %d%s...", hno, offset, fuzz == 0 and "" or format(" (fuzz %d)", fuzz)))
426
+ end
427
+ h.startsrc = location
428
+ h.starttgt = h.starttgt + offset
429
+ for i=1,fuzz do
430
+ table.remove(h.text, 1)
431
+ table.remove(h.text, #h.text)
432
+ end
433
+ return true
434
+ end
435
+ lineno = i
436
+ end
437
+ end
438
+ return false
439
+ end
440
+
441
+ local function load_file(filename)
442
+ local fp = assert(io.open(filename))
443
+ local file = {}
444
+ local readline = file_lines(fp)
445
+ while true do
446
+ local line = readline()
447
+ if not line then break end
448
+ table.insert(file, line)
449
+ end
450
+ fp:close()
451
+ return file
452
+ end
453
+
454
+ local function find_hunks(file, hunks)
455
+ local matched = true
456
+ local lineno = 1
457
+ local hno = nil
458
+ for hno, h in ipairs(hunks) do
459
+ find_hunk(file, h, hno)
460
+ end
461
+ end
462
+
463
+ local function check_patched(file, hunks)
464
+ local matched = true
465
+ local lineno = 1
466
+ local hno = nil
467
+ local ok, err = pcall(function()
468
+ if #file == 0 then
469
+ error 'nomatch'
470
+ end
471
+ for hno, h in ipairs(hunks) do
472
+ -- skip to line just before hunk starts
473
+ if #file < h.starttgt then
474
+ error 'nomatch'
475
+ end
476
+ lineno = h.starttgt
477
+ for _, hline in ipairs(h.text) do
478
+ -- todo: \ No newline at the end of file
479
+ if not startswith(hline, "-") and not startswith(hline, "\\") then
480
+ local line = file[lineno]
481
+ lineno = lineno + 1
482
+ if #line == 0 then
483
+ error 'nomatch'
484
+ end
485
+ if endlstrip(line) ~= endlstrip(hline:sub(2)) then
486
+ warning(format("file is not patched - failed hunk: %d", hno))
487
+ error 'nomatch'
488
+ end
489
+ end
490
+ end
491
+ end
492
+ end)
493
+ if err == 'nomatch' then
494
+ matched = false
495
+ end
496
+ -- todo: display failed hunk, i.e. expected/found
497
+
498
+ return matched
499
+ end
500
+
501
+ local function patch_hunks(srcname, tgtname, hunks)
502
+ local src = assert(io.open(srcname, "rb"))
503
+ local tgt = assert(io.open(tgtname, "wb"))
504
+
505
+ local src_readline = file_lines(src)
506
+
507
+ -- todo: detect linefeeds early - in apply_files routine
508
+ -- to handle cases when patch starts right from the first
509
+ -- line and no lines are processed. At the moment substituted
510
+ -- lineends may not be the same at the start and at the end
511
+ -- of patching. Also issue a warning about mixed lineends
512
+
513
+ local srclineno = 1
514
+ local lineends = {['\n']=0, ['\r\n']=0, ['\r']=0}
515
+ for hno, h in ipairs(hunks) do
516
+ debug(format("processing hunk %d for file %s", hno, tgtname))
517
+ -- skip to line just before hunk starts
518
+ while srclineno < h.startsrc do
519
+ local line = src_readline()
520
+ -- Python 'U' mode works only with text files
521
+ if endswith(line, "\r\n") then
522
+ lineends["\r\n"] = lineends["\r\n"] + 1
523
+ elseif endswith(line, "\n") then
524
+ lineends["\n"] = lineends["\n"] + 1
525
+ elseif endswith(line, "\r") then
526
+ lineends["\r"] = lineends["\r"] + 1
527
+ end
528
+ tgt:write(line)
529
+ srclineno = srclineno + 1
530
+ end
531
+
532
+ for _,hline in ipairs(h.text) do
533
+ -- todo: check \ No newline at the end of file
534
+ if startswith(hline, "-") or startswith(hline, "\\") then
535
+ src_readline()
536
+ srclineno = srclineno + 1
537
+ else
538
+ if not startswith(hline, "+") then
539
+ src_readline()
540
+ srclineno = srclineno + 1
541
+ end
542
+ local line2write = hline:sub(2)
543
+ -- detect if line ends are consistent in source file
544
+ local sum = 0
545
+ for k,v in pairs(lineends) do if v > 0 then sum=sum+1 end end
546
+ if sum == 1 then
547
+ local newline
548
+ for k,v in pairs(lineends) do if v ~= 0 then newline = k end end
549
+ tgt:write(endlstrip(line2write) .. newline)
550
+ else -- newlines are mixed or unknown
551
+ tgt:write(line2write)
552
+ end
553
+ end
554
+ end
555
+ end
556
+ for line in src_readline do
557
+ tgt:write(line)
558
+ end
559
+ tgt:close()
560
+ src:close()
561
+ return true
562
+ end
563
+
564
+ local function strip_dirs(filename, strip)
565
+ if strip == nil then return filename end
566
+ for i=1,strip do
567
+ filename=filename:gsub("^[^/]*/", "")
568
+ end
569
+ return filename
570
+ end
571
+
572
+ function apply_patch(patch, strip)
573
+ local all_ok = true
574
+ local total = #patch.source
575
+ for fileno, filename in ipairs(patch.source) do
576
+ filename = strip_dirs(filename, strip)
577
+ local continue
578
+ local f2patch = filename
579
+ if not exists(f2patch) then
580
+ f2patch = strip_dirs(patch.target[fileno], strip)
581
+ f2patch = fs.absolute_name(f2patch)
582
+ if not exists(f2patch) then --FIX:if f2patch nil
583
+ warning(format("source/target file does not exist\n--- %s\n+++ %s",
584
+ filename, f2patch))
585
+ all_ok = false
586
+ continue = true
587
+ end
588
+ end
589
+ if not continue and not isfile(f2patch) then
590
+ warning(format("not a file - %s", f2patch))
591
+ all_ok = false
592
+ continue = true
593
+ end
594
+ if not continue then
595
+
596
+ filename = f2patch
597
+
598
+ info(format("processing %d/%d:\t %s", fileno, total, filename))
599
+
600
+ -- validate before patching
601
+ local hunks = patch.hunks[fileno]
602
+ local file = load_file(filename)
603
+ local hunkno = 1
604
+ local hunk = hunks[hunkno]
605
+ local hunkfind = {}
606
+ local hunkreplace = {}
607
+ local validhunks = 0
608
+ local canpatch = false
609
+ local hunklineno
610
+ local isbreak
611
+ local lineno = 0
612
+
613
+ find_hunks(file, hunks)
614
+
615
+ for _, line in ipairs(file) do
616
+ lineno = lineno + 1
617
+ local continue
618
+ if not hunk or lineno < hunk.startsrc then
619
+ continue = true
620
+ elseif lineno == hunk.startsrc then
621
+ hunkfind = {}
622
+ for _,x in ipairs(hunk.text) do
623
+ if x:sub(1,1) == ' ' or x:sub(1,1) == '-' then
624
+ hunkfind[#hunkfind+1] = endlstrip(x:sub(2))
625
+ end end
626
+ hunkreplace = {}
627
+ for _,x in ipairs(hunk.text) do
628
+ if x:sub(1,1) == ' ' or x:sub(1,1) == '+' then
629
+ hunkreplace[#hunkreplace+1] = endlstrip(x:sub(2))
630
+ end end
631
+ --pprint(hunkreplace)
632
+ hunklineno = 1
633
+
634
+ -- todo
635
+ end
636
+ -- check hunks in source file
637
+ if not continue and lineno < hunk.startsrc + #hunkfind - 1 then
638
+ if endlstrip(line) == hunkfind[hunklineno] then
639
+ hunklineno = hunklineno + 1
640
+ else
641
+ debug(format("hunk no.%d doesn't match source file %s",
642
+ hunkno, filename))
643
+ -- file may be already patched, but check other hunks anyway
644
+ hunkno = hunkno + 1
645
+ if hunkno <= #hunks then
646
+ hunk = hunks[hunkno]
647
+ continue = true
648
+ else
649
+ isbreak = true; break
650
+ end
651
+ end
652
+ end
653
+ -- check if processed line is the last line
654
+ if not continue and lineno == hunk.startsrc + #hunkfind - 1 then
655
+ debug(format("file %s hunk no.%d -- is ready to be patched",
656
+ filename, hunkno))
657
+ hunkno = hunkno + 1
658
+ validhunks = validhunks + 1
659
+ if hunkno <= #hunks then
660
+ hunk = hunks[hunkno]
661
+ else
662
+ if validhunks == #hunks then
663
+ -- patch file
664
+ canpatch = true
665
+ isbreak = true; break
666
+ end
667
+ end
668
+ end
669
+ end
670
+ if not isbreak then
671
+ if hunkno <= #hunks then
672
+ warning(format("premature end of source file %s at hunk %d",
673
+ filename, hunkno))
674
+ all_ok = false
675
+ end
676
+ end
677
+ if validhunks < #hunks then
678
+ if check_patched(file, hunks) then
679
+ warning(format("already patched %s", filename))
680
+ else
681
+ warning(format("source file is different - %s", filename))
682
+ all_ok = false
683
+ end
684
+ end
685
+ if canpatch then
686
+ local backupname = filename .. ".orig"
687
+ if exists(backupname) then
688
+ warning(format("can't backup original file to %s - aborting",
689
+ backupname))
690
+ all_ok = false
691
+ else
692
+ assert(os.rename(filename, backupname))
693
+ if patch_hunks(backupname, filename, hunks) then
694
+ warning(format("successfully patched %s", filename))
695
+ assert(os.remove(backupname))
696
+ else
697
+ warning(format("error patching file %s", filename))
698
+ assert(file_copy(filename, filename .. ".invalid"))
699
+ warning(format("invalid version is saved to %s",
700
+ filename .. ".invalid"))
701
+ -- todo: proper rejects
702
+ assert(os.rename(backupname, filename))
703
+ all_ok = false
704
+ end
705
+ end
706
+ end
707
+
708
+ end -- if not continue
709
+ end -- for
710
+ -- todo: check for premature eof
711
+ return all_ok
712
+ end