Commit sysroot / cross-compile build tree

This commit is contained in:
Nathan Fisher 2021-02-18 19:41:59 -05:00
commit faa6d3b4a9
2449 changed files with 561128 additions and 0 deletions

24
.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
*.a
*.tar
*.tar.*
*.tgz
*.tbz
*.txz
.dirstamp
build/
.built
.installed
config.mk
.skeleton.built
.links
.dlfix
.configured
world/.stripped
chroot.sh
clean-chroot.sh
newchroot.sh
locales.mk
src-files.mk
awkgram.tab.c
awkgram.tab.h
proctab.c

28
COPYING Normal file
View file

@ -0,0 +1,28 @@
Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
The build tree for HitchHiker Linux is released to the public under the
terms of the standard BEERWARE license (see LICENSE.BEERWARE). Portions
of the source code are imported from external sources and retain their
original license as shown in each relevant subdirectory.
The build tree fetches and installs a large amount of software released
under the terms of the GPL and LGPL licenses (see LICENSE.GPL3 and
LICENSE.LGPL3 respectively). Such source code is not imported directly
into the build tree and retains the terms of it's original license.
It is believed by the project (HitchHiker Linux) that all of the above
referenced licenses came to being in order to grant the end user greater
freedom of choice in what software runs on their computing devices. It
can be easily demonstrated that at times licensing issues have kept BSD
and GPL licensed code seperate and in so doing have not served the needs
of the users.
The moment a free software license becomes an impediment to using the
code in the way in which the user wants to, the license is in effect
subverting itself and it's intended purpose.
What this means is that the project (HitchHiker Linux), while intending
to comply so far as possible with licensing terms, will use all freely
available code irrespective of free software license variety. It also
means that so far as the code developed by the project itself, please
just do what you want with it, so long as credit is given.

26
INSTALL Normal file
View file

@ -0,0 +1,26 @@
To bootstrap from another linux system:
Make sure you have a full development environment installed including
compiler, linker, headers etc. Git is also required for several stages,
along with GNU wget. Commands following a # prompt are run as root, while
those following a % prompt can be run as your normal user.
Bind mount the source directory on /usr/src:
# mount -Bv <path to sourcedir> /src
Create a link required for the correct installation of the temporary
toolchain:
# ln -sv <path to sourcedir>/build/toolchain /toolchain
Set up the environment by sourcing an included script:
# source scripts/setenv.sh
The system is now bootstrapped with minimal changes to the host. Should
you wish to abort partway through and continue later, simply unmount
/src and then remount it when ready to begin again.
To build the system:
% make buildtools
# make buildworld
This creates a complete root filesystem in /src/build

26
LICENSE.BEERWARE Normal file
View file

@ -0,0 +1,26 @@
-----------------------------------------------------------------------
"THE BEER-WARE LICENSE" (Revision 42):
<jeang3nie@HitchHiker-Linux.org> wrote this file. As long as you retain
this notice you can do whatever you want with this stuff. If we meet
some day, and you think this stuff is worth it, you can buy me a beer
in return.
-----------------------------------------------------------------------
______ _______ _ _________
( __ \ ( ___ )( ( /|( )\__ __/
| ( \ )| ( ) || \ ( ||/ ) (
| | ) || | | || \ | | | |
| | | || | | || (\ \) | | |
| | ) || | | || | \ | | |
| (__/ )| (___) || ) \ | | |
(______/ (_______)|/ )_) )_(
_______ _______ _ _________ _______
( ____ )( ___ )( \ /|\__ __/( ____ \
| ( )|| ( ) || \ ( | ) ( | ( |/
| (____)|| (___) || \ | | | | | |
| _____)| ___ || (\ \) | | | | |
| ( | ( ) || | \ | | | | |
| ) | ) ( || ) \ |___) (___| (____|\
|/ |/ \||/ \_)\_______/(_______/

27
LICENSE.BSD Normal file
View file

@ -0,0 +1,27 @@
Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* 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.
* Neither the name of the 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 COPYRIGHT HOLDERS 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 COPYRIGHT
OWNER 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.

674
LICENSE.GPL3 Normal file
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>.

165
LICENSE.LGPL3 Normal file
View file

@ -0,0 +1,165 @@
GNU LESSER 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.
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.

340
LICENSE.heirloom/COPYING Normal file
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,504 @@
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.
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., 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,7 @@
/COPYING/1.1.1.1/Sat Dec 4 13:51:08 2004//
/COPYING.LGPL/1.1.1.1/Sat Dec 4 13:51:08 2004//
/LICENSE/1.17/Fri Feb 2 23:50:52 2007//
/LUCENT/1.1.1.1/Sat Dec 4 13:51:07 2004//
/OPENSOLARIS.LICENSE/1.1/Sat Jun 18 16:57:49 2005//
/README/1.1.1.1/Sat Dec 4 13:51:08 2004//
D

View file

@ -0,0 +1 @@
heirloom/LICENSE

View file

@ -0,0 +1 @@
:pserver:anonymous@heirloom.cvs.sourceforge.net:/cvsroot/heirloom

354
LICENSE.heirloom/LICENSE Normal file
View file

@ -0,0 +1,354 @@
********************************************************************************
The license for newly written code and changes to existing code is:
Copyright (c) 2003 Gunnar Ritter
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. 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.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
The following tools have been rewritten from scratch:
basename cat chown cmp copy cp
cpio* csplit cut date dd df dirname
du env expand false fold groups hd
head hostname id install kill line
listusers logins logname man mesg mkdir
mkfifo mknod mt newform news nice nl
nohup od paste pathchk pg pgrep printenv
printf priocntl ps psrinfo pwd rm
rmdir sdiff setpgrp shl sleep split stty
su sync tabs tape tapecntl tee
time touch true tty uname unexpand
users wc who whoami whodo xargs yes
* See below for the licenses on compression codes.
All source code and documentation has been changed intensively, thus
the above license applies to all material distributed here, further
restricted by the original licenses.
********************************************************************************
Caldera's License for Unix 6th Edition, Unix 7th Edition, and Unix 32V
applies to nearly all manual pages and to the utilities based on these
Unix versions:
Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
Redistributions of source code and documentation must retain the
above copyright notice, this list of conditions and the following
disclaimer.
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.
All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed or owned by Caldera
International, Inc.
Neither the name of Caldera International, Inc. nor the names of
other contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
INTERNATIONAL, INC. 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 CALDERA INTERNATIONAL, INC. 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.
These utilities have been derived from Ancient Unix code:
banner bc cal calendar chmod cksum
col comm dc deroff(1b) diff diff3
ed egrep expr factor fgrep file find
grep join mkdir oawk pr random sed
sort sum tail tar tr tsort uniq
unit
as well as the 'gmatch' and 'regexp' parts of libcommon.
********************************************************************************
Some utilities and manual pages are based on various releases of
4BSD, governed by the following license:
Copyright (c) 1980, 1993
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. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the University of
California, Berkeley and its contributors.
4. 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.
The following utilities include 4BSD code:
bc ching dc deroff(1b) diff diff3 fmt
ln(1b) more nawk oawk renice tcopy ul
********************************************************************************
The following utilities are based on Sun's OpenSolaris code; the file
OPENSOLARIS.LICENSE contains the licensing conditions for them:
bdiff bfs dircmp echo fmtmsg getconf getopt mail
mvdir spell test what
Some manual pages have also been derived from OpenSolaris code; see
the header of the respective page.
Changes to these programs are also subject to the original license.
********************************************************************************
One utilities is based on the MINIX 2.0 sources, to which the
following license applies:
Copyright (c) 1987,1997, Prentice Hall All rights reserved.
Redistribution and use of the MINIX operating system in source and
binary forms, with or without modification, are permitted provided
that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
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.
Neither the name of Prentice Hall nor the names of the software
authors or contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, 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 PRENTICE HALL OR ANY AUTHORS 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.
The utility derived from MINIX sources is:
ls
********************************************************************************
The utility 'nawk' and the library 'libuxre' are based on the Unix tools
released made available by Caldera at <http://unixtools.sourceforge.net/>.
GNU GPL 2.0 applies to 'nawk' (see the file COPYING); GNU LGPL 2.1 applies
to 'libuxre' (see COPYING.LGPL). Changes to these tools are subject to these
licenses also.
********************************************************************************
The 'deroff' utility is derived from Plan 9 <http://cm.bell-labs.com/plan9dist/>
and is distributed under the terms of the Lucent Public License Version 1.02;
see the file LUCENT.
********************************************************************************
The CRC-32 function for cpio was derived from zlib 1.1.4:
Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. 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.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
********************************************************************************
The inflate decompression code for the zip support has been derived from
Info-ZIP's zip 5.50:
This is version 2002-Feb-16 of the Info-ZIP copyright and license.
The definitive version of this document should be available at
ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely.
Copyright (c) 1990-2002 Info-ZIP. All rights reserved.
For the purposes of this copyright and license, "Info-ZIP" is defined as
the following set of individuals:
Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel
Dubois, Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris
Herborth, Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson,
Paul Kienitz, David Kirschbaum, Johnny Lee, Onno van der Linden,
Igor Mandrichenko, Steve P. Miller, Sergio Monesi, Keith Owens,
George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave
Smith, Christian Spieler, Antoine Verheijen, Paul von Behren, Rich
Wales, Mike White
This software is provided "as is," without warranty of any kind,
express or implied. In no event shall Info-ZIP or its contributors
be held liable for any direct, indirect, incidental, special or
consequential damages arising out of the use of or inability to use
this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. Redistributions of source code must retain the above copyright
notice, definition, disclaimer, and this list of conditions.
2. Redistributions in binary form (compiled executables) must
reproduce the above copyright notice, definition, disclaimer,
and this list of conditions in documentation and/or other
materials provided with the distribution. The sole exception
to this condition is redistribution of a standard UnZipSFX
binary as part of a self-extracting archive; that is permitted
without inclusion of this license, as long as the normal
UnZipSFX banner has not been removed from the binary or
disabled.
3. Altered versions--including, but not limited to, ports to new
operating systems, existing ports with new graphical
interfaces, and dynamic, shared, or static library
versions--must be plainly marked as such and must not be
misrepresented as being the original source. Such altered
versions also must not be misrepresented as being Info-ZIP
releases--including, but not limited to, labeling of the
altered versions with the names "Info-ZIP" (or any variation
thereof, including, but not limited to, different
capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without
the explicit permission of Info-ZIP. Such altered versions
are further prohibited from misrepresentative use of the
Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP
URL(s).
4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip,"
"UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and
"MacZip" for its own source and binary releases.
********************************************************************************
The unshrink decompression code is derived from Info-ZIP's unzip 5.40:
* Copyright (c) 1994 Greg Roelofs.
* Permission is granted to any individual/institution/corporate
* entity to use, copy, redistribute or modify this software for
* any purpose whatsoever, subject to the conditions noted in the
* Frequently Asked Questions section below, plus one additional
* condition: namely, that my name not be removed from the source
* code. (Other names may, of course, be added as modifications
* are made.) Corporate legal staff (like at IBM :-) ) who have
* problems understanding this can contact me through Zip-Bugs...
Q. Can I use the source code of Zip and UnZip in my commercial
application?
A. Yes, so long as you include in your product an acknowledgment; a
pointer to the original, free compression sources; and a statement
making it clear that there are no extra or hidden charges resulting
from the use of our compression code in your product (see below for
an example). The acknowledgment should appear in at least one piece
of human-readable documentation (e.g., a README file or man page),
although additionally putting it in the executable(s) is OK, too.
In other words, you are allowed to sell only your own work, not ours,
and we'd like a little credit. (Note the additional restrictions
above on the code in unreduce.c, unshrink.c, vms.c, time_lib.c, and
everything in the wince and windll subdirectories.) Contact us at
Zip-Bugs@lists.wku.edu if you have special requirements. We also
like to hear when our code is being used, but we don't require that.
<Product> incorporates compression code from the Info-ZIP group.
There are no extra charges or costs due to the use of this code,
and the original compression sources are freely available from
http://www.cdrom.com/pub/infozip/ or ftp://ftp.cdrom.com/pub/infozip/
on the Internet.
If you only need compression capability, not full zipfile support,
you might want to look at zlib instead; it has fewer restrictions
on commercial use. See http://www.cdrom.com/pub/infozip/zlib/ .
********************************************************************************
The blast decompression code (for DCL imploded zip archive entries) was
derived from code by Mark Adler distributed with zlib 1.2.1:
This software is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. 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.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Mark Adler madler@alumni.caltech.edu
********************************************************************************
********************************************************************************
The explode decompression code is derived from unzip 5.40; this version
of this code was put in the public domain by Mark Adler.
********************************************************************************
Gunnar Ritter 2/3/07

258
LICENSE.heirloom/LUCENT Normal file
View file

@ -0,0 +1,258 @@
The Plan 9 software is provided under the terms of the
Lucent Public License, Version 1.02, reproduced below,
with the following exceptions:
1. No right is granted to create derivative works of or
to redistribute (other than with the Plan 9 Operating System)
the screen imprinter fonts identified in subdirectory
/lib/font/bit/lucida and printer fonts (Lucida Sans Unicode, Lucida
Sans Italic, Lucida Sans Demibold, Lucida Typewriter, Lucida Sans
Typewriter83), identified in subdirectory /sys/lib/postscript/font.
These directories contain material copyrights by B&H Inc. and Y&Y Inc.
2. The printer fonts identified in subdirectory /sys/lib/ghostscript/font
are subject to the GNU GPL, reproduced in the file /LICENSE.gpl.
3. The ghostscript program in the subdirectory /sys/src/cmd/gs is
covered by the Aladdin Free Public License, reproduced in the file
/LICENSE.afpl.
===================================================================
Lucent Public License Version 1.02
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE
PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
"Contribution" means:
a. in the case of Lucent Technologies Inc. ("LUCENT"), the Original
Program, and
b. in the case of each Contributor,
i. changes to the Program, and
ii. additions to the Program;
where such changes and/or additions to the Program were added to the
Program by such Contributor itself or anyone acting on such
Contributor's behalf, and the Contributor explicitly consents, in
accordance with Section 3C, to characterization of the changes and/or
additions as Contributions.
"Contributor" means LUCENT and any other entity that has Contributed a
Contribution to the Program.
"Distributor" means a Recipient that distributes the Program,
modifications to the Program, or any part thereof.
"Licensed Patents" mean patent claims licensable by a Contributor
which are necessarily infringed by the use or sale of its Contribution
alone or when combined with the Program.
"Original Program" means the original version of the software
accompanying this Agreement as released by LUCENT, including source
code, object code and documentation, if any.
"Program" means the Original Program and Contributions or any part
thereof
"Recipient" means anyone who receives the Program under this
Agreement, including all Contributors.
2. GRANT OF RIGHTS
a. Subject to the terms of this Agreement, each Contributor hereby
grants Recipient a non-exclusive, worldwide, royalty-free copyright
license to reproduce, prepare derivative works of, publicly display,
publicly perform, distribute and sublicense the Contribution of such
Contributor, if any, and such derivative works, in source code and
object code form.
b. Subject to the terms of this Agreement, each Contributor hereby
grants Recipient a non-exclusive, worldwide, royalty-free patent
license under Licensed Patents to make, use, sell, offer to sell,
import and otherwise transfer the Contribution of such Contributor, if
any, in source code and object code form. The patent license granted
by a Contributor shall also apply to the combination of the
Contribution of that Contributor and the Program if, at the time the
Contribution is added by the Contributor, such addition of the
Contribution causes such combination to be covered by the Licensed
Patents. The patent license granted by a Contributor shall not apply
to (i) any other combinations which include the Contribution, nor to
(ii) Contributions of other Contributors. No hardware per se is
licensed hereunder.
c. Recipient understands that although each Contributor grants the
licenses to its Contributions set forth herein, no assurances are
provided by any Contributor that the Program does not infringe the
patent or other intellectual property rights of any other entity. Each
Contributor disclaims any liability to Recipient for claims brought by
any other entity based on infringement of intellectual property rights
or otherwise. As a condition to exercising the rights and licenses
granted hereunder, each Recipient hereby assumes sole responsibility
to secure any other intellectual property rights needed, if any. For
example, if a third party patent license is required to allow
Recipient to distribute the Program, it is Recipient's responsibility
to acquire that license before distributing the Program.
d. Each Contributor represents that to its knowledge it has sufficient
copyright rights in its Contribution, if any, to grant the copyright
license set forth in this Agreement.
3. REQUIREMENTS
A. Distributor may choose to distribute the Program in any form under
this Agreement or under its own license agreement, provided that:
a. it complies with the terms and conditions of this Agreement;
b. if the Program is distributed in source code or other tangible
form, a copy of this Agreement or Distributor's own license agreement
is included with each copy of the Program; and
c. if distributed under Distributor's own license agreement, such
license agreement:
i. effectively disclaims on behalf of all Contributors all warranties
and conditions, express and implied, including warranties or
conditions of title and non-infringement, and implied warranties or
conditions of merchantability and fitness for a particular purpose;
ii. effectively excludes on behalf of all Contributors all liability
for damages, including direct, indirect, special, incidental and
consequential damages, such as lost profits; and
iii. states that any provisions which differ from this Agreement are
offered by that Contributor alone and not by any other party.
B. Each Distributor must include the following in a conspicuous
location in the Program:
Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights
Reserved.
C. In addition, each Contributor must identify itself as the
originator of its Contribution in a manner that reasonably allows
subsequent Recipients to identify the originator of the Contribution.
Also, each Contributor must agree that the additions and/or changes
are intended to be a Contribution. Once a Contribution is contributed,
it may not thereafter be revoked.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain
responsibilities with respect to end users, business partners and the
like. While this license is intended to facilitate the commercial use
of the Program, the Distributor who includes the Program in a
commercial product offering should do so in a manner which does not
create potential liability for Contributors. Therefore, if a
Distributor includes the Program in a commercial product offering,
such Distributor ("Commercial Distributor") hereby agrees to defend
and indemnify every Contributor ("Indemnified Contributor") against
any losses, damages and costs (collectively"Losses") arising from
claims, lawsuits and other legal actions brought by a third party
against the Indemnified Contributor to the extent caused by the acts
or omissions of such Commercial Distributor in connection with its
distribution of the Program in a commercial product offering. The
obligations in this section do not apply to any claims or Losses
relating to any actual or alleged intellectual property infringement.
In order to qualify, an Indemnified Contributor must: a) promptly
notify the Commercial Distributor in writing of such claim, and b)
allow the Commercial Distributor to control, and cooperate with the
Commercial Distributor in, the defense and any related settlement
negotiations. The Indemnified Contributor may participate in any such
claim at its own expense.
For example, a Distributor might include the Program in a commercial
product offering, Product X. That Distributor is then a Commercial
Distributor. If that Commercial Distributor then makes performance
claims, or offers warranties related to Product X, those performance
claims and warranties are such Commercial Distributor's responsibility
alone. Under this section, the Commercial Distributor would have to
defend claims against the Contributors related to those performance
claims and warranties, and if a court requires any Contributor to pay
any damages as a result, the Commercial Distributor must pay those
damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
PROVIDED 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. Each Recipient is solely
responsible for determining the appropriateness of using and
distributing the Program and assumes all risks associated with its
exercise of rights under this Agreement, including but not limited to
the risks and costs of program errors, compliance with applicable
laws, damage to or loss of data, programs or equipment, and
unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
WITHOUT LIMITATION LOST PROFITS), 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 OR
DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. EXPORT CONTROL
Recipient agrees that Recipient alone is responsible for compliance
with the United States export administration regulations (and the
export control laws and regulation of any other countries).
8. GENERAL
If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this Agreement, and without further
action by the parties hereto, such provision shall be reformed to the
minimum extent necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against a Contributor with
respect to a patent applicable to software (including a cross-claim or
counterclaim in a lawsuit), then any patent licenses granted by that
Contributor to such Recipient under this Agreement shall terminate as
of the date such litigation is filed. In addition, if Recipient
institutes patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Program
itself (excluding combinations of the Program with other software or
hardware) infringes such Recipient's patent(s), then such Recipient's
rights granted under Section 2(b) shall terminate as of the date such
litigation is filed.
All Recipient's rights under this Agreement shall terminate if it
fails to comply with any of the material terms or conditions of this
Agreement and does not cure such failure in a reasonable period of
time after becoming aware of such noncompliance. If all Recipient's
rights under this Agreement terminate, Recipient agrees to cease use
and distribution of the Program as soon as reasonably practicable.
However, Recipient's obligations under this Agreement and any licenses
granted by Recipient relating to the Program shall continue and
survive.
LUCENT may publish new versions (including revisions) of this
Agreement from time to time. Each new version of the Agreement will be
given a distinguishing version number. The Program (including
Contributions) may always be distributed subject to the version of the
Agreement under which it was received. In addition, after a new
version of the Agreement is published, Contributor may elect to
distribute the Program (including its Contributions) under the new
version. No one other than LUCENT has the right to modify this
Agreement. Except as expressly stated in Sections 2(a) and 2(b) above,
Recipient receives no rights or licenses to the intellectual property
of any Contributor under this Agreement, whether expressly, by
implication, estoppel or otherwise. All rights in the Program not
expressly granted under this Agreement are reserved.
This Agreement is governed by the laws of the State of New York and
the intellectual property laws of the United States of America. No
party to this Agreement will bring a legal action under this Agreement
more than one year after the cause of action arose. Each party waives
its rights to a jury trial in any resulting litigation.

View file

