From 6fa2586afea05d1a79b8d7238fd2617e9d069b6e Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Mon, 7 Jun 2010 10:43:43 +0000
Subject: [PATCH] package.path fix
---
src/sdl-instead/game.c | 3 ++-
src/sdl-instead/instead.c | 29 ++++++++++++++++++++---------
src/sdl-instead/main.c | 1 +
3 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/src/sdl-instead/game.c b/src/sdl-instead/game.c
index 9b0eb82..2b00632 100644
--- a/src/sdl-instead/game.c
+++ b/src/sdl-instead/game.c
@@ -622,7 +622,8 @@ int counter_fn(int interval, void *p)
int game_init(const char *name)
{
getcwd(game_cwd, sizeof(game_cwd));
-
+ unix_path(game_cwd);
+
if (name)
game_err_msg(NULL);
diff --git a/src/sdl-instead/instead.c b/src/sdl-instead/instead.c
index f36032d..491bc6e 100644
--- a/src/sdl-instead/instead.c
+++ b/src/sdl-instead/instead.c
@@ -411,19 +411,17 @@ static const luaL_Reg base_funcs[] = {
{NULL, NULL}
};
-int instead_init(void)
+static int instead_package(void)
{
char *p;
- static char stead_path[PATH_MAX];
- setlocale(LC_ALL,"");
- setlocale(LC_NUMERIC,"C"); /* to avoid . -> , in numbers */
-
+ char stead_path[PATH_MAX] = "package.path=\"";
+
if (STEAD_PATH[0] == '.') {
- strcpy(stead_path, game_cwd);
+ strcat(stead_path, game_cwd);
strcat(stead_path, "/");
strcat(stead_path, STEAD_PATH);
} else {
- strcpy(stead_path, STEAD_PATH);
+ strcat(stead_path, STEAD_PATH);
}
strcat(stead_path, "/?.lua");
p = game_local_stead_path();
@@ -432,15 +430,28 @@ int instead_init(void)
strcat(stead_path, p);
strcat(stead_path, "/?.lua");
}
-
- setenv("LUA_PATH", stead_path, 1);
+ strcat(stead_path, "\"");
+ instead_eval(stead_path); instead_clear();
+/* putenv(stead_path); */
+ return 0;
+}
+int instead_init(void)
+{
+ setlocale(LC_ALL,"");
+ setlocale(LC_NUMERIC,"C"); /* to avoid . -> , in numbers */
// strcpy(curcp, "UTF-8");
+
/* initialize Lua */
+
L = lua_open();
if (!L)
return -1;
+
luaL_openlibs(L);
luaL_register(L, "_G", base_funcs);
+
+ instead_package();
+
if (dofile(L,STEAD_PATH"/stead.lua")) {
return -1;
}
diff --git a/src/sdl-instead/main.c b/src/sdl-instead/main.c
index 88e8433..82cf593 100644
--- a/src/sdl-instead/main.c
+++ b/src/sdl-instead/main.c
@@ -54,6 +54,7 @@ int main(int argc, char **argv)
#endif
putenv("SDL_MOUSE_RELATIVE=0"); /* test this! */
getcwd(game_cwd, sizeof(game_cwd));
+ unix_path(game_cwd);
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i],"-alsa"))
alsa_sw = 1;