aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/fs/unix/tools.lua10
1 files changed, 9 insertions, 1 deletions
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()
311 return fs.current_user() == "root" 311 return fs.current_user() == "root"
312end 312end
313 313
314local lock_mt = {
315 __gc = function(lock)
316 fs.unlock_access(lock)
317 end
318}
319
314function tools.lock_access(dirname, force) 320function tools.lock_access(dirname, force)
315 local ok, err = fs.make_dir(dirname) 321 local ok, err = fs.make_dir(dirname)
316 if not ok then 322 if not ok then
@@ -336,10 +342,12 @@ function tools.lock_access(dirname, force)
336 local force_flag = force and " -f" or "" 342 local force_flag = force and " -f" or ""
337 343
338 if fs.execute(vars.LN .. force_flag, tempfile, lockfile) then 344 if fs.execute(vars.LN .. force_flag, tempfile, lockfile) then
339 return { 345 local lock = {
340 tempfile = tempfile, 346 tempfile = tempfile,
341 lockfile = lockfile, 347 lockfile = lockfile,
342 } 348 }
349 setmetatable(lock, lock_mt)
350 return lock
343 else 351 else
344 return nil, "File exists" -- same message as luafilesystem 352 return nil, "File exists" -- same message as luafilesystem
345 end 353 end