145 bool enableZip64 =
false;
146 if (appIdentification ==
"application/x-krita") {
147 enableZip64 = KSharedConfig::openConfig()->group(
"").readEntry<
bool>(
"UseZip64",
false);
150 dd->archive->setDataDescriptorWritingEnabled(
false);
151 dd->archive->setZip64Enabled(enableZip64);
152 dd->archive->setFileNameCodec(
"UTF-8");
153 dd->usingSaveFile =
dd->archive->getIoDevice() &&
dd->archive->getIoDevice()->inherits(
"QSaveFile");
154 dd->archive->setAutoClose(!
dd->usingSaveFile);
156 d->good =
dd->archive->open(d->mode ==
Write ? QuaZip::mdCreate : QuaZip::mdUnzip);
162 if (d->mode ==
Write) {
163 if (d->writeMimetype) {
164 QuaZipFile f(
dd->archive);
165 QuaZipNewInfo newInfo(
"mimetype");
166 newInfo.setPermissions(QFileDevice::ReadOwner | QFileDevice::ReadGroup | QFileDevice::ReadOther);
167 if (!f.open(QIODevice::WriteOnly, newInfo, 0, 0, 0, Z_NO_COMPRESSION)) {
171 f.write(appIdentification);
177 d->good =
dd->archive->getEntriesCount();
196 QString fixedPath = name;
197 fixedPath.replace(
"//",
"/");
202 delete dd->currentFile;
203 dd->currentFile =
new QuaZipFile(
dd->archive);
204 QuaZipNewInfo newInfo(fixedPath);
205 newInfo.setPermissions(QFileDevice::ReadOwner | QFileDevice::ReadGroup | QFileDevice::ReadOther);
206 bool r =
dd->currentFile->open(QIODevice::WriteOnly, newInfo, 0, 0, Z_DEFLATED,
dd->compressionLevel);
208 qWarning() <<
"Could not open" << name <<
dd->currentFile->getZipError();
211 dd->cache = QByteArray();
212 dd->buffer.setBuffer(&
dd->cache);
213 dd->buffer.open(QBuffer::WriteOnly);
222 QString fixedPath = name;
223 fixedPath.replace(
"//",
"/");
227 delete dd->currentFile;
234 if (!d->substituteThis.isEmpty()) {
235 fixedPath = fixedPath.replace(d->substituteThis, d->substituteWith);
238 if (!
dd->archive->setCurrentFile(fixedPath)) {
239 qWarning() <<
"\t\tCould not set current file" <<
dd->archive->getZipError() << fixedPath;
243 dd->currentFile =
new QuaZipFile(
dd->archive);
244 if (!
dd->currentFile->open(QIODevice::ReadOnly)) {
245 qWarning() <<
"\t\t\tBut could not open!!!" <<
dd->archive->getZipError();
248 d->stream =
dd->currentFile;
249 d->size =
dd->currentFile->size();