From 1fe765085b54922716dd053f824e05a5e479366e Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Thu, 27 Feb 2014 09:56:51 +0100 Subject: handle implict subdirectories when unpacking with LuaZip --- src/luarocks/fs/lua.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index ea16b728..1a7b6be6 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua @@ -498,6 +498,11 @@ function fs_lua.unzip(zipfile) local ok, err = fs.make_dir(dir.path(fs.current_dir(), file.filename)) if not ok then return nil, err end else + local base = dir.dir_name(file.filename) + if base ~= "" and not fs.is_dir(base) then + local ok, err = fs.make_dir(dir.path(fs.current_dir(), base)) + if not ok then return nil, err end + end local rf, err = zipfile:open(file.filename) if not rf then zipfile:close(); return nil, err end local contents = rf:read("*a") -- cgit v1.2.3-55-g6feb From 659f8115d7c369d6dd65647be66fe6b180efc2e1 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Thu, 27 Feb 2014 10:16:38 +0100 Subject: use correct path for is_dir check --- src/luarocks/fs/lua.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua index 1a7b6be6..9806bb63 100644 --- a/src/luarocks/fs/lua.lua +++ b/src/luarocks/fs/lua.lua @@ -499,9 +499,12 @@ function fs_lua.unzip(zipfile) if not ok then return nil, err end else local base = dir.dir_name(file.filename) - if base ~= "" and not fs.is_dir(base) then - local ok, err = fs.make_dir(dir.path(fs.current_dir(), base)) - if not ok then return nil, err end + if base ~= "" then + base = dir.path(fs.current_dir(), base) + if not fs.is_dir(base) then + local ok, err = fs.make_dir(base) + if not ok then return nil, err end + end end local rf, err = zipfile:open(file.filename) if not rf then zipfile:close(); return nil, err end -- cgit v1.2.3-55-g6feb