From 3ff84e5e4ff402b550b7fa768e010a3586dded10 Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Thu, 25 Jun 2009 13:26:05 +0000 Subject: Lua: add the package library git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21506 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/lua/rocklib.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'apps/plugins/lua/rocklib.c') diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c index a3a42af..f22bd01 100644 --- a/apps/plugins/lua/rocklib.c +++ b/apps/plugins/lua/rocklib.c @@ -866,13 +866,33 @@ RB_WRAP(read_bmp_file) RB_WRAP(current_path) { char buffer[MAX_PATH]; - if(get_cur_path(L, buffer, sizeof(buffer))) + lua_Debug ar; + + if(lua_getstack(L, 1, &ar)) { - lua_pushstring(L, buffer); - return 1; + /* Try determining the base path of the current Lua chunk + and write it to dest. */ + lua_getinfo(L, "S", &ar); + + char* curfile = (char*) &ar.source[1]; + char* pos = rb->strrchr(curfile, '/'); + if(pos != NULL) + { + unsigned int len = (unsigned int)(pos - curfile); + len = len + 1 > sizeof(buffer) ? sizeof(buffer) - 1 : len; + + if(len > 0) + memcpy(buffer, curfile, len); + + buffer[len] = '/'; + buffer[len+1] = '\0'; + + lua_pushstring(L, buffer); + return 1; + } } - else - return 0; + + return 0; } #define R(NAME) {#NAME, rock_##NAME} -- cgit v1.1