diff options
-rw-r--r-- | src/luarocks/fs/lua.lua | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index 0e81d877..707b82bd 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua | |||
@@ -328,11 +328,9 @@ end | |||
328 | -- @return boolean or (boolean, string): true on success, | 328 | -- @return boolean or (boolean, string): true on success, |
329 | -- or nil and an error message on failure. | 329 | -- or nil and an error message on failure. |
330 | local function recursive_delete(name) | 330 | local function recursive_delete(name) |
331 | local mode = lfs.attributes(name, "mode") | 331 | local ok = os.remove(name) |
332 | 332 | if ok then return true end | |
333 | if mode == "file" then | 333 | local pok, ok, err = pcall(function() |
334 | return os.remove(name) | ||
335 | elseif mode == "directory" then | ||
336 | for file in lfs.dir(name) do | 334 | for file in lfs.dir(name) do |
337 | if file ~= "." and file ~= ".." then | 335 | if file ~= "." and file ~= ".." then |
338 | local ok, err = recursive_delete(dir.path(name, file)) | 336 | local ok, err = recursive_delete(dir.path(name, file)) |
@@ -340,9 +338,13 @@ local function recursive_delete(name) | |||
340 | end | 338 | end |
341 | end | 339 | end |
342 | local ok, err = lfs.rmdir(name) | 340 | local ok, err = lfs.rmdir(name) |
343 | if not ok then return nil, err end | 341 | return ok, (not ok) and err |
342 | end) | ||
343 | if pok then | ||
344 | return ok, err | ||
345 | else | ||
346 | return pok, ok | ||
344 | end | 347 | end |
345 | return true | ||
346 | end | 348 | end |
347 | 349 | ||
348 | --- Delete a file or a directory and all its contents. | 350 | --- Delete a file or a directory and all its contents. |