131 bool enableZip64 =
false;
132 if (appIdentification ==
"application/x-krita") {
133 enableZip64 = KSharedConfig::openConfig()->group(
"").readEntry<
bool>(
"UseZip64",
false);
136 dd->archive->setDataDescriptorWritingEnabled(
false);
137 dd->archive->setZip64Enabled(enableZip64);
138 dd->archive->setFileNameCodec(
"UTF-8");
139 dd->usingSaveFile =
dd->archive->getIoDevice() &&
dd->archive->getIoDevice()->inherits(
"QSaveFile");
140 dd->archive->setAutoClose(!
dd->usingSaveFile);
142 d->good =
dd->archive->open(d->mode ==
Write ? QuaZip::mdCreate : QuaZip::mdUnzip);
148 if (d->mode ==
Write) {
149 if (d->writeMimetype) {
150 QuaZipFile f(
dd->archive);
151 QuaZipNewInfo newInfo(
"mimetype");
152 newInfo.setPermissions(QFileDevice::ReadOwner | QFileDevice::ReadGroup | QFileDevice::ReadOther);
153 if (!f.open(QIODevice::WriteOnly, newInfo, 0, 0, 0, Z_NO_COMPRESSION)) {
157 f.write(appIdentification);
163 d->good =
dd->archive->getEntriesCount();
182 QString fixedPath = name;
183 fixedPath.replace(
"//",
"/");
188 delete dd->currentFile;
189 dd->currentFile =
new QuaZipFile(
dd->archive);
190 QuaZipNewInfo newInfo(fixedPath);
191 newInfo.setPermissions(QFileDevice::ReadOwner | QFileDevice::ReadGroup | QFileDevice::ReadOther);
192 bool r =
dd->currentFile->open(QIODevice::WriteOnly, newInfo, 0, 0, Z_DEFLATED,
dd->compressionLevel);
194 qWarning() <<
"Could not open" << name <<
dd->currentFile->getZipError();
197 dd->cache = QByteArray();
198 dd->buffer.setBuffer(&
dd->cache);
199 dd->buffer.open(QBuffer::WriteOnly);
208 QString fixedPath = name;
209 fixedPath.replace(
"//",
"/");
213 delete dd->currentFile;
220 if (!d->substituteThis.isEmpty()) {
221 fixedPath = fixedPath.replace(d->substituteThis, d->substituteWith);
224 if (!
dd->archive->setCurrentFile(fixedPath)) {
225 qWarning() <<
"\t\tCould not set current file" <<
dd->archive->getZipError() << fixedPath;
229 dd->currentFile =
new QuaZipFile(
dd->archive);
230 if (!
dd->currentFile->open(QIODevice::ReadOnly)) {
231 qWarning() <<
"\t\t\tBut could not open!!!" <<
dd->archive->getZipError();
234 d->stream =
dd->currentFile;
235 d->size =
dd->currentFile->size();