void ZipFile::extract(const std::string& path) { TraceL << "Extracting zip to: " << path << endl; if (!opened()) throw std::runtime_error("The archive must be opened for extraction."); if (!goToFirstFile()) throw std::runtime_error("Cannot read the source archive."); while (true) { extractCurrentFile(path, true); if (!goToNextFile()) break; } }
bool QuaZip::setCurrentFile(const QString& fileName, CaseSensitivity cs) { zipError=UNZ_OK; if(mode!=mdUnzip) { qWarning("QuaZip::setCurrentFile(): ZIP is not open in mdUnzip mode"); return false; } if(fileName.isNull()) { hasCurrentFile_f=false; return true; } // Unicode-aware reimplementation of the unzLocateFile function if(unzFile_f==NULL) { zipError=UNZ_PARAMERROR; return false; } if(fileName.length()>MAX_FILE_NAME_LENGTH) { zipError=UNZ_PARAMERROR; return false; } bool sens; if(cs==csDefault) { #ifdef Q_OS_WIN sens=false; #else sens=true; #endif } else sens=cs==csSensitive; QString lower, current; if(!sens) lower=fileName.toLower(); hasCurrentFile_f=false; for(bool more=goToFirstFile(); more; more=goToNextFile()) { current=getCurrentFileName(); if(current.isNull()) return false; if(sens) { if(current==fileName) break; } else { if(current.toLower()==lower) break; } } return hasCurrentFile_f; }