From 7ce1c6bb7d2fb61ab81dfa408310fa2711e908c4 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Mon, 24 Mar 2025 22:39:59 +0000 Subject: [PATCH] add realpath to lualinux --- pkgs/lualinux/0001-realpath.patch | 36 +++++++++++++++++++++++++++++++ pkgs/lualinux/default.nix | 5 +++++ 2 files changed, 41 insertions(+) create mode 100644 pkgs/lualinux/0001-realpath.patch diff --git a/pkgs/lualinux/0001-realpath.patch b/pkgs/lualinux/0001-realpath.patch new file mode 100644 index 0000000..131b4b3 --- /dev/null +++ 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 index ada29bf..013ae3d 100644 --- 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 '';