@ -0,0 +1,385 @@
Unless otherwise noted, all files in this distribution are released
under the Common Development and Distribution License (CDDL),
Version 1.0 only. Exceptions are noted within the associated
source files.
--------------------------------------------------------------------
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
1. Definitions.
1.1. "Contributor" means each individual or entity that creates
or contributes to the creation of Modifications.
1.2. "Contributor Version" means the combination of the Original
Software, prior Modifications used by a Contributor (if any),
and the Modifications made by that particular Contributor.
1.3. "Covered Software" means (a) the Original Software, or (b)
Modifications, or (c) the combination of files containing
Original Software with files containing Modifications, in
each case including portions thereof.
1.4. "Executable" means the Covered Software in any form other
than Source Code.
1.5. "Initial Developer" means the individual or entity that first
makes Original Software available under this License.
1.6. "Larger Work" means a work which combines Covered Software or
portions thereof with code not governed by the terms of this
License.
1.7. "License" means this document.
1.8. "Licensable" means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed
herein.
1.9. "Modifications" means the Source Code and Executable form of
any of the following:
A. Any file that results from an addition to, deletion from or
modification of the contents of a file containing Original
Software or previous Modifications;
B. Any new file that contains any part of the Original
Software or previous Modifications; or
C. Any new file that is contributed or otherwise made
available under the terms of this License.
1.10. "Original Software" means the Source Code and Executable
form of computer software code that is originally released
under this License.
1.11. "Patent Claims" means any patent claim(s), now owned or
hereafter acquired, including without limitation, method,
process, and apparatus claims, in any patent Licensable by
grantor.
1.12. "Source Code" means (a) the common form of computer software
code in which modifications are made and (b) associated
documentation included in or with such code.
1.13. "You" (or "Your") 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 which controls, is controlled by, or is under common
control with You. For purposes of this definition,
"control" means (a) the power, direct or indirect, to cause
the direction or management of such entity, whether by
contract or otherwise, or (b) ownership of more than fifty
percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants.
2.1. The Initial Developer Grant.
Conditioned upon Your compliance with Section 3.1 below and
subject to third party intellectual property claims, the Initial
Developer hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Initial Developer, to use,
reproduce, modify, display, perform, sublicense and
distribute the Original Software (or portions thereof),
with or without Modifications, and/or as part of a Larger
Work; and
(b) under Patent Claims infringed by the making, using or
selling of Original Software, to make, have made, use,
practice, sell, and offer for sale, and/or otherwise
dispose of the Original Software (or portions thereof).
(c) The licenses granted in Sections 2.1(a) and (b) are
effective on the date Initial Developer first distributes
or otherwise makes the Original Software available to a
third party under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is
granted: (1) for code that You delete from the Original
Software, or (2) for infringements caused by: (i) the
modification of the Original Software, or (ii) the
combination of the Original Software with other software
or devices.
2.2. Contributor Grant.
Conditioned upon Your compliance with Section 3.1 below and
subject to third party intellectual property claims, each
Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Contributor to use, reproduce,
modify, display, perform, sublicense and distribute the
Modifications created by such Contributor (or portions
thereof), either on an unmodified basis, with other
Modifications, as Covered Software and/or as part of a
Larger Work; and
(b) under Patent Claims infringed by the making, using, or
selling of Modifications made by that Contributor either
alone and/or in combination with its Contributor Version
(or portions of such combination), to make, use, sell,
offer for sale, have made, and/or otherwise dispose of:
(1) Modifications made by that Contributor (or portions
thereof); and (2) the combination of Modifications made by
that Contributor with its Contributor Version (or portions
of such combination).
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are
effective on the date Contributor first distributes or
otherwise makes the Modifications available to a third
party.
(d) Notwithstanding Section 2.2(b) above, no patent license is
granted: (1) for any code that Contributor has deleted
from the Contributor Version; (2) for infringements caused
by: (i) third party modifications of Contributor Version,
or (ii) the combination of Modifications made by that
Contributor with other software (except as part of the
Contributor Version) or other devices; or (3) under Patent
Claims infringed by Covered Software in the absence of
Modifications made by that Contributor.
3. Distribution Obligations.
3.1. Availability of Source Code.
Any Covered Software that You distribute or otherwise make
available in Executable form must also be made available in Source
Code form and that Source Code form must be distributed only under
the terms of this License. You must include a copy of this
License with every copy of the Source Code form of the Covered
Software You distribute or otherwise make available. You must
inform recipients of any such Covered Software in Executable form
as to how they can obtain such Covered Software in Source Code
form in a reasonable manner on or through a medium customarily
used for software exchange.
3.2. Modifications.
The Modifications that You create or to which You contribute are
governed by the terms of this License. You represent that You
believe Your Modifications are Your original creation(s) and/or
You have sufficient rights to grant the rights conveyed by this
License.
3.3. Required Notices.
You must include a notice in each of Your Modifications that
identifies You as the Contributor of the Modification. You may
not remove or alter any copyright, patent or trademark notices
contained within the Covered Software, or any notices of licensing
or any descriptive text giving attribution to any Contributor or
the Initial Developer.
3.4. Application of Additional Terms.
You may not offer or impose any terms on any Covered Software in
Source Code form that alters or restricts the applicable version
of this License or the recipients' rights hereunder. You may
choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of
Covered Software. However, you may do so only on Your own behalf,
and not on behalf of the Initial Developer or any Contributor.
You must make it absolutely clear that any such warranty, support,
indemnity or liability obligation is offered by You alone, and You
hereby agree to indemnify the Initial Developer and every
Contributor for any liability incurred by the Initial Developer or
such Contributor as a result of warranty, support, indemnity or
liability terms You offer.
3.5. Distribution of Executable Versions.
You may distribute the Executable form of the Covered Software
under the terms of this License or under the terms of a license of
Your choice, which may contain terms different from this License,
provided that You are in compliance with the terms of this License
and that the license for the Executable form does not attempt to
limit or alter the recipient's rights in the Source Code form from
the rights set forth in this License. If You distribute the
Covered Software in Executable form under a different license, You
must make it absolutely clear that any terms which differ from
this License are offered by You alone, not by the Initial
Developer or Contributor. You hereby agree to indemnify the
Initial Developer and every Contributor for any liability incurred
by the Initial Developer or such Contributor as a result of any
such terms You offer.
3.6. Larger Works.
You may create a Larger Work by combining Covered Software with
other code not governed by the terms of this License and
distribute the Larger Work as a single product. In such a case,
You must make sure the requirements of this License are fulfilled
for the Covered Software.
4. Versions of the License.
4.1. New Versions.
Sun Microsystems, Inc. is the initial license steward and may
publish revised and/or new versions of this License from time to
time. Each version will be given a distinguishing version number.
Except as provided in Section 4.3, no one other than the license
steward has the right to modify this License.
4.2. Effect of New Versions.
You may always continue to use, distribute or otherwise make the
Covered Software available under the terms of the version of the
License under which You originally received the Covered Software.
If the Initial Developer includes a notice in the Original
Software prohibiting it from being distributed or otherwise made
available under any subsequent version of the License, You must
distribute and make the Covered Software available under the terms
of the version of the License under which You originally received
the Covered Software. Otherwise, You may also choose to use,
distribute or otherwise make the Covered Software available under
the terms of any subsequent version of the License published by
the license steward.
4.3. Modified Versions.
When You are an Initial Developer and You want to create a new
license for Your Original Software, You may create and use a
modified version of this License if You: (a) rename the license
and remove any references to the name of the license steward
(except to note that the license differs from this License); and
(b) otherwise make it clear that the license contains terms which
differ from this License.
5. DISCLAIMER OF WARRANTY.
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
DISCLAIMER.
6. TERMINATION.
6.1. This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to
cure such breach within 30 days of becoming aware of the breach.
Provisions which, by their nature, must remain in effect beyond
the termination of this License shall survive.
6.2. If You assert a patent infringement claim (excluding
declaratory judgment actions) against Initial Developer or a
Contributor (the Initial Developer or Contributor against whom You
assert such claim is referred to as "Participant") alleging that
the Participant Software (meaning the Contributor Version where
the Participant is a Contributor or the Original Software where
the Participant is the Initial Developer) directly or indirectly
infringes any patent, then any and all rights granted directly or
indirectly to You by such Participant, the Initial Developer (if
the Initial Developer is not the Participant) and all Contributors
under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
notice from Participant terminate prospectively and automatically
at the expiration of such 60 day notice period, unless if within
such 60 day period You withdraw Your claim with respect to the
Participant Software against such Participant either unilaterally
or pursuant to a written agreement with Participant.
6.3. In the event of termination under Sections 6.1 or 6.2 above,
all end user licenses that have been validly granted by You or any
distributor hereunder prior to termination (excluding licenses
granted to You by any distributor) shall survive termination.
7. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY 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.
8. U.S. GOVERNMENT END USERS.
The Covered Software is a "commercial item," as that term is
defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
computer software" (as that term is defined at 48
C.F.R. 252.227-7014(a)(1)) and "commercial computer software
documentation" as such terms are used in 48 C.F.R. 12.212
(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
U.S. Government End Users acquire Covered Software with only those
rights set forth herein. This U.S. Government Rights clause is in
lieu of, and supersedes, any other FAR, DFAR, or other clause or
provision that addresses Government rights in computer software
under this License.
9. MISCELLANEOUS.
This License represents the complete agreement concerning 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. This License shall be governed
by the law of the jurisdiction specified in a notice contained
within the Original Software (except to the extent applicable law,
if any, provides otherwise), excluding such jurisdiction's
conflict-of-law provisions. Any litigation relating to this
License shall be subject to the jurisdiction of the courts located
in the jurisdiction and venue specified in a notice contained
within the Original Software, with the losing party responsible
for costs, including, without limitation, court costs and
reasonable attorneys' fees and expenses. The application of the
United Nations Convention on Contracts for the International Sale
of Goods is expressly excluded. Any law or regulation which
provides that the language of a contract shall be construed
against the drafter shall not apply to this License. You agree
that You alone are responsible for compliance with the United
States export administration regulations (and the export control
laws and regulation of any other countries) when You use,
distribute or otherwise make available any Covered Software.
10. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or
indirectly, out of its utilization of rights under this License
and You agree to work with Initial Developer and Contributors to
distribute such responsibility on an equitable basis. Nothing
herein is intended or shall be deemed to constitute any admission
of liability.
--------------------------------------------------------------------
NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
DISTRIBUTION LICENSE (CDDL)
For Covered Software in this distribution, this License shall
be governed by the laws of the State of California (excluding
conflict-of-law provisions).
Any litigation relating to this License shall be subject to the
jurisdiction of the Federal Courts of the Northern District of
California and the state courts of the State of California, with
venue lying in Santa Clara County, California.

27
LICENSE.heirloom/README Normal file
View file

@ -0,0 +1,27 @@
README for license conditions of the Heirloom Toolchest
=======================================================
The Heirloom Toolchest is derived from a variety of sources; the
respective licensing terms can be found in the other files in this
directory; in addition, each source file contains the license terms
of the original author at its top.
All newly written code is put under a zlib-style license (except for
additions to the GPL and LGPL code in awk and libuxre). The rationale
is that for something distributed as widely as Unix code, any license
that requires more than naming the author would only cause annoyance.
In effect, this means that commercial Unix vendors who already have a
Unix source code license can use nearly all of this code without being
forced to mention it in other places than the source code files.
However, if you work for such a vendor, don't do so. Instead, convince
the management to release at least the utility source. There is really
nothing to keep secret about it to have an advantage over competitors,
as any person or company can simply use the source of this or another
toolchest to have comparable functionality. So by releasing the source
to your version, you lose nothing, but you will make your users happy
since they can use it as a reference. And happy users also mean more
money in the end.
Gunnar Ritter 9/22/03

114
Makefile Normal file
View file

@ -0,0 +1,114 @@
# Makefile - hhl - /usr/src
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
include src-config.mk
include src-files.mk
uid = $(shell id -u)
include_dir = /usr/include/mk
make_includes += $(wildcard $(include_dir)/*.mk)
pkgdbdir = $(build)/var/db/pkg/base
plists = $(pkgdbdir)/plist $(pkgdbdir)/etc.plist
dirs = dev proc sys run
ifeq ($(arch),x86_64)
dirs += lib64
endif
alldirs = bin boot dev etc home lib lib64 media mnt \
opt proc root run sbin srv sys tmp usr var
all: buildworld
toolchain-tgz: toolchain-hhl-${os_version}-${arch}.tgz
toolchain-tbz: toolchain-hhl-${os_version}-${arch}.tbz
toolchain-txz: toolchain-hhl-${os_version}-${arch}.txz
rootfs-tgz: rootfs-hhl-${os_version}-${arch}.tgz
rootfs-tbz: rootfs-hhl-${os_version}-${arch}.tbz
rootfs-txz: rootfs-hhl-${os_version}-${arch}.txz
toolchain-hhl-${os_version}-${arch}.tgz: /toolchain/.built smalltools
cd build && tar -czf ../$@ toolchain
toolchain-hhl-${os_version}-${arch}.tbz: /toolchain/.built smalltools
cd build && tar -cjf ../$@ toolchain
toolchain-hhl-${os_version}-${arch}.txz: /toolchain/.built smalltools
cd build && tar -cJf ../$@ toolchain
smalltools: /toolchain/.built
$(MAKE) -C toolchain reduce-size
buildtools: /toolchain/.built
$(info $(grn)=== Temporary toolchain build ===$(reset))
/toolchain/.built: | $(dirs)
$(info $(grn)=== Building temporary toolchain ===$(reset))
$(MAKE) -C toolchain
touch $@
toolsclean:
$(MAKE) -C toolchain clean
src-files.mk:
echo src-files = \\ > $@.in
git ls-files | sort | while read l ; do echo $${l} \\ ; done | \
sed '$$ s:\\::' >> $@.in
mv $@.in $@
buildworld: $(build)/.built $(plists)
$(info $(grn)=== World build complete ===$(reset))
strip: $(build)/.stripped
$(build)/.stripped:
for dir in ${stripdirs} ; \
do /toolchain/bin/strip --strip-debug $${dir}/* > \
/dev/null 2>&1 || true ; done
touch $@
$(build)/.built: $(build)/.skeleton.built
$(MAKE) -C world
touch $@
$(build)/.skeleton.built: | $(dirs)
install -d -m 0750 build/root
install -dv -m 1777 build/tmp build/var/tmp
[ -h build/var/run ] || ln -sv /run build/var/run
[ -h build/var/lock ] || ln -sv /run/lock build/var/lock
[ -c $(build)/dev/console ] || su -c "mknod -m 600 $(build)/dev/console c 5 1"
[ -c $(build)/dev/null ] || su -c "mknod -m 666 $(build)/dev/null c 1 3"
touch $@
$(plists): $(build)/.built
$(info $(grn)=== Creating plist ===$(reset))
pkgname=base $(MAKE) -C $(build) -f $(include_dir)/create-plist.mk install
$(dirs):
install -d ${build}/$@
remove-toolchain:
$(MAKE) -C toolchain remove
rootfs-hhl-$(os_version)-$(arch).tgz: $(plists) $(build)/.stripped
cd build && tar -czf ../$@ $(alldirs)
rootfs-hhl-$(os_version)-$(arch).tbz: $(plists) $(build)/.stripped
cd build && tar -cjf ../$@ $(alldirs)
rootfs-hhl-$(os_version)-$(arch).txz: $(plists) $(build)/.stripped
cd build && tar -cJf ../$@ $(alldirs)
clean:
$(MAKE) -C world clean
$(MAKE) -C toolchain clean
rm -rf build/*
rm -rf build/.built
rm -rf build/.skeleton.built
.PHONY: toolchain-archive buildtools smalltools toolsclean buildworld $(dirs) strip

24
config.mk.sample Normal file
View file

@ -0,0 +1,24 @@
# Target architecture, IE the machine that the newly built system will run on.
# Supported targets are:
# i486
# i586
# i686
# x86_64 (most modern Intel and AMD based systems)
# armv7l (earlier Arm SBC's such as RPI and RPI2)
# aarch64 (later Arm SBC's such as RPI3 and RPI4)
# riscv64 (SiFive Unmatched, BeagleV)
arch = x86_64
# Maximum make threads to run concurrently. For some packages on some
# architectures this will be automatically overridden.
makeflags = -j8
# Optional bootstrap packages. HitchHiker ships with BSD paxtar, and it's syntax
# is used rather than GNU tar in certain places. To bootstrap on systems other
# than HitchHiker it is a good idea to set build_pax to 1.
#
# Similarly, GNU awk (gawk) is a build time dependency of Glibc, but HitchHiker
# ships with The One True Awk. By setting build_gawk to 1, we build a temporary
# gawk which will only exist in /toolchain
build_pax = 1
build_gawk = 1

576
distfiles/Makefile Normal file
View file

@ -0,0 +1,576 @@
# Makefile - hhl - /usr/src/distfiles
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
include versions.mk
gnu = https://ftp.gnu.org/gnu
savannah = https://download.savannah.gnu.org/releases
github = https://github.com
sourceforge = https://downloads.sourceforge.net/project
kernel = https://www.kernel.org/pub/linux
skarnet = https://skarnet.org/software
distfiles = \
acl-${acl_version}.tar.gz \
attr-${attr_version}.tar.gz \
autoconf-${autoconf_version}.tar.xz \
automake-${automake_version}.tar.xz \
bc-${bc_version}.tar.xz \
binutils-${binutils_version}.tar.xz \
bison-${bison_version}.tar.xz \
busybox-${busybox_version}.tar.bz2 \
bzip2-${bzip2_version}.tar.gz \
cmake-$(cmake_version).tar.gz \
coreutils-${coreutils_version}.tar.xz \
dash-${dash_version}.tar.gz \
dbus-${dbus_version}.tar.gz \
diffutils-${diffutils_version}.tar.xz \
dhcpcd-${dhcpcd_version}.tar.xz \
e2fsprogs-${e2fsprogs_version}.tar.gz \
elfutils-${elfutils_version}.tar.bz2 \
eudev-${eudev_version}.tar.gz \
execline-${execline_version}.tar.gz \
expat-${expat_version}.tar.xz \
file-${file_version}.tar.gz \
findutils-${findutils_version}.tar.xz \
flex-${flex_version}.tar.gz \
gawk-${gawk_version}.tar.xz \
gcc-${gcc_version}.tar.xz \
gdbm-${gdbm_version}.tar.gz \
gettext-${gettext_version}.tar.xz \
gettext-tiny-${gettext-tiny_version}.tar.xz \
glibc-${glibc_version}.tar.xz \
gmp-${gmp_version}.tar.xz \
gperf-${gperf_version}.tar.gz \
grep-${grep_version}.tar.xz \
groff-${groff_version}.tar.gz \
grub-${grub_version}.tar.xz \
gzip-${gzip_version}.tar.xz \
iana-etc-${iana-etc_version}.tar.bz2 \
inetutils-${inetutils_version}.tar.xz \
intltool-${intltool_version}.tar.gz \
iproute2-${iproute2_version}.tar.xz \
kbd-${kbd_version}.tar.xz \
kmod-${kmod_version}.tar.xz \
less-${less_version}.tar.gz \
libcap-${libcap_version}.tar.xz \
libedit-20191231-3.1.tar.gz \
libelf-compat-${libelf-compat_version}.tar.xz \
libffi-${libffi_version}.tar.gz \
libnl-${libnl_version}.tar.gz \
libressl-${libressl_version}.tar.gz \
libtool-${libtool_version}.tar.xz \
libz-${libz_version}.tar.gz \
linux-${linux_version}.tar.xz \
m4-${m4_version}.tar.xz \
make-${make_version}.tar.gz \
mandoc-${mandoc_version}.tar.gz \
man-pages-${man-pages_version}.tar.xz \
meson-${meson_version}.tar.gz \
mpc-${mpc_version}.tar.gz \
mpfr-${mpfr_version}.tar.xz \
ncurses-${ncurses_version}.tar.gz \
netbsd-curses-${netbsd-curses_version}.tar.xz \
ninja-${ninja_version}.tar.gz \
patch-${patch_version}.tar.xz \
pcre-${pcre_version}.tar.bz2 \
perl-${perl_version}.tar.xz \
perl-cross-$(per-cross_version).tar.gz \
pkg-config-${pkg-config_version}.tar.gz \
pkgsrc-${pkgsrc_version}.tar.xz \
procps-ng-${procps-ng_version}.tar.xz \
psmisc-${psmisc_version}.tar.xz \
Python-${python_version}.tar.xz \
python-${python_version}-docs-html.tar.bz2 \
s6-${s6_version}.tar.gz \
s6-linux-init-${s6-linux-init_version}.tar.gz \
sed-${sed_version}.tar.xz \
shadow-${shadow_version}.tar.xz \
skalibs-${skalibs_version}.tar.gz \
sysklogd-${sysklogd_version}.tar.gz \
tar-${tar_version}.tar.xz \
texinfo-${texinfo_version}.tar.xz \
tzdata${tzdata_version}.tar.gz \
u-boot-$(u-boot_version).tar.bz2 \
udev-lfs-${udev-lfs_version}.tar.xz \
util-linux-${util-linux_version}.tar.xz \
vim-${vim_version}.tar.gz \
wget-${wget_version}.tar.gz \
wireless-tools/wireless_tools.${wireless_tools_version}.tar.gz \
wpa_supplicant-${wpa_supplicant_version}.tar.gz \
XML-Parser-${XML-Parser_version}.tar.gz \
xz-${xz_version}.tar.xz \
zsh-${zsh_version}.tar.xz \
zstd-${zstd_version}.tar.gz
all: ${distfiles}
acl: acl-${acl_version}.tar.gz
acl-${acl_version}.tar.gz:
wget -c ${savannah}/acl/$@
attr: attr-${attr_version}.tar.gz
attr-${attr_version}.tar.gz:
wget -c ${savannah}/attr/$@
autoconf: autoconf-${autoconf_version}.tar.xz
autoconf-${autoconf_version}.tar.xz:
wget -c ${gnu}/autoconf/$@
automake: automake-${automake_version}.tar.xz
automake-${automake_version}.tar.xz:
wget -c ${gnu}/automake/$@
bc: bc-${bc_version}.tar.xz
bc-${bc_version}.tar.xz:
wget -c ${github}/gavinhoward/bc/releases/download/${bc_version}/$@
binutils: binutils-${binutils_version}.tar.xz
binutils-${binutils_version}.tar.xz:
wget -c ${gnu}/binutils/$@
bison: bison-${bison_version}.tar.xz
bison-${bison_version}.tar.xz:
wget -c ${gnu}/bison/$@
busybox: busybox-${busybox_version}.tar.bz2
busybox-${busybox_version}.tar.bz2:
wget -c https://busybox.net/downloads/$@
bzip2: bzip2-${bzip2_version}.tar.gz
bzip2-${bzip2_version}.tar.gz:
wget -c https://www.sourceware.org/pub/bzip2/$@
cmake: cmake-$(cmake_version).tar.gz
cmake-$(cmake_version).tar.gz:
wget -c https://cmake.org/files/v3.18/$@
coreutils: coreutils-${coreutils_version}.tar.xz
coreutils-${coreutils_version}.tar.xz:
wget -c ${gnu}/coreutils/$@
dash: dash-${dash_version}.tar.gz
dash-${dash_version}.tar.gz:
wget -c https://git.kernel.org/pub/scm/utils/dash/dash.git/snapshot/$@
dbus: dbus-${dbus_version}.tar.gz
dbus-${dbus_version}.tar.gz:
wget -c https://dbus.freedesktop.org/releases/dbus/$@
diffutils: diffutils-${diffutils_version}.tar.xz
diffutils-${diffutils_version}.tar.xz:
wget -c ${gnu}/diffutils/$@
dhcpcd: dhcpcd-${dhcpcd_version}.tar.xz
dhcpcd-${dhcpcd_version}.tar.xz:
wget -c https://roy.marples.name/downloads/dhcpcd/$@
e2fsprogs: e2fsprogs-$(e2fsprogs_version).tar.xz
e2fsprogs-$(e2fsprogs_version).tar.xz:
wget -c $(kernel)/kernel/people/tytso/e2fsprogs/v$(e2fsprogs_version)/$@
elfutils: elfutils-${elfutils_version}.tar.bz2
elfutils-${elfutils_version}.tar.bz2:
wget -c https://sourceware.org/ftp/elfutils/${elfutils_version}/$@
eudev: eudev-${eudev_version}.tar.gz
eudev-${eudev_version}.tar.gz:
wget -c https://dev.gentoo.org/~blueness/eudev/$@
execline: execline-{execline_version}.tar.gz
execline-${execline_version}.tar.gz:
wget -c ${skarnet}/execline/$@
expat: expat-${expat_version}.tar.xz
expat-${expat_version}.tar.xz:
wget -c $(github)/libexpat/libexpat/releases/download/R_2_2_10/$@
file: file-${file_version}.tar.gz
file-${file_version}.tar.gz:
wget -c ftp://ftp.astron.com/pub/file/$@
findutils: findutils-${findutils_version}.tar.xz
findutils-${findutils_version}.tar.xz:
wget -c ${gnu}/findutils/$@
flex: flex-${flex_version}.tar.gz
flex-${flex_version}.tar.gz:
wget -c ${github}/westes/flex/releases/download/v${flex_version}/$@
gawk: gawk-${gawk_version}.tar.xz
gawk-${gawk_version}.tar.xz:
wget -c ${gnu}/gawk/$@
gcc: gcc-${gcc_version}.tar.xz
gcc-${gcc_version}.tar.xz:
wget -c ${gnu}/gcc/gcc-${gcc_version}/$@
gdbm: gdbm-${gdbm_version}.tar.gz
gdbm-${gdbm_version}.tar.gz:
wget -c ${gnu}/gdbm/$@
gettext: gettext-${gettext_version}.tar.xz
gettext-${gettext_version}.tar.xz:
wget -c ${gnu}/gettext/$@
gettext-tiny: gettext-tiny-${gettext-tiny_version}.tar.xz
gettext-tiny-${gettext-tiny_version}.tar.xz:
wget -c http://ftp.barfooze.de/pub/sabotage/tarballs/$@
glibc: glibc-${glibc_version}.tar.xz
glibc-${glibc_version}.tar.xz:
wget -c ${gnu}/glibc/$@
gmp: gmp-${gmp_version}.tar.xz
gmp-${gmp_version}.tar.xz:
wget -c ${gnu}/gmp/$@
gperf: gperf-${gperf_version}.tar.gz
gperf-${gperf_version}.tar.gz:
wget -c ${gnu}/gperf/$@
grep: grep-${grep_version}.tar.xz
grep-${grep_version}.tar.xz:
wget -c ${gnu}/grep/$@
groff: groff-${groff_version}.tar.gz
groff-${groff_version}.tar.gz:
wget -c ${gnu}/groff/$@
grub: grub-${grub_version}.tar.xz
grub-${grub_version}.tar.xz:
wget -c ${gnu}/grub/$@
gzip: gzip-${gzip_version}.tar.xz
gzip-${gzip_version}.tar.xz:
wget -c ${gnu}/gzip/$@
iana-etc: iana-etc-${iana-etc_version}.tar.gz
iana-etc-${iana-etc_version}.tar.gz:
wget -c $(github)/Mic92/iana-etc/releases/download/$(iana-etc_version)/$@
inetutils: inetutils-${inetutils_version}.tar.xz
inetutils-${inetutils_version}.tar.xz:
wget -c ${gnu}/inetutils/$@
intltool: intltool-${intltool_version}.tar.gz
intltool-${intltool_version}.tar.gz:
wget -c https://launchpad.net/intltool/trunk/${intltool_version}/+download/$@
iproute2: iproute2-${iproute2_version}.tar.xz
iproute2-${iproute2_version}.tar.xz:
wget -c ${kernel}/utils/net/iproute2/$@
kbd: kbd-${kbd_version}.tar.xz
kbd-${kbd_version}.tar.xz:
wget -c ${kernel}/utils/kbd/$@
kmod: kmod-${kmod_version}.tar.xz
kmod-${kmod_version}.tar.xz:
wget -c ${kernel}/utils/kernel/kmod/$@
less: less-${less_version}.tar.gz
less-${less_version}.tar.gz:
wget -c http://www.greenwoodsoftware.com/less/$@
libcap: libcap-${libcap_version}.tar.xz
libcap-${libcap_version}.tar.xz:
wget -c ${kernel}/libs/security/linux-privs/libcap2/$@
libedit: libedit-${libedit_version}.tar.gz
libedit-${libedit_version}.tar.gz:
wget -c https://www.thrysoee.dk/editline/$@
libelf-compat: libelf-compat-${libelf-compat_version}.tar.xz
libelf-compat-${libelf-compat_version}.tar.xz:
wget -c https://hitchhiker-linux.org/pub/src/external/$@
libffi: libffi-${libffi_version}.tar.gz
libffi-${libffi_version}.tar.gz:
wget -c ftp://sourceware.org/pub/libffi/$@
libnl: libnl-${libnl_version}.tar.gz
libnl-${libnl_version}.tar.gz:
wget -c ${github}/thom311/libnl/releases/download/libnl3_5_0/$@
libressl: libressl-${libressl_version}.tar.gz
libressl-${libressl_version}.tar.gz:
wget -c https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/$@
libtool: libtool-${libtool_version}.tar.xz
libtool-${libtool_version}.tar.xz:
wget -c ${gnu}/libtool/$@
libz: libz-${libz_version}.tar.gz
libz-${libz_version}.tar.gz:
wget -c https://sortix.org/libz/release/$@
linux: linux-${linux_version}.tar.xz
linux-${linux_version}.tar.xz:
wget -c ${kernel}/kernel/v5.x/$@
linux_rpi: linux_rpi-${linux_rpi_version}.tar.xz
linux_rpi-${linux_rpi_version}.tar.xz:
wget -c http://hitchhiker-linux.org/pub/src/external/$@
m4: m4-${m4_version}.tar.xz
m4-${m4_version}.tar.xz:
wget -c ${gnu}/m4/$@
make: make-${make_version}.tar.gz
make-${make_version}.tar.gz:
wget -c ${gnu}/make/$@
man-pages: man-pages-${man-pages_version}.tar.xz
man-pages-${man-pages_version}.tar.xz:
wget -c ${kernel}/docs/man-pages/$@
mandoc: mandoc-${mandoc_version}.tar.gz
mandoc-${mandoc_version}.tar.gz:
wget -c https://mandoc.bsd.lv/snapshots/$@
meson: meson-${meson_version}.tar.gz
meson-${meson_version}.tar.gz:
wget -c ${github}/mesonbuild/meson/releases/download/${meson_version}/$@
mpc: mpc-${mpc_version}.tar.gz
mpc-${mpc_version}.tar.gz:
wget -c ${gnu}/mpc/$@
mpfr: mpfr-${mpfr_version}.tar.xz
mpfr-${mpfr_version}.tar.xz:
wget -c http://www.mpfr.org/mpfr-${mpfr_version}/$@
ncurses: ncurses-${ncurses_version}.tar.gz
ncurses-${ncurses_version}.tar.gz:
wget -c ${gnu}/ncurses/$@
netbsd-curses: netbsd-curses-${netbsd-curses_version}.tar.xz
netbsd-curses-${netbsd-curses_version}.tar.xz:
wget -c http://ftp.barfooze.de/pub/sabotage/tarballs/$@
ninja: ninja-${ninja_version}.tar.gz
ninja-${ninja_version}.tar.gz:
wget -c ${github}/ninja-build/ninja/archive/v${ninja_version}/$@
patch: patch-${patch_version}.tar.xz
patch-${patch_version}.tar.xz:
wget -c ${gnu}/patch/$@
pcre: pcre-${pcre_version}.tar.bz2
pcre-${pcre_version}.tar.bz2:
wget -c https://ftp.pcre.org/pub/pcre/$@
perl: perl-${perl_version}.tar.xz
perl-${perl_version}.tar.xz:
wget -c https://www.cpan.org/src/5.0/$@
perl-cross: perl-cross-$(perl-cross_version).tar.gz
perl-cross-$(perl-cross_version).tar.gz:
wget -c $(github)/arsv/perl-cross/releases/download/$(perl-cross_version)/$@
pkg-config: pkg-config-${pkg-config_version}.tar.gz
pkg-config-${pkg-config_version}.tar.gz:
wget -c https://pkg-config.freedesktop.org/releases/$@
pkgsrc: pkgsrc-${pkgsrc_version}.tar.xz
pkgsrc-${pkgsrc_version}.tar.xz:
wget -c http://cdn.netbsd.org/pub/pkgsrc/pkgsrc-${pkgsrc_version}/$@
procps-ng: procps-ng-${procps-ng_version}.tar.xz
procps-ng-${procps-ng_version}.tar.xz:
wget -c https://sourceforge.net/projects/procps-ng/files/Production/$@
psmisc: psmisc-${psmisc_version}.tar.xz
psmisc-${psmisc_version}.tar.xz:
wget -c https://sourceforge.net/projects/psmisc/files/psmisc/$@
python: Python-${python_version}.tar.xz
Python-${python_version}.tar.xz:
wget -c https://www.python.org/ftp/python/${python_version}/$@
python-docs: python-${python_version}-docs-html.tar.bz2
python-${python_version}-docs-html.tar.bz2:
wget -c https://www.python.org/ftp/python/doc/${python_version}/$@
s6: s6-${s6_version}.tar.gz
s6-${s6_version}.tar.gz:
wget -c ${skarnet}/s6/$@
s6-linux-init: s6-linux-init-${s6-linux-init_version}.tar.gz
s6-linux-init-${s6-linux-init_version}.tar.gz:
wget -c ${skarnet}/s6-linux-init/$@
s6-rc: s6-rc-${s6-rc_version}.tar.gz
s6-rc-${s6-rc_version}.tar.gz:
wget -c ${skarnet}/s6-rc/$@
sed: sed-${sed_version}.tar.xz
sed-${sed_version}.tar.xz:
wget -c ${gnu}/sed/$@
shadow: shadow-${shadow_version}.tar.xz
shadow-${shadow_version}.tar.xz:
wget -c ${github}/shadow-maint/shadow/releases/download/${shadow_version}/$@
skalibs: skalibs-${skalibs_version}.tar.gz
skalibs-${skalibs_version}.tar.gz:
wget -c ${skarnet}/skalibs/$@
sysklogd: sysklogd-${sysklogd_version}.tar.gz
sysklogd-${sysklogd_version}.tar.gz:
wget -c http://www.infodrom.org/projects/sysklogd/download/$@
tar: tar-${tar_version}.tar.xz
tar-${tar_version}.tar.xz:
wget -c ${gnu}/tar/$@
texinfo: texinfo-${texinfo_version}.tar.xz
texinfo-${texinfo_version}.tar.xz:
wget -c ${gnu}/texinfo/$@
tzdata: tzdata${tzdata_version}.tar.gz
tzdata${tzdata_version}.tar.gz:
wget -c https://www.iana.org/time-zones/repository/releases/$@
u-boot: u-boot-$(u-boot_version).tar.bz2
wget -c ftp://ftp.denx.de/pub/u-boot/$@
udev-lfs: udev-lfs-${udev-lfs_version}.tar.xz
udev-lfs-${udev-lfs_version}.tar.xz:
wget -c http://anduin.linuxfromscratch.org/LFS/$@
util-linux: util-linux-${util-linux_version}.tar.xz
util-linux-${util-linux_version}.tar.xz:
wget -c ${kernel}/utils/util-linux/v2.36/$@
vim: vim-${vim_version}.tar.gz
vim-${vim_version}.tar.gz:
wget -c http://anduin.linuxfromscratch.org/LFS/$@
wget: wget-${wget_version}.tar.gz
wget-${wget_version}.tar.gz:
wget -c ${gnu}/wget/$@
wireless_tools: wireless_tools.${wireless_tools_version}.tar.gz
wireless_tools.${wireless_tools_version}.tar.gz:
wget -c https://hewlettpackard.github.io/wireless-tools/$@
wpa_supplicant: wpa_supplicant-${wpa_supplicant_version}.tar.gz
wpa_supplicant-${wpa_supplicant_version}.tar.gz:
wget -c https://w1.fi/releases/$@
XML-Parser: XML-Parser-${XML-Parser_version}.tar.gz
XML-Parser-${XML-Parser_version}.tar.gz:
wget -c https://cpan.metacpan.org/authors/id/T/TO/TODDR/$@
xz: xz-${xz_version}.tar.xz
xz-${xz_version}.tar.xz:
wget -c http://tukaani.org/xz/$@
zsh: zsh-${zsh_version}.tar.xz
zsh-${zsh_version}.tar.xz:
wget -c http://www.zsh.org/pub/$@
zsh-doc: zsh-${zsh_version}-doc.tar.xz
zsh-${zsh_version}-doc.tar.xz:
wget -c http://www.zsh.org/pub/$@
zstd: zstd-${zstd_version}.tar.gz
zstd-${zstd_version}.tar.gz:
wget -c ${github}/facebook/zstd/releases/download/v${zstd_version}/$@
.PHONY: all

View file

@ -0,0 +1,54 @@
# create-plist.mk - hhl - /usr/include/hhl
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
pkgdbdir = var/db/pkg/${pkgname}
dirs = \
bin \
boot \
dev \
home \
lib \
media \
mnt \
opt \
proc \
root \
run \
sbin \
srv \
sys \
sys \
tmp \
usr \
var
install: ${pkgdbdir}/plist ${pkgdbdir}/etc.plist
${pkgdbdir}/plist:
if [ ! -d ${pkgdbdir} ] ; then install -d ${pkgdbdir} ; fi
find usr/src -name '.built' -exec rm -rf {} + || true
find usr/src -name '.installed' -exec rm -rf {} + || true
find ${dirs} -type f | while read f ; \
do echo file\|$$(stat -c %n\|%a\|%u:%g $${f})\|$$(file -b -e elf $${f}) ; \
done > $@.in
find ${dirs} -type d | while read d ; \
do echo directory\|$$(stat -c %n\|%a\|%u:%g $${d}) ; \
done >> $@.in
find ${dirs} -type c | while read c ; \
do echo device\|$${c}\|$$(file -b $${c}) ; \
done >> $@.in
mv -v $@.in $@
${pkgdbdir}/etc.plist:
if [ ! -d ${pkgdbdir} ] ; then install -d ${pkgdbdir} ; fi
find etc -type f | while read f ; \
do echo file\|$$(stat -c %n\|%a\|%u:%g $${f})\|$$(file -b -e elf $${f}) ; \
done > $@.in
find etc -type d | while read d ; \
do echo directory\|$$(stat -c %n\|%a\|%u:%g $${d}) ; \
done >> $@.in
mv -v $@.in $@
.PHONY: install

4
include/mk/hhl.colors.mk Normal file
View file

@ -0,0 +1,4 @@
export grn = $(shell tput setaf 2)
export red = $(shell tput setaf 1)
export reset = $(shell tput sgr0)
export colormk = ""

View file

@ -0,0 +1,6 @@
# hhl.cprog.bsd.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
ldflags += -isystem ../../lib/libbsd/include/
libs += ../../lib/libbsd/libbsd.a
include hhl.cprog.mk

71
include/mk/hhl.cprog.mk Normal file
View file

@ -0,0 +1,71 @@
# hhl.cprog.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
internal = true
src ?= ./src
objdir ?= ${global_objdir}/${progname}
srcs += $(wildcard ${src}/*.c)
objs += $(patsubst ${src}/%.c,${objdir}/%.o,${srcs})
hdrs += $(wildcard ${src}/*.h)
o_lvl ?= -O2
include world.mk
include hhl.doc.mk
include hhl.locale.mk
include hhl.colors.mk
CC = $(tgt)-gcc
AR = $(tgt)-ar
RANLIB = $(tgt)-ranlib
BLD_CC ?= cc
ifeq (${sbin},1)
bindir = ${sbindir}
binprog = ${sbindir}/${progname}
else
binprog = ${bindir}/${progname}
endif
ldflags += -I${src}
cflags += ${o_lvl}
cflags += --sysroot=$(DESTDIR)
ifeq (${hhl_source},1)
cflags += -std=c99
cflags += -Wall
cflags += -pedantic
endif
VPATH += ${src}
install: ${binprog} ${docs} ${locales} | ${binlinks} ${manlinks}
$(info $(grn)=== Finished building $(progname) ===$(reset))
ifeq (${onestage},true)
${binprog}: ${srcs} ${hdrs} | ${bindir}
$(info $(grn)=== Building for ${progname} ===$(reset))
${pre_build}
$(CC) ${cppflags} ${cflags} ${ldflags} -o $@ ${srcs} ${libs}
${post_build}
else
${objdir}:
$(info $(grn)=== Building for $(progname) ===$(reset))
${pre_build}
install -d ${objdir}
${binprog}: ${objs} | ${bindir}
$(CC) ${cflags} -o $@ ${objs} ${libs}
${post_build}
${objdir}/%.o: ${src}/%.c ${hdrs} | ${objdir}
$(CC) ${cppflags} ${cflags} ${ldflags} -o $@ -c $<
endif
${binlinks}: ${binprog}
ln -sf ${progname} $@
${bindir}:
install -d $@
clean:
rm -rf ${objs}
.PHONY: install clean

View file

@ -0,0 +1,13 @@
# hhl.cprog.bsd.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
cppflags += -DHAVE_CONFIG_H
ldflags += -I../../../include/openbsd
ldflags += -I../../lib/liboutil/include
ldflags += -include compat.h
ldflags += -include config.h
libs += -L../../lib/libopenbsd
libs += -L../../lib/liboutil
libs += -loutil
libs += -lopenbsd
include hhl.cprog.mk

View file

@ -0,0 +1,15 @@
# hhl.cprog.sbase.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
onestage ?= true
cppflags += -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_FILE_OFFSET_BITS=64
cflags += -std=c99 -Wall -pedantic
ldflags += -I../../../include
libs += -L../../lib/libsbutil
libs += -L../../lib/libutf
libs += -lsbutil
libs += -lutf
include hhl.cprog.mk
${sbase_libs}:
$(MAKE) -C ../../lib/libutil ../../lib/libutf

View file

@ -0,0 +1,13 @@
# hhl.cprog.sbase.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
include hhl.cprog.mk
cppflags += -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=700 -D_GNU_SOURCE
cflags += -std=c99 -Wall -Wextra
ldflags += -I../../../include
libs += -L../../lib/libubase
libs += -lubase
libs += -lcrypt
${sbase_libs}:
$(MAKE) -C ../../lib/libutil ../../lib/libutf

76
include/mk/hhl.doc.mk Normal file
View file

@ -0,0 +1,76 @@
# hhl.doc.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
man1srcs ?= $(wildcard man/*.1)
man2srcs ?= $(wildcard man/*.2)
man3srcs ?= $(wildcard man/*.3)
man4srcs ?= $(wildcard man/*.4)
man5srcs ?= $(wildcard man/*.5)
man6srcs ?= $(wildcard man/*.6)
man7srcs ?= $(wildcard man/*.7)
man8srcs ?= $(wildcard man/*.8)
man1s ?= $(patsubst man/%.1,${man1dir}/%.1,${man1srcs})
man2s ?= $(patsubst man/%.2,${man2dir}/%.2,${man2srcs})
man3s ?= $(patsubst man/%.3,${man3dir}/%.3,${man3srcs})
man4s ?= $(patsubst man/%.4,${man4dir}/%.4,${man4srcs})
man5s ?= $(patsubst man/%.5,${man5dir}/%.5,${man5srcs})
man6s ?= $(patsubst man/%.6,${man6dir}/%.6,${man6srcs})
man7s ?= $(patsubst man/%.7,${man7dir}/%.7,${man7srcs})
man8s ?= $(patsubst man/%.8,${man8dir}/%.8,${man8srcs})
mans = ${man1s} ${man2s} ${man3s} ${man4s} ${man5s} ${man6s} \
${man7s} ${man8s}
infosrcs ?= $(wildcard info/*.info)
infos ?= $(patsubst info/%.info,${infodir}/%.info,${infosrcs})
progdocdir = ${docdir}/${progname}
htmlsrcs ?= $(wildcard doc/*.html)
html = $(patsubst doc/%.html,${progdocdir}/%.html,${htmlsrcs})
txtsrcs ?= $(wildcard doc/*.txt)
txt = $(patsubst doc/%.txt,${progdocdir}/%.txt,${txtsrcs})
pdfsrcs ?= $(wildcard doc/*.pdf)
pdf = $(patsubst doc/%.pdf,${progdocdir}/%.pdf,${pdfsrcs})
docs = ${mans} ${infos} ${html} ${txt} ${pdf}
VPATH += ./man
VPATH += ./doc
${man1dir}/%.1: man/%.1
install -Dm644 $< $@
${man2dir}/%.2: man/%.2
install -Dm644 $< $@
${man3dir}/%.3: man/%.3
install -Dm644 $< $@
${man4dir}/%.4: man/%.4
install -Dm644 $< $@
${man5dir}/%.5: man/%.5
install -Dm644 $< $@
${man6dir}/%.6: man/%.6
install -Dm644 $< $@
${man7dir}/%.7: man/%.7
install -Dm644 $< $@
${man8dir}/%.8: man/%.8
install -Dm644 $< $@
${manlinks}:
ln -sf $(shell echo $@ | sed 's;@; ;')
${infodir}/%.info: info/%.info
install -Dm644 $< $@
${progdocdir}/%.html: doc/%.html
install -Dm644 $< $@
${progdocdir}/%.txt: doc/%.txt
install -Dm644 $< $@
${progdocdir}/%.pdf: doc/%.pdf
install -Dm644 $< $@

17
include/mk/hhl.lib.mk Normal file
View file

@ -0,0 +1,17 @@
# hhl.staticlib.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
src ?= ./src
include world.mk
include hhl.colors.mk
CC = $(tgt)-gcc
AR = $(tgt)-ar
RANLIB = $(tgt)-ranlib
VPATH += ${src}
cflags += --sysroot=$(DESTDIR)
srcs ?= $(wildcard ${src}/*.c)
objs ?= $(patsubst ${src}/%.c,${objdir}/%.o,${srcs})
ldflags += -I. -I${src}

13
include/mk/hhl.locale.mk Normal file
View file

@ -0,0 +1,13 @@
# hhl.doc.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
posrc = $(wildcard locale/*.po)
localedirs = $(patsubst locale/%.po,${localedir}/%/LC_MESSAGES,${posrc})
locales = $(patsubst locale/%.po,${localedir}/%/LC_MESSAGES/${progname}.mo,${posrc})
${localedir}/%/LC_MESSAGES/${progname}.mo: locale/%.po | ${localedir}/%/LC_MESSAGES
msgfmt $< -o $@
${localedirs}:
install -d $@

42
include/mk/hhl.script.mk Normal file
View file

@ -0,0 +1,42 @@
# hhl.script.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
internal = true
src ?= src/${progname}.sh
include world.mk
include hhl.doc.mk
include hhl.colors.mk
ifneq (${sbin},true)
installdirs = ${bindir}
binprog = ${bindir}/${progname}
else
installdirs = ${sbindir}
binprog = ${sbindir}/${progname}
endif
bins = ${binprog} ${binlinks}
install: ${bins} ${docs}
ifneq (${finish},true)
$(info $(grn)=== Finished building $(progname) ===$(reset))
endif
finish: install ${objdir}/.finished
ifeq (${finish},true)
$(info $(grn)=== Finished building $(progname) ===$(reset))
endif
${binprog}: ${src} ${installdirs}
$(info $(grn)=== Installing ${src} as ${binprog} ===$(reset))
install -Dm755 ${src} $@
${binlinks}: ${binprog}
ln -f $< $@
${objdir}:
install -d ${objdir}
${installdirs}:
install -d $@
.PHONY: install

View file

@ -0,0 +1,40 @@
# hhl.staticlib.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
objdir ?= $(global_objdir)/lib$(libname)_shared
version = $(major).$(minor)
libbase = lib$(libname).so
libmajor = $(libbase).$(major)
libminor = $(libmajor).$(minor)
include hhl.lib.mk
cflags += -fpic
cflags += -fPIC
liblinks = $(libdir)/$(libmajor) $(libdir)/$(libbase)
install: $(libdir)/$(libminor) | $(liblinks)
@echo -e "$(grn)=== Finished Building $(libminor) ===$(unset)"
all: $(libminor)
$(libdir)/$(libminor): $(libminor) | $(libdir)
install -m755 $< $@
$(liblinks): $(libdir)/$(libminor)
ln -s $(libminor) $@
$(libminor): $(objs)
$(CC) -shared -Wl,-soname -Wl,$(libmajor) -o $@ $(objs)
rm -f $(libmajor)
$(objdir)/%.o: $(src)/%.c | $(objdir)
$(CC) $(cppflags) $(cflags) $(ldflags) -o $@ -c $<
$(objdir):
@echo -e "$(grn)=== Building for $(libname) ===$(unset)"
install -d $(objdir)
clean:
@echo -e "$(grn)=== Cleaning for $(libname) ===$(unset)"
rm -rf $(objdir) $(libminor) $(libmajor)
.PHONY: all clean

View file

@ -0,0 +1,31 @@
# hhl.staticlib.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
internal = true
objdir ?= $(global_objdir)/lib$(libname)_static
staticlib = lib$(libname).a
include hhl.lib.mk
all: $(staticlib)
$(info $(grn)=== Finished Building $(staticlib) ===$(reset))
$(staticlib): $(objs)
$(AR) rc $@ $^
$(RANLIB) $@
$(objdir)/%.o: $(src)/%.c | $(objdir)
$(CC) $(cppflags) $(cflags) $(ldflags) -o $@ -c $<
$(objdir):
$(info $(grn)=== Building for $(staticlib) ===$(reset))
install -d $(objdir)
install: $(libdir)/$(staticlib)
$(libdir)/$(staticlib): $(staticlib) | $(libdir)
install $< $@
clean:
rm -rf $(objdir) $(staticlib)
.PHONY: all clean

View file

@ -0,0 +1,15 @@
# hhl.staticlib.sbase.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
doinstall = false
src = $(shell find src/ -name '*.c')
include hhl.staticlib.mk
cppflags += -D__LIBC__
cppflags += -DHAVE_CONFIG_H
cflags += -Werror=deprecated-declarations
cflags += -Werror-implicit-function-declaration
ldflags += -I../../include/openbsd
ldflags += -I./include
ldflags += -I./include/hidden
ldflags += -include config.h
ldflags += -include namespace.h

View file

@ -0,0 +1,11 @@
# hhl.staticlib.sbase.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
doinstall = false
include hhl.staticlib.mk
cppflags += -D_DEFAULT_SOURCE
cppflags += -D_BSD_SOURCE
cppflags += -D_XOPEN_SOURCE=700
cppflags += -D_FILE_OFFSET_BITS=64
cflags += -std=c99 -Wall -pedantic
ldflags += -I${basedir}/include

View file

@ -0,0 +1,8 @@
# hhl.staticlib.sbase.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
doinstall = false
include hhl.staticlib.mk
cppflags += -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=700 -D_GNU_SOURCE
cflags += -std=c99 -Wall -Wextra
ldflags += -I../../../include

11
include/mk/ports.mk Normal file
View file

@ -0,0 +1,11 @@
# ports.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
install_prefix ?= /usr/local
confdir ?= ${install_prefix}/etc
localstatedir ?= ${prefix}/var
logdir ?= ${localstatedir}/log
export PATH = /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
include src-config.mk

113
include/mk/src-config.mk Normal file
View file

@ -0,0 +1,113 @@
# src-config.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
include versions.mk
os_name = Hitch Hiker Linux
os_abbrev = hhl
os_version = 2021q2
basedir = /src
include $(basedir)/config.mk
arch ?= $(shell uname -m)
bld_arch ?= $(shell uname -m)
ifndef colormk
include hhl.colors.mk
endif
ifeq ($(filter armv7l aarch64, $(arch)), $(arch))
tgt = ${arch}-unknown-linux-gnueabi
else
tgt = ${arch}-unknown-linux-gnu
endif
ifeq ($(filter armv7l aarch64, $(bld_arch)), $(bld_arch))
bld = $(bld_arch)-unknown-linux-gnueabi
else
bld = $(bld_arch)-unknown-linux-gnu
endif
exec_prefix ?= ${DESTDIR}${install_prefix}
bindir ?= ${exec_prefix}/bin
sbindir ?= ${exec_prefix}/sbin
libdir ?= ${DESTDIR}${install_prefix}/lib
libexecdir ?= ${DESTDIR}${install_prefix}/libexec
includedir ?= ${DESTDIR}${install_prefix}/include
sharedir ?= ${DESTDIR}${install_prefix}/share
docdir ?= ${sharedir}/doc
infodir ?= ${sharedir}/info
localedir ?= ${sharedir}/locale
mandir ?= ${sharedir}/man
man1dir = ${mandir}/man1
man2dir = ${mandir}/man2
man3dir = ${mandir}/man3
man4dir = ${mandir}/man4
man5dir = ${mandir}/man5
man6dir = ${mandir}/man6
man7dir = ${mandir}/man7
man8dir = ${mandir}/man8
distdir = ${basedir}/distfiles
toolchain = ${basedir}/toolchain
world = ${basedir}/world
build = ${basedir}/build
distfullname ?= ${distname}-${${distname}_version}
objdirname ?= ${distfullname}
distext ?= xz
distfile ?= ${distfullname}.tar.${distext}
distlocal ?= ${distdir}/${distfile}
wkgdir = $(shell pwd)
srcdir ?= ${global_srcdir}/${distfullname}
export LC_ALL = POSIX
_dhcpcd ?= 1
_wireless ?= 1
use_configure ?= 1
no_objdir ?= 0
ifeq (${use_configure},1)
config_tgt ?= ${objdir}/Makefile
config_deps += ${srcdir}/.dirstamp
config_opts ?= --prefix=${install_prefix}
config_cmd ?= cd ${objdir} && ${srcdir}/configure ${config_opts}
build_deps ?= ${config_tgt}
else
build_deps ?= ${config_deps}
build_deps += ${srcdir}/.dirstamp
endif
build_cmd ?= $(MAKE) ${makeflags} -C ${objdir}
install_deps ?= ${objdir}/.built
install_cmd ?= $(MAKE) ${makeflags} -C ${objdir} install
all_deps ?= ${objdir}/.built
ifndef internal
stamps ?= ${config_tgt} ${objdir}/.built ${objdir}/.installed
endif
ifeq (${no_objdir},1)
objdir = ${srcdir}
else
pre_dirs += ${objdir}
endif
ifdef patches
config_deps += ${patches} ${srcdir}/.patched
endif
stripdirs += ${build}/lib
stripdirs += ${build}/usr/lib
stripdirs += ${build}/bin
stripdirs += ${build}/sbin
stripdirs += ${build}/bin
stripdirs += ${build}/sbin
stripdirs += ${build}/usr/bin
stripdirs += ${build}/usr/sbin
stripdirs += ${build}/usr/bin
stripdirs += ${build}/usr/sbin
${basedir}/config.mk:
cp $(basedir)/config.mk.sample $(basedir)/config.mk
.DEFAULT_GOAL = ${default_goal}

107
include/mk/targets.mk Normal file
View file

@ -0,0 +1,107 @@
# targets.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
ifeq ($(no_objdir),1)
clean_cmd ?= $(MAKE) -C $(srcdir) clean distclean
else
clean_cmd ?= rm -rf $(objdir)
endif
distclean_cmd ?= rm -rf ${objdir} ${srcdir} ${stamps}
ifeq (${distext},gz)
tarflags += -xzf
endif
ifeq (${distext},bz2)
tarflags += -xjf
endif
ifeq (${distext},xz)
tarflags += -xJf
endif
install_cmd ?= $(MAKE) DESTDIR=$(DESTDIR) -C $(objdir) install
all: ${all_deps}
install: ${objdir}/.installed
$(info $(grn)=== $(distfullname) installed ===$(reset))
${objdir}/.installed: ${install_deps}
$(info $(grn)=== $(distfullname) built ===$(reset))
$(info $(grn)=== Installing for $(distfullname) ===$(reset))
$(pre_install)
$(install_cmd)
$(post_install)
touch $@
installclean:
$(MAKE) install clean
$(installdirs):
install -d $@
$(objdir)/.built: $(build_deps) | $(pre_dirs)
$(info $(grn)=== Building for $(distfullname)$(reset))
$(pre_build)
$(build_cmd)
$(post_build)
touch $@
$(config_tgt): $(config_deps) | $(pre_dirs)
$(info $(grn)=== Configuring for $(distfullname) ===$(reset))
$(pre_configure)
$(config_cmd)
$(post_configure)
touch $@
$(srcdir)/.patched: $(patches) $(srcdir)/.dirstamp
$(info $(grn)=== Patching $(srcdir) ===$(reset))
for patch in $(patches) ; do cd $(srcdir) && \
patch -p1 < $(wkgdir)/$${patch} ; done
touch ${srcdir}/.patched
$(srcdir)/.dirstamp: $(distlocal)
$(info $(grn)=== Extracting $(distlocal) ===$(reset))
tar $(tarflags) $(distlocal) -C $(global_srcdir)
touch $@
ifneq (${no_objdir},1)
${objdir}:
install -d $@
endif
$(distlocal):
$(info $(grn)=== Fetching $(distfile) ===$(reset))
$(MAKE) -C $(distdir) $(distfile)
clean:
$(info $(grn)=== Cleaning for $(distname) ===$(reset))
$(clean_cmd)
distclean: clean
${distclean_cmd}
remove-objs:
rm -rf ${objs} || true
remove-srcdir:
rm -rf ${srcdir} || true
remove-objdir:
rm -rf ${objdir} || true
remove: remove-objs remove-srcdir remove-objdir
.PHONY: \
all \
install \
installclean \
finish \
clean \
distclean \
remove-objs \
remove-objdir \
remove-srcdir \
remove

19
include/mk/toolchain.mk Normal file
View file

@ -0,0 +1,19 @@
# toolchain.mk - mk - /usr/include/hhl
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
install_prefix = /toolchain
confdir ?= ${install_prefix}/etc
localstatedir ?= ${install_prefix}/var
logdir ?= ${localstatedir}/log
global_srcdir = /src/build/src
global_objdir = /src/build/obj
export PATH = /toolchain/bin:/usr/bin:/bin:/toolchain/sbin:/usr/sbin:/sbin
default_goal ?= install
include src-config.mk
objdir ?= ${global_objdir}/${objdirname}-toolchain

98
include/mk/versions.mk Normal file
View file

@ -0,0 +1,98 @@
# versions.mk - hhl - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
# package versions - hhl base
acl_version = 2.2.53
attr_version = 2.4.48
autoconf_version = 2.71
automake_version = 1.16.3
bc_version = 3.2.5
binutils_version = 2.36
bison_version = 3.7.5
busybox_version = 1.31.1
bzip2_version = 1.0.8
cmake_version = 3.18.1
coreutils_version = 8.32
curl_version = 7.71.0
dash_version = 0.5.11
dbus_version = 1.12.18
diffutils_version = 3.7
dhcpcd_version = 8.1.6
e2fsprogs_version = 1.46.0
elfutils_version = 0.182
eudev_version = 3.2.9
execline_version = 2.7.0.1
expat_version = 2.2.10
file_version = 5.39
findutils_version = 4.8.0
flex_version = 2.6.4
gawk_version = 5.1.0
gcc_version = 10.2.0
gdbm_version = 1.19
gettext_version = 0.21
gettext-tiny_version = 0.3.2
glibc_version = 2.32
gmp_version = 6.2.1
gperf_version = 3.1
grep_version = 3.6
groff_version = 1.22.4
grub_version = 2.04
gzip_version = 1.10
iana-etc_version = 20210115
inetutils_version = 1.9.4
intltool_version = 0.51.0
iproute2_version = 5.10.0
kbd_version = 2.4.0
kmod_version = 28
less_version = 563
libcap_version = 2.47
libedit_version = 20191231-3.1
libelf-compat_version = 0.152
libffi_version = 3.3
libnl_version = 3.5.0
libressl_version = 3.0.2
libtool_version = 2.4.6
libz_version = 1.2.8.2015.12.26
linux_version = 5.10.15
linux_rpi_version = 5.4.45
m4_version = 1.4.18
make_version = 4.3
man-pages_version = 5.10
mandoc_version = 1.14.5
meson_version = 0.56.2
mpc_version = 1.2.1
mpfr_version = 4.1.0
ncurses_version = 6.2
netbsd-curses_version = 0.3.1
ninja_version = 1.10.2
patch_version = 2.7.6
pcre_version = 8.44
perl_version = 5.32.1
perl-cross_version = 1.3.5
pkg-config_version = 0.29.2
pkgsrc_version = 2020Q2
procps-ng_version = 3.3.16
psmisc_version = 23.3
python_version = 3.9.1
s6_version = 2.10.0.1
s6-linux-init_version = 1.0.6.0
s6-rc_version = 0.5.2.1
sed_version = 4.8
shadow_version = 4.8.1
skalibs_version = 2.10.0.1
sysklogd_version = 1.5.1
tar_version = 1.33
texinfo_version = 6.7
tzdata_version = 2021a
u-boot_version = 2021.01
udev-lfs_version = 20171102
util-linux_version = 2.36.1
vim_version = 8.2.2433
wget_version = 1.21.1
wireless_tools_version = 29
wpa_supplicant_version = 2.9
XML-Parser_version = 2.46
xz_version = 5.2.5
zsh_version = 5.8
zstd_version = 1.4.8

29
include/mk/world.mk Normal file
View file

@ -0,0 +1,29 @@
# world.mk - mk - /usr/include/mk
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
DESTDIR ?= /src/build
export DESTDIR
global_srcdir ?= /src/build/src
global_objdir ?= /src/build/obj
#config_opts += --cache-file=$(global_objdir)/config.cache
install_cmd ?= $(MAKE) $(makeflags) DESTDIR=$(DESTDIR) -C $(objdir) install
install_prefix ?= /usr
confdir ?= ${DESTDIR}/etc
localstatedir ?= ${DESTDIR}/var
logdir ?= ${DESTDIR}/var/log
export PATH = /toolchain/bin:/toolchain/sbin:/usr/bin:/usr/sbin:/bin:/sbin
ifeq (${doinstall},false)
default_goal ?= all
endif
ifndef finish
default_goal ?= install
else
default_goal ?= finish
endif
include src-config.mk
objdir ?= ${global_objdir}/${objdirname}-world

View file

@ -0,0 +1,70 @@
/* $OpenBSD: tftp.h,v 1.8 2006/07/26 16:43:30 deraadt Exp $ */
/* $NetBSD: tftp.h,v 1.3 1994/10/26 00:56:48 cgd Exp $ */
/*
* Copyright (c) 1983 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.
*
* @(#)tftp.h 5.4 (Berkeley) 4/3/91
*/
#include_next <arpa/tftp.h>
#ifndef _COMPAT_TFTP_H_
#define _COMPAT_TFTP_H_
/*
* Trivial File Transfer Protocol (IEN-133)
*/
#ifndef SEGSIZE_MIN
#define SEGSIZE_MIN 8 /* minimal data segment size */
#endif
#ifndef SEGSIZE_MAX
#define SEGSIZE_MAX 65464 /* maximal data segment size */
#endif
/*
* Packet types.
*/
#ifndef QACK
#define OACK 06 /* option acknowledgement */
#endif
/*
* Error codes.
*/
#define EUNDEF 0 /* not defined */
#define ENOTFOUND 1 /* file not found */
#define EACCESS 2 /* access violation */
#define ENOSPACE 3 /* disk full or allocation exceeded */
#define EBADOP 4 /* illegal TFTP operation */
#define EBADID 5 /* unknown transfer ID */
#define EEXISTS 6 /* file already exists */
#define ENOUSER 7 /* no such user */
#define EOPTNEG 8 /* option negotiation failed */
#endif /* !_TFTP_H_ */

82
include/openbsd/blf.h Normal file
View file

@ -0,0 +1,82 @@
/* $OpenBSD: blf.h,v 1.7 2007/03/14 17:59:41 grunk Exp $ */
/*
* Blowfish - a fast block cipher designed by Bruce Schneier
*
* Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
* 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 acknowledgement:
* This product includes software developed by Niels Provos.
* 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.
*/
#ifndef _BLF_H_
#define _BLF_H_
/* Schneier specifies a maximum key length of 56 bytes.
* This ensures that every key bit affects every cipher
* bit. However, the subkeys can hold up to 72 bytes.
* Warning: For normal blowfish encryption only 56 bytes
* of the key affect all cipherbits.
*/
#define BLF_N 16 /* Number of Subkeys */
#define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */
#define BLF_MAXUTILIZED ((BLF_N+2)*4) /* 576 bits */
/* Blowfish context */
typedef struct BlowfishContext {
u_int32_t S[4][256]; /* S-Boxes */
u_int32_t P[BLF_N + 2]; /* Subkeys */
} blf_ctx;
/* Raw access to customized Blowfish
* blf_key is just:
* Blowfish_initstate( state )
* Blowfish_expand0state( state, key, keylen )
*/
void Blowfish_encipher(blf_ctx *, u_int32_t *, u_int32_t *);
void Blowfish_decipher(blf_ctx *, u_int32_t *, u_int32_t *);
void Blowfish_initstate(blf_ctx *);
void Blowfish_expand0state(blf_ctx *, const u_int8_t *, u_int16_t);
void Blowfish_expandstate
(blf_ctx *, const u_int8_t *, u_int16_t, const u_int8_t *, u_int16_t);
/* Standard Blowfish */
void blf_key(blf_ctx *, const u_int8_t *, u_int16_t);
void blf_enc(blf_ctx *, u_int32_t *, u_int16_t);
void blf_dec(blf_ctx *, u_int32_t *, u_int16_t);
void blf_ecb_encrypt(blf_ctx *, u_int8_t *, u_int32_t);
void blf_ecb_decrypt(blf_ctx *, u_int8_t *, u_int32_t);
void blf_cbc_encrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
void blf_cbc_decrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
/* Converts u_int8_t to u_int32_t */
u_int32_t Blowfish_stream2word(const u_int8_t *, u_int16_t , u_int16_t *);
#endif

187
include/openbsd/compat.h Normal file
View file

@ -0,0 +1,187 @@
#ifndef _COMPAT_H_
#define _COMPAT_H_
#define FAIL_INSTEAD_OF_TRYING_FALLBACK
#define __warn_references(x,y)
#ifndef ALIGN
/* XXX: x86_64 only, see sys/arch/$arch/include/_types.h */
#define ALIGNBYTES (sizeof(long) - 1)
#define ALIGN(p) (((size_t)(p) + ALIGNBYTES) &~ ALIGNBYTES)
#endif
#define __UNUSED __attribute__ ((unused))
/* XXX: __unused clashes with musls stat.h
#define __unused __attribute__ ((unused))
*/
#define __dead __attribute__((__noreturn__))
#define __BEGIN_DECLS
#define __END_DECLS
#define __BEGIN_HIDDEN_DECLS
#define __END_HIDDEN_DECLS
#ifndef __CONCAT
#define __CONCAT(x,y) x ## y
#endif
#ifndef __STRING
#define __STRING(x) #x
#endif
#undef __weak_alias
#define __weak_alias(new, old) \
extern __typeof(old) new __attribute__((weak, alias(#old)))
#define __strong_alias(new, old) \
extern __typeof(old) new __attribute__((alias(#old)))
#ifndef SA_LEN
#define SA_LEN(X) \
(((struct sockaddr*)(X))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : \
((struct sockaddr*)(X))->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr))
#endif
#ifndef SS_LEN
#define SS_LEN(X) \
(((struct sockaddr_storage*)(X))->ss_family == AF_INET ? sizeof(struct sockaddr_in) : \
((struct sockaddr_storage*)(X))->ss_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr))
#endif
#define _PW_BUF_LEN 1024
#define _GR_BUF_LEN 1024
#define NOFILE_MAX NOFILE
#if !defined(HAVE_ATTRIBUTE__BOUNDED__)
#define __bounded__(x, y, z)
#endif
#if !defined(DEF_WEAK)
#define DEF_WEAK(x)
#endif
#if !defined(DEF_STRONG)
#define DEF_STRONG(x)
#endif
#if !defined(PROTO_NORMAL)
#define PROTO_NORMAL(x)
#endif
/* sys/sys/param.h */
/*
* File system parameters and macros.
*
* The file system is made out of blocks of at most MAXBSIZE units, with
* smaller units (fragments) only in the last direct block. MAXBSIZE
* primarily determines the size of buffers in the buffer pool. It may be
* made larger without any effect on existing file systems; however making
* it smaller makes some file systems unmountable.
*/
#define MAXBSIZE (64 * 1024)
#ifndef NL_TEXTMAX
#define NL_TEXTMAX 2048
#endif
#ifndef howmany
#define howmany(n,d) (((n)+((d)-1))/(d))
#endif
/* API definitions lifted from OpenBSD src/include */
/* pwd.h */
#define _PW_NAME_LEN 63
/* stdlib.h */
/* unistd.h */
#ifndef HAVE_EXECVPE
int execvpe(const char *, char *const *, char *const *);
#endif /* !HAVE_EXECVPE */
#ifndef HAVE_SETRESUID
/* int setresuid(uid_t, uid_t, uid_t); */
#endif /* !HAVE_SETRESUID */
#ifndef HAVE_PLEDGE
int pledge(const char *, const char *[]);
#endif /* !HAVE_PLEDGE */
#ifndef HAVE_SETPROGNAME
const char * getprogname(void);
void setprogname(const char *progname);
#endif /* !HAVE_SETPROGNAME */
/* pwcache.c */
/* char *user_from_uid(uid_t, int); */
/* char *group_from_gid(gid_t gid, int); */
/* getbsize.c */
char *getbsize(int *, long *);
#define strtoq strtoll
/* inttypes.h */
/*
intmax_t strtoimax(const char *, char **, int);
uintmax_t strtoumax(const char *, char **, int);
*/
/* #define d_namlen d_reclen */
#if !defined(_DIRENT_HAVE_NAMLEN)
#define D_NAMLEN(x) \
strnlen((x)->d_name, (x)->d_reclen)
#else
#define D_NAMLEN(x) \
(x)->d_namlen
#endif
/* for musl, required by xinstall */
#ifndef S_BLKSIZE
#define S_BLKSIZE 512
#endif
/**/
#ifndef MAXNAMLEN
#define MAXNAMLEN 255
#endif
/* XXX: read dynamically? */
#define UID_MAX 60000
#define GID_MAX 60000
/* sys/sys/stat.h */
#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 00777 */
#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO) /* 00666 */
#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
#define S_ISTXT S_ISVTX
/* lib/libc/include/thread_private.h */
#define _MUTEX_LOCK(mutex) do {} while (0)
#define _MUTEX_UNLOCK(mutex) do {} while (0)
#define SHA512_Update SHA512Update
#define SHA512_CTX SHA2_CTX
#define SHA512_Init SHA512Init
#define SHA512_Final SHA512Final
/* sys/socket.h */
#define RT_TABLEID_MAX 255
/* sys/syslimits.h */
#define CHILD_MAX 80 /* max simultaneous processes */
/* setproctitle.c */
void setproctitle(const char *, ...);
/* pw_dup.c */
struct passwd *pw_dup(const struct passwd *);
int issetugid(void);
#define OPEN_MAX 64 /* max open files per process */
#endif

184
include/openbsd/config.h Normal file
View file

@ -0,0 +1,184 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if your system has a working `chown' function. */
#define HAVE_CHOWN 1
/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
don't. */
#define HAVE_DECL_SYS_SIGLIST 1
/* Define to 1 if you have the declaration of `sys_signame', and to 0 if you
don't. */
#define HAVE_DECL_SYS_SIGNAME 0
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
*/
#define HAVE_DIRENT_H 1
/* Define to 1 if you have the `dl_iterate_phdr' function. */
#define HAVE_DL_ITERATE_PHDR 1
/* Define to 1 if you have the `explicit_bzero' function. */
#define HAVE_EXPLICIT_BZERO 1
/* Define to 1 if you have the `fgetln' function. */
/* #undef HAVE_FGETLN */
/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1
/* Define to 1 if you have the `getdtablecount' function. */
/* #undef HAVE_GETDTABLECOUNT */
/* Define to 1 if you have the `getentropy' function. */
#define HAVE_GETENTROPY 1
/* Define to 1 if you have the `getpagesize' function. */
#define HAVE_GETPAGESIZE 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the `issetugid' function. */
/* #undef HAVE_ISSETUGID */
/* Define to 1 if you have the `crypt' library (-lcrypt). */
#define HAVE_LIBCRYPT 1
/* Define to 1 if you have the `rt' library (-lrt). */
#define HAVE_LIBRT 1
/* Define to 1 if you have the <login_cap.h> header file. */
/* #undef HAVE_LOGIN_CAP_H */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have a working `mmap' system call. */
#define HAVE_MMAP 1
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
/* #undef HAVE_NDIR_H */
/* Define to 1 if you have the `reallocarray' function. */
#define HAVE_REALLOCARRAY 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strlcat' function. */
/* #undef HAVE_STRLCAT */
/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */
/* Define to 1 if you have the `strptime' function. */
#define HAVE_STRPTIME 1
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_DIR_H */
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
*/
/* #undef HAVE_SYS_NDIR_H */
/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/tree.h> header file. */
/* #undef HAVE_SYS_TREE_H */
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vfork' function. */
#define HAVE_VFORK 1
/* Define to 1 if you have the <vfork.h> header file. */
/* #undef HAVE_VFORK_H */
/* Define to 1 if `fork' works. */
#define HAVE_WORKING_FORK 1
/* Define to 1 if `vfork' works. */
#define HAVE_WORKING_VFORK 1
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
slash. */
#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "https://github.com/Duncaen/lobase/issues"
/* Define to the full name of this package. */
#define PACKAGE_NAME "lobase"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "lobase 0.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "lobase"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "0.0"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
#define YYTEXT_POINTER 1
/* Path to tty. */
#define _PATH_TTY "/dev/tty"
/* Serial device lock file path. */
#define _PATH_UUCPLOCK "/var/spool/lock"
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef gid_t */
/* Define to the type of a signed integer type of width exactly 64 bits if
such a type exists and the standard includes do not define it. */
/* #undef int64_t */
/* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */
/* Define to `int' if <sys/types.h> does not define. */
/* #undef pid_t */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
/* Define to `int' if <sys/types.h> does not define. */
/* #undef ssize_t */
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef uid_t */
/* Define as `fork' if `vfork' does not work. */
/* #undef vfork */

161
include/openbsd/db.h Normal file
View file

@ -0,0 +1,161 @@
/* $OpenBSD: db.h,v 1.12 2015/10/17 21:48:42 guenther Exp $ */
/* $NetBSD: db.h,v 1.13 1994/10/26 00:55:48 cgd Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
* 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.
*
* @(#)db.h 8.7 (Berkeley) 6/16/94
*/
#ifndef _DB_H_
#define _DB_H_
#include <sys/types.h>
#include <limits.h>
#define RET_ERROR -1 /* Return values. */
#define RET_SUCCESS 0
#define RET_SPECIAL 1
#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
typedef u_int32_t pgno_t;
#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
typedef u_int16_t indx_t;
#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
typedef u_int32_t recno_t;
/* Key/data structure -- a Data-Base Thang. */
typedef struct {
void *data; /* data */
size_t size; /* data length */
} DBT;
/* Routine flags. */
#define R_CURSOR 1 /* del, put, seq */
#define __R_UNUSED 2 /* UNUSED */
#define R_FIRST 3 /* seq */
#define R_IAFTER 4 /* put (RECNO) */
#define R_IBEFORE 5 /* put (RECNO) */
#define R_LAST 6 /* seq (BTREE, RECNO) */
#define R_NEXT 7 /* seq */
#define R_NOOVERWRITE 8 /* put */
#define R_PREV 9 /* seq (BTREE, RECNO) */
#define R_SETCURSOR 10 /* put (RECNO) */
#define R_RECNOSYNC 11 /* sync (RECNO) */
typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
/*
* !!!
* The following flags are included in the dbopen(3) call as part of the
* open(2) flags. In order to avoid conflicts with the open flags, start
* at the top of the 16 or 32-bit number space and work our way down. If
* the open flags were significantly expanded in the future, it could be
* a problem. Wish I'd left another flags word in the dbopen call.
*
* !!!
* None of this stuff is implemented yet. The only reason that it's here
* is so that the access methods can skip copying the key/data pair when
* the DB_LOCK flag isn't set.
*/
#if UINT_MAX > 65535
#define DB_LOCK 0x20000000 /* Do locking. */
#define DB_SHMEM 0x40000000 /* Use shared memory. */
#define DB_TXN 0x80000000 /* Do transactions. */
#else
#define DB_LOCK 0x2000 /* Do locking. */
#define DB_SHMEM 0x4000 /* Use shared memory. */
#define DB_TXN 0x8000 /* Do transactions. */
#endif
/* Access method description structure. */
typedef struct __db {
DBTYPE type; /* Underlying db type. */
int (*close)(struct __db *);
int (*del)(const struct __db *, const DBT *, unsigned int);
int (*get)(const struct __db *, const DBT *, DBT *, unsigned int);
int (*put)(const struct __db *, DBT *, const DBT *, unsigned int);
int (*seq)(const struct __db *, DBT *, DBT *, unsigned int);
int (*sync)(const struct __db *, unsigned int);
void *internal; /* Access method private. */
int (*fd)(const struct __db *);
} DB;
#define BTREEMAGIC 0x053162
#define BTREEVERSION 3
/* Structure used to pass parameters to the btree routines. */
typedef struct {
#define R_DUP 0x01 /* duplicate keys */
unsigned long flags;
unsigned int cachesize; /* bytes to cache */
int maxkeypage; /* maximum keys per page */
int minkeypage; /* minimum keys per page */
unsigned int psize; /* page size */
int (*compare) /* comparison function */
(const DBT *, const DBT *);
size_t (*prefix) /* prefix function */
(const DBT *, const DBT *);
int lorder; /* byte order */
} BTREEINFO;
#define HASHMAGIC 0x061561
#define HASHVERSION 2
/* Structure used to pass parameters to the hashing routines. */
typedef struct {
unsigned int bsize; /* bucket size */
unsigned int ffactor; /* fill factor */
unsigned int nelem; /* number of elements */
unsigned int cachesize; /* bytes to cache */
u_int32_t /* hash function */
(*hash)(const void *, size_t);
int lorder; /* byte order */
} HASHINFO;
/* Structure used to pass parameters to the record routines. */
typedef struct {
#define R_FIXEDLEN 0x01 /* fixed-length records */
#define R_NOKEY 0x02 /* key not required */
#define R_SNAPSHOT 0x04 /* snapshot the input */
unsigned long flags;
unsigned int cachesize; /* bytes to cache */
unsigned int psize; /* page size */
int lorder; /* byte order */
size_t reclen; /* record length
(fixed-length records) */
unsigned char bval; /* delimiting byte
(variable-length records) */
char *bfname; /* btree file name */
} RECNOINFO;
__BEGIN_DECLS
DB *dbopen(const char *, int, int, DBTYPE, const void *);
__END_DECLS
#endif /* !_DB_H_ */

54
include/openbsd/err.h Normal file
View file

@ -0,0 +1,54 @@
/* $OpenBSD: err.h,v 1.13 2015/08/31 02:53:56 guenther Exp $ */
/* $NetBSD: err.h,v 1.11 1994/10/26 00:55:52 cgd Exp $ */
/*-
* Copyright (c) 1993
* 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.
*
* @(#)err.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _COMPAT_ERR_H_
#define _COMPAT_ERR_H_
#include <stdarg.h> /* for va_list */
__BEGIN_DECLS
__dead void errc(int, int, const char *, ...)
__attribute__((__format__ (printf, 3, 4)));
__dead void verrc(int, int, const char *, va_list)
__attribute__((__format__ (printf, 3, 0)));
void warnc(int, const char *, ...)
__attribute__((__format__ (printf, 2, 3)));
void vwarnc(int, const char *, va_list)
__attribute__((__format__ (printf, 2, 0)));
__END_DECLS
#endif /* !_COMPAT_ERR_H_ */
#include_next <err.h>

8
include/openbsd/errno.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef _COMPAT_ERRNO_H_
#define _COMPAT_ERRNO_H_
#define EFTYPE ENOTSUP
#endif /* !_COMPAT_ERRNO_H_ */
#include_next <errno.h>

15
include/openbsd/fcntl.h Normal file
View file

@ -0,0 +1,15 @@
#include_next <fcntl.h>
#ifndef _COMPAT_FCNTL_H_
#define _COMPAT_FCNTL_H_
#ifdef __NEED_OPENBSD_open
#define open openbsd_open
#define O_EXLOCK 10000000
#define O_SHLOCK 20000000
#endif /* !__NEED_OPENBSD_open */
int openbsd_open(const char *, int, ...);
#endif /* !_COMPAT_FCNTL_H_ */

127
include/openbsd/fts.h Normal file
View file

@ -0,0 +1,127 @@
/* $OpenBSD: fts.h,v 1.14 2012/12/05 23:19:57 deraadt Exp $ */
/* $NetBSD: fts.h,v 1.5 1994/12/28 01:41:50 mycroft Exp $ */
/*
* Copyright (c) 1989, 1993
* 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.
*
* @(#)fts.h 8.3 (Berkeley) 8/14/94
*/
#ifndef _FTS_H_
#define _FTS_H_
#include <sys/types.h>
typedef struct {
struct _ftsent *fts_cur; /* current node */
struct _ftsent *fts_child; /* linked list of children */
struct _ftsent **fts_array; /* sort array */
dev_t fts_dev; /* starting device # */
char *fts_path; /* path for this descent */
int fts_rfd; /* fd for root */
size_t fts_pathlen; /* sizeof(path) */
int fts_nitems; /* elements in the sort array */
int (*fts_compar)(); /* compare function */
#define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */
#define FTS_LOGICAL 0x0002 /* logical walk */
#define FTS_NOCHDIR 0x0004 /* don't change directories */
#define FTS_NOSTAT 0x0008 /* don't get stat info */
#define FTS_PHYSICAL 0x0010 /* physical walk */
#define FTS_SEEDOT 0x0020 /* return dot and dot-dot */
#define FTS_XDEV 0x0040 /* don't cross devices */
#define FTS_OPTIONMASK 0x00ff /* valid user option mask */
#define FTS_NAMEONLY 0x1000 /* (private) child names only */
#define FTS_STOP 0x2000 /* (private) unrecoverable error */
int fts_options; /* fts_open options, global flags */
} FTS;
typedef struct _ftsent {
struct _ftsent *fts_cycle; /* cycle node */
struct _ftsent *fts_parent; /* parent directory */
struct _ftsent *fts_link; /* next file in directory */
long fts_number; /* local numeric value */
void *fts_pointer; /* local address value */
char *fts_accpath; /* access path */
char *fts_path; /* root path */
int fts_errno; /* errno for this node */
int fts_symfd; /* fd for symlink */
size_t fts_pathlen; /* strlen(fts_path) */
size_t fts_namelen; /* strlen(fts_name) */
ino_t fts_ino; /* inode */
dev_t fts_dev; /* device */
nlink_t fts_nlink; /* link count */
#define FTS_ROOTPARENTLEVEL -1
#define FTS_ROOTLEVEL 0
#define FTS_MAXLEVEL 0x7fffffff
int fts_level; /* depth (-1 to N) */
#define FTS_D 1 /* preorder directory */
#define FTS_DC 2 /* directory that causes cycles */
#define FTS_DEFAULT 3 /* none of the above */
#define FTS_DNR 4 /* unreadable directory */
#define FTS_DOT 5 /* dot or dot-dot */
#define FTS_DP 6 /* postorder directory */
#define FTS_ERR 7 /* error; errno is set */
#define FTS_F 8 /* regular file */
#define FTS_INIT 9 /* initialized only */
#define FTS_NS 10 /* stat(2) failed */
#define FTS_NSOK 11 /* no stat(2) requested */
#define FTS_SL 12 /* symbolic link */
#define FTS_SLNONE 13 /* symbolic link without target */
unsigned short fts_info; /* user flags for FTSENT structure */
#define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */
#define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */
unsigned short fts_flags; /* private flags for FTSENT structure */
#define FTS_AGAIN 1 /* read node again */
#define FTS_FOLLOW 2 /* follow symbolic link */
#define FTS_NOINSTR 3 /* no instructions */
#define FTS_SKIP 4 /* discard node */
unsigned short fts_instr; /* fts_set() instructions */
unsigned short fts_spare; /* unused */
struct stat *fts_statp; /* stat(2) information */
char fts_name[1]; /* file name */
} FTSENT;
__BEGIN_DECLS
FTSENT *fts_children(FTS *, int);
int fts_close(FTS *);
FTS *fts_open(char * const *, int,
int (*)(const FTSENT **, const FTSENT **));
FTSENT *fts_read(FTS *);
int fts_set(FTS *, FTSENT *, int);
__END_DECLS
#endif /* !_FTS_H_ */

84
include/openbsd/getopt.h Normal file
View file

@ -0,0 +1,84 @@
/* $OpenBSD: getopt.h,v 1.3 2013/11/22 21:32:49 millert Exp $ */
/* $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Dieter Baron and Thomas Klausner.
*
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
*/
#ifndef _COMPAT_GETOPT_H_
#define _COMPAT_GETOPT_H_
#define getopt_long(argc, argv, optstr, longopts, longindex) \
openbsd_getopt_long_only(argc, argv, optstr, longopts, longindex)
#define getopt_long(argc, argv, optstr, longopts, longindex) \
openbsd_getopt_long_only(argc, argv, optstr, longopts, longindex)
/*
* GNU-like getopt_long()
*/
#define no_argument 0
#define required_argument 1
#define optional_argument 2
struct option {
/* name of long option */
const char *name;
/*
* one of no_argument, required_argument, and optional_argument:
* whether option takes an argument
*/
int has_arg;
/* if not NULL, set *flag to val when option found */
int *flag;
/* if flag not NULL, value to set *flag to; else return value */
int val;
};
__BEGIN_DECLS
int getopt_long(int, char * const *, const char *,
const struct option *, int *);
int getopt_long_only(int, char * const *, const char *,
const struct option *, int *);
#ifndef _GETOPT_DEFINED_
#define _GETOPT_DEFINED_
#define getopt(argc, argv, optstr) \
openbsd_getopt(argc, argv, optstr)
#define opterr openbsd_opterr
#define optind openbsd_optind
int getopt(int, char * const *, const char *);
extern char *optarg; /* getopt(3) external variables */
extern int opterr;
extern int optind;
extern int optopt;
extern int optreset;
#endif
__END_DECLS
#endif /* !_COMPAT_GETOPT_H_ */

95
include/openbsd/glob.h Normal file
View file

@ -0,0 +1,95 @@
/* $OpenBSD: glob.h,v 1.13 2012/12/05 23:19:57 deraadt Exp $ */
/* $NetBSD: glob.h,v 1.5 1994/10/26 00:55:56 cgd Exp $ */
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Guido van Rossum.
*
* 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.
*
* @(#)glob.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _GLOB_H_
#define _GLOB_H_
#include <sys/stat.h>
struct stat;
typedef struct {
int gl_pathc; /* Count of total paths so far. */
int gl_matchc; /* Count of paths matching pattern. */
int gl_offs; /* Reserved at beginning of gl_pathv. */
int gl_flags; /* Copy of flags parameter to glob. */
char **gl_pathv; /* List of paths matching pattern. */
struct stat **gl_statv; /* Stat entries corresponding to gl_pathv */
/* Copy of errfunc parameter to glob. */
int (*gl_errfunc)(const char *, int);
/*
* Alternate filesystem access methods for glob; replacement
* versions of closedir(3), readdir(3), opendir(3), stat(2)
* and lstat(2).
*/
void (*gl_closedir)(void *);
struct dirent *(*gl_readdir)(void *);
void *(*gl_opendir)(const char *);
int (*gl_lstat)(const char *, struct stat *);
int (*gl_stat)(const char *, struct stat *);
} glob_t;
#define GLOB_APPEND 0x0001 /* Append to output from previous call. */
#define GLOB_DOOFFS 0x0002 /* Use gl_offs. */
#define GLOB_ERR 0x0004 /* Return on error. */
#define GLOB_MARK 0x0008 /* Append / to matching directories. */
#define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */
#define GLOB_NOSORT 0x0020 /* Don't sort. */
#define GLOB_NOESCAPE 0x1000 /* Disable backslash escaping. */
#define GLOB_NOSPACE (-1) /* Malloc call failed. */
#define GLOB_ABORTED (-2) /* Unignored error. */
#define GLOB_NOMATCH (-3) /* No match and GLOB_NOCHECK not set. */
#define GLOB_NOSYS (-4) /* Function not supported. */
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
#define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */
#define GLOB_QUOTE 0x0400 /* Quote special chars with \. */
#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */
#define GLOB_LIMIT 0x2000 /* Limit pattern match output to ARG_MAX */
#define GLOB_KEEPSTAT 0x4000 /* Retain stat data for paths in gl_statv. */
#define GLOB_ABEND GLOB_ABORTED /* backward compatibility */
__BEGIN_DECLS
int glob(const char *__restrict, int, int (*)(const char *, int),
glob_t *__restrict);
void globfree(glob_t *);
__END_DECLS
#endif /* !_GLOB_H_ */

49
include/openbsd/grp.h Normal file
View file

@ -0,0 +1,49 @@
/* $OpenBSD: grp.h,v 1.12 2014/08/31 04:04:38 guenther Exp $ */
/* $NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $ */
/*-
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* 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.
*
* @(#)grp.h 8.2 (Berkeley) 1/21/94
*/
#ifndef _COMPAT_GRP_H_
#define _COMPAT_GRP_H_
#include <sys/types.h>
char *group_from_gid(gid_t, int);
#endif /* !_COMPAT_GRP_H_ */
#include_next <grp.h>

14
include/openbsd/libgen.h Normal file
View file

@ -0,0 +1,14 @@
#include_next <libgen.h>
#ifndef _COMPAT_LIBGEN_H_
#define _COMPAT_LIBGEN_H_
#undef basename
#define basename openbsd_basename
#undef dirname
#define dirname openbsd_dirname
char *basename(const char *);
char *dirname(const char *);
#endif /* _COMPAT_LIBGEN_H_ */

12
include/openbsd/limits.h Normal file
View file

@ -0,0 +1,12 @@
#include_next <limits.h>
#ifndef _COMPAT_LIMITS_H_
#define _COMPAT_LIMITS_H_
#ifndef ARG_MAX
# if defined(__linux__) && defined(_SC_ARG_MAX)
# define ARG_MAX sysconf(_SC_ARG_MAX)
# endif
#endif
#endif

49
include/openbsd/md5.h Normal file
View file

@ -0,0 +1,49 @@
/* $OpenBSD: md5.h,v 1.17 2012/12/05 23:19:57 deraadt Exp $ */
/*
* This code implements the MD5 message-digest algorithm.
* The algorithm is due to Ron Rivest. This code was
* written by Colin Plumb in 1993, no copyright is claimed.
* This code is in the public domain; do with it what you wish.
*
* Equivalent code is available from RSA Data Security, Inc.
* This code has been tested against that, and is equivalent,
* except that you don't need to include two pages of legalese
* with every copy.
*/
#ifndef _MD5_H_
#define _MD5_H_
#define MD5_BLOCK_LENGTH 64
#define MD5_DIGEST_LENGTH 16
#define MD5_DIGEST_STRING_LENGTH (MD5_DIGEST_LENGTH * 2 + 1)
typedef struct MD5Context {
u_int32_t state[4]; /* state */
u_int64_t count; /* number of bits, mod 2^64 */
u_int8_t buffer[MD5_BLOCK_LENGTH]; /* input buffer */
} MD5_CTX;
__BEGIN_DECLS
void MD5Init(MD5_CTX *);
void MD5Update(MD5_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void MD4Pad(MD5_CTX *);
void MD5Final(u_int8_t [MD5_DIGEST_LENGTH], MD5_CTX *)
__attribute__((__bounded__(__minbytes__,1,MD5_DIGEST_LENGTH)));
void MD5Transform(u_int32_t [4], const u_int8_t [MD5_BLOCK_LENGTH])
__attribute__((__bounded__(__minbytes__,1,4)))
__attribute__((__bounded__(__minbytes__,2,MD5_BLOCK_LENGTH)));
char *MD5End(MD5_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
char *MD5File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
char *MD5FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
char *MD5Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,MD5_DIGEST_STRING_LENGTH)));
__END_DECLS
#endif /* _MD5_H_ */

78
include/openbsd/ndbm.h Normal file
View file

@ -0,0 +1,78 @@
/* $OpenBSD: ndbm.h,v 1.6 2004/05/03 17:27:50 millert Exp $ */
/* $NetBSD: ndbm.h,v 1.6 1995/07/20 23:31:11 jtc Exp $ */
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* 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.
*
* @(#)ndbm.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _NDBM_H_
#define _NDBM_H_
#include <db.h>
/* Map dbm interface onto db(3). */
#define DBM_RDONLY O_RDONLY
/* Flags to dbm_store(). */
#define DBM_INSERT 0
#define DBM_REPLACE 1
/*
* The db(3) support for ndbm(3) always appends this suffix to the
* file name to avoid overwriting the user's original database.
*/
#define DBM_SUFFIX ".db"
typedef struct {
void *dptr;
size_t dsize;
} datum;
typedef DB DBM;
#define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE
__BEGIN_DECLS
int dbm_clearerr(DBM *);
void dbm_close(DBM *);
int dbm_delete(DBM *, datum);
int dbm_error(DBM *);
datum dbm_fetch(DBM *, datum);
datum dbm_firstkey(DBM *);
datum dbm_nextkey(DBM *);
DBM *dbm_open(const char *, int, mode_t);
int dbm_store(DBM *, datum, datum, int);
int dbm_dirfno(DBM *);
int dbm_rdonly(DBM *);
__END_DECLS
#endif /* !_NDBM_H_ */

View file

@ -0,0 +1,54 @@
/* $OpenBSD: in.h,v 1.122 2017/05/04 15:00:24 bluhm Exp $ */
/* $NetBSD: in.h,v 1.20 1996/02/13 23:41:47 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1990, 1993
* 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.
*/
#ifndef _COMPAT_NETINET_IN_H_
#define _COMPAT_NETINET_IN_H_
/*
* Constants and structures defined by the internet system,
* Per RFC 790, September 1981, and numerous additions.
*/
#define IP_PORTRANGE 19 /* int; range to choose for unspec port */
/*
* Argument for IP_PORTRANGE:
* - which range to search when port is unspecified at bind() or connect()
*/
#define IP_PORTRANGE_DEFAULT 0 /* default range */
#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
#include_next <netinet/in.h>
#include <netinet6/in6.h>
#endif /* _COMPAT_NETINET_IN_H_ */

View file

@ -0,0 +1,78 @@
/* $OpenBSD: in6.h,v 1.94 2017/05/04 15:00:24 bluhm Exp $ */
/* $KAME: in6.h,v 1.83 2001/03/29 02:55:07 jinmei Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
* 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 project 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 PROJECT 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 PROJECT 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.
*/
/*
* Copyright (c) 1982, 1986, 1990, 1993
* 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.
*
* @(#)in.h 8.3 (Berkeley) 1/3/94
*/
#ifndef _COMPAT_NETINET6_IN6_H_
#define _COMPAT_NETINET6_IN6_H_
#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */
/*
* Argument for IPV6_PORTRANGE:
* - which range to search when port is unspecified at bind() or connect()
*/
#define IPV6_PORTRANGE_DEFAULT 0 /* default range */
#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
/* #include_next <netinet6/in6.h> */
#endif /* _COMPAT_NETINET6_IN6_H_ */

156
include/openbsd/paths.h Normal file
View file

@ -0,0 +1,156 @@
/* $OpenBSD: paths.h,v 1.25 2014/03/13 15:24:41 tedu Exp $ */
/* $NetBSD: paths.h,v 1.7 1994/10/26 00:56:12 cgd Exp $ */
/*
* Copyright (c) 1989, 1993
* 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.
*
* @(#)paths.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _COMPAT_PATHS_H_
#define _COMPAT_PATHS_H_
#include_next <paths.h>
/* Default search path. */
#ifndef _PATH_DEFPATH
# define _PATH_DEFPATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin"
#endif
/* All standard utilities path. */
#ifndef _PATH_STDPATH
# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin"
#endif
#ifndef _PATH_BSHELL
# define _PATH_BSHELL "/bin/sh"
#endif
#ifndef _PATH_CONSOLE
# define _PATH_CONSOLE "/dev/console"
#endif
#ifndef _PATH_CSHELL
# define _PATH_CSHELL "/bin/csh"
#endif
#ifndef _PATH_DEFTAPE
# define _PATH_DEFTAPE "/dev/rst0"
#endif
#ifndef _PATH_DEVDB
# define _PATH_DEVDB "/var/run/dev.db"
#endif
#ifndef _PATH_DEVNULL
# define _PATH_DEVNULL "/dev/null"
#endif
#ifndef _PATH_FSIRAND
# define _PATH_FSIRAND "/sbin/fsirand"
#endif
#ifndef _PATH_KLOG
# define _PATH_KLOG "/dev/klog"
#endif
#ifndef _PATH_KMEM
# define _PATH_KMEM "/dev/kmem"
#endif
#ifndef _PATH_KSHELL
# define _PATH_KSHELL "/bin/ksh"
#endif
#ifndef _PATH_KSYMS
# define _PATH_KSYMS "/dev/ksyms"
#endif
#ifndef _PATH_KVMDB
# define _PATH_KVMDB "/var/db/kvm_bsd.db"
#endif
#ifndef _PATH_LOCALE
# define _PATH_LOCALE "/usr/share/locale"
#endif
#ifndef _PATH_LOGCONF
# define _PATH_LOGCONF "/etc/syslog.conf"
#endif
#ifndef _PATH_LOGPID
# define _PATH_LOGPID "/var/run/syslog.pid"
#endif
#ifndef _PATH_MAILDIR
# define _PATH_MAILDIR "/var/mail"
#endif
#ifndef _PATH_MAN
# define _PATH_MAN "/usr/share/man"
#endif
#ifndef _PATH_MEM
# define _PATH_MEM "/dev/mem"
#endif
#ifndef _PATH_NOLOGIN
# define _PATH_NOLOGIN "/etc/nologin"
#endif
#ifndef _PATH_RSH
# define _PATH_RSH "/usr/bin/ssh"
#endif
#ifndef _PATH_SENDMAIL
# define _PATH_SENDMAIL "/usr/sbin/sendmail"
#endif
#ifndef _PATH_SHELLS
# define _PATH_SHELLS "/etc/shells"
#endif
#ifndef _PATH_TTY
# define _PATH_TTY "/dev/tty"
#endif
#ifndef _PATH_UNIX
# define _PATH_UNIX "/bsd"
#endif
#ifndef _PATH_VI
# define _PATH_VI "/usr/bin/vi"
#endif
/* Provide trailing slash, since mostly used for building pathnames. */
#ifndef _PATH_BOOTDIR
# define _PATH_BOOTDIR "/usr/mdec/"
#endif
#ifndef _PATH_DEV
# define _PATH_DEV "/dev/"
#endif
#ifndef _PATH_DEVFD
# define _PATH_DEVFD "/dev/fd/"
#endif
#ifndef _PATH_TMP
# define _PATH_TMP "/tmp/"
#endif
#ifndef _PATH_UUCPLOCK
# define _PATH_UUCPLOCK "/var/spool/lock/"
#endif
#ifndef _PATH_VARDB
# define _PATH_VARDB "/var/db/"
#endif
#ifndef _PATH_VAREMPTY
# define _PATH_VAREMPTY "/var/empty/"
#endif
#ifndef _PATH_VARRUN
# define _PATH_VARRUN "/var/run/"
#endif
#ifndef _PATH_VARTMP
# define _PATH_VARTMP "/var/tmp/"
#endif
#endif /* !_PATHS_H_ */

10
include/openbsd/poll.h Normal file
View file

@ -0,0 +1,10 @@
#include_next <poll.h>
#ifndef _COMPAT_POLL_H_
#define _COMPAT_POLL_H_
#ifndef INFTIM
# define INFTIM (-1)
#endif
#endif

56
include/openbsd/pwd.h Normal file
View file

@ -0,0 +1,56 @@
/* $OpenBSD: pwd.h,v 1.24 2015/11/18 16:44:46 tedu Exp $ */
/* $NetBSD: pwd.h,v 1.9 1996/05/15 21:36:45 jtc Exp $ */
/*-
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
* Portions Copyright(C) 1995, 1996, Jason Downs. 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.
*
* @(#)pwd.h 8.2 (Berkeley) 1/21/94
*/
#ifndef _COMPAT_PWD_H_
#define _COMPAT_PWD_H_
#include <sys/types.h>
#define _PASSWORD_LEN 128 /* max length, not counting NUL */
char *user_from_uid(uid_t, int);
char *bcrypt_gensalt(u_int8_t);
char *bcrypt(const char *, const char *);
int bcrypt_newhash(const char *, int, char *, size_t);
int bcrypt_checkpass(const char *, const char *);
struct passwd *pw_dup(const struct passwd *);
#endif /* !_COMPAT_PWD_H_ */
#include_next <pwd.h>

View file

@ -0,0 +1,37 @@
/* $OpenBSD: readpassphrase.h,v 1.5 2003/06/17 21:56:23 millert Exp $ */
/*
* Copyright (c) 2000, 2002 Todd C. Miller <Todd.Miller@courtesan.com>
*
* 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" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Sponsored in part by the Defense Advanced Research Projects
* Agency (DARPA) and Air Force Research Laboratory, Air Force
* Materiel Command, USAF, under agreement number F39502-99-1-0512.
*/
/* OPENBSD ORIGINAL: include/readpassphrase.h */
#ifndef HAVE_READPASSPHRASE
#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
#define RPP_ECHO_ON 0x01 /* Leave echo on. */
#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
char * readpassphrase(const char *, char *, size_t, int);
#endif

113
include/openbsd/regex.h Normal file
View file

@ -0,0 +1,113 @@
/* $OpenBSD: regex.h,v 1.7 2012/12/05 23:19:57 deraadt Exp $ */
/* $NetBSD: regex.h,v 1.4.6.1 1996/06/10 18:57:07 explorer Exp $ */
/*-
* Copyright (c) 1992 Henry Spencer.
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Henry Spencer of the University of Toronto.
*
* 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.
*
* @(#)regex.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _REGEX_H_
#define _REGEX_H_
#include <sys/types.h>
#define regoff_t openbsd_regoff_t
#define regex_t openbsd_regex_t
#define regmatch_t openbsd_regmatch_t
/* types */
typedef off_t regoff_t;
typedef struct {
int re_magic;
size_t re_nsub; /* number of parenthesized subexpressions */
const char *re_endp; /* end pointer for REG_PEND */
struct re_guts *re_g; /* none of your business :-) */
} regex_t;
typedef struct {
regoff_t rm_so; /* start of match */
regoff_t rm_eo; /* end of match */
} regmatch_t;
/* regcomp() flags */
#define REG_BASIC 0000
#define REG_EXTENDED 0001
#define REG_ICASE 0002
#define REG_NOSUB 0004
#define REG_NEWLINE 0010
#define REG_NOSPEC 0020
#define REG_PEND 0040
#define REG_DUMP 0200
/* regerror() flags */
#define REG_NOMATCH 1
#define REG_BADPAT 2
#define REG_ECOLLATE 3
#define REG_ECTYPE 4
#define REG_EESCAPE 5
#define REG_ESUBREG 6
#define REG_EBRACK 7
#define REG_EPAREN 8
#define REG_EBRACE 9
#define REG_BADBR 10
#define REG_ERANGE 11
#define REG_ESPACE 12
#define REG_BADRPT 13
#define REG_EMPTY 14
#define REG_ASSERT 15
#define REG_INVARG 16
#define REG_ATOI 255 /* convert name to number (!) */
#define REG_ITOA 0400 /* convert number to name (!) */
/* regexec() flags */
#define REG_NOTBOL 00001
#define REG_NOTEOL 00002
#define REG_STARTEND 00004
#define REG_TRACE 00400 /* tracing of execution */
#define REG_LARGE 01000 /* force large representation */
#define REG_BACKR 02000 /* force use of backref code */
#define regcomp openbsd_regcomp
#define regerror openbsd_regerror
#define regexec openbsd_regexec
#define regfree openbsd_regfree
__BEGIN_DECLS
int regcomp(regex_t *, const char *, int);
size_t regerror(int, const regex_t *, char *, size_t);
int regexec(const regex_t *, const char *, size_t, regmatch_t [], int);
void regfree(regex_t *);
__END_DECLS
#endif /* !_REGEX_H_ */

9
include/openbsd/resolv.h Normal file
View file

@ -0,0 +1,9 @@
#ifndef _COMPAT_RESOLV_H_
#define _COMPAT_RESOLV_H_
int b64_ntop(unsigned char const *, size_t, char *, size_t);
int b64_pton(char const *, unsigned char *, size_t);
#endif /* _COMPAT_RESOLV_H_ */
#include_next <resolv.h>

60
include/openbsd/rmd160.h Normal file
View file

@ -0,0 +1,60 @@
/* $OpenBSD: rmd160.h,v 1.17 2012/12/05 23:19:57 deraadt Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. 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.
*
* 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.
*/
#ifndef _RMD160_H
#define _RMD160_H
#define RMD160_BLOCK_LENGTH 64
#define RMD160_DIGEST_LENGTH 20
#define RMD160_DIGEST_STRING_LENGTH (RMD160_DIGEST_LENGTH * 2 + 1)
/* RMD160 context. */
typedef struct RMD160Context {
u_int32_t state[5]; /* state */
u_int64_t count; /* number of bits, mod 2^64 */
u_int8_t buffer[RMD160_BLOCK_LENGTH]; /* input buffer */
} RMD160_CTX;
__BEGIN_DECLS
void RMD160Init(RMD160_CTX *);
void RMD160Transform(u_int32_t [5], const u_int8_t [RMD160_BLOCK_LENGTH])
__attribute__((__bounded__(__minbytes__,1,5)))
__attribute__((__bounded__(__minbytes__,2,RMD160_BLOCK_LENGTH)));
void RMD160Update(RMD160_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void RMD160Pad(RMD160_CTX *);
void RMD160Final(u_int8_t [RMD160_DIGEST_LENGTH], RMD160_CTX *)
__attribute__((__bounded__(__minbytes__,1,RMD160_DIGEST_LENGTH)));
char *RMD160End(RMD160_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,RMD160_DIGEST_STRING_LENGTH)));
char *RMD160File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,RMD160_DIGEST_STRING_LENGTH)));
char *RMD160FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,RMD160_DIGEST_STRING_LENGTH)));
char *RMD160Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,RMD160_DIGEST_STRING_LENGTH)));
__END_DECLS
#endif /* _RMD160_H */

