forked from Mirrorlandia_minetest/minetest
Fix .zip extraction (mod store)
This commit is contained in:
parent
c7249f5983
commit
878e9f7594
@ -859,19 +859,19 @@ int ModApiMainMenu::l_extract_zip(lua_State *L)
|
||||
|
||||
unsigned int number_of_files = files_in_zip->getFileCount();
|
||||
|
||||
for (unsigned int i=0; i < number_of_files; i++) {
|
||||
for (unsigned int i=0; i < number_of_files; i++) {
|
||||
std::string fullpath = destination;
|
||||
fullpath += DIR_DELIM;
|
||||
fullpath += files_in_zip->getFullFileName(i).c_str();
|
||||
std::string fullpath_dir = fs::RemoveLastPathComponent(fullpath);
|
||||
|
||||
if (files_in_zip->isDirectory(i)) {
|
||||
if (! fs::CreateAllDirs(fullpath) ) {
|
||||
if (!files_in_zip->isDirectory(i)) {
|
||||
if (!fs::PathExists(fullpath_dir) && !fs::CreateAllDirs(fullpath_dir)) {
|
||||
fs->removeFileArchive(fs->getFileArchiveCount()-1);
|
||||
lua_pushboolean(L,false);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
io::IReadFile* toread = opened_zip->createAndOpenFile(i);
|
||||
|
||||
FILE *targetfile = fopen(fullpath.c_str(),"wb");
|
||||
@ -883,7 +883,7 @@ int ModApiMainMenu::l_extract_zip(lua_State *L)
|
||||
}
|
||||
|
||||
char read_buffer[1024];
|
||||
unsigned int total_read = 0;
|
||||
long total_read = 0;
|
||||
|
||||
while (total_read < toread->getSize()) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user