It was thus said that the Great Soni They/Them L. once stated:
On 2018-02-25 04:51 PM, Sean Conner wrote:
Are there cases of static linking where you can't just change the symbol
names?
Well, you can change the name in the source code (more portable, probably
the "easiest" way). Changing the name after you have object code is ... I
don't know. If you can, it's most likely very system dependent.
It does appear that Lua 5.3 also passes in the path (as the second Lua
parameter) to each searcher, so either the documenation is wrong, or it's
an undocumted feature.
$ lua
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
package.preload.hello = print
require "hello"
hello nil
And if you read the entire section you would see this behavior documented.
I didn't quote the entire section (I apologize if I gave the impression I
did).
true
io.open("world.lua", "w"):write("print (...)"):close()
true
require "world"
world ./world.lua
true
-- can't test a C module here but w/e, what happens if you print the
C stack from a C module?
I'll assume you mean the Lua stack from a C lua function. So here you go:
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
int luaopen_cmod(lua_State *L)
{
int max = lua_gettop(L);
int i;
for (i = 1 ; i <= max ; i++)
{
char const *name;
char const *type;
int ri;
lua_getglobal(L,"tostring");
lua_pushvalue(L,i);
lua_call(L,1,1);
name = lua_tostring(L,-1);
type = luaL_typename(L,i);
ri = i - max - 1;
printf("Stack: %d %d - %s %s\n",i,ri,type,name);
lua_pop(L,1);
}
lua_pushboolean(L,1);
return 1;
}
[spc]lucy:/tmp>lua-53
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
> require "cmod"
Stack: 1 -2 - string cmod
Stack: 2 -1 - string ./cmod.so
true
>
Answers your question?
-spc