obs-scripting: Refactor Lua C paths

This commit is contained in:
tytan652 2024-06-13 14:46:52 +02:00 committed by Ryan Foster
parent b16516a3fa
commit 508f9c2e3c

View file

@ -39,13 +39,11 @@
#define SO_EXT "so"
#endif
static const char *startup_script_template =
"\
static const char *startup_script_template = "\
for val in pairs(package.preload) do\n\
package.preload[val] = nil\n\
end\n\
package.cpath = package.cpath .. \";\" .. \"%s/?." SO_EXT
"\" .. \";\" .. \"%s\" .. \"/?." SO_EXT "\"\n\
%s\
require \"obslua\"\n";
static const char *get_script_path_func = "\
@ -1345,6 +1343,11 @@ void obs_lua_script_save(obs_script_t *s)
/* -------------------------------------------- */
static inline void add_package_cpath(struct dstr *cpath, const char *path)
{
dstr_catf(cpath, " .. \";\" .. \"%s\" .. \"/?." SO_EXT "\"", path);
}
void obs_lua_load(void)
{
struct dstr tmp = {0};
@ -1360,6 +1363,7 @@ void obs_lua_load(void)
#define PATH_MAX MAX_PATH
#endif
struct dstr package_cpath = {0};
char import_path[PATH_MAX];
#ifdef __APPLE__
@ -1377,7 +1381,23 @@ void obs_lua_load(void)
#else
strcpy(import_path, "./");
#endif
dstr_printf(&tmp, startup_script_template, import_path, SCRIPT_DIR);
dstr_cat(&package_cpath, "package.cpath = package.cpath");
add_package_cpath(&package_cpath, import_path);
#if !defined(_WIN32) && !defined(__APPLE__)
char *relative_script_path =
os_get_executable_path_ptr("../" SCRIPT_DIR);
if (relative_script_path)
add_package_cpath(&package_cpath, relative_script_path);
bfree(relative_script_path);
#endif
add_package_cpath(&package_cpath, SCRIPT_DIR);
dstr_cat(&package_cpath, "\n");
dstr_printf(&tmp, startup_script_template, package_cpath.array);
dstr_free(&package_cpath);
startup_script = tmp.array;
obs_add_tick_callback(lua_tick, NULL);