1
0
Fork 0
forked from len0rd/rockbox

Lua: because Rockbox doesn't support any current working directory functionality, 'hack' loadlib so it replace '$' in LUA_PATH_DEFAULT with the directory wherein the current script is.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21595 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2009-07-01 17:01:22 +00:00
parent d5180f7870
commit 9bff845b49
5 changed files with 44 additions and 29 deletions

View file

@ -20,6 +20,7 @@
#include "lauxlib.h"
#include "lualib.h"
#include "rocklib.h"
#define setprogdir(L) ((void)0)
@ -53,7 +54,7 @@ static const char *pushnexttemplate (lua_State *L, const char *path) {
static const char *findfile (lua_State *L, const char *name,
const char *pname) {
const char *path;
const char *path, *current_path = get_current_path(L, 2);
name = luaL_gsub(L, name, ".", LUA_DIRSEP);
lua_getfield(L, LUA_ENVIRONINDEX, pname);
path = lua_tostring(L, -1);
@ -63,6 +64,7 @@ static const char *findfile (lua_State *L, const char *name,
while ((path = pushnexttemplate(L, path)) != NULL) {
const char *filename;
filename = luaL_gsub(L, lua_tostring(L, -1), LUA_PATH_MARK, name);
if(current_path != NULL) filename = luaL_gsub(L, filename, "$", current_path);
lua_remove(L, -2); /* remove path template */
if (readable(filename)) /* does file exist and is readable? */
return filename; /* return that file name */