base/lua: updates to be compatible with both Lua 5.2 and Lua 5.1
authorThomas Harning Jr <harningt@gmail.com>
Wed, 11 Apr 2012 02:43:42 +0000 (10 22:43 -0400)
committerThomas Harning Jr <harningt@gmail.com>
Wed, 11 Apr 2012 03:14:19 +0000 (10 23:14 -0400)
CHANGELOG
include/luaevent.h
lua/luaevent.lua
test/basic.lua
test/test.lua
test/testClient.lua
test/timertest.lua

index 3300516..9fec9e5 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,8 @@
 0.4.0 - WIP
+ * Makes compatible with Lua 5.2
+   * Remove use of 'module' in sources
+   * Remove assumption that luaevent will set globals
+     - Only 'core' will modify global table (creating luaevent.core)
  * Fixes bug in merge for receivePartial
 0.3.2 - 2011-07-06
  * Fixed recorded version in Lua
index e419998..c462545 100644 (file)
@@ -1,9 +1,30 @@
-/* LuaEvent - Copyright (C) 2007 Thomas Harning <harningt@gmail.com>
+/* LuaEvent - Copyright (C) 2007,2012 Thomas Harning <harningt@gmail.com>
  * Licensed as LGPL - See doc/COPYING for details */
 #ifndef LUAEVENT_H
 #define LUAEVENT_H
 
 #include <lua.h>
+
+/* Workarounds for Lua 5.2 */
+#if (LUA_VERSION_NUM == 502)
+
+#undef lua_equal
+#define lua_equal(L,idx1,idx2) lua_compare(L, (idx1), (idx2), LUA_OPEQ)
+
+#undef lua_getfenv
+#define lua_getfenv lua_getuservalue
+#undef lua_setfenv
+#define lua_setfenv lua_setuservalue
+
+#undef lua_objlen
+#define lua_objlen lua_rawlen
+
+#undef luaL_register
+#define luaL_register(L, n, f) \
+       { if ((n) == NULL) luaL_setfuncs(L, f, 0); else luaL_newlib(L, f); }
+
+#endif
+
 #include <sys/types.h>
 #ifdef _WIN32
 #include <winsock2.h>
index 2947ce9..c532956 100644 (file)
@@ -2,15 +2,16 @@
        LuaEvent - Copyright (C) 2007,2012 Thomas Harning <harningt@gmail.com>
        Licensed as LGPL - See doc/COPYING for details.
 ]]
-module("luaevent", package.seeall)
-require("luaevent.core")
+local _M = {}
+local core = require("luaevent.core")
 
-_NAME = "luaevent";
-_VERSION = "0.3.2";
+_M.core = core
+_M._NAME = "luaevent"
+_M._VERSION = "0.4.0"
 
-local EV_READ = luaevent.core.EV_READ
-local EV_WRITE = luaevent.core.EV_WRITE
-local base = luaevent.core.new()
+local EV_READ = core.EV_READ
+local EV_WRITE = core.EV_WRITE
+local base = core.new()
 
 local function addevent(...)
        return base:addevent(...)
@@ -30,7 +31,7 @@ local function socketWait(sock, event)
 end
 
 
-function send(sock, data, start, stop)
+function _M.send(sock, data, start, stop)
        local s, err
        local from = start or 1
        local sent = 0
@@ -41,7 +42,7 @@ function send(sock, data, start, stop)
                socketWait(sock, EV_WRITE)
        until false
 end
-function receive(sock, pattern, part)
+function _M.receive(sock, pattern, part)
        local s, err
        pattern = pattern or '*l'
        repeat
@@ -52,17 +53,18 @@ function receive(sock, pattern, part)
 end
 -- same as above but with special treatment when reading chunks,
 -- unblocks on any data received.
-function receivePartial(client, pattern)
+function _M.receivePartial(client, pattern)
        local s, err, part
        pattern = pattern or "*l"
        repeat