57
include/openbsd/sha1.h Normal file
View file

@ -0,0 +1,57 @@
/* $OpenBSD: sha1.h,v 1.24 2012/12/05 23:19:57 deraadt Exp $ */
/*
* SHA-1 in C
* By Steve Reid <steve@edmweb.com>
* 100% Public Domain
*/
#ifndef _SHA1_H
#define _SHA1_H
#define SHA1_BLOCK_LENGTH 64
#define SHA1_DIGEST_LENGTH 20
#define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1)
typedef struct {
u_int32_t state[5];
u_int64_t count;
u_int8_t buffer[SHA1_BLOCK_LENGTH];
} SHA1_CTX;
__BEGIN_DECLS
void SHA1Init(SHA1_CTX *);
void SHA1Pad(SHA1_CTX *);
void SHA1Transform(u_int32_t [5], const u_int8_t [SHA1_BLOCK_LENGTH])
__attribute__((__bounded__(__minbytes__,1,5)))
__attribute__((__bounded__(__minbytes__,2,SHA1_BLOCK_LENGTH)));
void SHA1Update(SHA1_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA1Final(u_int8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA1_DIGEST_LENGTH)));
char *SHA1End(SHA1_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
char *SHA1File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
char *SHA1FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
char *SHA1Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA1_DIGEST_STRING_LENGTH)));
__END_DECLS
#define HTONDIGEST(x) do { \
x[0] = htonl(x[0]); \
x[1] = htonl(x[1]); \
x[2] = htonl(x[2]); \
x[3] = htonl(x[3]); \
x[4] = htonl(x[4]); } while (0)
#define NTOHDIGEST(x) do { \
x[0] = ntohl(x[0]); \
x[1] = ntohl(x[1]); \
x[2] = ntohl(x[2]); \
x[3] = ntohl(x[3]); \
x[4] = ntohl(x[4]); } while (0)
#endif /* _SHA1_H */

