From 7f85bbc8fc0fd03fb1e4b01d64f334cd8d865828 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Mon, 5 Aug 2024 11:45:58 -0300 Subject: fs.unix.tools: add __gc behavior to fs lock (#1702) --- src/luarocks/fs/unix/tools.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/luarocks/fs/unix/tools.lua b/src/luarocks/fs/unix/tools.lua index d7334733..f1513820 100644 --- a/src/luarocks/fs/unix/tools.lua +++ b/src/luarocks/fs/unix/tools.lua @@ -311,6 +311,12 @@ function tools.is_superuser() return fs.current_user() == "root" end +local lock_mt = { + __gc = function(lock) + fs.unlock_access(lock) + end +} + function tools.lock_access(dirname, force) local ok, err = fs.make_dir(dirname) if not ok then @@ -336,10 +342,12 @@ function tools.lock_access(dirname, force) local force_flag = force and " -f" or "" if fs.execute(vars.LN .. force_flag, tempfile, lockfile) then - return { + local lock = { tempfile = tempfile, lockfile = lockfile, } + setmetatable(lock, lock_mt) + return lock else return nil, "File exists" -- same message as luafilesystem end -- cgit v1.2.3-55-g6feb