0001-realpath.patch (943B)
1 diff --git a/lualinux.c b/lualinux.c 2 index f3d1a4d..9c5dc9c 100644 3 --- a/lualinux.c 4 +++ b/lualinux.c 5 @@ -387,6 +387,18 @@ static int ll_readlink(lua_State *L) { 6 RET_STRN(buf, n); 7 } 8 9 +static int ll_realpath(lua_State *L) { 10 + const char *pname = luaL_checkstring(L, 1); 11 + char * resolved = realpath(pname, NULL); /* mallocs */ 12 + if (resolved == 0) { 13 + RET_ERRNO; 14 + } else { 15 + lua_pushstring(L, resolved); 16 + free(resolved); 17 + return 1; 18 + } 19 +} 20 + 21 static int ll_lstat3(lua_State *L) { 22 // lua api: lstat3(path [,statflag:int]) 23 // if statflag=1: do stat(). default: do lstat 24 @@ -924,6 +936,7 @@ static const struct luaL_Reg lualinuxlib[] = { 25 {"readdir", ll_readdir}, 26 {"closedir", ll_closedir}, 27 {"readlink", ll_readlink}, 28 + {"realpath", ll_realpath}, 29 {"lstat3", ll_lstat3}, 30 {"lstat", ll_lstat}, 31 {"utime", ll_utime}, 32 @@ -969,4 +982,3 @@ int luaopen_lualinux (lua_State *L) { 33 lua_settable (L, -3); 34 return 1; 35 } 36 -