156
include/openbsd/sha2.h Normal file
View file

@ -0,0 +1,156 @@
/* $OpenBSD: sha2.h,v 1.10 2016/09/03 17:00:29 tedu Exp $ */
/*
* FILE: sha2.h
* AUTHOR: Aaron D. Gifford <me@aarongifford.com>
*
* Copyright (c) 2000-2001, Aaron D. Gifford
* 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 copyright holder nor the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``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 OR CONTRIBUTOR(S) 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.
*
* $From: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $
*/
#ifndef _SHA2_H
#define _SHA2_H
/*** SHA-256/384/512 Various Length Definitions ***********************/
#define SHA224_BLOCK_LENGTH 64
#define SHA224_DIGEST_LENGTH 28
#define SHA224_DIGEST_STRING_LENGTH (SHA224_DIGEST_LENGTH * 2 + 1)
#define SHA256_BLOCK_LENGTH 64
#define SHA256_DIGEST_LENGTH 32
#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
#define SHA384_BLOCK_LENGTH 128
#define SHA384_DIGEST_LENGTH 48
#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1)
#define SHA512_BLOCK_LENGTH 128
#define SHA512_DIGEST_LENGTH 64
#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
#define SHA512_256_BLOCK_LENGTH 128
#define SHA512_256_DIGEST_LENGTH 32
#define SHA512_256_DIGEST_STRING_LENGTH (SHA512_256_DIGEST_LENGTH * 2 + 1)
/*** SHA-224/256/384/512 Context Structure *******************************/
typedef struct _SHA2_CTX {
union {
u_int32_t st32[8];
u_int64_t st64[8];
} state;
u_int64_t bitcount[2];
u_int8_t buffer[SHA512_BLOCK_LENGTH];
} SHA2_CTX;
__BEGIN_DECLS
void SHA224Init(SHA2_CTX *);
void SHA224Transform(u_int32_t state[8], const u_int8_t [SHA224_BLOCK_LENGTH]);
void SHA224Update(SHA2_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA224Pad(SHA2_CTX *);
void SHA224Final(u_int8_t [SHA224_DIGEST_LENGTH], SHA2_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA224_DIGEST_LENGTH)));
char *SHA224End(SHA2_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH)));
char *SHA224File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH)));
char *SHA224FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH)));
char *SHA224Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA224_DIGEST_STRING_LENGTH)));
void SHA256Init(SHA2_CTX *);
void SHA256Transform(u_int32_t state[8], const u_int8_t [SHA256_BLOCK_LENGTH]);
void SHA256Update(SHA2_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA256Pad(SHA2_CTX *);
void SHA256Final(u_int8_t [SHA256_DIGEST_LENGTH], SHA2_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA256_DIGEST_LENGTH)));
char *SHA256End(SHA2_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH)));
char *SHA256File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH)));
char *SHA256FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH)));
char *SHA256Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA256_DIGEST_STRING_LENGTH)));
void SHA384Init(SHA2_CTX *);
void SHA384Transform(u_int64_t state[8], const u_int8_t [SHA384_BLOCK_LENGTH]);
void SHA384Update(SHA2_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA384Pad(SHA2_CTX *);
void SHA384Final(u_int8_t [SHA384_DIGEST_LENGTH], SHA2_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA384_DIGEST_LENGTH)));
char *SHA384End(SHA2_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH)));
char *SHA384File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH)));
char *SHA384FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH)));
char *SHA384Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA384_DIGEST_STRING_LENGTH)));
void SHA512Init(SHA2_CTX *);
void SHA512Transform(u_int64_t state[8], const u_int8_t [SHA512_BLOCK_LENGTH]);
void SHA512Update(SHA2_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA512Pad(SHA2_CTX *);
void SHA512Final(u_int8_t [SHA512_DIGEST_LENGTH], SHA2_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA512_DIGEST_LENGTH)));
char *SHA512End(SHA2_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH)));
char *SHA512File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH)));
char *SHA512FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH)));
char *SHA512Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA512_DIGEST_STRING_LENGTH)));
void SHA512_256Init(SHA2_CTX *);
void SHA512_256Transform(u_int64_t state[8], const u_int8_t [SHA512_256_BLOCK_LENGTH]);
void SHA512_256Update(SHA2_CTX *, const u_int8_t *, size_t)
__attribute__((__bounded__(__string__,2,3)));
void SHA512_256Pad(SHA2_CTX *);
void SHA512_256Final(u_int8_t [SHA512_256_DIGEST_LENGTH], SHA2_CTX *)
__attribute__((__bounded__(__minbytes__,1,SHA512_256_DIGEST_LENGTH)));
char *SHA512_256End(SHA2_CTX *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH)));
char *SHA512_256File(const char *, char *)
__attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH)));
char *SHA512_256FileChunk(const char *, char *, off_t, off_t)
__attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH)));
char *SHA512_256Data(const u_int8_t *, size_t, char *)
__attribute__((__bounded__(__string__,1,2)))
__attribute__((__bounded__(__minbytes__,3,SHA512_256_DIGEST_STRING_LENGTH)));
__END_DECLS
#endif /* _SHA2_H */

