Initial Windows agent repository

This commit is contained in:
Frank Harris 2026-06-08 10:45:20 -05:00
commit a0db0c2e5b
10589 changed files with 3844063 additions and 0 deletions

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://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 <http://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
<http://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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -0,0 +1,30 @@
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESSED OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Unless stated otherwise, the sources under the cygwin subdirectory,
as well as the sources under the cygserver subdirectory linked into
the Cygwin DLL, are licensed under the Lesser Gnu Public License,
version 3 or (at your option) any later version (LGPLv3+). See the
COPYING.LIB file for the exact wording of that license.
Unless stated otherwise, the sources under the cygserver subdir not
linked into the Cygwin DLL, as well as the sources under the lsaauth
and the utils subdirectories are licensed under the Gnu Public License,
version 3 or (at your option) any later version (GPLv3+). See the
COPYING file for the exact wording of that license.
Parts of the sources in any subdirectory are licensed using a BSD-like
license. The affected source files contain explicit copyright notices
to that effect.
Linking Exception:
As a special exception, the copyright holders of the Cygwin library
grant you additional permission to link libcygwin.a, crt0.o, and
gcrt0.o with independent modules to produce an executable, and to
convey the resulting executable under terms of your choice, without
any need to comply with the conditions of LGPLv3 section 4. An
independent module is a module which is not itself based on the
Cygwin library.

View file

@ -0,0 +1,52 @@
_autorebase
===========
This package provides scripts to keep the Cygwin system properly
rebased. By default this happens incrementally, which means only
dynamic objects that have been installed after the last run of rebase
will be considered and the current rebase map takes account of the
already rebased parts of the installation. The scripts must be run by
the system administrator or from another account that has all the
necessary access rights.
Over time the rebase map can fragment. By triggering a full rebase,
all dynamic objects on the system are treated as newly installed and
the existing rebase map is cleared before doing the rebase. To
perform a full rebase, execute "rebase-trigger fullrebase". Then shut
down Cygwin including any services you have installed and simply run
setup.exe. The rebase will be performed even when the installation
did not get modified in any way. Subsequent runs of setup.exe will
again rebase in incremental mode.
Some programs allow the user to create or install dynamic objects
after installation. Since these are not part of an installed package,
they wouldn't be rebased automatically, as their location isn't known
to the package system. Entire subtrees to be searched for dynamic
objects can be advertised in /var/lib/rebase/dynpath.d/,
/var/lib/rebase/localpath.d/ and /var/lib/rebase/userpath.d/ for
packaged paths, locally provided paths and user paths, respectively.
The format of files in these directories is one absolute path per
line. The list of suffixes that files need to have to be considered
dynamic objects in these locations is hardcoded as
"dll|so|eln|oct|mex". Files that should be rebased, but do not have
one of these suffixes can be advertised in /var/lib/dynfile.d,
/var/lib/localfile.d and /var/lib/userfile.d for packaged files,
locally provided files and user files, respectively. The format of
files in these directories is one absolute file name per line.
Packagers should name their files after the (main) application package
that creates the dynamic objects at the advertised location and must
not package anything in either the local*.d or user*.d directories.
The local system administrator should only place files in local*.d
directories and otherwise keep the naming scheme as used for packages.
The user*.d file names should start with the account name of the user
the advertised locations belong to.
The user running the installation must have full access rights to all
such paths and all such locations must be available (e.g. remote or
encrypted volumes must be mounted and unlocked, respectively).
The incremental rebase is controlled by the script /usr/bin/rebaselst.
Except for debugging purposes this script should not be run directly
by users. Like any other attempt at rebasing it doesn't work
correctly on a live Cygwin system.

View file

@ -0,0 +1,3 @@
WARNING. The files in this directory are managed by
the 'alternatives' program. Do not modify by hand.
See 'man alternatives' and '/usr/sbin/alternatives --help'

View file

@ -0,0 +1,529 @@
This file:
What is cygrunsrv?
What does it do?
How do I use it?
Informative options...
Querying a service
Removing a service
Starting a service
Stopping a service
Installing a service
General Notes
Generic Examples (but very informative)
Specific Examples (for common cygwin services)
**********************************************
What is cygrunsrv?
cygrunsrv is an implementation of an NT/W2K service starter, similar
to Microsoft's INSTSRV and SRVANY programs, or the FireDaemon program.
However, cygrunsrv is a cygwin program itself, so it obviously supports
Cygwin applications better.
**********************************************
What does it do?
cygrunsrv can operate in two basic modes. The first is the
'service management' or 'commandline' mode. This allows you
to install and remove a service from the system registry, or
to start and stop a previously installed service. The second
mode is the 'run a service' or 'daemonize' mode. This mode is
reached ONLY via a special entry point called by the Windows
Service Mananger -- you can't put cygrunsrv in that mode from
the command line. In the 'daemonize' mode, cygrunsrv sets up
the environment (according to flags set via the 'commandline'
mode). It adds '/bin' to the front of the PATH so that the
target service can find cygwin1.dll easily. It (optionally)
redirects stdout, stdin, and stderr to log files or to the
NT/W2K Event Log (event log access not yet implemented).
Finally, cygrunsrv starts the target daemon.
**********************************************
How do I use it?
As stated earlier, there are four basic operations that
cygrunsrv can do in its 'service management' or 'commandline'
mode: install a service (-I or --install), remove a service
(-R or --remove), start a service (-S or --start), or stop
a service (-E or --stop). In addition, the informative
options return information about cygrunsrv itself.
Each mode is discussed in turn, below:
**********************************************
Informative Options
cygrunsrv -h
cygrunsrv --help
print comprehensive help/option listing for cygrunsrv
cygrunsrv -v
cygrunsrv --version
print version information about the cygrunsrv executable
**********************************************
Query a service:
cygrunsrv -Q <svc_name>
cygrunsrv --query <svc_name>
reports on the existence and status of the service. Use the
--verbose or -V flag to receive extra information.
<svc_name> can either specify a local service name, or it can be
"server/svc_name" or "server\svc_name" to specify a service on a
remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
**********************************************
List services installed with cygrunsrv:
cygrunsrv -L [server]
cygrunsrv --list [server]
lists all services that have been installed with cygrunsrv,
one per line. You can use this for example to stop all
running cygwin services as follows:
$ cygrunsrv -L | (while read S; do cygrunsrv -E $S; done)
You can combine this with the -V / --verbose option to get
full details of each service instead of just names.
You can optionally specify a server name to list services installed on
a remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
**********************************************
Remove a service:
cygrunsrv -R <svc_name>
cygrunsrv --remove <svc_name>
removes the service from the registry
<svc_name> can either specify a local service name, or it can be
"server/svc_name" or "server\svc_name" to specify a service on a
remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
**********************************************
Start a service:
cygrunsrv -S <svc_name>
cygrunsrv --start <svc_name>
attempts to start a previously installed service
<svc_name> can either specify a local service name, or it can be
"server/svc_name" or "server\svc_name" to specify a service on a
remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
**********************************************
Stop a service:
cygrunsrv -E <svc_name>
cygrunsrv --stop <svc_name>
attempts to stop a previously started service
<svc_name> can either specify a local service name, or it can be
"server/svc_name" or "server\svc_name" to specify a service on a
remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
**********************************************
Install a service:
At minimum, the following options and arguments MUST be specified
(of course, the short options -I and -p can be used instead of the
long options --install and --path):
cygrunsrv --install svc_name --path /cygwin/style/path/to/daemon.exe
Note that the "svc_name" is the name of the key in the registry under
which the information for this service is stored. More importantly,
it is the name that appears in the Service Manager control panel
applet, and is the name that can be used by 'cygrunsrv --start' (or
'net start') to start the service (* see --disp option). Note that
the svc_name does not HAVE to be the same as the executable name,
but by convention they are usually the same.
<svc_name> can either specify a local service name, or it can be
"server/svc_name" or "server\svc_name" to specify a service on a
remote machine. The server name can be given as simple name or as
fully qualified domain name (server.example.com).
There are a number of additional, optional arguments that may be
specified.
-------------------------------
-P, --crs-path <path>
Optional path to the cygrunsrv.exe executable. Specifying this can be
useful in several situations.
On the local machine, the path to cygrunsrv is by default the path to
the very executable you execute for the -I command. For testing
purposes you could wish to use another cygrunsrv executable than the
one which should be used for starting the service.
On a remote server, the path to cygrunsrv is by default the path in
the system registry key for the Cygwin root directory (what you get
when running `mount | grep " / "' on the remote machine), concatentated
with "\bin\cygrunsrv.exe". This is not failsafe. It might be better
to specify the path to cygrunsrv on the remote machine manually here.
The path can be given in POSIX or Win32 notation. For remote services
it's advisable to use the Win32 notation.
-------------------------------
-a, --args <args>
Optional string with command line options which shall be passed
to the target service when it is started. This option may only be
specified one; to call the target service with two arguments, list
both arguments surrounded by quotes. For example,
cygrunsrv -I foo -p /usr/bin/bar -a "-D -e"
calls with two arguments, as in "/usr/bin/bar -D -e". If you need
to specify a single argument which contains spaces, you can
protect it with single (') or double (") quotes:
(a) cygrunsrv -I foo -p /usr/bin/bar -a "\"foo bar\""
(b) cygrunsrv -I foo -p /usr/bin/bar -a "'foo bar'"
(c) cygrunsrv -I foo -p /usr/bin/bar -a '"foo bar"'
each result in
(a) /usr/bin/bar "foo bar"
(b) /usr/bin/bar 'foo bar'
(c) /usr/bin/bar "foo bar"
(symmetry suggests the following, but it doesn't work. Trust me)
cygrunsrv -I foo -p /usr/bin/bar -a '\'foo bar\''
-------------------------------
-e, --env <VAR=value>
Optional environment strings which are added to the environment
when the service is started. You can add up to 255 environment strings
using multiple `--env' options. Note that '/bin:' is always appended
to the path to allow started applications to find cygwin1.dll. You
may also specify PATH=/a/path:/list if you like, but /bin WILL be
appended.
cygrunsrv -I foo -p /usr/bin/bar -e HOME=/e/services -e TMP=/var/tmp
A single level of quoting with either single (') or double (") quotes
is allowed:
cygrunsrv -I foo -p /usr/bin/bar -e BAR="\"/d/My Documents/services\""
results in an environment where BAR has the value
"/d/My Documents/services" *including the quotes* (the \-escaping and
the outer quotes are required to protect the command itself from bash).
If you don't understand this discussion about quoting, don't worry --
you probably don't need it.
-------------------------------
-d, --disp <display name>
Optional string which contains the display name of the service.
The default value is the service name (svc_name).
cygrunsrv -I svc_name -p /usr/bin/svc.exe -d baz
results in a service whose parameters are stored under the registry key
'svc_name', executes the daemon svc.exe, but shows up in the Services
control panel applet with the name 'baz'. You can start/stop the daemon
using 'cygrunsrv -S svc_name' or 'net start svc_name' -- but it will
report 'The baz service is starting' etc.
-------------------------------
-f, --desc <service description>
Optional service description string. The description string is
displayed in the Windows graphical display for starting and stopping
the service.
-------------------------------
-t, --type [auto|manual]
Optional start type of service. Defaults to `auto' (e.g. this service
will be automatically started at system bootup). 'manual' means the
service must be explicitly started using 'cygrunsrv -S svc_name'
-------------------------------
-u, --user <user name>
Optional user name to start service as. Defaults to SYSTEM account
(also known as the 'LocalSystem' account). The user must have the
"Logon as a service" privilege.
The user name can be given as Cygwin user name as stored in /etc/passwd:
$ grep "LocalService" /etc/passwd
ls:*:19:0:U-NT AUTHORITY\LocalService,S-1-5-19:/tmp:/bin/false
$ cygrunsrv -I svc -p cmd -u ls
or it can be given in NT user name notation. The backslash used to
separate doamin name and user name can be replaced with a slash.
Examples:
$ cygrunsrv -I svc -p cmd -u MY_DOMAIN\\user
$ cygrunsrv -I svc -p cmd -u MY_DOMAIN/user
$ cygrunsrv -I svc -p cmd -u "NT AUTHORITY/LocalService"
$ cygrunsrv -I svc -p cmd -u "NT AUTHORITY"\\LocalService
-------------------------------
-w, --passwd <password>
Optional password for user. Only needed if a user is given. If a
user has an empty password, enter `-w ' with no <password>.
cygrunsrv -I svc_name -p /usr/bin/svc.exe -u foo -w ""
If a user is given but the -w option is not used, then cygrunsrv will
ask for a password interactively. Note that the password is stored in
encrypted form in the registry.
Beginning with Windows XP and 2003 Server, there's a new security setting
turned on by default, which disallows starting services for accounts without
passwords. When you start the Security Policy MMC Snap-In, you'll find it
under Securiy Settings/Local Policies/Security Options. The setting is
called "Accounts: Limit local account use of blank password to console
logon only." You can disable it, but it's highly discouraged. There's
usually no good reason to install a service under an account without
password.
-------------------------------
-0, --stdin <file>
Optional input file used for stdin redirection. Default is /dev/null.
-------------------------------
-1, --stdout <file>
Optional output file used for stdout redirection. Default is
/var/log/<svc_name>.log.
-------------------------------
-2, --stderr <file>
Optional output file used for stderr redirection. Default is
/var/log/<svc_name>.log. (Thus, by default, both stdout and
stderr are redirected to /var/log/<svc_name>.log).
Note, it may soon be possible to redirect thru a pipe to the
logger program (which is part of the inetutils package) so that
messages printed by the target service are stored in the NT/W2K
Event Application Log. For example,
THIS IS NOT YET IMPLEMENTED!!!!
cygrunsrv -I svc_name -p /usr/bin/foo.exe \
--stderr "|/usr/bin/logger -p INFO -t svc_name"
-------------------------------
-x, --pidfile <file>
Optional path for .pid file written by application after fork().
Default is that the application must not fork().
With this option, it is possible to run daemons not providing a
(usually Cygwin-specific) option to prevent fork()ing.
-------------------------------
-s, --termsig <signal>
Optional signal to send to service application to stop
the service. <signal> can be a number or a signal name such as
HUP, INT, QUIT, etc. Default is TERM, which is appropriate for
most daemons.
-------------------------------
-z, --shutsig <signal>
Optional signal to send to service application to stop the service
in case of a system shutdown. This is useful if your service
application wants to allow different actions to be taken on a normal
service stop and on system shutdown. Note that the --shutsig option
only has an effect if you use the --preshutdown or --shutdown option
(see there for more information). The default signal on shutdown is the
termination signal set with --termsig, TERM otherwise.
-------------------------------
-y, --dep <svc_name2>
Optional name of service that must be started before this
new service. The --dep option may be given up to 16 times, listing
another dependent service each time. Try to avoid dependency loops:
that is, if svc_A depends on svc_B, but svc_B depends on svc_A...
-------------------------------
-n, --neverexits
Optional flag that causes cygrunsrv to only report a successful
shutdown of the service to windows when cygrunsrv itself was told
to shutdown and the exec'ed process exited with a zero status. Use
this option when the service should only be started or stopped via
the Windows service mechanism (e.g. cygrunsrv -E, net stop, or via
the services GUI).
-------------------------------
-O, --preshutdown
-o, --shutdown
Optional flags that causes cygrunsrv to terminate the service
application during system shutdown. When in effect, cygrunsrv sends the
shutdown signal (see --shutsig) to the application process when
cygrunsrv learns that the system is shutting down. This gives the
application a short time (usually not more than up to 20 secs) to clean
up and exit gracefully. Note that each Cygwin process also sends SIGHUP
to itself (implicitly) during system shutdown.
Starting with Windows Vista/Longhorn, the --preshutdown option allows to
terminate the service before the real shutdown takes place, giving the
service up to 3 minutes for its shutdown actions.
Only one of the --preshutdown/--shutdown options is allowed. If you use
--preshutdown on operating systems prior to Windows Vista/Longhorn, it
will be silently converted to --shutdown at service runtime.
-------------------------------
-i, --interactive
Optional flag that allows cygrunsrv to interact with the desktop.
When in effect, cygrunsrv can open windows and pop up message boxes.
Equivalent to the "Allow service to interact with desktop" box.
Cannot be used unless the service runs as SYSTEM.
NOTE: The interactive option has not the desired effect anymore,
starting with Windows Vista/Longhorn. Interactive services which are
allowed to interact with the local desktop are deprecated by Microsoft.
To get desktop interaction, your service needs to use other means of
interprocess communication between the actual service application and a
desktop application running in the user context of the desktop user.
-------------------------------
-j, --nohide
When running services interactively (see -i, --interactive option above),
usually a console window pops up, which has been opened by the service
control manager. Beginning with version 0.99, cygrunsrv hides that
console window by default. If you need that console window open, use
the -j or --nohide option. In that case, cygrunsrv keeps the console
window untouched.
**********************************************
Information on mounts:
Services by default are run as the local system account, not your regular
user account. This means that if you have user-mode mounts (i.e. you
selected 'Just Me' in setup.exe) the service will not see them and fail to
start. Cygrunsrv will now attempt to detect this an warn you if /usr/bin
is mounted in user mode. See also <http://cygwin.com/faq/faq.html#SEC33>.
**********************************************
General Notes:
There's currently one caveat, though. If the application behaves as
a "normal" unix daemon and exits after forking a child, cygrunsrv
will immediately stop the service (but the actual daemon keeps running
in the background). This means that you cannot then STOP the daemon
using cygrunsrv, but you must explicit kill it via 'kill -9 <daemon_pid>'
If you fail to do this, you will probably see something like this in
the Windows Application Event Log:
Cygwin Apache : Win32 Process Id = 0xFE : Cygwin Process Id = 0xFE :
`Cygwin Apache' service started.
immediately followed by
Cygwin Apache : Win32 Process Id = 0xFE : Cygwin Process Id = 0xFE :
`Cygwin Apache' service stopped.
but 'ps -eaf | grep httpd' shows that httpd IS still running.
To avoid this problem, you must start the application so that it
doesn't fork a daemon but stays resident instead. sshd
for example has to be called with the -D option. squid must be
called with the -N option.
For example,
cygrunsrv -I sshd -p /usr/sbin/sshd -a -D
cygrunsrv -I squid -p /usr/bin/squid -a -N
although other options may be necessary.
**********************************************
Generic Examples
To install the Cygwin application /bin/foo as service "foo" running under
LocalSystem account, no special options:
cygrunsrv -I foo -p /bin/foo
To install /bin/foo as a service "bar" which requires command line options:
cygrunsrv -I bar -p /bin/foo -a '--opt1 --opt2 -x'
To install /bin/foo as a service "baz" which requires a command line option
which contains spaces:
cygrunsrv -I baz -p /bin/foo -a "-x 'this has spaces inside'"
or
cygrunsrv -I baz -p /bin/foo -a '-x "this has spaces inside"'
To install /bin/foo as a service "foo bar" which doesn't automatically
startup when the system boots:
cygrunsrv -I "foo bar" -p /bin/foo -t manual
To install /bin/foo as a service "bongo" which requires settings for the
environment variables "ENV_VAR_1" and "ENV_VAR_2" to run correctly:
cygrunsrv -I bongo -p /bin/foo -e "ENV_VAR_1=important_1" \
-e "ENV_VAR_2=also_important"
To install sshd as service under user `joey' account:
cygrunsrv -I "Joey sshd" -p /usr/sbin/sshd -a '-d' -u joey
cygrunsrv asks for `joey's password interactively. If one wants
to give joey's password (say, "privy23") on the command line:
cygrunsrv -I "Joey sshd" -p /usr/sbin/sshd -a '-D' -u joey -w privy23
To start the service `foo':
cygrunsrv -S foo
To stop the service `foo':
cygrunsrv -E foo
To uninstall the service `foo':
cygrunsrv -R foo
**********************************************
Specific Examples
Please add suggestions for this list...
------------
postgresql:
cygrunsrv --install postmaster \
--path /usr/bin/postmaster \
--args "-D /usr/share/postgresql/data -i" \
--dep ipc-daemon --termsig INT --user postgresql --shutdown
------------
sshd:
cygrunsrv --install sshd \
--path /usr/sbin/sshd \
--args -D
------------
xinetd:
cygrunsrv --install xinetd \
--pidfile /var/run/xinetd.pid \
--path /usr/sbin/xinetd \
--args "-pidfile /var/run/xinetd.pid"
Note that at present, ipc-daemon.exe and inetd.exe contain the
appropriate code to run as Windows services WITHOUT the assistance
of cygrunsrv.
**********************************************
Troubleshooting
If the service fails to start, consider whether the service process
depends on other services and reinstall the service using the `--dep'
parameter to ensure that those other services are running first. In
particular, any service application that uses network services (such
as socket connections) depends on the "LanmanWorkstation" service; this
dependency can be declared as `--dep LanmanWorkstation'. On systems
where "LanmanWorkstation" isn't started you can try using a dependency
on the "Tcpip" service. In that case just add `--dep Tcpip' to the
command line when installing the service.
**********************************************
Contact Information
For support, contact the cygwin mailing list cygwin@cygwin.com. cygrunsrv was originally created by Corinna Vinschen.

View file

@ -0,0 +1,198 @@
What is Cygserver?
Cygserver is a program which is designed to run as a background service.
It provides Cygwin applications with services which require security
arbitration or which need to persist while no other cygwin application
is running.
The implemented services so far are:
- Control slave tty/pty handle dispersal from tty owner to other
processes without compromising the owner processes' security.
- XSI IPC Message Queues.
- XSI IPC Semaphores.
- XSI IPC Shared Memory.
- Allows non-privileged users to store obfuscated passwords in the
registry to be used for setuid(2) to create user tokens with network
credentials. This service is used by `passwd -R'. Using the stored
passwords in setuid(2) does not require running cygserver. The
registry storage is the same as Windows uses to store passwords for
accounts running Windows services.
Cygserver command line options:
Options to Cygserver take the normal UNIX-style `-X' or `--longoption' form.
Nearly all options have a counterpart in the configuration file (see below)
so setting them on the command line isn't really necessary. Command line
options override settings from the Cygserver configuration file.
The one-character options are prepended by a single dash, the long variants
are prepended with two dashes. Arguments to options are marked in angle
brackets below. These are not part of the actual syntax but are used only to
denote the arguments. Note that all arguments are required. Cygserver
has no options with optional arguments.
The options recognized are:
-f, --config-file <file>
Use <file> as configuration file instead of the default configuration
line. The default configuration file is /etc/cygserver.conf, typically.
The --help and --version options will print the default configuration
pathname.
This option has no counterpart in the configuration file, for obvious
reasons.
-c, --cleanup-threads <num>
Number of threads started to perform cleanup tasks. Default is 2.
Configuration file option: kern.srv.cleanup_threads
-r, --request-threads <num>
Number of threads started to serve application requests. Default is 10.
The -c and -r options can be used to play with Cygserver's performance
under heavy load conditions or on slow machines.
Configuration file option: kern.srv.request_threads
-p, --process-cache <num>
Number of processes which can connect concurrently to cygserver.
Default is 62. Each process connected to cygserver is a synchronization
object which has to be maintained. The data structure to maintain these
processes is the so-called "process cache". In theory, an arbitrary
number of processes could connect to cygserver, but due to the need to
synchronize, the higher the number of connected processes, the more
synchronization overhead exists. By using this option, you can set an
upper limit to the synchronization effort. If more than 62 processes
try to connect to cygserver concurrently, two additional synchronization
threads are necessary, and one for each further 62 concurrent
processes. So, useful values for the --process-cache option are 62, 124,
186, 248, 310. 310 is the maximum value.
Configuration file option: kern.srv.process_cache_size
NOTE: The number of child processes of a single parent process is limited
to 256. So in case of taking advantage of a process cache size beyond 256,
keep in mind that not all of these processes can be child processes of one
single parent process.
-d, --debug
Log debug messages to stderr. These will clutter your stderr output with
a lot of information, typically only useful to developers.
-e, --stderr
Force logging to stderr. This is the default if stderr is connected to
a tty. Otherwise, the default is logging to the system log. By using
the -e, -E, -y, -Y options (or the appropriate settings in the
configuration file), you can explicitely set the logging output as you
like, even to both, stderr and syslog.
Configuration file option: kern.log.stderr
-E, --no-stderr
Don't log to stderr. Configuration file option: kern.log.stderr
-y, --syslog
Force logging to the system log. This is the default, if stderr is not
connected to a tty, e. g. redirected to a file.
-Y, --no-syslog
Don't log to syslog. Configuration file option: kern.log.syslog
-l, --log-level <level>
Set the verbosity level of the logging output. Valid values are between
1 and 7. The default level is 6, which is relatively chatty. If you set
it to 1, you will get only messages which are printed under severe conditions,
which will result in stopping Cygserver itself.
Configuration file option: kern.log.level
-m, --no-sharedmem
Don't start XSI IPC Shared Memory support. If you don't need XSI IPC
Shared Memory support, you can switch it off here.
Configuration file option: kern.srv.sharedmem
-q, --no-msgqueues
Don't start XSI IPC Message Queues.
Configuration file option: kern.srv.msgqueues
-s, --no-semaphores
Don't start XSI IPC Semaphores.
Configuration file option: kern.srv.semaphores
-S, --shutdown
Shutdown a running daemon and exit. Other methods are sending a SIGHUP
to the Cygserver PID or, if running as service under NT, calling
`net stop cygserver' or `cygrunsrv -E cygserver'.
-h, --help
Output usage information and exit.
-v, --version
Output version information and exit.
How to start Cygserver:
Before you run Cygserver for the first time, you should run the
/usr/bin/cygserver-config script once. It creates the default
configuration file and, upon request, installs Cygserver as service
when running under NT. The script only performs a default install,
with no further options given to Cygserver when running as service.
Due to the wide configurability by changing the configuration file,
that's typically not necessary.
It's best practice to run Cygserver as a service under LocalSystem
account. This is the way it is installed for you by the
/usr/bin/cygserver-config script.
The Cygserver configuration file:
Cygserver has many options, which allow to customize the server
to your needs. Customization is accomplished by editing the configuration
file, which is by default /etc/cygserver.conf. This file is read only
once on startup of Cygserver. There's no option to re-read the file on
runtime by, say, sending a signal to Cygserver.
The configuration file determines how Cygserver operates. There are
options which set the number of threads running in parallel, options
for setting how and what to log and options to set various maximum
values for the IPC services.
The default configuration file delivered with Cygserver is installed
to /etc/defaults/etc. The /usr/bin/cygserver-config script copies it to
/etc, giving you the option to overwrite an already existing file or to
leave it alone. Therefore, the /etc file is safe to be changed by you,
since it will not be overwritten by a later update installation.
The default configuration file contains many comments which describe
everything needed to understand the settings. A comment at the start of the
file describes the syntax rules for the file. The default options are shown
in the file but are commented out.
It is generally a good idea to uncomment only options which you intend to
change from the default values. Since reading the options file on Cygserver
startup doesn't take much time, it's also considered good practice to keep
all other comments in the file. This keeps you from searching for clues
in other sources.
If you have problems with Cygserver, or you have found a bug, or you
think you have found a bug, or you don't understand configuration file
options, the mailing list <cygwin@cygwin.com> is the right place to ask
questions.
Have fun!

View file

@ -0,0 +1,26 @@
This small utility allows Windows NT user rights and privileges
to be set from the command line.
Build:
To build editrights, run "make".
To install it, run "make install".
Usage:
To list the access rights granted to a user (e.g. FRED)
editrights -u FRED -l
To do this more verbosely
editrights -u FRED -l -v
To give FRED the SeTcbPrivilege ("Act as part of the operating system")
editrights -u FRED -a SeTcbPrivilege
To remove this right from FRED
editrights -u FRED -r SeTcbPrivilege
To test whether FRED has the SeTcbPrivilege
editrights -u FRED -t SeTcbPrivilege && echo 'FRED has SeTcb...'
CTR 23/Sep/2003.

View file

@ -0,0 +1,55 @@
hostname
----------------------------------------------------------------------
Show host name, domain name or network addresses
This package provides the Debian version of the hostname command.
It can be used to display the system's host name, DNS domain name or
network addresses.
Runtime requirements (these or newer):
cygwin-1.7.22-1
coreutils-8.15-3 (older versions include /usr/bin/hostname)
Build requirements (these or newer):
binutils-2.23.51-1
coreutils-8.15-1
cygport-0.13.0-1
gcc4-core-4.7.3-1
make-3.82.90-1
tar-1.26-1
Canonical homepage:
http://packages.debian.org/unstable/hostname
Canonical download:
http://ftp.debian.org/debian/pool/main/h/hostname/
Upstream contact:
Debian Hostname Team <hostname-devel@lists.alioth.debian.org>
License:
GPLv2+
Language:
C
---------------------------------------------
Port notes:
-------- hostname-3.13-1 -- 2013-08-07 --------
hostname 3.13 2013-06-08
-------- hostname-3.12-1 -- 2013-04-10 --------
Compilation fixes (missing set*name, NIS)
hostname 3.12 2012-12-06
For more information about this package, see the upstream documentation in
/usr/share/doc/hostname.
Cygwin port by: Christian Franke <chrfranke@users.sourceforge.net>
Please address all questions to the Cygwin mailing list at <cygwin@cygwin.com>.

View file

@ -0,0 +1,91 @@
This package describes important Cygwin specific stuff concerning OpenSSH.
The binary package is usually built for recent Cygwin versions and might
not run on older versions. Please check http://cygwin.com/ for information
about current Cygwin releases.
==================
Host configuration
==================
If you are installing OpenSSH the first time, you can generate global config
files and server keys, as well as installing sshd as a service, by running
/usr/bin/ssh-host-config
Note that this binary archive doesn't contain default config files in /etc.
That files are only created if ssh-host-config is started.
To support testing and unattended installation ssh-host-config got
some options:
usage: ssh-host-config [OPTION]...
Options:
--debug -d Enable shell's debug output.
--yes -y Answer all questions with "yes" automatically.
--no -n Answer all questions with "no" automatically.
--cygwin -c <options> Use "options" as value for CYGWIN environment var.
--name -N <name> sshd windows service name.
--port -p <n> sshd listens on port n.
--user -u <account> privileged user for service, default 'cyg_server'.
--pwd -w <passwd> Use "pwd" as password for privileged user.
--privileged On Windows XP, require privileged user
instead of LocalSystem for sshd service.
Installing sshd as daemon via ssh-host-config is recommended.
Alternatively you can start sshd via inetd, if you have the inetutils
package installed. Just run ssh-host-config, but answer "no" when asked
to install sshd as service. The ssh-host-config script also adds the
required lines to /etc/inetd.conf and /etc/services.
==================
User configuration
==================
Any user can simplify creating the own private and public keys by running
/usr/bin/ssh-user-config
To support testing and unattended installation ssh-user-config got
some options as well:
usage: ssh-user-config [OPTION]...
Options:
--debug -d Enable shell's debug output.
--yes -y Answer all questions with "yes" automatically.
--no -n Answer all questions with "no" automatically.
--passphrase -p word Use "word" as passphrase automatically.
Please note that OpenSSH does never use the value of $HOME to
search for the users configuration files! It always uses the
value of the pw_dir field in /etc/passwd as the home directory.
If no home directory is set in /etc/passwd, the root directory
is used instead!
================
Building OpenSSH
================
Building from source is easy. Just unpack the source archive, cd to that
directory, and call cygport:
cygport openssh.cygport all
You must have installed the following packages to be able to build OpenSSH
with the aforementioned cygport script:
zlib
crypt
libssl-devel
libedit-devel
libkrb5-devel
Please send requests, error reports etc. to cygwin@cygwin.com.
Have fun,
Corinna Vinschen
Cygwin Developer
Red Hat Inc.

View file

@ -0,0 +1,219 @@
rsync
------------------------------------------
fast, versatile file synchronizing tool
Fast and versatile file-copying tool which can copy locally and
to/from a remote host. It offers many options to control its behavior,
and its remote-update protocol can minimize network traffic to make
transferring updates between machines fast and efficient. It is widely
used for backups and mirroring and as an improved copy command for
everyday use.
Mini-HOWTO for using the program as a service:
*) have a valid /etc/rsyncd.conf:
man rsyncd.conf
*) install service:
cygrunsrv --help
cygrunsrv -I rsyncd -p /usr/bin/rsync -a "--daemon --no-detach"
*) remove service:
cygrunsrv -R rsyncd
Runtime requirements:
bash - rsync-ssl script
libgcc1
libiconv2
liblz4_1
libzstd1
libssl1.1
libxxhash0
Build requirements:
python3*-commonmark (check /usr/bin/python3 which version)
libiconv2-devel
liblz4-devel
libzstd-devel
libllvm-devel
Canonical homepage:
http://rsync.samba.org
https://packages.debian.org/unstable/rsync
Canonical download:
http://rsync.samba.org/ftp/rsync
Version control repository:
git clone git://git.samba.org/rsync.git
./support/git-set-file-times # optional
./prepare-source
Mailing list:
Forum / Wiki:
IRC channel:
Upstream contact:
Maintainer:
Bugs: https://bugzilla.samba.org/enter_bug.cgi?product=rsync
License:
GPL-3+
Language:
C
------------------------------------------
Build instructions:
unpack rsync-*-src.tar.*
if you use setup to install this source package, it will be
unpacked under /usr/src automatically
cd /usr/src
./rsync*.sh all
------------------------------------------
Files included in the binary distribution:
See Cygwin package archive
------------------------------------------
Port Notes:
----- version 3.3.0-1 -----
- New upstream release 2024-04-26 Jari Aalto
----- version 3.2.3+20200903+git9f9240b-4 -----
- Compile with xxhah support (Cygwin now includes the library)
----- version 3.2.3+20200903+git9f9240b-3 -----
- New upstream release 2020-09-07 Jari Aalto
- Debian 3.2.3 patches included in sources, but NOT relevant to Cygwin
+ disable_reconfigure_req.diff - Remove need to run reconfigure target
+ perl_shebang.patch - Removes usage of env on perl shebang as per Debian Policy 10.4
+ skip_devices_test.patch - Skip "devices" test as it fails on kfreebsd and hurd
----- version 3.2.3+20200903+git9f9240b-2 -----
- New upstream release 2020-09-06 Jari Aalto
- Compile with python36-commonmark
----- version 3.2.3+20200903+git9f9240b-1 -----
- New upstream release 2020-09-05 Jari Aalto
----- version 3.1.3+20200429+gitf7746d0-1 -----
- New upstream release 2020-05-05 Jari Aalto
----- version 3.1.2-1 -----
- New upstream release 2016-01-29 Jari Aalto
- Includes security fix CVE-2014-9512
- Debian 3.1.1 patches included
logdir.patch
- fix the location of the logdir
ssh-6-option.patch
- call ssh with -6 option if rsync was called
with -6, ditto with -4
noatime.patch
- add an option --noatime to request the kernel not to update files'
access times while reading them. See
https://bugzilla.samba.org/show_bug.cgi?id=7249#c5
----- version 3.1.1-1 -----
- New upstream release 2015-02-13 Jari Aalto
----- version 3.1.0-1 -----
- New upstream release 2014-06-17 Jari Aalto
----- version 3.0.9-1 -----
- New upstream release.
----- version 3.0.8-1 -----
- New upstream release.
----- version 3.0.7-1 -----
- New upstream release.
----- version 3.0.6-1 -----
- New upstream release.
Experimentally enabled xattr support (with a small patch).
----- version 3.0.4-2 -----
- Cygwin 1.7 release.
----- version 3.0.4-1 -----
- New upstream release.
----- version 3.0.2-0 -----
- This release produced by: David Rothenberger <daveroth@acm.org>
- As in message: http://www.cygwin.com/ml/cygwin/2008-05/msg00136.html
New upstream release. Fixes a security issue with extended attribute
support, which isn't enabled for Cygwin anyway.
----- version 3.0.1-0 -----
New upstream release.
----- version 3.0.0-0 -----
- New upstream release.
----- version 2.6.9-2 -----
- Security fix patch (kudos to David Rothenberger for pointing it to me):
http://www.suse.de/%7Ekrahmer/rsync-2.6.9-fname-obo.diffq
----- version 2.6.9-1 -----
No patch used.
----- version 2.6.3-1 -----
- Kept Sjoerd Mullender's patch for the textmode issue as the only patch.
----- version 2.6.2-3 -----
- Added Sjoerd Mullender's patch for the new textmode issue:
http://www.cygwin.com/ml/cygwin/2004-09/msg01022.html
----- version 2.6.2-2 -----
- Added patch for the August 2004 security advisory:
http://rsync.samba.org/#security_aug04
----- version 2.6.2-1 -----
- No patch used.
----- version 2.6.0-1 -----
- No patch used.
----- version 2.5.7-2 -----
- Moved man pages under the /usr/share tree.
----- version 2.5.7-1 -----
- Identical to 2.5.6-2, almost:
1. security advisory:
http://www.mail-archive.com/rsync@lists.samba.org/msg08782.html
2. moved documentation under the /usr/share tree
----- version 2.5.6-2 -----
- Compiled against cygwin-1.5.0 experimental library,
with support for 64-bit file offsets and more.
----- version 2.5.6-1 -----
- Compiled with gcc version 3.2 from now on
----- version 2.5.5-2 -----
- Compiled with gcc version 3.2 20020818 (prerelease)
- Included Anthony Heading's patch to avoid dead child processes
http://sources.redhat.com/ml/cygwin/2002-09/msg01155.html
----- version 2.5.5-1 -----
- No special patch was needed for this version.
- Daemon mode sometimes produces "read error: Connection reset by peer" at the
very end of transfer.
Licensed under GPL v2 or later
Cygwin port maintained by Jari Aalto
Copyright (C) 2014-2024 Jari Aalto <jari.aalto@cante.net>
Copyright (C) 2002-2020 Lapo Luchini <lapo@lapo.it>

Binary file not shown.

View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) 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
this service 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 make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. 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.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the 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 a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE 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.
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
convey 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 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision 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, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This 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.

View file

@ -0,0 +1 @@
# chkconfig | [![CI Status](https://github.com/fedora-sysv/chkconfig/workflows/Integration%20tests/badge.svg)](https://github.com/fedora-sysv/chkconfig/actions?query=workflow%3AIntegration+tests) [![CodeQL](https://github.com/fedora-sysv/chkconfig/actions/workflows/codeql.yml/badge.svg)](https://github.com/fedora-sysv/chkconfig/actions/workflows/codeql.yml)

View file

@ -0,0 +1,293 @@
Cygwin base system miscellaneous files
--------------------------------------
TODO:
-----
* Should future versions rely on /etc/mkshrc to set PS1 properly for mksh
if mksh supports sourcing /etc/mkshrc for interactive-login sessions?
* Ask zsh mantainer to put /etc/zprofile and /etc/zshrc in place during
installation.
* Should users with GID 544 have /usr/sbin in their paths?
* Enhance admins' prompt (ideas include the known # sign and using another
color, red?).
Change Log
----------
4.3-3 (bugfix release)
* etc/defaults/etc/profile: Fix a bug so that the system variable
CYGWIN_USEWINPATH actually does what it was supposed to do.
4.3-2 (bugfix/feature release)
* etc/defaults/etc/skel/.bashrc: Remove outdated comments on
completion and mention the bash_completion package as a
prerequisite. See cygwin.com/ml/cygwin/2016-03/msg00207.html
* etc/postinstall/base-files-profile.sh: If a non-default file is
kept, show a diff to the default version if /bin/diff is
installed and the target is a plain file.
* etc/postinstall/base-files-profile.sh: Do not touch file before
installing so the modes are kept intact, like cygport is already
doing for some time. Reported by Christian Franke, see
cygwin.com/ml/cygwin/2016-09/msg00059.html
4.3-1 (feature release)
* Cygwin.bat: Add to base-files. This version is independent of
the actual install path, see:
cygwin.com/ml/cygwin/2016-08/msg00617.html
* etc/defaults/etc/profile: Allow the use of the unaltered
existing system PATH by setting the system variable
CYGWIN_USEWINPATH.
* etc/defaults/etc/profile: avoid second invocation of
/usr/bin/hostname. Reported by Helmut Karlowski, see
cygwin.com/ml/cygwin/2015-12/msg00080.html
* etc/postinstall/base-files-mketc.sh (WINETC): Use /proc/cygdrive
prefixed path which keeps working even if the user changes the
/cygdrive prefix after installation.
4.2-4 (bugfix release)
* etc/postinstall/base-files-mketc.sh: Windows only uses 8 characters
for files in the WINETC directory. Check if the symlink target
exists and remove the symlink if not (to fix "protocols" where
"protocol" should be used). Truncate the target file names to eight
characters for new symlinks. Reported by Walter L., see
cygwin.com/ml/cygwin/2015-09/msg00371.html
* etc/defaults/etc/profile: Remove test for invalid user or group
accounts and the instructions on how to create passwd and group file
contents.
4.2-3 (intermediate release)
* remove MANPATH from /etc/profile
see cygwin.com/ml/cygwin/2014-05/msg00352.html
4.2-2 (bugfix release)
* LC_ALL is set to "C" during profile.d execution so it can't be
used for testing whether or not to set LANG
see cygwin.com/ml/cygwin/2014-04/msg00550.html
4.2-1
* remove permission/ACL settings and corresponding files.
see cygwin.com/ml/cygwin-apps/2014-03/msg00011.html
4.1-3 (unreleased)
* Eliminate Windows PATH from default PATH if CYGWIN_NOWINPATH is
set. Record the Windows PATH in ORIGINAL_PATH unless that
variable is already set.
* Better guard for non-existent /etc/skel.
* Improve profile_d function.
cygwin.com/ml/cygwin/2012-08/msg00488.html
* Add /etc/shells.
cygwin.com/ml/cygwin/2014-03/msg00039.html
* Use full path for tools and avoid DOS file warning when creating
service files.
cygwin.com/ml/cygwin/2013-07/msg00114.html
4.1-2
* Enforce a secure ACL in /home /tmp /usr/tmp /var/log /var/run
using new files /etc/profile.d/1777fix.* written by Corinna Vinschen.
See cygwin.com/ml/cygwin/2012-03/msg00103.html
* Setting CYG_SYS_BASHRC in bash.bashrc has no effect because it is run
in a subshell environment. Reported by Christian Franke. See
cygwin.com/ml/cygwin/2012-02/msg00832.html
4.1-1
* Setting a system locale and a per-user locale breaks some configs
and doesn't play well with mintty. Changed to a user-defined setting in
/etc/profile.d/lang.* Reported by Peter Rosin and Andy Koppe. See
cygwin.com/ml/cygwin/2012-02/msg00448.html
4.0-9
* Bug fix release.
In profile.d/* scripts, calls to "locale" and "tzset"
must use absolute paths - Harry G. McGavran, Jr.
cygwin.com/ml/cygwin/2012-02/msg00352.html
4.0-8
* Bug fix release.
Error in commad substitution in .bash_profile and .profile.
Reported by Mike Kaganski and Tom Schutter. See
cygwin.com/ml/cygwin/2012-02/msg00332.html
cygwin.com/ml/cygwin/2012-02/msg00335.html
Hardcoding SHELL from /etc/profile broke some configs. Rolled back.
Reported by David Rothenberger. See
cygwin.com/ml/cygwin/2012-02/msg00341.html
4.0-7
* Environment variable SHELL is now exported from /etc/profile.
Improved profile_d() function in /etc/profile - Cyrille Lefevre
cygwin.com/ml/cygwin/2011-11/msg00128.html
* TMP and TEMP as defined in the Windows environment must be kept
for windows apps, even if started from cygwin - Atry
cygwin.com/ml/cygwin/2012-01/msg00201.html
* Added two files under /etc/profile.d/ that use tzset, which
uses the geographical location setting of the user to find the right
mapping, rather than the locale setting. Only on Windows 2000 which
doesn't know about the user's geographical location, or if fetching
the geographical location fails, it falls back to the user's locale.
Corrected error in var setting - Corinna Vinschen
See cygwin.com/ml/cygwin-developers/2012-01/msg00042.html,
cygwin.com/ml/cygwin-developers/2012-01/msg00044.html
Updated manifest.
* Added CC0 license header to scripts, and the CC0 license
itself which is under /usr/share/doc/common-licenses/.
Modified locale setting in /etc/profile.d/lang.{sh,csh} to
honor the OS setting.
Corrected some files' header info.
Added Greg's Wiki's URL in /etc/profile.
Bumped version number.
4.0-6
* Re-corrected PRINTER setting.
* Dropped non-POSIX tests in /etc/profile - Eric Blake
cygwin.com/ml/cygwin/2011-03/msg00510.html
* Dropped user's homedir ownership test.
4.0-5
* Added test in /etc/profile PRINTER setting - Corinna Vinschen
cygwin.com/ml/cygwin/2011-03/msg00397.html
4.0-4
* Set TMP and TEMP to /tmp in /etc/profile.
* Dropped CVS stuff from /etc/profile - Andy Koppe
4.0-3
* Never released.
* Reordered /etc/profile to properly initialise PS1 - Cyrille Lefevre
* Supressed a fork in /etc/profile routine for copying skeletal files and
added a test to `cd' command - Cyrille Lefevre
* Removed /bin from path, as it is included via /usr/bin.
4.0-2
* Never released.
* A modified version of a case switch to run shell dependent stuff based
on ENV variables detection is back in /etc/profile, as proposed in
cygwin.com/ml/cygwin/2010-11/msg00464.html - Daniel Colascione
* Since SYS_BASHRC and SYS_BASH_LOGOUT will be enabled in bash-4.1
.bash_logout (added in 4.0-1) has been deprecated in favour of
/etc/bash.bash_logout.
cygwin.com/ml/cygwin-apps/2010-12/msg00075.html
* Added tests to /etc/profile, /etc/bash.bashrc, .bash_profile, .bashrc
and .profile to check if they have been already sourced, as suggested by
Andy Koppe in cygwin.com/ml/cygwin-apps/2010-12/msg00071.html
* HOSTNAME definition back in /etc/profile.
* Dropped .mkshrc. This has to be discussed with mksh mantainer.
4.0-1
* Never released.
* Applied patch in base-files-mketc.sh to solve a problem with creation
of symlinks in /etc for case-sensitive-enabled win7 systems.
sourceware.org/ml/cygwin/2010-04/txt00011.txt - Shaddy Baddah
* New file skel/.bash_logout clear the screen after logout.
* New file skel/.profile set HOSTNAME for dash & posh.
* New file skel/.mkshrc source /etc/mkshrc.
* Updated the manifest.lst to include new files.
* Moved the command for setting /tmp perms to
postinstall/base-files-mketc.sh.
cygwin.com/ml/cygwin/2010-11/msg00464.html - Daniel Colascione
* Modified the PRINTER setting in /etc/profile. No case switch
now.
cygwin.com/ml/cygwin/2010-11/msg00464.html - Daniel Colascione
* Added a WARNING in the conditional loop that creates $HOME for
already existing homes that don't belong to the user.
cygwin.com/ml/cygwin-developers/2010-09/msg00007.html -
Corinna Vinschen & Andy Koppe
* Added two hooks to source .bash_aliases and .bash_functions, if they
exist.
* Added an example function to .bashrc (enhanced cd command)
* Backtick command substitution notation replaced with $(...)
* All variable expansion is written within curly braces.
* Case switch to detect which shell is running taken out of /etc/profile.
* Bug regarding PS1 unset in interactive shells with a non-interactive
ancestor solved. cygwin.com/ml/cygwin/2010-02/msg00503.html -
Reported by Jon Turney
* Bug regarding mksh a well-defined PS1 solved.
sourceware.org/ml/cygwin/2010-05/msg00000.html - Reported by
Chris Sutcliffe
3.9-3
* Removed X11R6 from $PATH - Angelo Graziosi
* Fixed escaping \t in HISTIGNORE
- Angelo Graziosi, Eric Blake
3.9-2
* Removed some 1.5 hold overs from /etc/postinstall/base-files-mketc.sh
- Corinna Vinschen
3.9-1
* Set LANG scripts in /etc/profile.d/
- Corinna Vinschen, Thomas Wolff, Christopher Faylor
* Unset TMP and TEMP in ~/.bashrc
- Angelo Graziosi, Robert Pendell, Ken Brown, Corinna Vinschen
3.8-4
* Fixed permissions - Corinna Vinschen
3.8-3
* Ensure that the destination directory exists during postinstall
- Yitzchak Scott-Thoennes
3.8-2
* The skeleton files are copied even if the the mkdir has failed.
This happens to network users who install Cygwin while connected,
with HOME on a network drive, and then later use their laptop while
disconnected. In that case the skeleton files are not copied, a
warning issued and HOME set to "${TEMP}", "${TMP}", /tmp, or
(finally) / - Pierre A. Humblet
3.8-1
* Update to Cygwin 1.7 version - Herb Maeder
* Additional licenses
3.7-1
* Additional (commented out) settings taken from
http://www.ukuug.org/events/linux2003/papers/bash_tips/index.html
- Append history rather than overwrite
- Append whenever displaying the prompt
- 'Magic' Space. Inserts a space character and performs
a history expansion in the line
- Ignore small typos when cd'ing
* Corrected settitle() function in .bashrc - Igor Peshansky
* DIR_COLORS moved to the coreutils package - Eric Blake
* Follow links in /etc/profile.d - Max Bowsher
3.6-1
* Typo - Eric Blake
* Bash completion examples - Eric Blake
3.5-1
* Changed setup.hint from ash to bash
* Toned down the warning about customisation
- Rex Eastbourne Andrew Schulman, Igor Pechtchanski
* Changed ${MANPATH}. Changed order and removed autotool
- Igor Pechtchanski, Brian Dessent
* Changed ${INFOPATH}. Changed order and removed autotool.
* Fixed some mistakes in .inputrc and added some more
examples - Igor Pechtchanski
3.4-2
* Redirected chmod errors to /dev/null caused by lack of
admin rights - Angelo Graziosi, Igor Pechtchanski, Karl M
* Removed the test around chmod 1777 /tmp - Igor Pechtchanski
3.4-1
* Removed stty erase ^H - lots!
* chmod 1777 /tmp - Corinna Vinschen
* Properly quote [:upper:] [:lower:] - Webb Roberts
* Add local to the sort - Eric Blake
* Various quote corrections - Eric Blake
* Simplified the bash PS1 - Eric Blake
* Made the SHELL switch more portable
- Eric Blake, Cliff Hones, cfg, Igor Pechtchanski
3.3-1 (Never uploaded)
* Add a warning about editing base-files files
* Add a note about where the originals are to be found
* Add some more examples to skel/.bashrc - Chris Wilson
3.2-1
* Quote all ${variable}s. Except, ${PATH}, ${MANPATH} and ${INFOPATH}
3.1-3
* Change cd ${HOME} functionality for CHERE - Dave Kilroy
3.1-2
* Fix for zsh/ksh - Tero Niemela
3.1-1
* Never released - fixed spelling errors
3.0-3
* Fix not required for cp - Pierre A. Humblet
3.0-2
* Fix for security interactions when using cp - Thanks to
Pierre A. Humblet
3.0-1
* Added several open source license files. These were sourced
from http://www.opensource.org/licenses/
Packages may contain minor variations on these files.
* Added a preremove script to help keep the various scripts
uptodate (unless they've been modified).
* At Igor Pechtchanski's suggestion, all base-file scripts
are now versioned.
* Several patches, thanks to all. Now I'm keeping this
changelog I'll be sure to add names! Appologies to all who
helped with this version.
******************************************************
* *
* NOTE: if you want the automatic update script to *
* keep files up to date, you *must* delete the *
* following files and then reinstall the *
* base-files package; *
* /etc/bash.bashrc *
* /etc/DIR_COLORS *
* /etc/profile *
* /etc/skel/.bashrc *
* /etc/skel/.bash_profile *
* /etc/skel/.inputrc *
* *
******************************************************
Prior to 3.0-1
* Thanks to everyone who helped!

View file

@ -0,0 +1,6 @@
Cygwin base system miscellaneous files
--------------------------------------
This package contains some of the basic file of a Cygwin system,
primarily /etc/profile.

View file

@ -0,0 +1,466 @@
#
# Master author manifest for bash
#
# The files in lib/intl were taken from the GNU gettext distribution.
#
# Any files appearing in the bash distribution not listed in this file
# were created by Chet Ramey.
#
# Filename authors (first is original author)
#
README Brian Fox, Chet Ramey
INSTALL Brian Fox, Chet Ramey
COPYING Brian Fox, Chet Ramey
MANIFEST Brian Fox, Chet Ramey
configure Chet Ramey
Makefile.in Brian Fox, Chet Ramey
configure.in Chet Ramey
aclocal.m4 Chet Ramey
config.h.top Chet Ramey
config.h.bot Chet Ramey
config.h.in Chet Ramey
array.c Chet Ramey
print_cmd.c Brian Fox, Chet Ramey
general.c Brian Fox, Chet Ramey
variables.c Brian Fox, Chet Ramey
make_cmd.c Brian Fox, Chet Ramey
copy_cmd.c Brian Fox, Chet Ramey
unwind_prot.c Brian Fox, Chet Ramey
dispose_cmd.c Brian Fox, Chet Ramey
getcwd.c Roland McGrath, Brian Fox, Chet Ramey
bashhist.c Chet Ramey
hash.c Brian Fox, Chet Ramey
parse.y Brian Fox, Chet Ramey
subst.c Brian Fox, Chet Ramey
shell.c Brian Fox, Chet Ramey
sig.c Chet Ramey
trap.c Brian Fox, Chet Ramey
siglist.c Brian Fox, Chet Ramey
version.c Brian Fox, Chet Ramey
flags.c Brian Fox, Chet Ramey
jobs.c Brian Fox, Chet Ramey
input.c Chet Ramey
mailcheck.c Brian Fox, Chet Ramey
pathexp.c Chet Ramey
test.c Brian Fox, Chet Ramey
expr.c Chet Ramey, Brian Fox
alias.c Brian Fox, Chet Ramey
execute_cmd.c Brian Fox, Chet Ramey
bashline.c Brian Fox, Chet Ramey
braces.c Brian Fox, Chet Ramey
bracecomp.c Brian Fox, Chet Ramey, Tom Tromey
nojobs.c Brian Fox, Chet Ramey
vprint.c Chet Ramey
oslib.c Chet Ramey
error.c Brian Fox, Chet Ramey
xmalloc.c Brian Fox, Chet Ramey
alias.h Brian Fox, Chet Ramey
array.h Chet Ramey
builtins.h Brian Fox, Chet Ramey
parser.h Brian Fox, Chet Ramey
variables.h Brian Fox, Chet Ramey
machines.h Brian Fox, Chet Ramey
jobs.h Brian Fox, Chet Ramey
maxpath.h Brian Fox, Chet Ramey
pathexp.h Chet Ramey
mailcheck.h Chet Ramey
filecntl.h Brian Fox, Chet Ramey
hash.h Brian Fox, Chet Ramey
quit.h Brian Fox, Chet Ramey
flags.h Brian Fox, Chet Ramey
shell.h Brian Fox, Chet Ramey
bashjmp.h Chet Ramey
sig.h Chet Ramey
trap.h Brian Fox, Chet Ramey
general.h Brian Fox, Chet Ramey
unwind_prot.h Brian Fox, Chet Ramey
input.h Brian Fox, Chet Ramey
error.h Brian Fox, Chet Ramey
command.h Brian Fox, Chet Ramey
externs.h Chet Ramey
siglist.h Chet Ramey
subst.h Brian Fox, Chet Ramey
dispose_cmd.h Brian Fox, Chet Ramey
bashansi.h Brian Fox, Chet Ramey
make_cmd.h Brian Fox, Chet Ramey
bashhist.h Chet Ramey
bashline.h Chet Ramey
execute_cmd.h Chet Ramey
bashtypes.h Chet Ramey
bashtty.h Chet Ramey
pathnames.h Chet Ramey
y.tab.c Brian Fox, Chet Ramey
y.tab.h Brian Fox, Chet Ramey
parser-built Brian Fox, Chet Ramey
posixstat.h Brian Fox, Chet Ramey
stdc.h Chet Ramey
ansi_stdlib.h Brian Fox, Chet Ramey
memalloc.h Chet Ramey
builtins/ChangeLog Brian Fox, Chet Ramey
builtins/Makefile.in Brian Fox, Chet Ramey
builtins/alias.def Brian Fox, Chet Ramey
builtins/bind.def Brian Fox, Chet Ramey
builtins/break.def Brian Fox, Chet Ramey
builtins/builtin.def Brian Fox, Chet Ramey
builtins/caller.def Rocky Bernstein, Chet Ramey
builtins/cd.def Brian Fox, Chet Ramey
builtins/colon.def Brian Fox, Chet Ramey
builtins/command.def Brian Fox, Chet Ramey
builtins/common.c Brian Fox, Chet Ramey
builtins/declare.def Brian Fox, Chet Ramey
builtins/echo.def Brian Fox, Chet Ramey
builtins/enable.def Brian Fox, Chet Ramey
builtins/eval.def Brian Fox, Chet Ramey
builtins/exec.def Brian Fox, Chet Ramey
builtins/exit.def Brian Fox, Chet Ramey
builtins/fc.def Brian Fox, Chet Ramey
builtins/fg_bg.def Brian Fox, Chet Ramey
builtins/getopt.c Roland McGrath, Brian Fox, Chet Ramey
builtins/getopt.h Roland McGrath, Brian Fox, Chet Ramey
builtins/getopts.def Brian Fox, Chet Ramey
builtins/hash.def Brian Fox, Chet Ramey
builtins/hashcom.h Brian Fox, Chet Ramey
builtins/help.def Brian Fox, Chet Ramey
builtins/let.def Chet Ramey, Brian Fox
builtins/history.def Brian Fox, Chet Ramey
builtins/jobs.def Brian Fox, Chet Ramey
builtins/kill.def Brian Fox, Chet Ramey
builtins/mapfile.def Rocky Bernstein
builtins/mkbuiltins.c Brian Fox, Chet Ramey
builtins/pushd.def Brian Fox, Chet Ramey
builtins/read.def Brian Fox, Chet Ramey
builtins/reserved.def Brian Fox, Chet Ramey
builtins/return.def Brian Fox, Chet Ramey
builtins/set.def Brian Fox, Chet Ramey
builtins/setattr.def Brian Fox, Chet Ramey
builtins/shift.def Brian Fox, Chet Ramey
builtins/shopt.def Chet Ramey
builtins/source.def Brian Fox, Chet Ramey
builtins/suspend.def Brian Fox, Chet Ramey
builtins/test.def Brian Fox, Chet Ramey
builtins/times.def Brian Fox, Chet Ramey
builtins/trap.def Brian Fox, Chet Ramey
builtins/type.def Brian Fox, Chet Ramey
builtins/ulimit.def Chet Ramey, Brian Fox
builtins/umask.def Brian Fox, Chet Ramey
builtins/wait.def Brian Fox, Chet Ramey
builtins/psize.c Chet Ramey, Brian Fox
builtins/psize.sh Chet Ramey, Brian Fox
builtins/inlib.def Chet Ramey
builtins/bashgetopt.c Chet Ramey
builtins/common.h Chet Ramey
builtins/bashgetopt.h Chet Ramey
lib/doc-support/texindex.c bug-texinfo@prep.ai.mit.edu, Chet Ramey
lib/doc-support/Makefile.in Chet Ramey
lib/doc-support/getopt.h Roland McGrath
lib/doc-support/getopt.c Roland McGrath
lib/doc-support/getopt1.c Roland McGrath
lib/glob/ChangeLog Brian Fox, Chet Ramey
lib/glob/Makefile.in Brian Fox, Chet Ramey
lib/glob/strmatch.c Roland McGrath, Brian Fox, Chet Ramey
lib/glob/strmatch.h Roland McGrath, Brian Fox, Chet Ramey
lib/glob/glob.c Richard Stallman, Roland McGrath, Brian Fox, Chet Ramey
lib/glob/glob.h Chet Ramey
lib/glob/ndir.h Doug Gwyn, Richard Stallman
lib/glob/doc/Makefile.in Brian Fox, Chet Ramey
lib/glob/doc/glob.texi Brian Fox, Chet Ramey
lib/malloc/Makefile.in Chet Ramey
lib/malloc/alloca.c Doug Gwyn, Richard Stallman, Brian Fox, Chet Ramey
lib/malloc/getpagesize.h Brian Fox, Chet Ramey
lib/malloc/malloc.c Chris Kingsley, Mike Muuss, Richard Stallman, Brian Fox, Chet Ramey
lib/malloc/gmalloc.c Mike Haertel, Roland McGrath
lib/malloc/stub.c Chet Ramey
lib/malloc/i386-alloca.s Richard Stallman
lib/malloc/x386-alloca.s Chip Salzenberg, Richard Stallman
lib/malloc/xmalloc.c Brian Fox, Chet Ramey
lib/posixheaders/posixstat.h Brian Fox, Chet Ramey
lib/posixheaders/ansi_stdlib.h Brian Fox, Chet Ramey
lib/posixheaders/stdc.h Chet Ramey
lib/posixheaders/memalloc.h Chet Ramey
lib/posixheaders/filecntl.h Brian Fox, Chet Ramey
lib/readline/Makefile.in Brian Fox, Chet Ramey
lib/readline/COPYING Brian Fox, Chet Ramey
lib/readline/ChangeLog Brian Fox, Chet Ramey
lib/readline/readline.c Brian Fox, Chet Ramey
lib/readline/vi_mode.c Brian Fox, Chet Ramey
lib/readline/emacs_keymap.c Brian Fox, Chet Ramey
lib/readline/vi_keymap.c Brian Fox, Chet Ramey
lib/readline/funmap.c Brian Fox, Chet Ramey
lib/readline/keymaps.c Brian Fox, Chet Ramey
lib/readline/xmalloc.c Brian Fox, Chet Ramey
lib/readline/search.c Brian Fox, Chet Ramey
lib/readline/isearch.c Brian Fox, Chet Ramey
lib/readline/parens.c Brian Fox, Chet Ramey
lib/readline/rltty.c Brian Fox, Chet Ramey
lib/readline/complete.c Brian Fox, Chet Ramey
lib/readline/bind.c Brian Fox, Chet Ramey
lib/readline/display.c Brian Fox, Chet Ramey
lib/readline/signals.c Brian Fox, Chet Ramey
lib/readline/kill.c Brian Fox, Chet Ramey
lib/readline/undo.c Brian Fox, Chet Ramey
lib/readline/input.c Brian Fox, Chet Ramey
lib/readline/macro.c Brian Fox, Chet Ramey
lib/readline/util.c Brian Fox, Chet Ramey
lib/readline/callback.c Chet Ramey
lib/readline/readline.h Brian Fox, Chet Ramey
lib/readline/chardefs.h Brian Fox, Chet Ramey
lib/readline/keymaps.h Brian Fox, Chet Ramey
lib/readline/rldefs.h Brian Fox, Chet Ramey
lib/readline/posixstat.h Brian Fox, Chet Ramey
lib/readline/ansi_stdlib.h Brian Fox, Chet Ramey
lib/readline/memalloc.h Chet Ramey
lib/readline/rlconf.h Chet Ramey
lib/readline/rltty.h Chet Ramey
lib/readline/history.c Brian Fox, Chet Ramey
lib/readline/histexpand.c Brian Fox, Chet Ramey
lib/readline/histfile.c Brian Fox, Chet Ramey
lib/readline/histsearch.c Brian Fox, Chet Ramey
lib/readline/history.h Brian Fox, Chet Ramey
lib/readline/histlib.h Brian Fox, Chet Ramey
lib/readline/tilde.c Brian Fox, Chet Ramey
lib/readline/tilde.h Brian Fox, Chet Ramey
lib/readline/doc/texindex.c bug-texinfo@prep.ai.mit.edu, Chet Ramey
lib/readline/doc/Makefile Brian Fox, Chet Ramey
lib/readline/doc/rlman.texinfo Brian Fox, Chet Ramey
lib/readline/doc/rltech.texinfo Brian Fox, Chet Ramey
lib/readline/doc/rluser.texinfo Brian Fox, Chet Ramey
lib/readline/doc/hist.texinfo Brian Fox, Chet Ramey
lib/readline/doc/hstech.texinfo Brian Fox, Chet Ramey
lib/readline/doc/hsuser.texinfo Brian Fox, Chet Ramey
lib/readline/examples/Makefile Brian Fox
lib/readline/examples/fileman.c Brian Fox
lib/readline/examples/manexamp.c Brian Fox
lib/readline/examples/histexamp.c Brian Fox, Chet Ramey
lib/readline/examples/rltest.c Brian Fox, Chet Ramey
lib/readline/examples/Inputrc Brian Fox, Chet Ramey
lib/termcap/Makefile.in David MacKenzie, Chet Ramey
lib/termcap/termcap.c David MacKenzie
lib/termcap/termcap.h David MacKenzie
lib/termcap/tparam.c David MacKenzie
lib/termcap/version.c David MacKenzie
lib/termcap/grot/termcap.info David MacKenzie
lib/termcap/grot/termcap.info-1 David MacKenzie
lib/termcap/grot/termcap.info-2 David MacKenzie
lib/termcap/grot/termcap.info-3 David MacKenzie
lib/termcap/grot/termcap.info-4 David MacKenzie
lib/termcap/grot/NEWS David MacKenzie
lib/termcap/grot/INSTALL David MacKenzie
lib/termcap/grot/ChangeLog David MacKenzie
lib/termcap/grot/texinfo.tex David MacKenzie
lib/termcap/grot/termcap.texi David MacKenzie
lib/termcap/grot/Makefile.in David MacKenzie
lib/termcap/grot/configure David MacKenzie
lib/termcap/grot/configure.in David MacKenzie
lib/termcap/grot/COPYING David MacKenzie
lib/termcap/grot/README David MacKenzie
lib/tilde/ChangeLog Brian Fox, Chet Ramey
lib/tilde/Makefile.in Brian Fox, Chet Ramey
lib/tilde/doc/tilde.texi Brian Fox, Chet Ramey
lib/tilde/doc/Makefile Brian Fox, Chet Ramey
lib/tilde/tilde.c Brian Fox, Chet Ramey
lib/tilde/tilde.h Brian Fox, Chet Ramey
lib/tilde/memalloc.h Brian Fox, Chet Ramey
CWRU/misc/open-files.c Chet Ramey
CWRU/misc/sigs.c Chet Ramey
CWRU/misc/pid.c Chet Ramey
CWRU/misc/sigstat.c Chet Ramey
CWRU/misc/bison Chet Ramey
CWRU/misc/aux-machine-desc Chet Ramey
CWRU/PLATFORMS Chet Ramey
CWRU/README Chet Ramey
CWRU/CWRU.CHANGES.051093 Chet Ramey
CWRU/POSIX.NOTES Chet Ramey
CWRU/CWRU.CHANGES.071193 Chet Ramey
CWRU/CWRU.CHANGES.090393 Chet Ramey
doc/Makefile.in Brian Fox, Chet Ramey
doc/bash.1 Chet Ramey
doc/builtins.1 Chet Ramey
doc/bash.ps Chet Ramey
doc/bash.txt Chet Ramey
doc/readline.3 Chet Ramey
doc/readline.ps Chet Ramey
doc/readline.txt Chet Ramey
doc/texinfo.tex Richard Stallman
doc/features.texi Brian Fox, Chet Ramey
doc/features.ps Brian Fox, Chet Ramey
doc/features.info Brian Fox, Chet Ramey
doc/features.dvi Brian Fox, Chet Ramey
doc/bash_builtins.1 Chet Ramey
doc/bash_builtins.ps Chet Ramey
doc/bash_builtins.txt Chet Ramey
doc/bash_builtins.readme Chet Ramey
doc/article.ms Chet Ramey
doc/FAQ Chet Ramey
support/cat-s Brian Fox, Chet Ramey
support/mksysdefs Brian Fox, Chet Ramey
support/mkversion.c Brian Fox, Chet Ramey
support/mksignames.c Brian Fox, Chet Ramey
support/getcppsyms.c Brian Fox, Chet Ramey
support/cppmagic Brian Fox, Chet Ramey
support/pagesize.sh Chet Ramey, Brian Fox
support/pagesize.c Chet Ramey, Brian Fox
support/bash.xbm Brian Fox
support/FAQ Brian Fox
support/PORTING Brian Fox
support/mklinks Brian Fox
support/fixlinks Chet Ramey
support/mkdirs Chet Ramey
support/clone-bash Chet Ramey
support/bashbug.sh Chet Ramey
support/mkmachtype Chet Ramey
support/recho.c Chet Ramey
support/config.guess Per Bothner, Chet Ramey
support/config.sub Richard Stallman, Chet Ramey
support/install.sh MIT X Consortium (X11R5)
support/endian.c Chet Ramey
support/printenv Chet Ramey
examples/precedence-tester Brian Fox, Chet Ramey
examples/functions/substr Brian Fox, Chet Ramey
examples/functions/kshenv Chet Ramey
examples/functions/autoload Chet Ramey
examples/functions/csh-compat Brian Fox, Chet Ramey
examples/functions/shcat Chet Ramey
examples/functions/substr2 Chet Ramey
examples/functions/term Chet Ramey
examples/functions/whatis Chet Ramey
examples/functions/whence Chet Ramey
examples/functions/func Chet Ramey
examples/functions/dirname Brian Fox, Noah Friedman
examples/functions/basename Brian Fox, Noah Friedman
examples/functions/exitstat Noah Friedman, Roland McGrath
examples/functions/external Noah Friedman
examples/functions/fact Brian Fox
examples/functions/manpage Tom Tromey
examples/functions/fstty Chet Ramey
examples/functions/jj.bash Chet Ramey
examples/functions/notify.bash Chet Ramey
examples/loadables/getconf.c J.T. Conklin
examples/scripts/shprompt Chet Ramey
examples/scripts/adventure.sh Chet Ramey, Doug Gwyn
examples/scripts/bcsh.sh Chris Robertson, Chet Ramey
examples/startup-files/Bashrc Brian Fox
examples/startup-files/Bash_aliases Brian Fox
examples/startup-files/Bash_profile Brian Fox
examples/startup-files/bash-profile Brian Fox
examples/startup-files/bashrc Chet Ramey
examples/suncmd.termcap Brian Fox, Chet Ramey
examples/alias-conv.sh Brian Fox, Chet Ramey
tests/README Chet Ramey
tests/arith.tests Chet Ramey
tests/arith.right Chet Ramey
tests/array.tests Chet Ramey
tests/array.right Chet Ramey
tests/dollar-at.sh Chet Ramey
tests/dollar-star.sh Chet Ramey
tests/dollar.right Chet Ramey
tests/exp-tests Chet Ramey
tests/exp.right Chet Ramey
tests/glob-test Chet Ramey
tests/glob.right Chet Ramey
tests/ifs-test-1.sh Chet Ramey
tests/ifs-test-2.sh Chet Ramey
tests/ifs-test-3.sh Chet Ramey
tests/ifs.1.right Chet Ramey
tests/ifs.2.right Chet Ramey
tests/ifs.3.right Chet Ramey
tests/input-line.sh Chet Ramey
tests/input-line.sub Chet Ramey
tests/input.right Chet Ramey
tests/minus-e Chet Ramey
tests/minus-e.right Chet Ramey
tests/new-exp.tests Chet Ramey
tests/new-exp.right Chet Ramey
tests/prec.right Chet Ramey
tests/precedence Chet Ramey
tests/run-all Chet Ramey
tests/run-dollars Chet Ramey
tests/run-exp-tests Chet Ramey
tests/run-glob-test Chet Ramey
tests/run-ifs-tests Chet Ramey
tests/run-input-test Chet Ramey
tests/run-minus-e Chet Ramey
tests/run-new-exp Chet Ramey
tests/run-precedence Chet Ramey
tests/run-set-e-test Chet Ramey
tests/run-strip Chet Ramey
tests/run-varenv Chet Ramey
tests/set-e-test Chet Ramey
tests/set-e.right Chet Ramey
tests/strip.tests Chet Ramey
tests/strip.right Chet Ramey
tests/tilde-tests Chet Ramey
tests/tilde.right Chet Ramey
tests/unicode1.sub Chet Ramey, John Kearney
tests/varenv.right Chet Ramey
tests/varenv.sh Chet Ramey
tests/misc/chld-trap.sh Chet Ramey
tests/misc/dot-test-1.sh Chet Ramey
tests/misc/dot-test-1.sub Chet Ramey
tests/misc/gotest Chet Ramey
tests/misc/perf-script Chet Ramey
tests/misc/redir.t1.sh Chet Ramey
tests/misc/redir.t2.sh Chet Ramey
tests/misc/redir.t3.sh Chet Ramey
tests/misc/redir.t3.sub Chet Ramey
tests/misc/redir.t4.sh Chet Ramey
tests/misc/run.r1.sh Chet Ramey
tests/misc/run.r2.sh Chet Ramey
tests/misc/run.r3.sh Chet Ramey
tests/misc/sigint.t1.sh Chet Ramey
tests/misc/sigint.t2.sh Chet Ramey
tests/misc/sigint.t3.sh Chet Ramey
tests/misc/sigint.t4.sh Chet Ramey
tests/misc/test-minus-e.1 Chet Ramey
tests/misc/test-minus-e.2 Chet Ramey
lib/sh/Makefile.in Chet Ramey
lib/sh/clktck.c Chet Ramey
lib/sh/clock.c Chet Ramey
lib/sh/fmtullong.c Chet Ramey
lib/sh/fmtulong.c Chet Ramey
lib/sh/getcwd.c Chet Ramey, Roland McGrath
lib/sh/getenv.c Chet Ramey, Brian Fox
lib/sh/inet_aton.c Chet Ramey, Ulrich Drepper, Paul Vixie
lib/sh/itos.c Chet Ramey
lib/sh/mailstat.c Chet Ramey
lib/sh/makepath.c Chet Ramey
lib/sh/mktime.c Chet Ramey, Paul Eggert
lib/sh/netconn.c Chet Ramey
lib/sh/netopen.c Chet Ramey
lib/sh/oslib.c Chet Ramey, Brian Fox
lib/sh/pathcanon.c Chet Ramey
lib/sh/pathphys.c Chet Ramey
lib/sh/rename.c Chet Ramey
lib/sh/setlinebuf.c Chet Ramey, Brian Fox
lib/sh/shquote.c Chet Ramey
lib/sh/shtty.c Chet Ramey
lib/sh/snprintf.c Chet Ramey, Unknown
lib/sh/spell.c Chet Ramey
lib/sh/strcasecmp.c Chet Ramey, Brian Fox
lib/sh/strerror.c Chet Ramey, Brian Fox
lib/sh/strftime.c Arnold Robbins
lib/sh/strindex.c Chet Ramey
lib/sh/stringlist.c Chet Ramey
lib/sh/stringvec.c Chet Ramey
lib/sh/strpbrk.c Roland McGrath
lib/sh/strtod.c Chet Ramey, Roland McGrath
lib/sh/strtoimax.c Chet Ramey, Paul Eggert
lib/sh/strtol.c Chet Ramey, Paul Eggert
lib/sh/strtoll.c Chet Ramey, Paul Eggert
lib/sh/strtoul.c Chet Ramey, Paul Eggert
lib/sh/strtoull.c Chet Ramey, Paul Eggert
lib/sh/strtoumax.c Chet Ramey, Paul Eggert
lib/sh/strtrans.c Chet Ramey
lib/sh/times.c Chet Ramey, Brian Fox
lib/sh/timeval.c Chet Ramey
lib/sh/tmpfile.c Chet Ramey
lib/sh/vprint.c Chet Ramey, Brian Fox
lib/sh/xstrchr.c Chet Ramey, Mitsuru Chinen
lib/sh/zread.c Chet Ramey
lib/sh/zwrite.c Chet Ramey
tests/posix-ifs.sh Glenn Fowler
support/checkbashisms Julian Gilbey, Debian Linux team
lib/readline/colors.c Richard Stallman, David MacKenzie
lib/readline/parse-colors.c Richard Stallman, David MacKenzie

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,596 @@
Compatibility with previous versions
====================================
This document details the incompatibilities between this version of bash,
bash-5.2, and the previous widely-available versions, bash-3.2 (which is
still the `standard' version for Mac OS X), 4.2/4.3 (which are still
standard on a few Linux distributions), and bash-4.4/bash-5.0/bash-5.1,
the current widely-available versions. These were discovered by users of
bash-2.x through 5.x, so this list is not comprehensive. Some of these
incompatibilities occur between the current version and versions 2.0 and
above.
1. Bash uses a new quoting syntax, $"...", to do locale-specific
string translation. Users who have relied on the (undocumented)
behavior of bash-1.14 will have to change their scripts. For
instance, if you are doing something like this to get the value of
a variable whose name is the value of a second variable:
eval var2=$"$var1"
you will have to change to a different syntax.
This capability is directly supported by bash-2.0:
var2=${!var1}
This alternate syntax will work portably between bash-1.14 and bash-2.0:
eval var2=\$${var1}
2. One of the bugs fixed in the YACC grammar tightens up the rules
concerning group commands ( {...} ). The `list' that composes the
body of the group command must be terminated by a newline or
semicolon. That's because the braces are reserved words, and are
recognized as such only when a reserved word is legal. This means
that while bash-1.14 accepted shell function definitions like this:
foo() { : }
bash-2.0 requires this:
foo() { :; }
This is also an issue for commands like this:
mkdir dir || { echo 'could not mkdir' ; exit 1; }
The syntax required by bash-2.0 is also accepted by bash-1.14.
3. The options to `bind' have changed to make them more consistent with
the rest of the bash builtins. If you are using `bind -d' to list
the readline key bindings in a form that can be re-read, use `bind -p'
instead. If you were using `bind -v' to list the key bindings, use
`bind -P' instead.
4. The `long' invocation options must now be prefixed by `--' instead
of `-'. (The old form is still accepted, for the time being.)
5. There was a bug in the version of readline distributed with bash-1.14
that caused it to write badly-formatted key bindings when using
`bind -d'. The only key sequences that were affected are C-\ (which
should appear as \C-\\ in a key binding) and C-" (which should appear
as \C-\"). If these key sequences appear in your inputrc, as, for
example,
"\C-\": self-insert
they will need to be changed to something like the following:
"\C-\\": self-insert
6. A number of people complained about having to use ESC to terminate an
incremental search, and asked for an alternate mechanism. Bash-2.03
uses the value of the settable readline variable `isearch-terminators'
to decide which characters should terminate an incremental search. If
that variable has not been set, ESC and Control-J will terminate a
search.
7. Some variables have been removed: MAIL_WARNING, notify, history_control,
command_oriented_history, glob_dot_filenames, allow_null_glob_expansion,
nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and
cdable_vars. Most of them are now implemented with the new `shopt'
builtin; others were already implemented by `set'. Here is a list of
correspondences:
MAIL_WARNING shopt mailwarn
notify set -o notify
history_control HISTCONTROL
command_oriented_history shopt cmdhist
glob_dot_filenames shopt dotglob
allow_null_glob_expansion shopt nullglob
nolinks set -o physical
hostname_completion_file HOSTFILE
noclobber set -o noclobber
no_exit_on_failed_exec shopt execfail
cdable_vars shopt cdable_vars
8. `ulimit' now sets both hard and soft limits and reports the soft limit
by default (when neither -H nor -S is specified). This is compatible
with versions of sh and ksh that implement `ulimit'. The bash-1.14
behavior of, for example,
ulimit -c 0
can be obtained with
ulimit -S -c 0
It may be useful to define an alias:
alias ulimit="ulimit -S"
9. Bash-2.01 uses a new quoting syntax, $'...' to do ANSI-C string
translation. Backslash-escaped characters in ... are expanded and
replaced as specified by the ANSI C standard.
10. The sourcing of startup files has changed somewhat. This is explained
more completely in the INVOCATION section of the manual page.
A non-interactive shell not named `sh' and not in posix mode reads
and executes commands from the file named by $BASH_ENV. A
non-interactive shell started by `su' and not in posix mode will read
startup files. No other non-interactive shells read any startup files.
An interactive shell started in posix mode reads and executes commands
from the file named by $ENV.
11. The <> redirection operator was changed to conform to the POSIX.2 spec.
In the absence of any file descriptor specification preceding the `<>',
file descriptor 0 is used. In bash-1.14, this was the behavior only
when in POSIX mode. The bash-1.14 behavior may be obtained with
<>filename 1>&0
12. The `alias' builtin now checks for invalid options and takes a `-p'
option to display output in POSIX mode. If you have old aliases beginning
with `-' or `+', you will have to add the `--' to the alias command
that declares them:
alias -x='chmod a-x' --> alias -- -x='chmod a-x'
13. The behavior of range specificiers within bracket matching expressions
in the pattern matcher (e.g., [A-Z]) depends on the current locale,
specifically the value of the LC_COLLATE environment variable. Setting
this variable to C or POSIX will result in the traditional ASCII behavior
for range comparisons. If the locale is set to something else, e.g.,
en_US (specified by the LANG or LC_ALL variables), collation order is
locale-dependent. For example, the en_US locale sorts the upper and
lower case letters like this:
AaBb...Zz
so a range specification like [A-Z] will match every letter except `z'.
Other locales collate like
aAbBcC...zZ
which means that [A-Z] matches every letter except `a'.
The portable way to specify upper case letters is [:upper:] instead of
A-Z; lower case may be specified as [:lower:] instead of a-z.
Look at the manual pages for setlocale(3), strcoll(3), and, if it is
present, locale(1).
You can find your current locale information by running locale(1):
caleb.ins.cwru.edu(2)$ locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_ALL=en_US
My advice is to put
export LC_COLLATE=C
into /etc/profile and inspect any shell scripts run from cron for
constructs like [A-Z]. This will prevent things like
rm [A-Z]*
from removing every file in the current directory except those beginning
with `z' and still allow individual users to change the collation order.
Users may put the above command into their own profiles as well, of course.
14. Bash versions up to 1.14.7 included an undocumented `-l' operator to
the `test/[' builtin. It was a unary operator that expanded to the
length of its string argument. This let you do things like
test -l $variable -lt 20
for example.
This was included for backwards compatibility with old versions of the
Bourne shell, which did not provide an easy way to obtain the length of
the value of a shell variable.
This operator is not part of the POSIX standard, because one can (and
should) use ${#variable} to get the length of a variable's value.
Bash-2.x does not support it.
15. Bash no longer auto-exports the HOME, PATH, SHELL, TERM, HOSTNAME,
HOSTTYPE, MACHTYPE, or OSTYPE variables. If they appear in the initial
environment, the export attribute will be set, but if bash provides a
default value, they will remain local to the current shell.
16. Bash no longer initializes the FUNCNAME, GROUPS, or DIRSTACK variables
to have special behavior if they appear in the initial environment.
17. Bash no longer removes the export attribute from the SSH_CLIENT or
SSH2_CLIENT variables, and no longer attempts to discover whether or
not it has been invoked by sshd in order to run the startup files.
18. Bash no longer requires that the body of a function be a group command;
any compound command is accepted.
19. As of bash-3.0, the pattern substitution operators no longer perform
quote removal on the pattern before attempting the match. This is the
way the pattern removal functions behave, and is more consistent.
20. After bash-3.0 was released, I reimplemented tilde expansion, incorporating
it into the mainline word expansion code. This fixes the bug that caused
the results of tilde expansion to be re-expanded. There is one
incompatibility: a ${paramOPword} expansion within double quotes will not
perform tilde expansion on WORD. This is consistent with the other
expansions, and what POSIX specifies.
21. A number of variables have the integer attribute by default, so the +=
assignment operator returns expected results: RANDOM, LINENO, MAILCHECK,
HISTCMD, OPTIND.
22. Bash-3.x is much stricter about $LINENO correctly reflecting the line
number in a script; assignments to LINENO have little effect.
23. By default, readline binds the terminal special characters to their
readline equivalents. As of bash-3.1/readline-5.1, this is optional and
controlled by the bind-tty-special-chars readline variable.
24. The \W prompt string expansion abbreviates $HOME as `~'. The previous
behavior is available with ${PWD##/*/}.
25. The arithmetic exponentiation operator is right-associative as of bash-3.1.
26. The rules concerning valid alias names are stricter, as per POSIX.2.
27. The Readline key binding functions now obey the convert-meta setting active
when the binding takes place, as the dispatch code does when characters
are read and processed.
28. The historical behavior of `trap' reverting signal disposition to the
original handling in the absence of a valid first argument is implemented
only if the first argument is a valid signal number.
29. In versions of bash after 3.1, the ${parameter//pattern/replacement}
expansion does not interpret `%' or `#' specially. Those anchors don't
have any real meaning when replacing every match.
30. Beginning with bash-3.1, the combination of posix mode and enabling the
`xpg_echo' option causes echo to ignore all options, not looking for `-n'
31. Beginning with bash-3.2, bash follows the Bourne-shell-style (and POSIX-
style) rules for parsing the contents of old-style backquoted command
substitutions. Previous versions of bash attempted to recursively parse
embedded quoted strings and shell constructs; bash-3.2 uses strict POSIX
rules to find the closing backquote and simply passes the contents of the
command substitution to a subshell for parsing and execution.
32. Beginning with bash-3.2, bash uses access(2) when executing primaries for
the test builtin and the [[ compound command, rather than looking at the
file permission bits obtained with stat(2). This obeys restrictions of
the file system (e.g., read-only or noexec mounts) not available via stat.
33. Bash-3.2 adopts the convention used by other string and pattern matching
operators for the `[[' compound command, and matches any quoted portion
of the right-hand-side argument to the =~ operator as a string rather
than a regular expression.
34. Bash-4.0 allows the behavior in the previous item to be modified using
the notion of a shell `compatibility level'. If the compat31 shopt
option is set, quoting the pattern has no special effect.
35. Bash-3.2 (patched) and Bash-4.0 fix a bug that leaves the shell in an
inconsistent internal state following an assignment error. One of the
changes means that compound commands or { ... } grouping commands are
aborted under some circumstances in which they previously were not.
This is what Posix specifies.
36. Bash-4.0 now allows process substitution constructs to pass unchanged
through brace expansion, so any expansion of the contents will have to be
separately specified, and each process substitution will have to be
separately entered.
37. Bash-4.0 now allows SIGCHLD to interrupt the wait builtin, as Posix
specifies, so the SIGCHLD trap is no longer always invoked once per
exiting child if you are using `wait' to wait for all children. As
of bash-4.2, this is the status quo only when in posix mode.
38. Since bash-4.0 now follows Posix rules for finding the closing delimiter
of a $() command substitution, it will not behave as previous versions
did, but will catch more syntax and parsing errors before spawning a
subshell to evaluate the command substitution.
39. The programmable completion code uses the same set of delimiting characters
as readline when breaking the command line into words, rather than the
set of shell metacharacters, so programmable completion and readline
should be more consistent.
40. When the read builtin times out, it attempts to assign any input read to
specified variables, which also causes variables to be set to the empty
string if there is not enough input. Previous versions discarded the
characters read.
41. Beginning with bash-4.0, when one of the commands in a pipeline is killed
by a SIGINT while executing a command list, the shell acts as if it
received the interrupt. This can be disabled by setting the compat31 or
compat32 shell options.
42. Bash-4.0 changes the handling of the set -e option so that the shell exits
if a pipeline fails (and not just if the last command in the failing
pipeline is a simple command). This is not as Posix specifies. There is
work underway to update this portion of the standard; the bash-4.0
behavior attempts to capture the consensus at the time of release.
43. Bash-4.0 fixes a Posix mode bug that caused the . (source) builtin to
search the current directory for its filename argument, even if "." is
not in $PATH. Posix says that the shell shouldn't look in $PWD in this
case.
44. Bash-4.1 uses the current locale when comparing strings using the < and
> operators to the `[[' command. This can be reverted to the previous
behavior (ASCII collating and strcmp(3)) by setting one of the
`compatNN' shopt options, where NN is less than 41.
45. Bash-4.1 conforms to the current Posix specification for `set -u':
expansions of $@ and $* when there are no positional parameters do not
cause the shell to exit.
46. Bash-4.1 implements the current Posix specification for `set -e' and
exits when any command fails, not just a simple command or pipeline.
47. Command substitutions now remove the caller's trap strings when trap is
run to set a new trap in the subshell. Previous to bash-4.2, the old
trap strings persisted even though the actual signal handlers were reset.
48. When in Posix mode, a single quote is not treated specially in a
double-quoted ${...} expansion, unless the expansion operator is
# or % or the new `//', `^', or `,' expansions. In particular, it
does not define a new quoting context. This is from Posix interpretation
221.
49. Posix mode shells no longer exit if a variable assignment error occurs
with an assignment preceding a command that is not a special builtin.
50. Bash-4.2 attempts to preserve what the user typed when performing word
completion, instead of, for instance, expanding shell variable
references to their value.
51. When in Posix mode, bash-4.2 exits if the filename supplied as an argument
to `.' is not found and the shell is not interactive.
52. When compiled for strict Posix compatibility, bash-4.3 does not enable
history expansion by default in interactive shells, since it results in
a non-conforming environment.
53. Bash-4.3 runs the replacement string in the pattern substitution word
expansion through quote removal. The code already treats quote
characters in the replacement string as special; if it treats them as
special, then quote removal should remove them.
54. Bash-4.4 no longer considers a reference to ${a[@]} or ${a[*]}, where `a'
is an array without any elements set, to be a reference to an unset
variable. This means that such a reference will not cause the shell to
exit when the `-u' option is enabled.
55. Bash-4.4 allows double quotes to quote the history expansion character (!)
when in Posix mode, since Posix specifies the effects of double quotes.
56. Bash-4.4 does not inherit $PS4 from the environment if running as root.
57. Bash-4.4 doesn't allow a `break' or `continue' in a function to affect
loop execution in the calling context.
58. Bash-4.4 no longer expands tildes in $PATH elements when in Posix mode.
59. Bash-4.4 does not attempt to perform a compound array assignment if an
argument to `declare' or a similar builtin expands to a word that looks
like a compound array assignment (e.g. declare w=$x where x='(foo)').
60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended
debugging mode is active. The old behavior of unconditionally setting
BASH_ARGC and BASH_ARGV is available at compatibility levels less than
or equal to 44.
61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt
to break or continue loop execution inherited from the calling context.
62. Bash-5.0 doesn't allow variable assignments preceding builtins like
export and readonly to modify variables with the same name in preceding
contexts (including the global context) unless the shell is in posix
mode, since export and readonly are special builtins.
63. Bash-5.1 changes the way posix-mode shells handle assignment statements
preceding shell function calls. Previous versions of POSIX specified that
such assignments would persist after the function returned; subsequent
versions of the standard removed that requirement (interpretation #654).
Bash-5.1 posix mode assignment statements preceding shell function calls
do not persist after the function returns.
64. Bash-5.1 reverts to the bash-4.4 treatment of pathname expansion of words
containing backslashes but no other special globbing characters. This comes
after a protracted discussion and a POSIX interpretation (#1234).
65. In bash-5.1, disabling posix mode attempts to restore the state of several
options that posix mode modifies to the state they had before enabling
posix mode. Previous versions restored these options to default values.
66. Bash-5.2 attempts to prevent double-expansion of array subscripts under
certain circumstances, especially arithmetic evaluation, by acting as if
the `assoc_expand_once' shell option were set.
67. The `unset' builtin in bash-5.2 treats array subscripts `@' and `*'
differently than previous versions, and differently depending on whether
the array is indexed or associative.
Shell Compatibility Level
=========================
Bash-4.0 introduced the concept of a `shell compatibility level', specified
as a set of options to the shopt builtin (compat31, compat32, compat40,
compat41, and so on). There is only one current compatibility level --
each option is mutually exclusive. The compatibility level is intended to
allow users to select behavior from previous versions that is incompatible
with newer versions while they migrate scripts to use current features and
behavior. It's intended to be a temporary solution.
This section does not mention behavior that is standard for a particular
version (e.g., setting compat32 means that quoting the rhs of the regexp
matching operator quotes special regexp characters in the word, which is
default behavior in bash-3.2 and above).
If a user enables, say, compat32, it may affect the behavior of other
compatibility levels up to and including the current compatibility level.
The idea is that each compatibility level controls behavior that changed in
that version of bash, but that behavior may have been present in earlier
versions. For instance, the change to use locale-based comparisons with
the `[[' command came in bash-4.1, and earlier versions used ASCII-based
comparisons, so enabling compat32 will enable ASCII-based comparisons as
well. That granularity may not be sufficient for all uses, and as a result
users should employ compatibility levels carefully. Read the documentation
for a particular feature to find out the current behavior.
Bash-4.3 introduced a new shell variable: BASH_COMPAT. The value assigned
to this variable (a decimal version number like 4.2, or an integer
corresponding to the compatNN option, like 42) determines the compatibility
level.
Starting with bash-4.4, bash has begun deprecating older compatibility
levels. Eventually, the options will be removed in favor of the
BASH_COMPAT variable.
Bash-5.0 is the final version for which there will be an individual shopt
option for the previous version. Users should use the BASH_COMPAT variable
on bash-5.0 and later versions.
The following table describes the behavior changes controlled by each
compatibility level setting. The `compatNN' tag is used as shorthand for
setting the compatibility level to NN using one of the following
mechanisms. For versions prior to bash-5.0, the compatibility level may be
set using the corresponding compatNN shopt option. For bash-4.3 and later
versions, the BASH_COMPAT variable is preferred, and it is required for
bash-5.1 and later versions.
compat31
- the < and > operators to the [[ command do not consider the current
locale when comparing strings; they use ASCII ordering
- quoting the rhs of the [[ command's regexp matching operator (=~)
has no special effect
compat32
- the < and > operators to the [[ command do not consider the current
locale when comparing strings; they use ASCII ordering
- interrupting a command list such as "a ; b ; c" causes the execution
of the next command in the list (in bash-4.0 and later versions,
the shell acts as if it received the interrupt, so interrupting
one command in a list aborts the execution of the entire list)
compat40
- the < and > operators to the [[ command do not consider the current
locale when comparing strings; they use ASCII ordering.
Bash versions prior to bash-4.1 use ASCII collation and strcmp(3);
bash-4.1 and later use the current locale's collation sequence and
strcoll(3).
compat41
- in posix mode, `time' may be followed by options and still be
recognized as a reserved word (this is POSIX interpretation 267)
- in posix mode, the parser requires that an even number of single
quotes occur in the `word' portion of a double-quoted ${...}
parameter expansion and treats them specially, so that characters
within the single quotes are considered quoted (this is POSIX
interpretation 221)
compat42
- the replacement string in double-quoted pattern substitution is not
run through quote removal, as it is in versions after bash-4.2
- in posix mode, single quotes are considered special when expanding
the `word' portion of a double-quoted ${...} parameter expansion
and can be used to quote a closing brace or other special character
(this is part of POSIX interpretation 221); in later versions,
single quotes are not special within double-quoted word expansions
compat43
- the shell does not print a warning message if an attempt is made to
use a quoted compound assignment as an argument to declare
(declare -a foo='(1 2)'). Later versions warn that this usage is
deprecated.
- word expansion errors are considered non-fatal errors that cause the
current command to fail, even in posix mode (the default behavior is
to make them fatal errors that cause the shell to exit)
- when executing a shell function, the loop state (while/until/etc.)
is not reset, so `break' or `continue' in that function will break
or continue loops in the calling context. Bash-4.4 and later reset
the loop state to prevent this
compat44
- the shell sets up the values used by BASH_ARGV and BASH_ARGC so
they can expand to the shell's positional parameters even if extended
debug mode is not enabled
- a subshell inherits loops from its parent context, so `break'
or `continue' will cause the subshell to exit. Bash-5.0 and later
reset the loop state to prevent the exit
- variable assignments preceding builtins like export and readonly
that set attributes continue to affect variables with the same
name in the calling environment even if the shell is not in posix
mode
compat50 (set using BASH_COMPAT)
- Bash-5.1 changed the way $RANDOM is generated to introduce slightly
more randomness. If the shell compatibility level is set to 50 or
lower, it reverts to the method from bash-5.0 and previous versions,
so seeding the random number generator by assigning a value to
RANDOM will produce the same sequence as in bash-5.0
- If the command hash table is empty, bash versions prior to bash-5.1
printed an informational message to that effect even when writing
output in a format that can be reused as input (-l). Bash-5.1
suppresses that message if -l is supplied
- Bash-5.1 and later use pipes for here-documents and here-strings if
they are smaller than the pipe capacity. If the shell compatibility
level is set to 50 or lower, it reverts to using temporary files.
compat51 (set using BASH_COMPAT)
- The `unset' builtin will unset the array a given an argument like
`a[@]'. Bash-5.2 will unset an element with key `@' (associative
arrays) or remove all the elements without unsetting the array
(indexed arrays)
- arithmetic commands ( ((...)) ) and the expressions in an arithmetic
for statement can be expanded more than once
- expressions used as arguments to arithmetic operators in the [[
conditional command can be expanded more than once
- indexed and associative array subscripts used as arguments to the
operators in the [[ conditional command (e.g., `[[ -v') can be
expanded more than once. Bash-5.2 behaves as if the
`assoc_expand_once' option were enabled.
- the expressions in substring parameter brace expansion can be
expanded more than once
- the expressions in the $(( ... )) word expansion can be expanded
more than once
- arithmetic expressions used as indexed array subscripts can be
expanded more than once;
- `test -v', when given an argument of A[@], where A is an existing
associative array, will return true if the array has any set
elements. Bash-5.2 will look for a key named `@';
- the ${param[:]=value} word expansion will return VALUE, before any
variable-specific transformations have been performed (e.g.,
converting to lowercase). Bash-5.2 will return the final value
assigned to the variable, as POSIX specifies;
- Parsing command substitutions will act as if extended glob is
enabled, so that parsing a command substitution containing an extglob
pattern (say, as part of a shell function) will not fail. This
assumes the intent is to enable extglob before the command is
executed and word expansions are performed. It will fail at word
expansion time if extglob hasn't been enabled by the time the
command is executed.
-------------------------------------------------------------------------------
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without any warranty.

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://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 <http://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
<http://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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

File diff suppressed because it is too large Load diff

2414
OGP64/usr/share/doc/bash/FAQ Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,187 @@
BASH - The Bourne-Again Shell
Bash is the shell, or command language interpreter, that will appear
in the GNU operating system. Bash is an sh-compatible shell that
incorporates useful features from the Korn shell (ksh) and C shell
(csh). It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2
Shell and Tools standard. It offers functional improvements over sh
for both programming and interactive use. In addition, most sh scripts
can be run by Bash without modification.
Bash is quite portable. It uses a configuration system that discovers
characteristics of the compilation platform at build time, and may
therefore be built on nearly every version of UNIX. Ports to
UNIX-like systems such as QNX and Minix and to non-UNIX systems such
as OS/2, Windows 95, and Windows NT are available.
Bash includes the following features:
Editing and Completion
Bash offers a command-line editing facility which permits users to
edit command lines using familiar emacs or vi-style editing commands.
Editing allows corrections to be made without having to erase back
to the point of error or start the command line anew. The editing
facilities include a feature that allows users to complete command and
file names.
The Bash line editing library is fully customizable. Users may define
their own key bindings -- the action taken when a key is pressed. A
number of variables to fine-tune editing behavior are also available.
History and Command Re-entry
The Bash history feature remembers commands entered to the shell and
allows them to be recalled and re-executed. The history list may be
of unlimited size. Bash allows users to search for previous commands
and reuse portions of those commands when composing new ones. The
history list may be saved across shell sessions.
Bash allows users to control which commands are saved on the history
list.
Job Control
On systems that support it, Bash provides an interface to the
operating system's job control facilities, which allow processes
to be suspended and restarted, and moved between the foreground
and background. Bash allows users to selectively `forget' about
background jobs.
Shell Functions and Aliases
These mechanisms are available to bind a user-selected identifier to a
list of commands that will be executed when the identifier is used as
a command name. Functions allow local variables and recursion, and
have access to the environment of the calling shell. Aliases may be
used to create a mnemonic for a command name, expand a single word to
a complex command, or ensure that a command is called with a basic set
of options.
Arrays
Bash-2.0 supports indexed arrays of unlimited size. The subscript for
an array is an arithmetic expression. Arrays may be assigned to with
a new compound assignment syntax, and several builtins have options to
operate on array variables. Bash includes a number of built-in array
variables.
Arithmetic
Bash allows users to perform integer arithmetic in any base from two
to sixty-four. Nearly all of the C language arithmetic operators are
available with the same syntax and precedence as in C. Arithmetic
expansion allows an arithmetic expression to be evaluated and the
result substituted into the command line. Shell variables can be used
as operands, and the value of an expression may be assigned to a
variable.
An arithmetic expression may be used as a command; the exit status of
the command is the value of the expression.
ANSI-C Quoting
There is a new quoting syntax that allows backslash-escaped characters
in strings to be expanded according to the ANSI C standard.
Tilde Expansion
Users' home directories may be expanded using this feature. Words
beginning with a tilde may also be expanded to the current or previous
working directory.
Brace Expansion
Brace expansion is a convenient way to generate a list of strings that
share a common prefix or suffix.
Substring Capabilities
Bash allows new strings to be created by removing leading or trailing
substrings from existing variable values, or by specifying a starting
offset and length. Portions of variable values may be matched against
shell patterns and the matching portion removed or a new value
substituted.
Indirect Variable Expansion
Bash makes it easy to find the value of a shell variable whose name is
the value of another variable.
Expanded I/O Capabilities
Bash provides several input and output features not available in sh,
including the ability to:
o specify a file or file descriptor for both input and output
o read from or write to asynchronous processes using named pipes
o read lines ending in backslash
o display a prompt on the terminal before a read
o format menus and interpret responses to them
o echo lines exactly as input without escape processing
Control of Builtin Commands
Bash implements several builtin commands to give users more control
over which commands are executed. The enable builtin allows other
builtin commands to be selectively enabled or disabled. The command
and builtin builtins change the order in which the shell searches for
commands.
On systems that provide dynamic loading, new builtins may be loaded
into a running shell from a shared object file. These new builtins
have access to all of the shell facilities.
Help
Bash includes a built-in help facility.
Shell Optional Behavior
There is a great deal of customizable shell behavior. The shopt
builtin command provides a unified interface that allows users to
alter shell defaults.
Prompt Customization
Bash allows the primary and secondary prompts to be customized by
interpreting a number of backslash-escaped special characters.
Parameter and variable expansion is also performed on the values of
the primary and secondary prompt strings before they are displayed.
Security
Bash provides a restricted shell environment. It is also possible to
control the execution of setuid/setgid scripts.
Directory Stack
Bash provides a `directory stack', to which directories may be added
and removed. The current directory may be changed to any directory in
the stack. It is easy to toggle between two directories in the stack.
The directory stack may be saved and restored across different shell
invocations.
POSIX Mode
Bash is nearly completely conformant to POSIX.2. POSIX mode changes
those few areas where the Bash default behavior differs from the
standard to match the standard. In POSIX mode, Bash is POSIX.2
compliant.
Internationalization
Bash provides a new quoting syntax that allows strings to be
translated according to the current locale. The locale in which the
shell itself runs may also be changed, so that the shell messages
themselves may be language-specific.
The command-line editing facilities allow the input of eight-bit
characters, so most of the ISO-8859 family of character sets are
supported.
Command Timing
Bash allows external commands, shell builtin commands and shell functions
to be timed. The format used to display the timing information may be
changed by the user.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,352 @@
Platform-Specific Configuration and Operation Notes [very dated]
====================================================================
1. configure --without-gnu-malloc on:
alpha running OSF/1, Linux, or NetBSD (malloc needs 8-byte alignment;
bash malloc has 8-byte alignment now, but I have no alphas to test on)
next running NeXT/OS; machines running Openstep
all machines running SunOS YP code: SunOS4, SunOS5, HP/UX, if you
have problems with username completion or tilde expansion for
usernames found via YP/NIS
linux (optional, but don't do it if you're using Doug Lea's malloc)
QNX 4.2
other OSF/1 machines (KSR/1, HP, IBM AIX/ESA)
AIX
sparc SVR4, SVR4.2 (ICL reference port)
DG/UX
Cray
Haiku OS
NetBSD/sparc (malloc needs 8-byte alignment; bash malloc has 8-byte
alignment now, but I have no NetBSD machines to test on)
BSD/OS 2.1, 3.x if you want to use loadable builtins
Motorola m68k machines running System V.3. There is a file descriptor
leak caused by using the bash malloc because closedir(3) needs to read
freed memory to find the file descriptor to close
2. Configure using shlicc2 on BSD/OS 2.1 and BSD/OS 3.x to use loadable
builtins
3. Bash cannot be built in a directory separate from the source directory
using configure --srcdir=... unless the version of `make' you're using
does $VPATH handling right. The script support/mkclone can be used to
create a `build tree' using symlinks to get around this.
4. I've had reports that username completion (as well as tilde expansion
and \u prompt expansion) does not work on IRIX 5.3 when linking with
-lnsl. This is only a problem when you're running NIS, since
apparently -lnsl supports only /etc/passwd and not the NIS functions
for retrieving usernames and passwords. Editing the Makefile after
configure runs and removing the `-lnsl' from the assignment to `LIBS'
fixes the problem.
5. There is a problem with the `makewhatis' script in older (pre-7.0)
versions of Red Hat Linux. Running `makewhatis' with bash-2.0 or
later versions results in error messages like this:
/usr/sbin/makewhatis: cd: manpath: No such file or directory
/usr/sbin/makewhatis: manpath/whatis: No such file or directory
chmod: manpath/whatis: No such file or directory
/usr/sbin/makewhatis: cd: catpath: No such file or directory
/usr/sbin/makewhatis: catpath/whatis: No such file or directory
chmod: catpath/whatis: No such file or directory
The problem is with `makewhatis'. Red Hat (and possibly other
Linux distributors) uses a construct like this in the code:
eval path=$"$pages"path
to do indirect variable expansion. This `happened to work' in
bash-1.14 and previous versions, but that was more an accident
of implementation than anything else -- it was never supported
and certainly is not portable.
Bash-2.0 has a new feature that gives a new meaning to $"...".
This is explained more completely in item 1 in the COMPAT file.
The three lines in the `makewhatis' script that need to be changed
look like this:
eval $topath=$"$topath":$name
[...]
eval path=$"$pages"path
[...]
eval path=$"$pages"path
The portable way to write this code is
eval $topath="\$$topath":$name
eval path="\$$pages"path
eval path="\$$pages"path
You could also experiment with another new bash feature: ${!var}.
This does indirect variable expansion, making the use of eval
unnecessary.
6. There is a problem with syslogd on many Linux distributions (Red Hat
and Slackware are two that I have received reports about). syslogd
sends a SIGINT to its parent process, which is waiting for the daemon
to finish its initialization. The parent process then dies due to
the SIGINT, and bash reports it, causing unexpected console output
while the system is booting that looks something like
starting daemons: syslogd/etc/rc.d/rc.M: line 29: 38 Interrupt ${NET}/syslogd
Bash-2.0 reports events such as processes dying in scripts due to
signals when the standard output is a tty. Bash-1.14.x and previous
versions did not report such events.
This should probably be reported as a bug to whatever Linux distributor
people see the problem on. In my opinion, syslogd should be changed to
use some other method of communication, or the wrapper function (which
appeared to be `daemon' when I looked at it some time ago) or script
(which appeared to be `syslog') should catch SIGINT, since it's an
expected event, and exit cleanly.
7. Several people have reported that `dip' (a program for SLIP/PPP
on Linux) does not work with bash-2.0 installed as /bin/sh.
I don't run any Linux boxes myself, and do not have the dip
code handy to look at, but the `problem' with bash-2.0, as
it has been related to me, is that bash requires the `-p'
option to be supplied at invocation if it is to run setuid
or setgid.
This means, among other things, that setuid or setgid programs
which call system(3) (a horrendously bad practice in any case)
relinquish their setuid/setgid status in the child that's forked
to execute /bin/sh.
The following is an *unofficial* patch to bash-2.0 that causes it
to not require `-p' to run setuid or setgid if invoked as `sh'.
It has been reported to work on Linux. It will make your system
vulnerable to bogus system(3) calls in setuid executables.
--- ../bash-2.0.orig/shell.c Wed Dec 18 14:16:30 1996
+++ shell.c Fri Mar 7 13:12:03 1997
@@ -347,7 +347,7 @@
if (posixly_correct)
posix_initialize (posixly_correct);
- if (running_setuid && privileged_mode == 0)
+ if (running_setuid && privileged_mode == 0 && act_like_sh == 0)
disable_priv_mode ();
/* Need to get the argument to a -c option processed in the
8. Some people have asked about binding all of the keys in a PC-keyboard-
style numeric keypad to readline functions. Here's something I
received from the gnu-win32 list that may help. Insert the following
lines into ~/.inputrc:
# home key
"\e[1~":beginning-of-line
# insert key
"\e[2~":kill-whole-line
# del key
"\e[3~":delete-char
# end key
"\e[4~":end-of-line
# pgup key
"\e[5~":history-search-forward
# pgdn key
"\e[6~":history-search-backward
9. Hints for building under Minix 2.0 (Contributed by Terry R. McConnell,
<tmc@barnyard.syr.edu>)
The version of /bin/sh distributed with Minix is not up to the job of
running the configure script. The easiest solution is to swap /bin/sh
with /usr/bin/ash. Then use chmem(1) to increase the memory allocated
to /bin/sh. The following settings are known to work:
text data bss stack memory
63552 9440 3304 65536 141832 /bin/sh
If you have problems with make or yacc it may be worthwhile first to
install the GNU versions of these utilities before attempting to build
bash. (As of this writing, all of these utilities are available for the
i386 as pre-built binaries via anonymous ftp at math.syr.edu in the
pub/mcconnell/minix directory. Note that the GNU version of yacc is called
bison.)
Unless you want to see lots of warnings about old-style declarations,
do LOCAL_CFLAGS=-wo; export LOCAL_CFLAGS before running configure.
(These warnings are harmless, but annoying.)
configure will insist that you supply a host type. For example, do
./configure --host=i386-pc-minix.
Minix does not support the system calls required for a proper
implementation of ulimit(). The `ulimit' builtin will not be available.
Configure will fail to notice that many things like uid_t are indeed
typedef'd in <sys/types.h>, because it uses egrep for this purpose
and minix has no egrep. You could try making a link /usr/bin/egrep -->
/usr/bin/grep. Better is to install the GNU version of grep in
/usr/local/bin and make the link /usr/local/bin/egrep -->/usr/local/bin/grep.
(These must be hard links, of course, since Minix does not support
symbolic links.)
You will see many warnings of the form:
warning: unknown s_type: 98
I have no idea what this means, but it doesn't seem to matter.
10. If you do not have /usr/ccs/bin in your PATH when building on SunOS 5.x
(Solaris 2), the configure script will be unable to find `ar' and
`ranlib' (of course, ranlib is unnecessary). Make sure your $PATH
includes /usr/ccs/bin on SunOS 5.x. This generally manifests itself
with libraries not being built and make reporting errors like
`cr: not found' when library construction is attempted.
11. Building a statically-linked bash on Solaris 2.5.x, 2.6, 7, or 8 is
complicated.
It's not possible to build a completely statically-linked binary, since
part of the C library depends on dynamic linking. The following recipe
assumes that you're using gcc and the Solaris ld (/usr/ccs/bin/ld) on
Solaris 2.5.x or 2.6:
configure --enable-static-link
make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -ldl -Wl,-B,static'
This should result in a bash binary that depends only on libdl.so:
thor(2)$ ldd bash
libdl.so.1 => /usr/lib/libdl.so.1
If you're using the Sun C Compiler (Sun WorkShop C Compiler version
4.2 was what I used), you should be able to get away with using
configure --enable-static-link
make STATIC_LD= LOCAL_LIBS='-B dynamic -ldl -B static'
If you want to completely remove any dependence on /usr, perhaps
to put a copy of bash in /sbin and have it available when /usr is
not mounted, force the build process to use the shared dl.so library
in /etc/lib.
For gcc, this would be something like
configure --enable-static-link
make STATIC_LD= LOCAL_LIBS='-Wl,-B,dynamic -Wl,-R/etc/lib -ldl -Wl,-B,static'
For Sun's WS4.2 cc
configure --enable-static-link
make STATIC_LD= LOCAL_LIBS='-B dynamic -R/etc/lib -ldl -B static'
seems to work, at least on Solaris 2.5.1:
thor(2)$ ldd bash
libdl.so.1 => /etc/lib/libdl.so.1
On Solaris 7 (Solaris 8, using the version of gcc on the free software
CD-ROM), the following recipe appears to work for gcc:
configure --enable-static-link
make STATIC_LD='-Wl,-Bstatic' LOCAL_LIBS='-Wl,-Bdynamic -Wl,-R/etc/lib -ldl -Wl,-Bstatic'
thor.ins.cwru.edu(2)$ ldd bash
libdl.so.1 => /etc/lib/libdl.so.1
Make the analogous changes if you are running Sun's C Compiler.
I have received word that adding -L/etc/lib (or the equivalent
-Wl,-L/etc/lib) might also be necessary, in addition to the -R/etc/lib.
On later versions of Solaris, it may be necessary to add -lnsl before
-ldl; statically-linked versions of bash using libnsl are not guaranteed
to work correctly on future versions of Solaris.
12. Configuring bash to build it in a cross environment. Currently only
two native versions can be compiled this way, cygwin32 and x86 BeOS.
For BeOS, you would configure it like this:
export RANLIB=i586-beos-ranlib
export AR=i586-beos-ar
export CC=i586-beos-gcc
configure i586-beos
Similarly for cygwin32.
13. Bash-2.05 has reverted to the bash-2.03 behavior of honoring the current
locale setting when processing ranges within pattern matching bracket
expressions ([A-Z]). This is what POSIX.2 and SUSv2 specify.
The behavior of the matcher in bash-2.05 depends on the current LC_COLLATE
setting. Setting this variable to `C' or `POSIX' will result in the
traditional behavior ([A-Z] matches all uppercase ASCII characters).
Many other locales, including the en_US locale (the default on many US
versions of Linux) collate the upper and lower case letters like this:
AaBb...Zz
which means that [A-Z] matches every letter except `z'.
The portable way to specify upper case letters is [:upper:] instead of
A-Z; lower case may be specified as [:lower:] instead of a-z.
Look at the manual pages for setlocale(3), strcoll(3), and, if it is
present, locale(1). If you have locale(1), you can use it to find
your current locale information even if you do not have any of the
LC_ variables set.
My advice is to put
export LC_COLLATE=C
into /etc/profile and inspect any shell scripts run from cron for
constructs like [A-Z]. This will prevent things like
rm [A-Z]*
from removing every file in the current directory except those beginning
with `z' and still allow individual users to change the collation order.
Users may put the above command into their own profiles as well, of course.
14. Building on Interix (nee OpenNT), which Microsoft bought from Softway
Systems and has seemingly abandoned (thanks to Kevin Moore for this item).
1. cp cross-build/opennt.cache config.cache
2. If desired, edit pathnames.h to set the values of SYS_PROFILE and
DEFAULT_HOSTS_FILE appropriately.
3. export CONFIG_SHELL=$INTERIX_ROOT/bin/sh
4. ./configure --prefix=$INTERIX_ROOT/usr/local (or wherever you
want it).
5. make; make install; enjoy
15. Configure with `CC=xlc' if you don't have gcc on AIX 4.2 and later
versions. `xlc' running in `cc' mode has trouble compiling error.c.
16. Configure --disable-multibyte on NetBSD versions (1.4 through at least
1.6.1) that include wctype.h but do not define wctype_t.
17. Do NOT use bison-1.75. It builds a non-working parser. The most
obvious effect is that constructs like "for i; do echo $i; done" don't
loop over the positional parameters.
18. I have received reports that using -O2 with the MIPSpro results in a
binary that fails in strange ways. Using -O1 seems to work.
19. There is special handling to ensure the shell links against static
versions of the included readline and history libraries on Mac OS X;
Apple ships inadequate dynamic libreadline and libhistory "replacements"
as standard libraries.
20. If you're on a system like SGI Irix, and you get an error about not
being able to refer to a dynamic symbol
(ld: non-dynamic relocations refer to dynamic symbol PC), add
-DNEED_EXTERN_PC to the LOCAL_CFLAGS variable in lib/readline/Makefile.in
and rebuild.

View file

@ -0,0 +1,264 @@
6.11 Bash POSIX Mode
====================
Starting Bash with the '--posix' command-line option or executing 'set
-o posix' while Bash is running will cause Bash to conform more closely
to the POSIX standard by changing the behavior to match that specified
by POSIX in areas where the Bash default differs.
When invoked as 'sh', Bash enters POSIX mode after reading the startup
files.
The following list is what's changed when 'POSIX mode' is in effect:
1. Bash ensures that the 'POSIXLY_CORRECT' variable is set.
2. When a command in the hash table no longer exists, Bash will
re-search '$PATH' to find the new location. This is also available
with 'shopt -s checkhash'.
3. Bash will not insert a command without the execute bit set into the
command hash table, even if it returns it as a (last-ditch) result
from a '$PATH' search.
4. The message printed by the job control code and builtins when a job
exits with a non-zero status is 'Done(status)'.
5. The message printed by the job control code and builtins when a job
is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example,
'SIGTSTP'.
6. Alias expansion is always enabled, even in non-interactive shells.
7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
8. Alias expansion is performed when initially parsing a command
substitution. The default mode generally defers it, when enabled,
until the command substitution is executed. This means that
command substitution will not expand aliases that are defined after
the command substitution is initially parsed (e.g., as part of a
function definition).
9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
and '!!' to '!' are enabled, and parameter expansion is performed
on the values of 'PS1' and 'PS2' regardless of the setting of the
'promptvars' option.
10. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
11. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
12. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
13. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
14. Redirection operators do not perform word splitting on the word in
the redirection.
15. Function names must be valid shell 'name's. That is, they may not
contain characters other than letters, digits, and underscores, and
may not start with a digit. Declaring a function with an invalid
name causes a fatal syntax error in non-interactive shells.
16. Function names may not be the same as one of the POSIX special
builtins.
17. POSIX special builtins are found before shell functions during
command lookup.
18. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
19. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
20. The 'time' reserved word may be used by itself as a command. When
used in this way, it displays timing statistics for the shell and
its completed children. The 'TIMEFORMAT' variable controls the
format of the timing information.
21. When parsing and expanding a ${...} expansion that appears within
double quotes, single quotes are no longer special and cannot be
used to quote a closing brace or other special character, unless
the operator is one of those defined to perform pattern removal.
In this case, they do not have to appear as matched pairs.
22. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
23. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
24. If a POSIX special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
the POSIX standard, and include things like passing incorrect
options, redirection errors, variable assignment errors for
assignments preceding the command name, and so on.
25. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
special builtin, but not with any other simple command. For any
other simple command, the shell aborts execution of that command,
and execution continues at the top level ("the shell shall not
perform any further processing of the command in which the error
occurred").
27. A non-interactive shell exits with an error status if the
iteration variable in a 'for' statement or the selection variable
in a 'select' statement is a readonly variable.
28. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
29. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
30. Non-interactive shells exit if a parameter expansion error occurs.
31. Non-interactive shells exit if there is a syntax error in a script
read with the '.' or 'source' builtins, or in a string processed by
the 'eval' builtin.
32. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
33. Expanding the '*' special parameter in a pattern context where the
expansion is double-quoted does not treat the '$*' as if it were
double-quoted.
34. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
35. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
36. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
37. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
38. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
39. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
40. The 'trap' builtin displays signal names without the leading
'SIG'.
41. The 'trap' builtin doesn't check the first argument for a possible
signal specification and revert the signal handling to the original
disposition if it is, unless that argument consists solely of
digits and is a valid signal number. If users want to reset the
handler for a given signal to the original disposition, they should
use '-' as the first argument.
42. 'trap -p' displays signals whose dispositions are set to SIG_DFL
and those that were ignored when the shell started.
43. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
44. Enabling POSIX mode has the effect of setting the
'inherit_errexit' option, so subshells spawned to execute command
substitutions inherit the value of the '-e' option from the parent
shell. When the 'inherit_errexit' option is not enabled, Bash
clears the '-e' option in such subshells.
45. Enabling POSIX mode has the effect of setting the 'shift_verbose'
option, so numeric arguments to 'shift' that exceed the number of
positional parameters will result in an error message.
46. When the 'alias' builtin displays alias definitions, it does not
display them with a leading 'alias ' unless the '-p' option is
supplied.
47. When the 'set' builtin is invoked without options, it does not
display shell function names and definitions.
48. When the 'set' builtin is invoked without options, it displays
variable values without quotes, unless they contain shell
metacharacters, even if the result contains nonprinting characters.
49. When the 'cd' builtin is invoked in logical mode, and the pathname
constructed from '$PWD' and the directory name supplied as an
argument does not refer to an existing directory, 'cd' will fail
instead of falling back to physical mode.
50. When the 'cd' builtin cannot change a directory because the length
of the pathname constructed from '$PWD' and the directory name
supplied as an argument exceeds 'PATH_MAX' when all symbolic links
are expanded, 'cd' will fail instead of attempting to use only the
supplied directory name.
51. The 'pwd' builtin verifies that the value it prints is the same as
the current directory, even if it is not asked to check the file
system with the '-P' option.
52. When listing the history, the 'fc' builtin does not include an
indication of whether or not a history entry has been modified.
53. The default editor used by 'fc' is 'ed'.
54. The 'type' and 'command' builtins will not report a non-executable
file as having been found, though the shell will attempt to execute
such a file if it is the only so-named file found in '$PATH'.
55. The 'vi' editing mode will invoke the 'vi' editor directly when
the 'v' command is run, instead of checking '$VISUAL' and
'$EDITOR'.
56. When the 'xpg_echo' option is enabled, Bash does not attempt to
interpret any arguments to 'echo' as options. Each argument is
displayed, after escape characters are converted.
57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
and '-f' options.
58. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
interrupt the 'wait' builtin and cause it to return immediately.
The trap command is run once for each child that exits.
59. The 'read' builtin may be interrupted by a signal for which a trap
has been set. If Bash receives a trapped signal while executing
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
60. The 'printf' builtin uses 'double' (via 'strtod') to convert
arguments corresponding to floating point conversion specifiers,
instead of 'long double' if it's available. The 'L' length
modifier forces 'printf' to use 'long double' if it's available.
61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
even when in POSIX mode. Specifically:
1. The 'fc' builtin checks '$EDITOR' as a program to edit history
entries if 'FCEDIT' is unset, rather than defaulting directly to
'ed'. 'fc' uses 'ed' if 'EDITOR' is unset.
2. As noted above, Bash requires the 'xpg_echo' option to be enabled
for the 'echo' builtin to be fully conformant.
Bash can be configured to be POSIX-conformant by default, by specifying
the '--enable-strict-posix-default' to 'configure' when building (*note
Optional Features::).

View file

@ -0,0 +1,52 @@
6.10 The Restricted Shell
=========================
If Bash is started with the name 'rbash', or the '--restricted' or '-r'
option is supplied at invocation, the shell becomes restricted. A
restricted shell is used to set up an environment more controlled than
the standard shell. A restricted shell behaves identically to 'bash'
with the exception that the following are disallowed or not performed:
* Changing directories with the 'cd' builtin.
* Setting or unsetting the values of the 'SHELL', 'PATH', 'HISTFILE',
'ENV', or 'BASH_ENV' variables.
* Specifying command names containing slashes.
* Specifying a filename containing a slash as an argument to the '.'
builtin command.
* Specifying a filename containing a slash as an argument to the
'history' builtin command.
* Specifying a filename containing a slash as an argument to the '-p'
option to the 'hash' builtin command.
* Importing function definitions from the shell environment at
startup.
* Parsing the value of 'SHELLOPTS' from the shell environment at
startup.
* Redirecting output using the '>', '>|', '<>', '>&', '&>', and '>>'
redirection operators.
* Using the 'exec' builtin to replace the shell with another command.
* Adding or deleting builtin commands with the '-f' and '-d' options
to the 'enable' builtin.
* Using the 'enable' builtin command to enable disabled shell
builtins.
* Specifying the '-p' option to the 'command' builtin.
* Turning off restricted mode with 'set +r' or 'shopt -u
restricted_shell'.
These restrictions are enforced after any startup files are read.
When a command that is found to be a shell script is executed (*note
Shell Scripts::), 'rbash' turns off any restrictions in the shell
spawned to execute the script.
The restricted shell mode is only one component of a useful restricted
environment. It should be accompanied by setting 'PATH' to a value that
allows execution of only a few verified commands (commands that allow
shell escapes are particularly vulnerable), changing the current
directory to a non-writable directory other than '$HOME' after login,
not allowing the restricted shell to execute shell scripts, and cleaning
the environment of variables that cause some commands to modify their
behavior (e.g., 'VISUAL' or 'PAGER').
Modern systems provide more secure ways to implement a restricted
environment, such as 'jails', 'zones', or 'containers'.

View file

@ -0,0 +1,112 @@
Introduction
============
This is GNU Bash, version 5.2. Bash is the GNU Project's Bourne
Again SHell, a complete implementation of the POSIX shell spec,
but also with interactive command line editing, job control on
architectures that support it, csh-like features such as history
substitution and brace expansion, and a slew of other features.
For more information on the features of Bash that are new to this
type of shell, see the file `doc/bashref.texi'. There is also a
large Unix-style man page. The man page is the definitive description
of the shell's features.
See the file POSIX for a discussion of how the Bash defaults differ
from the POSIX spec and a description of the Bash `posix mode'.
There are some user-visible incompatibilities between this version
of Bash and previous widely-distributed versions, bash-4.4, bash-5.0,
and bash-5.1. For details, see the file COMPAT. The NEWS file tersely
lists features that are new in this release.
Bash is free software, distributed under the terms of the [GNU] General
Public License as published by the Free Software Foundation,
version 3 of the License (or any later version). For more information,
see the file COPYING.
A number of frequently-asked questions are answered in the file
`doc/FAQ'. (That file is no longer updated.)
To compile Bash, type `./configure', then `make'. Bash auto-configures
the build process, so no further intervention should be necessary. Bash
builds with `gcc' by default if it is available. If you want to use `cc'
instead, type
CC=cc ./configure
if you are using a Bourne-style shell. If you are not, the following
may work:
env CC=cc ./configure
Read the file INSTALL in this directory for more information about how
to customize and control the build process. The file NOTES contains
platform-specific installation and configuration information.
If you are a csh user and wish to convert your csh aliases to Bash
aliases, you may wish to use the script `examples/misc/alias-conv.sh'
as a starting point. The script `examples/misc/cshtobash' is a
more ambitious script that attempts to do a more complete job.
Reporting Bugs
==============
Bug reports for bash should be sent to:
bug-bash@gnu.org
using the `bashbug' program that is built and installed at the same
time as bash.
The discussion list `bug-bash@gnu.org' often contains information
about new ports of Bash, or discussions of new features or behavior
changes that people would like. This mailing list is also available
as a usenet newsgroup: gnu.bash.bug.
When you send a bug report, please use the `bashbug' program that is
built at the same time as bash. If bash fails to build, try building
bashbug directly with `make bashbug'. If you cannot build `bashbug',
please send mail to bug-bash@gnu.org with the following information:
* the version number and release status of Bash (e.g., 2.05a-release)
* the machine and OS that it is running on (you may run
`bashversion -l' from the bash build directory for this information)
* a list of the compilation flags or the contents of `config.h', if
appropriate
* a description of the bug
* a recipe for recreating the bug reliably
* a fix for the bug if you have one!
The `bashbug' program includes much of this automatically.
Questions and requests for help with bash and bash programming may be
sent to the help-bash@gnu.org mailing list.
If you would like to contact the Bash maintainers directly, send mail
to bash-maintainers@gnu.org.
While the Bash maintainers do not promise to fix all bugs, we would
like this shell to be the best that we can make it.
Other Packages
==============
This distribution includes, in examples/bash-completion, a recent version
of the `bash-completion' package, which provides programmable completions
for a number of commands. It's available as a package in many distributions,
and that is the first place from which to obtain it.
The latest version of bash-completion is always available from
https://github.com/scop/bash-completion.
If it's not a package from your vendor, you may install the included version.
Enjoy!
Chet Ramey
chet.ramey@case.edu
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without any warranty.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,356 @@
------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.8 of 13 July 2019
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------
0.9.0
~~~~~
First version.
0.9.0a
~~~~~~
Removed 'ranlib' from Makefile, since most modern Unix-es
don't need it, or even know about it.
0.9.0b
~~~~~~
Fixed a problem with error reporting in bzip2.c. This does not effect
the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the
program proper) compress and decompress correctly, but give misleading
error messages (internal panics) when an I/O error occurs, instead of
reporting the problem correctly. This shouldn't give any data loss
(as far as I can see), but is confusing.
Made the inline declarations disappear for non-GCC compilers.
0.9.0c
~~~~~~
Fixed some problems in the library pertaining to some boundary cases.
This makes the library behave more correctly in those situations. The
fixes apply only to features (calls and parameters) not used by
bzip2.c, so the non-fixedness of them in previous versions has no
effect on reliability of bzip2.c.
In bzlib.c:
* made zero-length BZ_FLUSH work correctly in bzCompress().
* fixed bzWrite/bzRead to ignore zero-length requests.
* fixed bzread to correctly handle read requests after EOF.
* wrong parameter order in call to bzDecompressInit in
bzBuffToBuffDecompress. Fixed.
In compress.c:
* changed setting of nGroups in sendMTFValues() so as to
do a bit better on small files. This _does_ effect
bzip2.c.
0.9.5a
~~~~~~
Major change: add a fallback sorting algorithm (blocksort.c)
to give reasonable behaviour even for very repetitive inputs.
Nuked --repetitive-best and --repetitive-fast since they are
no longer useful.
Minor changes: mostly a whole bunch of small changes/
bugfixes in the driver (bzip2.c). Changes pertaining to the
user interface are:
allow decompression of symlink'd files to stdout
decompress/test files even without .bz2 extension
give more accurate error messages for I/O errors
when compressing/decompressing to stdout, don't catch control-C
read flags from BZIP2 and BZIP environment variables
decline to break hard links to a file unless forced with -f
allow -c flag even with no filenames
preserve file ownerships as far as possible
make -s -1 give the expected block size (100k)
add a flag -q --quiet to suppress nonessential warnings
stop decoding flags after --, so files beginning in - can be handled
resolved inconsistent naming: bzcat or bz2cat ?
bzip2 --help now returns 0
Programming-level changes are:
fixed syntax error in GET_LL4 for Borland C++ 5.02
let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC}
fix overshoot of mode-string end in bzopen_or_bzdopen
wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... }
close file handles under all error conditions
added minor mods so it compiles with DJGPP out of the box
fixed Makefile so it doesn't give problems with BSD make
fix uninitialised memory reads in dlltest.c
0.9.5b
~~~~~~
Open stdin/stdout in binary mode for DJGPP.
0.9.5c
~~~~~~
Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1
version could cause the sorted order to be wrong in some extremely
obscure cases. Also changed setting of quadrant in blocksort.c.
0.9.5d
~~~~~~
The only functional change is to make bzlibVersion() in the library
return the correct string. This has no effect whatsoever on the
functioning of the bzip2 program or library. Added a couple of casts
so the library compiles without warnings at level 3 in MS Visual
Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other
changes are minor documentation changes.
1.0
~~~
Several minor bugfixes and enhancements:
* Large file support. The library uses 64-bit counters to
count the volume of data passing through it. bzip2.c
is now compiled with -D_FILE_OFFSET_BITS=64 to get large
file support from the C library. -v correctly prints out
file sizes greater than 4 gigabytes. All these changes have
been made without assuming a 64-bit platform or a C compiler
which supports 64-bit ints, so, except for the C library
aspect, they are fully portable.
* Decompression robustness. The library/program should be
robust to any corruption of compressed data, detecting and
handling _all_ corruption, instead of merely relying on
the CRCs. What this means is that the program should
never crash, given corrupted data, and the library should
always return BZ_DATA_ERROR.
* Fixed an obscure race-condition bug only ever observed on
Solaris, in which, if you were very unlucky and issued
control-C at exactly the wrong time, both input and output
files would be deleted.
* Don't run out of file handles on test/decompression when
large numbers of files have invalid magic numbers.
* Avoid library namespace pollution. Prefix all exported
symbols with BZ2_.
* Minor sorting enhancements from my DCC2000 paper.
* Advance the version number to 1.0, so as to counteract the
(false-in-this-case) impression some people have that programs
with version numbers less than 1.0 are in some way, experimental,
pre-release versions.
* Create an initial Makefile-libbz2_so to build a shared library.
Yes, I know I should really use libtool et al ...
* Make the program exit with 2 instead of 0 when decompression
fails due to a bad magic number (ie, an invalid bzip2 header).
Also exit with 1 (as the manual claims :-) whenever a diagnostic
message would have been printed AND the corresponding operation
is aborted, for example
bzip2: Output file xx already exists.
When a diagnostic message is printed but the operation is not
aborted, for example
bzip2: Can't guess original name for wurble -- using wurble.out
then the exit value 0 is returned, unless some other problem is
also detected.
I think it corresponds more closely to what the manual claims now.
1.0.1
~~~~~
* Modified dlltest.c so it uses the new BZ2_ naming scheme.
* Modified makefile-msc to fix minor build probs on Win2k.
* Updated README.COMPILATION.PROBLEMS.
There are no functionality changes or bug fixes relative to version
1.0.0. This is just a documentation update + a fix for minor Win32
build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is
utterly pointless. Don't bother.
1.0.2
~~~~~
A bug fix release, addressing various minor issues which have appeared
in the 18 or so months since 1.0.1 was released. Most of the fixes
are to do with file-handling or documentation bugs. To the best of my
knowledge, there have been no data-loss-causing bugs reported in the
compression/decompression engine of 1.0.0 or 1.0.1.
Note that this release does not improve the rather crude build system
for Unix platforms. The general plan here is to autoconfiscate/
libtoolise 1.0.2 soon after release, and release the result as 1.1.0
or perhaps 1.2.0. That, however, is still just a plan at this point.
Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in
parentheses.
* Fix an infinite segfault loop in 1.0.1 when a directory is
encountered in -f (force) mode.
(Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt)
* Avoid double fclose() of output file on certain I/O error paths.
(Solar Designer)
* Don't fail with internal error 1007 when fed a long stream (> 48MB)
of byte 251. Also print useful message suggesting that 1007s may be
caused by bad memory.
(noticed by Juan Pedro Vallejo, fixed by me)
* Fix uninitialised variable silly bug in demo prog dlltest.c.
(Jorj Bauer)
* Remove 512-MB limitation on recovered file size for bzip2recover
on selected platforms which support 64-bit ints. At the moment
all GCC supported platforms, and Win32.
(me, Alson van der Meulen)
* Hard-code header byte values, to give correct operation on platforms
using EBCDIC as their native character set (IBM's OS/390).
(Leland Lucius)
* Copy file access times correctly.
(Marty Leisner)
* Add distclean and check targets to Makefile.
(Michael Carmack)
* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS).
(Rich Ireland, Bo Thorsen)
* Pass -p (create parent dirs as needed) to mkdir during make install.
(Jeremy Fusco)
* Dereference symlinks when copying file permissions in -f mode.
(Volker Schmidt)
* Majorly simplify implementation of uInt64_qrm10.
(Bo Lindbergh)
* Check the input file still exists before deleting the output one,
when aborting in cleanUpAndFail().
(Joerg Prante, Robert Linden, Matthias Krings)
Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer
of bzip2:
* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore.
* Spelling changes and minor enhancements in bzip2.1.
* Avoid race condition between creating the output file and setting its
interim permissions safely, by using fopen_output_safely().
No changes to bzip2recover since there is no issue with file
permissions there.
* do not print senseless report with -v when compressing an empty
file.
* bzcat -f works on non-bzip2 files.
* do not try to escape shell meta-characters on unix (the shell takes
care of these).
* added --fast and --best aliases for -1 -9 for gzip compatibility.
1.0.3 (15 Feb 05)
~~~~~~~~~~~~~~~~~
Fixes some minor bugs since the last version, 1.0.2.
* Further robustification against corrupted compressed data.
There are currently no known bitstreams which can cause the
decompressor to crash, loop or access memory which does not
belong to it. If you are using bzip2 or the library to
decompress bitstreams from untrusted sources, an upgrade
to 1.0.3 is recommended. This fixes CAN-2005-1260.
* The documentation has been converted to XML, from which html
and pdf can be derived.
* Various minor bugs in the documentation have been fixed.
* Fixes for various compilation warnings with newer versions of
gcc, and on 64-bit platforms.
* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
This has been fixed.
1.0.4 (20 Dec 06)
~~~~~~~~~~~~~~~~~
Fixes some minor bugs since the last version, 1.0.3.
* Fix file permissions race problem (CAN-2005-0953).
* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD
scan.
* 'const'/prototype cleanups in the C code.
* Change default install location to /usr/local, and handle multiple
'make install's without error.
* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758
to the extent that applies to bzgrep.
* Use 'mktemp' rather than 'tempfile' in bzdiff.
* Tighten up a couple of assertions in blocksort.c following automated
analysis.
* Fix minor doc/comment bugs.
1.0.5 (10 Dec 07)
~~~~~~~~~~~~~~~~~
Security fix only. Fixes CERT-FI 20469 as it applies to bzip2.
1.0.6 (6 Sept 10)
~~~~~~~~~~~~~~~~~
* Security fix for CVE-2010-0405. This was reported by Mikolaj
Izdebski.
* Make the documentation build on Ubuntu 10.04
1.0.7 (27 Jun 19)
~~~~~~~~~~~~~~~~~
* Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH
* bzip2: Fix return value when combining --test,-t and -q.
* bzip2recover: Fix buffer overflow for large argv[0]
* bzip2recover: Fix use after free issue with outFile (CVE-2016-3189)
* Make sure nSelectors is not out of range (CVE-2019-12900)
1.0.8 (13 Jul 19)
~~~~~~~~~~~~~~~~~
* Accept as many selectors as the file format allows.
This relaxes the fix for CVE-2019-12900 from 1.0.7
so that bzip2 allows decompression of bz2 files that
use (too) many selectors again.
* Fix handling of large (> 4GB) files on Windows.
* Cleanup of bzdiff and bzgrep scripts so they don't use
any bash extensions and handle multiple archives correctly.
* There is now a bz2-files testsuite at
https://sourceware.org/git/bzip2-tests.git

View file

@ -0,0 +1,42 @@
--------------------------------------------------------------------------
This program, "bzip2", the associated library "libbzip2", and all
documentation, are copyright (C) 1996-2019 Julian R Seward. All
rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Julian Seward, jseward@acm.org
bzip2/libbzip2 version 1.0.8 of 13 July 2019
--------------------------------------------------------------------------

View file

@ -0,0 +1,196 @@
This is the README for bzip2/libzip2.
This version is fully compatible with the previous public releases.
------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.8 of 13 July 2019
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------
Complete documentation is available in Postscript form (manual.ps),
PDF (manual.pdf) or html (manual.html). A plain-text version of the
manual page is available as bzip2.txt.
HOW TO BUILD -- UNIX
Type 'make'. This builds the library libbz2.a and then the programs
bzip2 and bzip2recover. Six self-tests are run. If the self-tests
complete ok, carry on to installation:
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
/usr/local/include, type
make install
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
make install PREFIX=/xxx/yyy
If you are (justifiably) paranoid and want to see what 'make install'
is going to do, you can first do
make -n install or
make -n install PREFIX=/xxx/yyy respectively.
The -n instructs make to show the commands it would execute, but not
actually execute them.
HOW TO BUILD -- UNIX, shared library libbz2.so.
Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for
Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims
that it works for any other platform, though I suspect it probably
will work for most platforms employing both ELF and gcc.
bzip2-shared, a client of the shared library, is also built, but not
self-tested. So I suggest you also build using the normal Makefile,
since that conducts a self-test. A second reason to prefer the
version statically linked to the library is that, on x86 platforms,
building shared objects makes a valuable register (%ebx) unavailable
to gcc, resulting in a slowdown of 10%-20%, at least for bzip2.
Important note for people upgrading .so's from 0.9.0/0.9.5 to version
1.0.X. All the functions in the library have been renamed, from (eg)
bzCompress to BZ2_bzCompress, to avoid namespace pollution.
Unfortunately this means that the libbz2.so created by
Makefile-libbz2_so will not work with any program which used an older
version of the library. I do encourage library clients to make the
effort to upgrade to use version 1.0, since it is both faster and more
robust than previous versions.
HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
It's difficult for me to support compilation on all these platforms.
My approach is to collect binaries for these platforms, and put them
on the master web site (https://sourceware.org/bzip2/). Look there. However
(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
unmodified with MS Visual C. If you have difficulties building, you
might want to read README.COMPILATION.PROBLEMS.
At least using MS Visual C++ 6, you can build from the unmodified
sources by issuing, in a command shell:
nmake -f makefile.msc
(you may need to first run the MSVC-provided script VCVARS32.BAT
so as to set up paths to the MSVC tools correctly).
VALIDATION
Correct operation, in the sense that a compressed file can always be
decompressed to reproduce the original, is obviously of paramount
importance. To validate bzip2, I used a modified version of Mark
Nelson's churn program. Churn is an automated test driver which
recursively traverses a directory structure, using bzip2 to compress
and then decompress each file it encounters, and checking that the
decompressed data is the same as the original.
Please read and be aware of the following:
WARNING:
This program and library (attempts to) compress data by
performing several non-trivial transformations on it.
Unless you are 100% familiar with *all* the algorithms
contained herein, and with the consequences of modifying them,
you should NOT meddle with the compression or decompression
machinery. Incorrect changes can and very likely *will*
lead to disastrous loss of data.
DISCLAIMER:
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
Every compression of a file implies an assumption that the
compressed file can be decompressed to reproduce the original.
Great efforts in design, coding and testing have been made to
ensure that this program works correctly. However, the complexity
of the algorithms, and, in particular, the presence of various
special cases in the code which occur with very low but non-zero
probability make it impossible to rule out the possibility of bugs
remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS
PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
That is not to say this program is inherently unreliable.
Indeed, I very much hope the opposite is true. bzip2/libbzip2
has been carefully constructed and extensively tested.
PATENTS:
To the best of my knowledge, bzip2/libbzip2 does not use any
patented algorithms. However, I do not have the resources
to carry out a patent search. Therefore I cannot give any
guarantee of the above statement.
WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
* Approx 10% faster compression, 30% faster decompression
* -t (test mode) is a lot quicker
* Can decompress concatenated compressed files
* Programming interface, so programs can directly read/write .bz2 files
* Less restrictive (BSD-style) licensing
* Flag handling more compatible with GNU gzip
* Much more documentation, i.e., a proper user manual
* Hopefully, improved portability (at least of the library)
WHAT'S NEW IN 0.9.5 ?
* Compression speed is much less sensitive to the input
data than in previous versions. Specifically, the very
slow performance caused by repetitive data is fixed.
* Many small improvements in file and flag handling.
* A Y2K statement.
WHAT'S NEW IN 1.0.x ?
See the CHANGES file.
I hope you find bzip2 useful. Feel free to contact the developers at
bzip2-devel@sourceware.org
if you have any suggestions or queries. Many people mailed me with
comments, suggestions and patches after the releases of bzip-0.15,
bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
feedback. I thank you for your comments.
bzip2's "home" is https://sourceware.org/bzip2/
Julian Seward
jseward@acm.org
Cambridge, UK.
18 July 1996 (version 0.15)
25 August 1996 (version 0.21)
7 August 1997 (bzip2, version 0.1)
29 August 1997 (bzip2, version 0.1pl2)
23 August 1998 (bzip2, version 0.9.0)
8 June 1999 (bzip2, version 0.9.5)
4 Sept 1999 (bzip2, version 0.9.5d)
5 May 2000 (bzip2, version 1.0pre8)
30 December 2001 (bzip2, version 1.0.2pre1)
15 February 2005 (bzip2, version 1.0.3)
20 December 2006 (bzip2, version 1.0.4)
10 December 2007 (bzip2, version 1.0.5)
6 Sept 2010 (bzip2, version 1.0.6)
27 June 2019 (bzip2, version 1.0.7)
13 July 2019 (bzip2, version 1.0.8)

View file

@ -0,0 +1,84 @@
c-ares is based on ares, and these are the people that have worked on it since
the fork was made:
Albert Chin
Alex Loukissas
Alexander Klauer
Alexander Lazic
Alexey Simak
Andreas Rieke
Andrew Andkjar
Andrew Ayer
Andrew C. Morrow
Ashish Sharma
Ben Greear
Ben Noordhuis
BogDan Vatra
Brad House
Brad Spencer
Bram Matthys
Chris Araman
Dan Fandrich
Daniel Johnson
Daniel Stenberg
David Drysdale
David Stuart
Denis Bilenko
Dima Tisnek
Dirk Manske
Dominick Meglio
Doug Goldstein
Doug Kwan
Duncan Wilcox
Eino Tuominen
Erik Kline
Fedor Indutny
Frederic Germain
Geert Uytterhoeven
George Neill
Gisle Vanem
Google LLC
Gregor Jasny
Guenter Knauf
Guilherme Balena Versiani
Gunter Knauf
Henrik Stoerner
Jakub Hrozek
James Bursa
Jérémy Lal
John Schember
Keith Shaw
Lei Shi
Marko Kreen
Michael Wallner
Mike Crowe
Nick Alcock
Nick Mathewson
Nicolas "Pixel" Noble
Ning Dong
Oleg Pudeyev
Patrick Valsecchi
Patrik Thunstrom
Paul Saab
Peter Pentchev
Phil Blundell
Poul Thomas Lomholt
Ravi Pratap
Robin Cornelius
Saúl Ibarra Corretgé
Sebastian at basti79.de
Shmulik Regev
Stefan Bühler
Steinar H. Gunderson
Svante Karlsson
Tofu Linden
Tom Hughes
Tor Arntsen
Viktor Szakats
Vlad Dinulescu
William Ahern
Yang Tse
hpopescu at ixiacom.com
liren at vivisimo.com
nordsturm
saghul

View file

@ -0,0 +1,472 @@
```
___ __ _ _ __ ___ ___
/ __| ___ / _` | '__/ _ \/ __|
| (_ |___| (_| | | | __/\__ \
\___| \__,_|_| \___||___/
How To Compile
```
Installing Binary Packages
==========================
Lots of people download binary distributions of c-ares. This document
does not describe how to install c-ares using such a binary package.
This document describes how to compile, build and install c-ares from
source code.
Building from Git
=================
If you get your code off a Git repository rather than an official
release tarball, see the [GIT-INFO](GIT-INFO) file in the root directory
for specific instructions on how to proceed.
In particular, if not using CMake you will need to run `./buildconf` (Unix) or
`buildconf.bat` (Windows) to generate build files, and for the former
you will need a local installation of Autotools. If using CMake the steps are
the same for both Git and official release tarballs.
AutoTools Build
===============
### General Information, works on most Unix Platforms (Linux, FreeBSD, etc.)
A normal Unix installation is made in three or four steps (after you've
unpacked the source archive):
./configure
make
make install
You probably need to be root when doing the last command.
If you have checked out the sources from the git repository, read the
[GIT-INFO](GIT-INFO) on how to proceed.
Get a full listing of all available configure options by invoking it like:
./configure --help
If you want to install c-ares in a different file hierarchy than /usr/local,
you need to specify that already when running configure:
./configure --prefix=/path/to/c-ares/tree
If you happen to have write permission in that directory, you can do `make
install` without being root. An example of this would be to make a local
installation in your own home directory:
./configure --prefix=$HOME
make
make install
### More Options
To force configure to use the standard cc compiler if both cc and gcc are
present, run configure like
CC=cc ./configure
# or
env CC=cc ./configure
To force a static library compile, disable the shared library creation
by running configure like:
./configure --disable-shared
If you're a c-ares developer and use gcc, you might want to enable more
debug options with the `--enable-debug` option.
### Special Cases
Some versions of uClibc require configuring with `CPPFLAGS=-D_GNU_SOURCE=1`
to get correct large file support.
The Open Watcom C compiler on Linux requires configuring with the variables:
./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \
RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra
### CROSS COMPILE
(This section was graciously brought to us by Jim Duey, with additions by
Dan Fandrich)
Download and unpack the c-ares package.
`cd` to the new directory. (e.g. `cd c-ares-1.7.6`)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the `--host` and
`--build` parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
```sh
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
./configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
```
You may also need to provide a parameter like `--with-random=/dev/urandom`
to configure as it cannot detect the presence of a random number
generating device for a target system. The `--prefix` parameter
specifies where c-ares will be installed. If `configure` completes
successfully, do `make` and `make install` as usual.
In some cases, you may be able to simplify the above commands to as
little as:
./configure --host=ARCH-OS
### Cygwin (Windows)
Almost identical to the unix installation. Run the configure script in the
c-ares root with `sh configure`. Make sure you have the sh executable in
`/bin/` or you'll see the configure fail toward the end.
Run `make`
### QNX
(This section was graciously brought to us by David Bentham)
As QNX is targeted for resource constrained environments, the QNX headers
set conservative limits. This includes the `FD_SETSIZE` macro, set by default
to 32. Socket descriptors returned within the c-ares library may exceed this,
resulting in memory faults/SIGSEGV crashes when passed into `select(..)`
calls using `fd_set` macros.
A good all-round solution to this is to override the default when building
c-ares, by overriding `CFLAGS` during configure, example:
# configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
### RISC OS
The library can be cross-compiled using gccsdk as follows:
CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \
--host=arm-riscos-aof --without-random --disable-shared
make
where `riscos-gcc` and `riscos-ar` are links to the gccsdk tools.
You can then link your program with `c-ares/lib/.libs/libcares.a`.
### Android
Method using a configure cross-compile (tested with Android NDK r7b):
- prepare the toolchain of the Android NDK for standalone use; this can
be done by invoking the script:
./tools/make-standalone-toolchain.sh
which creates a usual cross-compile toolchain. Let's assume that you put
this toolchain below `/opt` then invoke configure with something
like:
```
export PATH=/opt/arm-linux-androideabi-4.4.3/bin:$PATH
./configure --host=arm-linux-androideabi [more configure options]
make
```
- if you want to compile directly from our GIT repo you might run into
this issue with older automake stuff:
```
checking host system type...
Invalid configuration `arm-linux-androideabi':
system `androideabi' not recognized
configure: error: /bin/sh ./config.sub arm-linux-androideabi failed
```
this issue can be fixed with using more recent versions of `config.sub`
and `config.guess` which can be obtained here:
http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree
you need to replace your system-own versions which usually can be
found in your automake folder:
`find /usr -name config.sub`
CMake builds
============
Current releases of c-ares introduce a CMake v3+ build system that has been
tested on most platforms including Windows, Linux, FreeBSD, macOS, AIX and
Solaris.
In the most basic form, building with CMake might look like:
```sh
cd /path/to/cmake/source
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares ..
make
sudo make install
```
Options
-------
Options to CMake are passed on the command line using "-D${OPTION}=${VALUE}".
The values defined are all boolean and take values like On, Off, True, False.
| Option Name | Description | Default Value |
|-----------------------------|-----------------------------------------------------------------------|----------------|
| CARES_STATIC | Build the static library | Off |
| CARES_SHARED | Build the shared library | On |
| CARES_INSTALL | Hook in installation, useful to disable if chain building | On |
| CARES_STATIC_PIC | Build the static library as position-independent | Off |
| CARES_BUILD_TESTS | Build and run tests | Off |
| CARES_BUILD_CONTAINER_TESTS | Build and run container tests (implies CARES_BUILD_TESTS, Linux only) | Off |
| CARES_BUILD_TOOLS | Build tools | On |
| CARES_SYMBOL_HIDING | Hide private symbols in shared libraries | Off |
| CARES_THREADS | Build with thread-safety support | On |
Ninja
-----
Ninja is the next-generation build system meant for generators like CMake that
heavily parallelize builds. Its use is very similar to the normal build:
```sh
cd /path/to/cmake/source
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares -G "Ninja" ..
ninja
sudo ninja install
```
Windows MSVC Command Line
-------------------------
```
cd \path\to\cmake\source
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "NMake Makefiles" ..
nmake
nmake install
```
Windows MinGW-w64 Command Line via MSYS
---------------------------------------
```
cd \path\to\cmake\source
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "MSYS Makefiles" ..
make
make install
```
Platform-specific build systems
===============================
Win32
-----
### Building Windows DLLs and C run-time (CRT) linkage issues
As a general rule, building a DLL with static CRT linkage is highly
discouraged, and intermixing CRTs in the same app is something to
avoid at any cost.
Reading and comprehension of the following Microsoft Learn article
is a must for any Windows developer. Especially
important is full understanding if you are not going to follow the
advice given above.
- [Use the C Run-Time](https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/libraries/use-c-run-time)
If your app is misbehaving in some strange way, or it is suffering
from memory corruption, before asking for further help, please try
first to rebuild every single library your app uses as well as your
app using the debug multithreaded dynamic C runtime.
### MSYS
Building is supported for native windows via both AutoTools and CMake. When
building with autotools, you can only build either a shared version or a static
version (use `--disable-shared` or `--disable-static`). CMake can build both
simultaneously.
All of the MSYS environments are supported: `MINGW32`, `MINGW64`, `UCRT64`,
`CLANG32`, `CLANG64`, `CLANGARM64`.
### MingW32
Make sure that MinGW32's bin dir is in the search path, for example:
set PATH=c:\mingw32\bin;%PATH%
then run 'make -f Makefile.m32' in the root dir.
### MSVC 6 caveats
If you use MSVC 6 it is required that you use the February 2003 edition PSDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
### MSVC from command line
Run the `vcvars32.bat` file to get a proper environment. The
`vcvars32.bat` file is part of the Microsoft development environment and
you may find it in `C:\Program Files\Microsoft Visual Studio\vc98\bin`
provided that you installed Visual C/C++ 6 in the default directory.
Further details in [README.msvc](README.msvc)
### Important static c-ares usage note
When building an application that uses the static c-ares library, you must
add `-DCARES_STATICLIB` to your `CFLAGS`. Otherwise the linker will look for
dynamic import symbols.
DOS
---
c-ares supports building as a 32bit protected mode application via
[DJGPP](https://www.delorie.com/djgpp/). It is recommended to use a DJGPP
cross compiler from [Andrew Wu](https://github.com/andrewwutw/build-djgpp)
as building directly in a DOS environment can be difficult.
It is required to also have [Watt-32](https://www.watt-32.net/) available
built using the same compiler. It is recommended to build the latest `master`
branch from [GitHub](https://github.com/sezero/watt32/tree/master).
Finally, the `DJ_PREFIX` and `WATT_ROOT` environment variables must be set
appropriately before calling `make Makefile.dj` to build c-ares.
Please refer to our CI
[GitHub Actions Workflow](https://github.com/c-ares/c-ares/blob/main/.github/workflows/djgpp.yml)
for a full build example, including building the latest Watt-32 release.
IBM OS/2
--------
Building under OS/2 is not much different from building under unix.
You need:
- emx 0.9d
- GNU make
- GNU patch
- ksh
- GNU bison
- GNU file utilities
- GNU sed
- autoconf 2.13
If during the linking you get an error about `_errno` being an undefined
symbol referenced from the text segment, you need to add `-D__ST_MT_ERRNO__`
in your definitions.
If you're getting huge binaries, probably your makefiles have the `-g` in
`CFLAGS`.
NetWare
-------
To compile `libcares.a` / `libcares.lib` you need:
- either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later.
- gnu make and awk running on the platform you compile on;
native Win32 versions can be downloaded from:
http://www.gknw.net/development/prgtools/
- recent Novell LibC SDK available from:
http://developer.novell.com/ndk/libc.htm
- or recent Novell CLib SDK available from:
http://developer.novell.com/ndk/clib.htm
Set a search path to your compiler, linker and tools; on Linux make
sure that the var `OSTYPE` contains the string 'linux'; set the var
`NDKBASE` to point to the base of your Novell NDK; and then type
`make -f Makefile.netware` from the top source directory;
VCPKG
=====
You can build and install c-ares using [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager:
```sh or powershell
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install c-ares
```
The c-ares port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
WATCOM
=====
To build c-ares with OpenWatcom, you need to have at least version 1.9 of OpenWatcom. You can get the latest version from [http://openwatcom.org/ftp/install/](http://openwatcom.org/ftp/install/). Install the version that corresponds to your current host platform.
After installing OpenWatcom, open a new command prompt and execute the following commands:
```
cd \path\to\cmake\source
buildconf.bat
wmake -u -f Makefile.Watcom
```
After running wmake, you should get adig.exe, ahost.exe, and the static and dynamic versions of libcares.
PORTS
=====
This is a probably incomplete list of known hardware and operating systems
that c-ares has been compiled for. If you know a system c-ares compiles and
runs on, that isn't listed, please let us know!
- Linux (i686, x86_64, AARCH64, and more)
- MacOS 10.4+
- iOS
- Windows 8+ (i686, x86_64)
- Android (ARM, AARCH64, x86_64)
- FreeBSD
- NetBSD
- OpenBSD
- Solaris (SPARC, x86_64)
- AIX (POWER)
- Tru64 (Alpha)
- IRIX (MIPS)
- Novell NetWare (i386)
Useful URLs
===========
- c-ares: https://c-ares.org/
- MinGW-w64: http://mingw-w64.sourceforge.net/
- MSYS2: https://msys2.org
- OpenWatcom: http://www.openwatcom.org/

View file

@ -0,0 +1,24 @@
MIT License
Copyright (c) 1998 Massachusetts Institute of Technology
Copyright (c) 2007 - 2023 Daniel Stenberg with many contributors, see AUTHORS
file.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,158 @@
# [![c-ares logo](https://c-ares.org/art/c-ares-logo.svg)](https://c-ares.org/)
[![Build Status](https://api.cirrus-ci.com/github/c-ares/c-ares.svg?branch=main)](https://cirrus-ci.com/github/c-ares/c-ares)
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/aevgc5914tm72pvs/branch/main?svg=true)](https://ci.appveyor.com/project/c-ares/c-ares/branch/main)
[![Coverage Status](https://coveralls.io/repos/github/c-ares/c-ares/badge.svg?branch=main)](https://coveralls.io/github/c-ares/c-ares?branch=main)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/291/badge)](https://bestpractices.coreinfrastructure.org/projects/291)
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/c-ares.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:c-ares)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=c-ares_c-ares&metric=bugs)](https://sonarcloud.io/summary/new_code?id=c-ares_c-ares)
[![Coverity Scan Status](https://scan.coverity.com/projects/c-ares/badge.svg)](https://scan.coverity.com/projects/c-ares)
- [Overview](#overview)
- [Code](#code)
- [Communication](#communication)
- [Release Keys](#release-keys)
- [Verifying signatures](#verifying-signatures)
- [Features](#features)
- [RFCs and Proposals](#supported-rfcs-and-proposals)
## Overview
[c-ares](https://c-ares.org) is a modern DNS (stub) resolver library, written in
C. It provides interfaces for asynchronous queries while trying to abstract the
intricacies of the underlying DNS protocol. It was originally intended for
applications which need to perform DNS queries without blocking, or need to
perform multiple DNS queries in parallel.
One of the goals of c-ares is to be a better DNS resolver than is provided by
your system, regardless of which system you use. We recommend using
the c-ares library in all network applications even if the initial goal of
asynchronous resolution is not necessary to your application.
c-ares will build with any C89 compiler and is [MIT licensed](LICENSE.md),
which makes it suitable for both free and commercial software. c-ares runs on
Linux, FreeBSD, OpenBSD, MacOS, Solaris, AIX, Windows, Android, iOS and many
more operating systems.
c-ares has a strong focus on security, implementing safe parsers and data
builders used throughout the code, thus avoiding many of the common pitfalls
of other C libraries. Through automated testing with our extensive testing
framework, c-ares is constantly validated with a range of static and dynamic
analyzers, as well as being constantly fuzzed by [OSS Fuzz](https://github.com/google/oss-fuzz).
While c-ares has been around for over 20 years, it has been actively maintained
both in regards to the latest DNS RFCs as well as updated to follow the latest
best practices in regards to C coding standards.
## Code
The full source code and revision history is available in our
[GitHub repository](https://github.com/c-ares/c-ares). Our signed releases
are available in the [release archives](https://c-ares.org/download/).
See the [INSTALL.md](INSTALL.md) file for build information.
## Communication
**Issues** and **Feature Requests** should be reported to our
[GitHub Issues](https://github.com/c-ares/c-ares/issues) page.
**Discussions** around c-ares and its use, are held on
[GitHub Discussions](https://github.com/c-ares/c-ares/discussions/categories/q-a)
or the [Mailing List](https://lists.haxx.se/mailman/listinfo/c-ares). Mailing
List archive [here](https://lists.haxx.se/pipermail/c-ares/).
Please, do not mail volunteers privately about c-ares.
**Security vulnerabilities** are treated according to our
[Security Procedure](SECURITY.md), please email c-ares-security at
haxx.se if you suspect one.
## Release keys
Primary GPG keys for c-ares Releasers (some Releasers sign with subkeys):
* **Daniel Stenberg** <<daniel@haxx.se>>
`27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2`
* **Brad House** <<brad@brad-house.com>>
`DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA`
To import the full set of trusted release keys (including subkeys possibly used
to sign releases):
```bash
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 # Daniel Stenberg
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA # Brad House
```
### Verifying signatures
For each release `c-ares-X.Y.Z.tar.gz` there is a corresponding
`c-ares-X.Y.Z.tar.gz.asc` file which contains the detached signature for the
release.
After fetching all of the possible valid signing keys and loading into your
keychain as per the prior section, you can simply run the command below on
the downloaded package and detached signature:
```bash
% gpg -v --verify c-ares-1.29.0.tar.gz.asc c-ares-1.29.0.tar.gz
gpg: enabled compatibility flags:
gpg: Signature made Fri May 24 02:50:38 2024 EDT
gpg: using RSA key 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2
gpg: using pgp trust model
gpg: Good signature from "Daniel Stenberg <daniel@haxx.se>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 27ED EAF2 2F3A BCEB 50DB 9A12 5CC9 08FD B71E 12C2
gpg: binary signature, digest algorithm SHA512, key algorithm rsa2048
```
## Features
See [Features](FEATURES.md)
### Supported RFCs and Proposals
- [RFC1035](https://datatracker.ietf.org/doc/html/rfc1035).
Initial/Base DNS RFC
- [RFC2671](https://datatracker.ietf.org/doc/html/rfc2671),
[RFC6891](https://datatracker.ietf.org/doc/html/rfc6891).
EDNS0 option (meta-RR)
- [RFC3596](https://datatracker.ietf.org/doc/html/rfc3596).
IPv6 Address. `AAAA` Record.
- [RFC2782](https://datatracker.ietf.org/doc/html/rfc2782).
Server Selection. `SRV` Record.
- [RFC3403](https://datatracker.ietf.org/doc/html/rfc3403).
Naming Authority Pointer. `NAPTR` Record.
- [RFC6698](https://datatracker.ietf.org/doc/html/rfc6698).
DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol.
`TLSA` Record.
- [RFC9460](https://datatracker.ietf.org/doc/html/rfc9460).
General Purpose Service Binding, Service Binding type for use with HTTPS.
`SVCB` and `HTTPS` Records.
- [RFC7553](https://datatracker.ietf.org/doc/html/rfc7553).
Uniform Resource Identifier. `URI` Record.
- [RFC6844](https://datatracker.ietf.org/doc/html/rfc6844).
Certification Authority Authorization. `CAA` Record.
- [RFC2535](https://datatracker.ietf.org/doc/html/rfc2535),
[RFC2931](https://datatracker.ietf.org/doc/html/rfc2931).
`SIG0` Record. Only basic parser, not full implementation.
- [RFC7873](https://datatracker.ietf.org/doc/html/rfc7873),
[RFC9018](https://datatracker.ietf.org/doc/html/rfc9018).
DNS Cookie off-path dns poisoning and amplification mitigation.
- [draft-vixie-dnsext-dns0x20-00](https://datatracker.ietf.org/doc/html/draft-vixie-dnsext-dns0x20-00).
DNS 0x20 query name case randomization to prevent cache poisioning attacks.
- [RFC7686](https://datatracker.ietf.org/doc/html/rfc7686).
Reject queries for `.onion` domain names with `NXDOMAIN`.
- [RFC2606](https://datatracker.ietf.org/doc/html/rfc2606),
[RFC6761](https://datatracker.ietf.org/doc/html/rfc6761).
Special case treatment for `localhost`/`.localhost`.
- [RFC2308](https://datatracker.ietf.org/doc/html/rfc2308),
[RFC9520](https://datatracker.ietf.org/doc/html/rfc9520).
Negative Caching of DNS Resolution Failures.
- [RFC6724](https://datatracker.ietf.org/doc/html/rfc6724).
IPv6 address sorting as used by `ares_getaddrinfo()`.
- [RFC7413](https://datatracker.ietf.org/doc/html/rfc7413).
TCP FastOpen (TFO) for 0-RTT TCP Connection Resumption.
- [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986).
Uniform Resource Identifier (URI). Used for server configuration.

View file

@ -0,0 +1,42 @@
## c-ares version 1.34.6 - December 8 2025
This is a security release.
Security:
* CVE-2025-62408. A use-after-free bug has been uncovered in read_answers() that
was introduced in v1.32.3. Please see https://github.com/c-ares/c-ares/security/advisories/GHSA-jq53-42q6-pqr5
Changes:
* Ignore Windows IDN Search Domains until proper IDN support is added. [PR #1034](https://github.com/c-ares/c-ares/pull/1034)
Bugfixes:
* Event Thread could stall when not notified of new queries on existing
connections that are in a bad state
[PR #1032](https://github.com/c-ares/c-ares/pull/1032)
* fix conversion of invalid service to port number in ares_getaddrinfo()
[PR #1029](https://github.com/c-ares/c-ares/pull/1029)
* fix memory leak in ares_uri
[PR #1012](https://github.com/c-ares/c-ares/pull/1012)
* Ignore ares_event_configchg_init failures
[PR #1009](https://github.com/c-ares/c-ares/pull/1009)
* Use XOR for random seed generation on fallback logic.
[PR #994](https://github.com/c-ares/c-ares/pull/994)
* Fix clang build on windows.
[PR #996](https://github.com/c-ares/c-ares/pull/996)
* Fix IPv6 link-local nameservers in /etc/resolv.conf
[PR #996](https://github.com/c-ares/c-ares/pull/997)
* Fix a few build issues on MidnightBSD.
[PR #983](https://github.com/c-ares/c-ares/pull/983)
Thanks go to these friendly people for their efforts and contributions for this
release:
* Brad House (@bradh352)
* (@F3lixTheCat)
* Lucas Holt (@laffer1)
* @oargon
* Pavel P (@pps83)
* Sean Harmer (@seanharmer)
* Uwe (@nixblik)

Binary file not shown.

View file

@ -0,0 +1,114 @@
Academic Free License
Version 1.1
The Academic Free License applies to any original work of authorship
(the "Original Work") whose owner (the "Licensor") has placed the
following notice immediately following the copyright notice for the
Original Work: "Licensed under the Academic Free License version 1.1."
Grant of License. Licensor hereby grants to any person obtaining a
copy of the Original Work ("You") a world-wide, royalty-free,
non-exclusive, perpetual, non-sublicenseable license (1) to use, copy,
modify, merge, publish, perform, distribute and/or sell copies of the
Original Work and derivative works thereof, and (2) under patent
claims owned or controlled by the Licensor that are embodied in the
Original Work as furnished by the Licensor, to make, use, sell and
offer for sale the Original Work and derivative works thereof, subject
to the following conditions.
Right of Attribution. Redistributions of the Original Work must
reproduce all copyright notices in the Original Work as furnished by
the Licensor, both in the Original Work itself and in any
documentation and/or other materials provided with the distribution of
the Original Work in executable form.
Exclusions from License Grant. Neither the names of Licensor, nor the
names of any contributors to the Original Work, nor any of their
trademarks or service marks, may be used to endorse or promote
products derived from this Original Work without express prior written
permission of the Licensor.
WARRANTY AND DISCLAIMERS. LICENSOR WARRANTS THAT THE COPYRIGHT IN AND
TO THE ORIGINAL WORK IS OWNED BY THE LICENSOR OR THAT THE ORIGINAL
WORK IS DISTRIBUTED BY LICENSOR UNDER A VALID CURRENT LICENSE FROM THE
COPYRIGHT OWNER. EXCEPT AS EXPRESSLY STATED IN THE IMMEDIATELY
PRECEEDING SENTENCE, THE ORIGINAL WORK IS PROVIDED UNDER THIS LICENSE
ON AN "AS IS" BASIS, WITHOUT WARRANTY, EITHER EXPRESS OR IMPLIED,
INCLUDING, WITHOUT LIMITATION, THE WARRANTY OF NON-INFRINGEMENT AND
WARRANTIES THAT THE ORIGINAL WORK IS MERCHANTABLE OR FIT FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL
WORK IS WITH YOU. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
PART OF THIS LICENSE. NO LICENSE TO ORIGINAL WORK IS GRANTED HEREUNDER
EXCEPT UNDER THIS DISCLAIMER.
LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE,
SHALL THE LICENSOR BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT,
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING
AS A RESULT OF THIS LICENSE OR THE USE OF THE ORIGINAL WORK INCLUDING,
WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE,
COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL
DAMAGES OR LOSSES, EVEN IF SUCH PERSON SHALL HAVE BEEN INFORMED OF THE
POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
AND LIMITATION MAY NOT APPLY TO YOU.
License to Source Code. The term "Source Code" means the preferred
form of the Original Work for making modifications to it and all
available documentation describing how to access and modify the
Original Work. Licensor hereby agrees to provide a machine-readable
copy of the Source Code of the Original Work along with each copy of
the Original Work that Licensor distributes. Licensor reserves the
right to satisfy this obligation by placing a machine-readable copy of
the Source Code in an information repository reasonably calculated to
permit inexpensive and convenient access by You for as long as
Licensor continues to distribute the Original Work, and by publishing
the address of that information repository in a notice immediately
following the copyright notice that applies to the Original Work.
Mutual Termination for Patent Action. This License shall terminate
automatically and You may no longer exercise any of the rights granted
to You by this License if You file a lawsuit in any court alleging
that any OSI Certified open source software that is licensed under any
license containing this "Mutual Termination for Patent Action" clause
infringes any patent claims that are essential to use that software.
This license is Copyright (C) 2002 Lawrence E. Rosen. All rights
reserved. Permission is hereby granted to copy and distribute this
license without modification. This license may not be modified without
the express written permission of its copyright owner.
--
END OF LICENSE. The following is intended to describe the essential
differences between the Academic Free License (AFL) version 1.0 and
other open source licenses:
The Academic Free License is similar to the BSD, MIT, UoI/NCSA and
Apache licenses in many respects but it is intended to solve a few
problems with those licenses.
* The AFL is written so as to make it clear what software is being
licensed (by the inclusion of a statement following the copyright
notice in the software). This way, the license functions better
than a template license. The BSD, MIT and UoI/NCSA licenses apply
to unidentified software.
* The AFL contains a complete copyright grant to the software. The
BSD and Apache licenses are vague and incomplete in that respect.
* The AFL contains a complete patent grant to the software. The BSD,
MIT, UoI/NCSA and Apache licenses rely on an implied patent
license and contain no explicit patent grant.
* The AFL makes it clear that no trademark rights are granted to the
licensor's trademarks. The Apache license contains such a
provision, but the BSD, MIT and UoI/NCSA licenses do not.
* The AFL includes the warranty by the licensor that it either owns
the copyright or that it is distributing the software under a
license. None of the other licenses contain that warranty. All
other warranties are disclaimed, as is the case for the other
licenses.
* The AFL is itself copyrighted (with the right granted to copy and
distribute without modification). This ensures that the owner of
the copyright to the license will control changes. The Apache
license contains a copyright notice, but the BSD, MIT and UoI/NCSA
licenses do not.

View file

@ -0,0 +1,92 @@
Academic Free License Version 1.2
This Academic Free License applies to any original work of authorship
(the "Original Work") whose owner (the "Licensor") has placed the
following notice immediately following the copyright notice for the
Original Work: Licensed under the Academic Free License version 1.2
Grant of License. Licensor hereby grants to any person obtaining a
copy of the Original Work ("You") a world-wide, royalty-free,
non-exclusive, perpetual, non-sublicenseable license (1) to use, copy,
modify, merge, publish, perform, distribute and/or sell copies of the
Original Work and derivative works thereof, and (2) under patent claims
owned or controlled by the Licensor that are embodied in the Original
Work as furnished by the Licensor, to make, use, sell and offer for
sale the Original Work and derivative works thereof, subject to the
following conditions. Attribution Rights. You must retain, in the Source Code of any
Derivative Works that You create, all copyright, patent or trademark
notices from the Source Code of the Original Work, as well as any
notices of licensing and any descriptive text identified therein as an
"Attribution Notice." You must cause the Source Code for any Derivative
Works that You create to carry a prominent Attribution Notice reasonably
calculated to inform recipients that You have modified the Original Work. Exclusions from License Grant. Neither the names of Licensor, nor the
names of any contributors to the Original Work, nor any of their
trademarks or service marks, may be used to endorse or promote products
derived from this Original Work without express prior written permission
of the Licensor. Warranty and Disclaimer of Warranty. Licensor warrants that the copyright
in and to the Original Work is owned by the Licensor or that the Original
Work is distributed by Licensor under a valid current license from the
copyright owner. Except as expressly stated in the immediately proceeding
sentence, the Original Work is provided under this License on an "AS IS"
BASIS and WITHOUT WARRANTY, either express or implied, including, without
limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL
WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part
of this License. No license to Original Work is granted hereunder except
under this disclaimer. Limitation of Liability. Under no circumstances and under no legal theory,
whether in tort (including negligence), contract, or otherwise, shall the
Licensor be liable to any person for any direct, indirect, special,
incidental, or consequential damages of any character arising as a result
of this License or the use of the Original Work including, without
limitation, damages for loss of goodwill, work stoppage, computer failure
or malfunction, or any and all other commercial damages or losses. This
limitation of liability shall not apply to liability for death or personal
injury resulting from Licensor's negligence to the extent applicable law
prohibits such limitation. Some jurisdictions do not allow the exclusion or
limitation of incidental or consequential damages, so this exclusion and
limitation may not apply to You. License to Source Code. The term "Source Code" means the preferred form of
the Original Work for making modifications to it and all available
documentation describing how to modify the Original Work. Licensor hereby
agrees to provide a machine-readable copy of the Source Code of the Original
Work along with each copy of the Original Work that Licensor distributes.
Licensor reserves the right to satisfy this obligation by placing a
machine-readable copy of the Source Code in an information repository
reasonably calculated to permit inexpensive and convenient access by You for
as long as Licensor continues to distribute the Original Work, and by
publishing the address of that information repository in a notice immediately
following the copyright notice that applies to the Original Work. Mutual Termination for Patent Action. This License shall terminate
automatically and You may no longer exercise any of the rights granted to You
by this License if You file a lawsuit in any court alleging that any OSI
Certified open source software that is licensed under any license containing
this "Mutual Termination for Patent Action" clause infringes any patent
claims that are essential to use that software. Right to Use. You may use the Original Work in all ways not otherwise
restricted or conditioned by this License or by law, and Licensor promises
not to interfere with or be responsible for such uses by You. This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved.
Permission is hereby granted to copy and distribute this license without
modification. This license may not be modified without the express written
permission of its copyright owner. -- END OF LICENSE. The following is intended to describe the essential
differences between the Academic Free License (AFL) version 1.0 and other
open source licenses: The Academic Free License is similar to the BSD, MIT, UoI/NCSA and Apache
licenses in many respects but it is intended to solve a few problems with
those licenses.
* The AFL is written so as to make it clear what software is being
licensed (by the inclusion of a statement following the copyright notice
in the software). This way, the license functions better than a template
license. The BSD, MIT and UoI/NCSA licenses apply to unidentified software.
* The AFL contains a complete copyright grant to the software. The BSD
and Apache licenses are vague and incomplete in that respect.
* The AFL contains a complete patent grant to the software. The BSD, MIT,
UoI/NCSA and Apache licenses rely on an implied patent license and contain
no explicit patent grant.
* The AFL makes it clear that no trademark rights are granted to the
licensor's trademarks. The Apache license contains such a provision, but the
BSD, MIT and UoI/NCSA licenses do not.
* The AFL includes the warranty by the licensor that it either owns the
copyright or that it is distributing the software under a license. None of
the other licenses contain that warranty. All other warranties are disclaimed,
as is the case for the other licenses.
* The AFL is itself copyrighted (with the right granted to copy and distribute
without modification). This ensures that the owner of the copyright to the
license will control changes. The Apache license contains a copyright notice,
but the BSD, MIT and UoI/NCSA licenses do not.

View file

@ -0,0 +1,46 @@
The Academic Free License
v. 2.0
This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:
Licensed under the Academic Free License version 2.0
1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following:
a) to reproduce the Original Work in copies;
b) to prepare derivative works ("Derivative Works") based upon the Original Work;
c) to distribute copies of the Original Work and Derivative Works to the public;
d) to perform the Original Work publicly; and
e) to display the Original Work publicly.
2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works.
3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.
4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license.
5) This section intentionally omitted.
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer.
8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions.
10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, for patent infringement (i) against Licensor with respect to a patent applicable to software or (ii) against any entity with respect to a patent applicable to the Original Work (but excluding combinations of the Original Work with other software or hardware).
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. ¤ 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License.
12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.

View file

@ -0,0 +1,51 @@
The Academic Free License
v. 2.1
This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:
Licensed under the Academic Free License version 2.1
1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following:
a) to reproduce the Original Work in copies;
b) to prepare derivative works ("Derivative Works") based upon the Original Work;
c) to distribute copies of the Original Work and Derivative Works to the public;
d) to perform the Original Work publicly; and
e) to display the Original Work publicly.
2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works.
3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.
4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license.
5) This section intentionally omitted.
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer.
8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions.
10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License.
12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.

Binary file not shown.

View file

@ -0,0 +1,59 @@
/* ====================================================================
* Copyright (c) 1995-1999 The Apache Group. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the Apache Group
* for use in the Apache HTTP server project (http://www.apache.org/)."
*
* 4. The names "Apache Server" and "Apache Group" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the Apache Group
* for use in the Apache HTTP server project (http://www.apache.org/)."
*
* THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Group and was originally based
* on public domain software written at the National Center for
* Supercomputing Applications, University of Illinois, Urbana-Champaign.
* For more information on the Apache Group and the Apache HTTP server
* project, please see <http://www.apache.org/>.
*
*/

View file

@ -0,0 +1,58 @@
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* Portions of this software are based upon public domain software
* originally written at the National Center for Supercomputing Applications,
* University of Illinois, Urbana-Champaign.
*/

View file

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View file

@ -0,0 +1,131 @@
The "Artistic License"
Preamble
The intent of this document is to state the conditions under which a
Package may be copied, such that the Copyright Holder maintains some
semblance of artistic control over the development of the package,
while giving the users of the package the right to use and distribute
the Package in a more-or-less customary fashion, plus the right to make
reasonable modifications.
Definitions:
"Package" refers to the collection of files distributed by the
Copyright Holder, and derivatives of that collection of files
created through textual modification.
"Standard Version" refers to such a Package if it has not been
modified, or has been modified in accordance with the wishes
of the Copyright Holder as specified below.
"Copyright Holder" is whoever is named in the copyright or
copyrights for the package.
"You" is you, if you're thinking about copying or distributing
this Package.
"Reasonable copying fee" is whatever you can justify on the
basis of media cost, duplication charges, time of people involved,
and so on. (You will not be required to justify it to the
Copyright Holder, but only to the computing community at large
as a market that must bear the fee.)
"Freely Available" means that no fee is charged for the item
itself, though there may be fees involved in handling the item.
It also means that recipients of the item may redistribute it
under the same conditions they received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications
derived from the Public Domain or from the Copyright Holder. A Package
modified in such a way shall still be considered the Standard Version.
3. You may otherwise modify your copy of this Package in any way, provided
that you insert a prominent notice in each changed file stating how and
when you changed that file, and provided that you do at least ONE of the
following:
a) place your modifications in the Public Domain or otherwise make them
Freely Available, such as by posting said modifications to Usenet or
an equivalent medium, or placing the modifications on a major archive
site such as uunet.uu.net, or by allowing the Copyright Holder to include
your modifications in the Standard Version of the Package.
b) use the modified Package only within your corporation or organization.
c) rename any non-standard executables so the names do not conflict
with standard executables, which must also be provided, and provide
a separate manual page for each non-standard executable that clearly
documents how it differs from the Standard Version.
d) make other distribution arrangements with the Copyright Holder.
4. You may distribute the programs of this Package in object code or
executable form, provided that you do at least ONE of the following:
a) distribute a Standard Version of the executables and library files,
together with instructions (in the manual page or equivalent) on where
to get the Standard Version.
b) accompany the distribution with the machine-readable source of
the Package with your modifications.
c) give non-standard executables non-standard names, and clearly
document the differences in manual pages (or equivalent), together
with instructions on where to get the Standard Version.
d) make other distribution arrangements with the Copyright Holder.
5. You may charge a reasonable copying fee for any distribution of this
Package. You may charge any fee you choose for support of this
Package. You may not charge a fee for this Package itself. However,
you may distribute this Package in aggregate with other (possibly
commercial) programs as part of a larger (possibly commercial) software
distribution provided that you do not advertise this Package as a
product of your own. You may embed this Package's interpreter within
an executable of yours (by linking); this shall be construed as a mere
form of aggregation, provided that the complete Standard Version of the
interpreter is so embedded.
6. The scripts and library files supplied as input to or produced as
output from the programs of this Package do not automatically fall
under the copyright of this Package, but belong to whoever generated
them, and may be sold commercially, and may be aggregated with this
Package. If such scripts or library files are aggregated with this
Package via the so-called "undump" or "unexec" methods of producing a
binary executable image, then distribution of such an image shall
neither be construed as a distribution of this Package nor shall it
fall under the restrictions of Paragraphs 3 and 4, provided that you do
not represent such an executable image as a Standard Version of this
Package.
7. C subroutines (or comparably compiled subroutines in other
languages) supplied by you and linked into this Package in order to
emulate subroutines and variables of the language defined by this
Package shall not be considered part of this Package, but are the
equivalent of input as in Paragraph 6, provided these subroutines do
not change the language in any way that would cause it to fail the
regression tests for the language.
8. Aggregation of this Package with a commercial distribution is always
permitted provided that the use of this Package is embedded; that is,
when no overt attempt is made to make this Package's interfaces visible
to the end user of the commercial distribution. Such use shall not be
construed as a distribution of this Package.
9. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.
10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The End

View file

@ -0,0 +1,26 @@
Copyright (c) The Regents of the University of California.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

Binary file not shown.

View file

@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

Binary file not shown.

View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) 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
this service 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 make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. 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.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the 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 a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE 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.
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
convey 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 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 General Public License for more details.
You should have received a copy of the GNU 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
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision 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, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This 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 Library General
Public License instead of this License.

View file

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) 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
this service 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 make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. 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.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the 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 a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE 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.
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
convey 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 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 General Public License for more details.
You should have received a copy of the GNU 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
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision 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, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This 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 Library General
Public License instead of this License.

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://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 <http://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
<http://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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

Binary file not shown.

View file

@ -0,0 +1,481 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, 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
this service 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 make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library 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 Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey 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 library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,481 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, 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
this service 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 make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library 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 Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey 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 library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,510 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations
below.
When we speak of free software, we are referring to freedom of use,
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 this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
^L
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it
becomes a de-facto standard. To achieve this, non-free programs must
be allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
^L
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
^L
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
^L
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least
three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of
performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
^L
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
^L
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser 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 Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
^L
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
^L
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms
of the ordinary General Public License).
To apply these terms, attach the following notices to the library.
It is safest to attach them to the start of each source file to most
effectively convey 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 library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library 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.1 of the License, or (at your option) any later version.
This library 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 library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the library,
if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James
Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser 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
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View file

@ -0,0 +1,22 @@
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
and Clark Cooper
Copyright (c) 2001, 2002 Expat maintainers.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,68 @@
--------------------------------------------------------------------
The PHP License, version 3.0
Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
modification, is permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. The name "PHP" must not be used to endorse or promote products
derived from this software without prior written permission. For
written permission, please contact group@php.net.
4. Products derived from this software may not be called "PHP", nor
may "PHP" appear in their name, without prior written permission
from group@php.net. You may indicate that your software works in
conjunction with PHP by saying "Foo for PHP" instead of calling
it "PHP Foo" or "phpfoo"
5. The PHP Group may publish revised and/or new versions of the
license from time to time. Each version will be given a
distinguishing version number.
Once covered code has been published under a particular version
of the license, you may always continue to use it under the terms
of that version. You may also choose to use such covered code
under the terms of any subsequent version of the license
published by the PHP Group. No one other than the PHP Group has
the right to modify the terms applicable to covered code created
under this License.
6. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes PHP, freely available from
<http://www.php.net/>".
THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------
This software consists of voluntary contributions made by many
individuals on behalf of the PHP Group.
The PHP Group can be contacted via Email at group@php.net.
For more information on the PHP Group and the PHP project,
please see <http://www.php.net>.
This product includes the Zend Engine, freely available at
<http://www.zend.com>.

View file

@ -0,0 +1,6 @@
If the license you need to read is not listed here,
try http://www.opensource.org/licenses
If you would like it included in Cygwin as standard
(so your package can reference it for example),
please contact the cygwin email list.

View file

@ -0,0 +1,115 @@
Here are the names of the programs in this package,
each followed by the name(s) of its author(s).
arch: David MacKenzie, Karel Zak
b2sum: Padraig Brady, Samuel Neves
base32: Simon Josefsson
base64: Simon Josefsson
basename: David MacKenzie
basenc: Simon Josefsson, Assaf Gordon
cat: Torbjorn Granlund, Richard M. Stallman
chcon: Russell Coker, Jim Meyering
chgrp: David MacKenzie, Jim Meyering
chmod: David MacKenzie, Jim Meyering
chown: David MacKenzie, Jim Meyering
chroot: Roland McGrath
cksum: Padraig Brady, Q. Frank Xia
comm: Richard M. Stallman, David MacKenzie
coreutils: Alex Deymo
cp: Torbjorn Granlund, David MacKenzie, Jim Meyering
csplit: Stuart Kemp, David MacKenzie
cut: David M. Ihnat, David MacKenzie, Jim Meyering
date: David MacKenzie
dd: Paul Rubin, David MacKenzie, Stuart Kemp
df: Torbjorn Granlund, David MacKenzie, Paul Eggert
dir: Richard M. Stallman, David MacKenzie
dircolors: H. Peter Anvin
dirname: David MacKenzie, Jim Meyering
du: Torbjorn Granlund, David MacKenzie, Paul Eggert, Jim Meyering
echo: Brian Fox, Chet Ramey
env: Richard Mlynarik, David MacKenzie, Assaf Gordon
expand: David MacKenzie
expr: Mike Parker, James Youngman, Paul Eggert
factor: Paul Rubin, Torbjörn Granlund, Niels Möller
false: Jim Meyering
fmt: Ross Paterson
fold: David MacKenzie
ginstall: David MacKenzie
groups: David MacKenzie, James Youngman
head: David MacKenzie, Jim Meyering
hostid: Jim Meyering
hostname: Jim Meyering
id: Arnold Robbins, David MacKenzie
join: Mike Haertel
kill: Paul Eggert
link: Michael Stone
ln: Mike Parker, David MacKenzie
logname: FIXME: unknown
ls: Richard M. Stallman, David MacKenzie
md5sum: Ulrich Drepper, Scott Miller, David Madore
mkdir: David MacKenzie
mkfifo: David MacKenzie
mknod: David MacKenzie
mktemp: Jim Meyering, Eric Blake
mv: Mike Parker, David MacKenzie, Jim Meyering
nice: David MacKenzie
nl: Scott Bartram, David MacKenzie
nohup: Jim Meyering
nproc: Giuseppe Scrivano
numfmt: Assaf Gordon
od: Jim Meyering
paste: David M. Ihnat, David MacKenzie
pathchk: Paul Eggert, David MacKenzie, Jim Meyering
pinky: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
pr: Pete TerMaat, Roland Huebner
printenv: David MacKenzie, Richard Mlynarik
printf: David MacKenzie
ptx: François Pinard
pwd: Jim Meyering
readlink: Dmitry V. Levin
realpath: Padraig Brady
rm: Paul Rubin, David MacKenzie, Richard M. Stallman, Jim Meyering
rmdir: David MacKenzie
runcon: Russell Coker
seq: Ulrich Drepper
sha1sum: Ulrich Drepper, Scott Miller, David Madore
sha224sum: Ulrich Drepper, Scott Miller, David Madore
sha256sum: Ulrich Drepper, Scott Miller, David Madore
sha384sum: Ulrich Drepper, Scott Miller, David Madore
sha512sum: Ulrich Drepper, Scott Miller, David Madore
shred: Colin Plumb
shuf: Paul Eggert
sleep: Jim Meyering, Paul Eggert
sort: Mike Haertel, Paul Eggert
split: Torbjorn Granlund, Richard M. Stallman
stat: Michael Meskes
stdbuf: Padraig Brady
stty: David MacKenzie
sum: Kayvan Aghaiepour, David MacKenzie
sync: Jim Meyering, Giuseppe Scrivano
tac: Jay Lepreau, David MacKenzie
tail: Paul Rubin, David MacKenzie, Ian Lance Taylor, Jim Meyering
tee: Mike Parker, Richard M. Stallman, David MacKenzie
test: Kevin Braunsdorf, Matthew Bradburn
timeout: Padraig Brady
touch: Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, Randy Smith
tr: Jim Meyering
true: Jim Meyering
truncate: Padraig Brady
tsort: Mark Kettenis
tty: David MacKenzie
uname: David MacKenzie
unexpand: David MacKenzie
uniq: Richard M. Stallman, David MacKenzie
unlink: Michael Stone
uptime: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
users: Joseph Arceneaux, David MacKenzie
vdir: Richard M. Stallman, David MacKenzie
wc: Paul Rubin, David MacKenzie
who: Joseph Arceneaux, David MacKenzie, Michael Stone
whoami: Richard Mlynarik
yes: David MacKenzie
;; Local Variables:
;; coding: utf-8
;; End:

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,242 @@
These are the GNU core utilities. This package is the union of
the GNU fileutils, sh-utils, and textutils packages.
Most of these programs have significant advantages over their Unix
counterparts, such as greater speed, additional options, and fewer
arbitrary limits.
The programs that can be built with this package are:
[ arch b2sum base32 base64 basename basenc cat chcon chgrp chmod chown
chroot cksum comm coreutils cp csplit cut date dd df dir dircolors dirname
du echo env expand expr factor false fmt fold groups head hostid hostname
id install join kill link ln logname ls md5sum mkdir mkfifo mknod mktemp
mv nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx
pwd readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum
sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum sync
tac tail tee test timeout touch tr true truncate tsort tty uname unexpand
uniq unlink uptime users vdir wc who whoami yes
See the file NEWS for a list of major changes in the current release.
If you obtained this file as part of a "git clone", then see the
README-hacking file. If this file came to you as part of a tar archive,
then see the file INSTALL for compilation and installation instructions.
Like the rest of the GNU system, these programs mostly conform to
POSIX, with BSD and other extensions. For closer conformance, or
conformance to a particular POSIX version, set the POSIXLY_CORRECT
and the _POSIX2_VERSION environment variables, as described in
the documentation under "Standards conformance".
The ls, dir, and vdir commands are all separate executables instead of
one program that checks argv[0] because people often rename these
programs to things like gls, gnuls, l, etc. Renaming a program
file shouldn't affect how it operates, so that people can get the
behavior they want with whatever name they want.
Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
Kaveh Ghazi, and François Pinard for help with debugging and porting
these programs. Many thanks to all of the people who have taken the
time to submit problem reports and fixes. All contributed changes are
attributed in the commit logs.
And thanks to the following people who have provided accounts for
portability testing on many different types of systems: Bob Proulx,
Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
Réjean Payette, Sam Tardieu.
Thanks to Michael Stone for inflicting test releases of this package
on Debian's unstable distribution, and to all the kind folks who used
that distribution and found and reported bugs.
Note that each man page is now automatically generated from a template
and from the corresponding --help usage message. Patches to the template
files (man/*.x) are welcome. However, the authoritative documentation
is in texinfo form in the doc directory.
*********************
Pre-C99 build failure
---------------------
In 2009 we added this requirement:
To build the coreutils from source, you must have a C99-conforming
compiler, due to the use of declarations after non-declaration statements
in several files in src/. There is code in configure to find and, if
possible, enable an appropriate compiler. However, if configure doesn't
find a C99 compiler, it continues nonetheless, and your build will fail.
There used to be a "c99-to-c89.diff" patch you could apply to convert
to code that even an old pre-c99 compiler can handle, but it was too
tedious to maintain, so has been removed.
***********************
HPUX 11.x build failure
-----------------------
A known problem exists when compiling on HPUX on both hppa and ia64
in 64-bit mode (i.e., +DD64) on HP-UX 11.0, 11.11, and 11.23. This
is not due to a bug in the package but instead due to a bug in the
system header file which breaks things in 64-bit mode. The default
compilation mode is 32-bit and the software compiles fine using the
default mode. To build this software in 64-bit mode you will need
to fix the system /usr/include/inttypes.h header file. After
correcting that file the software also compiles fine in 64-bit mode.
Here is one possible patch to correct the problem:
--- /usr/include/inttypes.h.orig Thu May 30 01:00:00 1996
+++ /usr/include/inttypes.h Sun Mar 23 00:20:36 2003
@@ -489 +489 @@
-#ifndef __STDC_32_MODE__
+#ifndef __LP64__
************************
OSF/1 4.0d and AIX build failures
------------------------
If you use /usr/bin/make on these systems, the build will fail due
to the presence of the "[" target. OSF/1 make(1) appears to
treat "[" as some syntax relating to locks, while AIX make(1)
appears to skip the "[" target. To work around these issues
the best solution is to use GNU make. Otherwise, simply remove
all mention of "[$(EXEEXT)" from src/Makefile.
************************
32 bit time_t build failures
------------------------
On systems where it's determined that 64 bit time_t is supported
(indicated by touch -t <some time after 2038>), but that coreutils
would be built with a narrower time_t, the build will fail.
This can be allowed by passing TIME_T_32_BIT_OK=yes to configure,
or avoided by enabling 64 bit builds. For example GCC on AIX defaults
to 32 bit, and to enable the 64 bit ABI one can use:
./configure CFLAGS=-maix64 LDFLAGs=-maix64 AR='ar -X64'
*************************************************
"make check" failure on IRIX 6.5 and Solaris <= 9
-------------------------------------------------
Using the vendor make program to run "make check" fails on these two systems.
If you want to run all of the tests there, use GNU make.
**********************
Running tests as root:
----------------------
If you run the tests as root, note that a few of them create files
and/or run programs as a non-root user, 'nobody' by default.
If you want to use some other non-root username, specify it via
the NON_ROOT_USERNAME environment variable. Depending on the
permissions with which the working directories have been created,
using 'nobody' may fail, because that user won't have the required
read and write access to the build and test directories.
I find that it is best to unpack and build as a non-privileged
user, and then to run the following command as that user in order
to run the privilege-requiring tests:
sudo env PATH="$PATH" NON_ROOT_USERNAME=$USER make -k check-root
If you can run the tests as root, please do so and report any
problems. We get much less test coverage in that mode, and it's
arguably more important that these tools work well when run by
root than when run by less privileged users.
***************
Reporting bugs:
---------------
Send bug reports, questions, comments, etc. to bug-coreutils@gnu.org.
To suggest a patch, see the files README-hacking and HACKING for tips.
If you have a problem with 'sort', try running 'sort --debug', as it
can often help find and fix problems without having to wait for an
answer to a bug report. If the debug output does not suffice to fix
the problem on your own, please compress and attach it to the rest of
your bug report.
IMPORTANT: if you take the time to report a test failure,
please be sure to include the output of running 'make check'
in verbose mode for each failing test. For example,
if the test that fails is tests/df/df-P.sh, then you would
run this command:
make check TESTS=tests/df/df-P.sh VERBOSE=yes SUBDIRS=. >> log 2>&1
For some tests, you can get even more detail by adding DEBUG=yes.
Then include the contents of the file 'log' in your bug report.
***************************************
There are many tests, but nowhere near as many as we need.
Additions and corrections are very welcome.
If you see a problem that you've already reported, feel free to re-report
it -- it won't bother me to get a reminder. Besides, the more messages I
get regarding a particular problem the sooner it'll be fixed -- usually.
If you sent a complete patch and, after a couple weeks you haven't
received any acknowledgement, please ping us. A complete patch includes
a well-written ChangeLog entry, unified (diff -u format) diffs relative
to the most recent test release (or, better, relative to the latest
sources in the public repository), an explanation for why the patch is
necessary or useful, and if at all possible, enough information to
reproduce whatever problem prompted it. Plus, you'll earn lots of
karma if you include a test case to exercise any bug(s) you fix.
Here are instructions for checking out the latest development sources:
https://savannah.gnu.org/git/?group=coreutils
If your patch adds a new feature, please try to get some sort of consensus
that it is a worthwhile change. One way to do that is to send mail to
coreutils@gnu.org including as much description and justification
as you can. Based on the feedback that generates, you may be able to
convince us that it's worth adding. Please also consult the list of
previously discussed but ultimately rejected feature requests at:
https://www.gnu.org/software/coreutils/rejected_requests.html
WARNING: Now that we use the ./bootstrap script, you should not run
autoreconf manually. Doing that will overwrite essential source files
with older versions, which may make the package unbuildable or introduce
subtle bugs.
WARNING: If you modify files like configure.in, m4/*.m4, aclocal.m4,
or any Makefile.am, then don't be surprised if what gets regenerated no
longer works. To make things work, you'll have to be using appropriate
versions of the tools listed in bootstrap.conf's buildreq string.
All of these programs except 'test' recognize the '--version' option.
When reporting bugs, please include in the subject line both the package
name/version and the name of the program for which you found a problem.
For general documentation on the coding and usage standards
this distribution follows, see the GNU Coding Standards at:
https://www.gnu.org/prep/standards/
For any copyright year range specified as YYYY-ZZZZ in this package
note that the range specifies every single year in that closed interval.
Mail suggestions and bug reports for these programs to
the address on the last line of --help output.
========================================================================
Copyright (C) 1998-2021 Free Software Foundation, Inc.
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,918 @@
These people have contributed to the GNU coreutils (formerly, the fileutils,
textutils, and/or sh-utils packages). Some have reported problems, others
have contributed improvements to the documentation, actual code, and even
complete programs. Those contributions are described in the version control
logs and ChangeLog files. If your name has been left out, if you'd rather
not be listed, or if you'd prefer a different address be used, please send a
note to the GNU coreutils mailing list <coreutils@gnu.org>.
??? kytek@cybercomm.net
A Costa agcosta@gis.net
Aaron Burgemeister dajoker@gmail.com
Aaron Davies aaron.davies@gmail.com
Aaron Hawley ashawley@uvm.edu
Achilles Gaikwad agaikwad@redhat.com
Achim Blumensath blume@corona.oche.de
Adam Borowski kilobyte@angband.pl
Adam Jimerson vendion@charter.net
Adam Klein aklein@debian.org
Adam Sampson ats@offog.org
Adrian Bunk bunk@stusta.de
AIDA Shinra shinra@j10n.org
Akim Demaille akim.demaille@gmail.com
Alain Magloire alain@qnx.com
Alan Curry pacman-cu@kosh.dhis.org
Alan Iwi iwi@atm.ox.ac.uk
Alan Jenkins alan-jenkins@tuffmail.co.uk
Alban Bedel alban.bedel@avionic-design.de
Albert Chin-A-Young china@thewrittenword.com
Albert Hopkins ahopkins@dynacare.com
Alberto Accomazzi alberto@cfa0.harvard.edu
aldomel aldomel@ix.netcom.com
Aleksej Serdjukov deletesoftware@yandex.ru
Aleksej Shilin rootlexx@mail.ru
Alen Muzinic zveki@fly.cc.fer.hr
Alex Deymo deymo@chromium.org
Alexander Nguyen vinh@seas.ucla.edu
Alexander V. Lukyanov lav@netis.ru
Alexandre Duret-Lutz duret_g@epita.fr
Alexey Solovyov alekso@math.uu.se
Alexey Vyskubov alexey@pippuri.mawhrin.net
Alfred M. Szmidt ams@kemisten.nu
Allen Hewes allen@decisiv.net
Ambrose Feinstein ambrose@google.com
Amr Ali amr.ali.cc@gmail.com
Anders Jonsson anders.jonsson@norsjovallen.se
Anders Kaseorg andersk@mit.edu
Andi Kleen freitag@alancoxonachip.com
Andre Novaes Cunha Andre.Cunha@br.global-one.net
Andreas Dilger adilger@sun.com
Andreas Dilger adilger@whamcloud.com
Andreas Frische andreasfrische@gmail.com
Andreas Gruenbacher andreas.gruenbacher@gmail.com
Andreas Jaeger jaeger@gnu.org
Andreas Luik luik@isa.de
Andreas Mohr andi@lisas.de
Andreas Schwab schwab@linux-m68k.org
Andreas Stolcke stolcke@ICSI.Berkeley.EDU
Andrei Gaponenko andr@triumf.ca
Andres Soolo andres@soolo.matti.ee
Andrew Burgess aab@cichlid.com
Andrew Church achurch@achurch.org
Andrew Dalke dalke@bioreason.com
Andrew D Warshall warshall@99main.com
Andrew Fabbro andrew@fabbro.org
Andrew Pham andpha@us.ibm.com
Andrew Tridgell tridge@samba.org
Andrey Borzenkov arvidjaar@mail.ru
Andries Brouwer Andries.Brouwer@cwi.nl
Andy Longton alongton@metamark.com
Ángel González keisial@gmail.com
Anoop Sharma sendtoanoop@gmail.com
Anthony Thyssen anthony@griffith.edu.au
Anton Ovchinnikov revolver112@gmail.com
Antonio Ospite ao2@ao2.it
Antonio Rendas ajrendas@yahoo.com
Ariel Faigon ariel@cthulhu.engr.sgi.com
Arjan Opmeer arjan.opmeer@gmail.com
Arkadiusz Miśkiewicz arekm@maven.pl
Arman Absalan armanaxh@gmail.com
Arne Henrik Juul arnej@imf.unit.no
Arnold Robbins arnold@skeeve.com
Arthur Pool pool@commerce.uq.edu.au
Arun Sharma arun.sharma@intel.com
Arvind Autar Autar022@planet.nl
Assaf Gordon assafgordon@gmail.com
Augey Mikus mikus@dqc.org
Aurelien Jarno aurel32@debian.org
Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
Axel Dörfler axeld@pinc-software.de
Axel Kittenberger Anshil@gmx.net
Ayappan ayappap2@in.ibm.com
Barry Kelly http://blog.barrkel.com/
Bauke Jan Douma bjdouma@xs4all.nl
Ben Elliston bje@air.net.au
Ben Harris bjh21@netbsd.org
Ben Pfaff blp@cs.stanford.edu
Ben Walton bdwalton@gmail.com
Bengt Martensson bengt@mathematik.uni-Bremen.de
Benjamin Cutler cutlerbc@simla.colostate.edu
Benno Schulenberg bensberg@justemail.net
Benno Schulenberg bensberg@telfort.nl
Benoît Knecht benoit.knecht@fsfe.org
Bernard Giroud bernard.giroud@creditlyonnais.ch
Bernd Eckenfels ecki@debian.org
Bernd Leibing bernd.leibing@rz.uni-ulm.de
Bernd Melchers melchers@cis.fu-berlin.de
Bernhard Baehr bernhard.baehr@gmx.de
Bernhard Gabler bernhard@uni-koblenz.de
Bernhard Marx berny@bernhard-marx.de
Bernhard Rosenkraenzer bero@redhat.de
Bernhard Voelker mail@bernhard-voelker.de
Bert Deknuydt Bert.Deknuydt@esat.kuleuven.ac.be
Bert Wesarg bert.wesarg@googlemail.com
Bill Brelsford wb@k2di.net
Bill Peters peters@gaffel.as.arizona.edu
Bishop Bettini bishop.bettini@gmail.com
Bjarni Ingi Gislason bjarniig@rhi.hi.is
Bjorn Helgaas helgaas@rsn.hp.com
Bo Borgerson gigabo@gmail.com
Bo Rydberg bolry@hotmail.com
Bob McCracken kerouac@ravenet.com
Bob Proulx bob@proulx.com
Bogdan Drozdowski bogdandr@op.pl
Boris Ranto branto@redhat.com
Branden Robinson branden@necrotic.deadbeast.net
Brendan O'Dea bod@compusol.com.au
Brent Petit brent.petit@hpe.com
Brian Foster bfoster@redhat.com
Brian Kimball bfk@footbag.org
Brian M. Carlson sandals@crustytoothpaste.ath.cx
Brian Silverman bsilverman@conceptxdesign.com
Brian Youmans 3diff@gnu.org
Britton Leo Kerin fsblk@aurora.uaf.edu
Bruce Korb bkorb@gnu.org
Bruce Robertson brucer@theodolite.dyndns.org
Bruno Haible bruno@clisp.org
Brynnen Owen owen@illinois.edu
C de-Avillez hggdh2@gmail.com
Carl Edquist edquist@cs.wisc.edu
Carl Johnson carlj@cjlinux.home.org
Carl Lowenstein cdl@mpl.UCSD.EDU
Carl Roth roth@urs.us
Carlos Canau Carlos.Canau@relay.puug.pt
Carlos Santos casantos@datacom.com.br
Charles Karney karney@pppl.gov
Charles Randall crandall@matchlogic.com
Chas. Owens chas.owens@gmail.com
Chen Guo chen.guo.0625@gmail.com
Chengwei Yang chengwei.yang@intel.com
Chih-Hsuan Yen yan12125@gmail.com
Chip Salzenberg chip@valinux.com
Choi Jongu zoopi01@gmail.com
Chris Clayton chris2553@googlemail.com
Chris Davies chris@roaima.co.uk
Chris Faylor cgf@cygnus.com
Chris J. Bednar cjb@AdvancedDataSolutions.com
Chris Jones cjns1989@gmail.com
Chris Lesniewski ctl@mit.edu
Chris Meyering christophe.meyering@gmail.com
Chris Sylvain csylvain@umm.edu
Chris Yeo cyeo@biking.org
Christi Alice Scarborough christi@chiark.greenend.org.uk
Christian Harkort christian.harkort@web.de
Christian Jullien eligis@orange.fr
Christian Krackowizer ckrackowiz@std.schuler-ag.com
Christian Rose menthos@menthos.com
Christian von Roques roques@pond.sub.org
Christoph Anton Mitterer calestyo@scientia.net
Christophe LYON christophe.lyon@st.com
Chuck Hedrick hedrick@klinzhai.rutgers.edu
Chusslove Illich caslav.ilic@gmx.net
Clark Morgan cmorgan@aracnet.com
Clement Wang clem.wang@overture.com
Cliff Miller cbm@whatexit.org
Cojocaru Alexandru xojoc@gmx.com
Colin Leitner colin.leitner@googlemail.com
Colin Plumb colin@nyx.net
Colin Watson cjwatson@debian.org
Collin Rogowski collin@rogowski.de
Cray-Cyber Project http://www.cray-cyber.org
Cristian Cadar cristic@stanford.edu
Cyril Bouthors cyril@bouthors.org
D. Hugh Redelmeier hugh@mimosa.com
Daiki Ueno ueno@gnu.org
Dale Scheetz dwarf@polaris.net
Dameon G. Rogers dgr03@uark.edu
Daming Yang lion@aosc.io
Dan Hagerty hag@gnu.ai.it.edu
Dan Hipschman dsh@linux.ucla.edu
Dan Jacobson jidanni@jidanni.org
Dan Pascu dan@services.iiruc.ro
Daniel Bergstrom noa@melody.se
Daniel Dunbar daniel@zuster.org
Daniel J Walsh dwalsh@redhat.com
Daniel Lockyer thisisdaniellockyer@gmail.com
Daniel Mach dmach@redhat.com
Daniel P. Berrangé berrange@redhat.com
Daniel Schepler dschepler@gmail.com
Daniel Stavrovski d@stavrovski.net
Daniel Tschinder daniel.tschinder@project-a.com
Dániel Varga danielv@axelero.hu
Danny Levinson danny.levinson@overture.com
Dario Giovannetti dariogiova@gmail.com
Darrel Francis d.francis@cheerful.com
Darren Salt ds@youmustbejoking.demon.co.uk
Dave Beckett dajobe@dajobe.org
Dave Chiluk chiluk@canonical.com
David Alan Gilbert gilbertd@treblig.org
David A. Wheeler dwheeler@dwheeler.com
David Bartley dtbartle@csclub.uwaterloo.ca
David Diggles david.diggles@dnrm.qld.gov.au
David Dyck dcd@tc.fluke.COM
David Eisner cradle@umd.edu
David Flynn dav@chess.plus.com
David Gast dgast@csulb.edu
David Godfrey dave@delta.demon.co.uk
David Luyer david_luyer@pacific.net.au
David Madore david.madore@ens.fr
David Malone dwmalone@cnri.dit.ie
David Matei matei@cs.toronto.edu
David Michael fedora.dm0@gmail.com
David Sterba dsterba@suse.cz
Davide Canova kc.canova@gmail.com
Dawson Engler engler@stanford.edu
Dean Gaudet dean-savannah@arctic.org
Deepak Goel deego@gnufans.org
Denis Excoffier gcc@Denis-Excoffier.org
Denis McKeon dmckeon@swcp.com
Dennis Clarke dclarke@blastwave.org
Dennis Henriksen opus@flamingo.osrl.dk
Dennis Smit ds@nerds-incorporated.org
Derek Clegg dclegg@next.com
Dick Streefland dick_streefland@tasking.com
Dirk Lattermann dlatt@t-online.de
Dirk-Jan Faber djfaber@snow.nl
Dmitry Monakhov dmonakhov@openvz.org
Dmitry Rutsky rutsky@school.ioffe.rssi.ru
Dmitry V. Levin ldv@altlinux.org
Don Parsons dparsons@synapse.kent.edu
Donni Erpel donald@appc11.gsi.de
Doug Coleman coleman@iarc1.ece.utexas.edu
Doug McLaren dougmc@comco.com
Dragos Harabor dharabor@us.oracle.com
Duncan Roe duncanr@optimation.com.au
Dylan Cali calid1984@gmail.com
Dylan Simon dylan@dylex.net
Ed Avis ed@membled.com
Ed Santiago ed@edsantiago.com
Edgars Irmejs edgars.irmejs@gmail.com
Edward Schwartz edmcman@cmu.edu
Edward Welbourne eddy@chaos.org.uk
Edzer Pebesma Edzer.Pebesma@rivm.nl
Egmont Koblinger egmont@uhulinux.hu
Eirik Fuller eirik@hackrat.com
Eivind eivindt@multinet.no
Elbert Pol elbert.pol@gmail.com
Eldon Stegall eldon@eldondev.com
Eli Zaretskii eliz@is.elta.co.il
Elias Pipping pipping@gentoo.org
Emanuele Giacomelli vpooldyn-linux@yahoo.it
Emil Engler me@emilengler.com
Emile LeBlanc leblanc@math.toronto.edu
Emmanuel Lacour elacour@home-dn.net
Enrico Scholz enrico.scholz@informatik.tu-chemnitz.de
Eric Backus ericb@lsid.hp.com
Eric Bergen eric.bergen@gmail.com
Eric Blake eblake@redhat.com
Eric G. Miller egm2@jps.net
Eric Pemente pemente@northpark.edu
Eric S. Raymond esr@snark.thyrsus.com
Erik Auerswald auerswal@unix-ag.uni-kl.de
Erik Bennett bennett@cvo.oneworld.com
Erik Bernstein erik@fscking.org
Erik Corry erik@kroete2.freinet.de
Evan Hunt ethanol@armory.com
Federico Simoncelli fsimonce@redhat.com
Felix Lee flee@teleport.com
Felix Rauch Valenti frauch@cse.unsw.edu.au
Ferdinand fw@scenic.mine.nu
Filipp Gunbin fgunbin@fastmail.fm
Filipus Klutiero chealer@gmail.com
Fletcher Mattox fletcher@cs.utexas.edu
Florent Bayle florent@sarcelle.net
Florian Schlichting fschlich@cis.fu-berlin.de
Florin Iucha fiucha@hsys.mic.ro
Francesco Montorsi fr_m@hotmail.com
François Pinard pinard@iro.umontreal.ca
François Rigault rigault.francois@gmail.com
Frank Adler fadler@allesklar.de
Frank T Lofaro ftlofaro@snooks.Egr.UNLV.EDU
Fred Fish fnf@ninemoons.com
Frédéric L. W. Meunier 0@pervalidus.net
Frederik Eaton frederik@caltech.edu
Fridolin Pokorny fpokorny@redhat.com
FUJIWARA Katsunori foozy@lares.dti.ne.jp
Gabor Z. Papp gzp@gzp.org.hu
Gaël Quéri gqueri@mail.dotcom.fr
Galen Hazelwood galenh@micron.net
Gary Anderson ganderson@clark.net
Gary Johnson garyjohn@spk.agilent.com
Gary V. Vaughan gary@gnu.org
Gaute Hvoslef Kvalnes gaute@verdsveven.com
Geoff Collyer geoff at collyer.net
Geoff Kuenning geoff@cs.hmc.edu
Geoff Odhner geoff@franklin.com
Geoff Whale geoffw@cse.unsw.EDU.AU
George Burgess IV gbiv@chromium.org
Gerald Pfeifer gerald@pfeifer.com
Gerhard Poul gpoul@gnu.org
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
Gian Piero Carrubba gpiero@rm-rf.it
Gilles Espinasse g.esp@free.fr
Giuseppe Scrivano gscrivano@gnu.org
Glen Lenker glen.lenker@gmail.com
Göran Uddeborg goeran@uddeborg.se
GOTO Masanori gotom@debian.or.jp
G.P. Halkes buscom@ghalkes.nl
Greg Louis glouis@dynamicro.on.ca
Greg McGary gkm@gnu.org
Greg Metcalfe metcalfegreg@qwest.net
Greg Schafer gschafer@zip.com.au
Greg Troxel gdt@bbn.com
Greg Wooledge gawooledge@sherwin.com
Gregory Leblanc gleblanc@cu-portland.edu
Grigorii Sokolik g.sokol99@g-sokol.info
Guenter Knauf lists@gknw.net
Guido Leenders guido.leenders@invantive.com
Guilherme de Almeida Suckevicz guito.linux@gmail.com
Guntram Blohm Extern.Guntram.Blohm@AUDI.DE
Guochun Shi gshi@ncsa.uiuc.edu
H. J. Lu hjl@valinux.com
Hans Ginzel hans@matfyz.cz
Hans Lermen lermen@fgan.de
Hans Verkuil hans@wyst.hobby.nl
Harald Dunkel harald.dunkel@t-online.de
Harald Hoyer harald@redhat.com
Harry Liu rliu@lek.ugcs.caltech.edu
Harti Brandt brandt@fokus.fraunhofer.de
Harvey Eneman Harvey.Eneman@oracle.com
Heikki Orsila heikki.orsila@iki.fi
Heiko Marr h.marr@webmasters.de
Helen Faulkner helen_ml_faulkner@yahoo.co.uk
Herbert Xu herbert@gondor.apana.org.au
Holger Berger hberger@ess.nec.de
Hon-Yin Kok hkok@yoda.unl.edu
Hugh Daniel hugh@xanadu.com
Iain Calder ic56@rogers.com
Ian Bruce ian.bruce@myrealbox.com
Ian Jackson ijackson@chiark.greenend.org.uk
Ian Kent ikent@redhat.com
Ian Lance Taylor ian@cygnus.com
Ian Turner vectro@pipeline.com
Iida Yosiaki iida@gnu.org
Illia Bobyr ibobyr@google.com
Ilya N. Golubev gin@mo.msk.ru
Ingo Saitz ingo@debian.org
Ingo Weinhold ingo_weinhold@gmx.de
Ivan Labath labath3@st.fmph.uniba.sk
Ivan Sichmann Freitas ivansichfreitas@gmail.com
Ivo Timmermans ivo@debian.org
J. Scott Edwards qrw.software@gmail.com
Jaak Ristioja jaak.ristioja@cyber.ee
Jack Howarth howarth.mailing.lists@gmail.com
Jacky Fong jacky.fong@utoronto.ca
Jacob Keller jacob.e.keller@intel.com
Jakob Truelsen jakob@scalgo.com
James Antill jmanti%essex.ac.uk@seralph21.essex.ac.uk
James Hunt jamesodhunt@hotmail.com
James james@albion.glarp.com
James Lemley James.Lemley@acxiom.com
James Ralston ralston@pobox.com
James R. Van Zandt jrv@debian.org
James Sneeringer jvs@ocslink.com
James Tanis jtt@soscorp.com
James Youngman jay@gnu.org
Jamie Lokier jamie@imbolc.ucc.ie
Jamie McClelland jm@mayfirst.org
Jan Blunck jblunck@suse.de
Jan Engelhardt jengelh@medozas.de
Jan Fedak J.Fedak@sh.cvut.cz
Jan Moringen jan.moringen@uni-bielefeld.de
Jan Nieuwenhuizen janneke@gnu.org
Janne Snabb snabb@epipe.com
Janos Farkas chexum@shadow.banki.hu
Jan-Pawel Wrozstinski jpwroz@gmail.com
Jari Aalto jari.aalto@cante.net
Jarkko Hietaniemi jhi@epsilon.hut.fi
Jarkko Sakkinen jarkko.sakkinen@iki.fi
Jarod Wilson jwilson@redhat.com
Jarosław Gruca jgruca1981@gmail.com
Jason Kim git@jasonk.me
Jason Smith jasonmsmith@google.com
Javier López chilicuil@ubuntu.com
Jean Charles Delepine delepine@u-picardie.fr
Jean Delvare jdelvare@suse.de
Jean-Pierre Tosoni jpt.7196@gmail.com
Jeff Layton jlayton@kernel.org
Jeff Liu jeff.liu@oracle.com
Jeff Moore jbm@mordor.com
Jeff Sheinberg jeff@bsrd.net
Jens Elkner elkner@imsgroup.de
Jens Schmidt jms@jsds.hamburg.com
Jeph Cowan jeph@ucar.edu
Jeremy Maitin-Shepard jbms@cmu.edu
Jérémy Compostella jeremy.compostella@gmail.com
Jérémy Magrin jeremy.magrin@epitech.eu
Jerome Abela abela@hsc.fr
Jérôme Zago bug-coreutils-ml@agt-the-walker.net
Jerry Snitselaar dev@snitselaar.org
Jesse Kornblum kornblum@usna.edu
Jesse Thilo jgt2@eecs.lehigh.edu
Jie Xu xuj@iag.net
Jim Blandy jimb@cyclic.com
Jim Dennis jimd@starshine.org
Jim Meyering jim@meyering.net
Jirka Hladky jhladky@redhat.com
Joachim Schmitz jojo@schmitz-digital.de
Joakim Rosqvist dvljrt@cs.umu.se
Jochen Hein jochen@jochen.org
Joe Orton joe@manyfish.co.uk
Joel E. Denny jdenny@clemson.edu
Joerg Sonnenberger joerg@britannica.bec.de
Joey Degges jdegges@gmail.com
Joey Hess joeyh@debian.org
Johan Boule bohan@bohan.dyndns.org
Johan Danielsson joda@pdc.kth.se
Johannes Altmanninger aclopte@gmail.com
John Bley jbb6@acpub.duke.edu
John da_audiophile@yahoo.com
John David Anglin dave.anglin@nrc.ca
John Gatewood Ham zappaman@alphabox.compsci.buu.ac.th
John Gotts jgotts@umich.edu
John Kendall kendall@capps.com
John Kodis kodis@acm.org
John Murphy jam@philabs.research.philips.com
John Roll john@panic.harvard.edu
John Salmon johns@mullet.anu.edu.au
John Stanley johnstops@verizon.net
John Summerfield summer@OS2.ami.com.au
Jon Peatfield J.S.Peatfield@damtp.cam.ac.uk
Jon Ringuette jonr@scharp.org
Joost van Baal joostvb@xs4all.nl
Jordi Pujol jordipujolp@gmail.com
Jorge Stolfi stolfi@ic.unicamp.br
Josef Cejka jcejka@suse.com
Joseph D. Wagner joe@josephdwagner.info
Joseph S. Myers jsm28@cam.ac.uk
Josh Triplett josh@freedesktop.org
Joshua Hudson joshudson@gmail.com
Josselin Mouette joss@debian.org
Juan F. Codagnone juam@arnet.com.ar
Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de
Julian Bradfield jcb@inf.ed.ac.uk
Julian Büning julian.buening@rwth-aachen.de
Jungshik Shin jshin@pantheon.yale.edu
Juraj Marko jmarko@redhat.com
Jürgen Fluk louis@dachau.marco.de
Jurriaan thunder7@xs4all.nl
Justin Pryzby justinpryzby@users.sourceforge.net
Justin Tracey j2tracey@gmail.com
jvogel jvogel@linkny.com
Kai Henningsen kai@debian.org
Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
Kalle Olavi Niemitalo kon@iki.fi
Kamal Paul Nigam Kamal_Paul_Nigam@gs35.sp.cs.cmu.edu
Kamil Dudka kdudka@redhat.com
Karel Zak kzak@redhat.com
Karl Berry karl@gnu.org
Karl Eichwalder keichwa@gmx.net
Karl Heuer kwzh@gnu.org
Karl-Michael Schneider schneide@phil.uni-passau.de
Karsten Thygesen karthy@kom.auc.dk
Kaveh R. Ghazi ghazi@caip.rutgers.edu
Kaxandra Labat kaxandra.labat@gmail.com
Keith M. Briggs keith.briggs@bt.com
Keith Owens kaos@audio.apana.org.au
Keith Thompson Keith.S.Thompson@gmail.com
Ken Booth ken@booths.org.uk
Ken Irving ken.irving@alaska.edu
Ken Pizzini kenp@halcyon.com
Kevin Locke kevin@kevinlocke.name
Kevin Lyda kevin@ie.suberic.net
Kevin Mudrick kmudrick@healthmarketscience.com
Kim Hansen kim@i9.dk
Kirk Kelsey kirk.kelsey@0x4b.net
Kjetil Torgrim Homme kjetilho@ifi.uio.no
KO Myung-Hun komh@chollian.net
KOBAYASHI Takashi a1415tk@aiit.ac.jp
Konrad Wróblewski coni@o2.pl
Kristin E Thomas kristint@us.ibm.com
Kristoffer Brånemyr ztion1@yahoo.se
Kristoffer Rose kris@diku.dk
Krzysztof Goj krzysztof.goj@gmail.com
Ladislav Hagara ladislav.hagara@unob.cz
Larry McVoy lm@sgi.com
Lars Hecking lhecking@nmrc.ucc.ie
Lasse Collin lasse.collin@tukaani.org
Leah Q eequor@earthlink.net
Lehti Rami rammer@cs.tut.fi
Leonard N. Zubkoff lnz@dandelion.com
Leonardo Milano lmilano@udel.edu
Lluís Batlle viriketo@gmail.com
Lorne Baker lbaker@nitro.avint.net
Ludovic Courtès ludo@gnu.org
Luke Hassell lukehassell@yahoo.com
Luke Kendall lukekendall@optushome.com.au
Luther Thompson lutheroto@gmail.com
M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
Maciej Kwapulinski pikpok@univ.gda.pl
Manas Garg manas@cygsoft.com
Manfred Hollstein manfred@s-direktnet.de
Manolis Ragkousis manolis837@gmail.com
Marc Boucher marc@mbsi.ca
Marc Haber mh+debian-bugs@zugschlus.de
Marc Kleine-Budde mkl@pengutronix.de
Marc Lehman schmorp@schmorp.de
Marc Mengel mengel@fnal.gov
Marc Olzheim marcolz@stack.nl
Marcel Böhme https://www.comp.nus.edu.sg/~mboehme
Marco Franzen Marco.Franzen@Thyron.com
Marcus Brinkmann https://www.marcus-brinkmann.de
Marcus Daniels marcus@ee.pdx.edu
Marek Polacek mpolacek@redhat.com
Mark A. Thomas thommark@access.digex.net
Mark Conty Mark_Conty@cargill.com
Mark D. Roth roth@uiuc.edu
Mark Funkenhauser mfunkenhauser@rogers.com
Mark Harris mark@monitor.designacc.com
Mark Hewitt mhewitt@armature.com
Mark Hounschell markh@compro.net
Mark Hubbart discord@mac.com
Mark Kettenis kettenis@phys.uva.nl
Mark Korenberg socketpair@gmail.com
Mark Melahn mmelahn@gmail.com
Mark Nudelman marknu@flash.net
Mark W. Eichin eichin@cygnus.com
Markus Demleitner msdemlei@auriga.ari.uni-heidelberg.de
Markus Duft mduft@gentoo.org
Martial Bornet mbornet.pro@gmail.com
Martin Buck martin.buck@ascom.ch
Martin Bukatovic martin.bukatovic@gmail.com
Martin Castillo castilma@uni-bremen.de
Martin Gallant martyg@goodbit.net
Martin Hippe martin.hippe@schlund.de
Martin Jacobs martin.jacobs@arcor.de
Martin martin@dresden.nacamar.de
Martin Michlmayr tbm@cyrius.com
Martin Mitchell martin@debian.org
Martin P.J. Zinser zinser@decus.de
Marty Leisner leisner@sdsp.mc.xerox.com
Masami Takikawa takikawm@CS.ORST.EDU
Mate Wierdl mw@moni.msci.memphis.edu
Matej Vela mvela@public.srce.hr
Matěj Cepl mcepl@redhat.com
Mathias Brodala info@noctus.net
Mathieu Bridon bochecha@fedoraproject.org
Matias A. Fonzo selk@dragora.org
Matt Harden matth@mindspring.com
Matt Kraai kraai@ftbfs.org
Matt McCutchen matt@mattmccutchen.net
Matt Perry matt@primefactor.com
Matt Pham mattvpham@gmail.com
Matt Schalit mschalit@pacbell.net
Matt Swift swift@alum.mit.edu
Matthew Arnison maffew@cat.org.au
Matthew Braun matthew@ans.net
Matthew Clarke Matthew_Clarke@mindlink.bc.ca
Matthew M. Boedicker matthewm@boedicker.org
Matthew Pfeiffer spferical@gmail.com
Matthew S. Levine mslevine@theory.lcs.mit.edu
Matthew Smith matts@bluesguitar.org
Matthew Swift swift@alum.mit.edu
Matthew Woehlke mw_triad@users.sourceforge.net
Matthias Urlichs smurf@noris.de
Matti Aarnio matti.aarnio@zmailer.org
Mattias Wadenstein maswan@acc.umu.se
Max Chang maxchang@ucla.edu
Maxime de Roucy maxime.deroucy@gmail.com
Meelis Roos mroos@tartu.cyber.ee
Micah Cowan micah@cowan.name
Michael Bacarella mbac@netgraft.com
Michael Deutschmann michael@talamasca.ocis.net
Michael Elizabeth Chastain mec.gnu@mindspring.com
Michael Gaughen mgaughen@polyserve.com
Michael Hasselberg mikelh@zonta.ping.de
Michael Heimpold mhei@heimpold.de
Michael Hohn hohn@math.utah.edu
Michael J. Croghan mcroghan@usatoday.com
Michael J. Daniel michael.j.daniel@comcast.net
Michael McFarland sidlon@yahoo.com
Michael McLagan mmclagan@invlogic.com
Michael Meskes michael@fam-meskes.de
Michael michael@aplatform.com
Michael ??? michael@roka.net
Michael Mol mikemol@gmail.com
Michael Orlitzky michael@orlitzky.com
Michael Piefel piefel@informatik.hu-berlin.de
Michael Price mprice@atl.lmco.com
Michael Speer knomenet@gmail.com
Michael Steffens michael.steffens@s.netic.de
Michael Stone mstone@debian.org
Michael Stummvoll michael@stummi.org
Michael Stutz stutz@dsl.org
Michael van Elst mlelstv@dev.de.cw.net
Michael Veksler mveksler@techunix.technion.ac.il
Michael Witten mfwitten@gmail.com
Michail Litvak mci@owl.openwall.com
Michal Nazarewicz mina86@mina86.com
Michal Politowski mpol@charybda.icm.edu.pl
Michal Svec msvec@suse.cz
Michal Trunecka mtruneck@redhat.com
Michel Robitaille robitail@IRO.UMontreal.CA
Michiel Bacchiani bacchian@raven.bu.edu
Mikael Magnusson mikachu@gmail.com
Mike Castle dalgoda@ix.netcom.com
Mike Coleman mkc@mathdogs.com
Mike Frysinger vapier@gentoo.org
Mike Jetzer mjetzer@mke.catalystwms.com
Mike Swanson mikeonthecomputer@gmail.com
Mikko Tuumanen m@sorvankyla.yok.utu.fi
Mikulas Patocka mikulas@artax.karlin.mff.cuni.cz
Miles Bader miles@gnu.ai.mit.edu
Minh Tran-Le tranle@intellicorp.com
Mitchel Humpherys mitch.special@gmail.com
Moritz Orbach ml-coreutils@apfelboymchen.homeunix.net
Morten Welinder terra@diku.dk
Nadav Har'El nyh@math.technion.ac.il
Namhyung Kim namhyung@gmail.com
Nao Nishijima nao.nishijima.xt@hitachi.com
Neal H Walfield neal@cs.uml.edu
Neil F. Brown neilb@suse.de
Nelson H. F. Beebe beebe@math.utah.edu
Nguyễn Thái Ngọc Duy pclouds@gmail.com
Nick Alcock nick.alcock@oracle.com
Nick Estes debian@nickstoys.com
Nick Graham nick.d.graham@gmail.com
Nick Lawes nlawes@silverplatter.com
Nickolai Zeldovich nickolai@cs.stanford.edu
Nicolas François nicolas.francois@centraliens.net
Nicolas Iooss nicolas.iooss@m4x.org
Niels Möller nisse@lysator.liu.se
Niklas Edmundsson nikke@acc.umu.se
Nikola Milutinovic Nikola.Milutinovic@ev.co.yu
Nikolas Kallis nik@nikolaskallis.com
Nikolaus Rath Nikolaus@rath.org
Nikolay Nechaev Nikolay_Nechaev@mail.ru
Nikos Mavrogiannopoulos nmav@redhat.com
Nima Nikzad nnikzad@ucla.edu
Nishant Nayan nishant.nayan@oracle.com
Nix nix@esperi.org.uk
nl6720 nl6720@gmail.com
Noah Friedman friedman@splode.com
Noel Cragg noel@red-bean.com
Norbert Kiesel nkiesel@tbdnetworks.com
Norihiro Kamae norihiro@nagater.net
Olatunji Oluwabukunmi Ruwase tjruwase@stanford.edu
Olav Morkrid olav@funcom.com
Ole Laursen olau@hardworking.dk
Oliver Kiddle okiddle@yahoo.co.uk
Olivier Fourdan ofourdan@redhat.com
Ondrej Oprala ooprala@redhat.com
Ondřej Vašík ovasik@redhat.com
Ørn E. Hansen oehansen@daimi.aau.dk
Oskar Liljeblad osk@hem.passagen.se
Otavio Salvador otavio@ossystems.com.br
Pádraig Brady pbrady@fb.com
Pádraig Brady P@draigBrady.com
Paolo Bonzini bonzini@gnu.org
Patrick Mauritz oxygene@studentenbude.ath.cx
Patrick Schoenfeld schoenfeld@debian.org
Patrick W. Plusnick II pwplusnick2@gmail.com
Paul D. Smith psmith@gnu.org
Paul Eggert eggert@cs.ucla.edu
Paul Ghaleb paul.ghaleb@st.com
Paul Jarc prj@po.cwru.edu
Paul Marinescu paul.marinescu@imperial.ac.uk
Paul Nevai nevai@ops.mps.ohio-state.edu
Paul Sauer paul@alexa.com
Paul Slootman paul@debian.org
Paul Townsend aab@purdue.edu
Paul Worrall paul@basilisk.uklinux.net
Pawel Prokop pablo@wizard.ae.krakow.pl
Peng Yu pengyu.ut@gmail.com
Per Cederqvist ceder@lysator.liu.se
Per Kristian Hove perhov@math.ntnu.no
Per Starbäck starback@stp.lingfil.uu.se
Peter Benie pjb1008@cam.ac.uk
Peter Bray pdb_ml@yahoo.com.au
Peter Breitenlohner peb@mppmu.mpg.de
Peter Dyballa peter_dyballa@web.de
Peter Eriksson peter@ifm.liu.se
Peter Evans peter@ixp.jp
Peter Fales psfales@alcatel-lucent.com
Peter Horst peter@ointment.org
Peter Moulder reiter@netspace.net.au
Peter O'Gorman bug-coreutils@mlists.thewrittenword.com
Peter Samuelson psamuels@sampo.creighton.edu
Peter Seebach seebs@taniemarie.solon.com
Petr Pisar petr.pisar@atlas.cz
Petr Salinger Petr.Salinger@seznam.cz
Petr Stodůlka pstodulk@redhat.com
Petr Uzel petr.uzel@suse.cz
Petter Reinholdtsen pere@hungry.com
Phelippe Neveu pneveu@pcigeomatics.com
Phil Richards phil.richards@vf.vodafone.co.uk
Philip Rowlands phr@doc.ic.ac.uk
Philipp Gortan gortan@gmail.com
Philipp Thomas pth@suse.de
Philippe De Muyter phdm@macqel.be
Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
Phillip Jones mouse@datastacks.com
Piergiorgio Sartor sartor@sony.de
Pieter Bowman bowman@math.utah.edu
Piotr Gackiewicz gacek@intertele.pl
Piotr Kwapulinski kwap@univ.gda.pl
Pozsár Balázs pozsy@uhulinux.hu
Prashant TR tr@eth.net
Prateek saxena prateeksaxena2@gmail.com
Priit Jõerüüt jemm4jemm@yahoo.com
Primoz PETERLIN primozz.peterlin@gmail.com
Raimonds Miltins raimonds@pro-9.com
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Ralf Wildenhues Ralf.Wildenhues@gmx.de
Ralf W. Stephan stephan@tmt.de
Ralph Loader loader@maths.ox.ac.uk
Rasmus Borup Hansen rbh@intomics.com
Rasmus Villemoes rv@rasmusvillemoes.dk
Raul Miller moth@magenta.com
Raúl Núñez de Arenas Coronado raul@pleyades.net
Rémy Lefevre lefevreremy@gmail.com
Reuben Thomas rrt@sc3d.org
ribalba geerd.dietger.hoffmann@gmail.com
Rich Burridge rich.burridge@oracle.com
Richard A Downing richard.downing@bcs.org.uk
Richard Braakman dark@xs4all.nl
Richard Dawe rich@phekda.freeserve.co.uk
Richard J. Rauenzahn rrauenza@hairball.cup.hp.com
Richard Neill rn214@hermes.cam.ac.uk
Richard Russon rich@flatcap.org
Richard Sharman rsharman@magmacom.com
Rick Sladkey jrs@world.std.com
Rick Stanley rstanley@rsiny.com
Rik Faith faith@cs.unc.edu
Rishabh Dave rishabhddave@gmail.com
Risto Kankkunen kankkune@lingsoft.fi
Rob Day robertkday@gmail.com
Rob Wortman wyrm@haell.com
Robert H. de Vries robert@and.nl
Robert Lindgren robert@orcafat.com
Robert Millan zeratul2@wanadoo.es
Robert Schwebel r.schwebel@pengutronix.de
Robin H. Johnson robbat2@gentoo.org
Rodrigo Campos rodrigo@sdfg.com.ar
Rogier Wolff R.E.Wolff@BitWizard.nl
Roland Hieber rohieb@rohieb.name
Roland Huebner ro-huebner@gmx.de
Roland Turner raz.tah.bet@raz.cx
Roman Rybalko devel@romanr.info
Ronald F. Guilmette rfg@netcom.com
Ross Alexander r.alexander@auckland.ac.nz
Ross Paterson rap@doc.ic.ac.uk
Ross Ridge rridge@calum.csclub.uwaterloo.ca
Rudolf Kastl rkastl@redhat.com
Ruediger Meier sweet_f_a@gmx.de
Sahil Amoli sahilamoli@gmail.com
Sami Farin sfarin@ratol.fi
Sami Kerola kerolasa@iki.fi
Samuel Neves sneves@dei.uc.pt
Samuel Tardieu sam@rfc1149.net
Samuel Thibault samuel.thibault@ens-lyon.org
Samuli Karkkainen Samuli.Karkkainen@hut.fi
Sander van Malssen svm@kozmix.ow.nl
Santiago Vila Doncel sanvila@unex.es
Savochkin Andrey Vladimirovich saw@msu.ru
Scott Harrison scott.gnu.2009@scottrix.co.uk
Scott Lurndal slurn@griffin.engr.sgi.com
Sebastian Kisela skisela@redhat.com
Sébastien Maret smaret@umich.edu
Sergei Steshenko sergstesh@yahoo.com
Sergey Vlasov vsu@altlinux.org
Sergio Durigan Junior sergiodj@sergiodj.net
Shane M Seymour shane.seymour@hp.com
Shayan Pooya shayan@liveve.org
Shing-Shong Shei shei@cs.indiana.edu
Shugo Maeda shugo@ruby-lang.org
Simon Josefsson simon@josefsson.org
Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
Solar Designer solar@owl.openwall.com
Stanislav Ievlev inger@altlinux.ru
Stavros Passas stabat@ics.forth.gr
Stefan Vargyas stvar@yahoo.com
Stefano Lattarini stefano.lattarini@gmail.com
Stephan Krempel krempel@par-tec.com
Stephane Chazelas stephane.chazelas@gmail.com
Stéphane Aulery saulery@free.fr
Stéphane Campinas stephane.campinas@gmail.com
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
Stéphane Raimbault stephane.raimbault@gmail.com
Stephen Depooter sbdep@myrealbox.com
Stephen Eglen eglen@pcg.wustl.edu
Stephen Gildea gildea@stop.mail-abuse.org
Stephen Shirley kormat@gmail.com
Stephen Smoogen smooge@mindspring.com
Steve McConnel steve@acadcomp.sil.org
Steve McIntyre steve@einval.com
Steve Ward planet36@gmail.com
Steven Drake sbd@users.sourceforge.net
Steven G. Johnson stevenj@alum.mit.edu
Steven Mocking ufo@quicknet.nl
Steven Parkes smparkes@smparkes.net
Steven P Watson steven@magelico.net
Steven Schubiger schubiger@gmail.com
Steven Schveighoffer schveiguy@yahoo.com
Stuart Citrin ctrn3e8@gmail.com
Stuart Kemp skemp@peter.bmc.com
Stuart Shelton stuart@shelton.me
Sven Breuner sven.breuner@itwm.fraunhofer.de
Sven Joachim svenjoac@gmx.de
Szakacsits Szabolcs szaka@sienet.hu
Tadayoshi Funaba tadf@kt.rim.or.jp
TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
The Wanderer inverseparadox@comcast.net
Theodore Ts'o tytso@rsts-11.mit.edu
Theodoros V. Kalamatianos thkala@softlab.ece.ntua.gr
Thiago Farina tfransosi@gmail.com
Thien-Thi Nguyen ttn@gnuvola.org
Thomas Bushnell thomas@gnu.ai.mit.edu
Thomas Deutschmann whissi@gentoo.org
Thomas Goerlich thomas@schnappmatik.de
Thomas Hood jdthood@yahoo.co.uk
Thomas Jarosch thomas.jarosch@intra2net.com
Thomas Luzat thomas@luzat.com
Thomas M.Ott thmo-13@gmx.de
Thomas Quinot thomas@Cuivre.FR.EU.ORG
Thomas Schwinge tschwinge@gnu.org
Thomas Wolff mined@towo.net
Tianjia Zhang tianjia.zhang@linux.alibaba.com
Tiger Lee i@tigerlee.me
Tim Gates tim.gates@iress.com
Tim J. Robbins tjr@FreeBSD.org
Tim Mooney mooney@dogbert.cc.ndsu.NoDak.edu
Tim Ryan Tim_Ryan@bnz.co.nz
Tim Smithers mouse@dmouse.com.au
Tim Underwood timunderwood@gmail.com
Tim Waugh twaugh@redhat
Tobias Quathamer toddy@debian.org
Tobias Stoeckmann tobias@stoeckmann.org
Toby Peterson toby@opendarwin.org
Todd A. Jacobs tjacobs@codegnome.org
Tom Fitzhenry tom@tom-fitzhenry.me.uk
Tom Haynes thomas@netapp.com
Tom Quinn trq@dionysos.thphys.ox.ac.uk
Tomas Pospisek tpo@sourcepole.ch
Tomas Smetana t.smetana@gmail.com
Tommi Kyntola tkyntola@cc.hut.fi
Ton Hospel thospel@mail.dma.be
Ton Nijkes ton@murphy.nl
Tony Kocurko akocurko@mun.ca
Tony Leneis tony@plaza.ds.adp.com
Tony Robinson ajr@eng.cam.ac.uk
Toomas Soome Toomas.Soome@Elion.ee
Toralf Förster toralf.foerster@gmx.de
Torbjorn Lindgren tl@funcom.no
Torbjörn Granlund tg@gmplib.org
Torsten Landschoff torsten@pclab.ifg.uni-kiel.de
Travis Gummels tgummels@redhat.com
Tristan Miller psychonaut@nothingisreal.com
Tzvi Rotshtein tzvi.ro@gmail.com
Ulrich Drepper drepper@gnu.org
Ulrich Hermisson ulrich_hermisson@hotmail.com
Urs Thuermann urs@isnogud.escape.de
Uwe H. Steinfeld usteinfeld@gmx.net
Vesselin Atanasov vesselin@bgnet.bg
Ville Skyttä ville.skytta@iki.fi
Vin Shelton acs@alumni.princeton.edu
Vincent Lefevre vincent@vinc17.net
Vineet Chadha chadha@acis.ufl.edu
Vitali Lovich vlovich@gmail.com
Vitaly A. Ostanin vyt@altlinux.org
Vito Caputo vcaputo@pengaru.com
Vlada Macek tuttle@bbs.fsik.cvut.cz
Volker Borchert bt@teknon.de
Volker Paul vpaul@dohle.com
Wartan Hachaturow wart@tepkom.ru
Wayne Stewart wstewa@atl.com
Wenjun Zheng zwj@yahoo.com
Werner Almesberger Werner.Almesberger@epfl.ch
Wichert Akkerman wichert@cistron.nl
Wieland Hoffmann themineo@gmail.com
Will Edgington wedgingt@acm.org
William Bader william@nscs.fast.net
William Dowling will@franklin.com
William Lewis wiml@omnigroup.com
William R. Fraser wfraser@codewise.org
wiregauze wiregauze@yahoo.com
Wis Macomson wis.macomson@intel.com
Wodry coreutils3422@runbox.com
Wojciech Purczynski cliph@isec.pl
Wolfram Kleff kleff@cs.uni-bonn.de
Won-kyu Park wkpark@chem.skku.ac.kr
Xu Zhongxing xu_zhong_xing@163.com
Yang Ren ryang@redhat.com
Yanko Kaneti yaneti@declera.com
Yann Dirson dirson@debian.org
Yigal Korman yigal@plexistor.com
Youngjun Song mastojun@gmail.com
Yunlian Jiang yunlian@chromium.org
Yurij Goncharuk lnkgyv@gmail.com
Yury Usishchev y.usishchev@samsung.com
Yutaka Amanai yasai-itame1942@jade.plala.or.jp
Zartaj Majeed zmajeed@sbcglobal.net
Zooko zookog@gmail.com
Zorro Lang zlang@redhat.com
Zvi Har'El rl@math.technion.ac.il
;; Local Variables:
;; coding: utf-8
;; End:

View file

@ -0,0 +1,159 @@
If you're interested in helping, here are some tasks that we've considered
over the years. Beware: some are quite old and no longer valid. To avoid
wasting your time by duplicating work or by working on a task that is no
longer pertinent, please search the mailing list and post your intent
before embarking on a big project.
==================================================
Modify chmod so that it does not change an inode's st_ctime
when the selected operation would have no other effect.
First suggested by Hans Ecke <https://hans.ecke.ws> in
https://lists.gnu.org/r/bug-coreutils/2004-09/msg00145.html
Discussed more recently on <https://bugs.debian.org/497514>.
document the following in coreutils.texi:
[
pinky
Suggestion from Paul Eggert:
More generally, there's not that much use for imaxtostr nowadays,
since the inttypes module and newer versions of gettext allow things
like _("truncating %s at %" PRIdMAX " bytes") to work portably.
I suspect that (if someone cares to take the time) we can remove
all instances of imaxtostr and umaxtostr in coreutils and gnulib.
cp --recursive: use fts and *at functions to perform directory traversals
in source and destination hierarchy rather than forming full file names.
The latter (current) approach fails unnecessarily when the names
become very long, and requires space and time that is quadratic in the
depth of the hierarchy. [Bo Borgerson is working on this]
printf:
Now that gnulib supports *printf("%a"), import one of the
*printf-posix modules so that printf(1) will support %a even on
platforms where the native *printf(3) is deficient.
Suggestion from Eric Blake.
consider adding some implementation of the "col" utility
Suggested by Karl Berry.
doc/coreutils.texi:
Address this comment: FIXME: mv's behavior in this case is system-dependent
Better still: fix the code so it's *not* system-dependent.
ls: add --format=FORMAT option that controls how each line is printed.
copy.c: Address the FIXME-maybe comment in copy_internal.
And once that's done, add an exclusion so that 'cp --link'
no longer incurs the overhead of saving src. dev/ino and dest. filename
in the hash table.
Write an autoconf test to work around build failure in HPUX's 64-bit mode.
See notes in README -- and remove them once there's a work-around.
Integrate use of sendfile, suggested here:
https://lists.gnu.org/r/bug-fileutils/2003-03/msg00030.html
I don't plan to do that, since a few tests demonstrate no significant benefit.
printf: consider adapting builtins/printf.def from bash
tail: don't use xlseek; it *exits*.
Instead, maybe use a macro and return nonzero.
tr: support nontrivial equivalence classes, e.g. [=e=] with LC_COLLATE=fr_FR
lib/strftime.c: Since %N is the only format that we need but that
glibc's strftime doesn't support, consider using a wrapper that
would expand /%(-_)?\d*N/ to the desired string and then pass the
resulting string to glibc's strftime.
sort: Investigate better sorting algorithms; see Knuth vol. 3.
We tried list merge sort, but it was about 50% slower than the
recursive algorithm currently used by sortlines, and it used more
comparisons. We're not sure why this was, as the theory suggests it
should do fewer comparisons, so perhaps this should be revisited.
List merge sort was implemented in the style of Knuth algorithm
5.2.4L, with the optimization suggested by exercise 5.2.4-22. The
test case was 140,213,394 bytes, 426,4424 lines, text taken from the
GCC 3.3 distribution, sort.c compiled with GCC 2.95.4 and running on
Debian 3.0r1 GNU/Linux, 2.4GHz Pentium 4, single pass with no
temporary files and plenty of RAM.
Since comparisons seem to be the bottleneck, perhaps the best
algorithm to try next should be merge insertion. See Knuth section
5.3.1, who credits Lester Ford, Jr. and Selmer Johnson, American
Mathematical Monthly 66 (1959), 387-389.
shred: Update shred as described here to conform to DoD 5220 rules:
https://lists.gnu.org/r/bug-coreutils/2007-05/msg00075.html
Remove suspicious uses of alloca (ones that may allocate more than
about 4k)
Improve test coverage.
See HACKING for instructions on generating an html test coverage report.
Find a program that has poor coverage and improve.
Changes expected to go in, someday.
======================================
dd patch from Olivier Delhomme
test/mv/*: clean up $other_partition_tmpdir in all cases
ls: when both -l and --dereference-command-line-symlink-to-dir are
specified, consider whether to let the latter select whether to
dereference command line symlinks to directories. Since -l has
an implicit --NO-dereference-command-line-symlink-to-dir meaning.
Pointed out by Karl Berry.
Pending copyright papers:
------------------------
getpwnam from Bruce Korb
pb (progress bar) from Miika Pekkarinen
------------------------------
Remove long-deprecated options. Search case-insensitive for
'deprecated' and 'remove in '. Automate this.
Add a distcheck-time test to ensure that every distributed
file is either read-only(indicating generated) or is
version-controlled and up to date.
remove all uses of the 'register' keyword: Done. add a maint.mk rule
for this, too.
remove or adjust chown's --changes option, since it
can't always do what it currently says it does.
Support arbitrary-precision arithmetic in those tools for which it
makes sense. Factor and expr already support this via libgmp.
The "test" program is covered via its string-based comparison of
integers. To be converted: seq.
Adapt tools like wc, tr, fmt, etc. (most of the textutils) to be
multibyte aware. The problem is that I want to avoid duplicating
significant blocks of logic, yet I also want to incur only minimal
(preferably 'no') cost when operating in single-byte mode.
pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer
-----
Copyright (C) 2002-2021 Free Software Foundation, Inc.
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/>.

View file

@ -0,0 +1,163 @@
musl as a whole is licensed under the following standard MIT license:
----------------------------------------------------------------------
Copyright © 2005-2014 Rich Felker, et al.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------------------
Authors/contributors include:
Alex Dowad
Alexander Monakov
Anthony G. Basile
Arvid Picciani
Bobby Bingham
Boris Brezillon
Brent Cook
Chris Spiegel
Clément Vasseur
Daniel Micay
Denys Vlasenko
Emil Renner Berthing
Felix Fietkau
Felix Janda
Gianluca Anzolin
Hauke Mehrtens
Hiltjo Posthuma
Isaac Dunham
Jaydeep Patil
Jens Gustedt
Jeremy Huntwork
Jo-Philipp Wich
Joakim Sindholt
John Spencer
Josiah Worcester
Justin Cormack
Khem Raj
Kylie McClain
Luca Barbato
Luka Perkov
M Farkas-Dyck (Strake)
Mahesh Bodapati
Michael Forney
Natanael Copa
Nicholas J. Kain
orc
Pascal Cuoq
Petr Hosek
Pierre Carrier
Rich Felker
Richard Pennington
Shiz
sin
Solar Designer
Stefan Kristiansson
Szabolcs Nagy
Timo Teräs
Trutz Behn
Valentin Ochs
William Haddon
Portions of this software are derived from third-party works licensed
under terms compatible with the above MIT license:
The TRE regular expression implementation (src/regex/reg* and
src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
under a 2-clause BSD license (license text in the source files). The
included version has been heavily modified by Rich Felker in 2012, in
the interests of size, simplicity, and namespace cleanliness.
Much of the math library code (src/math/* and src/complex/*) is
Copyright © 1993,2004 Sun Microsystems or
Copyright © 2003-2011 David Schultz or
Copyright © 2003-2009 Steven G. Kargl or
Copyright © 2003-2009 Bruce D. Evans or
Copyright © 2008 Stephen L. Moshier
and labelled as such in comments in the individual source files. All
have been licensed under extremely permissive terms.
The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008
The Android Open Source Project and is licensed under a two-clause BSD
license. It was taken from Bionic libc, used on Android.
The implementation of DES for crypt (src/crypt/crypt_des.c) is
Copyright © 1994 David Burren. It is licensed under a BSD license.
The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
originally written by Solar Designer and placed into the public
domain. The code also comes with a fallback permissive license for use
in jurisdictions that may not recognize the public domain.
The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
Valentin Ochs and is licensed under an MIT-style license.
The BSD PRNG implementation (src/prng/random.c) and XSI search API
(src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and
licensed under following terms: "Permission to use, copy, modify,
and/or distribute this code for any purpose with or without fee is
hereby granted. There is no warranty."
The x86_64 port was written by Nicholas J. Kain and is licensed under
the standard MIT terms.
The mips and microblaze ports were originally written by Richard
Pennington for use in the ellcc project. The original code was adapted
by Rich Felker for build system and code conventions during upstream
integration. It is licensed under the standard MIT terms.
The mips64 port was contributed by Imagination Technologies and is
licensed under the standard MIT terms.
The powerpc port was also originally written by Richard Pennington,
and later supplemented and integrated by John Spencer. It is licensed
under the standard MIT terms.
All other files which have no copyright comments are original works
produced specifically for use as part of this library, written either
by Rich Felker, the main author of the library, or by one or more
contibutors listed above. Details on authorship of individual files
can be found in the git version control history of the project. The
omission of copyright and license comments in each file is in the
interest of source tree size.
In addition, permission is hereby granted for all public header files
(include/* and arch/*/bits/*) and crt files intended to be linked into
applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
the copyright notice and permission notice otherwise required by the
license, and to use these files without any requirement of
attribution. These files include substantial contributions from:
Bobby Bingham
John Spencer
Nicholas J. Kain
Rich Felker
Richard Pennington
Stefan Kristiansson
Szabolcs Nagy
all of whom have explicitly granted such permission.
This file previously contained text expressing a belief that most of
the files covered by the above exception were sufficiently trivial not
to be subject to copyright, resulting in confusion over whether it
negated the permissions granted in the license. In the spirit of
permissive licensing, and of not having licensing issues being an
obstacle to adoption, that text has been removed.

View file

@ -0,0 +1,20 @@
This is the crypt package Version 2.1
It provides a static library libcrypt.a as well as a shared library
cygcrypt-0.dll together with a link lib libcrypt.dll.a, which export
the functions
crypt(3)
crypt_r(3)
encrypt(3)
setkey(3)
The passwords created by crypt(3) are 100% identical to those created by
the Linux crypt(). DES, MD5, Blowfish, SHA-256, and SHA-512 algorithms are
supported.
Please send requests, error reports etc. to the mailing list
cygwin@cygwin.com.
Have fun,
Corinna Vinschen

View file

@ -0,0 +1,7 @@
* Fedora 28:
- Added Ed25519, and Ed448 signature algorithms
- Added RSA-PSS signatures algorithms with SHA1 and SHA2
- Added notion of groups (i.e., including FFDHE), replacing
the notion of curves.
- gnutls: updated for new signature algorithms and groups

View file

@ -0,0 +1,58 @@
This repository contains the crypto-policies data and scripts used in
Fedora.
|Release|Status|
|:-----:|:----:|
|master|[![build status](https://gitlab.com/redhat-sectech/fedora-crypto-policies/badges/master/build.svg)](https://gitlab.com/redhat-sectech/fedora-crypto-policies/commits/master)|
|F26|[![build status](https://gitlab.com/redhat-sectech/fedora-crypto-policies/badges/fedora26/build.svg)](https://gitlab.com/redhat-sectech/fedora-crypto-policies/commits/fedora26)|
|F27|[![build status](https://gitlab.com/redhat-sectech/fedora-crypto-policies/badges/fedora27/build.svg)](https://gitlab.com/redhat-sectech/fedora-crypto-policies/commits/fedora27)|
|F28|[![build status](https://gitlab.com/redhat-sectech/fedora-crypto-policies/badges/fedora28/build.svg)](https://gitlab.com/redhat-sectech/fedora-crypto-policies/commits/fedora28)|
# Purpose
The purpose is to unify the crypto policies used by different applications
and libraries. That is allow setting a consistent security level for crypto
on all applications in a Fedora system, irrespective of the crypto library
in use.
# Description
The idea is to have few predefined security policies such as LEGACY, DEFAULT
and FUTURE which are set system-wide by the administrator. Then applications
that have no special needs will follow these policies by default. That
way the management of the various crypto applications and libraries used in a
system simplifies significantly.
The current implementations works by setting the desired policy in
/etc/crypto-policies/config. After this file is changed the script
'update-crypto-policies' should be executed, and the new policies
will activate.
The supported back ends in Fedora are:
* GnuTLS
* OpenSSL
* NSS
* BIND
* libkrb5
* OpenSSH
* Java via OpenJDK
The documentation of crypto policies is at [update-crypto-policies.8.txt](update-crypto-policies.8.txt).
# Generating the policies
The policies are described in PERL at `back-ends/profiles/POLICYFILE.pl`,
and they operate on strings defined in `back-ends/profiles/common.pm`.
Individual application configuration generators are present in `back-ends/`.
To generate the policies per application use the script `./generate-policies.pl
DESTDIR` or `make install`.
For testing purpose the generated policies per application with the current
config are placed in `tests/outputs` and `make check` will verify whether the
generated policies match the stored. To reset the outputs use `make
reset-outputs` and `make check` to regenerate them.
# Contributing
See [our contribution guide](CONTRIBUTING.md).

View file

@ -0,0 +1,12 @@
Charles Wilson
Contributors:
Corinna Vinschen
Julio Costa
Herb Maeder
Original sources:
Corinna Vinschen (ssh-host-config)
Pierre Humblet (cron-config, exim-config)
Mark Harig (cron-config: cron_diagnose)

View file

@ -0,0 +1,26 @@
The files included in this distribution are available
under a number of different licenses.
native/getopt[1][.c|.h] : LGPL 2.1
native/Win32Error.h : equivalent to MIT/X or BSD-2-clause
native/getAccountName.cpp : MIT/X
native/winProductName.c : MIT/X
native/lookupAccountName[.h|.cpp] : MIT/X
cygwin/getvolinfo.c : MIT/X
cygwin-service-installation-helper.sh : MIT/X
portions derived from ---
ssh-host-config (2008-02-25): BSD
permission granted for distribing the portions of csih.sh
derived from this script under MIT/X
Corinna Vinschen 2008Apr08
http://cygwin.com/ml/cygwin/2008-04/msg00228.html
exim-config (2008-03-02) : not specified
permission granted for distribing the portions of csih.sh
derived from this script under MIT/X
Pierre Humblett 2008Apr07 (private email)
cron-config (2008-03-02) : not specified
permission granted for distribing the portions of csih.sh
derived from this script under MIT/X
Pierre Humblett 2008Apr07 (private email)

View file

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
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 this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser 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 Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey 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 library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library 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.1 of the License, or (at your option) any later version.
This library 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 library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -0,0 +1,660 @@
===============================================================================
==== ====
==== This file is deprecated ====
==== ====
===============================================================================
2015-08-30 Corinna Vinschen <vinschen@redhat.com>
* cygwin-service-installation-helper.sh: Throughout replace *server1014
with *server1016.
* native/winProductName.c (products): Add missing values since W10.
(GetOSDisplayString): Rename Server 2014 to Server 2016.
2015-04-02 Achim Gratz <Stromeko@NexGo.DE>
* cygwin-service-installation-helper.sh
(csih_create_privileged_user): Also add
SeDenyInteractiveLogonRight to the service user. otherwise it will
be shown on the logon screen in some versions of Windows.
2015-02-23 Achim Gratz <Stromeko@NexGo.DE>
* cygwin-service-installation-helper.sh (csih_use_file_etc):
Correct the return value in the case that /etc/nsswitch.conf
exists, but has no active line for that file. The default
contains db, so use_file=1 must be maintained. Add a comment for
that case.
2015-02-20 Achim Gratz <Stromeko@NexGo.DE>
* cygwin-service-installation-helper.sh
(csih_get_system_and_admins_ids): Remove reference to
/etc/{passwd/group} files.
(csih_check_passwd_and_group): Branch code based on the result of
csih_old_cygwin. Correct comment about the version that change
happened in Cygwin.
(csih_old_cygwin): Factor out check for Cygwin version that do not
have DB-based user/group lookup. Correct version that code
actually went into Cygwin.
(csih_use_file_etc): Use csih_old_cygwin. Correct the check for
nsswitch.conf content so that it confroms to the intended and
commented behaviour.
* cygwin-service-installation-helper.sh: Whitespace cleanup (only
trailing spaces, consider tabification). Register new function
"csih_old_cygwin".
2015-01-08 Henri ??? <houder@xs4all.nl>
* cygwin-service-installation-helper.sh (csih_use_file_etc): Fix regular
expression to catch commented out "db" entry correctly.
2015-01-07 Corinna Vinschen <vinschen@redhat.com>
* version.h (VERSION_MICRO): Revert version bump.
2015-01-07 Corinna Vinschen <vinschen@redhat.com>
* cygwin-service-installation-helper.sh (csih_privileged_accounts):
Fix copy/paste bug.
(csih_create_privileged_user): Evaluate local Windows administrators
group name instead of relying on Cygwin group name. Fix error message.
* version.h (VERSION_MICRO): Bump to 9.
2014-12-11 Christian Franke <Christian.Franke@t-online.de>
* cygwin-service-installation-helper.sh (csih_create_local_group): Fix
typo.
2014-12-10 Corinna Vinschen <vinschen@redhat.com>
* native/Makefile: More changes to allow cross-building (barely).
2014-12-10 Corinna Vinschen <vinschen@redhat.com>
* version.h (VERSION_MICRO): Bump to 8.
* native/Makefile (LIBS): Drop default-manifest file.
* native/Win32Error.h: Downcase header filenames to enable cross
compiling.
* native/getAccountName.cpp: Drop useless tchar.h include.
2014-12-10 Corinna Vinschen <vinschen@redhat.com>
* Makefile: Remove stray trailing backslash.
* winProductName.c (GetOSDisplayString): Always call GetNativeSystemInfo
since we're only supporting XP and later anyway. Drop checks for
older OS-versions. Rearrange Major/Minor OS number check to accommodate
the menacing OS version 10.x for Windows 10.
2014-11-24 Corinna Vinschen <vinschen@redhat.com>
* cygwin-service-installation-helper.sh: Drop global checks for NT and
Cygwin version 1.7.
(csih_VERSION): Bump to 0.9.8.
(csih_PRIVILEGED_USERWINNAME): New global variable.
(csih_PRIVILEGED_USERDOMAIN): Ditto.
(csih_UNPRIVILEGED_USERNAME): Ditto.
(csih_UNPRIVILEGED_USERWINNAME): Ditto.
(csih_UNPRIVILEGED_USERDOMAIN): Ditto.
(csih_LOCAL_GROUPNAME): Ditto.
(csih_LOCAL_GROUPWINNAME): Ditto.
(csih_LOCAL_GROUPDOMAIN): Ditto.
(_csih_well_known_privileged_accounts): Add machinename-prefixed names.
(_csih_well_known_privileged_accounts_quoted): Ditto.
(_csih_sanity_check): Check for getent.
(_csih_nt): Remove.
(_csih_2k): Remove.
(_csih_windows8_1): Add.
(_csih_windows10): Add.
(_csih_exactly_windows8_1): Add.
(_csih_exactly_windows10): Add.
(csih_is_nt): Always return 0.
(csih_is_2k): Ditto.
(csih_is_xp): Ditto.
(csih_is_windows8_1): New function.
(csih_is_windows10): Ditto.
(csih_cygver_is_oneseven): Always return 0.
(csih_is_exactly_windows8_1): New function.
(csih_is_exactly_server2012r2): Ditto.
(csih_is_exactly_windows10): Ditto.
(csih_is_exactly_server2014): Ditto.
(csih_check_sys_mount): Always return 0.
(csih_use_file_etc): New function to check for /etc/passwd or
/etc/group requirement.
(csih_get_system_and_admins_ids): Don't require /etc/passwd or
/etc/group. Allow new Cygwin usernames generated from Windows account
DBs.
(csih_check_passwd_and_group): Ditto.
(csih_check_user): Ditto.
(csih_privileged_accounts): Ditto.
(csih_account_has_necessary_privileges): Ditto.
(csih_select_privileged_username): Ditto.
(csih_create_privileged_user): Ditto.
(csih_create_unprivileged_user): Ditto.
(csih_service_should_run_as): Ditto.
(csih_create_local_group): New function.
(_csih_late_initialization_code): Set new OS variables.
2014-11-10 Corinna Vinschen <vinschen@redhat.com>
* native/Makefile (LIBS): Add default-manifest file.
(NTDLL): Define.
(getAccountName): Add $(CFLAGS). Fix usage of $(LIBS) for
PE/COFF platform.
(winProductName): Ditto. Add $(NTDLL).
* native/winProductName.c: Re-indent for better readability. Remove
not working tchar.h overhead.
(products): Drop "note"-type comments.
(RtlGetVersion): Declare.
(RtlGetProductInfo): Declare.
(GetOSDisplayString): Use RtlGetVersion and RtlGetProductInfo. Explain
why. Use switch statements rather than if/else if chains where
applicable. Add support for Windows 8.1, Server 2012 R2, Windows 10 and
Server 2014(?). Drop support for Windows versions prior to Windows XP.
2013-04-09 Charles Wilson <...>
0.9.7 release
* cygwin/Makefile: Adapt for 64bit cross-compiling.
* cygwin/getVolInfo.c: Avoid ddk headers and internal functions.
* native/Makefile: Modify to support building with mingw64 toolchains.
Auto-detect platform and choose wisely when not cross-compiling;
otherwise rely on caller to set NATIVECC and NATIVECXX.
* native/lookupAccountName.h: Don't redeclare WELL_KNOWN_SID_TYPE
when win32api headers already do so. However, add new values to
declaration if you do need to declare it.
* native/lookupAccountName.h: Don't redeclare CreateWellKnownSid
when w32api headers already do so.
* native/getAccountName.cpp: Use hardcoded value to represent maximum
WELL_KNOWN_SID_TYPE enumeration value, since the various w32api
versions are all different.
* native/winProductName.c: Add new macro values and strings for
GetProductInfo dwType.
(GetOSDisplayString): Use proper name for Windows Server 2012. Adapt
to newly added values for GetProductInfo dwType.
* cygwin-service-installation-helper.sh: Bump version number.
(csih_cygwin_is_64bit): New function.
(csih_is_exactly_windows8server): Rename to
(csih_is_exactly_server2012): this.
(_csih_late_initialization_code): Adapt to changes in winProductName.
* version.h: Bump version.
* NEWS: Document changes.
2012-03-26 Charles Wilson <...>
0.9.6 release
* native/Makefile: Use static language runtime libraries.
* cygwin/Makefile: Use static language runtime libraries.
* cygwin-service-installation-helper.sh: Bump version.
* version.h: Bump version.
* NEWS: Document changes.
2012-02-09 Charles Wilson <...>
0.9.5 release.
* native/Makefile: Avoid -mno-cygwin.
* native/winProductName.c (GetOSDisplayString): Support
Windows 8 and Windows Server 8. Improve support for various
Microsoft OS products.
* version.h: Bump version.
* csih.sh: Bump version.
(csih_is_windows8): New function.
(csih_is_exactly_windows8): New function.
(csih_is_exactly_windows8server): New function.
(csih_account_has_necessary_privileges): Don't attempt to
validate membership in Administrators group -- the test doesn't
work properly on domains anyway. Just try to set the necessary
rights and report error if the operation fails.
(csih_create_privileged_user): Don't attempt to check whether
/usr/bin/passwd has the -e option; all versions of passwd shipped
with cygwin-1.7.x support it.
(_csih_late_initialization_code): Fix bug related to the various
existing csih_is_exactly_* functions. Support new Windows 8 related
ones.
2011-02-13 Charles Wilson <...>
0.9.4 release
* csih.sh: Bump version number.
* version.h: ditto.
2011-02-12 Charles Wilson <...>
Add support for tmpfiles; remove obsolete code.
* NEWS: Update documentation.
* csih.sh: (csih_check_basic_mounts): Deprecate; replace with
stub that issues warning message.
(csih_writable_tmpdir): New function.
(csih_mktemp): New function.
(_csih_sanity_check): Check also chown, mktemp, mv.
(_csih_warning_for_missing_ACL_support): Remove accomodations
for cygwin-1.5.
(_csih_setup): Don't call csih_check_basic_mounts.
(csih_create_privileged_user): Use csih_mktemp instead of $$
for temporary files. Take more care to preserve ownership,
permissions, and ACLs when replacing /etc/passwd.
2011-02-11 Corinna Vinschen <...>
Charles Wilson <...>
Verify external tools before using; invoke via full paths.
* NEWS: Update documentation.
* csih.sh: Massive reorganization to ensure that external
applications are verified before using them to initialize
variables. Initialization now has four distinct phases --
First, the easy stuff. Then, stuff that requires external
apps (e.g. coreutils) -- and the sanity check is performed
during the phase. Third, stuff that requires the utilities
shipped in this package, and csih_invoke_helper(). These
three phases now occur which csih is sourced. The final
phase is peformed by _csih_setup() which is called by public
API functions when THEY are invoked by the client. Throughout,
invoke external tools via full path to avoid conflicts in the
presence of unexpected $PATH contents. Invoke net.exe via
new csih_call_winsys32() function throughout.
(csih_sanity_check): Deprecated (issues warning), replaced by...
(_csih_sanity_check): New function. Issue warning message here,
rather than in _csih_setup (reword and expand message to apply
to both cygwin and Red Hat installations).
(_csih_late_initialization_code): Initialize _csih_script_dir
and _csih_exec_dir here, instead of 'inline'.
(csih_check_program): Return 1 if specified program doesn't
exist; 2 if it exists but can't be executed. Prefer full
pathnames but use hash if relative pathname is supplied.
(csih_check_program_or_warn, csih_check_program_or_error): Ripple
from changes to csih_check_program; print appropriate warning or
error messages.
(_csih_setup): No longer call csih_sanity_check, since internal
replacement _csih_sanity_check is now called when csih is sourced.
(_csih_get_exec_dir): Use hash builtin to locate program in
$PATH search fallback case, rather than csih_check_program.
(csih_call_winsys32): New function used to invoke tools that
reside in the ${SYSTEMROOT}/system32/ directory (such as net.exe).
2011-02-07 Corinna Vinschen <...>
0.9.3 release.
* version.h: Bump version number.
* csih.sh (csih_install_config): Not an error if user
elects NOT to overwrite existing files; return success (0).
* NEWS: Update documentation.
2010-11-16 Charles Wilson <...>
Actual 0.9.2 release.
* cygwin/getVolInfo.c (main): Use cygwin_create_path
instead of deprecated cygwin_conv_to_full_win32_path.
* native/Makefile: Use gcc-3 and g++-3 explicitly.
* NEWS: Update documentation.
2010-11-16 Charles Wilson <...>
* version.h: Bump version number.
2010-11-16 Charles Wilson <...>
* csih.sh (csih_account_has_necessary_privileges): Fix typo.
(csih_create_privileged_user): Fix typo.
2010-11-16 Charles Wilson <...>
Document XP64/XP32 issues. Remove vestiges of Win9x.
* TODO: Remove Win9x item.
* NEWS: Update documentation.
* csih.sh: Update version and copyright date. Update
comments throughout to reflect that WinXP64 is included
in "Windows NT Server 2003 or above).
(csih_is_nt2003): Expand commentary to describe situation.
(_csih_warning_for_win9x_perms): Removed.
(csih_guest_account_active): Remove check for !csih_is_nt.
(_csih_warning_for_missing_ACL_support): Ditto.
(csih_privileged_accounts): Ditto.
(csih_create_privileged_user): Ditto.
(csih_create_unprivileged_user): Ditto.
(csih_select_privileged_username): Remove check for !csih_is_nt.
Update user messages regarding NT2003/XP64.
(csih_service_should_run_as): Ditto.
2009-08-01 Charles Wilson <...>
Release 0.9.1
* NEWS: Update.
* csih.sh: Update version.
* version.h: Update version.
2009-07-23 Corinna Vinschen <...>
* cygwin/getVolInfo.c: Check ZwOpenFile status code for
STATUS_INVALID_PARAMETER and retry top open with FILE_READ_DATA
access. Simply STATUS_NO_MEDIA_IN_DEVICE condition.
2009-05-03 Charles Wilson <...>
Add error checking for supported OS/cygwin version.
* NEWS: Update.
* csih.sh (csih_win_product_name): New function, allows
to cache results of calling winProductName since we
have to call it anyway.
(_csih_late_initialization_code): set cache variable
for use by csih_win_product_name().
(main): Check that OS is at least WinNT, and cygwin
version is at least 1.7.0, else issue error.
2009-05-03 Charles Wilson <...>
Update version number on trunk.
* NEWS: Update.
* csih.sh (main): Update csih_VERSION.
* version.h: New file.
* native/getAccountName.cpp: Use version.h to set
version number.
* native/winProductName.c: Ditto.
2009-05-03 Charles Wilson <...>
Release 0.2.0
* NEWS: Update.
* csih.sh (main): Update csih_VERSION.
* native/getAccountName.cpp: Bump version number.
* native/winProductName.c: Bump version number.
2009-03-29 Charles Wilson <...>
ACLs for /var/*; supress unnecessary info msgs
* csih.sh (_csih_setup): Add ACLs for system user
and Administrators group to /var/log, /var/run, and
/var/empty.
(csih_select_privileged_username): Supress informational
messages about other privileged users when called with
-u $specific_username_request.
2009-03-28 Charles Wilson <...>
* TODO: New.
* AUTHORS: Updated.
* csih.sh (main): Bump version number.
(_csih_well_known_privileged_accounts[_quoted]): New.
(csih_privileged_accounts): New -u $username option;
check also the specified $username, as well as the
'well known' accounts.
(csih_privileged_account_exists): Modify semantics;
now return true if account exists and has necessary
privileges, even if it is not one of the 'well known'
accounts.
(csih_select_privileged_username): Add -u $default_user
option. Allows to specify some (possibly not yet
existing) account for the service to run under, IF
if is not already installed. This allows to override
the *default* default, cyg_server.
(csih_is_windows7): New.
(csih_is_exactly_windows7): New.
(csih_is_exactly_server2008r2): New.
* native/getAccountName.cpp: Bump version number.
* native/winProductName.c: Bump version number.
Update for Windows 7, Windows Server 2008 R2.
* NEWS: Update documentation.
2009-03-28 Charles Wilson <...>
* csih.sh (csih_privileged_accounts): Issue
warning if $username in /etc/passwd but not SAM.
Reported by: Herb Maeder
2009-03-28 Julio Costa <...>
* csih.sh (csih_select_privileged_username): Add
-f option.
(csih_create_privileged_user): Expand comments.
2009-01-28 Corinna Vinschen <corinna-cygwin@cygwin.com>
* csih.sh (csih_get_cygenv): Don't check input for certain values.
2008-08-20 Charles Wilson <...>
* csih.sh (_csih_setup): suppress error messages
from chmod (when run as normal user).
2008-08-20 Charles Wilson <...>
Correct csih_check_access behavior.
* csih.sh (csih_check_access): update documentation.
Fix broken if-clauses -- [ fn -a $var -eq "foo" ]
doesn't work; use ( fn && [ $var -eq "foo" ]).
Remove test (and erroneous comments) concerning
ACLs and 'other' permission bits.
(csih_select_privileged_username): reformat messages.
2008-08-20 Charles Wilson <...>
csih-0.1.8 release
* csih.sh (main): bump version number
2008-08-20 Corinna Vinschen <corinna-cygwin@cygwin.com>
Better support for domain accounts.
* csih.sh (csih_create_privileged_user): return success
if user already exists in /etc/passwd (allows to use
pre-existing domain account as privileged user).
(csih_create_unprivileged_user): return success
if user already exists in /etc/passwd (allows to use
pre-existing domain account as unpriv user).
2008-08-20 Charles Wilson <...>
* csih.sh (csih_create_unprivileged_user): detect
if fail to add user to /etc/passwd.
2008-08-20 Charles Wilson <...>
* csih.sh (_csih_setup): Attempt to set correct permissions
on /var/run, /var/log, /var/empty, and /etc.
2008-08-16 Charles Wilson <...>
csih-0.1.7 release
Fix bugs and improve Vista and cygwin-1.7 support.
* csih.sh (main): update documentation, bump version
number.
(csih_cygver): new function.
(csih_cygver_is_oneseven): new function.
(csih_sanity_check): Check for stat program.
(csih_get_system_and_admins_ids): Use 'stat -c %A'
instead of 'ls -ld'.
(csih_check_dir_perms): ditto.
(csih_check_sys_mount): Document as cygwin-1.5.x
specific. Unconditionally return 0 (true) for
cygwin-1.7 and above.
(csih_check_basic_mounts): ditto.
(_csih_setup): Allow /var to have text bit set --
iow, match permissions pattern 'd..x..x..[xt]'
(csih_select_privileged_username): workaround bug in
cygwin-1.7 mkpasswd. Reparagraph error user message,
fix documentation typo.
(csih_service_should_run_as): Return either privileged
account name OR system, not both.
* NEWS: Update documentation.
2008-08-07 Charles Wilson <...>
csih-0.1.6 release
Add getVolInfo utility program. Use it to avoid
checking permissions on volumes that do not support ACLs.
* csih.sh (main): update documentation.
(csih_WIN32_VOLS_WITH_ACLS): new client-accessible var.
(csih_WIN32_VOLS_WITHOUT_ACLS): ditto.
(csih_path_supports_acls): new function.
(_csih_convert_w32vol_to_shell_pattern): new function.
(_csih_path_in_volumelist_core): new function.
(_csih_path_in_volumelist): new function.
(csih_get_system_and_admins_ids): update comments.
No longer an error if Administrators group is not found
in /etc/passwd.
(_csih_warning_for_win9x_perms): new function.
(_csih_warning_for_missing_ACL_support): new function.
(csih_check_dir_perms): bail out early (returning success
but with a warning) if on OS older than windows NT, or the
specified file/dir is on a volume that does not support ACLs.
(csih_check_access): ditto. Also, improve comments. If
csih_ADMINSUID is empty, gracefully skip checking if file/dir
is owned by the Administrators group.
* cygwin/Makefile: new file.
* cygwin/getVolInfo.c: new file.
* COPYING: update documentation.
* NEWS: update documentation.
2008-08-04 Charles Wilson <...>
Accept pre-existing privileged domain accounts.
Default to privileged account on NT/2k/XP if exist.
* csih.sh (csih_privileged_accounts): Always look
for privileged users if NT or better. Look in both
/etc/passwd and local SAM.
(csih_privileged_account_exists): Update documentation
to reflect behavior change inherited from above.
(csih_select_privileged_username): Attempt to return
a username even on NT/2k/XP (but default to empty if
no pre-existing privileged user on those OS's). Be more
specific in the informational messages emitted. Look
in both /etc/passwd and local SAM for accounts, if user
specified one we don't know about already.
(csih_create_privileged_user): Improve comments.
(csih_create_unprivileged_user): Improve comments.
See FIXME! (remove this line from ChangeLog when resolved)
(csih_service_should_run_as): Improve comments. Check
both /etc/passwd and local SAM if "answer" is an account
that did not exist when script was launched. For NT/2k/XP,
default to pre-existing privileged user (if one exists), and
only report SYSTEM otherwise.
* NEWS: Document new behavior
2008-07-19 Corinna Vinschen <corinna-cygwin@cygwin.com>
* csih.sh (csih_account_has_necessary_privileges): Don't
explicitely test for SeDenyXXX rights, nor for
SeIncreaseQuotaPrivilege.
(csih_create_privileged_user): Drop setting
SeDenyInteractiveLogonRight and SeIncreaseQuotaPrivilege.
2008-07-19 Charles Wilson <...>
csih-0.1.5 release
* cish.sh (csih_account_has_necessary_privileges):
Use editrights -t instead of editrights -l and fgrep.
2008-07-19 Corinna Vinschen <corinna-cygwin@cygwin.com>
* csih.sh (csih_account_has_necessary_privileges,
csih_create_privileged_user): Don't disallow network
logon for service user account.
2008-04-14 Charles Wilson <...>
csih-0.1.4 release
* csih.sh: add MIT/X license text.
(csih_error): Removed any direct heritage from cygport due to
licensing concerns.
(csih_warning): ditto
(csih_inform): ditto
(csih_verbose): ditto
* COPYING: update documentation
* NEWS: update documentation
* COPYING.GPLv3: removed
2008-04-09 Charles Wilson <...>
* csih.sh (csih_account_has_necessary_privileges): new function
(csih_select_privileged_username): new behavior if optionally
specified service is installed.
(csih_service_should_run_as): new optional argument service_name.
If specified, checks to see if that service is already installed,
and returns the installed account name if so. Otherwise, behavior
is unchnaged.
2008-04-07 Corinna Vinschen <...>
* csih.sh (csih_create_privileged_user): fix typo
(_csih_setup): fix typo
2008-04-07 Charles Wilson <...>
* csih.sh (csih_select_privileged_username): moved
below _csih_setup so it can be a main entry point.
Added option parsing: -q query mode, and service_name.
Added caching; once csih_PRIVILEGED_USERNAME is set,
avoid extra reprocessing.
(csih_version_ge): new function for comparing version
numbers. 'csih_version_ge A B' returns true if A >= B,
where A and B are of the form x.y.z.
(csih_version_le): ditto, for A <= B.
(csih_version_gt): ditto, for A > B.
(csih_version_lt): ditto, for A < B.
(csih_version_eq): ditto, for A == B.
2008-04-02 Charles Wilson <...>
* csih.sh (csih_create_privileged_user): accept
password as optional first argument.
* native/winProductName.c (usage): new function
(help, license, version): ditto
(main): add support for basic option parsing and
help.
* native/Makefile: link winProductName against
libnative (for getopt support).
* NEWS: new file
* AUTHORS: new file
* COPYING: new file
* COPYING.GPLv3: new file
* COPYING.LGPLv2.1: new file
* COPYING.MIT_X: new file
2008-03-16 Charles Wilson <...>
csih-0.1.3 release
* csih.sh (_csih_late_initialization_code): new function.
moved inline late initialization code to here.
2008-03-16 Charles Wilson <...>
csih-0.1.2 release
* native/winProductName.c: new file
* native/Makefile: add rules for winProductName
* csih.sh (csih_is_exactly_vista): new function
* csih.sh (csih_is_exactly_server2008): new function
* csih.sh: protect usage of $csih_progname against
leading '-' character, throughout.
* csih.sh (late initialization code): add new code
block after definition of csih_invoke_helper().
2008-03-06 Charles Wilson <...>
csih-0.1.1 release
* native/getAccountName.cpp: new file
* native/getopt.c: new file
* native/getopt.h: new file
* native/getopt1.c: new file
* native/lookupAccountName.cpp: new file
* native/lookupAccountName.h: new file
* native/Makefile: new file
* native/ReadMe.Win32Error.txt: new file
* native/Win32Error.h: new file
* csih.sh (csih_is_2k): new function
(csih_is_xp): new function
(csih_is_vista): new function
(csih_invoke_helper): new function
(csih_get_localized_account_name): new function
(csih_get_guest_account_name): new function
(csih_guest_account_active): new function

View file

@ -0,0 +1,212 @@
0.9.7:
* winProductName: Better support for Windows Server 2012 variants.
* getVolInfo: Adapt to new w32api; avoid ddk.
* csih: Renamed csih_is_exactly_windows8server to csih_is_exactly_server2012.
* csih: Added csih_cygwin_is_64bit.
* Support cross-compilation; support cygwin64.
* Use mingw64 toolchains by default for "native" executables.
0.9.6:
* Avoid language runtime dlls when compiling utility programs.
0.9.5:
* winProductName now supports Windows 8 and Windows 8 Server.
* Remove various obsolete tests.
0.9.4:
* New function csih_call_winsys32() for invoking programs
in C:\Windows\system32.
* New function csih_writable_tmpdir() echos path to a temporary
directory, using $TMP, $TEMP, $TMPDIR, $HOME, etc.
* New function csih_mktemp() safely wraps /usr/bin/mktemp.
* csih_sanity_check() deprecated (replaced by internal
function).
* csih_check_basic_mounts() deprecated (ditto).
* New mutable variables csih_sanity_check_server and
csih_required_commands[] for modifying the behavior of
the internal replacement function for csih_sanity_check().
* All external applications (mkpasswd, expr, tr, sed, etc)
are now called by their full path, to avoid conflicts in
the presence of unexpected $PATH contents.
* (internal): massive reorganization, changing the order
of intialization. Required because some initialization requires
calling external programs, and we now verify these programs
are accessible first.
0.9.3:
* In csih_install_config(), don't treat as error when
user elects elects NOT to overwrite existing files; instead
return success. (Corinna Vinschen)
0.9.2:
* Remove all vestiges of pre-NT support -- except
for failure message if used on 9x platforms.
* Update user messages and # comments to reflect new
information: csih_is_nt2003 returns true for 64bit XP
but not 32bit XP. This is because 64bit XP is actually
more similar to Windows NT Server 2003 than XP32:
especially with regards to the privileges of the SYSTEM
account.
* getVolInfo uses cygwin_create_path instead of deprecated
cygwin_conv_to_full_win32_path.
0.9.1:
* getVolInfo doesn't need file access rights to get
just volume information. Open with reduced rights
to work around issue with HGFS. (Corinna Vinschen)
0.9.0:
* On-going development on the trunk is specific
for cygwin-1.7. Bump version number to reflect
that, but...
* Only a few substantive changes relative to 0.2.0:
- use common version.h file in compiled programs,
to avoid having to increment the version number
in too many places.
- new csih_win_product_name() function caches result
of calling winProductName.
- Verify that OS is at least WinNT, and that cygwin
version is at least 1.7.0, or error.
0.2.0:
* Branch for cygwin-1.5-specific releases
* No other changes with respect to package 0.1.9-2
0.1.9:
* correct csih_check_access behavior.
* suppress errors in _csih_setup
* No longer restrict contents of CYGWIN variable
* New -f option for csih_select_privileged_username to
accomodate unattended installs
* New '-u default_username' for csih_select_privileged_username,
for another way of accomodating unattended installs, AND to
allow foo-config to specify explicitly the --service-account
to use. Note that csih_privileged_account_exists $username
now returns true if $username exists, and has all necessary
privileges, even if it is not one of the well-known cyg_server,
cron_server, or sshd_server accounts.
* New '-u username' for csih_privileged_accounts. Also checks
username as well as 'well known' accounts for (a) existence,
and (b) having necessary privileges.
* Now warn user when an account is specified in /etc/passwd,
but is not found in the SAM. This is ok if the account is
a domain account, but the user should be aware of the issue.
* Updated winProductName to reflect Windows 7, Server 2008 R2.
* csih has new functions related to detecting Windows 7 and
Server 2008 R2.
0.1.8:
* explicitly set permissions on /var/[log|run|empty]
and /etc. This simplifies code in most callers.
* Better support for (pre-existing) domain accounts
as privileged and unprivileged users.
0.1.7:
* bug fixes
* compatibility fixes and workarounds for cygwin-1.7
0.1.6:
* more permissions tweaks for privileged user:
See http://cygwin.com/ml/cygwin/2008-06/msg00453.html
Users of earlier versions of csih may need to manually
adjust their existing privileged users. Again:
editrights -r SeDenyNetworkLogonRight -u cyg_server
editrights -r SeDenyInteractiveLogonRight -u cyg_server
editrights -r SeIncreaseQuotaPrivilege -u cyg_server
* Even on NT/2k/XP, prefer to use "privileged" user (cyg_server,
sshd_server, cron_server, etc) if a suitable such user already
exists. If not, then for these older OS's, fall back to SYSTEM.
As always, by setting csih_FORCE_PRIVILEGED_USER -- usually done
by the calling script via a command line argument, such as
/usr/bin/iu-config -privileged
the user can force NT/2k/XP to behave as Vista or Server2008: a
privileged user is required, and if one does not exist it will
be created.
* Also accept privileged accounts that exist only in /etc/passwd and
are not present in the local SAM. That is, accept pre-existing
privileged domain accounts.
* New utility program: getVolInfo
http://cygwin.com/ml/cygwin/2007-08/msg00040.html
* New function: csih_path_supports_acls() returns 0 (success)
if the specified path is located on a volume that supports
ACLs. Uses getVolInfo. Behavior can be modified, when getVolInfo
is incorrect, by setting user-accessible variables:
csih_WIN32_VOLS_WITH_ACLS
csih_WIN32_VOLS_WITHOUT_ACLS
which each may contain ;-separated lists of win32 paths,
specifying volumes in the relevant category.
* It is no longer a fatal error if, when checking the
permissions or access rights of a file or directory, the
target is located on a volume that does not support ACLs.
A warning is issued, but operation continues.
* The Administrators group is no longer required to be in
/etc/passwd. However, it is still required in /etc/group.
SYSTEM is (still) required in both /etc/passwd and /etc/group.
0.1.5:
* tweak permissions for privileged user (no longer deny
NetworkLogonRight). Users of earlier versions may need to
manually adjust their exising privileged users: that is,
as an Administrator (or, on Vista with UAC, from a console
launched via 'Run as Administrator' with valid UAC
authentication):
editrights -r SeDenyNetworkLogonRight -u cyg_server
0.1.4:
* Add --help, --license, --version options to winProductName.
* Caller can now specify the password when calling
csih_create_privileged_user
* csih_should_run_as now accepts optional [service_name] argument.
If specified, then checks to see if [service_name] is already
isntalled. If so, the user under which the service is installed
is returned (if that user has the necessary privileges).
Should call csih_select_privileged_username first, unless you are
SURE that [service_name] has already been installed.
* Add [-q] and [service_name] options to csih_select_privileged_username
+ If the optional argument '-q' is specified, then
csih_select_privileged_username will operate in query mode, which
is more appropriate for user-config scripts that need information
ABOUT a service, but do not themselves install the service or
create privileged users.
+ If the optional [service_name] argument is present, then that
value may be used in some of the messages. Also,
csih_select_privileged_username will then check to see if
[service_name] is already installed. If so, it the
account under which it is installed will be selected, assuming
that account passes validation (has necessary permissions, group
memberships, etc).
+ Usually [-q] and [service_name] should be specified together.
* Associated foo-config scripts that do not themselves install
a service (such as ssh-user-config) can now query the 'expected'
account that the associated service will run as. Recommended
pattern:
if csih_is_nt
then
if ! cygrunsrv -Q <service> >/dev/null 2>&1
then
csih_select_privileged_username -q <service>
fi
service_user=$(csih_service_should_run_as <service>)
... continue ...
fi
* new functions for comparing x.y.z version numbers:
csih_version_ge A B --> A >= B
csih_version_le A B --> A <= B
csih_version_gt A B --> A > B
csih_version_lt A B --> A < B
csih_version_ne A B --> A == B
* Clarified licensing terms and attributions for csih.sh script
Explicitly MIT/X.
* Removed any direct heritage from cygport due to licensing concerns.
For an example of the usage of the new facilities, see the (proposed)
ssh-host-config and ssh-user-config scripts:
+ host: http://cygwin.com/ml/cygwin/2008-04/msg00079.html
+ user: http://cygwin.com/ml/cygwin/2008-04/msg00219.html
(Note that the official ssh-[host|user]-config scripts may not look
anything like these two proposals...)

View file

@ -0,0 +1,4 @@
* Needs serious refactoring. Code is way too complicated
and nigh-on unmaintainable. However, refactoring may
require coordinating API changes and release timing
with client foo-config packages.

View file

@ -0,0 +1,278 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
## curl cipher options
A TLS handshake involves many parameters which take part in the negotiation
between client and server in order to agree on the TLS version and set of
algorithms to use for a connection.
What has become known as a "cipher" or better "cipher suite" in TLS
are names for specific combinations of
[key exchange](https://en.wikipedia.org/wiki/Key_exchange),
[bulk encryption](https://en.wikipedia.org/wiki/Link_encryption),
[message authentication code](https://en.wikipedia.org/wiki/Message_authentication_code)
and with TLSv1.3 the
[authenticated encryption](https://en.wikipedia.org/wiki/Authenticated_encryption).
In addition, there are other parameters that influence the TLS handshake, like
[DHE](https://en.wikipedia.org/wiki/Diffie%e2%80%93Hellman_key_exchange) "groups"
and [ECDHE](https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%e2%80%93Hellman)
with its "curves".
### History
curl's way of letting users configure these settings closely followed OpenSSL
in its API. TLS learned new parameters, OpenSSL added new API functions and
curl added command line options.
Several other TLS backends followed the OpenSSL approach, more or less closely,
and curl maps the command line options to these TLS backends. Some TLS
backends do not support all of it and command line options are either
ignored or lead to an error.
Many examples below show the OpenSSL-like use of these options. GnuTLS
however chose a different approach. These are described in a separate
section further below.
## ciphers, the OpenSSL way
With curl's option
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
or
[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
users can control which cipher suites to consider when negotiating TLS 1.3
connections. With option
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
or
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
users can control which cipher suites to consider when negotiating
TLS 1.2 (1.1, 1.0) connections.
By default, curl may negotiate TLS 1.3 and TLS 1.2 connections, so the cipher
suites considered when negotiating a TLS connection are a union of the TLS 1.3
and TLS 1.2 cipher suites. If you want curl to consider only TLS 1.3 cipher
suites for the connection, you have to set the minimum TLS version to 1.3 by
using [`--tlsv1.3`](https://curl.se/docs/manpage.html#--tlsv13)
or [`CURLOPT_SSLVERSION`](https://curl.se/libcurl/c/CURLOPT_SSLVERSION.html)
with `CURL_SSLVERSION_TLSv1_3`.
Both the TLS 1.3 and TLS 1.2 cipher options expect a list of cipher suites
separated by colons (`:`). This list is parsed opportunistically, cipher suites
that are not recognized or implemented are ignored. As long as there is at
least one recognized cipher suite in the list, the list is considered valid.
For both the TLS 1.3 and TLS 1.2 cipher options, the order in which the
cipher suites are specified determine the preference of them. When negotiating
a TLS connection the server picks a cipher suite from the intersection of the
cipher suites supported by the server and the cipher suites sent by curl. If
the server is configured to honor the client's cipher preference, the first
common cipher suite in the list sent by curl is chosen.
### TLS 1.3 cipher suites
Setting TLS 1.3 cipher suites is supported by curl with
OpenSSL (1.1.1+, curl 7.61.0+), LibreSSL (3.4.1+, curl 8.3.0+),
wolfSSL (curl 8.10.0+) and mbedTLS (3.6.0+, curl 8.10.0+).
The list of cipher suites that can be used for the `--tls13-ciphers` option:
```
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
TLS_AES_128_CCM_8_SHA256
```
#### wolfSSL notes
In addition to above list the following cipher suites can be used:
`TLS_SM4_GCM_SM3` `TLS_SM4_CCM_SM3` `TLS_SHA256_SHA256` `TLS_SHA384_SHA384`.
Usage of these cipher suites is not recommended. (The last two cipher suites
are NULL ciphers, offering no encryption whatsoever.)
### TLS 1.2 (1.1, 1.0) cipher suites
Setting TLS 1.2 cipher suites is supported by curl with OpenSSL, LibreSSL,
BoringSSL, mbedTLS (curl 8.8.0+), wolfSSL (curl 7.53.0+). Schannel does not
support setting cipher suites directly, but does support setting algorithms
(curl 7.61.0+), see Schannel notes below.
For TLS 1.2 cipher suites there are multiple naming schemes, the two most used
are with OpenSSL names (e.g. `ECDHE-RSA-AES128-GCM-SHA256`) and IANA names
(e.g. `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`). IANA names of TLS 1.2 cipher
suites look similar to TLS 1.3 cipher suite names, to distinguish them note
that TLS 1.2 names contain `_WITH_`, while TLS 1.3 names do not. When setting
TLS 1.2 cipher suites with curl it is recommended that you use OpenSSL names
as these are most widely recognized by the supported SSL backends.
The complete list of cipher suites that may be considered for the `--ciphers`
option is extensive, it consists of more than 300 ciphers suites. Nowadays,
most of them are discouraged, and support for a lot of them has been removed
from the various SSL backends, if ever implemented at all.
A shortened list (based on [recommendations by
Mozilla](https://wiki.mozilla.org/Security/Server_Side_TLS)) of cipher suites,
which are (mostly) supported by all SSL backends, that can be used for the
`--ciphers` option:
```
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-SHA
ECDHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA256
AES128-SHA
AES256-SHA
DES-CBC3-SHA
```
See this [list](https://github.com/curl/curl/blob/master/docs/CIPHERS-TLS12.md)
for a complete list of TLS 1.2 cipher suites.
#### OpenSSL notes
In addition to specifying a list of cipher suites, OpenSSL also accepts a
format with specific cipher strings (like `TLSv1.2`, `AESGCM`, `CHACHA20`) and
`!`, `-` and `+` operators. Refer to the
[OpenSSL cipher documentation](https://docs.openssl.org/master/man1/openssl-ciphers/#cipher-list-format)
for further information on that format.
#### Schannel notes
Schannel does not support setting individual TLS 1.2 cipher suites directly.
It only allows the enabling and disabling of encryption algorithms. These are
in the form of `CALG_xxx`, see the [Schannel `ALG_ID`
documentation](https://learn.microsoft.com/windows/win32/seccrypto/alg-id)
for a list of these algorithms. Also, (since curl 7.77.0)
`SCH_USE_STRONG_CRYPTO` can be given to pass that flag to Schannel, lookup the
[documentation for the Windows version in
use](https://learn.microsoft.com/windows/win32/secauthn/cipher-suites-in-schannel)
to see how that affects the cipher suite selection. When not specifying the
`--ciphers` and `--tls13-ciphers` options curl passes this flag by default.
### Examples
```sh
curl \
--tls13-ciphers TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256 \
--ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:\
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 \
https://example.com/
```
Restrict ciphers to `aes128-gcm` and `chacha20`. Works with OpenSSL, LibreSSL,
mbedTLS and wolfSSL.
```sh
curl \
--tlsv1.3 \
--tls13-ciphers TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256 \
https://example.com/
```
Restrict to only TLS 1.3 with `aes128-gcm` and `chacha20` ciphers. Works with
OpenSSL, LibreSSL, mbedTLS, wolfSSL and Schannel.
```sh
curl \
--ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:\
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 \
https://example.com/
```
Restrict TLS 1.2 ciphers to `aes128-gcm` and `chacha20`, use default TLS 1.3
ciphers (if TLS 1.3 is available). Works with OpenSSL, LibreSSL, BoringSSL,
mbedTLS and wolfSSL.
## ciphers, the GnuTLS way
With GnuTLS, curl allows configuration of all TLS parameters via option
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
or
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
only. The option
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
or
[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
is being ignored.
`--ciphers` is used to set the GnuTLS **priority string** in
the following way:
* When the set string starts with '+', '-' or '!' it is *appended* to the
priority string libcurl itself generates (separated by ':'). This initial
priority depends other settings such as CURLOPT_SSLVERSION(3),
CURLOPT_TLSAUTH_USERNAME(3) (for SRP) or if HTTP/3 (QUIC)
is being negotiated.
* Otherwise, the set string fully *replaces* the libcurl generated one. While
giving full control to the application, the set priority needs to
provide for everything the transfer may need to negotiate. Example: if
the set priority only allows TLSv1.2, all HTTP/3 attempts fail.
Users may specify via `--ciphers` anything that GnuTLS supports: ciphers,
key exchange, MAC, compression, TLS versions, signature algorithms, groups,
elliptic curves, certificate types. In addition, GnuTLS has a variety of
other keywords that tweak its operations. Applications or a system
may define new alias names for priority strings that can then be used here.
Since the order of items in priority strings is significant, it makes no
sense for curl to puzzle other ssl options somehow together. `--ciphers`
is the single way to change priority.
### Examples
```sh
curl \
--ciphers '-CIPHER_ALL:+AES-128-GCM:+CHACHA20-POLY1305' \
https://example.com/
```
Restrict ciphers to `aes128-gcm` and `chacha20` in GnuTLS.
```sh
curl \
--ciphers 'NORMAL:-VERS-ALL:+TLS1.3:-AES-256-GCM' \
https://example.com/
```
Restrict to only TLS 1.3 without the `aes256-gcm` cipher.
```sh
curl \
--ciphers 'NORMAL:-VERS-ALL:+TLS1.2:-CIPHER_ALL:+CAMELLIA-128-GCM' \
https://example.com/
```
Restrict to only TLS 1.2 with the `CAMELLIA-128-GCM` cipher.
## Further reading
- [OpenSSL cipher suite names documentation](https://docs.openssl.org/master/man1/openssl-ciphers/#cipher-suite-names)
- [wolfSSL cipher support documentation](https://www.wolfssl.com/documentation/manuals/wolfssl/chapter04.html#cipher-support)
- [mbedTLS cipher suites reference](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/ssl__ciphersuites_8h/)
- [Schannel cipher suites documentation](https://learn.microsoft.com/windows/win32/secauthn/cipher-suites-in-schannel)
- [IANA cipher suites list](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4)
- [Wikipedia cipher suite article](https://en.wikipedia.org/wiki/Cipher_suite)
- [GnuTLS Priority Strings](https://gnutls.org/manual/html_node/Priority-Strings.html)

View file

@ -0,0 +1,22 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2026, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.
All rights reserved.
Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,249 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# Features -- what curl can do
## curl tool
- config file support
- multiple URLs in a single command line
- range "globbing" support: [0-13], {one,two,three}
- multiple file upload on a single command line
- redirect stderr
- parallel transfers
## libcurl
- URL RFC 3986 syntax
- custom maximum download time
- custom lowest download speed acceptable
- custom output result after completion
- guesses protocol from hostname unless specified
- supports .netrc
- progress bar with time statistics while downloading
- standard proxy environment variables support
- have run on 101 operating systems and 28 CPU architectures
- selectable network interface for outgoing traffic
- IPv6 support on Unix and Windows
- happy eyeballs dual-stack IPv4 + IPv6 connects
- persistent connections
- SOCKS 4 + 5 support, with or without local name resolving
- *pre-proxy* support, for *proxy chaining*
- supports username and password in proxy environment variables
- operations through HTTP proxy "tunnel" (using CONNECT)
- replaceable memory functions (malloc, free, realloc, etc)
- asynchronous name resolving
- both a push and a pull style interface
- international domain names (IDN)
- transfer rate limiting
- stable API and ABI
- TCP keep alive
- TCP Fast Open
- DNS cache (that can be shared between transfers)
- non-blocking single-threaded parallel transfers
- Unix domain sockets to server or proxy
- DNS-over-HTTPS
- uses non-blocking name resolves
- selectable name resolver backend
## URL API
- parses RFC 3986 URLs
- generates URLs from individual components
- manages "redirects"
## Header API
- easy access to HTTP response headers, from all contexts
- named headers
- iterate over headers
## TLS
- selectable TLS backend(s)
- TLS False Start
- TLS version control
- TLS session resumption
- key pinning
- mutual authentication
- Use dedicated CA cert bundle
- Use OS-provided CA store
- separate TLS options for HTTPS proxy
## HTTP
- HTTP/0.9 responses are optionally accepted
- HTTP/1.0
- HTTP/1.1
- HTTP/2, including multiplexing and server push
- GET
- PUT
- HEAD
- POST
- multipart formpost (RFC 1867-style)
- authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO)
to server and proxy
- resume transfers
- follow redirects
- maximum amount of redirects to follow
- custom HTTP request
- cookie get/send fully parsed
- reads/writes the Netscape cookie file format
- custom headers (replace/remove internally generated headers)
- custom user-agent string
- custom referrer string
- range
- proxy authentication
- time conditions
- via HTTP proxy, HTTPS proxy or SOCKS proxy
- HTTP/2 or HTTP/1.1 to HTTPS proxy
- retrieve file modification date
- Content-Encoding support for deflate, gzip, brotli and zstd
- "Transfer-Encoding: chunked" support in uploads
- HSTS
- alt-svc
- ETags
- HTTP/1.1 trailers, both sending and getting
## HTTPS
- HTTP/3
- using client certificates
- verify server certificate
- via HTTP proxy, HTTPS proxy or SOCKS proxy
- select desired encryption
- select usage of a specific TLS version
- ECH
## FTP
- download
- authentication
- Kerberos 5
- active/passive using PORT, EPRT, PASV or EPSV
- single file size information (compare to HTTP HEAD)
- 'type=' URL support
- directory listing
- directory listing names-only
- upload
- upload append
- upload via http-proxy as HTTP PUT
- download resume
- upload resume
- custom ftp commands (before and/or after the transfer)
- simple "range" support
- via HTTP proxy, HTTPS proxy or SOCKS proxy
- all operations can be tunneled through proxy
- customizable to retrieve file modification date
- no directory depth limit
## FTPS
- implicit `ftps://` support that use SSL on both connections
- explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://`
connection to use SSL for both or one of the connections
## SSH (both SCP and SFTP)
- selectable SSH backend
- known hosts support
- public key fingerprinting
- both password and public key auth
## SFTP
- both password and public key auth
- with custom commands sent before/after the transfer
- directory listing
## TFTP
- download
- upload
## TELNET
- connection negotiation
- custom telnet options
- stdin/stdout I/O
## LDAP
- full LDAP URL support
## DICT
- extended DICT URL support
## FILE
- URL support
- upload
- resume
## SMB
- SMBv1 over TCP and SSL
- download
- upload
- authentication with NTLMv1
## SMTP
- authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5 and
External
- send emails
- mail from support
- mail size support
- mail auth support for trusted server-to-server relaying
- multiple recipients
- via http-proxy
## SMTPS
- implicit `smtps://` support
- explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL
- via http-proxy
## POP3
- authentication: Clear Text, APOP and SASL
- SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM,
Kerberos 5 and External
- list emails
- retrieve emails
- enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
custom requests
- via http-proxy
## POP3S
- implicit `pop3s://` support
- explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL
- via http-proxy
## IMAP
- authentication: Clear Text and SASL
- SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM,
Kerberos 5 and External
- list the folders of a mailbox
- select a mailbox with support for verifying the `UIDVALIDITY`
- fetch emails with support for specifying the UID and SECTION
- upload emails via the append command
- enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
STORE, COPY and UID via custom requests
- via http-proxy
## IMAPS
- implicit `imaps://` support
- explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL
- via http-proxy
## MQTT
- Subscribe to and publish topics using URL scheme `mqtt://broker/topic`

View file

@ -0,0 +1,171 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# HTTP Cookies
## Cookie overview
Cookies are `name=contents` pairs that an HTTP server tells the client to
hold and then the client sends back those to the server on subsequent
requests to the same domains and paths for which the cookies were set.
Cookies are either "session cookies" which typically are forgotten when the
session is over which is often translated to equal when browser quits, or
the cookies are not session cookies they have expiration dates after which
the client throws them away.
Cookies are set to the client with the Set-Cookie: header and are sent to
servers with the Cookie: header.
For a long time, the only spec explaining how to use cookies was the
original [Netscape spec from 1994](https://curl.se/rfc/cookie_spec.html).
In 2011, [RFC 6265](https://datatracker.ietf.org/doc/html/rfc6265) was finally
published and details how cookies work within HTTP. In 2016, an update which
added support for prefixes was
[proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00),
and in 2017, another update was
[drafted](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-alone-01)
to deprecate modification of 'secure' cookies from non-secure origins. Both
of these drafts have been incorporated into a proposal to
[replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-11)
RFC 6265. Cookie prefixes and secure cookie modification protection has been
implemented by curl.
curl considers `http://localhost` to be a *secure context*, meaning that it
allows and uses cookies marked with the `secure` keyword even when done over
plain HTTP for this host. curl does this to match how popular browsers work
with secure cookies.
## Super cookies
A single cookie can be set for a domain that matches multiple hosts. Like if
set for `example.com` it gets sent to both `aa.example.com` as well as
`bb.example.com`.
A challenge with this concept is that there are certain domains for which
cookies should not be allowed at all, because they are *Public
Suffixes*. Similarly, a client never accepts cookies set directly for the
top-level domain like for example `.com`. Cookies set for *too broad*
domains are generally referred to as *super cookies*.
If curl is built with PSL (**Public Suffix List**) support, it detects and
discards cookies that are specified for such suffix domains that should not
be allowed to have cookies.
if curl is *not* built with PSL support, it has no ability to stop super
cookies.
## Cookies saved to disk
Netscape once created a file format for storing cookies on disk so that they
would survive browser restarts. curl adopted that file format to allow
sharing the cookies with browsers, only to see browsers move away from that
format. Modern browsers no longer use it, while curl still does.
The Netscape cookie file format stores one cookie per physical line in the
file with a bunch of associated meta data, each field separated with
TAB. That file is called the cookie jar in curl terminology.
When libcurl saves a cookie jar, it creates a file header of its own in
which there is a URL mention that links to the web version of this document.
## Cookie file format
The cookie file format is text based and stores one cookie per line. Lines
that start with `#` are treated as comments. An exception is lines that
start with `#HttpOnly_`, which is a prefix for cookies that have the
`HttpOnly` attribute set.
Each line that specifies a single cookie consists of seven text fields
separated with TAB characters. A valid line must end with a newline
character.
### Fields in the file
Field number, what type and example data and the meaning of it:
0. string `example.com` - the domain name
1. boolean `FALSE` - include subdomains
2. string `/foobar/` - path
3. boolean `TRUE` - send/receive over HTTPS only
4. number `1462299217` - expires at - seconds since Jan 1st 1970, or 0
5. string `person` - name of the cookie
6. string `daniel` - value of the cookie
## Cookies with curl the command line tool
curl has a full cookie "engine" built in. If you activate it, you can have
curl receive and send cookies exactly as mandated in the specs.
Command line options:
[`-b, --cookie`](https://curl.se/docs/manpage.html#-b)
tell curl a file to read cookies from and start the cookie engine, or if it
is not a file it passes on the given string. `-b name=var` works and so does
`-b cookiefile`.
[`-j, --junk-session-cookies`](https://curl.se/docs/manpage.html#-j)
when used in combination with -b, it skips all "session cookies" on load so
as to appear to start a new cookie session.
[`-c, --cookie-jar`](https://curl.se/docs/manpage.html#-c)
tell curl to start the cookie engine and write cookies to the given file
after the request(s)
## Cookies with libcurl
libcurl offers several ways to enable and interface the cookie engine. These
options are the ones provided by the native API. libcurl bindings may offer
access to them using other means.
[`CURLOPT_COOKIE`](https://curl.se/libcurl/c/CURLOPT_COOKIE.html)
Is used when you want to specify the exact contents of a cookie header to
send to the server.
[`CURLOPT_COOKIEFILE`](https://curl.se/libcurl/c/CURLOPT_COOKIEFILE.html)
Tell libcurl to activate the cookie engine, and to read the initial set of
cookies from the given file. Read-only.
[`CURLOPT_COOKIEJAR`](https://curl.se/libcurl/c/CURLOPT_COOKIEJAR.html)
Tell libcurl to activate the cookie engine, and when the easy handle is
closed save all known cookies to the given cookie jar file. Write-only.
[`CURLOPT_COOKIELIST`](https://curl.se/libcurl/c/CURLOPT_COOKIELIST.html)
Provide detailed information about a single cookie to add to the internal
storage of cookies. Pass in the cookie as an HTTP header with all the
details set, or pass in a line from a Netscape cookie file. This option can
also be used to flush the cookies etc.
[`CURLOPT_COOKIESESSION`](https://curl.se/libcurl/c/CURLOPT_COOKIESESSION.html)
Tell libcurl to ignore all cookies it is about to load that are session
cookies.
[`CURLINFO_COOKIELIST`](https://curl.se/libcurl/c/CURLINFO_COOKIELIST.html)
Extract cookie information from the internal cookie storage as a linked
list.
## Cookies with JavaScript
These days a lot of the web is built up by JavaScript. The web browser loads
complete programs that render the page you see. These JavaScript programs
can also set and access cookies.
Since curl and libcurl are plain HTTP clients without any knowledge of or
capability to handle JavaScript, such cookies are not detected or used.
Often, if you want to mimic what a browser does on such websites, you can
record web browser HTTP traffic when using such a site and then repeat the
cookie operations using curl or libcurl.

View file

@ -0,0 +1,582 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# Known bugs intro
These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these. Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written.
# TLS
## IMAPS connection fails with Rustls error
[curl issue 10457](https://github.com/curl/curl/issues/10457)
## Access violation sending client cert with Schannel
When using Schannel to do client certs, curl sets `PKCS12_NO_PERSIST_KEY` to
avoid leaking the private key into the filesystem. Unfortunately that flag
instead seems to trigger a crash.
See [curl issue 17626](https://github.com/curl/curl/issues/17626)
## Client cert handling with Issuer `DN` differs between backends
When the specified client certificate does not match any of the
server-specified `DN` fields, the OpenSSL and GnuTLS backends behave
differently. The GitHub discussion may contain a solution.
See [curl issue 1411](https://github.com/curl/curl/issues/1411)
## Client cert (MTLS) issues with Schannel
See [curl issue 3145](https://github.com/curl/curl/issues/3145)
## Schannel TLS 1.2 handshake bug in old Windows versions
In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake
implementation likely has a bug that can rarely cause the key exchange to
fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED.
[curl issue 5488](https://github.com/curl/curl/issues/5488)
## `CURLOPT_CERTINFO` results in `CURLE_OUT_OF_MEMORY` with Schannel
[curl issue 8741](https://github.com/curl/curl/issues/8741)
## mbedTLS and CURLE_AGAIN handling
[curl issue 15801](https://github.com/curl/curl/issues/15801)
## Native CA roots incomplete on Windows with OpenSSL (or fork)
Certain Windows installations may be missing CA roots.
[curl issue 20897](https://github.com/curl/curl/issues/20897)
[curl issue 12303](https://github.com/curl/curl/issues/12303)
# Email protocols
## IMAP `SEARCH ALL` truncated response
IMAP `SEARCH ALL` truncates output on large boxes. "A quick search of the code
reveals that `pingpong.c` contains some truncation code, at line 408, when it
deems the server response to be too large truncating it to 40 characters"
https://curl.se/bug/view.cgi?id=1366
## No disconnect command
The disconnect commands (`LOGOUT` and `QUIT`) may not be sent by IMAP, POP3
and SMTP if a failure occurs during the authentication phase of a connection.
## `AUTH PLAIN` for SMTP is not working on all servers
Specifying `--login-options AUTH=PLAIN` on the command line does not seem to
work correctly.
See [curl issue 4080](https://github.com/curl/curl/issues/4080)
## `APOP` authentication fails on POP3
See [curl issue 10073](https://github.com/curl/curl/issues/10073)
## POP3 issue when reading small chunks
CURL_DBG_SOCK_RMAX=4 ./runtests.pl -v 982
See [curl issue 12063](https://github.com/curl/curl/issues/12063)
# Command line
## `-T /dev/stdin` may upload with an incorrect content length
`-T` stats the path to figure out its size in bytes to use it as
`Content-Length` if it is a regular file.
The problem with that is that on BSD and some other UNIX systems (not Linux),
open(path) may not give you a file descriptor with a 0 offset from the start
of the file.
See [curl issue 12177](https://github.com/curl/curl/issues/12177)
## `-T -` always uploads chunked
When the `<` shell operator is used. curl should realize that stdin is a
regular file in this case, and that it can do a non-chunked upload, like it
would do if you used `-T` file.
See [curl issue 12171](https://github.com/curl/curl/issues/12171)
## Windows stdin relay accepts unauthenticated local connections
curl features a Windows-only stdin relay in `src/tool_doswin.c` that creates a
loopback TCP listener and spawns a thread to accept the first incoming
connection, then forwards stdin to it. There is no authentication or peer
validation on the accepted socket. A local attacker can race to connect to the
ephemeral loopback port (discoverable via local port enumeration/scan) before
curl connects, causing the thread to send stdin/upload data to the attacker or
to disrupt the transfer.
The function should verify the client-side with a random number similar to the
socketpair emulation function in libcurl. It cannot verify the source address
and port since there is this widespread habit on Windows to run tools that
MITM even local TCP connections for security.
# Build and portability issues
## OS400 port requires deprecated IBM library
curl for OS400 requires `QADRT` to build, which provides ASCII wrappers for
libc/POSIX functions in the ILE, but IBM no longer supports or even offers
this library to download.
See [curl issue 5176](https://github.com/curl/curl/issues/5176)
## `curl-config --libs` contains private details
`curl-config --libs` include details set in `LDFLAGS` when configure is run
that might be needed only for building libcurl. Further, `curl-config
--cflags` suffers from the same effects with `CFLAGS`/`CPPFLAGS`.
## `LDFLAGS` passed too late making libs linked incorrectly
Compiling latest curl on HP-UX and linking against a custom OpenSSL (which is
on the default loader/linker path), fails because the generated Makefile has
`LDFLAGS` passed on after `LIBS`.
See [curl issue 14893](https://github.com/curl/curl/issues/14893)
## Cygwin: make install installs curl-config.1 twice
[curl issue 8839](https://github.com/curl/curl/issues/8839)
## flaky CI builds
We run many CI builds for each commit and PR on GitHub, and especially a
number of the Windows builds are flaky. This means that we rarely get all CI
builds go green and complete without errors. This is unfortunate as it makes
us sometimes miss actual build problems and it is surprising to newcomers to
the project who (rightfully) do not expect this.
See [curl issue 6972](https://github.com/curl/curl/issues/6972)
## long paths are not fully supported on Windows
curl on Windows cannot access long paths (paths longer than 260 characters).
As a workaround, the Windows path prefix `\\?\` which disables all path
interpretation may work to allow curl to access the path. For example:
`\\?\c:\longpath`.
See [curl issue 8361](https://github.com/curl/curl/issues/8361)
## Unicode on Windows
Passing in a Unicode filename with -o:
[curl issue 11461](https://github.com/curl/curl/issues/11461)
Passing in Unicode character with -d:
[curl issue 12231](https://github.com/curl/curl/issues/12231)
Windows Unicode builds use the home directory in current locale.
The Windows Unicode builds of curl use the current locale, but expect Unicode
UTF-8 encoded paths for internal use such as open, access and stat. The user's
home directory is retrieved via curl_getenv in the current locale and not as
UTF-8 encoded Unicode.
See [curl pull request 7252](https://github.com/curl/curl/pull/7252) and [curl pull request 7281](https://github.com/curl/curl/pull/7281)
Cannot handle Unicode arguments in non-Unicode builds on Windows
If a URL or filename cannot be encoded using the user's current code page then
it can only be encoded properly in the Unicode character set. Windows uses
UTF-16 encoding for Unicode and stores it in wide characters, however curl and
libcurl are not equipped for that at the moment except when built with
_UNICODE and UNICODE defined. Except for Cygwin, Windows cannot use UTF-8 as a
locale.
https://curl.se/bug/?i=345
https://curl.se/bug/?i=731
https://curl.se/bug/?i=3747
NTLM authentication and Unicode
NTLM authentication involving Unicode username or password only works properly
if built with UNICODE defined together with the Schannel backend. The original
problem was mentioned in: https://curl.se/mail/lib-2009-10/0024.html and
https://curl.se/bug/view.cgi?id=896
The Schannel version verified to work as mentioned in
https://curl.se/mail/lib-2012-07/0073.html
# Authentication
## Digest `auth-int` for PUT/POST
We do not support auth-int for Digest using PUT or POST
## MIT Kerberos for Windows build
libcurl fails to build with MIT Kerberos for Windows (`KfW`) due to its
library header files exporting symbols/macros that should be kept private to
the library.
## NTLM in system context uses wrong name
NTLM authentication using SSPI (on Windows) when (lib)curl is running in
"system context" makes it use wrong(?) username - at least when compared to
what `winhttp` does. See https://curl.se/bug/view.cgi?id=535
## NTLM does not support password with Unicode 'SECTION SIGN' character
Code point: U+00A7
https://en.wikipedia.org/wiki/Section_sign
[curl issue 2120](https://github.com/curl/curl/issues/2120)
## libcurl can fail to try alternatives with `--proxy-any`
When connecting via a proxy using `--proxy-any`, a failure to establish an
authentication causes libcurl to abort trying other options if the failed
method has a higher preference than the alternatives. As an example,
`--proxy-any` against a proxy which advertise Negotiate and NTLM, but which
fails to set up Kerberos authentication does not proceed to try authentication
using NTLM.
[curl issue 876](https://github.com/curl/curl/issues/876)
## Do not clear digest for single realm
[curl issue 3267](https://github.com/curl/curl/issues/3267)
## SHA-256 digest not supported in Windows SSPI builds
Windows builds of curl that have SSPI enabled use the native Windows API calls
to create authentication strings. The call to `InitializeSecurityContext` fails
with `SEC_E_QOP_NOT_SUPPORTED` which causes curl to fail with
`CURLE_AUTH_ERROR`.
Microsoft does not document supported digest algorithms and that `SEC_E` error
code is not a documented error for `InitializeSecurityContext` (digest).
[curl issue 6302](https://github.com/curl/curl/issues/6302)
## curl never completes Negotiate over HTTP
Apparently it is not working correctly...?
See [curl issue 5235](https://github.com/curl/curl/issues/5235)
## Negotiate on Windows fails
When using `--negotiate` (or NTLM) with curl on Windows, SSL/TLS handshake
fails despite having a valid kerberos ticket cached. Works without any issue
in Unix/Linux.
[curl issue 5881](https://github.com/curl/curl/issues/5881)
## Negotiate authentication against Hadoop
[curl issue 8264](https://github.com/curl/curl/issues/8264)
# FTP
## FTP with ACCT
When doing an operation over FTP that requires the `ACCT` command (but not when
logging in), the operation fails since libcurl does not detect this and thus
fails to issue the correct command: https://curl.se/bug/view.cgi?id=635
## FTPS server compatibility on Windows with Schannel
FTPS is not widely used with the Schannel TLS backend and so there may be more
bugs compared to other TLS backends such as OpenSSL. In the past users have
reported hanging and failed connections. It is likely some changes to curl
since then fixed the issues. None of the reported issues can be reproduced any
longer.
If you encounter an issue connecting to your server via FTPS with the latest
curl and Schannel then please search for open issues or file a new issue.
# SFTP and SCP
## SFTP does not do `CURLOPT_POSTQUOTE` correct
When libcurl sends `CURLOPT_POSTQUOTE` commands when connected to an SFTP
server using the multi interface, the commands are not being sent correctly
and instead the connection is canceled (the operation is considered done)
prematurely. There is a half-baked (busy-looping) patch provided in the bug
report but it cannot be accepted as-is. See
https://curl.se/bug/view.cgi?id=748
## Remote recursive folder creation with SFTP
On this servers, the curl fails to create directories on the remote server
even when the `CURLOPT_FTP_CREATE_MISSING_DIRS` option is set.
See [curl issue 5204](https://github.com/curl/curl/issues/5204)
## libssh blocking and infinite loop problem
In the `SSH_SFTP_INIT` state for libssh, the ssh session working mode is set
to blocking mode. If the network is suddenly disconnected during sftp
transmission, curl is stuck, even if curl is configured with a timeout.
[curl issue 8632](https://github.com/curl/curl/issues/8632)
## Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
Running SCP and SFTP tests on Cygwin makes this warning message appear.
[curl issue 11244](https://github.com/curl/curl/issues/11244)
# Connection
## `--interface` with link-scoped IPv6 address
When you give the `--interface` option telling curl to use a specific
interface for its outgoing traffic in combination with an IPv6 address in the
URL that uses a link-local scope, curl might pick the wrong address from the
named interface and the subsequent transfer fails.
Example command line:
curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/'
The fact that the given IP address is link-scoped should probably be used as
input to somehow make curl make a better choice for this.
[curl issue 14782](https://github.com/curl/curl/issues/14782)
## Does not acknowledge getaddrinfo sorting policy
Even if a user edits `/etc/gai.conf` to prefer IPv4, curl still prefers and
tries IPv6 addresses first.
[curl issue 16718](https://github.com/curl/curl/issues/16718)
## SOCKS-SSPI discards the security context
After a successful SSPI/GSS-API exchange, the function queries and logs the
authenticated username and reports the supported data-protection level, but
then immediately deletes the negotiated SSPI security context and frees the
credentials before returning. The negotiated context is not stored on the
connection and is therefore never used to protect later SOCKS5 traffic.
## cannot use absolute Unix domain filename for SOCKS on Windows
curl supports using a Unix domain socket path for speaking SOCKS to a proxy,
by providing a filename in the URL used for `-x` (`CURLOPT_PROXY`), but that
path cannot be a proper absolute Windows path with a drive letter etc.
A solution for this probably requires that we add and provide a
`--unix-socket` (`CURLOPT_UNIX_SOCKET_PATH`) option alternative for proxy
communication.
See [curl issue 19825](https://github.com/curl/curl/issues/19825)
# Internals
## GSSAPI library name + version is missing in `curl_version_info()`
The struct needs to be expanded and code added to store this info.
See [curl issue 13492](https://github.com/curl/curl/issues/13492)
## error buffer not set if connection to multiple addresses fails
If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
when you only have IPv4 connectivity. libcurl fails with
`CURLE_COULDNT_CONNECT`, but the error buffer set by `CURLOPT_ERRORBUFFER`
remains empty. Issue: [curl issue 544](https://github.com/curl/curl/issues/544)
## HTTP test server 'connection-monitor' problems
The `connection-monitor` feature of the HTTP test server does not work
properly if some tests are run in unexpected order. Like 1509 and then 1525.
See [curl issue 868](https://github.com/curl/curl/issues/868)
## Connection information when using TCP Fast Open
`CURLINFO_LOCAL_PORT` (and possibly a few other) fails when TCP Fast Open is
enabled.
See [curl issue 1332](https://github.com/curl/curl/issues/1332) and
[curl issue 4296](https://github.com/curl/curl/issues/4296)
## test cases sometimes timeout
Occasionally, one of the tests timeouts. Inexplicably.
See [curl issue 13350](https://github.com/curl/curl/issues/13350)
## `CURLOPT_CONNECT_TO` does not work for HTTPS proxy
It is unclear if the same option should even cover the proxy connection or if
if requires a separate option.
See [curl issue 14481](https://github.com/curl/curl/issues/14481)
## WinIDN test failures
Test 165 disabled when built with WinIDN.
## setting a disabled option should return `CURLE_NOT_BUILT_IN`
When curl has been built with specific features or protocols disabled, setting
such options with `curl_easy_setopt()` should rather return
`CURLE_NOT_BUILT_IN` instead of `CURLE_UNKNOWN_OPTION` to signal the
difference to the application
See [curl issue 15472](https://github.com/curl/curl/issues/15472)
# LDAP
## OpenLDAP hangs after returning results
By configuration defaults, OpenLDAP automatically chase referrals on secondary
socket descriptors. The OpenLDAP backend is asynchronous and thus should
monitor all socket descriptors involved. Currently, these secondary
descriptors are not monitored, causing OpenLDAP library to never receive data
from them.
As a temporary workaround, disable referrals chasing by configuration.
The fix is not easy: proper automatic referrals chasing requires a synchronous
bind callback and monitoring an arbitrary number of socket descriptors for a
single easy handle (currently limited to 5).
Generic LDAP is synchronous: OK.
See [curl issue 622](https://github.com/curl/curl/issues/622) and
https://curl.se/mail/lib-2016-01/0101.html
## LDAP on Windows does authentication wrong?
[curl issue 3116](https://github.com/curl/curl/issues/3116)
## LDAP on Windows does not work
A simple curl command line getting `ldap://ldap.forumsys.com` returns an error
that says `no memory` !
[curl issue 4261](https://github.com/curl/curl/issues/4261)
## LDAPS requests to Active Directory server hang
[curl issue 9580](https://github.com/curl/curl/issues/9580)
# TCP/IP
## telnet code does not handle partial writes properly
It probably does not happen too easily because of how slow and infrequent
sends are normally performed.
## Trying local ports fails on Windows
This makes `--local-port [range]` to not work since curl cannot properly
detect if a port is already in use, so it tries the first port, uses that and
then subsequently fails anyway if that was actually in use.
[curl issue 8112](https://github.com/curl/curl/issues/8112)
# CMake
## cmake outputs: no version information available
Something in the SONAME generation seems to be wrong in the cmake build.
[curl issue 11158](https://github.com/curl/curl/issues/11158)
## uses `-lpthread` instead of `Threads::Threads`
See [curl issue 6166](https://github.com/curl/curl/issues/6166)
## generated `.pc` file contains strange entries
The `Libs.private` field of the generated `.pc` file contains `-lgcc -lgcc_s
-lc -lgcc -lgcc_s`.
See [curl issue 6167](https://github.com/curl/curl/issues/6167)
## CMake build with MIT Kerberos does not work
Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2
try_compile started respecting the `CMAKE_EXE_FLAGS`. The code dealing with
MIT Kerberos detection sets few variables to potentially weird mix of space,
and ;-separated flags. It had to blow up at some point. All the CMake checks
that involve compilation are doomed from that point, the configured tree
cannot be built.
[curl issue 6904](https://github.com/curl/curl/issues/6904)
# Authentication
## `--aws-sigv4` does not handle multipart/form-data correctly
[curl issue 13351](https://github.com/curl/curl/issues/13351)
# HTTP/2
## HTTP/2 prior knowledge over proxy
[curl issue 12641](https://github.com/curl/curl/issues/12641)
## HTTP/2 frames while in the connection pool kill reuse
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
curl while the connection is held in curl's connection pool, the socket is
found readable when considered for reuse and that makes curl think it is dead
and then it is closed and a new connection gets created instead.
This is *best* fixed by adding monitoring to connections while they are kept
in the pool so that pings can be responded to appropriately.
## `ENHANCE_YOUR_CALM` causes infinite retries
Infinite retries with 2 parallel requests on one connection receiving `GOAWAY`
with `ENHANCE_YOUR_CALM` error code.
See [curl issue 5119](https://github.com/curl/curl/issues/5119)
## HTTP/2 + TLS spends a lot of time in recv
It has been observed that by making the speed limit less accurate we could
improve this performance. (by reverting
[db5c9f4f9e0779](https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b))
Can we find a golden middle ground?
See https://curl.se/mail/lib-2024-05/0026.html and
[curl issue 13416](https://github.com/curl/curl/issues/13416)
# HTTP/3
## connection migration does not work
[curl issue 7695](https://github.com/curl/curl/issues/7695)
## quiche: QUIC connection is draining
The transfer ends with error "QUIC connection is draining".
[curl issue 12037](https://github.com/curl/curl/issues/12037)
# RTSP
## Some methods do not support response bodies
The RTSP implementation is written to assume that a number of RTSP methods
always get responses without bodies, even though there seems to be no
indication in the RFC that this is always the case.
[curl issue 12414](https://github.com/curl/curl/issues/12414)

View file

@ -0,0 +1,257 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# Mail etiquette
## About the lists
### Mailing Lists
The mailing lists we have are all listed and described on the [curl
website](https://curl.se/mail/).
Each mailing list is targeted to a specific set of users and subjects, please
use the one or the ones that suit you the most.
Each mailing list has hundreds up to thousands of readers, meaning that each
mail sent is received and read by a large number of people. People from
various cultures, regions, religions and continents.
### Netiquette
Netiquette is a common term for how to behave on the Internet. Of course, in
each particular group and subculture there are differences in what is
acceptable and what is considered good manners.
This document outlines what we in the curl project consider to be good
etiquette, and primarily this focus on how to behave on and how to use our
mailing lists.
### Do Not Mail a Single Individual
Many people send one question to one person. One person gets many mails, and
there is only one person who can give you a reply. The question may be
something that other people would also like to ask. These other people have no
way to read the reply, but to ask the one person the question. The one person
consequently gets overloaded with mail.
If you really want to contact an individual and perhaps pay for his or her
services, by all means go ahead, but if it is another curl question, take it
to a suitable list instead.
### Subscription Required
All curl mailing lists require that you are subscribed to allow a mail to go
through to all the subscribers.
If you post without being subscribed (or from a different mail address than
the one you are subscribed with), your mail is silently discarded. You
have to subscribe first, then post.
The reason for this unfortunate and strict subscription policy is of course to
stop spam from pestering the lists.
### Moderation of new posters
Several of the curl mailing lists automatically make all posts from new
subscribers be moderated. After you have subscribed and sent your first mail
to a list, that mail is not let through to the list until a mailing list
administrator has verified that it is OK and permits it to get posted.
Once a first post has been made that proves the sender is actually talking
about curl-related subjects, the moderation "flag" is switched off and future
posts go through without being moderated.
The reason for this moderation policy is that we do suffer from spammers who
actually subscribe and send spam to our lists.
### Handling trolls and spam
Despite our good intentions and hard work to keep spam off the lists and to
maintain a friendly and positive atmosphere, there are times when spam and or
trolls get through.
Troll - "someone who posts inflammatory, extraneous, or off-topic messages in
an online community"
Spam - "use of electronic messaging systems to send unsolicited bulk messages"
No matter what, we NEVER EVER respond to trolls or spammers on the list. If
you believe the list admin should do something in particular, contact them
off-list. The subject is taken care of as much as possible to prevent repeated
offenses, but responding on the list to such messages never leads to anything
good and only puts the light even more on the offender: which was the entire
purpose of it getting sent to the list in the first place.
Do not feed the trolls.
### How to unsubscribe
You can unsubscribe the same way you subscribed in the first place. You go to
the page for the particular mailing list you are subscribed to and you enter
your email address and password and press the unsubscribe button.
Also, the instructions to unsubscribe are included in the headers of every
mail that is sent out to all curl related mailing lists and there is a footer
in each mail that links to the "admin" page on which you can unsubscribe and
change other options.
You NEVER EVER email the mailing list requesting someone else to take you off
the list.
### I posted, now what?
If you are not subscribed with the same email address that you used to send
the email, your post is silently discarded.
If you posted for the first time to the mailing list, you first need to wait
for an administrator to allow your email to go through (moderated). This
normally happens quickly but in case we are asleep, you may have to wait a few
hours.
Once your email goes through it is sent out to several hundred or even
thousands of recipients. Your email may cover an area that not that many
people know about or are interested in. Or possibly the person who knows about
it is on vacation or under a heavy work load right now. You may have to wait
for a response and you should not expect to get a response at all. Ideally,
you get an answer within a couple of days.
You do yourself and all of us a service when you include as many details as
possible already in your first email. Mention your operating system and
environment. Tell us which curl version you are using and tell us what you
did, what happened and what you expected would happen. Preferably, show us
what you did with details enough to allow others to help point out the problem
or repeat the steps in their locations.
Failing to include details only delays responses and make people respond and
ask for more details and you have to send follow-up emails that include them.
Expect the responses to primarily help YOU debug the issue, or ask YOU
questions that can lead you or others towards a solution or explanation to
whatever you experience.
If you are a repeat offender to the guidelines outlined in this document,
chances are that people ignore you and your chances to get responses in the
future greatly diminish.
### Your emails are public
Your email, its contents and all its headers and the details in those headers
are received by every subscriber of the mailing list that you send your email
to.
Your email as sent to a curl mailing list ends up in mail archives, on the
curl website and elsewhere, for others to see and read. Today and in the
future. In addition to the archives, the mail is sent out to thousands of
individuals. There is no way to undo a sent email.
When sending emails to a curl mailing list, do not include sensitive
information such as usernames and passwords; use fake ones, temporary ones or
remove them completely from the mail. Note that this includes base64 encoded
HTTP Basic auth headers.
This public nature of the curl mailing lists makes automatically inserted mail
footers about mails being "private" or "only meant for the recipient" or
similar even more silly than usual. Because they are absolutely not private
when sent to a public mailing list.
## Sending mail
### Reply or New Mail
Please do not reply to an existing message as a short-cut to post a message to
the lists.
Many mail programs and web archivers use information within mails to keep them
together as "threads", as collections of posts that discuss a certain subject.
If you do not intend to reply on the same or similar subject, do not hit reply
on an existing mail and change the subject, create a new mail.
### Reply to the List
When replying to a message from the list, make sure that you do "group reply"
or "reply to all", and not reply to the author of the single mail you reply
to.
We are actively discouraging replying to the single person by setting the
correct field in outgoing mails back asking for replies to get sent to the
mailing list address, making it harder for people to reply to the author only
by mistake.
### Use a Sensible Subject
Please use a subject of the mail that makes sense and that is related to the
contents of your mail. It makes it a lot easier to find your mail afterwards
and it makes it easier to track mail threads and topics.
### Do Not Top-Post
If you reply to a message, do not use top-posting. Top-posting is when you
write the new text at the top of a mail and you insert the previous quoted
mail conversation below. It forces users to read the mail in a backwards order
to properly understand it.
This is why top posting is so bad (in top posting order):
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in email?
Apart from the screwed up read order (especially when mixed together in a
thread when someone responds using the mandated bottom-posting style), it also
makes it impossible to quote only parts of the original mail.
When you reply to a mail. You let the mail client insert the previous mail
quoted. Then you put the cursor on the first line of the mail and you move
down through the mail, deleting all parts of the quotes that do not add
context for your comments. When you want to add a comment you do so, inline,
right after the quotes that relate to your comment. Then you continue
downwards again.
When most of the quotes have been removed and you have added your own words,
you are done.
### HTML is not for mails
Please switch off those HTML encoded messages. You can mail all those funny
mails to your friends. We speak plain text mails.
### Quoting
Quote as little as possible. Enough to provide the context you cannot leave
out.
### Digest
We allow subscribers to subscribe to the "digest" version of the mailing
lists. A digest is a collection of mails lumped together in one single mail.
Should you decide to reply to a mail sent out as a digest, there are two
things you MUST consider if you really, really cannot subscribe normally
instead:
Cut off all mails and chatter that is not related to the mail you want to
reply to.
Change the subject name to something sensible and related to the subject,
preferably even the actual subject of the single mail you wanted to reply to
### Please Tell Us How You Solved The Problem
Many people mail questions to the list, people spend some of their time and
make an effort in providing good answers to these questions.
If you are the one who asks, please consider responding once more in case one
of the hints was what solved your problems. The guys who write answers feel
good to know that they provided a good answer and that you fixed the problem.
Far too often, the person who asked the question is never heard from again,
and we never get to know if they are gone because the problem was solved or
perhaps because the problem was unsolvable.
Getting the solution posted also helps other users that experience the same
problem(s). They get to see (possibly in the web archives) that the suggested
fixes actually have helped at least one person.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,50 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
README
Curl is a command line tool for transferring data specified with URL
syntax. Find out how to use curl by reading the curl.1 man page or the
MANUAL document. Find out how to install Curl by reading the INSTALL
document.
libcurl is the library curl is using to do its job. It is readily
available to be used by your software. Read the libcurl.3 man page to
learn how.
You find answers to the most frequent questions we get in the FAQ.md
document.
Study the COPYING file for distribution terms.
Those documents and more can be found in the docs/ directory.
CONTACT
If you have problems, questions, ideas or suggestions, please contact us
by posting to a suitable mailing list. See https://curl.se/mail/
All contributors to the project are listed in the THANKS document.
WEBSITE
Visit the curl website for the latest news and downloads:
https://curl.se/
GIT
To download the latest source code off the GIT server, do this:
git clone https://github.com/curl/curl
(you will get a directory named curl created, filled with the source code)
SECURITY PROBLEMS
Report suspected security problems privately and not in public.
https://curl.se/dev/vuln-disclosure.html

View file

@ -0,0 +1,18 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
![curl logo](https://curl.se/logo/curl-logo.svg)
# Documentation
You find a mix of various documentation in this directory and subdirectories,
using several different formats. Some of them are not ideal for reading
directly in your browser.
If you would rather see the rendered version of the documentation, check out the
curl website's [documentation section](https://curl.se/docs/) for
general curl stuff or the [libcurl section](https://curl.se/libcurl/) for
libcurl related documentation.

View file

@ -0,0 +1,628 @@
curl and libcurl 8.20.0
Public curl releases: 274
Command line options: 273
curl_easy_setopt() options: 308
Public functions in libcurl: 100
Authors: 1463
Contributors: 3664
This release includes the following changes:
o async-thrdd: use thread queue for resolving [144]
o build: make NTLM disabled by default [90]
o cmake: drop support for CMake 3.17 and older [108]
o lib: add thread pool and queue [74]
o lib: drop support for < c-ares 1.16.0 [64]
o lib: make SMB support opt-in [18]
o multi.h: add CURLMNWC_CLEAR_ALL [127]
o rtmp: drop support [91]
This release includes the following bugfixes:
o altsvc: cap the list at 5,000 entries [183]
o altsvc: drop the prio field from the struct [185]
o altsvc: skip expired entries read from file [187]
o asyn-ares: connect async [220]
o asyn-ares: drop orphaned variable references [86]
o asyn-ares: fix HTTPS-lookup when not on port 443 [100]
o asyn-thrdd: drop redundant `result` check [291]
o asyn-thrdd: fix clang-tidy unused value warning [125]
o async-ares: fix query counter handling [195]
o autotools: limit checksrc target to ignore non-repo test sources [12]
o badwords-all: exit with correct code on errors [50]
o badwords: combine the whitelisting into a single regex [1]
o badwords: detect the the and with with [51]
o badwords: only check comments and strings in source code [61]
o badwords: rework exceptions, fix many of them [15]
o boringssl: fix more coexist cases with Schannel/WinCrypt [170]
o build: adjust/add casts to fix `-Wformat-signedness` [218]
o build: assume `snprintf()` in `mprintf`, drop feature check [107]
o build: compiler warning silencing tidy-ups [4]
o build: drop `openssl` module dependency for BoringSSL from `libcurl.pc` [33]
o build: drop duplicate `pthread.h` includes [158]
o build: drop redundant `USE_QUICHE` guards [159]
o build: enable `-Wimplicit-int-enum-cast` compiler warning, fix issues [84]
o build: fix `-Wformat-signedness` by adjusting printf masks [226]
o build: link `bcrypt.lib` via vcxproj files [239]
o build: skip detecting `pipe2()` for Apple targets [227]
o build: stop building and installing `runtests.1` and `testcurl.1` [235]
o cf-https-connect: silence `-Wimplicit-int-enum-cast` with HTTPS-RR [132]
o cf-https-connect: silence `-Wimplicit-int-enum-cast` with HTTPS-RR [63]
o cf-ip-happy: limit concurrent attempts [191]
o cf-socket: avoid low risk integer overflow on ancient Solaris [56]
o cfilters: fix Curl_pollset_poll() return code mixup [206]
o clang-tidy: avoid assignments in `if` expressions [175]
o clang-tidy: enable more checks, fix fallouts [254]
o cmake: add CMake Config-based dependency detection [87]
o cmake: add CMake Config-based dependency detection for c-ares, wolfSSL [134]
o cmake: do not install `wcurl` when `BUILD_CURL_EXE=OFF` [265]
o cmake: do not install shell completions when `BUILD_CURL_EXE=OFF` [263]
o cmake: document functions used from Windows system DLLs [103]
o cmake: enable pthreads for BoringSSL/AWS-LC [196]
o cmake: resolve targets recursively when generating `libcurl.pc` [45]
o cmake: rework binutils ld hack to not read `LOCATION` property [41]
o cmake: silence bad library `Threads::Threads` warning [131]
o cmake: use `AIX` built-in variable (with CMake 4.0+) [163]
o config2setopts: make --capath work in proxy disabled builds [113]
o configure: fix `--with-ngtcp2=<path>` option for crypto libs [26]
o configure: fix LibreSSL ngtcp2 1.15.0+ crypto lib selection logic [3]
o configure: prefer dependency-specific variables over `$withval` [35]
o configure: remove superfluous experimental warning for HTTP/3 [169]
o configure: silence useless clang warnings in C89 builds [156]
o configure: tidy up comments [202]
o connect: fix typo on error message
o cookie: fix rejection when tabs in value [189]
o curl-wolfssl.m4: fix to use the correct value for pkg-config directory [36]
o curl.h: replace macros with C++-friendly method to enforce 3 args [110]
o curl_ctype.h: fix spelling in a couple of locally used macros [28]
o curl_get_line: error out on read errors [9]
o curl_get_line: fix potential infinite loop when filename is a directory [46]
o curl_ngtcp2: extend and update callbacks for 1.22.0+ [165]
o curl_ntlm_core: drop redundant PP condition [140]
o curl_ntlm_core: use wolfCrypt DES API with wolfSSL [200]
o curl_setup.h: drop stray/unused `USE_OPENSSL_QUIC` guard [210]
o curl_sha512_256: support delegating to wolfSSL API [149]
o curl_version_info.md: clarify age details [69]
o CURLOPT_HAPROXY_CLIENT_IP.md: mention assumption on data format [96]
o CURLOPT_RTSP_SESSION_ID.md: clarify reuse "dangers" [270]
o CURLOPT_RTSP_SESSION_ID.md: expand the comment [267]
o CURLOPT_RTSP_SESSION_ID.md: minor language fix
o CURLOPT_SOCKS5_AUTH.md: an access property [212]
o CURLOPT_SSL_CTX_FUNCTION.md: expand on effects connection reuse [105]
o CURLOPT_UPLOAD_FLAGS.md: expand [223]
o curlx_now(), prevent zero timestamp [93]
o DEPRECATE: fix minor release number typo
o digest: pass in the user name quoted (as well) [34]
o dns: https-eyeballing async [229]
o dnscache: own source file, improvements [116]
o docs/cmdline-opts/write-out.md: tls_earlydata was adeded in 8.13.0
o docs/cmdline-opts: tidy up retry-connrefused [190]
o docs/lib: fix typos [53]
o docs/libcurl: improve easy setopt examples [266]
o docs: clarify retry-max-time timing [294]
o docs: CURLOPT_LOGIN_OPTIONS is a login property [228]
o docs: enable more compiler warnings for C snippets, fix 3 finds [71]
o docs: list more dependencies for running Python HTTP tests [123]
o docs: mention more zip bomb precautions [166]
o docs: minor wording tweaks
o docs: noproxy wants the punycoded hostname version [214]
o docs: SSH host verification is done at connect time [197]
o docs: use the correct CURLOPT_WRITEFUNCTION signature [142]
o doh: fix memory-leak when doing a second DoH resolve [55]
o doh: remove superfluous doh_req check [222]
o examples/websocket: fix to sleep more on Windows [92]
o examples: drop warning silencers no longer hit [14]
o examples: fix typo in comment [75]
o file: init fd to -1 to prevent close fd 0 on early failure [40]
o fopen: for temp files, inherit permissions only for owner [146]
o ftp: do not strdup DATA hostname [29]
o ftp: make the MDTM date parser stricter (again) [115]
o ftp: reject PWD responses containing control characters [95]
o gcc: guard `#pragma diagnostic` in core code for <4.6 [94]
o generate.bat: remove extra % from VC11 and VC12 runs
o genserv.pl: make external calls safe [119]
o getinfo: initialize `PureInfo` field `used_proxy` [43]
o getinfo: repair CURLINFO_TLS_SESSION [193]
o gnutls: fix clang-tidy warning with !verbose [126]
o gtls: fail for large files in `load_file()` [174]
o h3: HTTPS-RR use in HTTP/3 [221]
o Happy Eyeballs: add resolution time delay [238]
o haproxy: use correct ip version on client supplied address [275]
o hostip: clear the sockaddr_in6 structure before use [20]
o hostip: init the curl_jmpenv_lock appropriately [278]
o hostip: resolve user supplied ip addresses [259]
o HSTS: cap the list [177]
o hsts: make the HSTS read callback handle name dupes [141]
o hsts: skip expired HSTS entries read from file [188]
o hsts: when a dupe host adds subdomains, use that [130]
o http2: clear the h2 session at delete [99]
o http2: prevent secure schemes pushed over insecure connections [181]
o http2: return error on OOM in push headers [65]
o HTTP3.md: drop outdated mentions of OpenSSL-QUIC [2]
o http: clear credentials better on redirect [204]
o http: clear digest nonce on cross-orgin redirect [269]
o http: clear the proxy credentials as well on port or scheme change [246]
o http: fix auth_used and auth_avail [154]
o http: fix Curl_compareheader for multi value headers [11]
o http: make Curl_compareheader handle multiple commas in header
o http: on 303, switch to GET [208]
o http: use header_has_value() instead of duplicate code [251]
o imap: reset the UIDVALIDITY state between transfers [7]
o include: drop 'will' from public headers [73]
o INSTALL.md: update Cygwin instructions [198]
o keylog.h: replace literal number with macro in declaration [171]
o keylog: drop unused/redundant includes and guards [172]
o ldap: drop duplicate `ldap_set_option()` on Windows [42]
o ldap: fix to initialize cleartext connection on Windows [49]
o lib1560: fix comment typo
o lib1960: fix test failure [255]
o lib: accept larger input to md5/hmac/sha256/sha512 functions [194]
o lib: always use Curl_1st_fatal instead of Curl_1st_err [89]
o lib: fix typos in comments [240]
o lib: make resolving HTTPS DNS records reliable: [176]
o lib: minor comment typos [237]
o lib: move request specific allocations to the request struct [256]
o lib: replace `PRI*32` printf masks with C89 ones [201]
o libssh2: allocate libssh2-friendly memory in kbd_callback [225]
o libssh2: fix error handling on quote errors [21]
o libssh: fix 64-bit printf mask for mingw-w64 <=6.0.0 [215]
o libssh: fix `-Wsign-compare` in 32-bit builds [217]
o libssh: path length precaution [164]
o libssh: propagate error back in SFTP function [178]
o libtest: drop duplicate include [111]
o location/follow: mention netrc [138]
o man: fix argument type for `CURLSHOPT_[UN]SHARE` options [211]
o mbedtls: cleanup more without care for 'initialized' [262]
o mbedtls: fix ECJPAKE matching [135]
o mbedtls: remove failf() call with first argument as NULL [249]
o md4, md5: switch to wolfCrypt API in wolfSSL builds [139]
o mime: only allow 40 levels of calls [241]
o misc: fix code quality findings [209]
o mk-ca-bundle.pl: make `ca-bundle.crt` timestamp match `certdata.txt`'s [44]
o multi: enhance pending handles fairness [284]
o multi: fix connection retry for non-http [180]
o multi: improve wakeup and wait code [118]
o netrc: find login-less password when user is given in URL [6]
o netrc: remove unused parsenetrc() macro for netrc-disabled [121]
o netrc: skip malformed macdef lines [67]
o openssl channel_binding: lookup digest algorithm without NID [117]
o openssl: drop obsolete SSLv2 logic [27]
o openssl: fix build with 4.0.0-beta1 no-deprecated [184]
o openssl: fix memory leaks in ECH code (OpenSSL 3) [78]
o openssl: fix unused variable warnings in !verbose builds [252]
o openssl: trace count of found / imported Windows native CA roots [8]
o OS400: add new definitions to the ILE/RPG binding. [153]
o os400sys: fix typo in comment (symetry -> symmetry) [58]
o parsedate: bsearch the time zones [232]
o parsedate: fix wrong treatment of "military time zones" [182]
o parsedate: refactor [230]
o perl: harden external command invocations [133]
o progress: count amount of data "delivered" to application [66]
o protocol.h: fix the CURLPROTO_MASK [31]
o protocol: disable connection reuse for SMB(S) [199]
o protocol: use scheme names lowercase [38]
o proxy: chunked response, error code [143]
o pytest: add additional quiche check for flaky test_05_01 [22]
o pytest: check 429 handling [268]
o rand: use `BCryptGenRandom()` in UWP builds [88]
o ratelimit: reset on start [150]
o request: reset resp_trailer in new requests [186]
o runtests: skip setting ed25519 SSH key format [264]
o rustls: fix memory leak on repeated SSLKEYLOGFILE fails [280]
o rustls: handle EOF during initial handshake [203]
o schannel: increase renegotiation timeout to 60 seconds [261]
o scripts: drop redundant double-quotes: `"$var"` -> `$var` (Perl) [109]
o scripts: harden / tidy up more Perl `system()` calls [70]
o sectrust: fail on missing OCSP stapling [250]
o sendf: fix CR detection if no LF is in the chunk [219]
o setopt: clear proxy auth properties when switching [192]
o setopt: fix typos in comments [257]
o setopt: move CURLOPT_CURLU [260]
o setup connection filter: mark as setup [234]
o sha256, sha512_256: switch to wolfCrypt API [147]
o sha256: support delegating to wolfSSL API [148]
o share: concurrency handling, easy updates [104]
o share: do bitshifts after the type is checked to be valid [216]
o socks: reject zero-length GSSAPI/SSPI tokens from proxy [157]
o socks: use dns filter for resolving [244]
o spelling: fix typos [173]
o src: use ftruncate() unconditionally [128]
o sshserver.pl: harden more `system()` calls [81]
o sshserver.pl: pass command-line to `system()` safely [82]
o strerr: correct the strerror_s() return code condition [25]
o sws: fix potential OOB write [80]
o synctime: fix off-by-one read and write to a read-only buffer (Windows) [85]
o test 766: flag as timing-dependent [136]
o test1675: unit tests for URL API helper functions [248]
o test459: switch to mode="warn" for stderr check [5]
o testcurl.pl: replace shell commands with Perl `rmtree()` [76]
o tests/unit/README: describe how to unit test static functions [60]
o tests: avoid infinite recursion for `make check` [253]
o tests: use %b64[] instead of "raw" base64 [245]
o tool: check for curlinfo->age when determining if ssh backend [77]
o tool: fix memory mixups [106]
o tool: fix retries in parallel mode [137]
o tool: fix two more allocator mismatches [155]
o tool_cb_hdr: only truncate etags output when regular file [129]
o tool_cb_rea: make waitfd() return void [168]
o tool_cb_wrt: fix no-clobber error handling [39]
o tool_cfgable: free the SSL signature algorithms [62]
o tool_dirhie: fix to create drive-relative directory [276]
o tool_formparse: propagate my_get_line errors when reading headers [102]
o tool_getparam: use correct free function for libcurl memory [68]
o tool_ipfs: accept IPFS gateway URL without set port number [13]
o tool_msgs: avoid null pointer deref for early errors [98]
o tool_operate: actually apply the --parallel-max-host limit [167]
o tool_operate: drop the scheme-guessing in the -G handling [54]
o tool_operate: fix condition for loading `curl-ca-bundle.crt` (Windows) [79]
o tool_operate: fix memory-leak on failed uploads [124]
o tool_operate: fix minor memory-leak on early error [23]
o tool_operate: reset the upload glob counter for next URL [162]
o tool_operhlp: fix `add_file_name_to_url()` result on OOM [32]
o tool_operhlp: iterate through all slashes to find name [114]
o tool_operhlp: propagate low-level OOM in `add_file_name_to_url()` [112]
o tool_setopt: return error on OOM correctly [152]
o tool_urlglob: fix memory-leak on glob range overflow [19]
o top-complexity: prevent filename-based shell injection risk [101]
o transfer: clear the old autoreferer [236]
o transfer: clear the URL pointer in OOM to avoid UAF [179]
o transfer: enable custom methods again on next transfer [30]
o transfer: enhance secure check [10]
o unit1675: fix `-Wformat-signedness` [274]
o url: do not reuse a non-tls starttls connection if new requires TLS [145]
o url: improve connection reuse on negotiate [160]
o url: init req.no_body in DO so that it works for h2 push [161]
o url: set default upload flags to CURLULFLAG_SEEN [224]
o url: use the socks type for socks proxy [47]
o url: use URL for url even in comments [52]
o urlapi: fix handling of "file:///" [122]
o urlapi: make dedotdotify handle leading dots correctly [97]
o urlapi: same origin tests [213]
o urlapi: stop extracting hostname from file:// URLs on Windows [247]
o urlapi: verify the last letter of a scheme when set explicitly [16]
o urldata.h: fix typo and lingering backtick [279]
o urldata: connection bit ipv6_ip is wrong [59]
o urldata: import port types and conn destination format [57]
o urldata: make hstslist only present in HSTS builds [120]
o urldata: make speeder_c uint32 [37]
o urldata: move cookiehost to struct SingleRequest [242]
o urldata: remove trailers_state [17]
o vquic: fix variable name in fallback code [207]
o vtls: fix comment typos and tidy up a type [285]
o vtls: log when key logging is enabled. [288]
o vtls_scache: check reentrancy [243]
o vtls_scache: include cert_blob independently of verifypeer [231]
o wolfssl: document v5.0.0 (2021-11-01) as minimum required [151]
o wolfssl: fix `-Wmissing-prototypes` [233]
o wolfssl: fix handling of abrupt connection close [24]
o write-out.md: minor language fix [273]
o write-out.md: tls_earlydata was adeded in 8.13.0
o ws: fix a blocking curl_ws_send() to report written length correctly [258]
o x509asn1: fix to return error in an error case from `encodeOID()` [83]
o x509asn1: fixed and adapted for ASN1tostr unit testing [48]
o x509asn1: improve encodeOID [72]
This release includes the following known bugs:
See https://curl.se/docs/knownbugs.html
For all changes ever done in curl:
See https://curl.se/changes.html
Planned upcoming removals include:
o local crypto implementations
o NTLM
o SMB
o TLS-SRP support
See https://curl.se/dev/deprecate.html
This release would not have looked like this without help, code, reports and
advice from friends like these:
Alex Hamilton, am-perip on hackerone, Arkadi Vainbrand, bird on github,
BlackFuffey on github, Carlos Carrillo, Carlos Henrique Lima Melara,
crawfordxx, Cutiapreta on hackerone, Dag-Erling Smørgrav, Dan Arnfield,
Dan Fandrich, Daniel McCarney, Daniel Schulte, Daniel Stenberg,
dependabot[bot], Dexter Gerig, Dio Putra, Dwij Mehta, Ercan Ermis,
fds242 on github, finkjsc on github, Fiona Klute, Flavio Amieiro,
Geeknik Labs, Greg Kroah-Hartman, Harry Sintonen, Henrique Pereira,
herbenderbler on github, Ian Spence, Izan on hackerone, James Fuller,
Jason Stangroome, John Haugabook, Juan Belón, Kai Pastor, Kaixuan Li, kpcyrd,
lg_oled77c5pua on hackerone, M42kL33 on hackerone, m777m0 on hackerone,
Marcel Raad, Martin Dürrmeier, Mehtab Zafar, Michael Hendricks,
Michael Kaufmann, Muhamad Arga Reksapati, Ngoc Hieu, nitrogene on github,
Orgad Shaneh, Osama Hamad, Otis Cui Lei, Patrick Monnerat, Quac Tran,
Ray Satiro, renovate[bot], Richard Tollerton, Rob Crittenden,
Samuel Henrique, Scott Boudreaux, Sergey Fedorov, sergio-nsk on github,
Stefan Eissing, Ted Lyngmo, Terrance Wong, Tim Omta, Viktor Szakats,
Vladimír Marek, xkilua on hackerone, Yalguun Tumenkhuu, Yedaya Katsman,
Yiwei Hou, Yoshiro Yoneya
(73 contributors)
References to bug reports and discussions on issues:
[1] = https://curl.se/bug/?i=20880
[2] = https://curl.se/bug/?i=20914
[3] = https://curl.se/bug/?i=20889
[4] = https://curl.se/bug/?i=20908
[5] = https://curl.se/bug/?i=20910
[6] = https://curl.se/bug/?i=20950
[7] = https://curl.se/bug/?i=20962
[8] = https://curl.se/bug/?i=20899
[9] = https://curl.se/bug/?i=20958
[10] = https://curl.se/bug/?i=20951
[11] = https://curl.se/bug/?i=20894
[12] = https://curl.se/bug/?i=20898
[13] = https://curl.se/bug/?i=20957
[14] = https://curl.se/bug/?i=20896
[15] = https://curl.se/bug/?i=20886
[16] = https://curl.se/bug/?i=20893
[17] = https://curl.se/bug/?i=20960
[18] = https://curl.se/bug/?i=20846
[19] = https://curl.se/bug/?i=20956
[20] = https://curl.se/bug/?i=20885
[21] = https://curl.se/bug/?i=20883
[22] = https://curl.se/bug/?i=20952
[23] = https://curl.se/bug/?i=20954
[24] = https://curl.se/bug/?i=21002
[25] = https://curl.se/bug/?i=20955
[26] = https://curl.se/bug/?i=18022
[27] = https://curl.se/bug/?i=20945
[28] = https://curl.se/bug/?i=20810
[29] = https://curl.se/bug/?i=20953
[30] = https://curl.se/bug/?i=21037
[31] = https://curl.se/bug/?i=21031
[32] = https://curl.se/bug/?i=21011
[33] = https://curl.se/bug/?i=20926
[34] = https://curl.se/bug/?i=20940
[35] = https://curl.se/bug/?i=20944
[36] = https://curl.se/bug/?i=20943
[37] = https://curl.se/bug/?i=21036
[38] = https://curl.se/bug/?i=21033
[39] = https://curl.se/bug/?i=20939
[40] = https://curl.se/bug/?i=21029
[41] = https://curl.se/bug/?i=20839
[42] = https://curl.se/bug/?i=20930
[43] = https://curl.se/bug/?i=21020
[44] = https://curl.se/bug/?i=20528
[45] = https://curl.se/bug/?i=20840
[46] = https://curl.se/bug/?i=20823
[47] = https://curl.se/bug/?i=21025
[48] = https://curl.se/bug/?i=21013
[49] = https://curl.se/bug/?i=20927
[50] = https://curl.se/bug/?i=20934
[51] = https://curl.se/bug/?i=20934
[52] = https://curl.se/bug/?i=20935
[53] = https://curl.se/bug/?i=20933
[54] = https://curl.se/bug/?i=20992
[55] = https://curl.se/bug/?i=20929
[56] = https://curl.se/bug/?i=21111
[57] = https://curl.se/bug/?i=20918
[58] = https://curl.se/bug/?i=20923
[59] = https://curl.se/bug/?i=20919
[60] = https://curl.se/bug/?i=21018
[61] = https://curl.se/bug/?i=20909
[62] = https://curl.se/bug/?i=20915
[63] = https://curl.se/bug/?i=21057
[64] = https://curl.se/bug/?i=20911
[65] = https://hackerone.com/reports/3636044
[66] = https://curl.se/bug/?i=20787
[67] = https://curl.se/bug/?i=21049
[68] = https://curl.se/bug/?i=21075
[69] = https://curl.se/bug/?i=21052
[70] = https://curl.se/bug/?i=21007
[71] = https://curl.se/bug/?i=21006
[72] = https://curl.se/bug/?i=21003
[73] = https://curl.se/bug/?i=21005
[74] = https://curl.se/bug/?i=20916
[75] = https://curl.se/bug/?i=21001
[76] = https://curl.se/bug/?i=21053
[77] = https://curl.se/bug/?i=21050
[78] = https://curl.se/bug/?i=20993
[79] = https://curl.se/bug/?i=20989
[80] = https://curl.se/bug/?i=20988
[81] = https://curl.se/bug/?i=20997
[82] = https://curl.se/bug/?i=20996
[83] = https://curl.se/bug/?i=20991
[84] = https://curl.se/bug/?i=20990
[85] = https://curl.se/bug/?i=20987
[86] = https://curl.se/bug/?i=20999
[87] = https://curl.se/bug/?i=20814
[88] = https://curl.se/bug/?i=20983
[89] = https://curl.se/bug/?i=20980
[90] = https://curl.se/bug/?i=20698
[91] = https://curl.se/bug/?i=20673
[92] = https://curl.se/bug/?i=20978
[93] = https://curl.se/bug/?i=21034
[94] = https://curl.se/bug/?i=20892
[95] = https://curl.se/bug/?i=20949
[96] = https://curl.se/bug/?i=21042
[97] = https://curl.se/bug/?i=20974
[98] = https://curl.se/bug/?i=20967
[99] = https://curl.se/bug/?i=20975
[100] = https://curl.se/bug/?i=20966
[101] = https://curl.se/bug/?i=20969
[102] = https://curl.se/bug/?i=20963
[103] = https://curl.se/bug/?i=20965
[104] = https://curl.se/bug/?i=20870
[105] = https://curl.se/bug/?i=21164
[106] = https://curl.se/bug/?i=21099
[107] = https://curl.se/bug/?i=20763
[108] = https://curl.se/bug/?i=20407
[109] = https://curl.se/bug/?i=21009
[110] = https://curl.se/bug/?i=20709
[111] = https://curl.se/bug/?i=21046
[112] = https://curl.se/bug/?i=21011
[113] = https://curl.se/bug/?i=21063
[114] = https://curl.se/bug/?i=21165
[115] = https://curl.se/bug/?i=21041
[116] = https://curl.se/bug/?i=20864
[117] = https://curl.se/bug/?i=20590
[118] = https://curl.se/bug/?i=20832
[119] = https://curl.se/bug/?i=20971
[120] = https://curl.se/bug/?i=21068
[121] = https://curl.se/bug/?i=21067
[122] = https://curl.se/bug/?i=21070
[123] = https://curl.se/bug/?i=21110
[124] = https://curl.se/bug/?i=21062
[125] = https://curl.se/bug/?i=21061
[126] = https://curl.se/bug/?i=21060
[127] = https://curl.se/bug/?i=20968
[128] = https://curl.se/bug/?i=21109
[129] = https://curl.se/bug/?i=21103
[130] = https://curl.se/bug/?i=21108
[131] = https://curl.se/bug/?i=21170
[132] = https://curl.se/bug/?i=21167
[133] = https://curl.se/bug/?i=21097
[134] = https://curl.se/bug/?i=21098
[135] = https://curl.se/bug/?i=21264
[136] = https://curl.se/bug/?i=21155
[137] = https://curl.se/bug/?i=20669
[138] = https://curl.se/bug/?i=21091
[139] = https://curl.se/bug/?i=21093
[140] = https://curl.se/bug/?i=21096
[141] = https://curl.se/bug/?i=21201
[142] = https://curl.se/bug/?i=21265
[143] = https://curl.se/bug/?i=21084
[144] = https://curl.se/bug/?i=20936
[145] = https://curl.se/bug/?i=21082
[146] = https://curl.se/bug/?i=21092
[147] = https://curl.se/bug/?i=21090
[148] = https://curl.se/bug/?i=21078
[149] = https://curl.se/bug/?i=21077
[150] = https://curl.se/bug/?i=21086
[151] = https://curl.se/bug/?i=21080
[152] = https://curl.se/bug/?i=21083
[153] = https://curl.se/bug/?i=20672
[154] = https://curl.se/bug/?i=21274
[155] = https://curl.se/bug/?i=21150
[156] = https://curl.se/bug/?i=21263
[157] = https://curl.se/bug/?i=21159
[158] = https://curl.se/bug/?i=21144
[159] = https://curl.se/bug/?i=21135
[160] = https://curl.se/bug/?i=21203
[161] = https://curl.se/bug/?i=21194
[162] = https://curl.se/bug/?i=21402
[163] = https://curl.se/bug/?i=21134
[164] = https://curl.se/bug/?i=21193
[165] = https://curl.se/bug/?i=21152
[166] = https://curl.se/bug/?i=21143
[167] = https://curl.se/bug/?i=21147
[168] = https://curl.se/bug/?i=21127
[169] = https://curl.se/bug/?i=21139
[170] = https://curl.se/bug/?i=21136
[171] = https://curl.se/bug/?i=21141
[172] = https://curl.se/bug/?i=21137
[173] = https://curl.se/bug/?i=21198
[174] = https://curl.se/bug/?i=21256
[175] = https://curl.se/bug/?i=21256
[176] = https://curl.se/bug/?i=21175
[177] = https://curl.se/bug/?i=21190
[178] = https://curl.se/bug/?i=21122
[179] = https://curl.se/bug/?i=21123
[180] = https://curl.se/bug/?i=21121
[181] = https://curl.se/bug/?i=21113
[182] = https://curl.se/bug/?i=21251
[183] = https://curl.se/bug/?i=21183
[184] = https://curl.se/bug/?i=21119
[185] = https://curl.se/bug/?i=21188
[186] = https://curl.se/bug/?i=21112
[187] = https://curl.se/bug/?i=21187
[188] = https://curl.se/bug/?i=21186
[189] = https://curl.se/bug/?i=21185
[190] = https://curl.se/bug/?i=21182
[191] = https://curl.se/bug/?i=21252
[192] = https://curl.se/bug/?i=21453
[193] = https://curl.se/bug/?i=21290
[194] = https://curl.se/bug/?i=21174
[195] = https://curl.se/bug/?i=21399
[196] = https://curl.se/bug/?i=21168
[197] = https://curl.se/bug/?i=21173
[198] = https://curl.se/bug/?i=20995
[199] = https://curl.se/bug/?i=21238
[200] = https://curl.se/bug/?i=21247
[201] = https://curl.se/bug/?i=21234
[202] = https://curl.se/bug/?i=21246
[203] = https://curl.se/bug/?i=21242
[204] = https://curl.se/bug/?i=21345
[206] = https://curl.se/bug/?i=21231
[207] = https://curl.se/bug/?i=21281
[208] = https://curl.se/bug/?i=20715
[209] = https://curl.se/bug/?i=21393
[210] = https://curl.se/bug/?i=21235
[211] = https://curl.se/bug/?i=21232
[212] = https://curl.se/bug/?i=21230
[213] = https://curl.se/bug/?i=21328
[214] = https://curl.se/bug/?i=21228
[215] = https://curl.se/bug/?i=21229
[216] = https://curl.se/bug/?i=21224
[217] = https://curl.se/bug/?i=21225
[218] = https://curl.se/bug/?i=21339
[219] = https://curl.se/bug/?i=21221
[220] = https://curl.se/bug/?i=21205
[221] = https://curl.se/bug/?i=21253
[222] = https://curl.se/bug/?i=21216
[223] = https://curl.se/bug/?i=21218
[224] = https://curl.se/bug/?i=21217
[225] = https://curl.se/bug/?i=21336
[226] = https://curl.se/bug/?i=21335
[227] = https://curl.se/bug/?i=21236
[228] = https://curl.se/bug/?i=21215
[229] = https://curl.se/bug/?i=21267
[230] = https://curl.se/bug/?i=21394
[231] = https://curl.se/bug/?i=21222
[232] = https://curl.se/bug/?i=21266
[233] = https://curl.se/bug/?i=21392
[234] = https://curl.se/bug/?i=21437
[235] = https://curl.se/bug/?i=21461
[236] = https://curl.se/bug/?i=21322
[237] = https://curl.se/bug/?i=21388
[238] = https://curl.se/bug/?i=21354
[239] = https://curl.se/bug/?i=21386
[240] = https://curl.se/bug/?i=21385
[241] = https://curl.se/bug/?i=21384
[242] = https://curl.se/bug/?i=21312
[243] = https://curl.se/bug/?i=21383
[244] = https://curl.se/bug/?i=21297
[245] = https://curl.se/bug/?i=21313
[246] = https://curl.se/bug/?i=21304
[247] = https://curl.se/bug/?i=21296
[248] = https://curl.se/bug/?i=21296
[249] = https://curl.se/bug/?i=21441
[250] = https://curl.se/bug/?i=21444
[251] = https://curl.se/bug/?i=21302
[252] = https://curl.se/bug/?i=21380
[253] = https://curl.se/bug/?i=21378
[254] = https://curl.se/bug/?i=20794
[255] = https://curl.se/bug/?i=21377
[256] = https://curl.se/bug/?i=21301
[257] = https://curl.se/bug/?i=21303
[258] = https://curl.se/bug/?i=21372
[259] = https://curl.se/bug/?i=21146
[260] = https://curl.se/bug/?i=21298
[261] = https://curl.se/bug/?i=21270
[262] = https://curl.se/bug/?i=21440
[263] = https://curl.se/bug/?i=21460
[264] = https://curl.se/bug/?i=21360
[265] = https://curl.se/bug/?i=21458
[266] = https://curl.se/bug/?i=21364
[267] = https://curl.se/bug/?i=21363
[268] = https://curl.se/bug/?i=21357
[269] = https://curl.se/bug/?i=21359
[270] = https://curl.se/bug/?i=21358
[273] = https://curl.se/bug/?i=21455
[274] = https://curl.se/bug/?i=21351
[275] = https://curl.se/bug/?i=21340
[276] = https://curl.se/bug/?i=21449
[278] = https://curl.se/bug/?i=21432
[279] = https://curl.se/bug/?i=21430
[280] = https://curl.se/bug/?i=21427
[284] = https://curl.se/bug/?i=21396
[285] = https://curl.se/bug/?i=21421
[288] = https://curl.se/bug/?i=19814
[291] = https://curl.se/bug/?i=21415
[294] = https://curl.se/bug/?i=21411

View file

@ -0,0 +1,97 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# SSL problems
First, let's establish that we often refer to TLS and SSL interchangeably as
SSL here. The current protocol is called TLS, it was called SSL a long time
ago.
There are several known reasons why a connection that involves SSL might
fail. This is a document that attempts to detail the most common ones and
how to mitigate them.
## CA certs
CA certs are used to digitally verify the server's certificate. You need a
"ca bundle" for this. See lots of more details on this in the `SSLCERTS`
document.
## CA bundle missing intermediate certificates
When using said CA bundle to verify a server cert, you may experience
problems if your CA store does not contain the certificates for the
intermediates if the server does not provide them.
The TLS protocol mandates that the intermediate certificates are sent in the
handshake, but as browsers have ways to survive or work around such
omissions, missing intermediates in TLS handshakes still happen that browser
users do not notice.
Browsers work around this problem in two ways: they cache intermediate
certificates from previous transfers and some implement the TLS "AIA"
extension that lets the client explicitly download such certificates on
demand.
## Protocol version
Some broken servers fail to support the protocol negotiation properly that
SSL servers are supposed to handle. This may cause the connection to fail
completely. Sometimes you may need to explicitly select an SSL version to
use when connecting to make the connection succeed.
An additional complication can be that modern SSL libraries sometimes are
built with support for older SSL and TLS versions disabled.
All versions of SSL and the TLS versions before 1.2 are considered insecure
and should be avoided. Use TLS 1.2 or later.
## Ciphers
Clients give servers a list of ciphers to select from. If the list does not
include any ciphers the server wants/can use, the connection handshake
fails.
curl has recently disabled the user of a whole bunch of seriously insecure
ciphers from its default set (slightly depending on SSL backend in use).
You may have to explicitly provide an alternative list of ciphers for curl
to use to allow the server to use a weak cipher for you.
Note that these weak ciphers are identified as flawed. For example, this
includes symmetric ciphers with less than 128-bit keys and RC4.
Schannel in Windows XP is not able to connect to servers that no longer
support the legacy handshakes and algorithms used by those versions, so we
advise against building curl to use Schannel on really old Windows versions.
Reference: [Prohibiting RC4 Cipher
Suites](https://datatracker.ietf.org/doc/html/draft-popov-tls-prohibiting-rc4-01)
## Allow BEAST
BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
to mitigate this attack, it turned out that some broken servers out there in
the wild did not work properly with the BEAST mitigation in place.
To make such broken servers work, the --ssl-allow-beast option was
introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
but on the other hand it allows curl to connect to that kind of strange
servers.
## Disabling certificate revocation checks
Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
depending on the OS or build configuration. The --ssl-no-revoke option was
introduced in 7.44.0 to disable revocation checking but currently is only
supported for Schannel (the native Windows SSL library), with an exception
in the case of Windows' Untrusted Publishers block list which it seems cannot
be bypassed. This option may have broader support to accommodate other SSL
backends in the future.
References:
https://curl.se/docs/ssl-compared.html

View file

@ -0,0 +1,155 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# TLS Certificate Verification
## Native vs file based
If curl was built with Schannel support, then curl uses the Windows native CA
store for verification. On Apple operating systems, it is possible to use Apple's
"SecTrust" services for certain TLS backends, details below.
All other TLS libraries use a file based CA store by
default.
## Verification
Every trusted server certificate is digitally signed by a Certificate
Authority, a CA.
In your local CA store you have a collection of certificates from *trusted*
certificate authorities that TLS clients like curl use to verify servers.
curl does certificate verification by default. This is done by verifying the
signature and making sure the certificate was crafted for the server name
provided in the URL.
If you communicate with HTTPS, FTPS or other TLS-using servers using
certificates signed by a CA whose certificate is present in the store, you can
be sure that the remote server really is the one it claims to be.
If the remote server uses a self-signed certificate, if you do not install a
CA cert store, if the server uses a certificate signed by a CA that is not
included in the store you use or if the remote host is an impostor
impersonating your favorite site, the certificate check fails and reports an
error.
If you think it wrongly failed the verification, consider one of the following
sections.
### Skip verification
Tell curl to *not* verify the peer with `-k`/`--insecure`.
We **strongly** recommend this is avoided and that even if you end up doing
this for experimentation or development, **never** skip verification in
production.
### Use a custom CA store
Get a CA certificate that can verify the remote server and use the proper
option to point out this CA cert for verification when connecting - for this
specific transfer only.
With the curl command line tool: `--cacert [file]`
If you use the curl command line tool without a native CA store, then you can
specify your own CA cert file by setting the environment variable
`CURL_CA_BUNDLE` to the path of your choice. `SSL_CERT_FILE` and `SSL_CERT_DIR`
are also supported.
If you are using the curl command line tool on Windows, curl searches for a CA
cert file named `curl-ca-bundle.crt` in these directories and in this order:
1. application's directory
2. current working directory
3. Windows System directory (e.g. C:\Windows\System32)
4. Windows Directory (e.g. C:\Windows)
5. all directories along %PATH%
curl 8.11.0 added a build-time option to disable this search behavior, and
another option to restrict search to the application's directory.
### Use the native store
In several environments, in particular on Microsoft and Apple operating
systems, you can ask curl to use the system's native CA store when verifying
the certificate. Depending on how curl was built, this may already be the
default.
With the curl command line tool: `--ca-native`.
### Modify the CA store
Add the CA cert for your server to the existing default CA certificate store.
Usually you can figure out the path to the local CA store by looking at the
verbose output that `curl -v` shows when you connect to an HTTPS site.
### Change curl's default CA store
The default CA certificate store curl uses is set at build time. When you
build curl you can point out your preferred path.
### Extract CA cert from a server
curl -w %{certs} https://example.com > cacert.pem
The certificate has `BEGIN CERTIFICATE` and `END CERTIFICATE` markers.
### Get the Mozilla CA store
Download a version of the Firefox CA store converted to PEM format on the [CA
Extract](https://curl.se/docs/caextract.html) page. It always features the
latest Firefox bundle.
## Native CA store
### Windows + Schannel
If curl was built with Schannel, then curl uses the certificates that are
built into the OS. These are the same certificates that appear in the
Internet Options control panel (under Windows).
Any custom security rules for certificates are honored.
Schannel runs CRL checks on certificates unless peer verification is disabled.
### Apple + OpenSSL/GnuTLS
When curl is built with Apple SecTrust enabled and uses an OpenSSL compatible
TLS backend or GnuTLS, the default verification is handled by that Apple
service. As in:
curl https://example.com
You may still provide your own certificates on the command line, such as:
curl --cacert mycerts.pem https://example.com
In this situation, Apple SecTrust is **not** used and verification is done
**only** with the trust anchors found in `mycerts.pem`. If you want **both**
Apple SecTrust and your own file to be considered, use:
curl --ca-native --cacert mycerts.pem https://example.com
#### Other Combinations
How well the use of native CA stores work in all other combinations depends
on the TLS backend and the OS. Many TLS backends offer functionality to access
the native CA on a range of operating systems. Some provide this only on specific
configurations.
Specific support in curl exists for Windows and OpenSSL compatible TLS backends.
It tries to load the certificates from the Windows "CA" and "ROOT" stores for
transfers requesting the native CA. Due to Window's delayed population of those
stores, this might not always find all certificates.
## HTTPS proxy
curl can do HTTPS to the proxy separately from the connection to the server.
This TLS connection is handled and verified separately from the server
connection so instead of `--insecure` and `--cacert` to control the
certificate verification, you use `--proxy-insecure` and `--proxy-cacert`.
With these options, you make sure that the TLS connection and the trust of the
proxy can be kept totally separate from the TLS connection to the server.

View file

@ -0,0 +1,708 @@
<!--
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
SPDX-License-Identifier: curl
-->
# The Art Of Scripting HTTP Requests Using curl
## Background
This document assumes that you are familiar with HTML and general networking.
The increasing amount of applications moving to the web has made "HTTP
Scripting" more frequently requested and wanted. To be able to automatically
extract information from the web, to fake users, to post or upload data to
web servers are all important tasks today.
curl is a command line tool for doing all sorts of URL manipulations and
transfers, but this particular document focuses on how to use it when doing
HTTP requests for fun and profit. This documents assumes that you know how to
invoke `curl --help` or `curl --manual` to get basic information about it.
curl is not written to do everything for you. It makes the requests, it gets
the data, it sends data and it retrieves the information. You probably need
to glue everything together using some kind of script language or repeated
manual invokes.
## The HTTP Protocol
HTTP is the protocol used to fetch data from web servers. It is a simple
protocol that is built upon TCP/IP. The protocol also allows information to
get sent to the server from the client using a few different methods, as is
shown here.
HTTP is plain ASCII text lines being sent by the client to a server to
request a particular action, and then the server replies a few text lines
before the actual requested content is sent to the client.
The client, curl, sends an HTTP request. The request contains a method (like
GET, POST, HEAD etc), a number of request headers and sometimes a request
body. The HTTP server responds with a status line (indicating if things went
well), response headers and most often also a response body. The "body" part
is the plain data you requested, like the actual HTML or the image etc.
## See the Protocol
Using curl's option [`--verbose`](https://curl.se/docs/manpage.html#-v) (`-v`
as a short option) displays what kind of commands curl sends to the server,
as well as a few other informational texts.
`--verbose` is the single most useful option when it comes to debug or even
understand the curl<->server interaction.
Sometimes even `--verbose` is not enough. Then
[`--trace`](https://curl.se/docs/manpage.html#-trace) and
[`--trace-ascii`](https://curl.se/docs/manpage.html#--trace-ascii)
offer even more details as they show **everything** curl sends and
receives. Use it like this:
curl --trace-ascii debugdump.txt https://www.example.com/
## See the Timing
Many times you may wonder what exactly is taking all the time, or you want to
know the amount of milliseconds between two points in a transfer. For those,
and other similar situations, the
[`--trace-time`](https://curl.se/docs/manpage.html#--trace-time) option is
what you need. It prepends the time to each trace output line:
curl --trace-ascii d.txt --trace-time https://example.com/
## See which Transfer
When doing parallel transfers, it is relevant to see which transfer is doing
what. When response headers are received (and logged) you need to know which
transfer these are for.
[`--trace-ids`](https://curl.se/docs/manpage.html#--trace-ids) option is what
you need. It prepends the transfer and connection identifier to each trace
output line:
curl --trace-ascii d.txt --trace-ids https://example.com/
## See the Response
By default curl sends the response to stdout. You need to redirect it
somewhere to avoid that, most often that is done with `-o` or `-O`.
# URL
## Spec
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you have seen URLs like
https://curl.se/ or https://example.com/ a million times. RFC 3986 is the
canonical spec. The formal name is not URL, it is **URI**.
## Host
The hostname is usually resolved using DNS or your /etc/hosts file to an IP
address and that is what curl communicates with. Alternatively you specify
the IP address directly in the URL instead of a name.
For development and other trying out situations, you can point to a different
IP address for a hostname than what would otherwise be used, by using curl's
[`--resolve`](https://curl.se/docs/manpage.html#--resolve) option:
curl --resolve www.example.org:80:127.0.0.1 https://www.example.org/
## Port number
Each protocol curl supports operates on a default port number, be it over TCP
or in some cases UDP. Normally you do not have to take that into
consideration, but at times you run test servers on other ports or
similar. Then you can specify the port number in the URL with a colon and a
number immediately following the hostname. Like when doing HTTP to port
1234:
curl https://www.example.org:1234/
The port number you specify in the URL is the number that the server uses to
offer its services. Sometimes you may use a proxy, and then you may
need to specify that proxy's port number separately from what curl needs to
connect to the server. Like when using an HTTP proxy on port 4321:
curl --proxy http://proxy.example.org:4321 https://remote.example.org/
## Username and password
Some services are setup to require HTTP authentication and then you need to
provide name and password which is then transferred to the remote site in
various ways depending on the exact authentication protocol used.
You can opt to either insert the user and password in the URL or you can
provide them separately:
curl https://user:password@example.org/
or
curl -u user:password https://example.org/
You need to pay attention that this kind of HTTP authentication is not what
is usually done and requested by user-oriented websites these days. They tend
to use forms and cookies instead.
## Path part
The path part is sent off to the server to request that it sends back the
associated response. The path is what is to the right side of the slash that
follows the hostname and possibly port number.
# Fetch a page
## GET
The simplest and most common request/operation made using HTTP is to GET a
URL. The URL could itself refer to a webpage, an image or a file. The client
issues a GET request to the server and receives the document it asked for.
If you issue the command line
curl https://curl.se/
you get a webpage returned in your terminal window. The entire HTML document
this URL identifies.
All HTTP replies contain a set of response headers that are normally hidden,
use curl's [`--include`](https://curl.se/docs/manpage.html#-i) (`-i`)
option to display them as well as the rest of the document.
## HEAD
You can ask the remote server for ONLY the headers by using the
[`--head`](https://curl.se/docs/manpage.html#-I) (`-I`) option which makes
curl issue a HEAD request. In some special cases servers deny the HEAD method
while others still work, which is a particular kind of annoyance.
The HEAD method is defined and made so that the server returns the headers
exactly the way it would do for a GET, but without a body. It means that you
may see a `Content-Length:` in the response headers, but there must not be an
actual body in the HEAD response.
## Multiple URLs in a single command line
A single curl command line may involve one or many URLs. The most common case
is probably to use one, but you can specify any amount of URLs. Yes any. No
limits. You then get requests repeated over and over for all the given URLs.
Example, send two GET requests:
curl https://url1.example.com https://url2.example.com
If you use [`--data`](https://curl.se/docs/manpage.html#-d) to POST to
the URL, using multiple URLs means that you send that same POST to all the
given URLs.
Example, send two POSTs:
curl --data name=curl https://url1.example.com https://url2.example.com
## Multiple HTTP methods in a single command line
Sometimes you need to operate on several URLs in a single command line and do
different HTTP methods on each. For this, you might enjoy the
[`--next`](https://curl.se/docs/manpage.html#-:) option. It is a separator
that separates a bunch of options from the next. All the URLs before `--next`
get the same method and get all the POST data merged into one.
When curl reaches the `--next` on the command line, it resets the method and
the POST data and allow a new set.
Perhaps this is best shown with a few examples. To send first a HEAD and then
a GET:
curl -I https://example.com --next https://example.com
To first send a POST and then a GET:
curl -d score=10 https://example.com/post.cgi --next https://example.com/results.html
# HTML forms
## Forms explained
Forms are the general way a website can present an HTML page with fields for
the user to enter data in, and then press some kind of 'OK' or 'Submit'
button to get that data sent to the server. The server then typically uses
the posted data to decide how to act. Like using the entered words to search
in a database, or to add the info in a bug tracking system, display the
entered address on a map or using the info as a login-prompt verifying that
the user is allowed to see what it is about to see.
Of course there has to be some kind of program on the server end to receive
the data you send. You cannot invent something out of the air.
## GET
A GET-form uses the method GET, as specified in HTML like:
```html
<form method="GET" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value="OK">
</form>
```
In your favorite browser, this form appears with a text box to fill in and a
press-button labeled "OK". If you fill in '1905' and press the OK button,
your browser then creates a new URL to get for you. The URL gets
`junk.cgi?birthyear=1905&press=OK` appended to the path part of the previous
URL.
If the original form was seen on the page `www.example.com/when/birth.html`,
the second page you get becomes
`www.example.com/when/junk.cgi?birthyear=1905&press=OK`.
Most search engines work this way.
To make curl do the GET form post for you, enter the expected created URL:
curl "https://www.example.com/when/junk.cgi?birthyear=1905&press=OK"
## POST
The GET method makes all input field names get displayed in the URL field of
your browser. That is generally a good thing when you want to be able to
bookmark that page with your given data, but it is an obvious disadvantage if
you entered secret information in one of the fields or if there are a large
amount of fields creating a long and unreadable URL.
The HTTP protocol then offers the POST method. This way the client sends the
data separated from the URL and thus you do not see any of it in the URL
address field.
The form would look similar to the previous one:
```html
<form method="POST" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value=" OK ">
</form>
```
To use curl to post this form with the same data filled in as before, we
could do it like:
curl --data "birthyear=1905&press=%20OK%20" https://www.example.com/when/junk.cgi
This kind of POST uses the Content-Type `application/x-www-form-urlencoded`
and is the most widely used POST kind.
The data you send to the server MUST already be properly encoded, curl does
not do that for you. For example, if you want the data to contain a space,
you need to replace that space with `%20`, etc. Failing to comply with this
most likely causes your data to be received wrongly and messed up.
Recent curl versions can in fact URL encode POST data for you, like this:
curl --data-urlencode "name=I am Daniel" https://www.example.com
If you repeat `--data` several times on the command line, curl concatenates
all the given data pieces - and put a `&` symbol between each data segment.
## File Upload POST
Back in late 1995 they defined an additional way to post data over HTTP. It
is documented in the RFC 1867, why this method sometimes is referred to as
RFC 1867-posting.
This method is mainly designed to better support file uploads. A form that
allows a user to upload a file could be written like this in HTML:
<form method="POST" enctype='multipart/form-data' action="upload.cgi">
<input name=upload type=file>
<input type=submit name=press value="OK">
</form>
This clearly shows that the Content-Type about to be sent is
`multipart/form-data`.
To post to a form like this with curl, you enter a command line like:
curl --form upload=@localfilename --form press=OK [URL]
## Hidden Fields
A common way for HTML based applications to pass state information between
pages is to add hidden fields to the forms. Hidden fields are already filled
in, they are not displayed to the user and they get passed along as all the
other fields.
A similar example form with one visible field, one hidden field and one
submit button could look like:
```html
<form method="POST" action="foobar.cgi">
<input type=text name="birthyear">
<input type=hidden name="person" value="daniel">
<input type=submit name="press" value="OK">
</form>
```
To POST this with curl, you do not have to think about if the fields are
hidden or not. To curl they are all the same:
curl --data "birthyear=1905&press=OK&person=daniel" [URL]
## Figure Out What A POST Looks Like
When you are about to fill in a form and send it to a server by using curl
instead of a browser, you are of course interested in sending a POST exactly
the way your browser does.
An easy way to get to see this, is to save the HTML page with the form on
your local disk, modify the 'method' to a GET, and press the submit button
(you could also change the action URL if you want to).
You then clearly see the data get appended to the URL, separated with a
`?`-letter as GET forms are supposed to.
# HTTP upload
## PUT
Perhaps the best way to upload data to an HTTP server is to use PUT. Then
again, this of course requires that someone put a program or script on the
server end that knows how to receive an HTTP PUT stream.
Put a file to an HTTP server with curl:
curl --upload-file uploadfile https://www.example.com/receive.cgi
# HTTP Authentication
## Basic Authentication
HTTP Authentication is the ability to tell the server your username and
password so that it can verify that you are allowed to do the request you are
doing. The Basic authentication used in HTTP (which is the type curl uses by
default) is **plain text** based, which means it sends username and password
only slightly obfuscated, but still fully readable by anyone that sniffs on
the network between you and the remote server.
To tell curl to use a user and password for authentication:
curl --user myname:password https://www.example.com
## Other Authentication
The site might require a different authentication method (check the headers
returned by the server), and then
[`--ntlm`](https://curl.se/docs/manpage.html#--ntlm),
[`--digest`](https://curl.se/docs/manpage.html#--digest),
[`--negotiate`](https://curl.se/docs/manpage.html#--negotiate) or even
[`--anyauth`](https://curl.se/docs/manpage.html#--anyauth) might be
options that suit you.
## Proxy Authentication
Sometimes your HTTP access is only available through the use of an HTTP
proxy. This seems to be especially common at various companies. An HTTP proxy
may require its own user and password to allow the client to get through to
the Internet. To specify those with curl, run something like:
curl --proxy-user proxyuser:proxypassword curl.se
If your proxy requires the authentication to be done using the NTLM method,
use [`--proxy-ntlm`](https://curl.se/docs/manpage.html#--proxy-ntlm), if
it requires Digest use
[`--proxy-digest`](https://curl.se/docs/manpage.html#--proxy-digest).
If you use any one of these user+password options but leave out the password
part, curl prompts for the password interactively.
## Hiding credentials
Do note that when a program is run, its parameters might be possible to see
when listing the running processes of the system. Thus, other users may be
able to watch your passwords if you pass them as plain command line
options. There are ways to circumvent this.
It is worth noting that while this is how HTTP Authentication works, many
websites do not use this concept when they provide logins etc. See the Web
Login chapter further below for more details on that.
# More HTTP Headers
## Referer
An HTTP request may include a 'referer' field (yes it is misspelled), which
can be used to tell from which URL the client got to this particular
resource. Some programs/scripts check the referer field of requests to verify
that this was not arriving from an external site or an unknown page. While
this is a stupid way to check something so easily forged, many scripts still
do it. Using curl, you can put anything you want in the referer-field and
thus more easily be able to fool the server into serving your request.
Use curl to set the referer field with:
curl --referer https://www.example.come https://www.example.com
## User Agent
Similar to the referer field, all HTTP requests may set the User-Agent
field. It names what user agent (client) that is being used. Many
applications use this information to decide how to display pages. Silly web
programmers try to make different pages for users of different browsers to
make them look the best possible for their particular browsers. They usually
also do different kinds of JavaScript etc.
At times, you may learn that getting a page with curl does not return the
same page that you see when getting the page with your browser. Then you know
it is time to set the User Agent field to fool the server into thinking you
are one of those browsers.
By default, curl uses curl/VERSION, such as User-Agent: curl/8.11.0.
To make curl look like Internet Explorer 5 on a Windows 2000 box:
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]
Or why not look like you are using Netscape 4.73 on an old Linux box:
curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
## Redirects
## Location header
When a resource is requested from a server, the reply from the server may
include a hint about where the browser should go next to find this page, or a
new page keeping newly generated output. The header that tells the browser to
redirect is `Location:`.
curl does not follow `Location:` headers by default, but displays such
pages in the same manner it displays all HTTP replies. It does however
feature an option that makes it attempt to follow the `Location:` pointers.
To tell curl to follow a Location:
curl --location https://www.example.com
If you use curl to POST to a site that immediately redirects you to another
page, you can safely use [`--location`](https://curl.se/docs/manpage.html#-L)
(`-L`) and `--data`/`--form` together. curl only uses POST in the first
request, and then revert to GET in the following operations.
## Other redirects
Browsers typically support at least two other ways of redirects that curl
does not: first the html may contain a meta refresh tag that asks the browser
to load a specific URL after a set number of seconds, or it may use
JavaScript to do it.
# Cookies
## Cookie Basics
The way the web browsers do "client side state control" is by using cookies.
Cookies are names with associated contents. The cookies are sent to the client
by the server. The server tells the client for what path and hostname it wants
the cookie sent back, and it also sends an expiration date and a few more
properties.
When a client communicates with a server with a name and path as previously
specified in a received cookie, the client sends back the cookies and their
contents to the server, unless of course they are expired.
Many applications and servers use this method to connect a series of requests
into a single logical session. To be able to use curl in such occasions, we
must be able to record and send back cookies the way the web application
expects them. The same way browsers deal with them.
## Cookie options
The simplest way to send a few cookies to the server when getting a page with
curl is to add them on the command line like:
curl --cookie "name=Daniel" https://www.example.com
Cookies are sent as common HTTP headers. This is practical as it allows curl
to record cookies by recording headers. Record cookies with curl by
using the [`--dump-header`](https://curl.se/docs/manpage.html#-D) (`-D`)
option like:
curl --dump-header headers_and_cookies https://www.example.com
(Take note that the
[`--cookie-jar`](https://curl.se/docs/manpage.html#-c) option described
below is a better way to store cookies.)
curl has a full blown cookie parsing engine built-in that comes in use if you
want to reconnect to a server and use cookies that were stored from a
previous connection (or hand-crafted manually to fool the server into
believing you had a previous connection). To use previously stored cookies,
you run curl like:
curl --cookie stored_cookies_in_file https://www.example.com
curl's "cookie engine" gets enabled when you use the
[`--cookie`](https://curl.se/docs/manpage.html#-b) option. If you only
want curl to understand received cookies, use `--cookie` with a file that
does not exist. Example, if you want to let curl understand cookies from a
page and follow a location (and thus possibly send back cookies it received),
you can invoke it like:
curl --cookie nada --location https://www.example.com
curl has the ability to read and write cookie files that use the same file
format that Netscape and Mozilla once used. It is a convenient way to share
cookies between scripts or invokes. The `--cookie` (`-b`) switch
automatically detects if a given file is such a cookie file and parses it,
and by using the `--cookie-jar` (`-c`) option you make curl write a new
cookie file at the end of an operation:
curl --cookie cookies.txt --cookie-jar newcookies.txt \
https://www.example.com
# HTTPS
## HTTPS is HTTP secure
There are a few ways to do secure HTTP transfers. By far the most common
protocol for doing this is what is generally known as HTTPS, HTTP over
SSL. SSL encrypts all the data that is sent and received over the network and
thus makes it harder for attackers to spy on sensitive information.
SSL (or TLS as the current version of the standard is called) offers a set of
advanced features to do secure transfers over HTTP.
curl supports encrypted fetches when built to use a TLS library and it can be
built to use one out of a fairly large set of libraries - `curl -V` shows
which one your curl was built to use (if any). To get a page from an HTTPS
server, run curl like:
curl https://secure.example.com
## Certificates
In the HTTPS world, you use certificates to validate that you are the one you
claim to be, as an addition to normal passwords. curl supports client- side
certificates. All certificates are locked with a passphrase, which you need
to enter before the certificate can be used by curl. The passphrase can be
specified on the command line or if not, entered interactively when curl
queries for it. Use a certificate with curl on an HTTPS server like:
curl --cert mycert.pem https://secure.example.com
curl also tries to verify that the server is who it claims to be, by
verifying the server's certificate against a locally stored CA cert bundle.
Failing the verification causes curl to deny the connection. You must then
use [`--insecure`](https://curl.se/docs/manpage.html#-k) (`-k`) in case you
want to tell curl to ignore that the server cannot be verified.
More about server certificate verification and ca cert bundles can be read in
the [`SSLCERTS` document](https://curl.se/docs/sslcerts.html).
At times you may end up with your own CA cert store and then you can tell
curl to use that to verify the server's certificate:
curl --cacert ca-bundle.pem https://example.com/
# Custom Request Elements
## Modify method and headers
Doing fancy stuff, you may need to add or change elements of a single curl
request.
For example, you can change the POST method to `PROPFIND` and send the data
as `Content-Type: text/xml` (instead of the default `Content-Type`) like
this:
curl --data "<xml>" --header "Content-Type: text/xml" \
--request PROPFIND example.com
You can delete a default header by providing one without content. Like you
can ruin the request by chopping off the `Host:` header:
curl --header "Host:" https://www.example.com
You can add headers the same way. Your server may want a `Destination:`
header, and you can add it:
curl --header "Destination: nowhere" https://example.com
## More on changed methods
It should be noted that curl selects which methods to use on its own
depending on what action to ask for. `-d` makes a POST, `-I` makes a HEAD and
so on. If you use the [`--request`](https://curl.se/docs/manpage.html#-X) /
`-X` option you can change the method keyword curl selects, but you do not
modify curl's behavior. This means that if you for example use -d "data" to
do a POST, you can modify the method to a `PROPFIND` with `-X` and curl still
thinks it sends a POST. You can change the normal GET to a POST method by
adding `-X POST` in a command line like:
curl -X POST https://example.org/
curl however still acts as if it sent a GET so it does not send any request
body etc.
# Web Login
## Some login tricks
While not strictly HTTP related, it still causes a lot of people problems so
here's the executive run-down of how the vast majority of all login forms work
and how to login to them using curl.
It can also be noted that to do this properly in an automated fashion, you
most certainly need to script things and do multiple curl invokes etc.
First, servers mostly use cookies to track the logged-in status of the
client, so you need to capture the cookies you receive in the responses.
Then, many sites also set a special cookie on the login page (to make sure
you got there through their login page) so you should make a habit of first
getting the login-form page to capture the cookies set there.
Some web-based login systems feature various amounts of JavaScript, and
sometimes they use such code to set or modify cookie contents. Possibly they
do that to prevent programmed logins, like this manual describes how to...
Anyway, if reading the code is not enough to let you repeat the behavior
manually, capturing the HTTP requests done by your browsers and analyzing the
sent cookies is usually a working method to work out how to shortcut the
JavaScript need.
In the actual `<form>` tag for the login, lots of sites fill-in
random/session or otherwise secretly generated hidden tags and you may need
to first capture the HTML code for the login form and extract all the hidden
fields to be able to do a proper login POST. Remember that the contents need
to be URL encoded when sent in a normal POST.
# Debug
## Some debug tricks
Many times when you run curl on a site, you notice that the site does not
seem to respond the same way to your curl requests as it does to your
browser's.
Then you need to start making your curl requests more similar to your
browser's requests:
- Use the `--trace-ascii` option to store fully detailed logs of the requests
for easier analyzing and better understanding
- Make sure you check for and use cookies when needed (both reading with
`--cookie` and writing with `--cookie-jar`)
- Set user-agent (with [`-A`](https://curl.se/docs/manpage.html#-A)) to
one like a recent popular browser does
- Set referer (with [`-E`](https://curl.se/docs/manpage.html#-E)) like
it is set by the browser
- If you use POST, make sure you send all the fields and in the same order as
the browser does it.
## Check what the browsers do
A good helper to make sure you do this right, is the web browsers' developers
tools that let you view all headers you send and receive (even when using
HTTPS).
A more raw approach is to capture the HTTP traffic on the network with tools
such as Wireshark or tcpdump and check what headers that were sent and
received by the browser. (HTTPS forces you to use `SSLKEYLOGFILE` to do
that.)

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,154 @@
---
c: Copyright (C) Samuel Henrique <samueloph@debian.org>, Sergio Durigan Junior <sergiodj@debian.org> and many contributors, see the AUTHORS file.
SPDX-License-Identifier: curl
Title: wcurl
Section: 1
Source: wcurl
See-also:
- curl (1)
- trurl (1)
Added-in: n/a
---
# NAME
**wcurl** - a simple wrapper around curl to easily download files.
# SYNOPSIS
**wcurl \<URL\>...**
**wcurl [--curl-options \<CURL_OPTIONS\>]... [--dry-run] [--no-decode-filename] [-o|-O|--output \<PATH\>] [--] \<URL\>...**
**wcurl [--curl-options=\<CURL_OPTIONS\>]... [--dry-run] [--no-decode-filename] [--output=\<PATH\>] [--] \<URL\>...**
**wcurl -V|--version**
**wcurl -h|--help**
# DESCRIPTION
**wcurl** is a simple curl wrapper which lets you use curl to download files
without having to remember any parameters.
Call **wcurl** with a list of URLs you want to download and **wcurl**
picks sane defaults.
If you need anything more complex, you can provide any of curl's supported
parameters via the **--curl-options** option. Beware that you likely should be
using curl directly if your use case is not covered.
By default, **wcurl** does:
## * Percent-encode whitespace in URLs;
## * Download multiple URLs in parallel
if the installed curl's version is \>= 7.66.0 (--parallel);
## * Use a total number of 5 parallel connections to the same protocol + hostname + port number target
if the installed curl's version is \>= 8.16.0 (--parallel-max-host);
## * Follow redirects;
## * Automatically choose a filename as output;
## * Avoid overwriting files
if the installed curl's version is \>= 7.83.0 (--no-clobber);
## * Perform retries;
## * Set the downloaded file timestamp
to the value provided by the server, if available;
## * Default to https
if the URL does not contain any scheme;
## * Disable curl's URL globbing parser
so {} and [] characters in URLs are not treated specially;
## * Percent-decode the resulting filename;
## * Use 'index.html' as the default filename
if there is none in the URL.
# OPTIONS
## --curl-options, --curl-options=\<CURL_OPTIONS\>...
Specify extra options to be passed when invoking curl. May be specified more
than once.
## -o, -O, --output, --output=\<PATH\>
Use the provided output path instead of getting it from the URL. If multiple
URLs are provided, resulting files share the same name with a number appended to
the end (curl \>= 7.83.0). If this option is provided multiple times, only the
last value is considered.
## --no-decode-filename
Do not percent-decode the output filename, even if the percent-encoding in the
URL was done by **wcurl**, e.g.: The URL contained whitespace.
## --dry-run
Do not actually execute curl, print what would be invoked.
## -V, \--version
Print version information.
## -h, \--help
Print help message.
# CURL_OPTIONS
Any option supported by curl can be set here. This is not used by **wcurl**; it
is instead forwarded to the curl invocation.
# URL
URL to be downloaded. Anything that is not a parameter is considered
an URL. Whitespace is percent-encoded and the URL is passed to curl, which
then performs the parsing. May be specified more than once.
# EXAMPLES
Download a single file:
**wcurl example.com/filename.txt**
Download two files in parallel:
**wcurl example.com/filename1.txt example.com/filename2.txt**
Download a file passing the **--progress-bar** and **--http2** flags to curl:
**wcurl --curl-options="--progress-bar --http2" example.com/filename.txt**
Resume from an interrupted download. The options necessary to resume the download
(`--clobber --continue-at -`) must be the **last** options specified in `--curl-options`.
Note that the only way to resume interrupted downloads is to allow wcurl to overwrite
the destination file:
**wcurl --curl-options="--clobber --continue-at -" example.com/filename.txt**
Download multiple files without a limit of concurrent connections per host (the default limit is 5):
**wcurl --curl-options="--parallel-max-host 0" example.com/filename1.txt example.com/filename2.txt**
# AUTHORS
Samuel Henrique \<samueloph@debian.org\>
Sergio Durigan Junior \<sergiodj@debian.org\>
and many contributors, see the AUTHORS file.
# REPORTING BUGS
If you experience any problems with **wcurl** that you do not experience with
curl, submit an issue on GitHub: https://github.com/curl/wcurl
# COPYRIGHT
**wcurl** is licensed under the curl license

View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://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 <http://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
<http://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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -0,0 +1,768 @@
2019-11-12 Anton Lavrentiev <lavr@ncbi.nlm.nih.gov>
* Added the -T (for timeout) and the -X (for stop timeout) options
* cygrunsrv.cc: issue no "premature exit" error when stopped by SCM
(and daemon catches the internal signal then exits)
2015-01-28 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Fix typo.
2015-01-28 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.62.
(service_main): Forcefully exit from service_main in neverexits case
even when receiving a signal other than the termination or shutdown
signal.
2014-08-21 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.61.
(service_fork_thread): Append /bin if explicit PATH value got loaded
from registry. Prepend /bin otherwise.
* utils.cc (uprint): Delete.
(usage): Convert to a single fprintf call.
2014-08-14 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.60. Drop all special exception
handling code since it's disabled in newer Cygwin versions (actually,
since 2005 *blush*) anyway.
(service_fork_thread): Prepend /bin to $PATH, rather than appending,
as it has been claimed in the README forever. Duh.
2013-10-30 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.50.
(print_service): Take additional parameter "mypath". Check path of
cygrunsrv in service entry with mypath and print additional
"Installation path" if they differ. Fix formatting.
(query_service): Store own Win32 pathname and add to print_service call.
(same_filename): Use strcasecmp, not stricmp.
(list_services): Only print warning message if OpenService failed with
an error other than ERROR_ACCESS_DENIED. Print service name in
parenthesis if it's started by another cygrunsrv and verbose is not set.
Call print_service with additional parameter mypath.
(service_fork_thread): Copy POSIX to Win32 environment before exec'ing
service process.
2013-03-19 Corinna Vinschen <corinna@vinschen.de>
* config.guess: Update.
* config.sub: Update.
* configure: Regenerate with autoconf 2.69.
2013-03-09 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in ($(srcdir)/configure): Depend on configure.ac.
* cygrunsrv.cc: Bump version to 1.42.
(is_managed_service_account): New function to check for Managed Service
Account.
(install_service): Check for accounts which require a NULL password
and don't ask for password for any of them. Rename buf to pwdbuf.
Allow to give NULL password to CreateService for non-empty username.
(main): Call setlocale.
2013-03-05 Corinna Vinschen <corinna@vinschen.de>
* configure.ac: Rename from configure.in. Check for g++ target-cpu
independently.
* configure: Regenerate
* cygrunsrv.cc: Bump version to 1.41.
(version): Bump copyright date.
(list_services): Change formatting for DWORD value target independently.
* utils.cc (error): Ditto.
2012-03-07 Corinna Vinschen <corinna@vinschen.de>
Throughout change comments to GPL v3 and fix copyright.
* COPYING: New version for GPL v3.
* Makefile.in (LDFLAGS): Add -static.
* cygrunsrv.cc: Bump version to 1.40.
(version): Fix copyright string.
(thread_args): New static struct.
(service_fork_thread): New thread function to fork service process.
(service_main): Start service_fork_thread as pthread to fork service
process. Explain why.
2012-02-21 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.36.
(service_handler): Remove obsolete function.
(pRegisterServiceCtrlHandlerExA): Remove.
(service_main): Just call RegisterServiceCtrlHandlerExA, otherwise
handler function doesn't receive SERVICE_CONTROL_PRESHUTDOWN control
code.
2009-04-06 Corinna Vinschen <corinna@vinschen.de>
* configure.in (CXX): Prefer i686-pc-cygwin-g++ over g++ to simplify
cross builds.
* configure: Regenerate.
* cygrunsrv.cc: Fix gcc-4 compiler warnings throughout.
Use Cygwin 1.7 cygwin_conv_path rather than deprecated
cygwin_conv_to_full_win32_path call. Bump version to 1.35.
* utils.cc (reason_list): Constify to fix gcc-4 compiler warning.
2008-03-18 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Explain the user name given to -u/--user option.
* cygrunsrv.cc: Fix copyright in header. Bump version to 1.34.
(version): Fix copyright.
(install_service): Convert slash in username to backslash.
2008-03-17 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Add words for clarifying server name in <svc_name>.
Add the server name hint to -Q/--query option. Add desription for
-P/--crs-path option.
* cygrunsrv.cc: Bump version to 1.33.
(longopts): Add --crs-path option.
(opts): Add -P option.
(install_registry_keys): Fix error code handling for registry access
functions.
(check_system_mounts): Use strcasecmp.
(install_service): Add code to handle setting distinct path to
cygrunsrv. Don't test system mounts when accessing remote service
manager.
(main): Handle -P/--crs-path option. Don't check validity of service
application path when installing service on remote server.
* cygrunsrv.h (CYG_ROOT): Define.
(CYG_ROOT_VAL): Define.
* utils.cc (reason_list): Add reason texts for -P/--crs-path option.
(usage): Add usage for -P/--crs-path option.
* utils.h (reason_t): Add reason codes for -P/--crs-path option.
2008-03-17 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Document capability to connect to remote machine.
* cygrunsrv.cc: Bump version to 1.30.
(version): Fix copyright.
(class server_and_name): New helper class to extract server name and
service name from incoming string, as well as to create registry key
necessary to connect to local or remote registry. Use throughout were
appropriate.
(main): Handle optional argument to -L/--list option.
* utils.cc (reason_list): Add reason text for failing connection to
remote machine.
(usage): Accommodate optional argument to -L/--list. Add helping text
for remote access.
* utils.h (reason_t): Add reason code for failing connection to
remote machine.
2008-02-19 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.21.
(service_handler_ex): On SERVICE_CONTROL_INTERROGATE don't send signal
to child process, just return NO_ERROR.
2008-02-17 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in: Add automatic file dependencies.
(datarootdir): Replace datadir.
(CFLAGS): Define. Always add -MMD -pipe options.
* configure.in: Require autoconf 2.60. Prefer g++ over c++. Set
CFLAGS to contain -Wall -Werror by default. Set CXXFLAGS so that
CFLAGS is used indirectly.
* configure: Regenerate.
* crit.cc (set_service_controls_accepted): Take and handle preshutdown
parameter.
* crit.h (SERVICE_ACCEPT_PRESHUTDOWN): Define conditionally.
(SERVICE_CONTROL_PRESHUTDOWN): Define conditionally.
(set_service_controls_accepted): Change declaration.
* cygrunsrv.README: Document --shutsig and --preshutdown options.
Note post-Vista behaviour related to --interactive option.
* cygrunsrv.cc: Bump version to 1.20. Throughout avoid compiler
warnings.
(longopts): Add '--shutsig' and '--preshutdown' options.
(opts): Add '-O' and '-z' options.
(shutsig): New variable.
(shutsig_sent): New variable.
(preshutdown): New variable.
(install_registry_keys): Handle new shutsig and preshutdown options.
(get_reg_entries): Ditto.
(ControlsAccepted_desc): Add entry for SERVICE_ACCEPT_PRESHUTDOWN.
(print_service): Handle new shutsig and preshutdown options.
(terminate_child): Get signal to send to service process as parameter.
Set termsig_sent or shutsig_sent according to that signal.
(sigterm_handler): Send termsig to terminate_child.
(service_handler_ex): New service handler which also handles
SERVICE_CONTROL_PRESHUTDOWN.
(service_handler_ex): Handle SERVICE_CONTROL_PRESHUTDOWN. Call
terminate_child with termsig or shutsig dependent on control code.
(service_handler): Just call service_handler_ex.
(pRegisterServiceCtrlHandlerExA): New variable.
(service_main): Load RegisterServiceCtrlHandlerExA and use instead of
RegisterServiceCtrlHandlerA if available.
Check WTERMSIG for termsig or shutsig.
(main): Handle --shutsig and --preshutdown options. Add appropriate
error checking.
* cygrunsrv.h (PARAM_SHUTSIG): Define.
(PARAM_PRESHUTDOWN): Define.
* utils.cc (reason_list): Add --shutsig/--preshutdown error messages.
(uprint): Redefine.
(usage): Use fprintf for first usage line. Add help text for
--shutsig and --preshutdown options. Add Vista/Longhorn hint to
--interactive help text.
* utils.h (reason_t): Add --shutsig/--preshutdown error values.
2008-01-21 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (list_services): Set sh to 0 after closing to avoid
double closing.
Bump version to 1.18.
2007-04-19 Brian Dessent <brian@dessent.net>
* cygrunsrv.cc (list_services): Make failure of OpenService or
QueryServiceConfig nonfatal.
2007-04-17 Pierre Humblet <Pierre.Humblet@ieee.org>
* cygrunsrv.cc (check_cygwin1): New function.
(service_main): Call check_cygwin1.
2006-06-19 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.17.
2006-06-19 Ben Hochstedler <ben.hochstedler@med.ge.com>
* cygrunsrv.cc (service_main): When fork fails, exit with non-zero
exit code. Report correct error value to syslog.
2006-04-27 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.16.
(service_main): Don't try to kill a process group which doesn't exist.
2006-03-30 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.15.
(title): Remove here.
(prepare_daemon): Don't set console title here.
(hide_console): Remove.
(service_main): Instead of hiding console , create new console
here if --nohide is set and rely on Cygwin to do the rest.
2006-03-28 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (version): Fix copyright date.
2006-03-27 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.14.
(service_main): Don't call setpgrp for interactive services.
2006-03-26 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.13.
(title): New global variable used for the console title.
(prepare_daemon): Move allocating console to cygwin_premain0.
Set console title here.
(hide_console): Just use console title set in prepare_daemon.
(cygwin_premain0): New function to allocate console so that Cygwin
doesn't create an invisible console on an invisible WindowStation.
Also try to maintain window focus and Z-order.
2006-03-26 Lev Bishop <lev.bishop@gmail.com>
* cygrunsrv.cc (print_service): Fix conditional.
(main): Ditto.
2005-11-28 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.12.
* TODO: Drop the item about forking children.
2005-11-28 Christian Franke <franke@computer.org>
* cygrunsrv.cc: Add '--pidfile' option to run daemons which
fork() and report the child pid in a /var/run/daemon.pid file.
* cygrunsrv.h: Ditto.
* utils.cc: Ditto.
* waitanypid.cc: New file containing helper function to wait for
non-child processes.
* waitanypid.h: Ditto.
* Makefile.in: Add waitanypid.o.
2005-11-23 Christian Franke <franke@computer.org>
* cygrunsrv.cc: Add '--pidfile' option to run daemons which
fork() and report the child pid in a /var/run/daemon.pid file.
* cygrunsrv.h: Ditto.
* utils.cc: Ditto.
* waitanypid.cc: New file containing helper function to wait for
non-child processes.
* waitanypid.h: Ditto.
* Makefile.in: Add waitanypid.o.
2005-11-13 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.11.
* TODO: Add a remark about using ChangeServiceConfig2.
2005-11-13 Corinna Vinschen <corinna@vinschen.de>
Christian Franke <franke@computer.org>
* cygrunsrv.cc (service_main): Simplify waitpid return value
evaluation. Always set service status to SERVICE_STOPPED,
except in the neverexits case. Forcefully exit from
service_main in neverexits case. Move the set_service_status
call to be always the last action in service_main.
2005-06-07 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Add paragraph about starting services using
accounts with no password under XP and 2K3.
2005-05-16 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.10.
2005-05-22 Brian Dessent <brian@dessent.net>
* cygrunsrv.cc: Add includes.
(longopts): Add '--list' and '--verbose' options.
(opts): Add '-L' and '-V' options; keep order consistent with above.
(action_t): Add 'List'.
(err_out_set_error): Define version of 'err_out' macro that allows for
convenient setting the error code.
(get_description): New function.
(check_system_mounts): Ditto.
(install_service): Check mounts and warn if problem found. Use
'err_out_set_error' throughout.
(start_service): Ditto.
(stop_service): Ditto.
(ServiceType_desc): Add. Use structs to map DWORD fields onto strings.
(StartType_desc): Ditto.
(CurrentState_desc): Ditto.
(ControlsAccepted_desc): Ditto.
(make_desc): Add new function that generalizes the task of creating
a textual field from a binary DWORD.
(serviceTypeToString): Remove.
(serviceStateToString): Ditto.
(controlsToString): Ditto.
(parsedoublenull): Add new helper function for parsing lists of
strings, which is used below when printing the 'lpDependencies' value.
(print_service): Add new function that is responsible for generating
the formatted output for --list and --query commands.
(QSC_BUF_SIZE): Add.
(query_service): Add verbosity parameter. Remove printf output from
here, call 'print_service' instead. Call QueryServiceConfig to
retrieve more detail on the service.
(same_filename): New function.
(list_services): Add new function that implements -L,--list command.
Call EnumServicesStatus to get names of all services, and then
determine which ones are cygrunsrv services. List their names, or
call print_service() if verbosity was requested.
(main): Declare new variable 'verbosity'. Support new command line
switches. Pass on verbosity information to query_service and
list_services.
* utils.cc (reason_list): Update error text.
(usage): Document new switches in the help text.
* utils.h (reason_t): Add new symbolic name for error text.
* cygrunsrv.README: Update documentation for new flags and mount
information.
2005-05-16 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.02.
(service_main): Also initiate correct exiting from service when
receiving another signal than the "official" exit signal.
2005-02-27 Chris Faylor <cgf@timesys.com>
* cygrunsrv.cc: Bump version to 1.01.
(service_main_exitval): New global variable.
(service_main): Drop exit_val. Set exit value in service_main_exitval
instead. Don't exit but return.
(main): Return service_main_exitval.
2004-05-17 Ben Hochstedler <hochstrb@cs.rose-hulman.edu>
* cygrunsrv.cc (start_service): Change calls to OpenSCManager and
OpenService to require only necessary rights.
(stop_service): Ditto. Remove unneeded call to LockServiceDatabase.
(query_service): Ditto.
(install_service): Ditto.
(remove_service): Ditto.
(remove_service): Ditto.
2004-04-18 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 1.0.
(get_reg_entries): Allow environment variable name
length of up to the maximum possible (16K). Allow arbitrarily sized
environment variable length. Disallow non-REG_SZ types in environment.
Remove useless strcpys.
2004-04-07 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc: Bump version to 0.99.
2004-04-07 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.README: Add description for -j, --nohide option.
* cygrunsrv.cc (longopts): Add '--nohide' option.
(opts): Add -j option.
(showcons): New global variable.
(install_registry_keys): Add 'showcons' parameter. Write it to
registry.
(get_reg_entries): Add 'showcons_p' parameter. Read it from registry.
(hide_console): New function.
(service_main): Call hide_console if showcons is 0.
(main): Add handling for '--nohide' parameter. Fix indentation.
* cygrunsrv.h (PARAM_SHOWCONS): New registry name for nohide parameter.
* utils_cc (reason_list): Add error strings for --nohide.
* (usage): Add help text for --nohide option. Fix output to fit in
80 columns.
* utils.h (reason_t): Add error codes for --nohide errors.
2004-03-18 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* cygrunsrv.cc (service_main): Fix typo in comment.
(main): Check that "--user" is not specified with
"--interactive" (thanks to Peter Wisnovsky).
* utils.h (reason_t): Add NoInteractiveWithUser value.
* utils.cc (reason_list): Add description string for the
NoInteractiveWithUser value. Fix typos in descriptions
for the NeverExitsNotAllowed and OnlyOneNeverExits values.
* cygrunsrv.README: Add comment about the "--interactive"
option only being valid with a SYSTEM service.
2004-03-17 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (service_main): Set exit_status to 1 by default.
Terminate service correctly if child terminated as a result of
cygrunsrv's signal.
2004-03-17 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (termsig_sent): New variable;
(terminate_child): Set termsig_sent right before sending the signal.
(service_main): If the child terminated due to a signal, only log
error in case it wasn't our own termination signal.
2004-03-13 Corinna Vinschen <corinna@vinschen.de>
Thanks to Tony Silva <tony_silva@alum.mit.edu>:
* utils.cc (usage): Fix typo in help message.
2004-02-04 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.98.
2004-01-30 Ben Hochstedler <hochstrb@cs.rose-hulman.edu>
* cygrunsrv.cc (get_reg_entries): Add neverexits entry.
(install_registry_keys): Add neverexits entry.
(service_main): Add better error handling of child exit.
If neverexits is set, it will only report SERVICE_STOPPED if
cygrunsrv itself is shutting down.
* cygrunsrv.h (PARAM_NEVEREXITS): Add for neverexits option.
* utils.cc (usage): Add neverexits option.
* utils.h (reason_t): Add errors for neverexits option.
* cygrunsrv.README: Add a description for the --neverexits option.
2003-12-07 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in: Fix typo.
2003-12-07 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (version): Fix copyright date.
2003-12-07 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.97.
* Makefile.in: Add uninstall targets. Refine install targets.
Add dependencies to Makefile.in and configure. Rebuild Makefile
and configure if necessary.
* configure.in: Fix tests for CFLAGS and CXXFLAGS.
* configure: Regenerate.
* cygrunsrv.cc (service_main): Set childs process group to its own pid.
2003-12-05 Brian Ford <ford@vss.fsi.com>
* cygrunsrv.cc (terminate_child): Send the signal to the whole
processes group.
2003-11-24 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in: Add target "all".
2003-11-24 Corinna Vinschen <corinna@vinschen.de>
Autotoolize.
* Makefile: Remove.
* Makefile.in: New file.
* config.guess: New file.
* config.sub: New file.
* configure: New file.
* configure.in: New file.
* install-sh: New file.
2003-08-15 Corinna Vinschen <corinna@vinschen.de>
* Makefile: Adhere to FHS.
2003-05-09 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* cygrunsrv.cc (opts): Expand to have each option
string on a separate line.
2003-05-09 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* cygrunsrv.h (STRINGIFY): New macro.
(STRINGIFY_): New helper macro.
(MAX_ENV_STR, MAX_DEPS_STR): Fix redundant string constants.
2003-05-08 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* crit.cc (set_service_controls_accepted): Add an
interactive_process parameter.
* crit.h (set_service_controls_accepted): Ditto.
* cygrunsrv.cc (longopts, opts): Add an "--interactive" option.
(interactive): New global variable.
(install_registry_keys): Add an interactive parameter.
(get_reg_entries): Add an interactive_p parameter.
(install_service): Add an interactive parameter.
(service_main): Pass the interactive flag to get_reg_entries and
set_service_controls_accepted.
(main): Process the "--interactive" flag.
* cygrunsrv.cc (PARAM_INTERACT): New registry key.
* utils.h (reason_t): Add InteractiveNotAllowed and OnlyOneInteractive
values.
* utils.cc (reason_list): Add description strings for the
InteractiveNotAllowed and OnlyOneInteractive values.
(usage): Add description of the "--interactive" option.
* cygrunsrv.README: Add description of the "--interactive" option.
2003-04-24 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.96.
* Makefile: Link using g++, not gcc.
* util.cc (error): Remove errouneous default value from second
parameter.
2002-03-08 Mike Gerdts <Michael.Gerdts@alcatel.com>
* utils.h (reason_t): Add code for --query errors.
* utils.cc (reason_list): Add error string for --query errors.
(usage): Add help text for --query parameter.
* cygrunsrv.cc (longopts): Add --query parameter.
(opts): Add -Q option.
(main): Add handling --query parameter.
(serviceTypeToString): New function to support --query parameter.
(serviceStateToString): Ditto.
(serviceStateToString): Ditto.
(controlsToString): Ditto.
(query_service): Ditto.
2002-02-26 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.95.
2002-02-24 Karl Moerder <karlm30@hotmail.com>
* utils.h (reason_t): Add codes for --desc errors.
* utils_cc (reason_list): Add error strings for --desc.
* (usage): Add help text for --desc option.
* cygrunsrv.h (DESC): New registry name for description parameter.
* cygrunsrv.cc (longopts): Add '--desc' option.
* (opts): Add '-f option.
* (install_registry_keys): Add 'desc' parameter, and
writing parameter to registry.
* (main): Add handling for '--desc' parameter.
2001-10-29 Corinna Vinschen <corinna@vinschen.de>
Inspired by Pierre A. Humblet <Pierre.Humblet@ieee.org>:
* cygrunsrv.README: Add hint that user needs 'Logon as a service'
privilege.
2001-10-23 Corinna Vinschen <corinna@vinschen.de>
Inspired by Robert Collins <robert.collins@itdomain.com.au>:
* cygrunsrv.README: Add suggestion of dependency on Tcpip.
2001-10-22 Fred Yankowski <fred@ontosys.com>
* cygrunsrv.README: Suggest dependency on LanmanWorkstation.
2001-10-19 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (install_registry_keys): Fix setting working directory.
2001-07-11 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.94.
2001-06-28 Fred Yankowski <fred@ontosys.com>
* cygrunsrv.README: Describe --shutdown option. Adjust postgresql
example.
2001-06-15 Fred Yankowski <fred@ontosys.com>
* utils.h (reason_t): Add codes for --shutdown errors.
* utils.cc (reason_list): Add error strings for --shutdown.
(usage): Add help text for --shutdown option.
* cygrunsrv.h (PARAM_SHUTDOWN): New registry name for shutdown
parameter.
* cygrunsrv.cc (longopts): Add '--shutdown' option.
(opts): Add '-o' option.
(shutdown): Define new global.
(install_registry_keys): Add 'shutdown' parameter, and writing
parameter to registry.
(get_reg_entries): Add 'shutdown_p' parameter and reading
parameter from registry.
(service_handler): Case for SERVICE_CONTROL_SHUTDOWN control.
(service_main): Set global 'shutdown' parameter, and call
set_service_controls_accepted.
(main): Add handling for '--shutdown' parameter.
* crit.h (set_service_controls_accepted): Declare new function.
* crit.cc (set_service_controls_accepted): New function.
2001-05-31 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (longopts): Add `--chdir' option.
(opts): Add `-c' option.
(version): Add Fred to the version info.
(install_registry_keys): Add `dir' parameter. Add writing dir to
the registry.
(get_reg_entries): Add `dir' parameter. Add reading dir from the
registry.
(service_main): Change working directory in child before exec'ing
the application. Free more unused memory.
(main): Add handling for `--chdir' option.
* cygrunsrv.h (PARAM_DIR): New registry name for working directory.
* utils.cc (reason_list): Add error strings for --chdir errors.
(usage): Add help text for --chdir option.
* utils.h (reason_t): Add codes for --chdir errors.
2001-05-23 Corinna Vinschen <corinna@vinschen.de>
* Makefile: Change install target to install into $DESTDIR and
to install also cygrunsrv.README.
2001-05-23 Charles S. Wilson <cwilson@ece.gatech.edu>
* cygrunsrv.README: New file.
2001-05-22 Corinna Vinschen <corinna@vinschen.de>
* TODO: New file.
2001-05-22 Fred Yankowski <fred@ontosys.com>
* cygrunsrv.cc (eval_arglist): Fix handling of quoted options.
2001-05-21 Corinna Vinschen <corinna@vinschen.de>
* Bump version to 0.93.
2001-05-21 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (longopts): Add `--stdin', `--stdout' and `--stderr'
options.
(opts): Add `-0', `-1' and `-2' options.
(install_registry_keys): Add handling for stdio redirection file names.
(get_reg_entries): Ditto.
(service_main): Ditto.
(get_opt_string_entry): New function.
(reeval_io_path): Ditto.
(main): Add handling for stdio redirection options.
* cygrunsrv.h (PARAM_STDIN): New registry name for stdin redirection
file name.
(PARAM_STDOUT): Ditto for stdout.
(PARAM_STDERR): Ditto for stderr.
(DEF_STDIN_PATH): New define, default path for stdin redirection.
(DEF_LOG_PATH): New define, default directory where log files are
written.
* utils.cc (reason_list): Add error strings for --std{in,out,err}
errors.
(usage): Add help text for --std{in,out,err}.
(redirect_fd): New function.
(redirect_io): Ditto.
(create_parent_directory): Ditto.
* utils.h (reason_t): Add codes for --std{in,out,err} errors.
Add declaration for new functions.
2001-05-21 Corinna Vinschen <corinna@vinschen.de>
* utils.cc (usage): Change --dep text slightly.
2001-05-21 Fred Yankowski <fred@ontosys.com>
* utils.cc (reason_list): Add error strings for --dep errors.
(usage): Add help text for --dep.
* utils.h (reason_t): Add codes for --dep errors.
* cygrunsrv.h (MAX_DEPS): Number of --dep values allowed.
(MAX_DEPS_STR): String value of MAX_DEPS.
* cygrunsrv.cc (install_service): Create service with optional
dependencies.
(add_dep): New function to save --dep command-line value.
(main): Handle --dep option.
(longopts): Add '--dep' option.
(opts): Add 'y' option.
2001-05-21 Corinna Vinschen <corinna@vinschen.de>
* cygrunsrv.cc (install_registry_keys): Create environment strings in
subkey "Environment" now.
(get_reg_entries): Read environment strings from subkey "Environment"
now.
(add_env_var): Drop test for illegal environment string names
"AppPath" and "AppArgs".
* cygrunsrv.h (PARAM_ENVIRON): New registry name for environment
string subkey.
2001-05-18 Fred Yankowski <fred@ontosys.com>
* utils.cc (usage): Add help for --termsig option.
(reason_list): Add error strings for wrong --termsig usage.
* cygrunsrv.cc (get_reg_entries): Get --termsig value from registry.
(service_main): Set up global termsig value.
(terminate_child): Send termsig signal to server process.
(termsig): Create new global variable to hold --termsig value.
(install_registry_keys): Save --termsig value.
(longopts): Add '--termsig' option.
(opts): Add 's' option.
(main): Handle '--termsig' option.
* cygrunsrv.h (PARAM_TERMSIG): New registry name for --termsig value.
* utils.h (reason_t): Add codes for '--termsig' errors.
2001-05-11 Corinna Vinschen <corinna@vinschen.de>
* utils.cc: New file. Move several functions from cygrunsrv.cc to here.
* utils.h: Ditto.
(reason_t): Add error codes for wrong --type usage.
* utils.cc (winerror): New function providing strerror functionality for
Win32 errors.
(reason_list): Add error strings for wrong --type usage.
(error): Add windows error message text to error output.
(syslog_starterr): New function.
* cygrunsrv.cc (longopts): Add `--type' option.
(opts): Add `t' option.
(type_t): New type.
(usage): Add help for `--type' option.
(install_service): Add parameter for service start type.
(service_main): Use syslog_starterr function.
(main): Add handling for `--type' option.
* Bump version to 0.92.
2001-05-10 Corinna Vinschen <corinna@vinschen.de>
* (get_reg_entries): Fix memory usage.
* (install_service): Add interactive password request if password
is omitted.
* Control access to SERVICE_STATUS by using a critical section.
Move access functions to new file crit.cc. Declare access functions
in crit.h.
* Bump version to 0.91.
2001-05-09 Corinna Vinschen <corinna@vinschen.de>
* Initial version 0.9.

View file

@ -0,0 +1,10 @@
- (not yet possible): Sending signals to cygrunsrv to perform various
actions.
- Add a way to pipe output of child processes to another application
Example:
--stdout '|logger -t foo'
- man page???
- Add service failure actions using ChangeServiceConfig2 (>= W2K).

Some files were not shown because too many files have changed in this diff Show more