S
Size: a a a
S
S
IS
IS
[ivan@pc host]$ pwd
/home/ivan/p/luajit/src/host
[ivan@pc host]$ gcc minilua.c -lm
IS
XCFLAGS+= -DLUAJIT_DISABLE_JIT
G
require"foo.bar.baz"
и require"foo/bar/baz"
?S
package.config
. Там будет что-то подобное:> =package.configКак вспомогательное, пример содержимого
\
;
?
!
-
package.path
:
"/libdir/?.lua;/libdir2/?.lua"
1. \ или / как разделитель путей ОС и простой способ детектить, под вендой ли мы, на него будут заменены все точки в пути для require
.;
— разделитель путей в package.path/cpath
.?
символ подстановки имени файла в package.path/cpath
.!
— символ который будет заменён путём до интерпретатора.-
— специальная фигня для реквайринга сишных либ.G
require"foo/bar"
не выдаст закешированный require"foo.bar"
https://github.com/lua/lua/blob/master/loadlib.c#L481-L505G
_G._LOADED == nil
?S
require"foo/bar"
не выдаст закешированный require"foo.bar"
, но должен выдать закешированный require"foo/bar"
.S
oldreq = require
function require(...)
local path = ...
path = path:gsub("[\\/]", ".")
return oldreq(path, select(2, ...))
end
Но это костыль для решения костыльной задачи впихивания костылей.G
S
S
G
G
S
VM
S