24
include/openbsd/signal.h Normal file
View file

@ -0,0 +1,24 @@
#include_next <signal.h>
#ifndef _COMPAT_SIGNAL_H_
#define _COMPAT_SIGNAL_H_
#define SIGINFO SIGUSR1
#ifndef _NSIG
# ifdef NSIG
# define _NSIG NSIG
# else
# define _NSIG 128
# endif
#endif
#if !HAVE_DECL_SYS_SIGLIST
extern const char *const sys_siglist[_NSIG];
#endif /* !HAVE_DECL_SYS_SIGLIST */
#if !HAVE_DECL_SYS_SIGNAME
extern const char *const sys_signame[_NSIG];
#endif /* !HAVE_DECL_SYS_SIGNAME */
#endif /* _COMPAT_SIGNAL_H_ */

10
include/openbsd/stdarg.h Normal file
View file

@ -0,0 +1,10 @@
#include_next <stdarg.h>
#ifndef _COMPAT_STDARG_H_
#define _COMPAT_STDARG_H_
#ifndef __va_list
# define __va_list va_list;
#endif
#endif

13
include/openbsd/stdio.h Normal file
View file

@ -0,0 +1,13 @@
#include_next <stdio.h>
#ifndef _COMPAT_STDIO_H_
#define _COMPAT_STDIO_H_
#include <sys/types.h>
char *fgetln(FILE *, size_t *);
int asprintf(char **, const char *, ...);
int vasprintf(char **, const char *, va_list);
#endif /* _COMPAT STDIO_H_ */

