commit 7ce1c6bb7d2fb61ab81dfa408310fa2711e908c4
parent 8440378a393d1c4b64b48c8a93f68e38bc76d278
Author: Daniel Barlow <dan@telent.net>
Date: Mon, 24 Mar 2025 22:39:59 +0000
add realpath to lualinux
Diffstat:
2 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/pkgs/lualinux/0001-realpath.patch b/pkgs/lualinux/0001-realpath.patch
@@ -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;
+ }
+-
diff --git a/pkgs/lualinux/default.nix b/pkgs/lualinux/default.nix
@@ -13,6 +13,11 @@ lua.pkgs.buildLuaPackage {
version = "0.1"; # :shrug:
inherit src;
+
+ patches = [
+ ./0001-realpath.patch
+ ];
+
postPatch = ''
sed -i -e '/strip/d' Makefile
'';