Skip to content
Commits on Source (8)
Fixed a bug? Implemented a new feature? Want to have it included in QuaZIP?
Here's what you need to do.
0. If you don't have a GitHub account, create one. It's ridiculously easy.
1. First, open an [issue](https://github.com/stachenov/quazip/issues).
Even if you have already fixed it. It helps to track things because
instead of a commit saying “fixed this and that” you have a reference
to a full issue description.
2. Next, send a pull request. This is sort of counter-intuitive, so if
you never did it, read on.
**Contribution guidelines**
To avoid spending time on something that may never be accepted, here are
some guidelines.
1. Changes should be backwards-compatible. Don't just change method names
and their signatures randomly. Don't just remove deprecated features—some
of them are there to keep compatibility with old Qt versions. Currently
supported are versions since 4.6.
2. If your changes aren't limited to a small fix or a convenience method,
discussing them in the issue you just opened (if you didn't, do!) could
help to achieve some agreement on what exactly is a good idea in your case.
3. Whether you're fixing a bug or adding a new feature, it's an awesome idea
to add a new test in the `qztest` subproject. This way you make sure the
bug stays fixed and the feature keeps working.
4. It would be nice if you also update NEWS.txt with whatever changes
you propose. Just add another line on top.
5. QuaZIP policies on PR commits are these. Don't squash your commits until
the discussion on the PR is over and it's approved. *Do* squash them,
however, once it's approved, unless asked otherwise. And finally: rebase,
don't merge. QuaZIP keeps mostly linear history. If you have no idea what
it's all about, read on.
**How to submit a pull request**
**What is a PR anyway?**
There are numerous sources that describe this already. Ideally, you should
familiarize yourself with both GitHub and Git. But you could lack time.
Or maybe you don't use Git in your daily work. Or something else.
In either case, here are some basics to get you started without
spending too much time researching something you might never need again.
Pull requests (PRs) are GitHub's way of sending patches to people. Except that
instead of sending a patch, you send a full-fledged version control branch
that is much easier to integrate than a regular patch.
The overall process is that you have a full copy of the repository both at your
GitHub account and on your computer. You create a new branch on your computer,
make some changes, commit to that branch and finally send these commits to your
account. Then, GitHub takes over and offers you to create something like a
specialized forum topic with your changes attached to it much like a patch
would be attached to an e-mail message. Except that it's actually alive—whatever
changes you make later on will cause the patch to be automatically updated
with all your changes combined.
**Setting up for a PR submission**
Here are the steps you need to follow if you're sending your *first* PR to QuaZIP.
You don't need to repeat these each time.
0. If you haven't installed Git yet, do so. In Windows, choose the recommended
setting for line endings.
1. Go to https://github.com/stachenov/quazip.
2. Click “Fork” in the top-right corner and wait until forking is complete.
3. You should now have a full copy of QuaZIP in your own GitHub account.
This may sound like a huge overkill to just send a small patch, but it's
actually very convenient once you get used to it.
4. Clone QuaZIP to your computer. Use your own account's repo URL as a source,
NOT https://github.com/stachenov/quazip! To do it, run
```
git clone https://github.com/your-user-name-goes-here/quazip
```
This command will create a new `quazip` directory and clone into it.
Now you have two QuaZIP repos. One in your GitHub account, accessible to
you only via GitHub itself, and another one in the directory that has
just been created. Let's call the repo on your PC the local repo.
It is rooted at the directory that was created by Git when you
ran the above command. Most Git commands from now on should
be issued from within this directory unless specified otherwise.
5. Go into the local repo and run
```
git remote add upstream https://github.com/stachenov/quazip
```
This commands tells Git that there is another copy of the same project.
Now that copy will be accessible by the name “upstream”. You could
use any name here, but “upstream” is a common name for such a typical case.
Another typical name is “origin”, which was already added by Git when
you ran the “clone” command. Now run
```
git remote -v
```
This command lists the configured remotes:
```
origin https://github.com/your-user-name/quazip (fetch)
origin https://github.com/your-user-name/quazip (push)
upstream https://github.com/stachenov/quazip (fetch)
upstream https://github.com/stachenov/quazip (push)
```
Every remote is listed twice because there are two operations: you can
send (push) commits to a remote repo, or you can receive (fetch/pull)
commits from one. Of course, you can't commit to the upstream because
you have no write permissions for it, but Git doesn't know about it, so
it added both lines for the upstream. Just ignore the push one.
Now your local repo knows how to exchange commits with your GitHub
account and with the main QuaZIP repo.
You're all set for submitting your first PR.
If you ever wish to submit another PR, no need to do all this again.
Except that if you delete your local repo, you'll have to redo steps 4 and 5.
But you may need to update your master branch before you start working
on another feature for another PR. See
“Reintegrating the latest upstream changes” below.
**Making changes and submitting a PR**
Submitting a PR is easy, but can be confusing first time if you're
not familiar with Git.
1. Create a new branch in your local repo. This is very important!
Most Git repos, including QuaZIP, have the main branch called “master”.
By creating a new branch you tell Git where your changes begin and end.
This way GitHub can automatically create a patch containing only your
changes. To create a branch, run from your local repo:
```
git checkout -b new-branch-name
```
Name the branch whatever you want, it's totally unimportant as it will
be deleted later. If you already have some changes in your working
dir, but have not added/committed them, it's still not too late to create
a new branch, your changes will be kept.
2. Make whatever changes you want.
3. Run `git diff` to review the changes.
4. Run `git add` with all changed/added files as arguments. `git status`
will remind you what files you have changed or added. After you're done,
`git status` should show all your files as “changes to be committed”.
Note that if you change a file, add it, then change it again,
you need to re-run `git add` or you end up committing your file
as it was when you first added it (Git remembers its contents at that time).
5. Run `git commit`. Enter a meaningful commit message. See Git docs
for examples and recommendations.
6. Run `git log -p`. It shows what changes you made. It's especially
useful on Windows where `git diff` might have shown that everything is
fine, but `git log -p` mysteriously shows that you have changed every
single line of a file. It means you have screwed up line endings. Don't
worry, you can overwrite your last commit.
Another useful thing to look for is to look for branch names here.
Your last commit should have something like `HEAD -> my-feature`,
whereas the previous one should have `origin/master`. This is
exactly the kind of information that will be used by GitHub. Everything
that goes after the `origin/master` commit will be included in the patch
you're about to submit.
6. Run
```
git push -u origin your-branch-name
```
This weird command sends your committed changes to your GitHub account.
The `-u` option tells Git to remember that your branch goes to your
account under the same name so you don't have to type it again.
7. Go to your account's page and open quazip there. You should see a message
informing you about the new branch and offering to create a PR. Just do it.
Don't be afraid to mess something up as your changes aren't going anywhere yet.
If there's something wrong with them, I'll just tell you what and how to fix.
**How to fix mistakes**
If you have committed your changes, but not yet pushed it, you can always
replace the last commit. Just fix your mistakes, `git add` modified files
again and then run
```
git commit --amend
```
It will look like a regular commit procedure, except that you're not adding
yet another commit to your repo—you're replacing the last one.
If you have already pushed the last commit, it's no big deal either. Except
that you need to re-push your amended commit to GitHub, and Git by default
will not let you do so. Easy to override, though:
```
git push --force-with-lease
```
**Squashing commits**
You may end up with a pretty messy history with lots of commits. Before
submitting a PR, you may wish to tidy up your history a bit. It's beyond
this short tutorial to explain how to rewrite history in Git, but the
simplest change you can do is to squash all commits into a single one.
Or perhaps squash some of them. Run
```
git rebase -i master
```
This command assumes you never touched the master branch, and all work
was done within your own branch. It will then open up an editor with
something like
```
pick f564b4c feature
pick 0ea95aa oops
pick 0cbd876 Fixed, finally
```
The messages and SHA hashes will be different, but you get the list of
your changes since your branch diverged from the master. To join
all the commits into one, edit like this:
```
pick f564b4c feature
s 0ea95aa oops
s 0cbd876 Fixed, finally
```
Here, `s` means “squash”, that is, combine with the previous commit.
Next, an editor with combined commit message pops up. Edit it into a
single coherent message and save. Viola! Now you have just one commit.
Note that since this is a kind of history rewrite, just like `--amend`,
you'll have to use `--force-with-lease` to push this history again to
GitHub.
**Making changes after submitting a PR**
You can amend commits and squash them after submitting a PR. The PR
will be automatically updated by GitHub. Whatever you do, the PR
will always display the difference between the master branch and
the latest commit on your feature branch.
**Discussing and closing the PR**
A PR is sort of a patch attached to a specialized forum topic.
It can be discussed, various pieces of code can be reviewed,
and it ends either by merging the PR, including your changes
in the QuaZIP repo, or closing it without merging if your
changes are rejected for whatever reason.
If the PR is successfully merged, you can safely delete your
branch. Locally, it is done with
```
git checkout master
git branch -D your-branch-name
git branch -dr origin/your-branch-name
```
The first command switches to the master branch
(because it would be weird to delete a branch you're currently on),
the second one deletes the branch itself, the third
one deletes the reference to the remote counterpart in
your GitHub account. Note that only the *reference*
is deleted here, the branch itself stays alive and well
in your account. To delete it, simply go to the PR
and there will be a message saying that the PR is merged
with the “delete branch” button right next to it.
**Reintegrating the latest upstream changes**
Suppose some changes were introduced into the master branch while
you were working on your feature. With the traditional
send-patch-by-email approach, whoever applies that patch must
handle all conflicts (rejected hunks) that arise. With Git,
you have a way to fix it before even sending the patch
(submitting the PR).
Another situation when you need to pull in the changes from
the upstream repo is when you need to submit your next PR, perhaps
years later. You still have your old clone (fork) in your GitHub
account, and perhaps even a local one on your computer. However,
they are probably terribly outdated by now so you need to update
them first.
Update procedures are similar in both cases.
1. In either case, you need to make sure you're on the master branch. If
it's an old clone, you're probably are, unless you forgot to clean up.
If you're working on a feature, you're probably on your feature branch.
Make sure your changes are committed before you continue. Then, run
```
git checkout master
```
It will bring you back to the master branch.
2. You need to pull in the changes from the upstream repo. The least
destructive way to do it is to fetch these changes first:
```
git fetch upstream
```
This command just fetches data from the upstream repo, but doesn't
touch your working files yet.
3. Next, you better make sure you have no changes with `git status`.
You probably don't if you remembered not to touch the master branch.
4. Pull in the latest commits from the upstream:
```
git merge upstream/master
```
This will make your master branch identical the one from the upstream.
5. Push these changes to your GitHub account:
```
git push origin master
```
The absence of `-u` means that Git won't remember that the master branch
is connected with `origin`. That's a good thing because there are two
different remote repos for the master branch, and it's much easier to
explicitly specify each time where you want to push it to or pull it
from rather than remembering which one of the remotes it's associated with.
6. If you were just updating your outdated repo, the procedure ends here.
However, if you were already working on a branch that split off from
the master before this update, now you need to somehow merge your changes
into the new upstream version. There are two ways to do it: merge and rebase.
The QuaZIP way is rebase, so rebase you should do. But first, switch to your branch:
```
git checkout your-feature-branch
```
7. To merge your changes into the new version, run
```
git rebase master
```
This basically says: take the current branch, detach it from where it split from
the master, then reattach it to the tip of the new master branch and replay
all the changes that were made, making new commits. This leads you to a linear
history, where you branch just continues on from the master, instead of splitting
from some old version.
If there are merge conflicts, you have to solve them by editing conflicting files,
then running `git add` on them (which in this case just says you're done with
conflict solving) and finally running `git rebase --continue`. There are much
more advanced conflict solving techniques which are, again, beyond the scope of this
note.
......@@ -31,7 +31,7 @@ PROJECT_NAME = QuaZIP
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = quazip-0-7-3
PROJECT_NUMBER = quazip-0-7-6
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
......@@ -645,7 +645,7 @@ RECURSIVE = YES
EXCLUDE = quazip/unzip.h \
quazip/zip.h \
quazip/ioapi.h \
quazip/crypt.h \
quazip/minizip_crypt.h \
qztest/
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
......@@ -1491,7 +1491,7 @@ SKIP_FUNCTION_MACROS = YES
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
TAGFILES = qtcore.tags=http://doc.qt.io/qt-5/
TAGFILES = qtcore.tags=http://doc.qt.io/qt-5.9/
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
......
QuaZIP changes
* 2018-06-13 0.7.6
* Fixed the Zip Slip vulnerability in JlCompress
* Renamed crypt.h to minizip_crypt.h to avoid conflicts
* 2018-05-20 0.7.5
* Fixed target_link_libraries call in CMakeLists
* Worked around a Qt 4.6 bug (QTBUG-15421) screwing up hidden
files handling in JlCompress::compressDir()
* Removed Q_FOREACH uses to avoid conflicts (SF patch #32)
* 2017-02-05 0.7.4
* Static analysis patch from Intel Deutschland GmbH
* Replaced UNUSED with QUAZIP_UNUSED to avoid name clashes
* Minor bug fixes
* 2017-02-05 0.7.3
* Symlink handling
* Static linking exception for LGPL
......
QuaZIP is the C++ wrapper for Gilles Vollant's ZIP/UNZIP package
(AKA Minizip) using Trolltech's Qt library.
If you need to write files to a ZIP archive or read files from one
using QIODevice API, QuaZIP is exactly the kind of tool you need.
See [the documentation](https://stachenov.github.io/quazip/) for details.
Want to report a bug or ask for a feature? Open an [issue](https://github.com/stachenov/quazip/issues).
Want to fix a bug or implement a new feature? See [CONTRIBUTING.md](CONTRIBUTING.md).
Copyright notice:
Copyright (C) 2005-2018 Sergey A. Tachenov
Distributed under LGPL, full details in the COPYING file.
Original ZIP package is copyrighted by Gilles Vollant, see
quazip/(un)zip.h files for details, but basically it's the zlib license.
QuaZIP is the C++ wrapper for Gilles Vollant's ZIP/UNZIP package
(AKA minizip) using Trolltech's Qt library.
It uses existing ZIP/UNZIP package C code and therefore depends on
the zlib library.
Also, it depends on Qt 4.
To compile it on UNIX dialect:
$ cd quazip
$ qmake
$ make
You must make sure that:
* You have Qt 4 properly and fully installed (including tools and
headers, not just library)
* "qmake" command runs Qt 4's qmake, not some other version (you'll have
to type full path to qmake otherwise).
To install compiled shared library, just type:
$ make install
By default, it installs in /usr/local, but you may change it using
$ qmake PREFIX=/wherever/you/want/to/install
You do not have to compile and install QuaZIP to use it. You can just
(and sometimes it may be the best way) add QuaZIP's source files to your
project and use them.
See doc/html or, if you do not have a browser, quazip/*.h and
quazip/doc/* files for the more detailed documentation.
For Windows, it's essentially the same, but you may have to adjust
settings for different environments.
If linking statically (either a static lib or just using the source code
directly in your project), then QUAZIP_STATIC should be defined. This is
done automatically when you build QuaZIP as a static library. However,
when _using_ a static lib (or source code, for that matter) you must
also define QUAZIP_STATIC in your project (that uses QuaZIP) to tell
quazip_global.h that you use a static version because otherwise the
compiler wouldn't know that and will mark QuaZIP symbols as dllimported.
Linking problems among the lines of “undefined reference” are usually
caused by this.
Copyright notice:
Copyright (C) 2005-2012 Sergey A. Tachenov
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
See COPYING file for the full LGPL text.
Original ZIP package is copyrighted by Gilles Vollant, see
quazip/(un)zip.h files for details, basically it's zlib license.
libquazip (0.7.6-1) UNRELEASED; urgency=medium
* Project moved to Github
* New upstream version
Closes: #902786
* Build-Depends: doxygen, graphviz
* Some optional symbols were removed
-- Andreas Tille <tille@debian.org> Sun, 01 Jul 2018 10:56:40 +0200
libquazip (0.7.3-7) unstable; urgency=medium
[ Alf Gaida ]
......
......@@ -11,11 +11,13 @@ Build-Depends: debhelper (>= 11~),
qtbase5-dev,
qtchooser,
libxext-dev,
zlib1g-dev
zlib1g-dev,
doxygen,
graphviz
Standards-Version: 4.1.4
Vcs-Browser: https://salsa.debian.org/med-team/libquazip
Vcs-Git: https://salsa.debian.org/med-team/libquazip.git
Homepage: https://sourceforge.net/projects/quazip/
Homepage: https://github.com/stachenov/quazip
Package: libquazip1
Architecture: any
......
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: quazip
Source: https://sourceforge.net/projects/quazip/
Source: https://github.com/stachenov/quazip/releases
Files: *
Copyright: 2005-2016 Sergey A. Tachenov
......
NEWS
README.txt
README.*
doc/html
......@@ -39,8 +39,6 @@ libquazip.so.1 libquazip1 #MINVER#
_ZN10JlCompress12extractFilesER6QuaZipRK11QStringListRK7QString@Base 0.7.3
_ZN10JlCompress13compressFilesE7QString11QStringList@Base 0.7.3
_ZN10JlCompress14compressSubDirEP6QuaZip7QStringS2_b6QFlagsIN4QDir6FilterEE@Base 0.7.3
(optional)_ZN10QByteArrayD1Ev@Base 0.7.3-5
(optional)_ZN10QByteArrayD2Ev@Base 0.7.3-5
_ZN10QuaAdler325resetEv@Base 0.7.3
_ZN10QuaAdler325valueEv@Base 0.7.3
_ZN10QuaAdler326updateERK10QByteArray@Base 0.7.3
......@@ -151,30 +149,19 @@ libquazip.so.1 libquazip1 #MINVER#
_ZN23QuaZipDirRestoreCurrentD2Ev@Base 0.7.3
_ZN5QHashI7QString15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 0.7.3
_ZN5QHashI7QString15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 0.7.3
(optional)_ZN5QHashI7QString15QHashDummyValueED1Ev@Base 0.7.3
(optional)_ZN5QHashI7QString15QHashDummyValueED2Ev@Base 0.7.3
_ZN5QHashI7QString16unz64_file_pos_sE11deleteNode2EPN9QHashData4NodeE@Base 0.7.3
_ZN5QHashI7QString16unz64_file_pos_sE13duplicateNodeEPN9QHashData4NodeEPv@Base 0.7.3
_ZN5QListI14QuaZipFileInfoE13detach_helperEi@Base 0.7.3
(optional)_ZN5QListI14QuaZipFileInfoE18detach_helper_growEii@Base 0.7.3
(optional)_ZN5QListI14QuaZipFileInfoE5clearEv@Base 0.7.3
_ZN5QListI14QuaZipFileInfoE6appendERKS0_@Base 0.7.3
(optional)_ZN5QListI14QuaZipFileInfoED1Ev@Base 0.7.3
(optional)_ZN5QListI14QuaZipFileInfoED2Ev@Base 0.7.3
_ZN5QListI16QuaZipFileInfo64E13detach_helperEi@Base 0.7.3
(optional)_ZN5QListI16QuaZipFileInfo64E18detach_helper_growEii@Base 0.7.3
_ZN5QListI16QuaZipFileInfo64E6appendERKS0_@Base 0.7.3
(optional)_ZN5QListI16QuaZipFileInfo64ED1Ev@Base 0.7.3
(optional)_ZN5QListI16QuaZipFileInfo64ED2Ev@Base 0.7.3
_ZN5QListI7QStringE13detach_helperEi@Base 0.7.3
_ZN5QListI7QStringE18detach_helper_growEii@Base 0.7.3
(optional)_ZN5QListI7QStringE5clearEv@Base 0.7.3
_ZN5QListI7QStringE6appendERKS0_@Base 0.7.3
(optional)_ZN5QListI7QStringED1Ev@Base 0.7.3
(optional)_ZN5QListI7QStringED2Ev@Base 0.7.3
_ZN5QListI9QFileInfoE13detach_helperEi@Base 0.7.3
(optional)_ZN5QListI9QFileInfoED1Ev@Base 0.7.3
(optional)_ZN5QListI9QFileInfoED2Ev@Base 0.7.3
_ZN6QuaZip10getUnzFileEv@Base 0.7.3
_ZN6QuaZip10getZipFileEv@Base 0.7.3
_ZN6QuaZip10setCommentERK7QString@Base 0.7.3
......@@ -202,8 +189,6 @@ libquazip.so.1 libquazip1 #MINVER#
_ZN6QuaZipC2Ev@Base 0.7.3
_ZN6QuaZipD1Ev@Base 0.7.3
_ZN6QuaZipD2Ev@Base 0.7.3
(optional)_ZN7QStringD1Ev@Base 0.7.3
(optional)_ZN7QStringD2Ev@Base 0.7.3
_ZN8QuaCrc325resetEv@Base 0.7.3
_ZN8QuaCrc325valueEv@Base 0.7.3
_ZN8QuaCrc326updateERK10QByteArray@Base 0.7.3
......
......@@ -174,8 +174,6 @@ libquazip5.so.1 libquazip5-1 #MINVER#
_ZN5QListI7QStringEC2ERKS1_@Base 0.7.3
_ZN5QListI7QStringED1Ev@Base 0.7.3
_ZN5QListI7QStringED2Ev@Base 0.7.3
_ZN5QListI9QFileInfoEC1ERKS1_@Base 0.7.3
_ZN5QListI9QFileInfoEC2ERKS1_@Base 0.7.3
_ZN5QListI9QFileInfoED1Ev@Base 0.7.3
_ZN5QListI9QFileInfoED2Ev@Base 0.7.3
_ZN6QuaZip10getUnzFileEv@Base 0.7.3
......
Author: Eric Maeker <eric.maeker@gmail.com>
Description: Remove sourceforge logo (privacy-breach-logo)
privacy-breach-logo reported by `lintian -i`
Last-Update: 2014-07-14
Forwarded: no
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -42,7 +42,7 @@
</div><!--header-->
<div class="contents">
<div class="textblock">
-<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=142688&amp;type=7" style="width:210; height:62; border:none; float:right;" alt="Powered by SourceForge.net" /></a>
+<a href="http://sourceforge.net">SourceForge.net</a>
<h1><a class="anchor" id="overview"></a>
Overview</h1>
<p>QuaZIP is a simple C++ wrapper over <a href="http://www.winimage.com/zLibDll/minizip.html">Gilles Vollant's ZIP/UNZIP package</a> that can be used to access ZIP archives. It uses <a href="http://qt.digia.com/">the Qt toolkit</a>.</p>
......@@ -42,6 +42,9 @@ override_dh_auto_build:
# Qt5 builds - make (dynamic and static)
QT_SELECT=qt5 dh_auto_build -B$(QT5_PATH)
# build doc
doxygen
override_dh_auto_clean:
dh_auto_clean -B$(QT4_PATH)
......
version=3
http://sf.net/quazip/quazip-(.+)\.(?:tar\.gz)
# http://sourceforge.net/projects/quazip/files/quazip/0.4.4/quazip-0.4.4.tar.gz/download
version=4
https://github.com/stachenov/quazip/releases .*/archive/@ANY_VERSION@@ARCHIVE_EXT@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>QuaZIP: quazip/JlCompress.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">QuaZIP
&#160;<span id="projectnumber">quazip-0-7-3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_94f3fdea1a650ed21d35813cdb37a339.html">quazip</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">JlCompress.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef JLCOMPRESSFOLDER_H_</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define JLCOMPRESSFOLDER_H_</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">Copyright (C) 2010 Roberto Pompermaier</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">Copyright (C) 2005-2016 Sergey A. Tachenov</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">This file is part of QuaZIP.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">QuaZIP is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">the Free Software Foundation, either version 2.1 of the License, or</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">(at your option) any later version.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">QuaZIP is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">along with QuaZIP. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">See COPYING file for the full LGPL text.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">Original ZIP package is copyrighted by Gilles Vollant and contributors,</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">see quazip/(un)zip.h files for details. Basically it&#39;s the zlib license.</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;quazip.h&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;quazipfile.h&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;quazipfileinfo.h&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;QFileInfo&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;QFile&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classJlCompress.html"> 42</a></span>&#160;<span class="keyword">class </span>QUAZIP_EXPORT <a class="code" href="classJlCompress.html">JlCompress</a> {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">static</span> QStringList extractDir(<a class="code" href="classQuaZip.html">QuaZip</a> &amp;zip, <span class="keyword">const</span> QString &amp;dir);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static</span> QStringList getFileList(<a class="code" href="classQuaZip.html">QuaZip</a> *zip);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">static</span> QString extractFile(<a class="code" href="classQuaZip.html">QuaZip</a> &amp;zip, QString fileName, QString fileDest);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">static</span> QStringList extractFiles(<a class="code" href="classQuaZip.html">QuaZip</a> &amp;zip, <span class="keyword">const</span> QStringList &amp;files, <span class="keyword">const</span> QString &amp;dir);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressFile(<a class="code" href="classQuaZip.html">QuaZip</a>* zip, QString fileName, QString fileDest);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressSubDir(<a class="code" href="classQuaZip.html">QuaZip</a>* parentZip, QString dir, QString parentDir, <span class="keywordtype">bool</span> recursive,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; QDir::Filters filters);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> extractFile(<a class="code" href="classQuaZip.html">QuaZip</a>* zip, QString fileName, QString fileDest);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> removeFile(QStringList listFile);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressFile(QString fileCompressed, QString file);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressFiles(QString fileCompressed, QStringList files);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressDir(QString fileCompressed, QString dir = QString(), <span class="keywordtype">bool</span> recursive = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> compressDir(QString fileCompressed, QString dir,</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">bool</span> recursive, QDir::Filters filters);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">static</span> QString extractFile(QString fileCompressed, QString fileName, QString fileDest = QString());</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">static</span> QStringList extractFiles(QString fileCompressed, QStringList files, QString dir = QString());</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> QStringList extractDir(QString fileCompressed, QString dir = QString());</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">static</span> QStringList getFileList(QString fileCompressed);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">static</span> QString extractFile(QIODevice *ioDevice, QString fileName, QString fileDest = QString());</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">static</span> QStringList extractFiles(QIODevice *ioDevice, QStringList files, QString dir = QString());</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">static</span> QStringList extractDir(QIODevice *ioDevice, QString dir = QString());</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">static</span> QStringList getFileList(QIODevice *ioDevice); </div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;};</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* JLCOMPRESSFOLDER_H_ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="classQuaZip_html"><div class="ttname"><a href="classQuaZip.html">QuaZip</a></div><div class="ttdoc">ZIP archive. </div><div class="ttdef"><b>Definition:</b> quazip.h:84</div></div>
<div class="ttc" id="classJlCompress_html"><div class="ttname"><a href="classJlCompress.html">JlCompress</a></div><div class="ttdoc">Utility class for typical operations. </div><div class="ttdef"><b>Definition:</b> JlCompress.h:42</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Feb 4 2017 22:19:38 for QuaZIP by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>QuaZIP: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">QuaZIP
&#160;<span id="projectnumber">quazip-0-7-3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classJlCompress.html" target="_self">JlCompress</a></td><td class="desc">Utility class for typical operations </td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaAdler32.html" target="_self">QuaAdler32</a></td><td class="desc">Adler32 checksum </td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaChecksum32.html" target="_self">QuaChecksum32</a></td><td class="desc">Checksum interface </td></tr>
<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaCrc32.html" target="_self">QuaCrc32</a></td><td class="desc">CRC32 checksum </td></tr>
<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaGzipFile.html" target="_self">QuaGzipFile</a></td><td class="desc">GZIP file </td></tr>
<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZIODevice.html" target="_self">QuaZIODevice</a></td><td class="desc">A class to compress/decompress QIODevice </td></tr>
<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZip.html" target="_self">QuaZip</a></td><td class="desc">ZIP archive </td></tr>
<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZipDir.html" target="_self">QuaZipDir</a></td><td class="desc">Provides ZIP archive navigation </td></tr>
<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZipFile.html" target="_self">QuaZipFile</a></td><td class="desc">A file inside ZIP archive </td></tr>
<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structQuaZipFileInfo.html" target="_self">QuaZipFileInfo</a></td><td class="desc">Information about a file inside archive </td></tr>
<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structQuaZipFileInfo64.html" target="_self">QuaZipFileInfo64</a></td><td class="desc">Information about a file inside archive (with zip64 support) </td></tr>
<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZipFilePrivate.html" target="_self">QuaZipFilePrivate</a></td><td class="desc">The implementation class for <a class="el" href="classQuaZip.html" title="ZIP archive. ">QuaZip</a> </td></tr>
<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structQuaZipNewInfo.html" target="_self">QuaZipNewInfo</a></td><td class="desc">Information about a file to be created </td></tr>
<tr id="row_13_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classQuaZipPrivate.html" target="_self">QuaZipPrivate</a></td><td class="desc">All the internal stuff for the <a class="el" href="classQuaZip.html" title="ZIP archive. ">QuaZip</a> class </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Feb 4 2017 22:19:38 for QuaZIP by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>