84
include/openbsd/stdlib.h Normal file
View file

@ -0,0 +1,84 @@
/* $OpenBSD: stdlib.h,v 1.67 2016/09/20 21:10:22 fcambus Exp $ */
/* $NetBSD: stdlib.h,v 1.25 1995/12/27 21:19:08 jtc Exp $ */
/*-
* Copyright (c) 1990 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.
*
* @(#)stdlib.h 5.13 (Berkeley) 6/4/91
*/
#ifndef _COMPAT_STDLIB_H_
#define _COMPAT_STDLIB_H_
#include <sys/types.h>
#include <stdint.h>
char *getbsize(int *, long *);
char *cgetcap(char *, const char *, int);
int cgetclose(void);
int cgetent(char **, char **, const char *);
int cgetfirst(char **, char **);
int cgetmatch(char *, const char *);
int cgetnext(char **, char **);
int cgetnum(char *, const char *, long *);
int cgetset(const char *);
int cgetusedb(int);
int cgetstr(char *, const char *, char **);
int cgetustr(char *, const char *, char **);
uint32_t arc4random(void);
uint32_t arc4random_uniform(uint32_t);
void arc4random_buf(void *, size_t)
__attribute__((__bounded__ (__string__,1,2)));
char *devname(dev_t, mode_t);
void freezero(void *, size_t);
void *reallocarray(void *, size_t, size_t);
void *recallocarray(void *, size_t, size_t, size_t);
int heapsort(void *, size_t, size_t, int (*)(const void *, const void *));
int mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
int radixsort(const unsigned char **, int, const unsigned char *, unsigned);
void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
int sradixsort(const unsigned char **, int, const unsigned char *, unsigned);
double strtod(const char *__restrict, char **__restrict);
long long strtonum(const char *, long long, long long, const char **);
long double strtold(const char *__restrict, char **__restrict);
long random(void);
void srandom(unsigned int);
void srandom_deterministic(unsigned int);
void srandomdev(void);
char *initstate(unsigned int, char *, size_t);
char *setstate(char *);
/* void srand_deterministic(unsigned int); */
#define srand_deterministic(x) srand((x))
int mkostemp(char *, int);
#endif /* _COMPAT_STDLIB_H_ */
#include_next <stdlib.h>

