[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: building a single lua binary with luasocket
- From: Brian Murphy <brian@...>
- Date: Wed, 01 Jun 2005 19:08:21 +0200
Diego Nehab wrote:
luaopen_lsocket is a C function which needs a wrapper to be called from
lua, as far as I am aware...
Luaopen_lsocket shouldn't be called directly from Lua. It should be
called by require, when require"lsocket" is invoked by socket.lua, which
in turn is executed when require"socket" is called by the user.
In a traditional instalation, require"lsocket" will search for
lsocket.dll and use loadlib to get luaopen_lsocket. Placing it in
package.preload["lsocket"] simply avoids the search. Everything else
works the same.
This is not "just" placing luaopen_lsocket in
I feel that my method is more transparent in that no changes have to be
made in lua code for it to work (after my patch is applied) and if
does a require"lsocket" with the current socket then a load of
fail, i.e. any order of loading modules works and loading the C
requires no special handling.
Why isn't this "just" placing it in package.preload? You don't need to
use lua_register. You can use lua_pushcfunction and then lua_settable
from C. No need to create the global "open_lsocket" or change Lua code.
I have implimented this now. Can this be documented somewhere ?
I will donate the "C" code fragment that does the package.preload
I still believe it's asking for trouble if two different files import