diff --git a/tapeloader/unarchive.lua b/tapeloader/unarchive.lua index 47a4d64..95790f6 100644 --- a/tapeloader/unarchive.lua +++ b/tapeloader/unarchive.lua @@ -23,7 +23,28 @@ while true do end local name = fi:read(nlen) local fsize = toint(fi:read(2)) - local fcontent = fi:read(fsize) + if not tArgs[2] then + local dir = name:match("(.+)/.*%.?.+") + if (dir) then + os.execute("mkdir "..dir.." &> /dev/null") + end + local f = io.open(name,"wb") + local rsize,buf = fsize, "" + if f then + repeat + buf = fi:read(math.min(rsize,1024)) + f:write(buf) + rsize = rsize - buf:len() + until rsize <= 1 + f:close() + end + else + local rsize = fsize + repeat + buf = fi:read(math.min(rsize,1024)) + rsize = rsize - buf:len() + until rsize <= 1 + end print(name,fsize) end fi:close()