56
include/openbsd/string.h Normal file
View file

@ -0,0 +1,56 @@
/* $OpenBSD: string.h,v 1.31 2016/09/09 18:12:37 millert Exp $ */
/* $NetBSD: string.h,v 1.6 1994/10/26 00:56:30 cgd Exp $ */
/*-
* Copyright (c) 1990 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.
*
* @(#)string.h 5.10 (Berkeley) 3/9/91
*/
#ifndef _COMPAT_STRING_H_
#define _COMPAT_STRING_H_
#include <sys/types.h>
void explicit_bzero(void *, size_t)
__attribute__ ((__bounded__(__buffer__,1,2)));
size_t strlcat(char *, const char *, size_t)
__attribute__ ((__bounded__(__string__,1,3)));
size_t strlcpy(char *, const char *, size_t)
__attribute__ ((__bounded__(__string__,1,3)));
void strmode(int, char *);
int timingsafe_bcmp(const void *, const void *, size_t);
int timingsafe_memcmp(const void *, const void *, size_t);
char *strcasestr(const char *, const char *);
void *memrchr(const void *, int, size_t);
#endif /* _COMPAT_STRING_H_ */
#include_next <string.h>

View file

@ -0,0 +1,94 @@
#include <sys/vfs.h>
#include_next <sys/mount.h>
#ifndef _COMPAT_SYS_MOUNT_H_
#define _COMPAT_SYS_MOUNT_H_
#include <stdlib.h>
/*
* Flags for various system call interfaces.
*
* waitfor flags to vfs_sync() and getfsstat()
*/
#define MNT_NOWAIT 1
#define MNT_WAIT 2
#define MNT_LAZY 3
/*
* Flags set by internal operations.
*/
#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */
#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */
#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */
/*
* file system statistics
*/
#define MFSNAMELEN 16 /* length of fs type name, including nul */
#define MNAMELEN 90 /* length of buffer for returned name */
/*
* Mount flags.
*
* Unmount uses MNT_FORCE flag.
*/
#define MNT_RDONLY 0x00000001 /* read only filesystem */
#define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */
#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
#define MNT_NODEV 0x00000010 /* don't interpret special files */
#define MNT_NOPERM 0x00000020 /* don't enforce permission checks */
#define MNT_ASYNC 0x00000040 /* file system written asynchronously */
#define MNT_WXALLOWED 0x00000800 /* filesystem allows W|X mappings */
/*
* File system types.
*/
#define MOUNT_FFS "ffs" /* UNIX "Fast" Filesystem */
#define MOUNT_UFS MOUNT_FFS /* for compatibility */
#define MOUNT_NFS "nfs" /* Network Filesystem */
#define MOUNT_MFS "mfs" /* Memory Filesystem */
#define MOUNT_MSDOS "msdos" /* MSDOS Filesystem */
#define MOUNT_AFS "afs" /* Andrew Filesystem */
#define MOUNT_CD9660 "cd9660" /* ISO9660 (aka CDROM) Filesystem */
#define MOUNT_EXT2FS "ext2fs" /* Second Extended Filesystem */
#define MOUNT_NCPFS "ncpfs" /* NetWare Network File System */
#define MOUNT_NTFS "ntfs" /* NTFS */
#define MOUNT_UDF "udf" /* UDF */
#define MOUNT_TMPFS "tmpfs" /* tmpfs */
#define MOUNT_FUSEFS "fuse" /* FUSE */
union mount_info {
};
struct openbsd_statfs {
struct statfs buf;
dev_t st_dev;
char f_fstypename[MFSNAMELEN]; /* fs type name */
char f_mntonname[MNAMELEN]; /* directory on which mounted */
char f_mntfromname[MNAMELEN]; /* mounted file system */
char f_mntfromspec[MNAMELEN]; /* special for mount request */
union mount_info mount_info; /* per-filesystem mount options */
};
#ifdef __NEED_OPENBSD_statfs
#define statfs openbsd_statfs
#define f_blocks buf.f_blocks
#define f_bsize buf.f_bsize
#define f_bfree buf.f_bfree
#define f_bavail buf.f_bavail
#define f_files buf.f_files
#define f_ffree buf.f_ffree
#define f_flags buf.f_flags
#endif /* !__NEED_OPENBSD_statfs */
int getmntinfo(struct openbsd_statfs **, int);
int getfsstat(struct openbsd_statfs *, size_t, int);
int openbsd_statfs(const char *, struct openbsd_statfs *);
#endif /* _COMPAT_SYS_MOUNT_H_ */

121
include/openbsd/sys/proc.h Normal file
View file

@ -0,0 +1,121 @@
/* $OpenBSD: proc.h,v 1.235 2017/02/14 10:31:15 mpi Exp $ */
/* $NetBSD: proc.h,v 1.44 1996/04/22 01:23:21 christos Exp $ */
/*-
* Copyright (c) 1986, 1989, 1991, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* 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.
*
* @(#)proc.h 8.8 (Berkeley) 1/21/94
*/
#ifndef _SYS_PROC_H_
#define _SYS_PROC_H_
#include <sys/queue.h>
/*
* These flags are kept in ps_flags.
*/
#define PS_CONTROLT 0x00000001 /* Has a controlling terminal. */
#define PS_EXEC 0x00000002 /* Process called exec. */
#define PS_INEXEC 0x00000004 /* Process is doing an exec right now */
#define PS_EXITING 0x00000008 /* Process is exiting. */
#define PS_SUGID 0x00000010 /* Had set id privs since last exec. */
#define PS_SUGIDEXEC 0x00000020 /* last execve() was set[ug]id */
#define PS_PPWAIT 0x00000040 /* Parent waits for exec/exit. */
#define PS_ISPWAIT 0x00000080 /* Is parent of PPWAIT child. */
#define PS_PROFIL 0x00000100 /* Has started profiling. */
#define PS_TRACED 0x00000200 /* Being ptraced. */
#define PS_WAITED 0x00000400 /* Stopped proc was waited for. */
#define PS_COREDUMP 0x00000800 /* Busy coredumping */
#define PS_SINGLEEXIT 0x00001000 /* Other threads must die. */
#define PS_SINGLEUNWIND 0x00002000 /* Other threads must unwind. */
#define PS_NOZOMBIE 0x00004000 /* No signal or zombie at exit. */
#define PS_STOPPED 0x00008000 /* Just stopped, need sig to parent. */
#define PS_SYSTEM 0x00010000 /* No sigs, stats or swapping. */
#define PS_EMBRYO 0x00020000 /* New process, not yet fledged */
#define PS_ZOMBIE 0x00040000 /* Dead and ready to be waited for */
#define PS_NOBROADCASTKILL 0x00080000 /* Process excluded from kill -1. */
#define PS_PLEDGE 0x00100000 /* Has called pledge(2) */
#define PS_WXNEEDED 0x00200000 /* Process may violate W^X */
#define PS_BITS \
("\20" "\01CONTROLT" "\02EXEC" "\03INEXEC" "\04EXITING" "\05SUGID" \
"\06SUGIDEXEC" "\07PPWAIT" "\010ISPWAIT" "\011PROFIL" "\012TRACED" \
"\013WAITED" "\014COREDUMP" "\015SINGLEEXIT" "\016SINGLEUNWIND" \
"\017NOZOMBIE" "\020STOPPED" "\021SYSTEM" "\022EMBRYO" "\023ZOMBIE" \
"\024NOBROADCASTKILL" "\025PLEDGE" "\026WXNEEDED")
/* Status values. */
#define SIDL 1 /* Thread being created by fork. */
#define SRUN 2 /* Currently runnable. */
#define SSLEEP 3 /* Sleeping on an address. */
#define SSTOP 4 /* Debugging or suspension. */
#define SZOMB 5 /* unused */
#define SDEAD 6 /* Thread is almost gone */
#define SONPROC 7 /* Thread is currently on a CPU. */
#define P_ZOMBIE(p) ((p)->p_stat == SDEAD)
#define P_HASSIBLING(p) (TAILQ_FIRST(&(p)->p_p->ps_threads) != (p) || \
TAILQ_NEXT((p), p_thr_link) != NULL)
/*
* These flags are per-thread and kept in p_flag
*/
#define P_INKTR 0x00000001 /* In a ktrace op, don't recurse */
#define P_PROFPEND 0x00000002 /* SIGPROF needs to be posted */
#define P_ALRMPEND 0x00000004 /* SIGVTALRM needs to be posted */
#define P_SIGSUSPEND 0x00000008 /* Need to restore before-suspend mask*/
#define P_CANTSLEEP 0x00000010 /* insomniac thread */
#define P_SELECT 0x00000040 /* Selecting; wakeup/waiting danger. */
#define P_SINTR 0x00000080 /* Sleep is interruptible. */
#define P_SYSTEM 0x00000200 /* No sigs, stats or swapping. */
#define P_TIMEOUT 0x00000400 /* Timing out during sleep. */
#define P_WEXIT 0x00002000 /* Working on exiting. */
#define P_OWEUPC 0x00008000 /* Owe proc an addupc() at next ast. */
#define P_SUSPSINGLE 0x00080000 /* Need to stop for single threading. */
#define P_CONTINUED 0x00800000 /* Proc has continued from a stopped state. */
#define P_THREAD 0x04000000 /* Only a thread, not a real process */
#define P_SUSPSIG 0x08000000 /* Stopped from signal. */
#define P_SOFTDEP 0x10000000 /* Stuck processing softdep worklist */
#define P_CPUPEG 0x40000000 /* Do not move to another cpu. */
#define P_BITS \
("\20" "\01INKTR" "\02PROFPEND" "\03ALRMPEND" "\04SIGSUSPEND" \
"\05CANTSLEEP" "\07SELECT" "\010SINTR" "\012SYSTEM" "\013TIMEOUT" \
"\016WEXIT" "\020OWEUPC" "\024SUSPSINGLE" "\027XX" \
"\030CONTINUED" "\033THREAD" "\034SUSPSIG" "\035SOFTDEP" "\037CPUPEG")
#define THREAD_PID_OFFSET 100000
#endif /* !_SYS_PROC_H_ */

533
include/openbsd/sys/queue.h Normal file
View file

@ -0,0 +1,533 @@
/* $OpenBSD: queue.h,v 1.43 2015/12/28 19:38:40 millert Exp $ */
/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */
/*
* Copyright (c) 1991, 1993
* 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.
*
* @(#)queue.h 8.5 (Berkeley) 8/20/94
*/
#ifndef _SYS_QUEUE_H_
#define _SYS_QUEUE_H_
/*
* This file defines five types of data structures: singly-linked lists,
* lists, simple queues, tail queues and XOR simple queues.
*
*
* A singly-linked list is headed by a single forward pointer. The elements
* are singly linked for minimum space and pointer manipulation overhead at
* the expense of O(n) removal for arbitrary elements. New elements can be
* added to the list after an existing element or at the head of the list.
* Elements being removed from the head of the list should use the explicit
* macro for this purpose for optimum efficiency. A singly-linked list may
* only be traversed in the forward direction. Singly-linked lists are ideal
* for applications with large datasets and few or no removals or for
* implementing a LIFO queue.
*
* A list is headed by a single forward pointer (or an array of forward
* pointers for a hash table header). The elements are doubly linked
* so that an arbitrary element can be removed without a need to
* traverse the list. New elements can be added to the list before
* or after an existing element or at the head of the list. A list
* may only be traversed in the forward direction.
*
* A simple queue is headed by a pair of pointers, one to the head of the
* list and the other to the tail of the list. The elements are singly
* linked to save space, so elements can only be removed from the
* head of the list. New elements can be added to the list before or after
* an existing element, at the head of the list, or at the end of the
* list. A simple queue may only be traversed in the forward direction.
*
* A tail queue is headed by a pair of pointers, one to the head of the
* list and the other to the tail of the list. The elements are doubly
* linked so that an arbitrary element can be removed without a need to
* traverse the list. New elements can be added to the list before or
* after an existing element, at the head of the list, or at the end of
* the list. A tail queue may be traversed in either direction.
*
* An XOR simple queue is used in the same way as a regular simple queue.
* The difference is that the head structure also includes a "cookie" that
* is XOR'd with the queue pointer (first, last or next) to generate the
* real pointer value.
*
* For details on the use of these macros, see the queue(3) manual page.
*/
#if defined(QUEUE_MACRO_DEBUG) || (defined(_KERNEL) && defined(DIAGNOSTIC))
#define _Q_INVALIDATE(a) (a) = ((void *)-1)
#else
#define _Q_INVALIDATE(a)
#endif
/*
* Singly-linked List definitions.
*/
#define SLIST_HEAD(name, type) \
struct name { \
struct type *slh_first; /* first element */ \
}
#define SLIST_HEAD_INITIALIZER(head) \
{ NULL }
#define SLIST_ENTRY(type) \
struct { \
struct type *sle_next; /* next element */ \
}
/*
* Singly-linked List access methods.
*/
#define SLIST_FIRST(head) ((head)->slh_first)
#define SLIST_END(head) NULL
#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head))
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
#define SLIST_FOREACH(var, head, field) \
for((var) = SLIST_FIRST(head); \
(var) != SLIST_END(head); \
(var) = SLIST_NEXT(var, field))
#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = SLIST_FIRST(head); \
(var) && ((tvar) = SLIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* Singly-linked List functions.
*/
#define SLIST_INIT(head) { \
SLIST_FIRST(head) = SLIST_END(head); \
}
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
(elm)->field.sle_next = (slistelm)->field.sle_next; \
(slistelm)->field.sle_next = (elm); \
} while (0)
#define SLIST_INSERT_HEAD(head, elm, field) do { \
(elm)->field.sle_next = (head)->slh_first; \
(head)->slh_first = (elm); \
} while (0)
#define SLIST_REMOVE_AFTER(elm, field) do { \
(elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \
} while (0)
#define SLIST_REMOVE_HEAD(head, field) do { \
(head)->slh_first = (head)->slh_first->field.sle_next; \
} while (0)
#define SLIST_REMOVE(head, elm, type, field) do { \
if ((head)->slh_first == (elm)) { \
SLIST_REMOVE_HEAD((head), field); \
} else { \
struct type *curelm = (head)->slh_first; \
\
while (curelm->field.sle_next != (elm)) \
curelm = curelm->field.sle_next; \
curelm->field.sle_next = \
curelm->field.sle_next->field.sle_next; \
} \
_Q_INVALIDATE((elm)->field.sle_next); \
} while (0)
/*
* List definitions.
*/
#define LIST_HEAD(name, type) \
struct name { \
struct type *lh_first; /* first element */ \
}
#define LIST_HEAD_INITIALIZER(head) \
{ NULL }
#define LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
/*
* List access methods.
*/
#define LIST_FIRST(head) ((head)->lh_first)
#define LIST_END(head) NULL
#define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head))
#define LIST_NEXT(elm, field) ((elm)->field.le_next)
#define LIST_FOREACH(var, head, field) \
for((var) = LIST_FIRST(head); \
(var)!= LIST_END(head); \
(var) = LIST_NEXT(var, field))
#define LIST_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = LIST_FIRST(head); \
(var) && ((tvar) = LIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* List functions.
*/
#define LIST_INIT(head) do { \
LIST_FIRST(head) = LIST_END(head); \
} while (0)
#define LIST_INSERT_AFTER(listelm, elm, field) do { \
if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
(listelm)->field.le_next->field.le_prev = \
&(elm)->field.le_next; \
(listelm)->field.le_next = (elm); \
(elm)->field.le_prev = &(listelm)->field.le_next; \
} while (0)
#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.le_prev = (listelm)->field.le_prev; \
(elm)->field.le_next = (listelm); \
*(listelm)->field.le_prev = (elm); \
(listelm)->field.le_prev = &(elm)->field.le_next; \
} while (0)
#define LIST_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
(head)->lh_first = (elm); \
(elm)->field.le_prev = &(head)->lh_first; \
} while (0)
#define LIST_REMOVE(elm, field) do { \
if ((elm)->field.le_next != NULL) \
(elm)->field.le_next->field.le_prev = \
(elm)->field.le_prev; \
*(elm)->field.le_prev = (elm)->field.le_next; \
_Q_INVALIDATE((elm)->field.le_prev); \
_Q_INVALIDATE((elm)->field.le_next); \
} while (0)
#define LIST_REPLACE(elm, elm2, field) do { \
if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
(elm2)->field.le_next->field.le_prev = \
&(elm2)->field.le_next; \
(elm2)->field.le_prev = (elm)->field.le_prev; \
*(elm2)->field.le_prev = (elm2); \
_Q_INVALIDATE((elm)->field.le_prev); \
_Q_INVALIDATE((elm)->field.le_next); \
} while (0)
/*
* Simple queue definitions.
*/
#define SIMPLEQ_HEAD(name, type) \
struct name { \
struct type *sqh_first; /* first element */ \
struct type **sqh_last; /* addr of last next element */ \
}
#define SIMPLEQ_HEAD_INITIALIZER(head) \
{ NULL, &(head).sqh_first }
#define SIMPLEQ_ENTRY(type) \
struct { \
struct type *sqe_next; /* next element */ \
}
/*
* Simple queue access methods.
*/
#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
#define SIMPLEQ_END(head) NULL
#define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head))
#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
#define SIMPLEQ_FOREACH(var, head, field) \
for((var) = SIMPLEQ_FIRST(head); \
(var) != SIMPLEQ_END(head); \
(var) = SIMPLEQ_NEXT(var, field))
#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = SIMPLEQ_FIRST(head); \
(var) && ((tvar) = SIMPLEQ_NEXT(var, field), 1); \
(var) = (tvar))
/*
* Simple queue functions.
*/
#define SIMPLEQ_INIT(head) do { \
(head)->sqh_first = NULL; \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
(head)->sqh_last = &(elm)->field.sqe_next; \
(head)->sqh_first = (elm); \
} while (0)
#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
(elm)->field.sqe_next = NULL; \
*(head)->sqh_last = (elm); \
(head)->sqh_last = &(elm)->field.sqe_next; \
} while (0)
#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
(head)->sqh_last = &(elm)->field.sqe_next; \
(listelm)->field.sqe_next = (elm); \
} while (0)
#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
== NULL) \
(head)->sqh_last = &(elm)->field.sqe_next; \
} while (0)
#define SIMPLEQ_CONCAT(head1, head2) do { \
if (!SIMPLEQ_EMPTY((head2))) { \
*(head1)->sqh_last = (head2)->sqh_first; \
(head1)->sqh_last = (head2)->sqh_last; \
SIMPLEQ_INIT((head2)); \
} \
} while (0)
/*
* XOR Simple queue definitions.
*/
#define XSIMPLEQ_HEAD(name, type) \
struct name { \
struct type *sqx_first; /* first element */ \
struct type **sqx_last; /* addr of last next element */ \
unsigned long sqx_cookie; \
}
#define XSIMPLEQ_ENTRY(type) \
struct { \
struct type *sqx_next; /* next element */ \
}
/*
* XOR Simple queue access methods.
*/
#define XSIMPLEQ_XOR(head, ptr) ((__typeof(ptr))((head)->sqx_cookie ^ \
(unsigned long)(ptr)))
#define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head, ((head)->sqx_first))
#define XSIMPLEQ_END(head) NULL
#define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) == XSIMPLEQ_END(head))
#define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head, ((elm)->field.sqx_next))
#define XSIMPLEQ_FOREACH(var, head, field) \
for ((var) = XSIMPLEQ_FIRST(head); \
(var) != XSIMPLEQ_END(head); \
(var) = XSIMPLEQ_NEXT(head, var, field))
#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = XSIMPLEQ_FIRST(head); \
(var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1); \
(var) = (tvar))
/*
* XOR Simple queue functions.
*/
#define XSIMPLEQ_INIT(head) do { \
arc4random_buf(&(head)->sqx_cookie, sizeof((head)->sqx_cookie)); \
(head)->sqx_first = XSIMPLEQ_XOR(head, NULL); \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
} while (0)
#define XSIMPLEQ_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.sqx_next = (head)->sqx_first) == \
XSIMPLEQ_XOR(head, NULL)) \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
(head)->sqx_first = XSIMPLEQ_XOR(head, (elm)); \
} while (0)
#define XSIMPLEQ_INSERT_TAIL(head, elm, field) do { \
(elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL); \
*(XSIMPLEQ_XOR(head, (head)->sqx_last)) = XSIMPLEQ_XOR(head, (elm)); \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
} while (0)
#define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
if (((elm)->field.sqx_next = (listelm)->field.sqx_next) == \
XSIMPLEQ_XOR(head, NULL)) \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
(listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm)); \
} while (0)
#define XSIMPLEQ_REMOVE_HEAD(head, field) do { \
if (((head)->sqx_first = XSIMPLEQ_XOR(head, \
(head)->sqx_first)->field.sqx_next) == XSIMPLEQ_XOR(head, NULL)) \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
} while (0)
#define XSIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
if (((elm)->field.sqx_next = XSIMPLEQ_XOR(head, \
(elm)->field.sqx_next)->field.sqx_next) \
== XSIMPLEQ_XOR(head, NULL)) \
(head)->sqx_last = \
XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
} while (0)
/*
* Tail queue definitions.
*/
#define TAILQ_HEAD(name, type) \
struct name { \
struct type *tqh_first; /* first element */ \
struct type **tqh_last; /* addr of last next element */ \
}
#define TAILQ_HEAD_INITIALIZER(head) \
{ NULL, &(head).tqh_first }
#define TAILQ_ENTRY(type) \
struct { \
struct type *tqe_next; /* next element */ \
struct type **tqe_prev; /* address of previous next element */ \
}
/*
* Tail queue access methods.
*/
#define TAILQ_FIRST(head) ((head)->tqh_first)
#define TAILQ_END(head) NULL
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
#define TAILQ_LAST(head, headname) \
(*(((struct headname *)((head)->tqh_last))->tqh_last))
/* XXX */
#define TAILQ_PREV(elm, headname, field) \
(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
#define TAILQ_EMPTY(head) \
(TAILQ_FIRST(head) == TAILQ_END(head))
#define TAILQ_FOREACH(var, head, field) \
for((var) = TAILQ_FIRST(head); \
(var) != TAILQ_END(head); \
(var) = TAILQ_NEXT(var, field))
#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = TAILQ_FIRST(head); \
(var) != TAILQ_END(head) && \
((tvar) = TAILQ_NEXT(var, field), 1); \
(var) = (tvar))
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
for((var) = TAILQ_LAST(head, headname); \
(var) != TAILQ_END(head); \
(var) = TAILQ_PREV(var, headname, field))
#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
for ((var) = TAILQ_LAST(head, headname); \
(var) != TAILQ_END(head) && \
((tvar) = TAILQ_PREV(var, headname, field), 1); \
(var) = (tvar))
/*
* Tail queue functions.
*/
#define TAILQ_INIT(head) do { \
(head)->tqh_first = NULL; \
(head)->tqh_last = &(head)->tqh_first; \
} while (0)
#define TAILQ_INSERT_HEAD(head, elm, field) do { \
if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
(head)->tqh_first->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(head)->tqh_first = (elm); \
(elm)->field.tqe_prev = &(head)->tqh_first; \
} while (0)
#define TAILQ_INSERT_TAIL(head, elm, field) do { \
(elm)->field.tqe_next = NULL; \
(elm)->field.tqe_prev = (head)->tqh_last; \
*(head)->tqh_last = (elm); \
(head)->tqh_last = &(elm)->field.tqe_next; \
} while (0)
#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
(elm)->field.tqe_next->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(listelm)->field.tqe_next = (elm); \
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
} while (0)
#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
(elm)->field.tqe_next = (listelm); \
*(listelm)->field.tqe_prev = (elm); \
(listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
} while (0)
#define TAILQ_REMOVE(head, elm, field) do { \
if (((elm)->field.tqe_next) != NULL) \
(elm)->field.tqe_next->field.tqe_prev = \
(elm)->field.tqe_prev; \
else \
(head)->tqh_last = (elm)->field.tqe_prev; \
*(elm)->field.tqe_prev = (elm)->field.tqe_next; \
_Q_INVALIDATE((elm)->field.tqe_prev); \
_Q_INVALIDATE((elm)->field.tqe_next); \
} while (0)
#define TAILQ_REPLACE(head, elm, elm2, field) do { \
if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \
(elm2)->field.tqe_next->field.tqe_prev = \
&(elm2)->field.tqe_next; \
else \
(head)->tqh_last = &(elm2)->field.tqe_next; \
(elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
*(elm2)->field.tqe_prev = (elm2); \
_Q_INVALIDATE((elm)->field.tqe_prev); \
_Q_INVALIDATE((elm)->field.tqe_next); \
} while (0)
#define TAILQ_CONCAT(head1, head2, field) do { \
if (!TAILQ_EMPTY(head2)) { \
*(head1)->tqh_last = (head2)->tqh_first; \
(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
(head1)->tqh_last = (head2)->tqh_last; \
TAILQ_INIT((head2)); \
} \
} while (0)
#endif /* !_SYS_QUEUE_H_ */