-       s, err, part = client:receive(pattern)
-       if s or ( (type(pattern)=="number") and part~="" and part ~=nil ) or 
-               err ~= "timeout" then return s, err, part end
+               s, err, part = client:receive(pattern)
+               if s or ( (type(pattern)=="number") and part~="" and part ~=nil ) or err ~= "timeout" then
+                       return s, err, part
+               end
                socketWait(client, EV_READ)
        until false
 end
-function connect(sock, ...)
+function _M.connect(sock, ...)
        sock:settimeout(0)
        local ret, err = sock:connect(...)
        if ret or err ~= "timeout" then return ret, err end
@@ -74,7 +76,7 @@ function connect(sock, ...)
        return ret, err
 end
 -- Deprecated..
-function flush(sock)
+function _M.flush(sock)
 end
 local function clientCoroutine(sock, handler)
        -- Figure out what to do ......
@@ -96,30 +98,30 @@ local function serverCoroutine(sock, callback)
                end
        until false
 end
-function addserver(sock, callback)
+function _M.addserver(sock, callback)
        local coro = coroutine.create(serverCoroutine)
        assert(coroutine.resume(coro, sock, callback))
 end
-function addthread(func, ...)
+function _M.addthread(func, ...)
        return coroutine.resume(coroutine.create(func), ...)
 end
 local _skt_mt = {__index = {
        connect = function(self, ...)
-               return connect(self.socket, ...)
+               return _M.connect(self.socket, ...)
        end,
        send = function (self, data)
-               return send(self.socket, data)
+               return _M.send(self.socket, data)
        end,
        
        receive = function (self, pattern)
                if (self.timeout==0) then
-                       return receivePartial(self.socket, pattern)
+                       return _M.receivePartial(self.socket, pattern)
                end
-               return receive(self.socket, pattern)
+               return _M.receive(self.socket, pattern)
        end,
        
        flush = function (self)
-               return flush(self.socket)
+               return _M.flush(self.socket)
        end,
        
        settimeout = function (self,time)
@@ -132,7 +134,9 @@ local _skt_mt = {__index = {
                self.socket:close()
        end
 }}
-function wrap(sock)
+function _M.wrap(sock)
        return setmetatable({socket = sock}, _skt_mt)
 end
-loop = function(...) base:loop(...) end
+_M.loop = function(...) base:loop(...) end
+
+return _M
index 4ec72c4..7e9773b 100644 (file)
@@ -1,4 +1,4 @@
-require "luaevent"
+local luaevent = require("luaevent")
 
 print("Version:", luaevent._NAME.." "..luaevent._VERSION)
 print("libevent version:", luaevent.core.libevent_version())
index 412857e..b748542 100644 (file)
@@ -3,8 +3,9 @@
 -- Run the test file and the connect to the server by telnet on the used port
 -- to stop the test just send the command "quit"
 
-require"luaevent"
-require"socket"
+local luaevent = require("luaevent")
+local socket = require("socket")
+
 local oldPrint = print
 print = function(...)
        oldPrint("SRV", ...)
index 871207a..fcf3b0b 100644 (file)
@@ -1,5 +1,6 @@
-require"luaevent"
-require"socket"
+local luaevent = require("luaevent")
+local socket = require("socket")
+
 local oldPrint = print
 print = function(...)
        oldPrint("CLT", ...)
index ec1257c..3261013 100644 (file)
@@ -1,9 +1,9 @@
-require("luaevent.core")
+local core = require("luaevent.core")
 
-c = luaevent.core.new()
+c = core.new()
 local f = 100
 local function createEvent()
-       return c:addevent(nil, luaevent.core.EV_TIMEOUT, function(ev) io.write(".." .. f) f = f - 1 if f < 0 then return -1 end collectgarbage() end, 0.01)
+       return c:addevent(nil, core.EV_TIMEOUT, function(ev) io.write(".." .. f) f = f - 1 if f < 0 then return -1 end collectgarbage() end, 0.01)
 end
 ev = createEvent()
 print("TESTING Garbage-collect-safe version")