Added Cyg-Win

This commit is contained in:
Frank Harris 2026-06-06 18:46:40 -04:00
parent 82cbc206eb
commit 413c315806
10586 changed files with 3806249 additions and 0 deletions

View file

@ -0,0 +1,2 @@
gzip was written by Jean-loup Gailly <jloup@gzip.org>,
and Mark Adler for the decompression code.

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,640 @@
GNU gzip NEWS -*- outline -*-
* Noteworthy changes in release 1.14 (2025-04-09) [stable]
** Bug fixes
'gzip -d' no longer omits the last partial output buffer when the
input ends unexpectedly on an IBM Z platform.
[bug introduced in gzip-1.11]
'gzip -l' no longer misreports lengths of multimember inputs.
[bug introduced in gzip-1.12]
'gzip -S' now rejects suffixes containing '/'.
[bug present since the beginning]
** Changes in behavior
The GZIP environment variable is now silently ignored except for the
options -1 (--fast) through -9 (--best), --rsyncable, and --synchronous.
This brings gzip into line with more-cautious compressors like zstd
that limit environment variables' effect to relatively innocuous
performance issues. You can continue to use scripts to specify
whatever gzip options you like.
'zmore' is no longer installed on platforms lacking 'more'.
** Performance improvements
gzip now decompresses significantly faster by computing CRCs via a
slice by 8 algorithm, and faster yet on x86-64 platforms that
support pclmul instructions.
* Noteworthy changes in release 1.13 (2023-08-19) [stable]
** Changes in behavior
zless now diagnoses gzip failures, if using less 623 or later.
When SIGPIPE is ignored, gzip now exits with status 2 (warning)
instead of status 1 (error) when writing to a broken pipe. This is
more useful with programs like 'less' that treat gzip exit status 2
as a non-failure.
** Bug fixes
'gzip -d' no longer fails to report invalid compressed data
that uses a dictionary distance outside the input window.
[bug present since the beginning]
Port to C23, which does not allow K&R-style function definitions
with parameters, and which does not define __alignas_is_defined.
* Noteworthy changes in release 1.12 (2022-04-07) [stable]
** Changes in behavior
'gzip -l' no longer misreports file lengths 4 GiB and larger.
Previously, 'gzip -l' output the 32-bit value stored in the gzip
header even though that is the uncompressed length modulo 2**32.
Now, 'gzip -l' calculates the uncompressed length by decompressing
the data and counting the resulting bytes. Although this can take
much more time, nowadays the correctness pros seem to outweigh the
performance cons.
'zless' is no longer installed on platforms lacking 'less'.
** Bug fixes
zgrep applied to a crafted file name with two or more newlines
can no longer overwrite an arbitrary, attacker-selected file.
This addresses CVE-2022-1271, ZDI-CAN-16587.
[bug introduced in gzip-1.3.10]
zgrep now names input file on error instead of mislabeling it as
"(standard input)", if grep supports the GNU -H and --label options.
'zdiff -C 5' no longer misbehaves by treating '5' as a file name.
[bug present since the beginning]
Configure-time options like --program-prefix now work.
* Noteworthy changes in release 1.11 (2021-09-03) [stable]
** Performance improvements
IBM Z platforms now support hardware-accelerated deflation.
* Noteworthy changes in release 1.10 (2018-12-29) [stable]
** Changes in behavior
Compressed gzip output no longer contains the current time as a
timestamp when the input is not a regular file. Instead, the output
contains a null (zero) timestamp. This makes gzip's behavior more
reproducible when used as part of a pipeline. (As a reminder, even
regular files will use null timestamps after the year 2106, due to a
limitation in the gzip format.)
** Bug fixes
A use of uninitialized memory on some malformed inputs has been fixed.
[bug present since the beginning]
A few theoretical race conditions in signal handers have been fixed.
These bugs most likely do not happen on practical platforms.
[bugs present since the beginning]
* Noteworthy changes in release 1.9 (2018-01-07) [stable]
** Bug fixes
gzip -d -S SUFFIX file.SUFFIX would fail for any upper-case byte in SUFFIX.
E.g., before, this command would fail:
$ :|gzip > kT && gzip -d -S T kT
gzip: kT: unknown suffix -- ignored
[bug present since the beginning]
When decompressing data in 'pack' format, gzip no longer mishandles
leading zeros in the end-of-block code. [bug introduced in gzip-1.6]
When converting from system-dependent time_t format to the 32-bit
unsigned MTIME format used in gzip files, if a timestamp does not
fit gzip now substitutes zero instead of the timestamp's low-order
32 bits, as per Internet RFC 1952. When converting from MTIME to
time_t format, if a timestamp does not fit gzip now warns and
substitutes the nearest in-range value instead of crashing or
silently substituting an implementation-defined value (typically,
the timestamp's low-order bits). This affects timestamps before
1970 and after 2106, and timestamps after 2038 on platforms with
32-bit signed time_t. [bug present since the beginning]
Commands implemented via shell scripts are now more consistent about
failure status. For example, 'gunzip --help >/dev/full' now
consistently exits with status 1 (error), instead of with status 2
(warning) on some platforms. [bug present since the beginning]
Support for VMS and Amiga has been removed. It was not working anyway,
and it reportedly caused file name glitches on MS-Windowsish platforms.
* Noteworthy changes in release 1.8 (2016-04-26) [stable]
** Bug fixes
gzip -l no longer falsely reports a write error when writing to a pipe.
[bug introduced in gzip-1.7]
Port to Oracle Solaris Studio 12 on x86-64.
[bug present since at least gzip-1.2.4]
When configuring gzip, ./configure DEFS='...-DNO_ASM...' now
suppresses assembler again. [bug introduced in gzip-1.3.5]
* Noteworthy changes in release 1.7 (2016-03-27) [stable]
** Changes in behavior
The GZIP environment variable is now obsolescent; gzip now warns if
it is used, and rejects attempts to use dangerous options or operands.
You can use an alias or script instead.
Installed programs like 'zgrep' now use the PATH environment variable
as usual to find subsidiary programs like 'gzip' and 'grep'.
Previously they prepended the installation directory to the PATH,
which sometimes caused 'make check' to test the wrong gzip executable.
[bug introduced in gzip-1.3.13]
** New features
gzip now accepts the --synchronous option, which causes it to use
fsync and similar primitives to transfer output data to the output
file's storage device when the file system supports this. Although
this option makes gzip safer in the presence of system crashes, it
can make gzip considerably slower.
gzip now accepts the --rsyncable option. This option is accepted in
all modes, but has effect only when compressing: it makes the resulting
output more amenable to efficient use of rsync. For example, when a
large input file gets a small change, a gzip --rsyncable image of
that file will remain largely unchanged, too. Without --rsyncable,
even a tiny change in the input could result in a totally different
gzip-compressed output file.
** Bug fixes
gzip -k -v no longer reports that files are replaced.
[bug present since the beginning]
zgrep -f A B C no longer reads A more than once if A is not a regular file.
This better supports invocations like 'zgrep -f <(COMMAND) B C' in Bash.
[bug introduced in gzip-1.2]
* Noteworthy changes in release 1.6 (2013-06-09) [stable]
** New features
gzip now accepts the --keep (-k) option, for consistency with tools
like xz, lzip and bzip2. With this option, gzip no longer removes
named input files when compressing or decompressing.
** Bug fixes
gzip -d no longer malfunctions with certain invalid data in 'pack' format.
[bug introduced in gzip-0.8]
When overwriting, gzip no longer acts as if you typed "y" when you type "n",
on some platforms when compiled with optimization.
[bug introduced in gzip-1.3.6]
zgrep no longer malfunctions with a multi-digit context option like -15.
Now, it passes that option to grep (equivalent to -C15) just as it does
for single-digit options. [bug introduced in gzip-1.3.12]
zmore now acts more like 'more', and is more portable to POSIXish hosts.
* Noteworthy changes in release 1.5 (2012-06-17) [stable]
** Bug fixes
gzip -d now decodes and checks header CRC16 checksums as specified by
the FHCRC section of Internet RFC 1952.
"gzip -d -S '' precious.gz" is now rejected immediately. Before,
that command would emulate "rm -i precious.gz", but with an easily-
misunderstood prompt. I.e., gzip would ask if it's ok to remove the
existing file, "precious.gz". If you made the mistake of saying "yes",
it would remove that input file before attempting to uncompress it.
gzip -cdf now properly handles input consisting of gzip'd data followed
by uncompressed data. Before it would output raw compressed input, too.
For example, now "(printf x|gzip; echo y)|gzip -dcf" prints "xy\n",
while before it would print "x<compressed data>y\n".
gzip -rf no longer compresses files more than once (e.g., replacing
FOO with FOO.gz.gz) on file systems such as ZFS where a readdir
loop that unlinks and creates files can revisit output files.
* Noteworthy changes in release 1.4 (2010-01-20) [stable]
** Bug fixes
gzip -d could segfault and/or clobber the stack, possibly leading to
arbitrary code execution. This affects x86_64 but not 32-bit systems.
This fixes CVE-2010-0001.
For more details, see https://bugzilla.redhat.com/554418
gzip -d would fail with a CRC error for some valid inputs.
So far, the only valid input known to exhibit this failure was
compressed "from FAT filesystem (MS-DOS, OS/2, NT)". In addition,
to trigger the failure, your memcpy implementation must copy in
the "reverse" order.
* Noteworthy changes in release 1.3.14 (2009-10-30) [beta]
** Bug fixes
gzip no longer fails when there is exactly one trailing NUL byte
gzip has always accepted trailing NUL bytes. Note the plural.
zdiff would exit with status 2 (indicating an error) rather than 1 to
indicate differences when both inputs were compressed and different.
zdiff would fail to print differences in two compressed inputs
zgrep -f - didn't work
* Noteworthy changes in release 1.3.13 (2009-09-30) [stable]
** 'gzip -f foo.gz' now creates a file foo.gz.gz instead of complaining.
** Bug fixes
gzip -d no longer fails with "-" as 2nd or subsequent argument
gzip no longer ignores a close-induced write failure, e.g., on NFS
gzip -d no longer segfaults on certain invalid inputs
Major changes in Gzip 1.3.12 (2007-04-13)
* znew now uses $TMPDIR (default /tmp) instead of always using /tmp.
* It is now documented that gzip ignores case when examining file name
extensions; for example, 'gzip test.Gz' (without -f) fails because
the file name ends in '.Gz'.
Major changes in Gzip 1.3.11 (2007-02-05)
* As per the GNU coding standards, the behavior of gzip and its
companion executables no longer depend on the name used to invoke them.
For example, 'gzip' and 'gunzip' are no longer hard links;
instead, 'gunzip' is now a small program that invokes 'gzip -d'.
* zdiff now checks for subsidiary gzip failures, and works around
bugs in IRIX 6 sh, Tru64 4.0F ksh, and Solaris 8 bash.
Major changes in Gzip 1.3.10 (2006-12-30)
* gzip -c and zcat now work on special files, files with special mode bits,
and files with multiple hard links.
* gzip -q now exits with status 2 (not 1) when SIGPIPE is received.
* zcmp and zdiff did not work in the usual case, due to a typo.
* zgrep has many bugs fixed with argument handling, special characters,
and exit status.
* zless no longer mishandles $%=~ in file names.
Gzip 1.3.9 (2006-12-15)
* No major changes; only porting fixes.
Major changes in Gzip 1.3.8 (2006-12-08)
* Fix some gzip problems:
- A security fix from Debian 1.3.5-5 was inadvertently omitted.
- The assembler is now invoked with --noexecstack if supported,
so that gzip can better resist stack-smashing attacks.
Major changes in Gzip 1.3.7 (2006-12-06)
* Fix some gzip problems:
- Refuse to compress setuid or setgid files, or files with the sticky bit.
- Fix more race conditions in setting file permissions and owner,
removing output files, following symbolic links, and dealing with
special files.
- Remove most of the code working around ENAMETOOLONG deficiencies.
Systems with those deficiencies are long-dead, and the workarounds
had race conditions on modern hosts.
- Catch CPU time and file size limit signals, too.
- Check for read errors when closing files.
- Fix a core dump caused by a stray abort mistakenly introduced in 1.3.6.
* Fix some gzexe problems:
- Improve resistance to denial-of-service attacks.
- Fix some quoting and escaping bugs.
- Do not assume /tmp is sticky (though it should be!).
- Do not assume the working directory can be written.
- Rely on PATH in the generated executable, as the man page says.
- Don't assume IFS is sane.
- Exit with signal's status, if signaled.
Major changes in Gzip 1.3.6 (2006-11-20)
* Fix some race conditions in setting file timestamps, permissions, and owner.
* Fix some race conditions in signal handling.
* When gzip exits due to a signal, it exits with the signal's status, not 1.
* gzip now restores file timestamps to the resolution supported by the
time-setting primitives of the operating system, typically 1 microsecond.
Formerly it restored them only to the nearest second.
* gzip -r no longer attempts to reset the last-access times of directories
it reads, as this messes up when other processes are reading the directories.
* The options --version and --help now work on all gzip-installed executables,
and now use a format similar to other GNU programs.
* The manual is now distributed under the terms of the GNU Free
Documentation License without invariant sections or cover texts.
* Port to current versions of Autoconf, Automake, and Gnulib.
Major changes from 1.3.4 to 1.3.5
* gzip now removes any output symlink before writing output file.
* zgrep etc. scripts now port to POSIX 1003.1-2001 hosts.
* zforce no longer assumes 14-byte file name length limit.
* zless is now implemented using less and LESSOPEN, not zmore and PAGER.
* assembly-language speedups re-enabled; were mistakenly disabled in 1.3.
Major changes from 1.3.3 to 1.3.4
* Less output is lost when decompressing a truncated file.
* The manual is now distributed under the terms of the GNU Free
Documentation License.
No major changes in 1.3.2 or 1.3.3 (bug fixes only)
Major changes from 1.3 to 1.3.1
* zgrep now supports --, -H, -h, -L, -l, -C, -d, -m and their long equivalents.
Major changes from 1.2.4 to 1.3
* Add support for large files, e.g. files larger than 2 GB on Solaris 2.6.
* Adjust file size listing format for files larger than 10 GB.
* New command `zless'.
* `zdiff' now reports exit status like `diff' does.
* `zcat' is now always called `zcat', not `gzcat'.
Similarly for `zdiff', `zgrep', `zmore', `znew', `zforce'.
* Warn about a compressed file's trailing zeros only if verbose,
for compatibility with recent versions of GNU tar.
* Conform to changes to GNU makefile standards.
* Port to Autoconf 2.13.
* Convert to Automake.
* Fix bugs in the following areas:
- files larger than 4 GB
- security hole involving symlinks from /tmp
- security hole involving long file names
- permissions bug when compressing a symbolic link to a file
- core dumps
- concatenated compressed files on INBUFSIZ boundaries
- porting bugs on hosts with signed chars
- porting bug with upper and lower case
- porting bug for hosts that reserve the names `basename' or `warning'
Major changes from 1.2.3 to 1.2.4
* By default, do not restore file name and timestamp from those saved
inside the .gz file (behave as 'compress'). Added the --name option
to force name and timestamp restoration.
* Accept - as synonym for stdin.
* Use manlinks=so or ln to support either hard links or .so in man pages
* Accept foo.gz~ in zdiff.
* Added support for Windows NT
* Handle ENAMETOOLONG for strict Posix systems
* Use --recursive instead of --recurse to comply with Webster and
the GNU stdandard.
* Allow installation of shell scripts with a g prefix: make G=g install
* Install by default zcat as gzcat if gzcat already exists in path.
* Let zmore behave as more when invoked without parameters (give help)
* Let gzip --list reject files not in gzip format even with --force.
* Don't complain about non gzip files for options -rt or -rl.
* Added advice in INSTALL for several systems.
Major changes from 1.2.2 to 1.2.3
* Don't display the output name when decompressing except with --verbose.
* Remove usage of alloca in getopt.c and all makefiles.
* Added the zfile shell script in subdirectory sample.
* Moved the list of compiler bugs from README to INSTALL.
* Added vms/Readme.vms.
Major changes from 1.2.1 to 1.2.2
* Fix a compilation error on Sun with cc (worked with gcc).
Major changes from 1.2 to 1.2.1
* Let zmore act as more if the data is not gzipped.
* made gzexe more secure (don't rely on PATH).
* By default, display output name only when the name was actually truncated.
Major changes from 1.1.2 to 1.2
* Added the --list option to display the file characteristics.
* Added the --no-name option: do not save or restore original filename
Save the original name by default.
* Allow gunzip --suffix "" to attempt decompression on any file
regardless of its extension if an original name is present.
* Add support for the SCO compress -H format.
* gzip --fast now compresses faster (speed close to that of compress)
with degraded compression ratio (but still better than compress).
Default level changed to -6 (acts exactly as previous level -5) to
be a better indication of its placement in the speed/ratio range.
* Use smart name truncation: 123456789012.c -> 123456789.c.gz
instead of 12345678901.gz
* With --force, let zcat pass non gzip'ed data unchanged (zcat == cat)
* Added the zgrep shell script.
* Made sub.c useful for 16 bit sound, 24 bit images, etc..
* Suppress warnings about suffix for gunzip -r, except with --verbose.
* On MSDOS, use .gz extension when possible (files without extension)
* Moved the sample programs to a subdirectory sample.
* Added a "Special targets" section in INSTALL.
Major changes from 1.1.1 to 1.1.2.
* Fix serious bug for VMS (-gz not removed when decompressing).
* Allow suffix other than .gz in znew.
* Do not display compression ratio when decompressing stdin.
* In zmore.in, work around brain damaged stty -g (Ultrix).
* Display a correct compression ratio for .Z files.
* Added .z to .gz renaming script in INSTALL.
* Allow setting CFLAGS in configure.
Major changes from 1.1 to 1.1.1.
* Fix serious bug in vms.c (affects Vax/VMS only).
* Added --ascii option.
* Add workaround in configure.in for Ultrix (quote eval argument)
Major changes from 1.0.7 to 1.1.
* Use .gz suffix by default, add --suffix option.
* Let gunzip accept a "_z" suffix (used by one 'compress' on Vax/VMS).
* Quit when reading garbage from stdin instead of reporting an error.
* Added makefile for VAX/MMS and support for wildcards on VMS.
* Added support for MSC under OS/2.
* Added support for Prime/PRIMOS.
* Display compression ratio also when decompressing (with --verbose).
* Quit after --version (GNU standard)
* Use --force to bypass isatty() check
* Continue processing other files in case of recoverable error.
* Added comparison of zip and gzip in the readme file.
* Added small sample programs (ztouch, sub, add)
* Use less memory when compiled with -DSMALL_MEM (for MSDOS).
* Remove the "off by more than one minute" timestamp kludge
Major changes from 1.0.6 to 1.0.7.
* Allow zmore to read from standard input (like more).
* Support the 68000 (Atari ST) in match.S.
* Retry partial writes (required on Linux when gzip is suspended in a pipe).
* Allow full pathnames and renamings in gzexe.
* Don't let gzexe compress setuid executables or gzip itself.
* Added vms/Makefile.gcc for gcc on the Vax.
* Allow installation of binaries and shell scripts in different dirs.
* Allows complex PAGER variable in zmore (e.g.: PAGER="col -x | more")
* Allow installation of zcat as gzcat.
* Several small changes for portability to old or weird systems.
* Suppress help message and send compressed data to the terminal when
gzip is invoked without parameters and without redirection.
* Add compile option GNU_STANDARD to respect the GNU coding standards:
with -DGNU_STANDARD, behave as gzip even if invoked under the name gunzip.
(I don't like the last two changes, which were requested by the FSF.)
Major changes from 1.0.5 to 1.0.6.
* Let gzexe detect executables that are already gzexe'd.
* Keep file attributes in znew and gzexe if cpmod is available.
* Don't try restoring record format on VMS (1.0.5 did not work correctly)
* Added asm version for 68000 in amiga/match.a.
Use asm version for Atari TT and NeXT.
* For OS/2, assume HPFS by default, add flag OS2FAT if necessary.
* Fixed some bugs in zdiff and define zcmp as a link to zdiff.
Major changes from 1.0.4 to 1.0.5.
* For VMS, restore the file type for variable record format, otherwise
extract in fixed length format (not perfect, but better than
forcing all files to be in stream_LF format).
* For VMS, use "-z" default suffix and accept a version number in file names.
* For Unix, allow compression of files with name ending in 'z'. Use only
.z, .*-z, .tgz, .taz as valid gzip extensions. In the last two cases,
extract to .tar by default.
* On some versions of MSDOS, files with a 3 character extension could not
be compressed.
* Garbage collect files in /tmp created by gzexe.
* Fix the 'OS code' byte in the gzip header.
* For the Amiga, add the missing utime.h and add support for gcc.
Major changes from 1.0.3 to 1.0.4.
* Added optimized asm version for 68020.
* Add support for DJGPP.
* Add support for the Atari ST.
* Added zforce to rename gzip'ed files with truncated names.
* Do not install with name uncompress (some systems rely on the
absence of any check in the old uncompress).
* Added missing function (fcfree) in msdos/tailor.c
* Let gunzip handle .tgz files, and let gzip skip them.
* Added -d option (decompress) for gzexe and try preserving file permissions.
* Suppress all warnings with -q.
* Use GZIP_OPT for VMS to avoid conflict with program name.
* ... and many other small changes (see ChangeLog)
Major changes from 1.0.2 to 1.0.3
* Added -K option for znew to keep old .Z files if smaller
* Added -q option (quiet) to cancel -v in GZIP env variable.
* Made gzexe safer on systems with filename limitation to 14 chars.
* Fixed bugs in handling of GZIP env variable and incorrect free with Turbo C.
Major changes from 1.0.1 to 1.0.2
* Added env variable GZIP for default options. Example:
for sh: GZIP="-8 -v"; export GZIP
for csh: setenv GZIP "-8 -v"
* Added support for the Amiga.
* znew now keeps the old .Z if it is smaller than the .z file.
This can happen for some large and very redundant files.
* Do not complain about trailing garbage for record oriented IO (Vax/VMS).
This implies however that multi-part gzip files are not supported
on such systems.
* Added gzexe to compress rarely used executables.
* Reduce memory usage (required for MSDOS and useful on all systems).
* Preserve timestamp in znew -P (pipe option) if touch -r works.
Major changes from 1.0 to 1.0.1
* fix trivial errors in the Borland makefile (msdos/Makefile.bor)
Major changes from 0.8.2 to 1.0
* gzip now runs on Vax/VMS
* gzip will not not overwrite files without -f when using /bin/sh in
background.
* Support the test option -t for compressed (.Z) files.
Allow some data recovery for bad .Z files.
* Added makefiles for MSDOS (Only tested for MSC, not Borland).
* still more changes to configure for several systems
Major changes from 0.8.1 to 0.8.2:
* yet more changes to configure for Linux and other systems
* Allow zcat on a file with multiple links.
Major changes from 0.8 to 0.8.1:
* znew has now a pipe option -P to reduce the disk space requirements,
but this option does not preserve timestamps.
* Fixed some #if directives for compilation with TurboC.
Major changes from 0.7 to 0.8:
* gzip can now extract .z files created by 'pack'.
* configure should no longer believe that every machine is a 386
* Fix the entry for /etc/magic in INSTALL.
* Add patch for GNU tar 1.11.1 and a pointer to crypt++.el
* Uncompress files with multiple links only with -f.
* Fix for uncompress of .Z files on 16-bit machines
* Create a correct output name for file names of exactly N-1 chars when
the system has a limit of N chars.
Major changes from 0.6 to 0.7:
* Use "make check" instead of "make test".
* Keep timestamp and pass options to gzip in znew.
* Do not create .z.z files with gzip -r.
* Allow again gunzip .zip files (was working in 0.5)
* Allow again compilation with TurboC 2.0 (was working in 0.4)
Major changes form 0.5 to 0.6:
* gunzip reported an error when extracting certain .z files. The .z files
produced by gzip 0.5 are correct and can be read by gunzip 0.6.
* gunzip now supports multiple compressed members within a single .z file.
* Fix the check for i386 in configure.
* Added "make test" to check for compiler bugs. (gcc -finline-functions
is broken at least on the NeXT.)
* Use environment variable PAGER in zmore if it is defined.
* Accept gzcat in addition to zcat for people having /usr/bin before
/usr/local/bin in their path.
========================================================================
Copyright (C) 1999, 2001-2002, 2006-2007, 2009-2025 Free Software Foundation,
Inc.
Copyright (C) 1992, 1993 Jean-loup Gailly
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free
Documentation License'' file as part of this distribution.

View file

@ -0,0 +1,127 @@
This is the file README for the gzip distribution.
The GNU gzip home page is https://www.gnu.org/software/gzip.
gzip (GNU zip) is a compression utility designed to be a replacement
for 'compress'. Its main advantages over compress are much better
compression and freedom from patented algorithms. The GNU Project
uses it as the standard compression program for its system.
gzip currently uses by default the LZ77 algorithm used in zip 1.9 (the
portable pkzip compatible archiver). The gzip format was however
designed to accommodate several compression algorithms. See below
for a comparison of zip and gzip.
gunzip can currently decompress files created by gzip, compress or
pack. The detection of the input format is automatic. For the
gzip format, gunzip checks a 32 bit CRC. For pack, gunzip checks the
uncompressed length. The 'compress' format was not designed to allow
consistency checks. However gunzip is sometimes able to detect a bad
.Z file because there is some redundancy in the .Z compression format.
If you get an error when uncompressing a .Z file, do not assume that
the .Z file is correct simply because the standard uncompress does not
complain. This generally means that the standard uncompress does not
check its input, and happily generates garbage output.
gzip produces files with a .gz extension. Previous versions of gzip
used the .z extension, which was already used by the 'pack'
Huffman encoder. gunzip is able to decompress .z files (packed
or gzip'ed).
Several planned features are not yet supported (see the file TODO).
See the file NEWS for a summary of changes since the last release.
See the file INSTALL for installation instructions.
WARNING: gzip is sensitive to compiler bugs, particularly when
optimizing. Use "make check" to check that gzip was compiled
correctly. Try compiling gzip without any optimization if you have a
problem.
Please send all comments and bug reports by electronic mail to
<bug-gzip@gnu.org>.
Bug reports should ideally include:
* The complete output of "gzip -V" (or the contents of revision.h
if you can't get gzip to compile)
* The hardware and operating system (try "uname -a")
* The compiler used to compile (if it is gcc, use "gcc -v")
* A description of the bug behavior
* The input to gzip, that triggered the bug
If you send me patches for machines I don't have access to, please test them
very carefully. gzip is used for backups, it must be extremely reliable.
The znew and gzexe shell scripts provided with gzip benefit from
(but do not require) the (non-GNU) cpmod utility to transfer file attributes.
The sample programs zread.c, sub.c and add.c in subdirectory sample
are provided as examples of useful complements to gzip. Read the
comments inside each source file. The perl script ztouch is also
provided as example (not installed by default since it relies on perl).
gzip is free software, you can redistribute it and/or modify it under
the terms of the GNU General Public License, a copy of which is
provided under the name COPYING. The latest version of gzip is always
available from https://ftp.gnu.org/gnu/gzip or in any of the GNU
mirror sites.
Many thanks to those who provided me with bug reports and feedback.
See the files THANKS and ChangeLog for more details.
Note about zip vs. gzip:
The name 'gzip' was a very unfortunate choice, because zip and gzip
are two really different programs, although the actual compression and
decompression sources were written by the same persons. A different
name should have been used for gzip, but it is too late to change now.
zip is an archiver: it compresses several files into a single archive
file. gzip is a simple compressor: each file is compressed separately.
Both share the same compression and decompression code for the
'deflate' method. unzip can also decompress old zip archives
(implode, shrink and reduce methods). gunzip can also decompress files
created by compress and pack. zip 1.9 and gzip do not support
compression methods other than deflation. (zip 1.0 supports shrink and
implode). Better compression methods may be added in future versions
of gzip. zip will always stick to absolute compatibility with pkzip,
it is thus constrained by PKWare, which is a commercial company. The
gzip header format is deliberately different from that of pkzip to
avoid such a constraint.
On Unix, gzip is mostly useful in combination with tar. GNU tar
1.11.2 and later has a -z option to invoke gzip automatically. "tar -z"
compresses better than zip, since gzip can then take advantage of
redundancy between distinct files. The drawback is that you must
scan the whole tar.gz file in order to extract a single file near
the end; unzip can directly seek to the end of the zip file. There
is no overhead when you extract the whole archive anyway.
If a member of a .zip archive is damaged, other files can still
be recovered. If a .tar.gz file is damaged, files beyond the failure
point cannot be recovered. (Future versions of gzip will have
error recovery features.)
gzip and gunzip are distributed as a single program. zip and unzip
are, for historical reasons, two separate programs, although the
authors of these two programs work closely together in the Info-ZIP
team. zip and unzip are not associated with the GNU project.
See https://infozip.sourceforge.net/ for more about zip and unzip.
For any copyright year range specified as YYYY-ZZZZ in this package
note that the range specifies every single year in that closed interval.
========================================================================
Copyright (C) 1999, 2001-2002, 2006-2007, 2009-2025 Free Software Foundation,
Inc.
Copyright (C) 1992, 1993 Jean-loup Gailly
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free
Documentation License'' file as part of this distribution.

View file

@ -0,0 +1,325 @@
gzip was written by Jean-loup Gailly <gzip@gnu.org>, with portions
written by Mark Adler (inflate.c), Peter Jannesen (unlzw.c) and
Haruhiko Okumura (unlzh.c). The zip deflate format was defined by Phil Katz.
Thanks to those who reported problems and suggested various
improvements. Here is a partial list of them:
Robert Abramovitz bromo@cougar.tandem.com
Jay Adams jka@ece.cmu.edu
Mark Adler madler@cco.caltech.edu
Edwin Allum edwin@csri.toronto.edu
Joseph Arceneaux jla@gnu.ai.mit.edu
Jim Avera jim.avera@gmail.com
Tim Auckland tda10@cus.cam.ac.uk
Ken-ichiro Aoki aoki@madonna.physics.ucla.edu
David Ascher da@marlowe.cog.brown.edu
Eric Backus ericb@lsid.hp.com
Becky A. Badgett badgett@cs.utexas.edu
Bo Nygaard Bai bai@iesd.auc.dk
Dave Barber dbarber@apocalypse.bbn.com
Daniel Barkalow barkalow@iabervon.org
Jeff Beadles jeff@onion.rain.com
Rene Beaulieu reneb@distri.hydro.qc.ca
Neal Becker neal@ctd.comsat.com
Dieter Becker becker@med-in.uni-sb.de
Nelson H. F. Beebe beebe@geronimo.math.utah.edu
David J. N. Begley dbegley@st.nepean.uws.edu.au
Eric Benoit eric@ecks.ca
Bob Beresh rberesh@rd.hydro.on.ca
Jim Bernard jbernard@iola.mines.colorado.edu
Karl Berry karl@freefriends.org
James W. Birdsall jwbirdsa@picarefy.picarefy.com
Eric Blake eblake@redhat.com
Hanno Böck hanno@hboeck.de
Meo Bogliolo bartolomeo.bogliolo@xenialab.it
Scott Bolte scott@craycos.com
Wayne E. Bouchard web@paladine.hacks.arizona.edu
Marc Boucher marc@cam.org
Ola Brahammar pt90ob@pt.hk-r.se
Dave Brennan brennan@hal.com
Alan Brown dogbowl@dogbox.acme.gen.nz
Michael L. Brown brown@wi.extrel.com
Rodney Brown rdb@mel.cocam.oz.au
Bruce bde@runx.oz.au
Bill Bumgarner bbum@stone.com
Leila Burrell-Davis leilabd@syma.sussex.ac.uk
Rich Burridge rich.burridge@oracle.com
Roger Butenuth butenuth@ira.uka.de
Rodrigo Campos rodrigo@sdfg.com.ar
Jon Cargille jcargill@cs.wisc.edu
Bud Carlson bud@isle.pegasus.com
Lim Fung Chai fclim@i1sin.daq.semi.harris.com
Wes Chalfant wes@kofax.com
Andrew A. Chernov ache@astral.msk.su
Paul Close pdc@lunch.wpd.sgi.com
Jeff Coffler coffler@jac.enet.dec.com
Will Colley wcc3@occs.cs.oberlin.edu
Lasse Collin lasse.collin@tukaani.org
Roger Cornelius sherpa!rac@uunet.uu.net
Kevin Cosgrove kevinc@tekig6.pen.tek.com
Stephen J Cowley s.j.cowley@amtp.cam.ac.uk
Ron Cox roncox@indirect.com
Frank Crawford frank@photon.ansto.gov.au
James R. Crawford qralston@cislabs.pitt.edu
Lawrence Crowl crowl@research.cs.orst.edu
Klaus Dahlenburg kdburg@incoahe.hanse.de
William E Davidsen davidsen@ariel.crd.ge.com
John M. DeDourek dedourek@aixive2.cs.unb.ca
Jeff Deifik jdeifik@isi.edu
Vince DeMarco vince@whatnxt.cuc.ab.ca
Michael De La Rue p91152@cplab.physics.edinburgh.ac.uk
Jeff Delinck delinck@pa621a.inland.com
John DeRoo deroo@grout.adv.shr.dec.com
Jim Diamond zsd@axe.drea.dnd.ca
Antonio Diaz Diaz ant_diaz@teleline.es
Stefano Diomedi sd@teculx.tecsiel.it
Lawrence R. Dodd dodd@roebling.poly.edu
Matthew Donadio donadio@mxd120.rh.psu.edu
Andy Dougherty andy@crystal.phys.lafayette.edu
Darrell Duane dduane@mason1.gmu.edu
John Eaton jwe@che.utexas.edu
Will Edgington wedgingt@ptolemy.arc.nasa.gov
Brian Edmonds edmonds@edmonds.home.cs.ubc.ca
Paul Eggert eggert@cs.ucla.edu
Enami enami@sys.ptg.sony.co.jp
Kristoffer Eriksson ske@pkmab.se
Daniel Eriksson m91der@bellatrix.tdb.uu.se
Denis Excoffier 3.1416@free.fr
Larry Fahnoe fahnoe@c1mpls.mn.org
Rik Faith faith@cs.unc.edu
Michael Felt aixtools@felt.demon.nl
Cristian Ferretti cfs@poincare.mat.puc.cl
Karl-Jose Filler pla_jfi@pki-nbg.philips.de
Valery Fine fine@vxcern.cern.ch
Bob Fischer bobf@milne.geology.yale.edu
Per Foreby perf@efd.lth.se
Alexander Fraser alex@cs.umb.edu
Noah Friedman friedman@gnu.ai.mit.edu
Bob Friesenhahn bfriesen@iphase.com
Gerhard Friesland-Köpke frieslan@rzdspc3.informatik.uni-hamburg.de
Andy Fyfe andy@scp.caltech.edu
Bdale Garbee bdale@gag.com
Geoff geoff@frs.faxon.com
Sam Geeraerts samgee@elmundolibre.be
Arnd Gerns gerns@informatik.uni-hildesheim.de
Kaveh R. Ghazi ghazi@staccato.rutgers.edu
Bjarni Ingi Gislason bjarniig@rhi.hi.is
Assaf Gordon assafgordon@gmail.com
Torbjörn Granlund tege@sics.se
Carl Greco cgreco@parrot.creighton.edu
Bruno Haible bruno@clisp.org
Junio Hamano junio@shadow.twinsun.com
Harald Hanche-Olsen hanche@ams.sunysb.edu
Darrel R. Hankerson hankedr@mail.auburn.edu
Mark Hanning-Lee markhl@romeo.caltech.edu
Lars Hecking st000002@hrz1.hrz.th-darmstadt.de
Aki Helin aki.helin@iki.fi
Rüdiger Helsch ruediger@ramz.ing.tu-bs.de
Mark C. Henderson mch@sqwest.wimsey.bc.ca
Karl Heuer karl@kelp.boston.ma.us
Jarkko Hietaniemi jhi@dol-guldur.hut.fi
Thomas Hiller hiller@fzi.de
Eiji Hirai hirai@cc.swarthmore.edu
Vidar Holen vidar@vidarholen.net
Kjetil Torgrim Homme kjetilho@ifi.uio.no
Robert D. Houk rdh@sli.com
Jim Howard jim_howard@mentorg.com
Preston Hunt gt5708a@prism.gatech.edu
Shane C Hutchins sch@nymph.msel.unh.edu
Hutch hutchinson@wrair-emh1.army.mil
Lester Ingber ingber@alumni.caltech.edu
Ken Ishii ishii@sni-usa.com
Per Steinar Iversen iversen@vsfys1.fi.uib.no
Chris Jacobsen jacobsen@xray1.physics.sunysb.edu
Michal Jaegermann ntomczak@vm.ucs.ualberta.ca
Brian Jones brianj@skat.usc.edu
Denny de Jonge witaddj@dutrex.tudelft.nl
Arne H. Juul arnej@lise.unit.no
Dana Jacobsen jacobsd@solar.cor2.epa.gov
Dan Jacobson jidanni@jidanni.org
Peter Jannesen peter@ncs.nl
Sverre Jarp
Yanyan Jiang jiangyy@outlook.com
Brian D. Johnston johnstonb@med.ge.com
Walter W. Jones wwj@candela.cfr.nist.gov
Tom Judson judson@scf.usc.edu
Henry G. Juengst juengst@saph2.physik.uni-bonn.de
Kiyoshi KANAZAWA yoi_no_myoujou@yahoo.co.jp
Young Mo Kang kym327@gmail.com
Sarantos Kapidakis sarantos%manteion@ics.forth.gr
Helmut Karlowski helmut.karlowski@ish.de
Amir J. Katz amir@matis.ingr.com
Steve Kelem kelem@castor.xilinx.com
Steven Kimball kimball@shrew.sanders.lockheed.com
Randy Kirchhof rkk@posms.aus.tx.us
Ned Kittlitz kittlitz@seagoon.sw.stratus.com
Sakai Kiyotaka ksakai@mtl.t.u-tokyo.ac.jp
Philip C Kizer pckizer@gonzo.tamu.edu
Pete Klammer pklammer@ouray.denver.colorado.edu
Fritz Kleemann kleemann@informatik.uni-wuerzburg.dbp.de
Wilhelm B. Kloke wb@ifado.arb-phys.uni-dortmund.de
Tom Kloos tk@sequent.com
Carsten Koch carsten.koch@icem.de
Winfried König win@in.rhein-main.de
Mathias Körber mathias@solomon.technet.sg
Steph Konigsdorfer s.konigsdorfer@frmy.bull.fr
Leif Kornstaedt leif@rumtifsl.ruessel.sub.org
Helge Kreutzmann debian@helgefjell.de
Michael D. Lawler mdlawler@bsu-cs.bsu.edu
Kevin Layer layer@franz.com
Howard D. Leadmon howardl@wb3ffv.ampr.org
Alexander Lehmann alex@hal.rhein-main.de
Simon Leinen simon@lia.di.epfl.ch
Burt Leland burt@molecular.com
Tony Leneis tony@plaza.adp.ds.com
Hugues Leroy hugues.leroy@irisa.fr
Marty Leisner leisner@eso.mc.xerox.com
Ilya Leoshkevich iii@linux.ibm.com
Jason Leschnik jason@leschnik.me
Charles Levert charles@aramis.comm.polymtl.ca
Dmitry V. Levin ldv@altlinux.org
Richard Levitte levitte@e.kth.se
Torbjörn Lindh toobii@elixir.e.kth.se
David R. Linn drl@vuse.vanderbilt.edu
Antonio Lioy cat@athena.polito.it
Jamie Lokier u90jl@ecs.oxford.ac.uk
Richard Lloyd R.K.Lloyd@csc.liv.ac.uk
David J. MacKenzie djm@eng.umd.edu
John R MacMillan john@chance.gts.org
Ron Male male@eso.mc.xerox.com
Jakub Martisko jamartis@redhat.com
Don R. Maszle maze@bea.lbl.gov
Jaye Mathisen osyjm@cs.montana.edu
Telly Mavroidis mavroidi@acf2.nyu.edu
Imed Eddine Mbarki mbarki@pacific.cmpe.psu.edu
Steeve McCauley steeve@pooh.geophys.mcgill.ca
Tom McConnell tmcconne@sedona.intel.com
Tod McQuillin mcquill@ccit05.duq.edu
Tye McQueen tye@spillman.com
Bernd Melchers melchers@chemie.fu-berlin.de
Jason Merrill jason@jarthur.claremont.edu
Dean S. Messing deanm@medulla.labs.tek.com
M. Mesturino mesturino@cselt.stet.it
Luke Mewburn zak@rmit.edu.au
Jim Meyering jim@meyering.net
Dragan Milicic milicic@math.utah.edu
Frédéric Miserey none.fred@applelink.apple.com
Marcel J.E. Mol marcel@duteca.et.tudelft.nl
Soren Juul Moller sjm@dde.dk
Chris Moore moore@src.bae.co.uk
Dan Mosedale mosedale@genome.stanford.edu
Helmut Mülner hmuelner@fiicmds04.tu-graz.ac.at
Urban D Müller umueller@amiga.physik.unizh.ch
Ulrich Müller ulm@vsnhdb.cern.ch
Timothy Murphy tim@maths.tcd.ie
Greg Naber greg@squally.halcyon.com
Thiemo Nagel thiemo.nagel@ph.tum.de
Jay Nayegandhi jayng@bbiv02.enet.dec.com
Paul K. Neville II pkn2@idsi.com
Karl L. Noell noell@informatik.fh-wiesbaden.dbp.de
Demizu Noritoshi nori-d@is.aist-nara.ac.jp
Mark Nudelman markn@greenwoodsoftware.com
Todd Ogasawara todd@protege.pegasus.com
Helge Oldach helge.oldach@stollmann.de
Arthur David Olson ado@elsie.nci.nih.gov
Piet van Oostrum piet@cs.ruu.nl
Rafael R. Pappalardo rafapa@obelix.cica.es
Mike Pearlman canuck@masc38.rice.edu
Jörg-Volker Peetz peetz@dynato-kyma.net
Yves Perrenoud pyves@nuga.alphanet.ch
Hal Peterson hrp@pecan.cray.com
Pascal Petit petit@cadillac.ibp.fr
Bruno Pillard bp@chorus.fr
François Pinard pinard@iro.umontreal.ca
Jay Pinkos pinkos@butyng.bu.edu
Petr Písař petr.pisar@atlas.cz
Thomas Plass thomas@cogsci.ed.ac.uk
Mike Polo mikep@cfsmo.honeywell.com
Francesco Potortì pot@fly.cnuce.cnr.it
Will Priest bpriest@lobby.ti.com
Johannes Przybilla johannes.przybilla@rwth-aachen.de
David Purves purves@apogee.com
Andreas Raab ar@nvmr.robin.de
Pavel Raiskup praiskup@redhat.com
Eric S. Raymond esr@snark.thyrsus.com
Klaus Reimann kr@cip.physik.uni-stuttgart.de
Michael Rendell michael@mercury.cs.mun.ca
Hal Render render@massive.uccs.edu
Julian F. Reschke julian@math.uni-muenster.de
Phil Richards Phil.Richards@prg.oxford.ac.uk
Mark Roberts mroberts@rapid-arts-movement.de
Roland B Roberts roberts@nsrl31.nsrl.rochester.edu
Arnold Robbins arnold@cc.gatech.edu
Kevin Rodgers kevin@rolling-stone.den.mmc.com
Kai Uwe Rommel rommel@informatik.tu-muenchen.de
Paul Rubin phr@america.telebit.com
Wolfgang Rupprecht wolfgang@wsrcc.com
Rusty Russell rusty@rustcorp.com.au
Sam Russell sam.h.russell@gmail.com
Jonathan Ryshpan jon@amito.hitachi.com
Paul A Sand pas@unh.edu
Tony Sanders sanders@bsdi.com
Mike Sangrey mike@sojurn.lns.pa.us
Niimi Satoshi a01309@cfi.waseda.ac.jp
Fulvio Scapin trantorvega@gmail.com
Marc Schaefer sysadm@alphanet.ch
Andreas Schwab schwab@lamothe.informatik.uni-dortmund.de
Eric Schenk schenk@cs.toronto.edu
Eric P. Scott eps@cs.sfsu.edu
Carpe Sébastien Sebastien.Carpe@worldline.com
Olaf Seibert rhialto@mbfys.kun.nl
Sunando Sen sens@fasecon.econ.nyu.edu
Harry Shamansky hts@hertz.eng.ohio-state.edu
Amos Shapira amoss@cs.huji.ac.il
Rick Sladkey jrs@world.std.com
Daniel L Smith dls@autodesk.com
Fred Smith fredex%fcshome@merk.merk.com
Ripduman Sohan Ripduman.Sohan@cl.cam.ac.uk
Stephen Soliday soliday@ncat.edu
Paul Southworth pauls@css.itd.umich.edu
Rob Spencer robbie@winkle.bhpese.oz.au
Richard Stallman rms@gnu.ai.mit.edu
Carsten Steger carsten.steger@informatik.tu-muenchen.de
David Sundstrom sunds@anon.asic.sc.ti.com
Ed Sznyter ews@babel.babel.com
Hideaki Tanabe arctanx@iyeyasu.ynl.t.u-tokyo.ac.jp
Andrew Telford ajt@peregrin.resmel.bhp.com.au
Glenn E. Thobe thobe@getunx.info.com
Kei Thomsen kt@keihh.hanse.de
Karsten Thygesen karthy@dannug.dk
Mark Towfiq towfiq@microdyne.com
Jeff Treece treece@sabbagh.com
Oliver Trepte oliver@ikaros.fysik4.kth.se
Stephane Tsacas slt@is21.isoft.fr
Stephen Tweedie sct@dcs.ed.ac.uk
John R. Vanderpool fish@daacdev1.stx.com
Sotiris Vassilopoulos vassilopoulos@virginia.edu
Pedro A. M. Vazquez vazquez@iqm.unicamp.br
Rob Vermaas rob.vermaas@gmail.com
Arjan de Vet devet@win.tue.nl
Larry W. Virden lvirden@cas.org
Vadim V. Vlasov vvlasov@inucres.msk.su
Eduard Vopicka eduard.vopicka@vse.cs
Theo Vosse vosse@ruls41.leidenuniv.nl
Darin Wayrynen darin@pcg.uucp
Marcel Waldvogel marcel@nice.usergroup.ethz.ch
Stephen J. Walick steve@nshore.org
Jeffrey Walton noloader@gmail.com
Gray Watson gray@antaire.com
David Watt dmwatt@smersh.cambridge.ma.us
Jaroslaw Weglinski jaroslaw.weglinski@atendesoftware.pl
Scott Weikart scott@igc.apc.org
Ivo Welch iwelch@agsm.ucla.edu
Bernhard M. Wiedemann bwiedemann@suse.de
Jochen Wiedmann zrawi01@zmcipdec1.zdv.uni-tuebingen.de
Gijsb. Wiesenekker wiesenecker@sara.nl
Wietze van Winden wietze@swi.psy.uva.nl
Carl Worth cworth@cworth.org
Frank Wübbeling wuebbel@math.uni-muenster.de
Larry W. Virden lwv26@cas.org
Bill Wohler wohler@sap-ag.de
Lv Ying lvying6@huawei.com
Denys Zagorui denys.zagorui@globallogic.com
Jamie Zawinski jwz@lucid.com
Yuxi Zhang YZhang@qnx.com
Christos Zoulas christos@deshaw.com

View file

@ -0,0 +1,80 @@
TODO file for gzip.
Some of the planned features include:
- Remove some of the old porting cruft, since we no longer support it.
- Separate out the shell scripts like gzexe into a new little package;
these scripts are less used and less reliable and should be optional.
- Internationalize by using gettext and setlocale.
- Structure the sources so that the compression and decompression code
form a library usable by any program, and write both gzip and zip on
top of this library. This would ideally be a reentrant (thread safe)
library, but this would degrade performance. In the meantime, you can
look at the sample program zread.c.
The library should have one mode in which compressed data is sent
as soon as input is available, instead of waiting for complete
blocks. This can be useful for sending compressed data to/from interactive
programs.
- Make it convenient to define alternative user interfaces (in
particular for windowing environments).
- Support in-memory compression for arbitrarily large amounts of data
(zip currently supports in-memory compression only for a single buffer.)
- Map files in memory when possible, this is generally much faster
than read/write. (zip currently maps entire files at once, this
should be done in chunks to reduce memory usage.)
- Add a super-fast compression method, suitable for implementing
file systems with transparent compression. The lzrw series of algorithms
are available at http://www.ross.net/compression/.
- Add a super-tight (but slow) compression method, suitable for long
term archives. See, for example, US Patents 4,286,256 4,295,125
4,463,342 4,467,317 4,633,490 4,652,856 4,891,643 4,905,297
4,935,882 4,973,961 5,023,611 5,025,258, which have all expired.
More recent patent-free techniques may also be available.
Note: I will introduce new compression methods only if they are
significantly better in either speed or compression ratio than the
existing method(s). So the total number of different methods should
reasonably not exceed 3. (The current 9 compression levels are just
tuning parameters for a single method, deflation.)
- Add optional error correction. One problem is that the current version
of ecc cannot recover from inserted or missing bytes. It would be
nice to recover from the most common error (transfer of a binary
file in ascii mode).
- Add a block size (-b) option to improve error recovery in case of
failure of a complete sector. Each block could be extracted
independently, but this reduces the compression ratio.
For one possible approach to this, please see:
https://ozlabs.org/~rusty/gzip.rsync.patch
- Use a larger window size to deal with some large redundant files that
'compress' currently handles better than gzip.
- Implement the -e (encrypt) option.
Send comments to <bug-gzip@gnu.org>.
========================================================================
Copyright (C) 1999, 2001, 2006, 2009-2025 Free Software Foundation, Inc.
Copyright (C) 1992, 1993 Jean-loup Gailly
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the ``GNU Free
Documentation License'' file as part of this distribution.