View file

@ -0,0 +1,32 @@
#ifndef _COMPAT_SYS_STAT_H_
#define _COMPAT_SYS_STAT_H_
#define S_ISTXT S_ISVTX /* sticky bit */
#ifndef st_atimespec
#define st_atimespec st_atim
#endif
#ifndef st_atimensec
#define st_atimensec st_atim.tv_nsec
#endif
#ifndef st_mtimespec
#define st_mtimespec st_mtim
#endif
#ifndef st_mtimensec
#define st_mtimensec st_mtim.tv_nsec
#endif
#ifndef st_ctimespec
#define st_ctimespec st_ctim
#endif
#ifndef st_ctimensec
#define st_ctimensec st_ctim.tv_nsec
#endif
#endif /* !_COMPAT_SYS_STAT_H_ */
#include_next <sys/stat.h>

View file

@ -0,0 +1,438 @@
/* $OpenBSD: sysctl.h,v 1.171 2017/01/21 05:42:03 guenther Exp $ */
/* $NetBSD: sysctl.h,v 1.16 1996/04/09 20:55:36 cgd Exp $ */
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Mike Karels at Berkeley Software Design, Inc.
*
* 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.
*
* @(#)sysctl.h 8.2 (Berkeley) 3/30/95
*/
#ifndef _COMPAT_SYS_SYSCTL_H_
#define _COMPAT_SYS_SYSCTL_H_
#include <stdint.h>
/*
* KERN_PROC subtypes
*/
#define KERN_PROC_ALL 0 /* everything but kernel threads */
#define KERN_PROC_PID 1 /* by process id */
#define KERN_PROC_PGRP 2 /* by process group id */
#define KERN_PROC_SESSION 3 /* by session of pid */
#define KERN_PROC_TTY 4 /* by controlling tty */
#define KERN_PROC_UID 5 /* by effective uid */
#define KERN_PROC_RUID 6 /* by real uid */
#define KERN_PROC_KTHREAD 7 /* also return kernel threads */
#define KERN_PROC_SHOW_THREADS 0x40000000/* also return normal threads */
/*
* KERN_PROC_ARGS subtypes
*/
#define KERN_PROC_ARGV 1
#define KERN_PROC_NARGV 2
#define KERN_PROC_ENV 3
#define KERN_PROC_NENV 4
/*
* KERN_PROC subtype ops return arrays of relatively fixed size
* structures of process info. Use 8 byte alignment, and new
* elements should only be added to the end of this structure so
* binary compatibility can be preserved.
*/
#define KI_NGROUPS 16
#define KI_MAXCOMLEN 24 /* extra for 8 byte alignment */
#define KI_WMESGLEN 8
#define KI_MAXLOGNAME 32
#define KI_EMULNAMELEN 8
#define KI_NOCPU (~(u_int64_t)0)
struct kinfo_proc {
u_int64_t p_forw; /* PTR: linked run/sleep queue. */
u_int64_t p_back;
u_int64_t p_paddr; /* PTR: address of proc */
u_int64_t p_addr; /* PTR: Kernel virtual addr of u-area */
u_int64_t p_fd; /* PTR: Ptr to open files structure. */
u_int64_t p_stats; /* unused, always zero. */
u_int64_t p_limit; /* PTR: Process limits. */
u_int64_t p_vmspace; /* PTR: Address space. */
u_int64_t p_sigacts; /* PTR: Signal actions, state */
u_int64_t p_sess; /* PTR: session pointer */
u_int64_t p_tsess; /* PTR: tty session pointer */
u_int64_t p_ru; /* PTR: Exit information. XXX */
int32_t p_eflag; /* LONG: extra kinfo_proc flags */
#define EPROC_CTTY 0x01 /* controlling tty vnode active */
#define EPROC_SLEADER 0x02 /* session leader */
int32_t p_exitsig; /* unused, always zero. */
int32_t p_flag; /* INT: P_* flags. */
int32_t p_pid; /* PID_T: Process identifier. */
int32_t p_ppid; /* PID_T: Parent process id */
int32_t p_sid; /* PID_T: session id */
int32_t p__pgid; /* PID_T: process group id */
/* XXX: <sys/proc.h> hijacks p_pgid */
int32_t p_tpgid; /* PID_T: tty process group id */
u_int32_t p_uid; /* UID_T: effective user id */
u_int32_t p_ruid; /* UID_T: real user id */
u_int32_t p_gid; /* GID_T: effective group id */
u_int32_t p_rgid; /* GID_T: real group id */
u_int32_t p_groups[KI_NGROUPS]; /* GID_T: groups */
int16_t p_ngroups; /* SHORT: number of groups */
int16_t p_jobc; /* SHORT: job control counter */
u_int32_t p_tdev; /* DEV_T: controlling tty dev */
u_int32_t p_estcpu; /* U_INT: Time averaged value of p_cpticks. */
u_int32_t p_rtime_sec; /* STRUCT TIMEVAL: Real time. */
u_int32_t p_rtime_usec; /* STRUCT TIMEVAL: Real time. */
int32_t p_cpticks; /* INT: Ticks of cpu time. */
u_int32_t p_pctcpu; /* FIXPT_T: %cpu for this process */
u_int32_t p_swtime; /* unused, always zero */
u_int32_t p_slptime; /* U_INT: Time since last blocked. */
int32_t p_schedflags; /* INT: PSCHED_* flags */
u_int64_t p_uticks; /* U_QUAD_T: Statclock hits in user mode. */
u_int64_t p_sticks; /* U_QUAD_T: Statclock hits in system mode. */
u_int64_t p_iticks; /* U_QUAD_T: Statclock hits processing intr. */
u_int64_t p_tracep; /* PTR: Trace to vnode or file */
int32_t p_traceflag; /* INT: Kernel trace points. */
int32_t p_holdcnt; /* INT: If non-zero, don't swap. */
int32_t p_siglist; /* INT: Signals arrived but not delivered. */
u_int32_t p_sigmask; /* SIGSET_T: Current signal mask. */
u_int32_t p_sigignore; /* SIGSET_T: Signals being ignored. */
u_int32_t p_sigcatch; /* SIGSET_T: Signals being caught by user. */
int8_t p_stat; /* CHAR: S* process status (from LWP). */
u_int8_t p_priority; /* U_CHAR: Process priority. */
u_int8_t p_usrpri; /* U_CHAR: User-priority based on p_estcpu and ps_nice. */
u_int8_t p_nice; /* U_CHAR: Process "nice" value. */
u_int16_t p_xstat; /* U_SHORT: Exit status for wait; also stop signal. */
u_int16_t p_acflag; /* U_SHORT: Accounting flags. */
char p_comm[KI_MAXCOMLEN];
char p_wmesg[KI_WMESGLEN]; /* wchan message */
u_int64_t p_wchan; /* PTR: sleep address. */
char p_login[KI_MAXLOGNAME]; /* setlogin() name */
int32_t p_vm_rssize; /* SEGSZ_T: current resident set size in pages */
int32_t p_vm_tsize; /* SEGSZ_T: text size (pages) */
int32_t p_vm_dsize; /* SEGSZ_T: data size (pages) */
int32_t p_vm_ssize; /* SEGSZ_T: stack size (pages) */
int64_t p_uvalid; /* CHAR: following p_u* members from struct user are valid */
/* XXX 64 bits for alignment */
u_int64_t p_ustart_sec; /* STRUCT TIMEVAL: starting time. */
u_int32_t p_ustart_usec; /* STRUCT TIMEVAL: starting time. */
u_int32_t p_uutime_sec; /* STRUCT TIMEVAL: user time. */
u_int32_t p_uutime_usec; /* STRUCT TIMEVAL: user time. */
u_int32_t p_ustime_sec; /* STRUCT TIMEVAL: system time. */
u_int32_t p_ustime_usec; /* STRUCT TIMEVAL: system time. */
u_int64_t p_uru_maxrss; /* LONG: max resident set size. */
u_int64_t p_uru_ixrss; /* LONG: integral shared memory size. */
u_int64_t p_uru_idrss; /* LONG: integral unshared data ". */
u_int64_t p_uru_isrss; /* LONG: integral unshared stack ". */
u_int64_t p_uru_minflt; /* LONG: page reclaims. */
u_int64_t p_uru_majflt; /* LONG: page faults. */
u_int64_t p_uru_nswap; /* LONG: swaps. */
u_int64_t p_uru_inblock; /* LONG: block input operations. */
u_int64_t p_uru_oublock; /* LONG: block output operations. */
u_int64_t p_uru_msgsnd; /* LONG: messages sent. */
u_int64_t p_uru_msgrcv; /* LONG: messages received. */
u_int64_t p_uru_nsignals; /* LONG: signals received. */
u_int64_t p_uru_nvcsw; /* LONG: voluntary context switches. */
u_int64_t p_uru_nivcsw; /* LONG: involuntary ". */
u_int32_t p_uctime_sec; /* STRUCT TIMEVAL: child u+s time. */
u_int32_t p_uctime_usec; /* STRUCT TIMEVAL: child u+s time. */
int32_t p_psflags; /* INT: PS_* flags on the process. */
int32_t p_spare; /* INT: unused. */
u_int32_t p_svuid; /* UID_T: saved user id */
u_int32_t p_svgid; /* GID_T: saved group id */
char p_emul[KI_EMULNAMELEN]; /* syscall emulation name */
u_int64_t p_rlim_rss_cur; /* RLIM_T: soft limit for rss */
u_int64_t p_cpuid; /* LONG: CPU id */
u_int64_t p_vm_map_size; /* VSIZE_T: virtual size */
int32_t p_tid; /* PID_T: Thread identifier. */
u_int32_t p_rtableid; /* U_INT: Routing table identifier. */
};
/*
* VM address range entry, matching struct vm_map_entry. Useful for
* debuggers to know process's addresses.
*
* To iterate entries, set the last kve_end as the base address into
* kve_start.
*/
struct kinfo_vmentry {
u_long kve_start; /* vaddr_t */
u_long kve_end; /* vaddr_t */
u_long kve_guard; /* vsize_t */
u_long kve_fspace; /* vsize_t */
u_long kve_fspace_augment; /* vsize_t */
u_int64_t kve_offset; /* voff_t */
int kve_wired_count;
int kve_etype;
int kve_protection;
int kve_max_protection;
int kve_advice;
int kve_inheritance;
u_int8_t kve_flags; /* u_int8_t */
};
#define KVE_ET_OBJ 0x00000001
#define KVE_ET_SUBMAP 0x00000002
#define KVE_ET_COPYONWRITE 0x00000004
#define KVE_ET_NEEDSCOPY 0x00000008
#define KVE_ET_HOLE 0x00000010
#define KVE_ET_NOFAULT 0x00000020
#define KVE_ET_FREEMAPPED 0x00000080
#define KVE_PROT_NONE 0x00000000
#define KVE_PROT_READ 0x00000001
#define KVE_PROT_WRITE 0x00000002
#define KVE_PROT_EXEC 0x00000004
#define KVE_ADV_NORMAL 0x00000000
#define KVE_ADV_RANDOM 0x00000001
#define KVE_ADV_SEQUENTIAL 0x00000002
#define KVE_INH_SHARE 0x00000000
#define KVE_INH_COPY 0x00000010
#define KVE_INH_NONE 0x00000020
#define KVE_INH_ZERO 0x00000030
#define KVE_F_STATIC 0x01
#define KVE_F_KMEM 0x02
/*
* kern.file returns an array of these structures, which are designed
* both to be immune to 32/64 bit emulation issues and to
* provide backwards compatibility. The order differs slightly from
* that of the real struct file, and some fields are taken from other
* structures (struct vnode, struct proc) in order to make the file
* information more useful.
*/
#define KERN_FILE_BYFILE 1
#define KERN_FILE_BYPID 2
#define KERN_FILE_BYUID 3
#define KERN_FILESLOP 10
#define KERN_FILE_TEXT -1
#define KERN_FILE_CDIR -2
#define KERN_FILE_RDIR -3
#define KERN_FILE_TRACE -4
#define KI_MNAMELEN 96 /* rounded up from 90 */
#define KI_UNPPATHLEN 104
struct kinfo_file {
uint64_t f_fileaddr; /* PTR: address of struct file */
uint32_t f_flag; /* SHORT: flags (see fcntl.h) */
uint32_t f_iflags; /* INT: internal flags */
uint32_t f_type; /* INT: descriptor type */
uint32_t f_count; /* UINT: reference count */
uint32_t f_msgcount; /* UINT: references from msg queue */
uint32_t f_usecount; /* INT: number active users */
uint64_t f_ucred; /* PTR: creds for descriptor */
uint32_t f_uid; /* UID_T: descriptor credentials */
uint32_t f_gid; /* GID_T: descriptor credentials */
uint64_t f_ops; /* PTR: address of fileops */
uint64_t f_offset; /* OFF_T: offset */
uint64_t f_data; /* PTR: descriptor data */
uint64_t f_rxfer; /* UINT64: number of read xfers */
uint64_t f_rwfer; /* UINT64: number of write xfers */
uint64_t f_seek; /* UINT64: number of seek operations */
uint64_t f_rbytes; /* UINT64: total bytes read */
uint64_t f_wbytes; /* UINT64: total bytes written */
/* information about the vnode associated with this file */
uint64_t v_un; /* PTR: socket, specinfo, etc */
uint32_t v_type; /* ENUM: vnode type */
uint32_t v_tag; /* ENUM: type of underlying data */
uint32_t v_flag; /* UINT: vnode flags */
uint32_t va_rdev; /* DEV_T: raw device */
uint64_t v_data; /* PTR: private data for fs */
uint64_t v_mount; /* PTR: mount info for fs */
uint64_t va_fileid; /* LONG: file id */
uint64_t va_size; /* UINT64_T: file size in bytes */
uint32_t va_mode; /* MODE_T: file access mode and type */
uint32_t va_fsid; /* DEV_T: filesystem device */
char f_mntonname[KI_MNAMELEN];
/* socket information */
uint32_t so_type; /* SHORT: socket type */
uint32_t so_state; /* SHORT: socket state */
uint64_t so_pcb; /* PTR: socket pcb */
/* for non-root: -1 if not NULL */
uint32_t so_protocol; /* SHORT: socket protocol type */
uint32_t so_family; /* INT: socket domain family */
uint64_t inp_ppcb; /* PTR: pointer to per-protocol pcb */
uint32_t inp_lport; /* SHORT: local inet port */
uint32_t inp_laddru[4]; /* STRUCT: local inet addr */
uint32_t inp_fport; /* SHORT: foreign inet port */
uint32_t inp_faddru[4]; /* STRUCT: foreign inet addr */
uint64_t unp_conn; /* PTR: connected socket cntrl block */
/* pipe information */
uint64_t pipe_peer; /* PTR: link with other direction */
uint32_t pipe_state; /* UINT: pipe status info */
/* kqueue information */
uint32_t kq_count; /* INT: number of pending events */
uint32_t kq_state; /* INT: kqueue status information */
uint32_t __unused1; /* INT: unused */
/* process information when retrieved via KERN_FILE_BY[PU]ID */
uint32_t p_pid; /* PID_T: process id */
int32_t fd_fd; /* INT: descriptor number */
uint32_t fd_ofileflags; /* CHAR: open file flags */
uint32_t p_uid; /* UID_T: process credentials */
uint32_t p_gid; /* GID_T: process credentials */
uint32_t p_tid; /* PID_T: thread id */
char p_comm[KI_MAXCOMLEN];
/* more socket information */
uint32_t inp_rtableid; /* UINT: Routing table identifier. */
uint64_t so_splice; /* PTR: f_data of spliced socket */
int64_t so_splicelen; /* OFF_T: already spliced count or */
/* -1 if this is target of splice */
uint64_t so_rcv_cc; /* LONG: chars in receive buf */
uint64_t so_snd_cc; /* LONG: chars in send buf */
uint64_t unp_refs; /* PTR: connected sockets */
uint64_t unp_nextref; /* PTR: link to next connected socket */
uint64_t unp_addr; /* PTR: address of the socket address */
char unp_path[KI_UNPPATHLEN];
uint32_t inp_proto; /* CHAR: raw protocol id */
uint32_t t_state; /* SHORT: tcp state */
uint64_t t_rcv_wnd; /* ULONG: tcp receive window */
uint64_t t_snd_wnd; /* ULONG: tcp send window */
uint64_t t_snd_cwnd; /* ULONG: congestion-controlled win */
uint32_t va_nlink; /* NLINK_T: number of references to file */
};
/*
* CTL_FS identifiers
*/
#define FS_POSIX 1 /* POSIX flags */
#define FS_MAXID 2
#define CTL_FS_NAMES { \
{ 0, 0 }, \
{ "posix", CTLTYPE_NODE }, \
}
/*
* CTL_FS identifiers
*/
#define FS_POSIX_SETUID 1 /* int: always clear SGID/SUID bit when owner change */
#define FS_POSIX_MAXID 2
#define CTL_FS_POSIX_NAMES { \
{ 0, 0 }, \
{ "setuid", CTLTYPE_INT }, \
}