1
0

add realpath to lualinux

This commit is contained in:
Daniel Barlow 2025-03-24 22:39:59 +00:00
parent 8440378a39
commit 7ce1c6bb7d
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,36 @@
diff --git a/lualinux.c b/lualinux.c
index f3d1a4d..9c5dc9c 100644
--- a/lualinux.c
+++ b/lualinux.c
@@ -387,6 +387,18 @@ static int ll_readlink(lua_State *L) {
RET_STRN(buf, n);
}
+static int ll_realpath(lua_State *L) {
+ const char *pname = luaL_checkstring(L, 1);
+ char * resolved = realpath(pname, NULL); /* mallocs */
+ if (resolved == 0) {
+ RET_ERRNO;
+ } else {
+ lua_pushstring(L, resolved);
+ free(resolved);
+ return 1;
+ }
+}
+
static int ll_lstat3(lua_State *L) {
// lua api: lstat3(path [,statflag:int])
// if statflag=1: do stat(). default: do lstat
@@ -924,6 +936,7 @@ static const struct luaL_Reg lualinuxlib[] = {
{"readdir", ll_readdir},
{"closedir", ll_closedir},
{"readlink", ll_readlink},
+ {"realpath", ll_realpath},
{"lstat3", ll_lstat3},
{"lstat", ll_lstat},
{"utime", ll_utime},
@@ -969,4 +982,3 @@ int luaopen_lualinux (lua_State *L) {
lua_settable (L, -3);
return 1;
}
-

View File

@ -13,6 +13,11 @@ lua.pkgs.buildLuaPackage {
version = "0.1"; # :shrug:
inherit src;
patches = [
./0001-realpath.patch
];
postPatch = ''
sed -i -e '/strip/d' Makefile
'';