Skip to content

Commit a627710

Browse files
author
Sacha Refshauge
committed
Update QuaZIP to 0.7.4
1 parent 8bfeca0 commit a627710

26 files changed

+254
-201
lines changed

ext/quazip/JlCompress.cpp

+56-135
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This file is part of QuaZIP.
66
77
QuaZIP is free software: you can redistribute it and/or modify
88
it under the terms of the GNU Lesser General Public License as published by
9-
the Free Software Foundation, either version 3 of the License, or
9+
the Free Software Foundation, either version 2.1 of the License, or
1010
(at your option) any later version.
1111
1212
QuaZIP is distributed in the hope that it will be useful,
@@ -39,17 +39,6 @@ static bool copyData(QIODevice &inFile, QIODevice &outFile)
3939
return true;
4040
}
4141

42-
/**OK
43-
* Comprime il file fileName, nell'oggetto zip, con il nome fileDest.
44-
*
45-
* La funzione fallisce se:
46-
* * zip==NULL;
47-
* * l'oggetto zip e stato aperto in una modalita non compatibile con l'aggiunta di file;
48-
* * non e possibile aprire il file d'origine;
49-
* * non e possibile creare il file all'interno dell'oggetto zip;
50-
* * si e rilevato un errore nella copia dei dati;
51-
* * non e stato possibile chiudere il file all'interno dell'oggetto zip;
52-
*/
5342
bool JlCompress::compressFile(QuaZip* zip, QString fileName, QString fileDest) {
5443
// zip: oggetto dove aggiungere il file
5544
// fileName: nome del file reale
@@ -83,24 +72,7 @@ bool JlCompress::compressFile(QuaZip* zip, QString fileName, QString fileDest) {
8372
return true;
8473
}
8574

86-
/**OK
87-
* Comprime la cartella dir nel file fileCompressed, se recursive e true allora
88-
* comprime anche le sotto cartelle. I nomi dei file preceduti dal path creato
89-
* togliendo il pat della cartella origDir al path della cartella dir.
90-
* Se la funzione fallisce restituisce false e cancella il file che si e tentato
91-
* di creare.
92-
*
93-
* La funzione fallisce se:
94-
* * zip==NULL;
95-
* * l'oggetto zip e stato aperto in una modalita non compatibile con l'aggiunta di file;
96-
* * la cartella dir non esiste;
97-
* * la compressione di una sotto cartella fallisce (1);
98-
* * la compressione di un file fallisce;
99-
* (1) La funzione si richiama in maniera ricorsiva per comprimere le sotto cartelle
100-
* dunque gli errori di compressione di una sotto cartella sono gli stessi di questa
101-
* funzione.
102-
*/
103-
bool JlCompress::compressSubDir(QuaZip* zip, QString dir, QString origDir, bool recursive) {
75+
bool JlCompress::compressSubDir(QuaZip* zip, QString dir, QString origDir, bool recursive, QDir::Filters filters) {
10476
// zip: oggetto dove aggiungere il file
10577
// dir: cartella reale corrente
10678
// origDir: cartella reale originale
@@ -130,15 +102,15 @@ bool JlCompress::compressSubDir(QuaZip* zip, QString dir, QString origDir, bool
130102
// Se comprimo anche le sotto cartelle
131103
if (recursive) {
132104
// Per ogni sotto cartella
133-
QFileInfoList files = directory.entryInfoList(QDir::AllDirs|QDir::NoDotAndDotDot);
105+
QFileInfoList files = directory.entryInfoList(QDir::AllDirs|QDir::NoDotAndDotDot|filters);
134106
Q_FOREACH (QFileInfo file, files) {
135107
// Comprimo la sotto cartella
136-
if(!compressSubDir(zip,file.absoluteFilePath(),origDir,recursive)) return false;
108+
if(!compressSubDir(zip,file.absoluteFilePath(),origDir,recursive,filters)) return false;
137109
}
138110
}
139111

140112
// Per ogni file nella cartella
141-
QFileInfoList files = directory.entryInfoList(QDir::Files);
113+
QFileInfoList files = directory.entryInfoList(QDir::Files|filters);
142114
Q_FOREACH (QFileInfo file, files) {
143115
// Se non e un file o e il file compresso che sto creando
144116
if(!file.isFile()||file.absoluteFilePath()==zip->getZipName()) continue;
@@ -153,20 +125,6 @@ bool JlCompress::compressSubDir(QuaZip* zip, QString dir, QString origDir, bool
153125
return true;
154126
}
155127

156-
/**OK
157-
* Estrae il file fileName, contenuto nell'oggetto zip, con il nome fileDest.
158-
* Se la funzione fallisce restituisce false e cancella il file che si e tentato di estrarre.
159-
*
160-
* La funzione fallisce se:
161-
* * zip==NULL;
162-
* * l'oggetto zip e stato aperto in una modalita non compatibile con l'estrazione di file;
163-
* * non e possibile aprire il file all'interno dell'oggetto zip;
164-
* * non e possibile creare il file estratto;
165-
* * si e rilevato un errore nella copia dei dati (1);
166-
* * non e stato possibile chiudere il file all'interno dell'oggetto zip (1);
167-
*
168-
* (1): prima di uscire dalla funzione cancella il file estratto.
169-
*/
170128
bool JlCompress::extractFile(QuaZip* zip, QString fileName, QString fileDest) {
171129
// zip: oggetto dove aggiungere il file
172130
// filename: nome del file reale
@@ -232,12 +190,6 @@ bool JlCompress::extractFile(QuaZip* zip, QString fileName, QString fileDest) {
232190
return true;
233191
}
234192

235-
/**
236-
* Rimuove i file il cui nome e specificato all'interno di listFile.
237-
* Restituisce true se tutti i file sono stati cancellati correttamente, attenzione
238-
* perche puo restituire false anche se alcuni file non esistevano e si e tentato
239-
* di cancellarli.
240-
*/
241193
bool JlCompress::removeFile(QStringList listFile) {
242194
bool ret = true;
243195
// Per ogni file
@@ -248,18 +200,6 @@ bool JlCompress::removeFile(QStringList listFile) {
248200
return ret;
249201
}
250202

251-
////////////////////////////////////////////////////////////////////////////////
252-
////////////////////////////////////////////////////////////////////////////////
253-
/**OK
254-
* Comprime il file fileName nel file fileCompressed.
255-
* Se la funzione fallisce restituisce false e cancella il file che si e tentato
256-
* di creare.
257-
*
258-
* La funzione fallisce se:
259-
* * non si riesce ad aprire l'oggetto zip;
260-
* * la compressione del file fallisce;
261-
* * non si riesce a chiudere l'oggetto zip;
262-
*/
263203
bool JlCompress::compressFile(QString fileCompressed, QString file) {
264204
// Creo lo zip
265205
QuaZip zip(fileCompressed);
@@ -285,16 +225,6 @@ bool JlCompress::compressFile(QString fileCompressed, QString file) {
285225
return true;
286226
}
287227

288-
/**OK
289-
* Comprime i file specificati in files nel file fileCompressed.
290-
* Se la funzione fallisce restituisce false e cancella il file che si e tentato
291-
* di creare.
292-
*
293-
* La funzione fallisce se:
294-
* * non si riesce ad aprire l'oggetto zip;
295-
* * la compressione di un file fallisce;
296-
* * non si riesce a chiudere l'oggetto zip;
297-
*/
298228
bool JlCompress::compressFiles(QString fileCompressed, QStringList files) {
299229
// Creo lo zip
300230
QuaZip zip(fileCompressed);
@@ -324,18 +254,13 @@ bool JlCompress::compressFiles(QString fileCompressed, QStringList files) {
324254
return true;
325255
}
326256

327-
/**OK
328-
* Comprime la cartella dir nel file fileCompressed, se recursive e true allora
329-
* comprime anche le sotto cartelle.
330-
* Se la funzione fallisce restituisce false e cancella il file che si e tentato
331-
* di creare.
332-
*
333-
* La funzione fallisce se:
334-
* * non si riesce ad aprire l'oggetto zip;
335-
* * la compressione di un file fallisce;
336-
* * non si riesce a chiudere l'oggetto zip;
337-
*/
338257
bool JlCompress::compressDir(QString fileCompressed, QString dir, bool recursive) {
258+
return compressDir(fileCompressed, dir, recursive, 0);
259+
}
260+
261+
bool JlCompress::compressDir(QString fileCompressed, QString dir,
262+
bool recursive, QDir::Filters filters)
263+
{
339264
// Creo lo zip
340265
QuaZip zip(fileCompressed);
341266
QDir().mkpath(QFileInfo(fileCompressed).absolutePath());
@@ -345,7 +270,7 @@ bool JlCompress::compressDir(QString fileCompressed, QString dir, bool recursive
345270
}
346271

347272
// Aggiungo i file e le sotto cartelle
348-
if (!compressSubDir(&zip,dir,dir,recursive)) {
273+
if (!compressSubDir(&zip,dir,dir,recursive, filters)) {
349274
QFile::remove(fileCompressed);
350275
return false;
351276
}
@@ -360,29 +285,20 @@ bool JlCompress::compressDir(QString fileCompressed, QString dir, bool recursive
360285
return true;
361286
}
362287

363-
////////////////////////////////////////////////////////////////////////////////
364-
////////////////////////////////////////////////////////////////////////////////
365-
/**OK
366-
* Estrae il file fileName, contenuto nel file fileCompressed, con il nome fileDest.
367-
* Se fileDest = "" allora il file viene estratto con lo stesso nome con cui e
368-
* stato compresso.
369-
* Se la funzione fallisce cancella il file che si e tentato di estrarre.
370-
* Restituisce il nome assoluto del file estratto.
371-
*
372-
* La funzione fallisce se:
373-
* * non si riesce ad aprire l'oggetto zip;
374-
* * l'estrazione del file fallisce;
375-
* * non si riesce a chiudere l'oggetto zip;
376-
*/
377288
QString JlCompress::extractFile(QString fileCompressed, QString fileName, QString fileDest) {
378289
// Apro lo zip
379290
QuaZip zip(fileCompressed);
291+
return extractFile(zip, fileName, fileDest);
292+
}
293+
294+
QString JlCompress::extractFile(QuaZip &zip, QString fileName, QString fileDest)
295+
{
380296
if(!zip.open(QuaZip::mdUnzip)) {
381297
return QString();
382298
}
383299

384300
// Estraggo il file
385-
if (fileDest.isEmpty())
301+
if (fileDest.isEmpty())
386302
fileDest = fileName;
387303
if (!extractFile(&zip,fileName,fileDest)) {
388304
return QString();
@@ -397,21 +313,14 @@ QString JlCompress::extractFile(QString fileCompressed, QString fileName, QStrin
397313
return QFileInfo(fileDest).absoluteFilePath();
398314
}
399315

400-
/**OK
401-
* Estrae i file specificati in files, contenuti nel file fileCompressed, nella
402-
* cartella dir. La struttura a cartelle del file compresso viene rispettata.
403-
* Se dir = "" allora il file viene estratto nella cartella corrente.
404-
* Se la funzione fallisce cancella i file che si e tentato di estrarre.
405-
* Restituisce i nomi assoluti dei file estratti.
406-
*
407-
* La funzione fallisce se:
408-
* * non si riesce ad aprire l'oggetto zip;
409-
* * l'estrazione di un file fallisce;
410-
* * non si riesce a chiudere l'oggetto zip;
411-
*/
412316
QStringList JlCompress::extractFiles(QString fileCompressed, QStringList files, QString dir) {
413317
// Creo lo zip
414318
QuaZip zip(fileCompressed);
319+
return extractFiles(zip, files, dir);
320+
}
321+
322+
QStringList JlCompress::extractFiles(QuaZip &zip, const QStringList &files, const QString &dir)
323+
{
415324
if(!zip.open(QuaZip::mdUnzip)) {
416325
return QStringList();
417326
}
@@ -437,20 +346,14 @@ QStringList JlCompress::extractFiles(QString fileCompressed, QStringList files,
437346
return extracted;
438347
}
439348

440-
/**OK
441-
* Estrae il file fileCompressed nella cartella dir.
442-
* Se dir = "" allora il file viene estratto nella cartella corrente.
443-
* Se la funzione fallisce cancella i file che si e tentato di estrarre.
444-
* Restituisce i nomi assoluti dei file estratti.
445-
*
446-
* La funzione fallisce se:
447-
* * non si riesce ad aprire l'oggetto zip;
448-
* * la compressione di un file fallisce;
449-
* * non si riesce a chiudere l'oggetto zip;
450-
*/
451349
QStringList JlCompress::extractDir(QString fileCompressed, QString dir) {
452350
// Apro lo zip
453351
QuaZip zip(fileCompressed);
352+
return extractDir(zip, dir);
353+
}
354+
355+
QStringList JlCompress::extractDir(QuaZip &zip, const QString &dir)
356+
{
454357
if(!zip.open(QuaZip::mdUnzip)) {
455358
return QStringList();
456359
}
@@ -480,18 +383,14 @@ QStringList JlCompress::extractDir(QString fileCompressed, QString dir) {
480383
return extracted;
481384
}
482385

483-
/**OK
484-
* Restituisce la lista dei file resenti nel file compresso fileCompressed.
485-
* Se la funzione fallisce, restituisce un elenco vuoto.
486-
*
487-
* La funzione fallisce se:
488-
* * non si riesce ad aprire l'oggetto zip;
489-
* * la richiesta di informazioni di un file fallisce;
490-
* * non si riesce a chiudere l'oggetto zip;
491-
*/
492386
QStringList JlCompress::getFileList(QString fileCompressed) {
493387
// Apro lo zip
494388
QuaZip* zip = new QuaZip(QFileInfo(fileCompressed).absoluteFilePath());
389+
return getFileList(zip);
390+
}
391+
392+
QStringList JlCompress::getFileList(QuaZip *zip)
393+
{
495394
if(!zip->open(QuaZip::mdUnzip)) {
496395
delete zip;
497396
return QStringList();
@@ -516,7 +415,29 @@ QStringList JlCompress::getFileList(QString fileCompressed) {
516415
return QStringList();
517416
}
518417
delete zip;
519-
520418
return lst;
521419
}
522420

421+
QStringList JlCompress::extractDir(QIODevice *ioDevice, QString dir)
422+
{
423+
QuaZip zip(ioDevice);
424+
return extractDir(zip, dir);
425+
}
426+
427+
QStringList JlCompress::getFileList(QIODevice *ioDevice)
428+
{
429+
QuaZip *zip = new QuaZip(ioDevice);
430+
return getFileList(zip);
431+
}
432+
433+
QString JlCompress::extractFile(QIODevice *ioDevice, QString fileName, QString fileDest)
434+
{
435+
QuaZip zip(ioDevice);
436+
return extractFile(zip, fileName, fileDest);
437+
}
438+
439+
QStringList JlCompress::extractFiles(QIODevice *ioDevice, QStringList files, QString dir)
440+
{
441+
QuaZip zip(ioDevice);
442+
return extractFiles(zip, files, dir);
443+
}

0 commit comments

Comments
 (0)