mirror of
https://git.busybox.net/uClibc
synced 2025-10-14 01:32:00 +08:00
Initial revision
This commit is contained in:
481
COPYING.LIB
Normal file
481
COPYING.LIB
Normal file
@@ -0,0 +1,481 @@
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 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!
|
63
Makefile
Normal file
63
Makefile
Normal file
@@ -0,0 +1,63 @@
|
||||
DIRS = headers error gtermcap misc stdio2 time getent regexp string termios sysdeps \
|
||||
malloc-simple net rpc
|
||||
|
||||
all: libc.a crt0.o
|
||||
|
||||
libc.a: $(DIRS) dummy
|
||||
m68k-pic-coff-ranlib $@
|
||||
|
||||
crt0.o: crt
|
||||
|
||||
headers: dummy
|
||||
if [ ! -L "include/asm" ]; then ln -s ../../linux/include/asm include/asm ; fi
|
||||
if [ ! -L "include/net" ]; then ln -s ../../linux/include/net include/net ; fi
|
||||
if [ ! -L "include/linux" ]; then ln -s ../../linux/include/linux include/linux ; fi
|
||||
|
||||
error: dummy
|
||||
make -C error
|
||||
|
||||
gtermcap: dummy
|
||||
make -C gtermcap
|
||||
|
||||
misc: dummy
|
||||
make -C misc
|
||||
|
||||
stdio2: dummy
|
||||
make -C stdio2
|
||||
|
||||
time: dummy
|
||||
make -C time
|
||||
|
||||
getent: dummy
|
||||
make -C getent
|
||||
|
||||
regexp: dummy
|
||||
make -C regexp
|
||||
|
||||
string: dummy
|
||||
make -C string
|
||||
|
||||
termios: dummy
|
||||
make -C termios
|
||||
|
||||
sysdeps: dummy
|
||||
make -C sysdeps
|
||||
|
||||
malloc-simple: dummy
|
||||
make -C malloc-simple
|
||||
|
||||
net: dummy
|
||||
make -C net
|
||||
|
||||
rpc: dummy
|
||||
make -C rpc
|
||||
|
||||
crt: dummy
|
||||
make -C crt
|
||||
|
||||
dummy:
|
||||
|
||||
clean:
|
||||
-rm `find -name \*.[oa]` `find -name \*~` core
|
||||
-rm include/asm include/net include/linux
|
||||
|
115
include/a.out.h
Normal file
115
include/a.out.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/* Copyright (C) 1990-1996
|
||||
* This file is part of the ld86 command for Linux-86
|
||||
* It is distributed under the GNU Library General Public License.
|
||||
*
|
||||
* - This may actually be BSD or Minix code, can someone clarify please. -RDB
|
||||
*/
|
||||
|
||||
#ifndef __AOUT_H
|
||||
#define __AOUT_H
|
||||
|
||||
struct exec { /* a.out header */
|
||||
unsigned char a_magic[2]; /* magic number */
|
||||
unsigned char a_flags; /* flags, see below */
|
||||
unsigned char a_cpu; /* cpu id */
|
||||
unsigned char a_hdrlen; /* length of header */
|
||||
unsigned char a_unused; /* reserved for future use */
|
||||
unsigned short a_version; /* version stamp (not used at present) */
|
||||
long a_text; /* size of text segement in bytes */
|
||||
long a_data; /* size of data segment in bytes */
|
||||
long a_bss; /* size of bss segment in bytes */
|
||||
long a_entry; /* entry point */
|
||||
long a_total; /* total memory allocated */
|
||||
long a_syms; /* size of symbol table */
|
||||
|
||||
/* SHORT FORM ENDS HERE */
|
||||
long a_trsize; /* text relocation size */
|
||||
long a_drsize; /* data relocation size */
|
||||
long a_tbase; /* text relocation base */
|
||||
long a_dbase; /* data relocation base */
|
||||
};
|
||||
|
||||
#define A_MAGIC0 (unsigned char) 0x01
|
||||
#define A_MAGIC1 (unsigned char) 0x03
|
||||
#define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||(X).a_magic[1] != A_MAGIC1)
|
||||
|
||||
/* CPU Id of TARGET machine (byte order coded in low order two bits) */
|
||||
#define A_NONE 0x00 /* unknown */
|
||||
#define A_I8086 0x04 /* intel i8086/8088 */
|
||||
#define A_M68K 0x0B /* motorola m68000 */
|
||||
#define A_NS16K 0x0C /* national semiconductor 16032 */
|
||||
#define A_I80386 0x10 /* intel i80386 */
|
||||
#define A_SPARC 0x17 /* Sun SPARC */
|
||||
|
||||
#define A_BLR(cputype) ((cputype&0x01)!=0) /* TRUE if bytes left-to-right */
|
||||
#define A_WLR(cputype) ((cputype&0x02)!=0) /* TRUE if words left-to-right */
|
||||
|
||||
/* Flags. */
|
||||
#define A_UZP 0x01 /* unmapped zero page (pages) */
|
||||
#define A_PAL 0x02 /* page aligned executable */
|
||||
#define A_NSYM 0x04 /* new style symbol table */
|
||||
#define A_EXEC 0x10 /* executable */
|
||||
#define A_SEP 0x20 /* separate I/D */
|
||||
#define A_PURE 0x40 /* pure text */
|
||||
#define A_TOVLY 0x80 /* text overlay */
|
||||
|
||||
/* Offsets of various things. */
|
||||
#define A_MINHDR 32
|
||||
#define A_TEXTPOS(X) ((long)(X).a_hdrlen)
|
||||
#define A_DATAPOS(X) (A_TEXTPOS(X) + (X).a_text)
|
||||
#define A_HASRELS(X) ((X).a_hdrlen > (unsigned char) A_MINHDR)
|
||||
#define A_HASEXT(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 8))
|
||||
#define A_HASLNS(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16))
|
||||
#define A_HASTOFF(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24))
|
||||
#define A_TRELPOS(X) (A_DATAPOS(X) + (X).a_data)
|
||||
#define A_DRELPOS(X) (A_TRELPOS(X) + (X).a_trsize)
|
||||
#define A_SYMPOS(X) (A_TRELPOS(X) + (A_HASRELS(X) ? \
|
||||
((X).a_trsize + (X).a_drsize) : 0))
|
||||
|
||||
struct reloc {
|
||||
long r_vaddr; /* virtual address of reference */
|
||||
unsigned short r_symndx; /* internal segnum or extern symbol num */
|
||||
unsigned short r_type; /* relocation type */
|
||||
};
|
||||
|
||||
/* r_tyep values: */
|
||||
#define R_ABBS 0
|
||||
#define R_RELLBYTE 2
|
||||
#define R_PCRBYTE 3
|
||||
#define R_RELWORD 4
|
||||
#define R_PCRWORD 5
|
||||
#define R_RELLONG 6
|
||||
#define R_PCRLONG 7
|
||||
#define R_REL3BYTE 8
|
||||
#define R_KBRANCHE 9
|
||||
|
||||
/* r_symndx for internal segments */
|
||||
#define S_ABS ((unsigned short)-1)
|
||||
#define S_TEXT ((unsigned short)-2)
|
||||
#define S_DATA ((unsigned short)-3)
|
||||
#define S_BSS ((unsigned short)-4)
|
||||
|
||||
struct nlist { /* symbol table entry */
|
||||
char n_name[8]; /* symbol name */
|
||||
long n_value; /* value */
|
||||
unsigned char n_sclass; /* storage class */
|
||||
unsigned char n_numaux; /* number of auxiliary entries (not used) */
|
||||
unsigned short n_type; /* language base and derived type (not used) */
|
||||
};
|
||||
|
||||
/* Low bits of storage class (section). */
|
||||
#define N_SECT 07 /* section mask */
|
||||
#define N_UNDF 00 /* undefined */
|
||||
#define N_ABS 01 /* absolute */
|
||||
#define N_TEXT 02 /* text */
|
||||
#define N_DATA 03 /* data */
|
||||
#define N_BSS 04 /* bss */
|
||||
#define N_COMM 05 /* (common) */
|
||||
|
||||
/* High bits of storage class. */
|
||||
#define N_CLASS 0370 /* storage class mask */
|
||||
#define C_NULL
|
||||
#define C_EXT 0020 /* external symbol */
|
||||
#define C_STAT 0030 /* static */
|
||||
|
||||
#endif /* _AOUT_H */
|
18
include/ar.h
Normal file
18
include/ar.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef __AR_H
|
||||
#define __AR_H
|
||||
|
||||
#define ARMAG "!<arch>\n"
|
||||
#define SARMAG 8
|
||||
#define ARFMAG "`\n"
|
||||
|
||||
struct ar_hdr {
|
||||
char ar_name[16],
|
||||
ar_date[12],
|
||||
ar_uid[6],
|
||||
ar_gid[6],
|
||||
ar_mode[8],
|
||||
ar_size[10],
|
||||
ar_fmag[2];
|
||||
};
|
||||
|
||||
#endif /* __AR_H */
|
12
include/arpa/inet.h
Normal file
12
include/arpa/inet.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef __ARPA_INET_H
|
||||
#define __ARPA_INET_H
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
int inet_aton(const char *cp, struct in_addr *inp);
|
||||
|
||||
unsigned long int inet_addr(const char *cp);
|
||||
|
||||
char *inet_ntoa(struct in_addr in);
|
||||
|
||||
#endif
|
392
include/arpa/nameser.h
Normal file
392
include/arpa/nameser.h
Normal file
@@ -0,0 +1,392 @@
|
||||
/*
|
||||
* ++Copyright++ 1983, 1989, 1993
|
||||
* -
|
||||
* Copyright (c) 1983, 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. 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.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* 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, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION 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.
|
||||
* -
|
||||
* Portions Copyright (c) 1995 by International Business Machines, Inc.
|
||||
*
|
||||
* International Business Machines, Inc. (hereinafter called IBM) grants
|
||||
* permission under its copyrights to use, copy, modify, and distribute this
|
||||
* Software with or without fee, provided that the above copyright notice and
|
||||
* all paragraphs of this notice appear in all copies, and that the name of IBM
|
||||
* not be used in connection with the marketing of any product incorporating
|
||||
* the Software or modifications thereof, without specific, written prior
|
||||
* permission.
|
||||
*
|
||||
* To the extent it has a right to do so, IBM grants an immunity from suit
|
||||
* under its patents, if any, for the use, sale or manufacture of products to
|
||||
* the extent that such products are used for performing Domain Name System
|
||||
* dynamic updates in TCP/IP networks by means of the Software. No immunity is
|
||||
* granted for any product per se or for any other function of any product.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL,
|
||||
* DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN
|
||||
* IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)nameser.h 8.1 (Berkeley) 6/2/93
|
||||
* $Id: nameser.h,v 1.1 2000/05/14 04:16:36 erik Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NAMESER_H_
|
||||
#define _NAMESER_H_
|
||||
|
||||
#include <sys/param.h>
|
||||
#if (!defined(BSD)) || (BSD < 199306)
|
||||
# include <sys/bitypes.h>
|
||||
#else
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef _AUX_SOURCE
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* revision information. this is the release date in YYYYMMDD format.
|
||||
* it can change every day so the right thing to do with it is use it
|
||||
* in preprocessor commands such as "#if (__BIND > 19931104)". do not
|
||||
* compare for equality; rather, use it to determine whether your resolver
|
||||
* is new enough to contain a certain feature.
|
||||
*/
|
||||
|
||||
#define __BIND 19960801 /* interface version stamp */
|
||||
|
||||
/*
|
||||
* Define constants based on rfc883
|
||||
*/
|
||||
#define PACKETSZ 512 /* maximum packet size */
|
||||
#define MAXDNAME 1025 /* maximum domain name */
|
||||
#define MAXCDNAME 255 /* maximum compressed domain name */
|
||||
#define MAXLABEL 63 /* maximum length of domain label */
|
||||
#define HFIXEDSZ 12 /* #/bytes of fixed data in header */
|
||||
#define QFIXEDSZ 4 /* #/bytes of fixed data in query */
|
||||
#define RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
|
||||
#define INT32SZ 4 /* for systems without 32-bit ints */
|
||||
#define INT16SZ 2 /* for systems without 16-bit ints */
|
||||
#define INADDRSZ 4 /* IPv4 T_A */
|
||||
#define IN6ADDRSZ 16 /* IPv6 T_AAAA */
|
||||
|
||||
/*
|
||||
* Internet nameserver port number
|
||||
*/
|
||||
#define NAMESERVER_PORT 53
|
||||
|
||||
/*
|
||||
* Currently defined opcodes
|
||||
*/
|
||||
#define QUERY 0x0 /* standard query */
|
||||
#define IQUERY 0x1 /* inverse query */
|
||||
#define STATUS 0x2 /* nameserver status query */
|
||||
/*#define xxx 0x3*/ /* 0x3 reserved */
|
||||
#define NS_NOTIFY_OP 0x4 /* notify secondary of SOA change */
|
||||
/*
|
||||
* Currently defined response codes
|
||||
*/
|
||||
#define NOERROR 0 /* no error */
|
||||
#define FORMERR 1 /* format error */
|
||||
#define SERVFAIL 2 /* server failure */
|
||||
#define NXDOMAIN 3 /* non existent domain */
|
||||
#define NOTIMP 4 /* not implemented */
|
||||
#define REFUSED 5 /* query refused */
|
||||
|
||||
/*
|
||||
* Type values for resources and queries
|
||||
*/
|
||||
#define T_A 1 /* host address */
|
||||
#define T_NS 2 /* authoritative server */
|
||||
#define T_MD 3 /* mail destination */
|
||||
#define T_MF 4 /* mail forwarder */
|
||||
#define T_CNAME 5 /* canonical name */
|
||||
#define T_SOA 6 /* start of authority zone */
|
||||
#define T_MB 7 /* mailbox domain name */
|
||||
#define T_MG 8 /* mail group member */
|
||||
#define T_MR 9 /* mail rename name */
|
||||
#define T_NULL 10 /* null resource record */
|
||||
#define T_WKS 11 /* well known service */
|
||||
#define T_PTR 12 /* domain name pointer */
|
||||
#define T_HINFO 13 /* host information */
|
||||
#define T_MINFO 14 /* mailbox information */
|
||||
#define T_MX 15 /* mail routing information */
|
||||
#define T_TXT 16 /* text strings */
|
||||
#define T_RP 17 /* responsible person */
|
||||
#define T_AFSDB 18 /* AFS cell database */
|
||||
#define T_X25 19 /* X_25 calling address */
|
||||
#define T_ISDN 20 /* ISDN calling address */
|
||||
#define T_RT 21 /* router */
|
||||
#define T_NSAP 22 /* NSAP address */
|
||||
#define T_NSAP_PTR 23 /* reverse NSAP lookup (deprecated) */
|
||||
#define T_SIG 24 /* security signature */
|
||||
#define T_KEY 25 /* security key */
|
||||
#define T_PX 26 /* X.400 mail mapping */
|
||||
#define T_GPOS 27 /* geographical position (withdrawn) */
|
||||
#define T_AAAA 28 /* IP6 Address */
|
||||
#define T_LOC 29 /* Location Information */
|
||||
#define T_NXT 30 /* Next Valid Name in Zone */
|
||||
#define T_EID 31 /* Endpoint identifier */
|
||||
#define T_NIMLOC 32 /* Nimrod locator */
|
||||
#define T_SRV 33 /* Server selection */
|
||||
#define T_ATMA 34 /* ATM Address */
|
||||
#define T_NAPTR 35 /* Naming Authority PoinTeR */
|
||||
/* non standard */
|
||||
#define T_UINFO 100 /* user (finger) information */
|
||||
#define T_UID 101 /* user ID */
|
||||
#define T_GID 102 /* group ID */
|
||||
#define T_UNSPEC 103 /* Unspecified format (binary data) */
|
||||
/* Query type values which do not appear in resource records */
|
||||
#define T_IXFR 251 /* incremental zone transfer */
|
||||
#define T_AXFR 252 /* transfer zone of authority */
|
||||
#define T_MAILB 253 /* transfer mailbox records */
|
||||
#define T_MAILA 254 /* transfer mail agent records */
|
||||
#define T_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Values for class field
|
||||
*/
|
||||
|
||||
#define C_IN 1 /* the arpa internet */
|
||||
#define C_CHAOS 3 /* for chaos net (MIT) */
|
||||
#define C_HS 4 /* for Hesiod name server (MIT) (XXX) */
|
||||
/* Query class values which do not appear in resource records */
|
||||
#define C_ANY 255 /* wildcard match */
|
||||
|
||||
/*
|
||||
* Flags field of the KEY RR rdata
|
||||
*/
|
||||
#define KEYFLAG_TYPEMASK 0xC000 /* Mask for "type" bits */
|
||||
#define KEYFLAG_TYPE_AUTH_CONF 0x0000 /* Key usable for both */
|
||||
#define KEYFLAG_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */
|
||||
#define KEYFLAG_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */
|
||||
#define KEYFLAG_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */
|
||||
/* The type bits can also be interpreted independently, as single bits: */
|
||||
#define KEYFLAG_NO_AUTH 0x8000 /* Key not usable for authentication */
|
||||
#define KEYFLAG_NO_CONF 0x4000 /* Key not usable for confidentiality */
|
||||
|
||||
#define KEYFLAG_EXPERIMENTAL 0x2000 /* Security is *mandatory* if bit=0 */
|
||||
#define KEYFLAG_RESERVED3 0x1000 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED4 0x0800 /* reserved - must be zero */
|
||||
#define KEYFLAG_USERACCOUNT 0x0400 /* key is assoc. with a user acct */
|
||||
#define KEYFLAG_ENTITY 0x0200 /* key is assoc. with entity eg host */
|
||||
#define KEYFLAG_ZONEKEY 0x0100 /* key is zone key for the zone named */
|
||||
#define KEYFLAG_IPSEC 0x0080 /* key is for IPSEC use (host or user)*/
|
||||
#define KEYFLAG_EMAIL 0x0040 /* key is for email (MIME security) */
|
||||
#define KEYFLAG_RESERVED10 0x0020 /* reserved - must be zero */
|
||||
#define KEYFLAG_RESERVED11 0x0010 /* reserved - must be zero */
|
||||
#define KEYFLAG_SIGNATORYMASK 0x000F /* key can sign DNS RR's of same name */
|
||||
|
||||
#define KEYFLAG_RESERVED_BITMASK ( KEYFLAG_RESERVED3 | \
|
||||
KEYFLAG_RESERVED4 | \
|
||||
KEYFLAG_RESERVED10| KEYFLAG_RESERVED11)
|
||||
|
||||
/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */
|
||||
#define ALGORITHM_MD5RSA 1 /* MD5 with RSA */
|
||||
#define ALGORITHM_EXPIRE_ONLY 253 /* No alg, no security */
|
||||
#define ALGORITHM_PRIVATE_OID 254 /* Key begins with OID indicating alg */
|
||||
|
||||
/* Signatures */
|
||||
/* Size of a mod or exp in bits */
|
||||
#define MIN_MD5RSA_KEY_PART_BITS 512
|
||||
#define MAX_MD5RSA_KEY_PART_BITS 2552
|
||||
/* Total of binary mod and exp, bytes */
|
||||
#define MAX_MD5RSA_KEY_BYTES ((MAX_MD5RSA_KEY_PART_BITS+7/8)*2+3)
|
||||
/* Max length of text sig block */
|
||||
#define MAX_KEY_BASE64 (((MAX_MD5RSA_KEY_BYTES+2)/3)*4)
|
||||
|
||||
/*
|
||||
* Status return codes for T_UNSPEC conversion routines
|
||||
*/
|
||||
#define CONV_SUCCESS 0
|
||||
#define CONV_OVERFLOW (-1)
|
||||
#define CONV_BADFMT (-2)
|
||||
#define CONV_BADCKSUM (-3)
|
||||
#define CONV_BADBUFLEN (-4)
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
#if (BSD >= 199103)
|
||||
# include <machine/endian.h>
|
||||
#else
|
||||
#ifdef linux
|
||||
# include <endian.h>
|
||||
#else
|
||||
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
|
||||
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
||||
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
|
||||
|
||||
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
|
||||
defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
|
||||
defined(__alpha__) || defined(__alpha)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
|
||||
defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
|
||||
defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
|
||||
defined(apollo) || defined(__convex__) || defined(_CRAY) || \
|
||||
defined(__hppa) || defined(__hp9000) || \
|
||||
defined(__hp9000s300) || defined(__hp9000s700) || \
|
||||
defined (BIT_ZERO_ON_LEFT) || defined(m68k)
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#endif
|
||||
#endif /* linux */
|
||||
#endif /* BSD */
|
||||
#endif /* BYTE_ORDER */
|
||||
|
||||
#if !defined(BYTE_ORDER) || \
|
||||
(BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
|
||||
BYTE_ORDER != PDP_ENDIAN)
|
||||
/* you must determine what the correct bit order is for
|
||||
* your compiler - the next line is an intentional error
|
||||
* which will force your compiles to bomb until you fix
|
||||
* the above macros.
|
||||
*/
|
||||
error "Undefined or invalid BYTE_ORDER";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure for query header. The order of the fields is machine- and
|
||||
* compiler-dependent, depending on the byte/bit order and the layout
|
||||
* of bit fields. We use bit fields only in int variables, as this
|
||||
* is all ANSI requires. This requires a somewhat confusing rearrangement.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
unsigned id :16; /* query identification number */
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
/* fields in third byte */
|
||||
unsigned qr: 1; /* response flag */
|
||||
unsigned opcode: 4; /* purpose of message */
|
||||
unsigned aa: 1; /* authoritative answer */
|
||||
unsigned tc: 1; /* truncated message */
|
||||
unsigned rd: 1; /* recursion desired */
|
||||
/* fields in fourth byte */
|
||||
unsigned ra: 1; /* recursion available */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned rcode :4; /* response code */
|
||||
#endif
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
|
||||
/* fields in third byte */
|
||||
unsigned rd :1; /* recursion desired */
|
||||
unsigned tc :1; /* truncated message */
|
||||
unsigned aa :1; /* authoritative answer */
|
||||
unsigned opcode :4; /* purpose of message */
|
||||
unsigned qr :1; /* response flag */
|
||||
/* fields in fourth byte */
|
||||
unsigned rcode :4; /* response code */
|
||||
unsigned cd: 1; /* checking disabled by resolver */
|
||||
unsigned ad: 1; /* authentic data from named */
|
||||
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
|
||||
unsigned ra :1; /* recursion available */
|
||||
#endif
|
||||
/* remaining bytes */
|
||||
unsigned qdcount :16; /* number of question entries */
|
||||
unsigned ancount :16; /* number of answer entries */
|
||||
unsigned nscount :16; /* number of authority entries */
|
||||
unsigned arcount :16; /* number of resource entries */
|
||||
} HEADER;
|
||||
|
||||
/*
|
||||
* Defines for handling compressed domain names
|
||||
*/
|
||||
#define INDIR_MASK 0xc0
|
||||
|
||||
extern u_int16_t _getshort __P((const u_char *));
|
||||
extern u_int32_t _getlong __P((const u_char *));
|
||||
|
||||
/*
|
||||
* Inline versions of get/put short/long. Pointer is advanced.
|
||||
*
|
||||
* These macros demonstrate the property of C whereby it can be
|
||||
* portable or it can be elegant but rarely both.
|
||||
*/
|
||||
#define GETSHORT(s, cp) { \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
(s) = ((u_int16_t)t_cp[0] << 8) \
|
||||
| ((u_int16_t)t_cp[1]) \
|
||||
; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
#define GETLONG(l, cp) { \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
(l) = ((u_int32_t)t_cp[0] << 24) \
|
||||
| ((u_int32_t)t_cp[1] << 16) \
|
||||
| ((u_int32_t)t_cp[2] << 8) \
|
||||
| ((u_int32_t)t_cp[3]) \
|
||||
; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
#define PUTSHORT(s, cp) { \
|
||||
register u_int16_t t_s = (u_int16_t)(s); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = t_s >> 8; \
|
||||
*t_cp = t_s; \
|
||||
(cp) += INT16SZ; \
|
||||
}
|
||||
|
||||
#define PUTLONG(l, cp) { \
|
||||
register u_int32_t t_l = (u_int32_t)(l); \
|
||||
register u_char *t_cp = (u_char *)(cp); \
|
||||
*t_cp++ = t_l >> 24; \
|
||||
*t_cp++ = t_l >> 16; \
|
||||
*t_cp++ = t_l >> 8; \
|
||||
*t_cp = t_l; \
|
||||
(cp) += INT32SZ; \
|
||||
}
|
||||
|
||||
#endif /* !_NAMESER_H_ */
|
319
include/arpa/telnet.h
Normal file
319
include/arpa/telnet.h
Normal file
@@ -0,0 +1,319 @@
|
||||
/*
|
||||
* Copyright (c) 1983, 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.
|
||||
*
|
||||
* @(#)telnet.h 8.2 (Berkeley) 12/15/93
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_TELNET_H
|
||||
#define _ARPA_TELNET_H
|
||||
|
||||
/*
|
||||
* Definitions for the TELNET protocol.
|
||||
*/
|
||||
#define IAC 255 /* interpret as command: */
|
||||
#define DONT 254 /* you are not to use option */
|
||||
#define DO 253 /* please, you use option */
|
||||
#define WONT 252 /* I won't use option */
|
||||
#define WILL 251 /* I will use option */
|
||||
#define SB 250 /* interpret as subnegotiation */
|
||||
#define GA 249 /* you may reverse the line */
|
||||
#define EL 248 /* erase the current line */
|
||||
#define EC 247 /* erase the current character */
|
||||
#define AYT 246 /* are you there */
|
||||
#define AO 245 /* abort output--but let prog finish */
|
||||
#define IP 244 /* interrupt process--permanently */
|
||||
#define BREAK 243 /* break */
|
||||
#define DM 242 /* data mark--for connect. cleaning */
|
||||
#define NOP 241 /* nop */
|
||||
#define SE 240 /* end sub negotiation */
|
||||
#define EOR 239 /* end of record (transparent mode) */
|
||||
#define ABORT 238 /* Abort process */
|
||||
#define SUSP 237 /* Suspend process */
|
||||
#define xEOF 236 /* End of file: EOF is already used... */
|
||||
|
||||
#define SYNCH 242 /* for telfunc calls */
|
||||
|
||||
#ifdef TELCMDS
|
||||
char *telcmds[] = {
|
||||
"EOF", "SUSP", "ABORT", "EOR",
|
||||
"SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC",
|
||||
"EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0,
|
||||
};
|
||||
#else
|
||||
extern char *telcmds[];
|
||||
#endif
|
||||
|
||||
#define TELCMD_FIRST xEOF
|
||||
#define TELCMD_LAST IAC
|
||||
#define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \
|
||||
(unsigned int)(x) >= TELCMD_FIRST)
|
||||
#define TELCMD(x) telcmds[(x)-TELCMD_FIRST]
|
||||
|
||||
/* telnet options */
|
||||
#define TELOPT_BINARY 0 /* 8-bit data path */
|
||||
#define TELOPT_ECHO 1 /* echo */
|
||||
#define TELOPT_RCP 2 /* prepare to reconnect */
|
||||
#define TELOPT_SGA 3 /* suppress go ahead */
|
||||
#define TELOPT_NAMS 4 /* approximate message size */
|
||||
#define TELOPT_STATUS 5 /* give status */
|
||||
#define TELOPT_TM 6 /* timing mark */
|
||||
#define TELOPT_RCTE 7 /* remote controlled transmission and echo */
|
||||
#define TELOPT_NAOL 8 /* negotiate about output line width */
|
||||
#define TELOPT_NAOP 9 /* negotiate about output page size */
|
||||
#define TELOPT_NAOCRD 10 /* negotiate about CR disposition */
|
||||
#define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */
|
||||
#define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */
|
||||
#define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */
|
||||
#define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */
|
||||
#define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */
|
||||
#define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */
|
||||
#define TELOPT_XASCII 17 /* extended ascic character set */
|
||||
#define TELOPT_LOGOUT 18 /* force logout */
|
||||
#define TELOPT_BM 19 /* byte macro */
|
||||
#define TELOPT_DET 20 /* data entry terminal */
|
||||
#define TELOPT_SUPDUP 21 /* supdup protocol */
|
||||
#define TELOPT_SUPDUPOUTPUT 22 /* supdup output */
|
||||
#define TELOPT_SNDLOC 23 /* send location */
|
||||
#define TELOPT_TTYPE 24 /* terminal type */
|
||||
#define TELOPT_EOR 25 /* end or record */
|
||||
#define TELOPT_TUID 26 /* TACACS user identification */
|
||||
#define TELOPT_OUTMRK 27 /* output marking */
|
||||
#define TELOPT_TTYLOC 28 /* terminal location number */
|
||||
#define TELOPT_3270REGIME 29 /* 3270 regime */
|
||||
#define TELOPT_X3PAD 30 /* X.3 PAD */
|
||||
#define TELOPT_NAWS 31 /* window size */
|
||||
#define TELOPT_TSPEED 32 /* terminal speed */
|
||||
#define TELOPT_LFLOW 33 /* remote flow control */
|
||||
#define TELOPT_LINEMODE 34 /* Linemode option */
|
||||
#define TELOPT_XDISPLOC 35 /* X Display Location */
|
||||
#define TELOPT_OLD_ENVIRON 36 /* Old - Environment variables */
|
||||
#define TELOPT_AUTHENTICATION 37/* Authenticate */
|
||||
#define TELOPT_ENCRYPT 38 /* Encryption option */
|
||||
#define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */
|
||||
#define TELOPT_EXOPL 255 /* extended-options-list */
|
||||
|
||||
|
||||
#define NTELOPTS (1+TELOPT_NEW_ENVIRON)
|
||||
#ifdef TELOPTS
|
||||
char *telopts[NTELOPTS+1] = {
|
||||
"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
|
||||
"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
|
||||
"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
|
||||
"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
|
||||
"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
|
||||
"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
|
||||
"TACACS UID", "OUTPUT MARKING", "TTYLOC",
|
||||
"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
|
||||
"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
|
||||
"ENCRYPT", "NEW-ENVIRON",
|
||||
0,
|
||||
};
|
||||
#define TELOPT_FIRST TELOPT_BINARY
|
||||
#define TELOPT_LAST TELOPT_NEW_ENVIRON
|
||||
#define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST)
|
||||
#define TELOPT(x) telopts[(x)-TELOPT_FIRST]
|
||||
#endif
|
||||
|
||||
/* sub-option qualifiers */
|
||||
#define TELQUAL_IS 0 /* option is... */
|
||||
#define TELQUAL_SEND 1 /* send option */
|
||||
#define TELQUAL_INFO 2 /* ENVIRON: informational version of IS */
|
||||
#define TELQUAL_REPLY 2 /* AUTHENTICATION: client version of IS */
|
||||
#define TELQUAL_NAME 3 /* AUTHENTICATION: client version of IS */
|
||||
|
||||
#define LFLOW_OFF 0 /* Disable remote flow control */
|
||||
#define LFLOW_ON 1 /* Enable remote flow control */
|
||||
#define LFLOW_RESTART_ANY 2 /* Restart output on any char */
|
||||
#define LFLOW_RESTART_XON 3 /* Restart output only on XON */
|
||||
|
||||
/*
|
||||
* LINEMODE suboptions
|
||||
*/
|
||||
|
||||
#define LM_MODE 1
|
||||
#define LM_FORWARDMASK 2
|
||||
#define LM_SLC 3
|
||||
|
||||
#define MODE_EDIT 0x01
|
||||
#define MODE_TRAPSIG 0x02
|
||||
#define MODE_ACK 0x04
|
||||
#define MODE_SOFT_TAB 0x08
|
||||
#define MODE_LIT_ECHO 0x10
|
||||
|
||||
#define MODE_MASK 0x1f
|
||||
|
||||
/* Not part of protocol, but needed to simplify things... */
|
||||
#define MODE_FLOW 0x0100
|
||||
#define MODE_ECHO 0x0200
|
||||
#define MODE_INBIN 0x0400
|
||||
#define MODE_OUTBIN 0x0800
|
||||
#define MODE_FORCE 0x1000
|
||||
|
||||
#define SLC_SYNCH 1
|
||||
#define SLC_BRK 2
|
||||
#define SLC_IP 3
|
||||
#define SLC_AO 4
|
||||
#define SLC_AYT 5
|
||||
#define SLC_EOR 6
|
||||
#define SLC_ABORT 7
|
||||
#define SLC_EOF 8
|
||||
#define SLC_SUSP 9
|
||||
#define SLC_EC 10
|
||||
#define SLC_EL 11
|
||||
#define SLC_EW 12
|
||||
#define SLC_RP 13
|
||||
#define SLC_LNEXT 14
|
||||
#define SLC_XON 15
|
||||
#define SLC_XOFF 16
|
||||
#define SLC_FORW1 17
|
||||
#define SLC_FORW2 18
|
||||
|
||||
#define NSLC 18
|
||||
|
||||
/*
|
||||
* For backwards compatability, we define SLC_NAMES to be the
|
||||
* list of names if SLC_NAMES is not defined.
|
||||
*/
|
||||
#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
|
||||
"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
|
||||
"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
|
||||
#ifdef SLC_NAMES
|
||||
char *slc_names[] = {
|
||||
SLC_NAMELIST
|
||||
};
|
||||
#else
|
||||
extern char *slc_names[];
|
||||
#define SLC_NAMES SLC_NAMELIST
|
||||
#endif
|
||||
|
||||
#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC)
|
||||
#define SLC_NAME(x) slc_names[x]
|
||||
|
||||
#define SLC_NOSUPPORT 0
|
||||
#define SLC_CANTCHANGE 1
|
||||
#define SLC_VARIABLE 2
|
||||
#define SLC_DEFAULT 3
|
||||
#define SLC_LEVELBITS 0x03
|
||||
|
||||
#define SLC_FUNC 0
|
||||
#define SLC_FLAGS 1
|
||||
#define SLC_VALUE 2
|
||||
|
||||
#define SLC_ACK 0x80
|
||||
#define SLC_FLUSHIN 0x40
|
||||
#define SLC_FLUSHOUT 0x20
|
||||
|
||||
#define OLD_ENV_VAR 1
|
||||
#define OLD_ENV_VALUE 0
|
||||
#define NEW_ENV_VAR 0
|
||||
#define NEW_ENV_VALUE 1
|
||||
#define ENV_ESC 2
|
||||
#define ENV_USERVAR 3
|
||||
|
||||
/*
|
||||
* AUTHENTICATION suboptions
|
||||
*/
|
||||
|
||||
/*
|
||||
* Who is authenticating who ...
|
||||
*/
|
||||
#define AUTH_WHO_CLIENT 0 /* Client authenticating server */
|
||||
#define AUTH_WHO_SERVER 1 /* Server authenticating client */
|
||||
#define AUTH_WHO_MASK 1
|
||||
|
||||
/*
|
||||
* amount of authentication done
|
||||
*/
|
||||
#define AUTH_HOW_ONE_WAY 0
|
||||
#define AUTH_HOW_MUTUAL 2
|
||||
#define AUTH_HOW_MASK 2
|
||||
|
||||
#define AUTHTYPE_NULL 0
|
||||
#define AUTHTYPE_KERBEROS_V4 1
|
||||
#define AUTHTYPE_KERBEROS_V5 2
|
||||
#define AUTHTYPE_SPX 3
|
||||
#define AUTHTYPE_MINK 4
|
||||
#define AUTHTYPE_CNT 5
|
||||
|
||||
#define AUTHTYPE_TEST 99
|
||||
|
||||
#ifdef AUTH_NAMES
|
||||
char *authtype_names[] = {
|
||||
"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
|
||||
};
|
||||
#else
|
||||
extern char *authtype_names[];
|
||||
#endif
|
||||
|
||||
#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT)
|
||||
#define AUTHTYPE_NAME(x) authtype_names[x]
|
||||
|
||||
/*
|
||||
* ENCRYPTion suboptions
|
||||
*/
|
||||
#define ENCRYPT_IS 0 /* I pick encryption type ... */
|
||||
#define ENCRYPT_SUPPORT 1 /* I support encryption types ... */
|
||||
#define ENCRYPT_REPLY 2 /* Initial setup response */
|
||||
#define ENCRYPT_START 3 /* Am starting to send encrypted */
|
||||
#define ENCRYPT_END 4 /* Am ending encrypted */
|
||||
#define ENCRYPT_REQSTART 5 /* Request you start encrypting */
|
||||
#define ENCRYPT_REQEND 6 /* Request you send encrypting */
|
||||
#define ENCRYPT_ENC_KEYID 7
|
||||
#define ENCRYPT_DEC_KEYID 8
|
||||
#define ENCRYPT_CNT 9
|
||||
|
||||
#define ENCTYPE_ANY 0
|
||||
#define ENCTYPE_DES_CFB64 1
|
||||
#define ENCTYPE_DES_OFB64 2
|
||||
#define ENCTYPE_CNT 3
|
||||
|
||||
#ifdef ENCRYPT_NAMES
|
||||
char *encrypt_names[] = {
|
||||
"IS", "SUPPORT", "REPLY", "START", "END",
|
||||
"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
|
||||
0,
|
||||
};
|
||||
char *enctype_names[] = {
|
||||
"ANY", "DES_CFB64", "DES_OFB64", 0,
|
||||
};
|
||||
#else
|
||||
extern char *encrypt_names[];
|
||||
extern char *enctype_names[];
|
||||
#endif
|
||||
|
||||
|
||||
#define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT)
|
||||
#define ENCRYPT_NAME(x) encrypt_names[x]
|
||||
|
||||
#define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT)
|
||||
#define ENCTYPE_NAME(x) enctype_names[x]
|
||||
#endif /* _ARPA_TELNET_H */
|
80
include/arpa/tftp.h
Normal file
80
include/arpa/tftp.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (c) 1983, 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.
|
||||
*
|
||||
* @(#)tftp.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_TFTP_H
|
||||
#define _ARPA_TFTP_H 1
|
||||
|
||||
/*
|
||||
* Trivial File Transfer Protocol (IEN-133)
|
||||
*/
|
||||
#define SEGSIZE 512 /* data segment size */
|
||||
|
||||
/*
|
||||
* Packet types.
|
||||
*/
|
||||
#define RRQ 01 /* read request */
|
||||
#define WRQ 02 /* write request */
|
||||
#define DATA 03 /* data packet */
|
||||
#define ACK 04 /* acknowledgement */
|
||||
#define ERROR 05 /* error code */
|
||||
|
||||
struct tftphdr {
|
||||
short th_opcode; /* packet type */
|
||||
union {
|
||||
unsigned short tu_block; /* block # */
|
||||
short tu_code; /* error code */
|
||||
char tu_stuff[1]; /* request packet stuff */
|
||||
} th_u;
|
||||
char th_data[1]; /* data or error string */
|
||||
};
|
||||
|
||||
#define th_block th_u.tu_block
|
||||
#define th_code th_u.tu_code
|
||||
#define th_stuff th_u.tu_stuff
|
||||
#define th_msg th_data
|
||||
|
||||
/*
|
||||
* 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 */
|
||||
|
||||
#endif /* arpa/tftp.h */
|
23
include/assert.h
Normal file
23
include/assert.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef __ASSERT_H
|
||||
#define __ASSERT_H
|
||||
#include <features.h>
|
||||
|
||||
/* If NDEBUG is defined, do nothing.
|
||||
If not, and EXPRESSION is zero, print an error message and abort. */
|
||||
|
||||
#ifdef NDEBUG
|
||||
|
||||
#define assert(expr) ((void) 0)
|
||||
|
||||
#else /* Not NDEBUG. */
|
||||
|
||||
extern void __assert __P((const char *, const char *, int));
|
||||
|
||||
#define assert(expr) \
|
||||
((void) ((expr) || \
|
||||
(__assert (__STRING(expr), \
|
||||
__FILE__, __LINE__), 0)))
|
||||
|
||||
#endif /* NDEBUG. */
|
||||
|
||||
#endif /* __ASSERT_H */
|
8
include/cfgfile.h
Normal file
8
include/cfgfile.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef __CFGFILE_H__
|
||||
#define __CFGFILE_H__
|
||||
|
||||
#include <stdio.h>
|
||||
char ** cfgread(FILE *fp);
|
||||
char ** cfgfind(FILE *fp, char *var);
|
||||
|
||||
#endif /* __CFGFILE_H__ */
|
38
include/ctype.h
Normal file
38
include/ctype.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* ctype.h Character classification and conversion
|
||||
*/
|
||||
|
||||
#ifndef __CTYPE_H
|
||||
#define __CTYPE_H
|
||||
|
||||
extern unsigned char __ctype[];
|
||||
|
||||
#define __CT_d 0x01 /* numeric digit */
|
||||
#define __CT_u 0x02 /* upper case */
|
||||
#define __CT_l 0x04 /* lower case */
|
||||
#define __CT_c 0x08 /* control character */
|
||||
#define __CT_s 0x10 /* whitespace */
|
||||
#define __CT_p 0x20 /* punctuation */
|
||||
#define __CT_x 0x40 /* hexadecimal */
|
||||
|
||||
#define toupper(c) (islower(c) ? (c)^0x20 : (c))
|
||||
#define tolower(c) (isupper(c) ? (c)^0x20 : (c))
|
||||
#define _toupper(c) ((c)^0x20)
|
||||
#define _tolower(c) ((c)^0x20)
|
||||
#define toascii(c) ((c)&0x7F)
|
||||
|
||||
/* Note the '!!' is a cast to 'bool' and even BCC deletes it in an if() */
|
||||
#define isalnum(c) (!!(__ctype[(int) c]&(__CT_u|__CT_l|__CT_d)))
|
||||
#define isalpha(c) (!!(__ctype[(int) c]&(__CT_u|__CT_l)))
|
||||
#define isascii(c) (!((c)&~0x7F))
|
||||
#define iscntrl(c) (!!(__ctype[(int) c]&__CT_c))
|
||||
#define isdigit(c) (!!(__ctype[(int) c]&__CT_d))
|
||||
#define isgraph(c) (!(__ctype[(int) c]&(__CT_c|__CT_s)))
|
||||
#define islower(c) (!!(__ctype[(int) c]&__CT_l))
|
||||
#define isprint(c) (!(__ctype[(int) c]&__CT_c))
|
||||
#define ispunct(c) (!!(__ctype[(int) c]&__CT_p))
|
||||
#define isspace(c) (!!(__ctype[(int) c]&__CT_s))
|
||||
#define isupper(c) (!!(__ctype[(int) c]&__CT_u))
|
||||
#define isxdigit(c) (!!(__ctype[(int) c]&__CT_x))
|
||||
|
||||
#endif /* __CTYPE_H */
|
155
include/dirent.h
Normal file
155
include/dirent.h
Normal file
@@ -0,0 +1,155 @@
|
||||
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* POSIX Standard: 5.1.2 Directory Operations <dirent.h>
|
||||
*/
|
||||
|
||||
#ifndef _DIRENT_H
|
||||
|
||||
#define _DIRENT_H 1
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <gnu/types.h>
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/limits.h>
|
||||
#include <linux/dirent.h>
|
||||
|
||||
#if defined(__USE_GNU)
|
||||
#define d_fileno d_ino /* glibc compatibility. */
|
||||
#if 0
|
||||
#define d_namlen d_reclen /* glibc compatibility. */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(DIRENT_ILLEGAL_ACCESS) || \
|
||||
(defined(__SVR4_I386_ABI_L1__) && !defined(INTERNAL_LINUX_C_LIB))
|
||||
|
||||
/* Use it at your own risk. */
|
||||
typedef struct DIR
|
||||
{
|
||||
/* file descriptor */
|
||||
int dd_fd;
|
||||
|
||||
/* offset of the next dir entry in buffer */
|
||||
off_t dd_loc;
|
||||
|
||||
/* bytes of valid entries in buffer */
|
||||
size_t dd_size;
|
||||
|
||||
/* -> directory buffer */
|
||||
struct dirent *dd_buf;
|
||||
} DIR;
|
||||
|
||||
#else
|
||||
|
||||
/* The internal is hidden from the user. */
|
||||
typedef struct DIR DIR;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Open a directory stream on NAME.
|
||||
Return a DIR stream on the directory, or NULL if it could not be opened. */
|
||||
extern DIR *opendir __P ((__const char *__name));
|
||||
|
||||
/* Close the directory stream DIRP.
|
||||
Return 0 if successful, -1 if not. */
|
||||
extern int closedir __P ((DIR * __dirp));
|
||||
|
||||
/* Read a directory entry from DIRP.
|
||||
Return a pointer to a `struct dirent' describing the entry,
|
||||
or NULL for EOF or error. The storage returned may be overwritten
|
||||
by a later readdir call on the same DIR stream. */
|
||||
extern struct dirent *readdir __P ((DIR * __dirp));
|
||||
|
||||
/* Rewind DIRP to the beginning of the directory. */
|
||||
extern void rewinddir __P ((DIR * __dirp));
|
||||
|
||||
#if defined(__USE_BSD) || defined(__USE_MISC)
|
||||
|
||||
#ifndef MAXNAMLEN
|
||||
/* Get the definitions of the POSIX.1 limits. */
|
||||
#include <posix1_lim.h>
|
||||
|
||||
/* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'. */
|
||||
#ifdef NAME_MAX
|
||||
#define MAXNAMLEN NAME_MAX
|
||||
#else
|
||||
#define MAXNAMLEN 255
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <gnu/types.h>
|
||||
|
||||
/* Seek to position POS on DIRP. */
|
||||
extern void seekdir __P ((DIR * __dirp, __off_t __pos));
|
||||
|
||||
/* Return the current position of DIRP. */
|
||||
extern __off_t telldir __P ((DIR * __dirp));
|
||||
|
||||
typedef int (*__dir_select_fn_t) __P ((__const struct dirent *));
|
||||
|
||||
typedef int (*__dir_compar_fn_t) __P ((
|
||||
__const struct dirent * __const *,
|
||||
__const struct dirent * __const *
|
||||
));
|
||||
|
||||
/* Scan the directory DIR, calling SELECT on each directory entry.
|
||||
Entries for which SELECT returns nonzero are individually malloc'd,
|
||||
sorted using qsort with CMP, and collected in a malloc'd array in
|
||||
*NAMELIST. Returns the number of entries selected, or -1 on error. */
|
||||
extern int scandir __P ((__const char *__dir,
|
||||
struct dirent ***__namelist,
|
||||
__dir_select_fn_t __dir_select_fn,
|
||||
__dir_compar_fn_t __dir_compar_fn));
|
||||
|
||||
/* Function to compare two `struct dirent's alphabetically. */
|
||||
extern int alphasort __P ((
|
||||
__const struct dirent * __const *,
|
||||
__const struct dirent * __const *
|
||||
));
|
||||
|
||||
|
||||
/* Read directory entries from FD into BUF, reading at most NBYTES.
|
||||
Reading starts at offset *BASEP, and *BASEP is updated with the new
|
||||
position after reading. Returns the number of bytes read; zero when at
|
||||
end of directory; or -1 for errors. */
|
||||
extern __ssize_t __getdirentries __P ((int __fd, char *__buf,
|
||||
size_t __nbytes, __off_t *__basep));
|
||||
extern __ssize_t getdirentries __P ((int __fd, char *__buf,
|
||||
size_t __nbytes, __off_t *__basep));
|
||||
|
||||
extern int dirfd __P ((DIR *__dirp));
|
||||
|
||||
#endif /* Use BSD or misc. */
|
||||
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT)
|
||||
extern int readdir_r __P((DIR *__dirp, struct dirent *__entry,
|
||||
struct dirent **__result));
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* dirent.h */
|
43
include/endian.h
Normal file
43
include/endian.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Copyright (C) 1992, 1996 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _ENDIAN_H
|
||||
#define _ENDIAN_H 1
|
||||
#include <features.h>
|
||||
|
||||
/* Definitions for byte order, according to significance of bytes, from low
|
||||
addresses to high addresses. The value is what you get by putting '4'
|
||||
in the most significant byte, '3' in the second most significant byte,
|
||||
'2' in the second least significant byte, and '1' in the least
|
||||
significant byte. */
|
||||
|
||||
#define __LITTLE_ENDIAN 1234
|
||||
#define __BIG_ENDIAN 4321
|
||||
#define __PDP_ENDIAN 3412
|
||||
|
||||
/* This file defines `__BYTE_ORDER' for the particular machine. */
|
||||
#include <bytesex.h>
|
||||
|
||||
#ifdef __USE_BSD
|
||||
#define LITTLE_ENDIAN __LITTLE_ENDIAN
|
||||
#define BIG_ENDIAN __BIG_ENDIAN
|
||||
#define PDP_ENDIAN __PDP_ENDIAN
|
||||
#define BYTE_ORDER __BYTE_ORDER
|
||||
#endif
|
||||
|
||||
#endif /* endian.h */
|
7
include/err.h
Normal file
7
include/err.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#ifndef __ERR_H__
|
||||
#define __ERR_H__
|
||||
|
||||
#define warn(X,args...) ({char _buf[128]; sprintf(_buf, X,args); perror(_buf);})
|
||||
#define err(X,Y,args...) ({char _buf[128]; sprintf(_buf, Y,##args); perror(_buf); exit(X);})
|
||||
|
||||
#endif /* __ERR_H__ */
|
25
include/errno.h
Normal file
25
include/errno.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef __ERRNO_H
|
||||
#define __ERRNO_H
|
||||
|
||||
#include <features.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
#ifdef __USE_BSD
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
#endif
|
||||
#ifdef __USE_GNU
|
||||
extern int _sys_nerr;
|
||||
extern char *_sys_errlist[];
|
||||
#endif
|
||||
|
||||
extern int errno;
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern void perror __P ((__const char* __s));
|
||||
extern char* strerror __P ((int __errno));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
20
include/fcntl.h
Normal file
20
include/fcntl.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef __FCNTL_H
|
||||
#define __FCNTL_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/fcntl.h>
|
||||
|
||||
#ifndef FNDELAY
|
||||
#define FNDELAY O_NDELAY
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int creat __P ((__const char * __filename, mode_t __mode));
|
||||
extern int fcntl __P ((int __fildes,int __cmd, ...));
|
||||
extern int open __P ((__const char * __filename, int __flags, ...));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
39
include/features.h
Normal file
39
include/features.h
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
#ifndef __FEATURES_H
|
||||
#define __FEATURES_H
|
||||
|
||||
#ifdef __STDC__
|
||||
|
||||
#define __P(x) x
|
||||
#define __const const
|
||||
|
||||
/* Almost ansi */
|
||||
#if __STDC__ != 1
|
||||
#define const
|
||||
#define volatile
|
||||
#endif
|
||||
|
||||
#else /* K&R */
|
||||
|
||||
#define __P(x) ()
|
||||
#define __const
|
||||
#define const
|
||||
#define volatile
|
||||
|
||||
#endif
|
||||
|
||||
/* No C++ */
|
||||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
|
||||
/* GNUish things */
|
||||
#define __CONSTVALUE
|
||||
#define __CONSTVALUE2
|
||||
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
|
||||
#endif
|
||||
|
17
include/getopt.h
Normal file
17
include/getopt.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright (C) 1996 Robert de Bath <rdebath@cix.compulink.co.uk>
|
||||
* This file is part of the Linux-8086 C library and is distributed
|
||||
* under the GNU Library General Public License.
|
||||
*/
|
||||
|
||||
#ifndef __GETOPT_H
|
||||
#define __GETOPT_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
extern char *optarg;
|
||||
extern int opterr;
|
||||
extern int optind;
|
||||
|
||||
extern int getopt __P((int argc, char *const *argv, const char *shortopts));
|
||||
|
||||
#endif /* __GETOPT_H */
|
37
include/grp.h
Normal file
37
include/grp.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifndef __GRP_H
|
||||
#define __GRP_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <features.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* The group structure */
|
||||
struct group
|
||||
{
|
||||
char *gr_name; /* Group name. */
|
||||
char *gr_passwd; /* Password. */
|
||||
gid_t gr_gid; /* Group ID. */
|
||||
char **gr_mem; /* Member list. */
|
||||
};
|
||||
|
||||
extern void setgrent __P ((void));
|
||||
extern void endgrent __P ((void));
|
||||
extern struct group * getgrent __P ((void));
|
||||
|
||||
extern struct group * getgrgid __P ((__const gid_t gid));
|
||||
extern struct group * getgrnam __P ((__const char * name));
|
||||
|
||||
extern struct group * fgetgrent __P ((FILE * file));
|
||||
|
||||
extern int setgroups __P ((size_t n, __const gid_t * groups));
|
||||
extern int initgroups __P ((__const char * user, gid_t gid));
|
||||
|
||||
|
||||
#ifdef __LIBC__
|
||||
extern struct group * __getgrent __P ((int grp_fd));
|
||||
#endif
|
||||
|
||||
#endif /* _GRP_H */
|
||||
|
||||
|
||||
|
140
include/limits.h
Normal file
140
include/limits.h
Normal file
@@ -0,0 +1,140 @@
|
||||
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* ANSI Standard: 4.14/2.2.4.2 Limits of integral types <limits.h>
|
||||
*/
|
||||
|
||||
#ifndef _LIMITS_H
|
||||
|
||||
#define _LIMITS_H 1
|
||||
#include <features.h>
|
||||
|
||||
#ifdef __USE_POSIX
|
||||
/* POSIX adds things to <limits.h>. */
|
||||
#include <posix1_lim.h>
|
||||
#endif
|
||||
|
||||
#ifdef __USE_POSIX2
|
||||
#include <posix2_lim.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* Only if gcc 2.x is used and -traditional is not used, we can use
|
||||
* #include_next.
|
||||
#if __GNUC__ >= 2 && __STDC__
|
||||
*/
|
||||
#if __GNUC__ >= 2
|
||||
|
||||
/* Have we done that? */
|
||||
# if !defined(_GCC_LIMITS_H_) && !defined(_GCC_LIMITS_H)
|
||||
/* Get the compiler's limits.h, which defines all the ANSI
|
||||
* constants.
|
||||
*/
|
||||
/* This tells it not to look for another. */
|
||||
# define _LIBC_LIMITS_H
|
||||
# define _LIBC_LIMITS_H_
|
||||
# include_next <limits.h>
|
||||
# endif
|
||||
|
||||
#else /* Not GCC 2. */
|
||||
|
||||
/* We don't have #include_next.
|
||||
Define ANSI <limits.h> for standard 32-bit words. */
|
||||
|
||||
/* These assume 8-bit `char's, 16-bit `short int's,
|
||||
and 32-bit `int's and `long int's. */
|
||||
|
||||
/* Number of bits in a `char'. */
|
||||
#define CHAR_BIT 8
|
||||
|
||||
/* Maximum length of any multibyte character in any locale.
|
||||
Locale-writers should change this as necessary. */
|
||||
#define MB_LEN_MAX 1
|
||||
|
||||
/* Minimum and maximum values a `signed char' can hold. */
|
||||
#define SCHAR_MIN (-128)
|
||||
#define SCHAR_MAX 127
|
||||
|
||||
/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */
|
||||
#ifdef __STDC__
|
||||
#define UCHAR_MAX 255U
|
||||
#else
|
||||
#define UCHAR_MAX 255
|
||||
#endif
|
||||
|
||||
/* Minimum and maximum values a `char' can hold. */
|
||||
#ifdef __CHAR_UNSIGNED__
|
||||
#define CHAR_MIN 0
|
||||
#define CHAR_MAX UCHAR_MAX
|
||||
#else
|
||||
#define CHAR_MIN SCHAR_MIN
|
||||
#define CHAR_MAX SCHAR_MAX
|
||||
#endif
|
||||
|
||||
/* Minimum and maximum values a `signed short int' can hold. */
|
||||
#define SHRT_MIN (-32768)
|
||||
#define SHRT_MAX 32767
|
||||
|
||||
/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
|
||||
#define USHRT_MAX 65535
|
||||
|
||||
/* Minimum and maximum values a `signed int' can hold. */
|
||||
#define INT_MIN (- INT_MAX - 1)
|
||||
#define INT_MAX 2147483647
|
||||
|
||||
/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
|
||||
#ifdef __STDC__
|
||||
#define UINT_MAX 4294967295U
|
||||
#else
|
||||
#define UINT_MAX 4294967295
|
||||
#endif
|
||||
|
||||
/* Minimum and maximum values a `signed long int' can hold. */
|
||||
#define LONG_MIN INT_MIN
|
||||
#define LONG_MAX INT_MAX
|
||||
|
||||
/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */
|
||||
#define ULONG_MAX UINT_MAX
|
||||
|
||||
#endif /* GCC 2. */
|
||||
|
||||
|
||||
#ifndef RAND_MAX
|
||||
/* The largest number rand will return (same as INT_MAX). */
|
||||
#define RAND_MAX INT_MAX
|
||||
#endif
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
|
||||
#define NL_ARGMAX 9
|
||||
#define NL_LANGMAX 14
|
||||
#define NL_MSGMAX 32767
|
||||
#define NL_NMAX 1
|
||||
#define NL_SETMAX 255
|
||||
#define NL_TEXTMAX 255
|
||||
#define NZERO 20
|
||||
|
||||
#define WORD_BIT 32
|
||||
#define LONG_BIT 32
|
||||
|
||||
#define FCHR_MAX 1048576
|
||||
|
||||
#endif /* __SVR4_I386_ABI_L1__ */
|
||||
|
||||
#endif /* limits.h */
|
30
include/malloc.h
Normal file
30
include/malloc.h
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
#ifndef __MALLOC_H
|
||||
#define __MALLOC_H
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* Mini malloc allows you to use a less efficient but smaller malloc the
|
||||
* cost is about 100 bytes of code in free but malloc (700bytes) doesn't
|
||||
* have to be linked. Unfortunatly memory can only be reused if everything
|
||||
* above it has been freed
|
||||
*
|
||||
*/
|
||||
|
||||
extern void free __P((void *));
|
||||
extern void *malloc __P((size_t));
|
||||
extern void *realloc __P((void *, size_t));
|
||||
extern void *alloca __P((size_t));
|
||||
|
||||
extern void *(*__alloca_alloc) __P((size_t));
|
||||
|
||||
#ifdef __LIBC__
|
||||
#define __MINI_MALLOC__
|
||||
#endif
|
||||
|
||||
#ifdef __MINI_MALLOC__
|
||||
#define malloc(x) ((*__alloca_alloc)(x))
|
||||
#endif
|
||||
|
||||
#endif
|
0
include/math.h
Normal file
0
include/math.h
Normal file
1
include/memory.h
Normal file
1
include/memory.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <string.h>
|
110
include/mntent.h
Normal file
110
include/mntent.h
Normal file
@@ -0,0 +1,110 @@
|
||||
#ifndef _MNTENT_H
|
||||
#define _MNTENT_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
#define MNTTAB "/etc/fstab"
|
||||
#define MOUNTED "/etc/mtab"
|
||||
|
||||
#define MNTMAXSTR 512
|
||||
|
||||
#define MNTTYPE_COHERENT "coherent" /* Coherent file system */
|
||||
#define MNTTYPE_EXT "ext" /* Extended file system */
|
||||
#define MNTTYPE_EXT2 "ext2" /* Second Extended file system */
|
||||
#define MNTTYPE_HPFS "hpfs" /* OS/2's high performance file system */
|
||||
#define MNTTYPE_ISO9660 "iso9660" /* ISO CDROM file system */
|
||||
#define MNTTYPE_MINIX "minix" /* MINIX file system */
|
||||
#define MNTTYPE_MSDOS "msdos" /* MS-DOS file system */
|
||||
#define MNTTYPE_VFAT "vfat" /* VFAT (Win95) file system */
|
||||
#define MNTTYPE_SYSV "sysv" /* System V file system */
|
||||
#define MNTTYPE_UMSDOS "umsdos" /* U MS-DOS file system */
|
||||
#define MNTTYPE_XENIX "xenix" /* Xenix file system */
|
||||
#define MNTTYPE_XIAFS "xiafs" /* Frank Xia's file system */
|
||||
#define MNTTYPE_NFS "nfs" /* Network file system */
|
||||
#define MNTTYPE_PROC "proc" /* Linux process file system */
|
||||
#define MNTTYPE_IGNORE "ignore" /* Ignore this entry */
|
||||
#define MNTTYPE_SWAP "swap" /* Swap device */
|
||||
|
||||
/* generic mount options */
|
||||
#define MNTOPT_DEFAULTS "defaults" /* use all default opts */
|
||||
#define MNTOPT_RO "ro" /* read only */
|
||||
#define MNTOPT_RW "rw" /* read/write */
|
||||
#define MNTOPT_SUID "suid" /* set uid allowed */
|
||||
#define MNTOPT_NOSUID "nosuid" /* no set uid allowed */
|
||||
#define MNTOPT_NOAUTO "noauto" /* don't auto mount */
|
||||
|
||||
/* ext2 and msdos options */
|
||||
#define MNTOPT_CHECK "check" /* filesystem check level */
|
||||
|
||||
/* ext2 specific options */
|
||||
#define MNTOPT_BSDDF "bsddf" /* disable MINIX compatibility disk free counting */
|
||||
#define MNTOPT_BSDGROUPS "bsdgroups" /* set BSD group usage */
|
||||
#define MNTOPT_ERRORS "errors" /* set behaviour on error */
|
||||
#define MNTOPT_GRPID "grpid" /* set BSD group usage */
|
||||
#define MNTOPT_MINIXDF "minixdf" /* enable MINIX compatibility disk free counting */
|
||||
#define MNTOPT_NOCHECK "nocheck" /* reset filesystem checks */
|
||||
#define MNTOPT_NOGRPID "nogrpid" /* set SYSV group usage */
|
||||
#define MNTOPT_RESGID "resgid" /* group to consider like root for reserved blocks */
|
||||
#define MNTOPT_RESUID "resuid" /* user to consider like root for reserved blocks */
|
||||
#define MNTOPT_SB "sb" /* set used super block */
|
||||
#define MNTOPT_SYSVGROUPS "sysvgroups" /* set SYSV group usage */
|
||||
|
||||
/* options common to hpfs, isofs, and msdos */
|
||||
#define MNTOPT_CONV "conv" /* convert specified types of data */
|
||||
#define MNTOPT_GID "gid" /* use given gid */
|
||||
#define MNTOPT_UID "uid" /* use given uid */
|
||||
#define MNTOPT_UMASK "umask" /* use given umask, not isofs */
|
||||
|
||||
/* hpfs specific options */
|
||||
#define MNTOPT_CASE "case" /* case conversation */
|
||||
|
||||
/* isofs specific options */
|
||||
#define MNTOPT_BLOCK "block" /* use given block size */
|
||||
#define MNTOPT_CRUFT "cruft" /* ??? */
|
||||
#define MNTOPT_MAP "map" /* ??? */
|
||||
#define MNTOPT_NOROCK "norock" /* not rockwell format ??? */
|
||||
|
||||
/* msdos specific options */
|
||||
#define MNTOPT_FAT "fat" /* set FAT size */
|
||||
#define MNTOPT_QUIET "quiet" /* ??? */
|
||||
|
||||
/* swap specific options */
|
||||
|
||||
/* options common to ext, ext2, minix, xiafs, sysv, xenix, coherent */
|
||||
#define MNTOPT_NOQUOTA "noquota" /* don't use any quota on this partition */
|
||||
#define MNTOPT_USRQUOTA "usrquota" /* use userquota on this partition */
|
||||
#define MNTOPT_GRPQUOTA "grpquota" /* use groupquota on this partition */
|
||||
|
||||
/* none defined yet */
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct mntent{
|
||||
char *mnt_fsname;
|
||||
char *mnt_dir;
|
||||
char *mnt_type;
|
||||
char *mnt_opts;
|
||||
int mnt_freq;
|
||||
int mnt_passno;
|
||||
};
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#define __need_file
|
||||
#include <stdio.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern FILE *setmntent __P ((__const char *__filep,
|
||||
__const char *__type));
|
||||
extern struct mntent
|
||||
*getmntent __P ((FILE *__filep));
|
||||
extern int addmntent __P ((FILE *__filep,
|
||||
__const struct mntent *__mnt));
|
||||
extern char *hasmntopt __P ((__const struct mntent *__mnt,
|
||||
__const char *__opt));
|
||||
extern int endmntent __P ((FILE *__filep));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _MNTENT_H */
|
215
include/netdb.h
Normal file
215
include/netdb.h
Normal file
@@ -0,0 +1,215 @@
|
||||
/*-
|
||||
* Copyright (c) 1980, 1983, 1988, 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.
|
||||
*
|
||||
* @(#)netdb.h 8.1 (Berkeley) 6/2/93
|
||||
* netdb.h,v 1.4 1995/08/14 04:05:04 hjl Exp
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* 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, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION 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.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
#ifndef _NETDB_H_
|
||||
#define _NETDB_H_
|
||||
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT)
|
||||
#include <stdio.h>
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
#include <paths.h>
|
||||
|
||||
#define _PATH_HEQUIV __PATH_ETC_INET"/hosts.equiv"
|
||||
#define _PATH_HOSTS __PATH_ETC_INET"/hosts"
|
||||
#define _PATH_NETWORKS __PATH_ETC_INET"/networks"
|
||||
#define _PATH_PROTOCOLS __PATH_ETC_INET"/protocols"
|
||||
#define _PATH_SERVICES __PATH_ETC_INET"/services"
|
||||
#define _PATH_RESCONF __PATH_ETC_INET"/resolv.conf"
|
||||
#define _PATH_RPC __PATH_ETC_INET"/rpc"
|
||||
|
||||
|
||||
/*
|
||||
* Structures returned by network data base library. All addresses are
|
||||
* supplied in host order, and returned in network order (suitable for
|
||||
* use in system calls).
|
||||
*/
|
||||
struct hostent {
|
||||
char *h_name; /* official name of host */
|
||||
char **h_aliases; /* alias list */
|
||||
int h_addrtype; /* host address type */
|
||||
int h_length; /* length of address */
|
||||
char **h_addr_list; /* list of addresses from name server */
|
||||
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
||||
};
|
||||
|
||||
/*
|
||||
* Assumption here is that a network number
|
||||
* fits in an unsigned long -- probably a poor one.
|
||||
*/
|
||||
struct netent {
|
||||
char *n_name; /* official name of net */
|
||||
char **n_aliases; /* alias list */
|
||||
int n_addrtype; /* net address type */
|
||||
unsigned long n_net; /* network # */
|
||||
};
|
||||
|
||||
struct servent {
|
||||
char *s_name; /* official service name */
|
||||
char **s_aliases; /* alias list */
|
||||
int s_port; /* port # */
|
||||
char *s_proto; /* protocol to use */
|
||||
};
|
||||
|
||||
struct protoent {
|
||||
char *p_name; /* official protocol name */
|
||||
char **p_aliases; /* alias list */
|
||||
int p_proto; /* protocol # */
|
||||
};
|
||||
|
||||
struct rpcent {
|
||||
char *r_name; /* name of server for this rpc program */
|
||||
char **r_aliases; /* alias list */
|
||||
int r_number; /* rpc program number */
|
||||
};
|
||||
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT)
|
||||
|
||||
#define __NETDB_MAXALIASES 35
|
||||
#define __NETDB_MAXADDRS 35
|
||||
|
||||
/*
|
||||
* Error return codes from gethostbyname() and gethostbyaddr()
|
||||
* (left in extern int h_errno).
|
||||
*/
|
||||
#define h_errno (*__h_errno_location ())
|
||||
#else
|
||||
extern int h_errno;
|
||||
#endif
|
||||
|
||||
#define NETDB_INTERNAL -1 /* see errno */
|
||||
#define NETDB_SUCCESS 0 /* no problem */
|
||||
#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
|
||||
#define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */
|
||||
#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
|
||||
#define NO_DATA 4 /* Valid name, no data record of requested type */
|
||||
#define NO_ADDRESS NO_DATA /* no address, look for MX record */
|
||||
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
void endhostent __P((void));
|
||||
void endnetent __P((void));
|
||||
void endprotoent __P((void));
|
||||
void endservent __P((void));
|
||||
void endrpcent __P ((void));
|
||||
struct hostent *gethostbyaddr __P((__const char *, int, int));
|
||||
struct hostent *gethostbyname __P((__const char *));
|
||||
struct hostent *gethostent __P((void));
|
||||
struct netent *getnetbyaddr __P((long, int)); /* u_long? */
|
||||
struct netent *getnetbyname __P((__const char *));
|
||||
struct netent *getnetent __P((void));
|
||||
struct protoent *getprotobyname __P((__const char *));
|
||||
struct protoent *getprotobynumber __P((int));
|
||||
struct protoent *getprotoent __P((void));
|
||||
struct servent *getservbyname __P((__const char *, __const char *));
|
||||
struct servent *getservbyport __P((int, __const char *));
|
||||
struct servent *getservent __P((void));
|
||||
struct rpcent *getrpcent __P((void));
|
||||
struct rpcent *getrpcbyname __P((__const char *));
|
||||
struct rpcent *getrpcbynumber __P((int));
|
||||
void herror __P((__const char *));
|
||||
void sethostent __P((int));
|
||||
/* void sethostfile __P((__const char *)); */
|
||||
void setnetent __P((int));
|
||||
void setprotoent __P((int));
|
||||
void setservent __P((int));
|
||||
void setrpcent __P((int));
|
||||
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT)
|
||||
struct hostent *gethostbyaddr_r __P((const char *__addr,
|
||||
int __length, int __type,
|
||||
struct hostent *__result,
|
||||
char *__buffer, int __buflen, int *__h_errnop));
|
||||
struct hostent *gethostbyname_r __P((const char * __name,
|
||||
struct hostent *__result, char *__buffer,
|
||||
int __buflen, int *__h_errnop));
|
||||
struct hostent *gethostent_r __P((struct hostent *__result,
|
||||
char *__buffer, int __buflen, int *__h_errnop));
|
||||
struct netent *getnetbyaddr_r __P((long __net, int __type,
|
||||
struct netent *__result, char *__buffer,
|
||||
int __buflen));
|
||||
struct netent *getnetbyname_r __P((const char * __name,
|
||||
struct netent *__result, char *__buffer,
|
||||
int __buflen));
|
||||
struct netent *getnetent_r __P((struct netent *__result,
|
||||
char *__buffer, int __buflen));
|
||||
struct protoent *getprotobyname_r __P((const char * __name,
|
||||
struct protoent *__result, char *__buffer,
|
||||
int __buflen));
|
||||
struct protoent *getprotobynumber_r __P((int __proto,
|
||||
struct protoent *__result, char *__buffer,
|
||||
int __buflen));
|
||||
struct protoent *getprotoent_r __P((struct protoent *__result,
|
||||
char *__buffer, int __buflen));
|
||||
struct servent *getservbyname_r __P((const char * __name,
|
||||
const char *__proto, struct servent *__result,
|
||||
char *__buffer, int __buflen));
|
||||
struct servent *getservbyport_r __P((int __port,
|
||||
const char *__proto, struct servent *__result,
|
||||
char *__buffer, int __buflen));
|
||||
struct servent *getservent_r __P((struct servent *__result,
|
||||
char *__buffer, int __buflen));
|
||||
|
||||
int *__h_errno_location __P((void));
|
||||
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_NETDB_H_ */
|
24
include/netinet/igmp.h
Normal file
24
include/netinet/igmp.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef _NETINET_IGMP_H
|
||||
#define _NETINET_IGMP_H
|
||||
|
||||
#include <linux/igmp.h>
|
||||
|
||||
#ifdef __BSD_SOURCE
|
||||
|
||||
struct igmp
|
||||
{
|
||||
__u8 igmp_type;
|
||||
__u8 igmp_code;
|
||||
__u16 igmp_cksum;
|
||||
struct in_addr igmp_group;
|
||||
};
|
||||
|
||||
#define IGMP_MINLEN 8
|
||||
#define IGMP_MAX_HOST_REPORT_DELAY 10
|
||||
#define IGMP_TIMER_SCALE 10
|
||||
|
||||
#define IGMP_AGE_THRESHOLD 540
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IGMP_H */
|
88
include/netinet/in.h
Normal file
88
include/netinet/in.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/* Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library 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 1, or (at your option)
|
||||
any later version.
|
||||
|
||||
The GNU C 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with the GNU C Library; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#ifndef _NETINET_IN_H
|
||||
|
||||
#define _NETINET_IN_H 1
|
||||
#include <features.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Standard well-known ports. */
|
||||
enum
|
||||
{
|
||||
IPPORT_ECHO = 7, /* Echo service. */
|
||||
IPPORT_DISCARD = 9, /* Discard transmissions service. */
|
||||
IPPORT_SYSTAT = 11, /* System status service. */
|
||||
IPPORT_DAYTIME = 13, /* Time of day service. */
|
||||
IPPORT_NETSTAT = 15, /* Network status service. */
|
||||
IPPORT_FTP = 21, /* File Transfer Protocol. */
|
||||
IPPORT_TELNET = 23, /* Telnet protocol. */
|
||||
IPPORT_SMTP = 25, /* Simple Mail Transfer Protocol. */
|
||||
IPPORT_TIMESERVER = 37, /* Timeserver service. */
|
||||
IPPORT_NAMESERVER = 42, /* Domain Name Service. */
|
||||
IPPORT_WHOIS = 43, /* Internet Whois service. */
|
||||
IPPORT_MTP = 57,
|
||||
|
||||
IPPORT_TFTP = 69, /* Trivial File Transfer Protocol. */
|
||||
IPPORT_RJE = 77,
|
||||
IPPORT_FINGER = 79, /* Finger service. */
|
||||
IPPORT_TTYLINK = 87,
|
||||
IPPORT_SUPDUP = 95, /* SUPDUP protocol. */
|
||||
|
||||
|
||||
IPPORT_EXECSERVER = 512, /* execd service. */
|
||||
IPPORT_LOGINSERVER = 513, /* rlogind service. */
|
||||
IPPORT_CMDSERVER = 514,
|
||||
IPPORT_EFSSERVER = 520,
|
||||
|
||||
/* UDP ports. */
|
||||
IPPORT_BIFFUDP = 512,
|
||||
IPPORT_WHOSERVER = 513,
|
||||
IPPORT_ROUTESERVER = 520,
|
||||
|
||||
/* Ports less than this value are reserved for privileged processes. */
|
||||
IPPORT_RESERVED = 1024,
|
||||
|
||||
/* Ports greater this value are reserved for (non-privileged) servers. */
|
||||
IPPORT_USERRESERVED = 5000
|
||||
};
|
||||
|
||||
|
||||
/* Link numbers. */
|
||||
#define IMPLINK_IP 155
|
||||
#define IMPLINK_LOWEXPER 156
|
||||
#define IMPLINK_HIGHEXPER 158
|
||||
|
||||
|
||||
/*
|
||||
* Many other definitions have been moved to <linux/in.h>,
|
||||
* because several parts of the kernel need them. -FvK
|
||||
*/
|
||||
#include <linux/in.h>
|
||||
|
||||
/*
|
||||
* Bind a socket to a privileged IP port
|
||||
*/
|
||||
extern int bindresvport __P ((int __sockfd,
|
||||
struct sockaddr_in * __sin));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* netinet/in.h */
|
1
include/netinet/in_systm.h
Normal file
1
include/netinet/in_systm.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/in_systm.h>
|
39
include/netinet/ip.h
Normal file
39
include/netinet/ip.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef _NETINET_IP_H
|
||||
#define _NETINET_IP_H
|
||||
|
||||
#include <features.h>
|
||||
#include <netinet/in.h>
|
||||
#include <linux/ip.h>
|
||||
|
||||
#ifdef _BSD_SOURCE
|
||||
|
||||
/*
|
||||
* BSD has the following structure
|
||||
*/
|
||||
|
||||
struct ip
|
||||
{
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 ip_hl:4,
|
||||
ip_v:4;
|
||||
#else
|
||||
__u8 ip_v:4,
|
||||
ip_hl:4;
|
||||
#endif
|
||||
#define IPVERSION 4
|
||||
__u8 ip_tos;
|
||||
__u16 ip_len;
|
||||
__u16 ip_id;
|
||||
__u16 ip_off;
|
||||
__u8 ip_ttl;
|
||||
__u8 ip_p;
|
||||
__u16 ip_csum;
|
||||
struct in_addr ip_src,ip_dst;
|
||||
};
|
||||
|
||||
#define IP_DF 0x4000 /* dont fragment flag */
|
||||
#define IP_MF 0x2000 /* more fragments flag */
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IP_H */
|
1
include/netinet/ip_fw.h
Normal file
1
include/netinet/ip_fw.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/ip_fw.h>
|
1
include/netinet/ip_icmp.h
Normal file
1
include/netinet/ip_icmp.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/icmp.h>
|
72
include/netinet/ip_tcp.h
Normal file
72
include/netinet/ip_tcp.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 1982, 1986 Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that the above copyright notice and this paragraph are
|
||||
* duplicated in all such forms and that any documentation,
|
||||
* advertising materials, and other materials related to such
|
||||
* distribution and use acknowledge that the software was developed
|
||||
* by the University of California, Berkeley. The name of the
|
||||
* University may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* @(#)tcp.h 7.5 (Berkeley) 6/29/88
|
||||
*/
|
||||
|
||||
#ifndef _NETINET_IP_TCP_H
|
||||
#define _NETINET_IP_TCP_H
|
||||
|
||||
#include <endian.h>
|
||||
#include <linux/socket.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
typedef u_long tcp_seq;
|
||||
/*
|
||||
* TCP header.
|
||||
* Per RFC 793, September, 1981.
|
||||
*/
|
||||
struct tcphdr {
|
||||
u_short th_sport; /* source port */
|
||||
u_short th_dport; /* destination port */
|
||||
tcp_seq th_seq; /* sequence number */
|
||||
tcp_seq th_ack; /* acknowledgement number */
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
u_char th_x2:4, /* (unused) */
|
||||
th_off:4; /* data offset */
|
||||
#endif
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
u_char th_off:4, /* data offset */
|
||||
th_x2:4; /* (unused) */
|
||||
#endif
|
||||
u_char th_flags;
|
||||
#define TH_FIN 0x01
|
||||
#define TH_SYN 0x02
|
||||
#define TH_RST 0x04
|
||||
#define TH_PUSH 0x08
|
||||
#define TH_ACK 0x10
|
||||
#define TH_URG 0x20
|
||||
u_short th_win; /* window */
|
||||
u_short th_sum; /* checksum */
|
||||
u_short th_urp; /* urgent pointer */
|
||||
};
|
||||
|
||||
#define TCPOPT_EOL 0
|
||||
#define TCPOPT_NOP 1
|
||||
#define TCPOPT_MAXSEG 2
|
||||
|
||||
/*
|
||||
* Default maximum segment size for TCP.
|
||||
* With an IP MSS of 576, this is 536,
|
||||
* but 512 is probably more convenient.
|
||||
*/
|
||||
#ifdef lint
|
||||
#define TCP_MSS 536
|
||||
#else
|
||||
#define TCP_MSS MIN(512, IP_MSS - sizeof (struct tcpiphdr))
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_TCP_H */
|
1
include/netinet/ip_udp.h
Normal file
1
include/netinet/ip_udp.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/udp.h>
|
62
include/netinet/protocols.h
Normal file
62
include/netinet/protocols.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/* protocols.h */
|
||||
#ifndef _NETINET_PROTOCOLS_H
|
||||
#define _NETINET_PROTOCOLS_H
|
||||
|
||||
#define IP_ICMP 1
|
||||
#define IP_IGMP 2
|
||||
#define IP_GGP 3
|
||||
#define IP_ST 5
|
||||
#define IP_TCP 6
|
||||
#define IP_UCL 7
|
||||
#define IP_EGP 8
|
||||
#define IP_IGP 9
|
||||
#define IP_BBN_RCC_MON 10
|
||||
#define IP_NVP_II 11
|
||||
#define IP_PUP 12
|
||||
#define IP_ARGUS 13
|
||||
#define IP_EMCON 14
|
||||
#define IP_XNET 15
|
||||
#define IP_CHAOS 16
|
||||
#define IP_UDP 17
|
||||
#define IP_MUX 18
|
||||
#define IP_DCN_MEAS 19
|
||||
#define IP_HMP 20
|
||||
#define IP_PRM 21
|
||||
#define IP_XNS_IDP 22
|
||||
#define IP_TRUNK1 23
|
||||
#define IP_TRUNK2 24
|
||||
#define IP_LEAF1 25
|
||||
#define IP_LEAF2 26
|
||||
#define IP_RDP 27
|
||||
#define IP_IRTP 28
|
||||
#define IP_ISO_TP4 29
|
||||
#define IP_NETBLT 30
|
||||
#define IP_MFE_NSP 31
|
||||
#define IP_MERIT_INP 32
|
||||
#define IP_SEP 33
|
||||
#define IP_3PC 34
|
||||
#define IP_CFTP 62
|
||||
#define SAT_EXPAK 64
|
||||
#define IP_RVD 66
|
||||
#define IP_IPPC 67
|
||||
#define IP_SAT_MON 69
|
||||
#define IP_VISA 70
|
||||
#define IP_IPCV 71
|
||||
#define IP_BR_SAT_MON 76
|
||||
#define IP_SUN_ND 77
|
||||
#define IP_WB_MON 78
|
||||
#define IP_WB_EXPAK 79
|
||||
#define IP_ISO_IP 80
|
||||
#define IP_VMTP 81
|
||||
#define IP_SECURE_VMTP 82
|
||||
#define IP_VINES 83
|
||||
#define IP_TTP 84
|
||||
#define NSFNET_IGP 85
|
||||
#define IP_DGP 86
|
||||
#define IP_TCF 87
|
||||
#define IP_IGRP 88
|
||||
#define IP_OSPFIGP 89
|
||||
#define IP_SPRITE_RPG 90
|
||||
#define IP_LARP 91
|
||||
|
||||
#endif /* _NETINET_PROTOCOLS_H*/
|
1
include/netinet/tcp.h
Normal file
1
include/netinet/tcp.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <netinet/ip_tcp.h>
|
1
include/netinet/udp.h
Normal file
1
include/netinet/udp.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <netinet/ip_udp.h>
|
22
include/paths.h
Normal file
22
include/paths.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* paths.h <ndf@linux.mit.edu> */
|
||||
|
||||
#ifndef ___PATHS_H
|
||||
#define ___PATHS_H
|
||||
|
||||
|
||||
#define _PATH_CONSOLE "/dev/console"
|
||||
#define _PATH_TTY "/dev/tty"
|
||||
#define _PATH_NOLOGIN "/etc/nologin"
|
||||
#define _PATH_LOGIN "/bin/login"
|
||||
#define _PATH_BSHELL "/bin/sh"
|
||||
#define _PATH_UTMP "/var/run/utmp"
|
||||
#define _PATH_WTMP "/var/log/wtmp"
|
||||
#define _PATH_DEFPATH "/bin:/usr/bin:/usr/local/bin:."
|
||||
#define _PATH_DEV "/dev/"
|
||||
#define _PATH_DEVNULL "/dev/null"
|
||||
#define _PATH_TMP "/tmp/"
|
||||
#define _PATH_LASTLOG "/var/log/lastlog"
|
||||
#define _PATH_LOCALE "/usr/lib/locale"
|
||||
#define _PATH_VARRUN "/var/log/"
|
||||
|
||||
#endif /* __PATHS_H */
|
40
include/pwd.h
Normal file
40
include/pwd.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef __PWD_H
|
||||
#define __PWD_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <features.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* The passwd structure. */
|
||||
struct passwd
|
||||
{
|
||||
char *pw_name; /* Username. */
|
||||
char *pw_passwd; /* Password. */
|
||||
uid_t pw_uid; /* User ID. */
|
||||
gid_t pw_gid; /* Group ID. */
|
||||
char *pw_gecos; /* Real name. */
|
||||
char *pw_dir; /* Home directory. */
|
||||
char *pw_shell; /* Shell program. */
|
||||
};
|
||||
|
||||
|
||||
extern void setpwent __P ((void));
|
||||
extern void endpwent __P ((void));
|
||||
extern struct passwd * getpwent __P ((void));
|
||||
|
||||
extern int putpwent __P ((__const struct passwd * __p, FILE * __f));
|
||||
extern int getpw __P ((uid_t uid, char *buf));
|
||||
|
||||
extern struct passwd * fgetpwent __P ((FILE * file));
|
||||
|
||||
extern struct passwd * getpwuid __P ((__const uid_t));
|
||||
extern struct passwd * getpwnam __P ((__const char *));
|
||||
|
||||
#ifdef __LIBC__
|
||||
extern struct passwd * __getpwent __P ((__const int passwd_fd));
|
||||
#endif
|
||||
|
||||
#endif /* pwd.h */
|
||||
|
||||
|
||||
|
21
include/regexp.h
Normal file
21
include/regexp.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Definitions etc. for regexp(3) routines.
|
||||
*
|
||||
* Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
|
||||
* not the System V one.
|
||||
*/
|
||||
#define NSUBEXP 10
|
||||
typedef struct regexp {
|
||||
char *startp[NSUBEXP];
|
||||
char *endp[NSUBEXP];
|
||||
char regstart; /* Internal use only. */
|
||||
char reganch; /* Internal use only. */
|
||||
char *regmust; /* Internal use only. */
|
||||
int regmlen; /* Internal use only. */
|
||||
char program[1]; /* Unwarranted chumminess with compiler. */
|
||||
} regexp;
|
||||
|
||||
extern regexp *regcomp();
|
||||
extern int regexec();
|
||||
extern void regsub();
|
||||
extern void regerror();
|
85
include/resolv.h
Normal file
85
include/resolv.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* resolv.h: DNS Resolver
|
||||
*
|
||||
* Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com>,
|
||||
* The Silver Hammer Group, Ltd.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _RESOLV_H_
|
||||
#define _RESOLV_H_
|
||||
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
struct resolv_header {
|
||||
int id;
|
||||
int qr,opcode,aa,tc,rd,ra,rcode;
|
||||
int qdcount;
|
||||
int ancount;
|
||||
int nscount;
|
||||
int arcount;
|
||||
};
|
||||
|
||||
struct resolv_question {
|
||||
char * dotted;
|
||||
int qtype;
|
||||
int qclass;
|
||||
};
|
||||
|
||||
struct resolv_answer {
|
||||
char * dotted;
|
||||
int atype;
|
||||
int aclass;
|
||||
int ttl;
|
||||
int rdlength;
|
||||
unsigned char * rdata;
|
||||
int rdoffset;
|
||||
};
|
||||
|
||||
int encode_header(struct resolv_header * h, unsigned char * dest, int maxlen);
|
||||
int decode_header(unsigned char * data, struct resolv_header * h);
|
||||
int encode_dotted(const char * dotted, unsigned char * dest, int maxlen);
|
||||
int decode_dotted(const unsigned char * message, int offset,
|
||||
char * dest, int maxlen);
|
||||
int length_dotted(const unsigned char * message, int offset);
|
||||
int encode_question(struct resolv_question * q,
|
||||
unsigned char * dest, int maxlen);
|
||||
int decode_question(unsigned char * message, int offset,
|
||||
struct resolv_question * q);
|
||||
int length_question(unsigned char * message, int offset);
|
||||
int encode_answer(struct resolv_answer * a,
|
||||
unsigned char * dest, int maxlen);
|
||||
int decode_answer(unsigned char * message, int offset,
|
||||
struct resolv_answer * a);
|
||||
char * resolve_name(const char * name, int mailbox);
|
||||
|
||||
int encode_packet(struct resolv_header * h,
|
||||
struct resolv_question ** q,
|
||||
struct resolv_question ** an,
|
||||
struct resolv_question ** ns,
|
||||
struct resolv_question ** ar,
|
||||
unsigned char * dest, int maxlen);
|
||||
int decode_packet(unsigned char * data, struct resolv_header * h);
|
||||
|
||||
int dns_lookup(const char * name, int type, int nscount, const char ** nsip,
|
||||
unsigned char ** outpacket, struct resolv_answer * a);
|
||||
|
||||
int resolve_address(const char * address,
|
||||
int nscount, const char ** nsip,
|
||||
struct in_addr * in);
|
||||
|
||||
int resolve_mailbox(const char * address,
|
||||
int nscount, const char ** nsip,
|
||||
struct in_addr * in);
|
||||
|
||||
extern int open_nameservers(void);
|
||||
extern void close_nameservers(void);
|
||||
|
||||
extern struct hostent * gethostbyname(const char * name);
|
||||
extern struct hostent * gethostbyaddr(const char * addr, int len, int type);
|
||||
|
||||
#endif /*_RESOLV_H_*/
|
166
include/rpc/auth.h
Normal file
166
include/rpc/auth.h
Normal file
@@ -0,0 +1,166 @@
|
||||
/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* auth.h, Authentication interface.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*
|
||||
* The data structures are completely opaque to the client. The client
|
||||
* is required to pass a AUTH * to routines that create rpc
|
||||
* "sessions".
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_AUTH_BYTES 400
|
||||
#define MAXNETNAMELEN 255 /* maximum length of network user's name */
|
||||
|
||||
/*
|
||||
* Status returned from authentication check
|
||||
*/
|
||||
enum auth_stat {
|
||||
AUTH_OK=0,
|
||||
/*
|
||||
* failed at remote end
|
||||
*/
|
||||
AUTH_BADCRED=1, /* bogus credentials (seal broken) */
|
||||
AUTH_REJECTEDCRED=2, /* client should begin new session */
|
||||
AUTH_BADVERF=3, /* bogus verifier (seal broken) */
|
||||
AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */
|
||||
AUTH_TOOWEAK=5, /* rejected due to security reasons */
|
||||
/*
|
||||
* failed locally
|
||||
*/
|
||||
AUTH_INVALIDRESP=6, /* bogus response verifier */
|
||||
AUTH_FAILED=7 /* some unknown reason */
|
||||
};
|
||||
|
||||
#if (mc68000 || sparc || vax || i386)
|
||||
typedef u_long u_int32; /* 32-bit unsigned integers */
|
||||
#endif
|
||||
|
||||
union des_block {
|
||||
struct {
|
||||
u_int32 high;
|
||||
u_int32 low;
|
||||
} key;
|
||||
char c[8];
|
||||
};
|
||||
typedef union des_block des_block;
|
||||
extern bool_t xdr_des_block();
|
||||
|
||||
/*
|
||||
* Authentication info. Opaque to client.
|
||||
*/
|
||||
struct opaque_auth {
|
||||
enum_t oa_flavor; /* flavor of auth */
|
||||
caddr_t oa_base; /* address of more auth stuff */
|
||||
u_int oa_length; /* not to exceed MAX_AUTH_BYTES */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Auth handle, interface to client side authenticators.
|
||||
*/
|
||||
typedef struct {
|
||||
struct opaque_auth ah_cred;
|
||||
struct opaque_auth ah_verf;
|
||||
union des_block ah_key;
|
||||
struct auth_ops {
|
||||
void (*ah_nextverf)();
|
||||
int (*ah_marshal)(); /* nextverf & serialize */
|
||||
int (*ah_validate)(); /* validate varifier */
|
||||
int (*ah_refresh)(); /* refresh credentials */
|
||||
void (*ah_destroy)(); /* destroy this structure */
|
||||
} *ah_ops;
|
||||
caddr_t ah_private;
|
||||
} AUTH;
|
||||
|
||||
|
||||
/*
|
||||
* Authentication ops.
|
||||
* The ops and the auth handle provide the interface to the authenticators.
|
||||
*
|
||||
* AUTH *auth;
|
||||
* XDR *xdrs;
|
||||
* struct opaque_auth verf;
|
||||
*/
|
||||
#define AUTH_NEXTVERF(auth) \
|
||||
((*((auth)->ah_ops->ah_nextverf))(auth))
|
||||
#define auth_nextverf(auth) \
|
||||
((*((auth)->ah_ops->ah_nextverf))(auth))
|
||||
|
||||
#define AUTH_MARSHALL(auth, xdrs) \
|
||||
((*((auth)->ah_ops->ah_marshal))(auth, xdrs))
|
||||
#define auth_marshall(auth, xdrs) \
|
||||
((*((auth)->ah_ops->ah_marshal))(auth, xdrs))
|
||||
|
||||
#define AUTH_VALIDATE(auth, verfp) \
|
||||
((*((auth)->ah_ops->ah_validate))((auth), verfp))
|
||||
#define auth_validate(auth, verfp) \
|
||||
((*((auth)->ah_ops->ah_validate))((auth), verfp))
|
||||
|
||||
#define AUTH_REFRESH(auth) \
|
||||
((*((auth)->ah_ops->ah_refresh))(auth))
|
||||
#define auth_refresh(auth) \
|
||||
((*((auth)->ah_ops->ah_refresh))(auth))
|
||||
|
||||
#define AUTH_DESTROY(auth) \
|
||||
((*((auth)->ah_ops->ah_destroy))(auth))
|
||||
#define auth_destroy(auth) \
|
||||
((*((auth)->ah_ops->ah_destroy))(auth))
|
||||
|
||||
|
||||
extern struct opaque_auth _null_auth;
|
||||
|
||||
|
||||
/*
|
||||
* These are the various implementations of client side authenticators.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Unix style authentication
|
||||
* AUTH *authunix_create(machname, uid, gid, len, aup_gids)
|
||||
* char *machname;
|
||||
* int uid;
|
||||
* int gid;
|
||||
* int len;
|
||||
* int *aup_gids;
|
||||
*/
|
||||
extern AUTH *authunix_create();
|
||||
extern AUTH *authunix_create_default(); /* takes no parameters */
|
||||
extern AUTH *authnone_create(); /* takes no parameters */
|
||||
extern AUTH *authdes_create();
|
||||
|
||||
#define AUTH_NONE 0 /* no authentication */
|
||||
#define AUTH_NULL 0 /* backward compatibility */
|
||||
#define AUTH_UNIX 1 /* unix style (uid, gids) */
|
||||
#define AUTH_SHORT 2 /* short hand unix style */
|
||||
#define AUTH_DES 3 /* des style (encrypted timestamps) */
|
46
include/rpc/auth_des.h
Normal file
46
include/rpc/auth_des.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _RPC_AUTH_DES_H
|
||||
|
||||
#define _RPC_AUTH_DES_H 1
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* This is no complete version of this header. More definitions with
|
||||
the real authentication stuff will come in 1997. For now we only
|
||||
need to define the function for handling public keys. */
|
||||
|
||||
|
||||
/* Get the public key for NAME and place it in KEY. NAME can only be
|
||||
up to MAXNETNAMELEN bytes long and the destination buffer KEY should
|
||||
have HEXKEYBATES + 1 bytes long to fit all characters from the key. */
|
||||
extern int getpublickey __P ((__const char *__name, char *__key));
|
||||
|
||||
/* Get the secret key for NAME and place it in KEY. PASSWD is used to
|
||||
decrypt the encrypted key stored in the database. NAME can only be
|
||||
up to MAXNETNAMELEN bytes long and the destination buffer KEY
|
||||
should have HEXKEYBATES + 1 bytes long to fit all characters from
|
||||
the key. */
|
||||
extern int getsecretkey __P ((__const char *__name, char *__key,
|
||||
__const char *__passwd));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* rpc/auth_des.h */
|
72
include/rpc/auth_unix.h
Normal file
72
include/rpc/auth_unix.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/* @(#)auth_unix.h 1.5 86/07/16 SMI */
|
||||
|
||||
/*
|
||||
* auth_unix.h, Protocol for UNIX style authentication parameters for RPC
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The system is very weak. The client uses no encryption for it
|
||||
* credentials and only sends null verifiers. The server sends backs
|
||||
* null verifiers or optionally a verifier that suggests a new short hand
|
||||
* for the credentials.
|
||||
*/
|
||||
|
||||
/* The machine name is part of a credential; it may not exceed 255 bytes */
|
||||
#define MAX_MACHINE_NAME 255
|
||||
|
||||
/* gids compose part of a credential; there may not be more than 16 of them */
|
||||
#define NGRPS 16
|
||||
|
||||
/*
|
||||
* Unix style credentials.
|
||||
*/
|
||||
struct authunix_parms {
|
||||
u_long aup_time;
|
||||
char *aup_machname;
|
||||
int aup_uid;
|
||||
int aup_gid;
|
||||
u_int aup_len;
|
||||
int *aup_gids;
|
||||
};
|
||||
|
||||
extern bool_t xdr_authunix_parms();
|
||||
|
||||
/*
|
||||
* If a response verifier has flavor AUTH_SHORT,
|
||||
* then the body of the response verifier encapsulates the following structure;
|
||||
* again it is serialized in the obvious fashion.
|
||||
*/
|
||||
struct short_hand_verf {
|
||||
struct opaque_auth new_cred;
|
||||
};
|
331
include/rpc/clnt.h
Normal file
331
include/rpc/clnt.h
Normal file
@@ -0,0 +1,331 @@
|
||||
/* @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.31 88/02/08 SMI*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* clnt.h - Client side remote procedure call interface.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _CLNT_
|
||||
#define _CLNT_
|
||||
|
||||
/*
|
||||
* Rpc calls return an enum clnt_stat. This should be looked at more,
|
||||
* since each implementation is required to live with this (implementation
|
||||
* independent) list of errors.
|
||||
*/
|
||||
enum clnt_stat {
|
||||
RPC_SUCCESS=0, /* call succeeded */
|
||||
/*
|
||||
* local errors
|
||||
*/
|
||||
RPC_CANTENCODEARGS=1, /* can't encode arguments */
|
||||
RPC_CANTDECODERES=2, /* can't decode results */
|
||||
RPC_CANTSEND=3, /* failure in sending call */
|
||||
RPC_CANTRECV=4, /* failure in receiving result */
|
||||
RPC_TIMEDOUT=5, /* call timed out */
|
||||
/*
|
||||
* remote errors
|
||||
*/
|
||||
RPC_VERSMISMATCH=6, /* rpc versions not compatible */
|
||||
RPC_AUTHERROR=7, /* authentication error */
|
||||
RPC_PROGUNAVAIL=8, /* program not available */
|
||||
RPC_PROGVERSMISMATCH=9, /* program version mismatched */
|
||||
RPC_PROCUNAVAIL=10, /* procedure unavailable */
|
||||
RPC_CANTDECODEARGS=11, /* decode arguments error */
|
||||
RPC_SYSTEMERROR=12, /* generic "other problem" */
|
||||
|
||||
/*
|
||||
* callrpc & clnt_create errors
|
||||
*/
|
||||
RPC_UNKNOWNHOST=13, /* unknown host name */
|
||||
RPC_UNKNOWNPROTO=17, /* unkown protocol */
|
||||
|
||||
/*
|
||||
* _ create errors
|
||||
*/
|
||||
RPC_PMAPFAILURE=14, /* the pmapper failed in its call */
|
||||
RPC_PROGNOTREGISTERED=15, /* remote program is not registered */
|
||||
/*
|
||||
* unspecified error
|
||||
*/
|
||||
RPC_FAILED=16
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Error info.
|
||||
*/
|
||||
struct rpc_err {
|
||||
enum clnt_stat re_status;
|
||||
union {
|
||||
int RE_errno; /* realated system error */
|
||||
enum auth_stat RE_why; /* why the auth error occurred */
|
||||
struct {
|
||||
u_long low; /* lowest verion supported */
|
||||
u_long high; /* highest verion supported */
|
||||
} RE_vers;
|
||||
struct { /* maybe meaningful if RPC_FAILED */
|
||||
long s1;
|
||||
long s2;
|
||||
} RE_lb; /* life boot & debugging only */
|
||||
} ru;
|
||||
#define re_errno ru.RE_errno
|
||||
#define re_why ru.RE_why
|
||||
#define re_vers ru.RE_vers
|
||||
#define re_lb ru.RE_lb
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Client rpc handle.
|
||||
* Created by individual implementations, see e.g. rpc_udp.c.
|
||||
* Client is responsible for initializing auth, see e.g. auth_none.c.
|
||||
*/
|
||||
typedef struct {
|
||||
AUTH *cl_auth; /* authenticator */
|
||||
struct clnt_ops {
|
||||
enum clnt_stat (*cl_call)(); /* call remote procedure */
|
||||
void (*cl_abort)(); /* abort a call */
|
||||
void (*cl_geterr)(); /* get specific error code */
|
||||
bool_t (*cl_freeres)(); /* frees results */
|
||||
void (*cl_destroy)();/* destroy this structure */
|
||||
bool_t (*cl_control)();/* the ioctl() of rpc */
|
||||
} *cl_ops;
|
||||
caddr_t cl_private; /* private stuff */
|
||||
} CLIENT;
|
||||
|
||||
|
||||
/*
|
||||
* client side rpc interface ops
|
||||
*
|
||||
* Parameter types are:
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* enum clnt_stat
|
||||
* CLNT_CALL(rh, proc, xargs, argsp, xres, resp, timeout)
|
||||
* CLIENT *rh;
|
||||
* u_long proc;
|
||||
* xdrproc_t xargs;
|
||||
* caddr_t argsp;
|
||||
* xdrproc_t xres;
|
||||
* caddr_t resp;
|
||||
* struct timeval timeout;
|
||||
*/
|
||||
#define CLNT_CALL(rh, proc, xargs, argsp, xres, resp, secs) \
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs))
|
||||
#define clnt_call(rh, proc, xargs, argsp, xres, resp, secs) \
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs))
|
||||
|
||||
/*
|
||||
* void
|
||||
* CLNT_ABORT(rh);
|
||||
* CLIENT *rh;
|
||||
*/
|
||||
#define CLNT_ABORT(rh) ((*(rh)->cl_ops->cl_abort)(rh))
|
||||
#define clnt_abort(rh) ((*(rh)->cl_ops->cl_abort)(rh))
|
||||
|
||||
/*
|
||||
* struct rpc_err
|
||||
* CLNT_GETERR(rh);
|
||||
* CLIENT *rh;
|
||||
*/
|
||||
#define CLNT_GETERR(rh,errp) ((*(rh)->cl_ops->cl_geterr)(rh, errp))
|
||||
#define clnt_geterr(rh,errp) ((*(rh)->cl_ops->cl_geterr)(rh, errp))
|
||||
|
||||
|
||||
/*
|
||||
* bool_t
|
||||
* CLNT_FREERES(rh, xres, resp);
|
||||
* CLIENT *rh;
|
||||
* xdrproc_t xres;
|
||||
* caddr_t resp;
|
||||
*/
|
||||
#define CLNT_FREERES(rh,xres,resp) ((*(rh)->cl_ops->cl_freeres)(rh,xres,resp))
|
||||
#define clnt_freeres(rh,xres,resp) ((*(rh)->cl_ops->cl_freeres)(rh,xres,resp))
|
||||
|
||||
/*
|
||||
* bool_t
|
||||
* CLNT_CONTROL(cl, request, info)
|
||||
* CLIENT *cl;
|
||||
* u_int request;
|
||||
* char *info;
|
||||
*/
|
||||
#define CLNT_CONTROL(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in))
|
||||
#define clnt_control(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in))
|
||||
|
||||
/*
|
||||
* control operations that apply to both udp and tcp transports
|
||||
*/
|
||||
#define CLSET_TIMEOUT 1 /* set timeout (timeval) */
|
||||
#define CLGET_TIMEOUT 2 /* get timeout (timeval) */
|
||||
#define CLGET_SERVER_ADDR 3 /* get server's address (sockaddr) */
|
||||
/*
|
||||
* udp only control operations
|
||||
*/
|
||||
#define CLSET_RETRY_TIMEOUT 4 /* set retry timeout (timeval) */
|
||||
#define CLGET_RETRY_TIMEOUT 5 /* get retry timeout (timeval) */
|
||||
|
||||
/*
|
||||
* void
|
||||
* CLNT_DESTROY(rh);
|
||||
* CLIENT *rh;
|
||||
*/
|
||||
#define CLNT_DESTROY(rh) ((*(rh)->cl_ops->cl_destroy)(rh))
|
||||
#define clnt_destroy(rh) ((*(rh)->cl_ops->cl_destroy)(rh))
|
||||
|
||||
|
||||
/*
|
||||
* RPCTEST is a test program which is accessable on every rpc
|
||||
* transport/port. It is used for testing, performance evaluation,
|
||||
* and network administration.
|
||||
*/
|
||||
|
||||
#define RPCTEST_PROGRAM ((u_long)1)
|
||||
#define RPCTEST_VERSION ((u_long)1)
|
||||
#define RPCTEST_NULL_PROC ((u_long)2)
|
||||
#define RPCTEST_NULL_BATCH_PROC ((u_long)3)
|
||||
|
||||
/*
|
||||
* By convention, procedure 0 takes null arguments and returns them
|
||||
*/
|
||||
|
||||
#define NULLPROC ((u_long)0)
|
||||
|
||||
/*
|
||||
* Below are the client handle creation routines for the various
|
||||
* implementations of client side rpc. They can return NULL if a
|
||||
* creation failure occurs.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory based rpc (for speed check and testing)
|
||||
* CLIENT *
|
||||
* clntraw_create(prog, vers)
|
||||
* u_long prog;
|
||||
* u_long vers;
|
||||
*/
|
||||
extern CLIENT *clntraw_create();
|
||||
|
||||
|
||||
/*
|
||||
* Generic client creation routine. Supported protocols are "udp" and "tcp"
|
||||
*/
|
||||
extern CLIENT *
|
||||
clnt_create(/*host, prog, vers, prot*/); /*
|
||||
char *host; -- hostname
|
||||
u_long prog; -- program number
|
||||
u_long vers; -- version number
|
||||
char *prot; -- protocol
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* TCP based rpc
|
||||
* CLIENT *
|
||||
* clnttcp_create(raddr, prog, vers, sockp, sendsz, recvsz)
|
||||
* struct sockaddr_in *raddr;
|
||||
* u_long prog;
|
||||
* u_long version;
|
||||
* register int *sockp;
|
||||
* u_int sendsz;
|
||||
* u_int recvsz;
|
||||
*/
|
||||
extern CLIENT *clnttcp_create();
|
||||
|
||||
/*
|
||||
* UDP based rpc.
|
||||
* CLIENT *
|
||||
* clntudp_create(raddr, program, version, wait, sockp)
|
||||
* struct sockaddr_in *raddr;
|
||||
* u_long program;
|
||||
* u_long version;
|
||||
* struct timeval wait;
|
||||
* int *sockp;
|
||||
*
|
||||
* Same as above, but you specify max packet sizes.
|
||||
* CLIENT *
|
||||
* clntudp_bufcreate(raddr, program, version, wait, sockp, sendsz, recvsz)
|
||||
* struct sockaddr_in *raddr;
|
||||
* u_long program;
|
||||
* u_long version;
|
||||
* struct timeval wait;
|
||||
* int *sockp;
|
||||
* u_int sendsz;
|
||||
* u_int recvsz;
|
||||
*/
|
||||
extern CLIENT *clntudp_create();
|
||||
extern CLIENT *clntudp_bufcreate();
|
||||
|
||||
/*
|
||||
* Print why creation failed
|
||||
*/
|
||||
void clnt_pcreateerror(/* char *msg */); /* stderr */
|
||||
char *clnt_spcreateerror(/* char *msg */); /* string */
|
||||
|
||||
/*
|
||||
* Like clnt_perror(), but is more verbose in its output
|
||||
*/
|
||||
void clnt_perrno(/* enum clnt_stat num */); /* stderr */
|
||||
|
||||
/*
|
||||
* Print an English error message, given the client error code
|
||||
*/
|
||||
void clnt_perror(/* CLIENT *clnt, char *msg */); /* stderr */
|
||||
char *clnt_sperror(/* CLIENT *clnt, char *msg */); /* string */
|
||||
|
||||
/*
|
||||
* If a creation fails, the following allows the user to figure out why.
|
||||
*/
|
||||
struct rpc_createerr {
|
||||
enum clnt_stat cf_stat;
|
||||
struct rpc_err cf_error; /* useful when cf_stat == RPC_PMAPFAILURE */
|
||||
};
|
||||
|
||||
extern struct rpc_createerr rpc_createerr;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copy error message to buffer.
|
||||
*/
|
||||
char *clnt_sperrno(/* enum clnt_stat num */); /* string */
|
||||
|
||||
|
||||
|
||||
#define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */
|
||||
#define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */
|
||||
|
||||
#endif /*!_CLNT_*/
|
65
include/rpc/pmap_clnt.h
Normal file
65
include/rpc/pmap_clnt.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.11 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* pmap_clnt.h
|
||||
* Supplies C routines to get to portmap services.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Usage:
|
||||
* success = pmap_set(program, version, protocol, port);
|
||||
* success = pmap_unset(program, version);
|
||||
* port = pmap_getport(address, program, version, protocol);
|
||||
* head = pmap_getmaps(address);
|
||||
* clnt_stat = pmap_rmtcall(address, program, version, procedure,
|
||||
* xdrargs, argsp, xdrres, resp, tout, port_ptr)
|
||||
* (works for udp only.)
|
||||
* clnt_stat = clnt_broadcast(program, version, procedure,
|
||||
* xdrargs, argsp, xdrres, resp, eachresult)
|
||||
* (like pmap_rmtcall, except the call is broadcasted to all
|
||||
* locally connected nets. For each valid response received,
|
||||
* the procedure eachresult is called. Its form is:
|
||||
* done = eachresult(resp, raddr)
|
||||
* bool_t done;
|
||||
* caddr_t resp;
|
||||
* struct sockaddr_in raddr;
|
||||
* where resp points to the results of the call and raddr is the
|
||||
* address if the responder to the broadcast.
|
||||
*/
|
||||
|
||||
extern bool_t pmap_set();
|
||||
extern bool_t pmap_unset();
|
||||
extern struct pmaplist *pmap_getmaps();
|
||||
enum clnt_stat pmap_rmtcall();
|
||||
enum clnt_stat clnt_broadcast();
|
||||
extern u_short pmap_getport();
|
94
include/rpc/pmap_prot.h
Normal file
94
include/rpc/pmap_prot.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/* @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC; from 1.14 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* pmap_prot.h
|
||||
* Protocol for the local binder service, or pmap.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*
|
||||
* The following procedures are supported by the protocol:
|
||||
*
|
||||
* PMAPPROC_NULL() returns ()
|
||||
* takes nothing, returns nothing
|
||||
*
|
||||
* PMAPPROC_SET(struct pmap) returns (bool_t)
|
||||
* TRUE is success, FALSE is failure. Registers the tuple
|
||||
* [prog, vers, prot, port].
|
||||
*
|
||||
* PMAPPROC_UNSET(struct pmap) returns (bool_t)
|
||||
* TRUE is success, FALSE is failure. Un-registers pair
|
||||
* [prog, vers]. prot and port are ignored.
|
||||
*
|
||||
* PMAPPROC_GETPORT(struct pmap) returns (long unsigned).
|
||||
* 0 is failure. Otherwise returns the port number where the pair
|
||||
* [prog, vers] is registered. It may lie!
|
||||
*
|
||||
* PMAPPROC_DUMP() RETURNS (struct pmaplist *)
|
||||
*
|
||||
* PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>)
|
||||
* RETURNS (port, string<>);
|
||||
* usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs);
|
||||
* Calls the procedure on the local machine. If it is not registered,
|
||||
* this procedure is quite; ie it does not return error information!!!
|
||||
* This procedure only is supported on rpc/udp and calls via
|
||||
* rpc/udp. This routine only passes null authentication parameters.
|
||||
* This file has no interface to xdr routines for PMAPPROC_CALLIT.
|
||||
*
|
||||
* The service supports remote procedure calls on udp/ip or tcp/ip socket 111.
|
||||
*/
|
||||
|
||||
#define PMAPPORT ((u_short)111)
|
||||
#define PMAPPROG ((u_long)100000)
|
||||
#define PMAPVERS ((u_long)2)
|
||||
#define PMAPVERS_PROTO ((u_long)2)
|
||||
#define PMAPVERS_ORIG ((u_long)1)
|
||||
#define PMAPPROC_NULL ((u_long)0)
|
||||
#define PMAPPROC_SET ((u_long)1)
|
||||
#define PMAPPROC_UNSET ((u_long)2)
|
||||
#define PMAPPROC_GETPORT ((u_long)3)
|
||||
#define PMAPPROC_DUMP ((u_long)4)
|
||||
#define PMAPPROC_CALLIT ((u_long)5)
|
||||
|
||||
struct pmap {
|
||||
long unsigned pm_prog;
|
||||
long unsigned pm_vers;
|
||||
long unsigned pm_prot;
|
||||
long unsigned pm_port;
|
||||
};
|
||||
|
||||
extern bool_t xdr_pmap();
|
||||
|
||||
struct pmaplist {
|
||||
struct pmap pml_map;
|
||||
struct pmaplist *pml_next;
|
||||
};
|
||||
|
||||
extern bool_t xdr_pmaplist();
|
53
include/rpc/pmap_rmt.h
Normal file
53
include/rpc/pmap_rmt.h
Normal file
@@ -0,0 +1,53 @@
|
||||
/* @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC; from 1.2 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structures and XDR routines for parameters to and replies from
|
||||
* the portmapper remote-call-service.
|
||||
*
|
||||
* Copyright (C) 1986, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
struct rmtcallargs {
|
||||
u_long prog, vers, proc, arglen;
|
||||
caddr_t args_ptr;
|
||||
xdrproc_t xdr_args;
|
||||
};
|
||||
|
||||
bool_t xdr_rmtcall_args();
|
||||
|
||||
struct rmtcallres {
|
||||
u_long *port_ptr;
|
||||
u_long resultslen;
|
||||
caddr_t results_ptr;
|
||||
xdrproc_t xdr_results;
|
||||
};
|
||||
|
||||
bool_t xdr_rmtcallres();
|
79
include/rpc/rpc.h
Normal file
79
include/rpc/rpc.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/* @(#)rpc.h 2.3 88/08/10 4.0 RPCSRC; from 1.9 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* rpc.h, Just includes the billions of rpc header files necessary to
|
||||
* do remote procedure calling.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
#ifndef __RPC_HEADER__
|
||||
#define __RPC_HEADER__
|
||||
|
||||
#ifdef linux
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include <rpc/types.h> /* some typedefs */
|
||||
#include <netinet/in.h>
|
||||
|
||||
/* external data representation interfaces */
|
||||
#include <rpc/xdr.h> /* generic (de)serializer */
|
||||
|
||||
/* Client side only authentication */
|
||||
#include <rpc/auth.h> /* generic authenticator (client side) */
|
||||
|
||||
/* Client side (mostly) remote procedure call */
|
||||
#include <rpc/clnt.h> /* generic rpc stuff */
|
||||
|
||||
/* semi-private protocol headers */
|
||||
#include <rpc/rpc_msg.h> /* protocol for rpc messages */
|
||||
#include <rpc/auth_unix.h> /* protocol for unix style cred */
|
||||
/*
|
||||
* Uncomment-out the next line if you are building the rpc library with
|
||||
* DES Authentication (see the README file in the secure_rpc/ directory).
|
||||
*/
|
||||
/*#include <rpc/auth_des.h> /* protocol for des style cred */
|
||||
|
||||
/* Server side only remote procedure callee */
|
||||
#include <rpc/svc.h> /* service manager and multiplexer */
|
||||
#include <rpc/svc_auth.h> /* service side authenticator */
|
||||
|
||||
/*
|
||||
* COMMENT OUT THE NEXT INCLUDE IF RUNNING ON SUN OS OR ON A VERSION
|
||||
* OF UNIX BASED ON NFSSRC. These systems will already have the structures
|
||||
* defined by <rpc/netdb.h> included in <netdb.h>.
|
||||
*/
|
||||
/* routines for parsing /etc/rpc */
|
||||
#if 0
|
||||
#include <rpc/netdb.h> /* structures and routines to parse /etc/rpc */
|
||||
#endif
|
||||
|
||||
#endif /* ndef __RPC_HEADER__ */
|
187
include/rpc/rpc_msg.h
Normal file
187
include/rpc/rpc_msg.h
Normal file
@@ -0,0 +1,187 @@
|
||||
/* @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/* @(#)rpc_msg.h 1.7 86/07/16 SMI */
|
||||
|
||||
/*
|
||||
* rpc_msg.h
|
||||
* rpc message definition
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#define RPC_MSG_VERSION ((u_long) 2)
|
||||
#define RPC_SERVICE_PORT ((u_short) 2048)
|
||||
|
||||
/*
|
||||
* Bottom up definition of an rpc message.
|
||||
* NOTE: call and reply use the same overall stuct but
|
||||
* different parts of unions within it.
|
||||
*/
|
||||
|
||||
enum msg_type {
|
||||
CALL=0,
|
||||
REPLY=1
|
||||
};
|
||||
|
||||
enum reply_stat {
|
||||
MSG_ACCEPTED=0,
|
||||
MSG_DENIED=1
|
||||
};
|
||||
|
||||
enum accept_stat {
|
||||
SUCCESS=0,
|
||||
PROG_UNAVAIL=1,
|
||||
PROG_MISMATCH=2,
|
||||
PROC_UNAVAIL=3,
|
||||
GARBAGE_ARGS=4,
|
||||
SYSTEM_ERR=5
|
||||
};
|
||||
|
||||
enum reject_stat {
|
||||
RPC_MISMATCH=0,
|
||||
AUTH_ERROR=1
|
||||
};
|
||||
|
||||
/*
|
||||
* Reply part of an rpc exchange
|
||||
*/
|
||||
|
||||
/*
|
||||
* Reply to an rpc request that was accepted by the server.
|
||||
* Note: there could be an error even though the request was
|
||||
* accepted.
|
||||
*/
|
||||
struct accepted_reply {
|
||||
struct opaque_auth ar_verf;
|
||||
enum accept_stat ar_stat;
|
||||
union {
|
||||
struct {
|
||||
u_long low;
|
||||
u_long high;
|
||||
} AR_versions;
|
||||
struct {
|
||||
caddr_t where;
|
||||
xdrproc_t proc;
|
||||
} AR_results;
|
||||
/* and many other null cases */
|
||||
} ru;
|
||||
#define ar_results ru.AR_results
|
||||
#define ar_vers ru.AR_versions
|
||||
};
|
||||
|
||||
/*
|
||||
* Reply to an rpc request that was rejected by the server.
|
||||
*/
|
||||
struct rejected_reply {
|
||||
enum reject_stat rj_stat;
|
||||
union {
|
||||
struct {
|
||||
u_long low;
|
||||
u_long high;
|
||||
} RJ_versions;
|
||||
enum auth_stat RJ_why; /* why authentication did not work */
|
||||
} ru;
|
||||
#define rj_vers ru.RJ_versions
|
||||
#define rj_why ru.RJ_why
|
||||
};
|
||||
|
||||
/*
|
||||
* Body of a reply to an rpc request.
|
||||
*/
|
||||
struct reply_body {
|
||||
enum reply_stat rp_stat;
|
||||
union {
|
||||
struct accepted_reply RP_ar;
|
||||
struct rejected_reply RP_dr;
|
||||
} ru;
|
||||
#define rp_acpt ru.RP_ar
|
||||
#define rp_rjct ru.RP_dr
|
||||
};
|
||||
|
||||
/*
|
||||
* Body of an rpc request call.
|
||||
*/
|
||||
struct call_body {
|
||||
u_long cb_rpcvers; /* must be equal to two */
|
||||
u_long cb_prog;
|
||||
u_long cb_vers;
|
||||
u_long cb_proc;
|
||||
struct opaque_auth cb_cred;
|
||||
struct opaque_auth cb_verf; /* protocol specific - provided by client */
|
||||
};
|
||||
|
||||
/*
|
||||
* The rpc message
|
||||
*/
|
||||
struct rpc_msg {
|
||||
u_long rm_xid;
|
||||
enum msg_type rm_direction;
|
||||
union {
|
||||
struct call_body RM_cmb;
|
||||
struct reply_body RM_rmb;
|
||||
} ru;
|
||||
#define rm_call ru.RM_cmb
|
||||
#define rm_reply ru.RM_rmb
|
||||
};
|
||||
#define acpted_rply ru.RM_rmb.ru.RP_ar
|
||||
#define rjcted_rply ru.RM_rmb.ru.RP_dr
|
||||
|
||||
|
||||
/*
|
||||
* XDR routine to handle a rpc message.
|
||||
* xdr_callmsg(xdrs, cmsg)
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *cmsg;
|
||||
*/
|
||||
extern bool_t xdr_callmsg();
|
||||
|
||||
/*
|
||||
* XDR routine to pre-serialize the static part of a rpc message.
|
||||
* xdr_callhdr(xdrs, cmsg)
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *cmsg;
|
||||
*/
|
||||
extern bool_t xdr_callhdr();
|
||||
|
||||
/*
|
||||
* XDR routine to handle a rpc reply.
|
||||
* xdr_replymsg(xdrs, rmsg)
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *rmsg;
|
||||
*/
|
||||
extern bool_t xdr_replymsg();
|
||||
|
||||
/*
|
||||
* Fills in the error part of a reply message.
|
||||
* _seterr_reply(msg, error)
|
||||
* struct rpc_msg *msg;
|
||||
* struct rpc_err *error;
|
||||
*/
|
||||
extern void _seterr_reply();
|
280
include/rpc/svc.h
Normal file
280
include/rpc/svc.h
Normal file
@@ -0,0 +1,280 @@
|
||||
/* @(#)svc.h 2.2 88/07/29 4.0 RPCSRC; from 1.20 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* svc.h, Server-side remote procedure call interface.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __SVC_HEADER__
|
||||
#define __SVC_HEADER__
|
||||
|
||||
/*
|
||||
* This interface must manage two items concerning remote procedure calling:
|
||||
*
|
||||
* 1) An arbitrary number of transport connections upon which rpc requests
|
||||
* are received. The two most notable transports are TCP and UDP; they are
|
||||
* created and registered by routines in svc_tcp.c and svc_udp.c, respectively;
|
||||
* they in turn call xprt_register and xprt_unregister.
|
||||
*
|
||||
* 2) An arbitrary number of locally registered services. Services are
|
||||
* described by the following four data: program number, version number,
|
||||
* "service dispatch" function, a transport handle, and a boolean that
|
||||
* indicates whether or not the exported program should be registered with a
|
||||
* local binder service; if true the program's number and version and the
|
||||
* port number from the transport handle are registered with the binder.
|
||||
* These data are registered with the rpc svc system via svc_register.
|
||||
*
|
||||
* A service's dispatch function is called whenever an rpc request comes in
|
||||
* on a transport. The request's program and version numbers must match
|
||||
* those of the registered service. The dispatch function is passed two
|
||||
* parameters, struct svc_req * and SVCXPRT *, defined below.
|
||||
*/
|
||||
|
||||
enum xprt_stat {
|
||||
XPRT_DIED,
|
||||
XPRT_MOREREQS,
|
||||
XPRT_IDLE
|
||||
};
|
||||
|
||||
/*
|
||||
* Server side transport handle
|
||||
*/
|
||||
typedef struct {
|
||||
int xp_sock;
|
||||
u_short xp_port; /* associated port number */
|
||||
struct xp_ops {
|
||||
bool_t (*xp_recv)(); /* receive incomming requests */
|
||||
enum xprt_stat (*xp_stat)(); /* get transport status */
|
||||
bool_t (*xp_getargs)(); /* get arguments */
|
||||
bool_t (*xp_reply)(); /* send reply */
|
||||
bool_t (*xp_freeargs)();/* free mem allocated for args */
|
||||
void (*xp_destroy)(); /* destroy this struct */
|
||||
} *xp_ops;
|
||||
int xp_addrlen; /* length of remote address */
|
||||
struct sockaddr_in xp_raddr; /* remote address */
|
||||
struct opaque_auth xp_verf; /* raw response verifier */
|
||||
caddr_t xp_p1; /* private */
|
||||
caddr_t xp_p2; /* private */
|
||||
} SVCXPRT;
|
||||
|
||||
/*
|
||||
* Approved way of getting address of caller
|
||||
*/
|
||||
#define svc_getcaller(x) (&(x)->xp_raddr)
|
||||
|
||||
/*
|
||||
* Operations defined on an SVCXPRT handle
|
||||
*
|
||||
* SVCXPRT *xprt;
|
||||
* struct rpc_msg *msg;
|
||||
* xdrproc_t xargs;
|
||||
* caddr_t argsp;
|
||||
*/
|
||||
#define SVC_RECV(xprt, msg) \
|
||||
(*(xprt)->xp_ops->xp_recv)((xprt), (msg))
|
||||
#define svc_recv(xprt, msg) \
|
||||
(*(xprt)->xp_ops->xp_recv)((xprt), (msg))
|
||||
|
||||
#define SVC_STAT(xprt) \
|
||||
(*(xprt)->xp_ops->xp_stat)(xprt)
|
||||
#define svc_stat(xprt) \
|
||||
(*(xprt)->xp_ops->xp_stat)(xprt)
|
||||
|
||||
#define SVC_GETARGS(xprt, xargs, argsp) \
|
||||
(*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp))
|
||||
#define svc_getargs(xprt, xargs, argsp) \
|
||||
(*(xprt)->xp_ops->xp_getargs)((xprt), (xargs), (argsp))
|
||||
|
||||
#define SVC_REPLY(xprt, msg) \
|
||||
(*(xprt)->xp_ops->xp_reply) ((xprt), (msg))
|
||||
#define svc_reply(xprt, msg) \
|
||||
(*(xprt)->xp_ops->xp_reply) ((xprt), (msg))
|
||||
|
||||
#define SVC_FREEARGS(xprt, xargs, argsp) \
|
||||
(*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp))
|
||||
#define svc_freeargs(xprt, xargs, argsp) \
|
||||
(*(xprt)->xp_ops->xp_freeargs)((xprt), (xargs), (argsp))
|
||||
|
||||
#define SVC_DESTROY(xprt) \
|
||||
(*(xprt)->xp_ops->xp_destroy)(xprt)
|
||||
#define svc_destroy(xprt) \
|
||||
(*(xprt)->xp_ops->xp_destroy)(xprt)
|
||||
|
||||
|
||||
/*
|
||||
* Service request
|
||||
*/
|
||||
struct svc_req {
|
||||
u_long rq_prog; /* service program number */
|
||||
u_long rq_vers; /* service protocol version */
|
||||
u_long rq_proc; /* the desired procedure */
|
||||
struct opaque_auth rq_cred; /* raw creds from the wire */
|
||||
caddr_t rq_clntcred; /* read only cooked cred */
|
||||
SVCXPRT *rq_xprt; /* associated transport */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Service registration
|
||||
*
|
||||
* svc_register(xprt, prog, vers, dispatch, protocol)
|
||||
* SVCXPRT *xprt;
|
||||
* u_long prog;
|
||||
* u_long vers;
|
||||
* void (*dispatch)();
|
||||
* int protocol; /* like TCP or UDP, zero means do not register
|
||||
*/
|
||||
extern bool_t svc_register();
|
||||
|
||||
/*
|
||||
* Service un-registration
|
||||
*
|
||||
* svc_unregister(prog, vers)
|
||||
* u_long prog;
|
||||
* u_long vers;
|
||||
*/
|
||||
extern void svc_unregister();
|
||||
|
||||
/*
|
||||
* Transport registration.
|
||||
*
|
||||
* xprt_register(xprt)
|
||||
* SVCXPRT *xprt;
|
||||
*/
|
||||
extern void xprt_register();
|
||||
|
||||
/*
|
||||
* Transport un-register
|
||||
*
|
||||
* xprt_unregister(xprt)
|
||||
* SVCXPRT *xprt;
|
||||
*/
|
||||
extern void xprt_unregister();
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* When the service routine is called, it must first check to see if it
|
||||
* knows about the procedure; if not, it should call svcerr_noproc
|
||||
* and return. If so, it should deserialize its arguments via
|
||||
* SVC_GETARGS (defined above). If the deserialization does not work,
|
||||
* svcerr_decode should be called followed by a return. Successful
|
||||
* decoding of the arguments should be followed the execution of the
|
||||
* procedure's code and a call to svc_sendreply.
|
||||
*
|
||||
* Also, if the service refuses to execute the procedure due to too-
|
||||
* weak authentication parameters, svcerr_weakauth should be called.
|
||||
* Note: do not confuse access-control failure with weak authentication!
|
||||
*
|
||||
* NB: In pure implementations of rpc, the caller always waits for a reply
|
||||
* msg. This message is sent when svc_sendreply is called.
|
||||
* Therefore pure service implementations should always call
|
||||
* svc_sendreply even if the function logically returns void; use
|
||||
* xdr.h - xdr_void for the xdr routine. HOWEVER, tcp based rpc allows
|
||||
* for the abuse of pure rpc via batched calling or pipelining. In the
|
||||
* case of a batched call, svc_sendreply should NOT be called since
|
||||
* this would send a return message, which is what batching tries to avoid.
|
||||
* It is the service/protocol writer's responsibility to know which calls are
|
||||
* batched and which are not. Warning: responding to batch calls may
|
||||
* deadlock the caller and server processes!
|
||||
*/
|
||||
|
||||
extern bool_t svc_sendreply();
|
||||
extern void svcerr_decode();
|
||||
extern void svcerr_weakauth();
|
||||
extern void svcerr_noproc();
|
||||
extern void svcerr_progvers();
|
||||
extern void svcerr_auth();
|
||||
extern void svcerr_noprog();
|
||||
extern void svcerr_systemerr();
|
||||
|
||||
/*
|
||||
* Lowest level dispatching -OR- who owns this process anyway.
|
||||
* Somebody has to wait for incoming requests and then call the correct
|
||||
* service routine. The routine svc_run does infinite waiting; i.e.,
|
||||
* svc_run never returns.
|
||||
* Since another (co-existant) package may wish to selectively wait for
|
||||
* incoming calls or other events outside of the rpc architecture, the
|
||||
* routine svc_getreq is provided. It must be passed readfds, the
|
||||
* "in-place" results of a select system call (see select, section 2).
|
||||
*/
|
||||
|
||||
/*
|
||||
* Global keeper of rpc service descriptors in use
|
||||
* dynamic; must be inspected before each call to select
|
||||
*/
|
||||
#ifdef FD_SETSIZE
|
||||
extern fd_set svc_fdset;
|
||||
#define svc_fds svc_fdset.fds_bits[0] /* compatibility */
|
||||
#else
|
||||
extern int svc_fds;
|
||||
#endif /* def FD_SETSIZE */
|
||||
|
||||
/*
|
||||
* a small program implemented by the svc_rpc implementation itself;
|
||||
* also see clnt.h for protocol numbers.
|
||||
*/
|
||||
extern void rpctest_service();
|
||||
|
||||
extern void svc_getreq();
|
||||
extern void svc_getreqset(); /* takes fdset instead of int */
|
||||
extern void svc_run(); /* never returns */
|
||||
|
||||
/*
|
||||
* Socket to use on svcxxx_create call to get default socket
|
||||
*/
|
||||
#define RPC_ANYSOCK -1
|
||||
|
||||
/*
|
||||
* These are the existing service side transport implementations
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory based rpc for testing and timing.
|
||||
*/
|
||||
extern SVCXPRT *svcraw_create();
|
||||
|
||||
/*
|
||||
* Udp based rpc.
|
||||
*/
|
||||
extern SVCXPRT *svcudp_create();
|
||||
extern SVCXPRT *svcudp_bufcreate();
|
||||
|
||||
/*
|
||||
* Tcp based rpc.
|
||||
*/
|
||||
extern SVCXPRT *svctcp_create();
|
||||
|
||||
|
||||
|
||||
#endif !__SVC_HEADER__
|
42
include/rpc/svc_auth.h
Normal file
42
include/rpc/svc_auth.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/* @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/* @(#)svc_auth.h 1.6 86/07/16 SMI */
|
||||
|
||||
/*
|
||||
* svc_auth.h, Service side of rpc authentication.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Server side authenticator
|
||||
*/
|
||||
extern enum auth_stat _authenticate();
|
65
include/rpc/types.h
Normal file
65
include/rpc/types.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* @(#)types.h 2.3 88/08/15 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/* @(#)types.h 1.18 87/07/24 SMI */
|
||||
|
||||
/*
|
||||
* Rpc additions to <sys/types.h>
|
||||
*/
|
||||
#ifndef __TYPES_RPC_HEADER__
|
||||
#define __TYPES_RPC_HEADER__
|
||||
|
||||
#define bool_t int
|
||||
#define enum_t int
|
||||
#define FALSE (0)
|
||||
#define TRUE (1)
|
||||
#define __dontcare__ -1
|
||||
#ifndef NULL
|
||||
# define NULL 0
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#define mem_alloc(bsize) malloc(bsize)
|
||||
#define mem_free(ptr, bsize) free(ptr)
|
||||
|
||||
#ifndef makedev /* ie, we haven't already included it */
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#include <sys/time.h>
|
||||
|
||||
#ifndef linux
|
||||
#ifndef INADDR_LOOPBACK
|
||||
#define INADDR_LOOPBACK (u_long)0x7F000001
|
||||
#endif
|
||||
#endif
|
||||
#ifndef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 64
|
||||
#endif
|
||||
|
||||
#endif /* ndef __TYPES_RPC_HEADER__ */
|
270
include/rpc/xdr.h
Normal file
270
include/rpc/xdr.h
Normal file
@@ -0,0 +1,270 @@
|
||||
/* @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/* @(#)xdr.h 1.19 87/04/22 SMI */
|
||||
|
||||
/*
|
||||
* xdr.h, External Data Representation Serialization Routines.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __XDR_HEADER__
|
||||
#define __XDR_HEADER__
|
||||
|
||||
/*
|
||||
* XDR provides a conventional way for converting between C data
|
||||
* types and an external bit-string representation. Library supplied
|
||||
* routines provide for the conversion on built-in C data types. These
|
||||
* routines and utility routines defined here are used to help implement
|
||||
* a type encode/decode routine for each user-defined type.
|
||||
*
|
||||
* Each data type provides a single procedure which takes two arguments:
|
||||
*
|
||||
* bool_t
|
||||
* xdrproc(xdrs, argresp)
|
||||
* XDR *xdrs;
|
||||
* <type> *argresp;
|
||||
*
|
||||
* xdrs is an instance of a XDR handle, to which or from which the data
|
||||
* type is to be converted. argresp is a pointer to the structure to be
|
||||
* converted. The XDR handle contains an operation field which indicates
|
||||
* which of the operations (ENCODE, DECODE * or FREE) is to be performed.
|
||||
*
|
||||
* XDR_DECODE may allocate space if the pointer argresp is null. This
|
||||
* data can be freed with the XDR_FREE operation.
|
||||
*
|
||||
* We write only one procedure per data type to make it easy
|
||||
* to keep the encode and decode procedures for a data type consistent.
|
||||
* In many cases the same code performs all operations on a user defined type,
|
||||
* because all the hard work is done in the component type routines.
|
||||
* decode as a series of calls on the nested data types.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Xdr operations. XDR_ENCODE causes the type to be encoded into the
|
||||
* stream. XDR_DECODE causes the type to be extracted from the stream.
|
||||
* XDR_FREE can be used to release the space allocated by an XDR_DECODE
|
||||
* request.
|
||||
*/
|
||||
enum xdr_op {
|
||||
XDR_ENCODE=0,
|
||||
XDR_DECODE=1,
|
||||
XDR_FREE=2
|
||||
};
|
||||
|
||||
/*
|
||||
* This is the number of bytes per unit of external data.
|
||||
*/
|
||||
#define BYTES_PER_XDR_UNIT (4)
|
||||
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \
|
||||
* BYTES_PER_XDR_UNIT)
|
||||
|
||||
/*
|
||||
* A xdrproc_t exists for each data type which is to be encoded or decoded.
|
||||
*
|
||||
* The second argument to the xdrproc_t is a pointer to an opaque pointer.
|
||||
* The opaque pointer generally points to a structure of the data type
|
||||
* to be decoded. If this pointer is 0, then the type routines should
|
||||
* allocate dynamic storage of the appropriate size and return it.
|
||||
* bool_t (*xdrproc_t)(XDR *, caddr_t *);
|
||||
*/
|
||||
typedef bool_t (*xdrproc_t)();
|
||||
|
||||
/*
|
||||
* The XDR handle.
|
||||
* Contains operation which is being applied to the stream,
|
||||
* an operations vector for the paticular implementation (e.g. see xdr_mem.c),
|
||||
* and two private fields for the use of the particular impelementation.
|
||||
*/
|
||||
typedef struct {
|
||||
enum xdr_op x_op; /* operation; fast additional param */
|
||||
struct xdr_ops {
|
||||
bool_t (*x_getlong)(); /* get a long from underlying stream */
|
||||
bool_t (*x_putlong)(); /* put a long to " */
|
||||
bool_t (*x_getbytes)();/* get some bytes from " */
|
||||
bool_t (*x_putbytes)();/* put some bytes to " */
|
||||
u_int (*x_getpostn)();/* returns bytes off from beginning */
|
||||
bool_t (*x_setpostn)();/* lets you reposition the stream */
|
||||
long * (*x_inline)(); /* buf quick ptr to buffered data */
|
||||
void (*x_destroy)(); /* free privates of this xdr_stream */
|
||||
} *x_ops;
|
||||
caddr_t x_public; /* users' data */
|
||||
caddr_t x_private; /* pointer to private data */
|
||||
caddr_t x_base; /* private used for position info */
|
||||
int x_handy; /* extra private word */
|
||||
} XDR;
|
||||
|
||||
/*
|
||||
* Operations defined on a XDR handle
|
||||
*
|
||||
* XDR *xdrs;
|
||||
* long *longp;
|
||||
* caddr_t addr;
|
||||
* u_int len;
|
||||
* u_int pos;
|
||||
*/
|
||||
#define XDR_GETLONG(xdrs, longp) \
|
||||
(*(xdrs)->x_ops->x_getlong)(xdrs, longp)
|
||||
#define xdr_getlong(xdrs, longp) \
|
||||
(*(xdrs)->x_ops->x_getlong)(xdrs, longp)
|
||||
|
||||
#define XDR_PUTLONG(xdrs, longp) \
|
||||
(*(xdrs)->x_ops->x_putlong)(xdrs, longp)
|
||||
#define xdr_putlong(xdrs, longp) \
|
||||
(*(xdrs)->x_ops->x_putlong)(xdrs, longp)
|
||||
|
||||
#define XDR_GETBYTES(xdrs, addr, len) \
|
||||
(*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len)
|
||||
#define xdr_getbytes(xdrs, addr, len) \
|
||||
(*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len)
|
||||
|
||||
#define XDR_PUTBYTES(xdrs, addr, len) \
|
||||
(*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len)
|
||||
#define xdr_putbytes(xdrs, addr, len) \
|
||||
(*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len)
|
||||
|
||||
#define XDR_GETPOS(xdrs) \
|
||||
(*(xdrs)->x_ops->x_getpostn)(xdrs)
|
||||
#define xdr_getpos(xdrs) \
|
||||
(*(xdrs)->x_ops->x_getpostn)(xdrs)
|
||||
|
||||
#define XDR_SETPOS(xdrs, pos) \
|
||||
(*(xdrs)->x_ops->x_setpostn)(xdrs, pos)
|
||||
#define xdr_setpos(xdrs, pos) \
|
||||
(*(xdrs)->x_ops->x_setpostn)(xdrs, pos)
|
||||
|
||||
#define XDR_INLINE(xdrs, len) \
|
||||
(*(xdrs)->x_ops->x_inline)(xdrs, len)
|
||||
#define xdr_inline(xdrs, len) \
|
||||
(*(xdrs)->x_ops->x_inline)(xdrs, len)
|
||||
|
||||
#define XDR_DESTROY(xdrs) \
|
||||
if ((xdrs)->x_ops->x_destroy) \
|
||||
(*(xdrs)->x_ops->x_destroy)(xdrs)
|
||||
#define xdr_destroy(xdrs) \
|
||||
if ((xdrs)->x_ops->x_destroy) \
|
||||
(*(xdrs)->x_ops->x_destroy)(xdrs)
|
||||
|
||||
/*
|
||||
* Support struct for discriminated unions.
|
||||
* You create an array of xdrdiscrim structures, terminated with
|
||||
* a entry with a null procedure pointer. The xdr_union routine gets
|
||||
* the discriminant value and then searches the array of structures
|
||||
* for a matching value. If a match is found the associated xdr routine
|
||||
* is called to handle that part of the union. If there is
|
||||
* no match, then a default routine may be called.
|
||||
* If there is no match and no default routine it is an error.
|
||||
*/
|
||||
#define NULL_xdrproc_t ((xdrproc_t)0)
|
||||
struct xdr_discrim {
|
||||
int value;
|
||||
xdrproc_t proc;
|
||||
};
|
||||
|
||||
/*
|
||||
* In-line routines for fast encode/decode of primitve data types.
|
||||
* Caveat emptor: these use single memory cycles to get the
|
||||
* data from the underlying buffer, and will fail to operate
|
||||
* properly if the data is not aligned. The standard way to use these
|
||||
* is to say:
|
||||
* if ((buf = XDR_INLINE(xdrs, count)) == NULL)
|
||||
* return (FALSE);
|
||||
* <<< macro calls >>>
|
||||
* where ``count'' is the number of bytes of data occupied
|
||||
* by the primitive data types.
|
||||
*
|
||||
* N.B. and frozen for all time: each data type here uses 4 bytes
|
||||
* of external representation.
|
||||
*/
|
||||
#define IXDR_GET_LONG(buf) ((long)ntohl((u_long)*(buf)++))
|
||||
#define IXDR_PUT_LONG(buf, v) (*(buf)++ = (long)htonl((u_long)v))
|
||||
|
||||
#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf))
|
||||
#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf))
|
||||
#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf))
|
||||
#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf))
|
||||
#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf))
|
||||
|
||||
#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
|
||||
#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
|
||||
#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
|
||||
#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
|
||||
#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG((buf), ((long)(v)))
|
||||
|
||||
/*
|
||||
* These are the "generic" xdr routines.
|
||||
*/
|
||||
extern bool_t xdr_void();
|
||||
extern bool_t xdr_int();
|
||||
extern bool_t xdr_u_int();
|
||||
extern bool_t xdr_long();
|
||||
extern bool_t xdr_u_long();
|
||||
extern bool_t xdr_short();
|
||||
extern bool_t xdr_u_short();
|
||||
extern bool_t xdr_bool();
|
||||
extern bool_t xdr_enum();
|
||||
extern bool_t xdr_array();
|
||||
extern bool_t xdr_bytes();
|
||||
extern bool_t xdr_opaque();
|
||||
extern bool_t xdr_string();
|
||||
extern bool_t xdr_union();
|
||||
extern bool_t xdr_char();
|
||||
extern bool_t xdr_u_char();
|
||||
extern bool_t xdr_vector();
|
||||
extern bool_t xdr_float();
|
||||
extern bool_t xdr_double();
|
||||
extern bool_t xdr_reference();
|
||||
extern bool_t xdr_pointer();
|
||||
extern bool_t xdr_wrapstring();
|
||||
|
||||
/*
|
||||
* Common opaque bytes objects used by many rpc protocols;
|
||||
* declared here due to commonality.
|
||||
*/
|
||||
#define MAX_NETOBJ_SZ 1024
|
||||
struct netobj {
|
||||
u_int n_len;
|
||||
char *n_bytes;
|
||||
};
|
||||
typedef struct netobj netobj;
|
||||
extern bool_t xdr_netobj();
|
||||
|
||||
/*
|
||||
* These are the public routines for the various implementations of
|
||||
* xdr streams.
|
||||
*/
|
||||
extern void xdrmem_create(); /* XDR using memory buffers */
|
||||
extern void xdrstdio_create(); /* XDR using stdio library */
|
||||
extern void xdrrec_create(); /* XDR pseudo records for tcp */
|
||||
extern bool_t xdrrec_endofrecord(); /* make end of xdr record */
|
||||
extern bool_t xdrrec_skiprecord(); /* move to beginning of next record */
|
||||
extern bool_t xdrrec_eof(); /* true if no more input */
|
||||
|
||||
#endif !__XDR_HEADER__
|
94
include/search.h
Normal file
94
include/search.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/* Copyright (C) 1993 Ulrich Drepper
|
||||
|
||||
This file is intended to be included in the GNU C Library and the
|
||||
Linux C Library. So the copyright notice will be:
|
||||
|
||||
|
||||
Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA.
|
||||
|
||||
|
||||
For now the file can be distributed under the LGPL. */
|
||||
|
||||
#ifndef _SEARCH_H
|
||||
#define _SEARCH_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
#define __need_size_t
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#ifndef __COMPAR_FN_T
|
||||
#define __COMPAR_FN_T
|
||||
typedef int (*__compar_fn_t) __P ((__const __ptr_t, __const __ptr_t));
|
||||
#endif
|
||||
|
||||
/* for use with hsearch(3) */
|
||||
|
||||
typedef struct entry { char *key; char *data; } ENTRY;
|
||||
typedef enum { FIND, ENTER } ACTION;
|
||||
|
||||
extern ENTRY * hsearch __P((ENTRY __item, ACTION __action));
|
||||
extern int hcreate __P((unsigned __nel));
|
||||
extern void hdestroy __P((void));
|
||||
|
||||
|
||||
/* The tsearch routines are very interesting. They make many
|
||||
* assumptions about the compiler. It assumpts that the first field
|
||||
* in node must be the "key" field, which points to the datum.
|
||||
* Everything depends on that. It is a very tricky stuff. H.J.
|
||||
*/
|
||||
/* For tsearch */
|
||||
typedef enum { preorder, postorder, endorder, leaf } VISIT;
|
||||
|
||||
extern void *tsearch __P((__const void * __key, void **__rootp,
|
||||
__compar_fn_t compar));
|
||||
|
||||
extern void *tfind __P((__const void * __key, __const void ** __rootp,
|
||||
__compar_fn_t compar));
|
||||
|
||||
extern void *tdelete __P((__const void * __key, void ** __rootp,
|
||||
__compar_fn_t compar));
|
||||
|
||||
#ifndef __ACTION_FN_T
|
||||
#define __ACTION_FN_T
|
||||
/* FYI, the first argument should be a pointer to "key".
|
||||
* Please read the man page for details.
|
||||
*/
|
||||
typedef void (*__action_fn_t) __P((__const void *__nodep,
|
||||
__const VISIT __value,
|
||||
__const int __level));
|
||||
#endif
|
||||
|
||||
extern void twalk __P((__const void * __root, __action_fn_t action));
|
||||
|
||||
|
||||
extern void * lfind __P((__const void * __key, __const void * __base,
|
||||
size_t * __nmemb, size_t __size,
|
||||
__compar_fn_t __compar));
|
||||
|
||||
extern void * lsearch __P((__const void * __key, __const void * __base,
|
||||
size_t * __nmemb, size_t __size,
|
||||
__compar_fn_t __compar));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* search.h */
|
22
include/setjmp.h
Normal file
22
include/setjmp.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
setjmp.h
|
||||
stubs for future use.
|
||||
*/
|
||||
|
||||
#ifndef _SETJMP_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _SETJMP_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <machine/setjmp.h>
|
||||
|
||||
void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval));
|
||||
int _EXFUN(setjmp,(jmp_buf __jmpb));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _SETJMP_H_ */
|
||||
|
166
include/signal.h
Normal file
166
include/signal.h
Normal file
@@ -0,0 +1,166 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* ANSI Standard: 4.7 SIGNAL HANDLING <signal.h>
|
||||
*/
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#define _SIGNAL_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/signal.h>
|
||||
|
||||
#ifndef SIGCLD
|
||||
#define SIGCLD SIGCHLD
|
||||
#endif
|
||||
|
||||
/* SVR4 */
|
||||
#ifndef SA_RESETHAND
|
||||
#define SA_RESETHAND SA_ONESHOT
|
||||
#endif
|
||||
|
||||
/* SVR4 */
|
||||
#ifndef SA_NODEFER
|
||||
#define SA_NODEFER SA_NOMASK
|
||||
#endif
|
||||
|
||||
typedef int sig_atomic_t;
|
||||
|
||||
typedef __sighandler_t SignalHandler;
|
||||
|
||||
#ifndef BADSIG
|
||||
#define BADSIG SIG_ERR
|
||||
#endif
|
||||
|
||||
/* The Interviews version also has these ... */
|
||||
|
||||
#define SignalBad ((SignalHandler)-1)
|
||||
#define SignalDefault ((SignalHandler)0)
|
||||
#define SignalIgnore ((SignalHandler)1)
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern __const char * __const sys_siglist[];
|
||||
extern __const char * __const _sys_siglist[];
|
||||
|
||||
extern __sighandler_t
|
||||
signal __P ((int __sig, __sighandler_t));
|
||||
extern __sighandler_t
|
||||
__signal __P ((int __sig, __sighandler_t, int flags));
|
||||
extern int raise __P ((int __sig));
|
||||
extern int __kill __P ((pid_t __pid, int __sig));
|
||||
extern int kill __P ((pid_t __pid, int __sig));
|
||||
extern int killpg __P ((int __pgrp, int __sig));
|
||||
extern int sigaddset __P ((sigset_t *__mask, int __sig));
|
||||
extern int sigdelset __P ((sigset_t *__mask, int __sig));
|
||||
extern int sigemptyset __P ((sigset_t *__mask));
|
||||
extern int sigfillset __P ((sigset_t *__mask));
|
||||
extern int sigismember __P ((__const sigset_t *__mask, int __sig));
|
||||
extern int sigpending __P ((sigset_t *__set));
|
||||
|
||||
extern int __sigprocmask __P ((int __how, __const sigset_t *__set,
|
||||
sigset_t *__oldset));
|
||||
extern int sigprocmask __P ((int __how, __const sigset_t *__set,
|
||||
sigset_t *__oldset));
|
||||
|
||||
extern int sigsuspend __P ((__const sigset_t *sigmask));
|
||||
|
||||
extern int __sigaction __P ((int __sig, struct sigaction *__act,
|
||||
struct sigaction *__oldact));
|
||||
extern int sigaction __P ((int __sig, struct sigaction *__act,
|
||||
struct sigaction *__oldact));
|
||||
|
||||
#define __sigemptyset(set) ((*(set) = 0L), 0)
|
||||
#define __sigfillset(set) ((*(set) = -1L), 0)
|
||||
#define __sigaddset(set, sig) ((*(set) |= __sigmask (sig)), 0)
|
||||
#define __sigdelset(set, sig) ((*(set) &= ~__sigmask (sig)), 0)
|
||||
#define __sigismember(set, sig) ((*(set) & __sigmask (sig)) ? 1 : 0)
|
||||
|
||||
|
||||
#if 1
|
||||
#define sigemptyset __sigemptyset
|
||||
#define sigfillset __sigfillset
|
||||
|
||||
/* We don't do that any more since it causes problems due to
|
||||
* "sig" > _NSIG and "sig" < 1. It isn't worth the touble to make
|
||||
* them inline and static. Use __sigxxxxx if you want speed with
|
||||
* correct "sig".
|
||||
*/
|
||||
#if 1
|
||||
#define sigaddset __sigaddset
|
||||
#define sigdelset __sigdelset
|
||||
#define sigismember __sigismember
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Return a mask that includes SIG only. */
|
||||
#define __sigmask(sig) (1 << ((sig) - 1))
|
||||
|
||||
extern int __sigsetmask __P ((int __mask));
|
||||
extern int __siggetmask __P ((void));
|
||||
extern int __sigblock __P ((int __mask));
|
||||
extern int __sigpause __P ((int __mask));
|
||||
|
||||
#ifdef __USE_SVID
|
||||
/* SVID names for the same things. */
|
||||
extern __sighandler_t ssignal __P ((int __sig, __sighandler_t __handler));
|
||||
extern int gsignal __P ((int __sig));
|
||||
|
||||
#endif /* Use SVID. */
|
||||
|
||||
/* BSD */
|
||||
#ifdef __USE_BSD
|
||||
#define sigmask __sigmask
|
||||
|
||||
extern int sigblock __P ((int __mask));
|
||||
extern int sigpause __P ((int __mask));
|
||||
extern int sigsetmask __P ((int __mask));
|
||||
extern int siggetmask __P ((void));
|
||||
extern void psignal __P ((int __sig, __const char *__str));
|
||||
|
||||
extern int siginterrupt __P ((int __sig, int __flag));
|
||||
|
||||
/* The `sig' bit is set if the interrupt on it
|
||||
* is enabled via siginterrupt (). */
|
||||
extern sigset_t _sigintr;
|
||||
|
||||
#endif /* Use BSD. */
|
||||
|
||||
#ifdef __USE_BSD_SIGNAL
|
||||
|
||||
extern __sighandler_t
|
||||
__bsd_signal __P ((int __sig, __sighandler_t));
|
||||
#define signal __bsd_signal
|
||||
|
||||
#endif /* __USE_BSD_SIGNAL */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#if _MIT_POSIX_THREADS
|
||||
#define __SIGFILLSET 0xffffffff
|
||||
#define __SIGEMPTYSET 0
|
||||
#define __SIGADDSET(s,n) ((*s) |= (1 << ((n) - 1)))
|
||||
#define __SIGDELSET(s,n) ((*s) &= ~(1 << ((n) - 1)))
|
||||
#define __SIGISMEMBER(s,n) ((*s) & (1 << ((n) - 1)))
|
||||
#endif
|
||||
|
||||
#endif /* _SIGNAL_H */
|
47
include/stdarg.h
Normal file
47
include/stdarg.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* @(#) stdarg.h 1.2 91/11/30 21:10:39
|
||||
*
|
||||
* Sample stdarg.h file for use with the unproto filter.
|
||||
*
|
||||
* This file serves two purposes.
|
||||
*
|
||||
* 1 - As an include file for use with ANSI-style C source that implements
|
||||
* variadic functions.
|
||||
*
|
||||
* 2 - To configure the unproto filter itself. If the _VA_ALIST_ macro is
|
||||
* defined, its value will appear in the place of the "..." in argument
|
||||
* lists of variadic function *definitions* (not declarations).
|
||||
*
|
||||
* Compilers that pass arguments via the stack can use the default code at the
|
||||
* end of this file (this usually applies for the VAX, MC68k and 80*86
|
||||
* architectures).
|
||||
*
|
||||
* RISC-based systems often need special tricks. An example of the latter is
|
||||
* given for the SPARC architecture. Read your /usr/include/varargs.h for
|
||||
* more information.
|
||||
*
|
||||
* You can use the varargs.c program provided with the unproto package to
|
||||
* verify that the stdarg.h file has been set up correctly.
|
||||
*/
|
||||
|
||||
#ifndef __STDARG_H
|
||||
#define __STDARG_H
|
||||
|
||||
#ifdef sparc
|
||||
# define _VA_ALIST_ "__builtin_va_alist"
|
||||
typedef char *va_list;
|
||||
# define va_start(ap, p) (ap = (char *) &__builtin_va_alist)
|
||||
# define va_arg(ap, type) ((type *) __builtin_va_arg_incr((type *) ap))[0]
|
||||
# define va_end(ap)
|
||||
#else /* vax, mc68k, 80*86 */
|
||||
typedef char *va_list;
|
||||
# define va_start(ap, p) (ap = (char *) (&(p)+1))
|
||||
# define va_arg(ap, type) ((type *) (ap += sizeof(type)))[-1]
|
||||
# define va_end(ap)
|
||||
#endif
|
||||
|
||||
#endif /* __STDARG_H */
|
||||
|
||||
#if __FIRST_ARG_IN_AX__
|
||||
#error First arg is in a register, stdarg.h cannot take its address
|
||||
#endif
|
118
include/stdio.h
Normal file
118
include/stdio.h
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
#ifndef __STDIO_H
|
||||
#define __STDIO_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef SEEK_SET
|
||||
#define SEEK_SET 0
|
||||
#define SEEK_CUR 1
|
||||
#define SEEK_END 2
|
||||
#endif
|
||||
|
||||
#define _IOFBF 0x00 /* full buffering */
|
||||
#define _IOLBF 0x01 /* line buffering */
|
||||
#define _IONBF 0x02 /* no buffering */
|
||||
#define __MODE_BUF 0x03 /* Modal buffering dependent on isatty */
|
||||
|
||||
#define __MODE_FREEBUF 0x04 /* Buffer allocated with malloc, can free */
|
||||
#define __MODE_FREEFIL 0x08 /* FILE allocated with malloc, can free */
|
||||
|
||||
#define __MODE_READ 0x10 /* Opened in read only */
|
||||
#define __MODE_WRITE 0x20 /* Opened in write only */
|
||||
#define __MODE_RDWR 0x30 /* Opened in read/write */
|
||||
|
||||
#define __MODE_READING 0x40 /* Buffer has pending read data */
|
||||
#define __MODE_WRITING 0x80 /* Buffer has pending write data */
|
||||
|
||||
#define __MODE_EOF 0x100 /* EOF status */
|
||||
#define __MODE_ERR 0x200 /* Error status */
|
||||
#define __MODE_UNGOT 0x400 /* Buffer has been polluted by ungetc */
|
||||
|
||||
#define __MODE_IOTRAN 0
|
||||
|
||||
/* when you add or change fields here, be sure to change the initialization
|
||||
* in stdio_init and fopen */
|
||||
struct __stdio_file {
|
||||
unsigned char *bufpos; /* the next byte to write to or read from */
|
||||
unsigned char *bufread; /* the end of data returned by last read() */
|
||||
unsigned char *bufwrite; /* highest address writable by macro */
|
||||
unsigned char *bufstart; /* the start of the buffer */
|
||||
unsigned char *bufend; /* the end of the buffer; ie the byte after the last
|
||||
malloc()ed byte */
|
||||
|
||||
int fd; /* the file descriptor associated with the stream */
|
||||
int mode;
|
||||
|
||||
char unbuf[8]; /* The buffer for 'unbuffered' streams */
|
||||
|
||||
struct __stdio_file * next;
|
||||
};
|
||||
|
||||
#define EOF (-1)
|
||||
#ifndef NULL
|
||||
#define NULL (0)
|
||||
#endif
|
||||
|
||||
typedef struct __stdio_file FILE;
|
||||
|
||||
#define BUFSIZ (500) /*(508) should get us a fully used kmalloc bucket */
|
||||
|
||||
extern FILE stdin[1];
|
||||
extern FILE stdout[1];
|
||||
extern FILE stderr[1];
|
||||
|
||||
|
||||
#define putc(c, stream) \
|
||||
(((stream)->bufpos >= (stream)->bufwrite) ? fputc((c), (stream)) \
|
||||
: (unsigned char) (*(stream)->bufpos++ = (c)) )
|
||||
|
||||
#define getc(stream) \
|
||||
(((stream)->bufpos >= (stream)->bufread) ? fgetc(stream): \
|
||||
(*(stream)->bufpos++))
|
||||
|
||||
#define putchar(c) putc((c), stdout)
|
||||
#define getchar() getc(stdin)
|
||||
|
||||
#define ferror(fp) (((fp)->mode&__MODE_ERR) != 0)
|
||||
#define feof(fp) (((fp)->mode&__MODE_EOF) != 0)
|
||||
#define clearerr(fp) ((fp)->mode &= ~(__MODE_EOF|__MODE_ERR),0)
|
||||
#define fileno(fp) ((fp)->fd)
|
||||
|
||||
/* These two call malloc */
|
||||
#define setlinebuf(__fp) setvbuf((__fp), (char*)0, _IOLBF, 0)
|
||||
extern int setvbuf __P((FILE*, char*, int, size_t));
|
||||
|
||||
/* These don't */
|
||||
#define setbuf(__fp, __buf) setbuffer((__fp), (__buf), BUFSIZ)
|
||||
extern void setbuffer __P((FILE*, char*, int));
|
||||
|
||||
extern int fgetc __P((FILE*));
|
||||
extern int fputc __P((int, FILE*));
|
||||
|
||||
extern int fclose __P((FILE*));
|
||||
extern int fflush __P((FILE*));
|
||||
extern char *fgets __P((char*, size_t, FILE*));
|
||||
extern FILE *__fopen __P((char*, int, FILE*, char*));
|
||||
|
||||
#define fopen(__file, __mode) __fopen((__file), -1, (FILE*)0, (__mode))
|
||||
#define freopen(__file, __mode, __fp) __fopen((__file), -1, (__fp), (__mode))
|
||||
#define fdopen(__file, __mode) __fopen((char*)0, (__file), (FILE*)0, (__mode))
|
||||
|
||||
extern int fseek __P((FILE*, long, int));
|
||||
extern long ftell __P((FILE*));
|
||||
extern void rewind __P((FILE*));
|
||||
|
||||
extern int fputs __P((char*, FILE*));
|
||||
extern int puts __P((char*));
|
||||
|
||||
extern int printf __P ((__const char*, ...));
|
||||
extern int fprintf __P ((FILE*, __const char*, ...));
|
||||
extern int sprintf __P ((char*, __const char*, ...));
|
||||
|
||||
extern int ungetc __P ((int c, FILE * stream));
|
||||
|
||||
#define stdio_pending(fp) ((fp)->bufread>(fp)->bufpos)
|
||||
|
||||
#endif /* __STDIO_H */
|
75
include/stdlib.h
Normal file
75
include/stdlib.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* stdlib.h <ndf@linux.mit.edu> */
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef __STDLIB_H
|
||||
#define __STDLIB_H
|
||||
|
||||
/* Don't overwrite user definitions of NULL */
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
/* For program termination */
|
||||
#define EXIT_FAILURE 1
|
||||
#define EXIT_SUCCESS 0
|
||||
|
||||
extern void * malloc __P ((size_t));
|
||||
extern void * calloc __P ((size_t, size_t));
|
||||
extern void free __P ((void *));
|
||||
extern void * realloc __P ((void *, size_t));
|
||||
|
||||
#ifdef DEBUG_MALLOC
|
||||
|
||||
extern void * malloc_dbg __P ((size_t, char* func, char* file, int line));
|
||||
extern void * calloc_dbg __P ((size_t, size_t, char* func, char* file, int line));
|
||||
extern void free_dbg __P ((void *, char* func, char* file, int line));
|
||||
extern void * realloc_dbg __P ((void *, size_t, char* func, char* file, int line));
|
||||
|
||||
#define malloc(x) malloc_dbg((x),__FUNCTION__,__FILE__,__LINE__)
|
||||
#define calloc(x,y) calloc_dbg((x),(y),__FUNCTION__,__FILE__,__LINE__)
|
||||
#define free(x) free_dbg((x),__FUNCTION__,__FILE__,__LINE__)
|
||||
#define realloc(x) realloc((x),__FUNCTION__,__FILE__,__LINE__)
|
||||
|
||||
#endif
|
||||
|
||||
extern int rand __P ((void));
|
||||
extern void srand __P ((unsigned int seed));
|
||||
|
||||
extern long strtol __P ((const char * nptr, char ** endptr, int base));
|
||||
extern unsigned long strtoul __P ((const char * nptr,
|
||||
char ** endptr, int base));
|
||||
#ifndef __HAS_NO_FLOATS__
|
||||
extern float strtod __P ((const char * nptr, char ** endptr));
|
||||
#endif
|
||||
|
||||
extern char *getenv __P ((__const char *__name));
|
||||
|
||||
extern int putenv __P ((__const char *__string));
|
||||
|
||||
extern int setenv __P ((__const char *__name, __const char *__value,
|
||||
int __replace));
|
||||
|
||||
extern int system __P ((__const char *__command));
|
||||
|
||||
extern int qsort __P ((char *base, int num, int size, int (*cmp)()));
|
||||
|
||||
extern char * gcvt __P ((float number, size_t ndigit, char * buf));
|
||||
|
||||
#define atof(x) strtod((x),(char**)0)
|
||||
|
||||
/* Returned by `div'. */
|
||||
typedef struct
|
||||
{
|
||||
int quot; /* Quotient. */
|
||||
int rem; /* Remainder. */
|
||||
} div_t;
|
||||
|
||||
/* Returned by `ldiv'. */
|
||||
typedef struct
|
||||
{
|
||||
long int quot; /* Quotient. */
|
||||
long int rem; /* Remainder. */
|
||||
} ldiv_t;
|
||||
|
||||
#endif /* __STDLIB_H */
|
56
include/string.h
Normal file
56
include/string.h
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
#ifndef __STRING_H
|
||||
#define __STRING_H
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Basic string functions */
|
||||
extern size_t strlen __P ((__const char* __str));
|
||||
|
||||
extern char * strcat __P ((char*, __const char*));
|
||||
extern char * strcpy __P ((char*, __const char*));
|
||||
extern int strcmp __P ((__const char*, __const char*));
|
||||
|
||||
extern char * strncat __P ((char*, __const char*, size_t));
|
||||
extern char * strncpy __P ((char*, __const char*, size_t));
|
||||
extern int strncmp __P ((__const char*, __const char*, size_t));
|
||||
|
||||
extern char * strchr __P ((char*, int));
|
||||
extern char * strrchr __P ((char*, int));
|
||||
extern char * strdup __P ((__const char*));
|
||||
|
||||
/* Basic mem functions */
|
||||
extern void * memcpy __P ((void*, __const void*, size_t));
|
||||
extern void * memccpy __P ((void*, void*, int, size_t));
|
||||
extern void * memchr __P ((__const void*, __const int, size_t));
|
||||
extern void * memset __P ((void*, int, size_t));
|
||||
extern int memcmp __P ((__const void*, __const void*, size_t));
|
||||
|
||||
extern void * memmove __P ((void*, void*, size_t));
|
||||
|
||||
/* Minimal (very!) locale support */
|
||||
#define strcoll strcmp
|
||||
#define strxfrm strncpy
|
||||
|
||||
/* BSDisms */
|
||||
#define index strchr
|
||||
#define rindex strrchr
|
||||
|
||||
/* Other common BSD functions */
|
||||
extern int strcasecmp __P ((char*, char*));
|
||||
extern int strncasecmp __P ((char*, char*, size_t));
|
||||
char *strpbrk __P ((char *, char *));
|
||||
char *strsep __P ((char **, char *));
|
||||
char *strstr __P ((char *, char *));
|
||||
char *strtok __P ((char *, char *));
|
||||
size_t strcspn __P ((char *, char *));
|
||||
size_t strspn __P ((char *, char *));
|
||||
|
||||
/* More BSD compatabilty */
|
||||
#define bcmp memcmp
|
||||
|
||||
/* Linux silly hour */
|
||||
char *strfry __P ((char *));
|
||||
|
||||
#endif
|
1
include/strings.h
Normal file
1
include/strings.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <string.h>
|
94
include/sys/bitypes.h
Normal file
94
include/sys/bitypes.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* bitypes.h,v 1.4 1995/08/24 01:58:54 hjl Exp
|
||||
*/
|
||||
|
||||
/*
|
||||
* ++Copyright++ 1993
|
||||
* -
|
||||
* Copyright (c) 1993 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.
|
||||
* -
|
||||
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
||||
*
|
||||
* 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, and that
|
||||
* the name of Digital Equipment Corporation not be used in advertising or
|
||||
* publicity pertaining to distribution of the document or software without
|
||||
* specific, written prior permission.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
|
||||
* CORPORATION 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.
|
||||
* -
|
||||
* --Copyright--
|
||||
*/
|
||||
|
||||
/*
|
||||
#ifdef __USE_BSD
|
||||
*/
|
||||
|
||||
/*
|
||||
#ifndef __BIT_TYPES_DEFINED__
|
||||
# if (defined(BSD) && (BSD >= 199306)) || \
|
||||
(defined(_BSDI_VERSION) && (_BSDI_VERSION >= 199312))
|
||||
# define __BIT_TYPES_DEFINED__
|
||||
# endif
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifndef __BIT_TYPES_DEFINED__
|
||||
#define __BIT_TYPES_DEFINED__
|
||||
|
||||
/*
|
||||
* Basic integral types. Omit the typedef if
|
||||
* not possible for a machine/compiler combination.
|
||||
*/
|
||||
typedef /*signed*/ char int8_t;
|
||||
typedef unsigned char u_int8_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned short u_int16_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned int u_int32_t;
|
||||
|
||||
# if __GNUC__ >= 2 && !defined(__STRICT_ANSI__)
|
||||
typedef long long int64_t;
|
||||
typedef unsigned long long u_int64_t;
|
||||
# endif
|
||||
|
||||
#endif /* __BIT_TYPES_DEFINED__ */
|
||||
|
||||
/* #endif __USE_BSD */
|
36
include/sys/cdefs.h
Normal file
36
include/sys/cdefs.h
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
#ifndef __SYS_CDEFS_H
|
||||
#define __SYS_CDEFS_H
|
||||
#include <features.h>
|
||||
|
||||
#if defined (__STDC__) && __STDC__
|
||||
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
/* This is not a typedef so `const __ptr_t' does the right thing. */
|
||||
#define __ptr_t void *
|
||||
typedef long double __long_double_t;
|
||||
|
||||
#else
|
||||
|
||||
#define __CONCAT(x,y) x/**/y
|
||||
#define __STRING(x) "x"
|
||||
|
||||
#define __ptr_t char *
|
||||
|
||||
#ifndef __HAS_NO_FLOATS__
|
||||
typedef double __long_double_t;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* No C++ */
|
||||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
|
||||
/* GNUish things */
|
||||
#define __CONSTVALUE
|
||||
#define __CONSTVALUE2
|
||||
|
||||
#endif
|
17
include/sys/dir.h
Normal file
17
include/sys/dir.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifdef _SYS_DIRENT_H
|
||||
#error "Can't include both sys/dir.h and sys/dirent.h"
|
||||
#define _SYS_DIR_H
|
||||
#endif
|
||||
|
||||
#ifndef _SYS_DIR_H
|
||||
#define _SYS_DIR_H
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
#define direct dirent
|
||||
|
||||
#undef DIRSIZ
|
||||
#define DIRSIZ(dp) ((sizeof (struct direct) - (MAXNAMLEN+1)) + \
|
||||
(((dp)->d_namlen+1 + 3) &~ 3))
|
||||
|
||||
#endif
|
1
include/sys/errno.h
Normal file
1
include/sys/errno.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <errno.h>
|
1
include/sys/fcntl.h
Normal file
1
include/sys/fcntl.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <fcntl.h>
|
35
include/sys/file.h
Normal file
35
include/sys/file.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _SYS_FILE_H
|
||||
#define _SYS_FILE_H
|
||||
|
||||
#include <features.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifndef L_SET
|
||||
|
||||
#define L_SET 0 /* absolute offset */
|
||||
#define L_INCR 1 /* relative to current offset */
|
||||
#define L_XTND 2 /* relative to end of file */
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef LOCK_SH
|
||||
|
||||
/* Operations for the `flock' call. */
|
||||
#define LOCK_SH 1 /* Shared lock. */
|
||||
#define LOCK_EX 2 /* Exclusive lock. */
|
||||
#define LOCK_UN 8 /* Unlock. */
|
||||
|
||||
/* Can be OR'd in to one of the above. */
|
||||
#define LOCK_NB 4 /* Don't block when locking. */
|
||||
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Apply or remove an advisory lock, according to OPERATION,
|
||||
on the file FD refers to. */
|
||||
extern int flock __P ((int __fd, int __operation));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
17
include/sys/ioctl.h
Normal file
17
include/sys/ioctl.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _SYS_IOCTL_H
|
||||
#define _SYS_IOCTL_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <features.h>
|
||||
#include <termios.h>
|
||||
#include <sys/socketio.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int ioctl __P ((int __fildes, int __cmd, ...));
|
||||
extern int __ioctl __P ((int __fildes, int __cmd, ...));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
||||
#endif
|
35
include/sys/mman.h
Normal file
35
include/sys/mman.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _SYS_MMAN_H
|
||||
#define _SYS_MMAN_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/mman.h>
|
||||
|
||||
#ifndef MAP_ANON
|
||||
#define MAP_ANON MAP_ANONYMOUS /* idem */
|
||||
#endif
|
||||
#ifndef MAP_FILE
|
||||
#define MAP_FILE 0x00 /* The 'normal' way: mapped from file */
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern __ptr_t mmap __P((__ptr_t __addr, size_t __len,
|
||||
int __prot, int __flags, int __fd, off_t __off));
|
||||
extern int munmap __P((__ptr_t __addr, size_t __len));
|
||||
extern int mprotect __P ((__const __ptr_t __addr, size_t __len, int __prot));
|
||||
|
||||
extern int msync __P((__ptr_t __addr, size_t __len, int __flags));
|
||||
|
||||
extern int mlock __P((__const __ptr_t __addr, size_t __len));
|
||||
extern int munlock __P((__const __ptr_t __addr, size_t __len));
|
||||
|
||||
extern int mlockall __P((int __flags));
|
||||
extern int munlockall __P((void));
|
||||
|
||||
extern __ptr_t mremap __P((__ptr_t __addr, size_t __old_len,
|
||||
size_t __new_len, int __may_move));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _SYS_MMAN_H */
|
17
include/sys/mount.h
Normal file
17
include/sys/mount.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _SYS_MOUNT_H
|
||||
#define _SYS_MOUNT_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int mount __P ((__const char* __specialfile,
|
||||
__const char* __dir,__const char* __filesystemype,
|
||||
unsigned long __rwflag,__const void *__data));
|
||||
|
||||
extern int umount __P ((__const char* __specialfile));
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
46
include/sys/param.h
Normal file
46
include/sys/param.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/* Copyright (C) 1996 Robert de Bath <rdebath@cix.compulink.co.uk>
|
||||
* This file is part of the Linux-8086 C library and is distributed
|
||||
* under the GNU Library General Public License.
|
||||
*/
|
||||
|
||||
#ifndef _PARAM_H
|
||||
#define _PARAM_H
|
||||
|
||||
#include <features.h>
|
||||
#include <limits.h>
|
||||
#include <linux/limits.h>
|
||||
#include <linux/param.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#define MAXPATHLEN PATH_MAX
|
||||
|
||||
#ifndef NR_OPEN
|
||||
#define NR_OPEN 32
|
||||
#endif
|
||||
#ifndef NR_FILE
|
||||
#define NR_FILE 32
|
||||
#endif
|
||||
|
||||
/* Bit map related macros. */
|
||||
#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
|
||||
#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
|
||||
#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
|
||||
#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
|
||||
|
||||
/* Macros for counting and rounding. */
|
||||
#ifndef howmany
|
||||
#define howmany(x, y) (((x)+((y)-1))/(y))
|
||||
#endif
|
||||
#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
|
||||
#define powerof2(x) ((((x)-1)&(x))==0)
|
||||
|
||||
/* Macros for min/max. */
|
||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||
|
||||
|
||||
/* Unit of `st_blocks'. */
|
||||
#define DEV_BSIZE 512
|
||||
|
||||
#endif /* _PARAM_H */
|
73
include/sys/resource.h
Normal file
73
include/sys/resource.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Resource control/accounting header file for linux-86
|
||||
*/
|
||||
|
||||
#ifndef _SYS_RESOURCE_H
|
||||
#define _SYS_RESOURCE_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/time.h>
|
||||
#include <limits.h>
|
||||
|
||||
#define RUSAGE_SELF 0
|
||||
#define RUSAGE_CHILDREN (-1)
|
||||
#define RUSAGE_BOTH (-2) /* sys_wait4() uses this */
|
||||
|
||||
struct rusage {
|
||||
struct timeval ru_utime; /* user time used */
|
||||
struct timeval ru_stime; /* system time used */
|
||||
long ru_maxrss; /* maximum resident set size */
|
||||
long ru_ixrss; /* integral shared memory size */
|
||||
long ru_idrss; /* integral unshared data size */
|
||||
long ru_isrss; /* integral unshared stack size */
|
||||
long ru_minflt; /* page reclaims */
|
||||
long ru_majflt; /* page faults */
|
||||
long ru_nswap; /* swaps */
|
||||
long ru_inblock; /* block input operations */
|
||||
long ru_oublock; /* block output operations */
|
||||
long ru_msgsnd; /* messages sent */
|
||||
long ru_msgrcv; /* messages received */
|
||||
long ru_nsignals; /* signals received */
|
||||
long ru_nvcsw; /* voluntary context switches */
|
||||
long ru_nivcsw; /* involuntary " */
|
||||
};
|
||||
|
||||
#define RLIM_INFINITY ((long)(~0UL>>1))
|
||||
|
||||
struct rlimit {
|
||||
long rlim_cur;
|
||||
long rlim_max;
|
||||
};
|
||||
|
||||
#define PRIO_MIN (-20)
|
||||
#define PRIO_MAX 20
|
||||
|
||||
#define PRIO_PROCESS 0
|
||||
#define PRIO_PGRP 1
|
||||
#define PRIO_USER 2
|
||||
|
||||
#define RLIMIT_CPU 0 /* CPU time in ms */
|
||||
#define RLIMIT_FSIZE 1 /* Maximum filesize */
|
||||
#define RLIMIT_DATA 2 /* max data size */
|
||||
#define RLIMIT_STACK 3 /* max stack size */
|
||||
#define RLIMIT_CORE 4 /* max core file size */
|
||||
#define RLIMIT_RSS 5 /* max resident set size */
|
||||
#define RLIMIT_NPROC 6 /* max number of processes */
|
||||
#define RLIMIT_NOFILE 7 /* max number of open files */
|
||||
#define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */
|
||||
|
||||
#define RLIM_NLIMITS 9
|
||||
|
||||
extern int getrlimit __P ((int __resource,
|
||||
struct rlimit *__rlp));
|
||||
extern int setrlimit __P ((int __resource,
|
||||
__const struct rlimit *__rlp));
|
||||
|
||||
extern int getpriority __P((int __which, int __who));
|
||||
extern int setpriority __P((int __which, int __who,
|
||||
int __prio));
|
||||
|
||||
extern int __getrusage __P ((int __who, struct rusage *__rusage));
|
||||
extern int getrusage __P ((int __who, struct rusage *__rusage));
|
||||
|
||||
#endif /* _SYS_RESOURCE_H */
|
1
include/sys/signal.h
Normal file
1
include/sys/signal.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <signal.h>
|
135
include/sys/socket.h
Normal file
135
include/sys/socket.h
Normal file
@@ -0,0 +1,135 @@
|
||||
#ifndef _SYS_SOCKET_H
|
||||
#define _SYS_SOCKET_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
#ifdef _MIT_POSIX_THREADS
|
||||
#include <pthread/mit/posix.h>
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* struct msghdr is not defined in linux 1.2. This will allow sendmsg
|
||||
and recvmsg in libc 5.2.9 to compile under 1.2.x and shouldn't cause
|
||||
any problem for 1.3.x */
|
||||
struct msghdr;
|
||||
|
||||
/* Create a new socket of type TYPE in domain DOMAIN, using
|
||||
protocol PROTOCOL. If PROTOCOL is zero, one is chosen
|
||||
automatically. Returns a file descriptor for the new socket,
|
||||
or -1 for errors. */
|
||||
int socket __P ((int __family, int __type, int __protocol));
|
||||
|
||||
/* Create two new sockets, of type TYPE in domain DOMAIN and using
|
||||
protocol PROTOCOL, which are connected to each other, and put file
|
||||
descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero,
|
||||
one will be chosen automatically. Returns 0 on success, -1
|
||||
for errors. */
|
||||
int socketpair __P ((int __family, int __type, int __protocol,
|
||||
int __sockvec[2]));
|
||||
|
||||
/* Give the socket FD the local address ADDR (which is LEN bytes
|
||||
long). */
|
||||
int bind __P ((int __sockfd, __const struct sockaddr *__my_addr,
|
||||
int __addrlen));
|
||||
|
||||
/* Open a connection on socket FD to peer at ADDR (which LEN bytes
|
||||
long). For connectionless socket types, just set the default
|
||||
address to send to and the only address from which to accept
|
||||
transmissions. Return 0 on success, -1 for errors. */
|
||||
int connect __P ((int __sockfd, __const struct sockaddr *__serv_addr,
|
||||
int __addrlen));
|
||||
|
||||
/* Prepare to accept connections on socket FD.
|
||||
N connection requests will be queued before further requests are
|
||||
refused. Returns 0 on success, -1 for errors. */
|
||||
int listen __P ((int __sockfd, int __n));
|
||||
|
||||
/* Await a connection on socket FD.
|
||||
When a connection arrives, open a new socket to communicate with it,
|
||||
set *ADDR (which is *ADDR_LEN bytes long) to the address of the
|
||||
connecting peer and *ADDR_LEN to the address's actual length, and
|
||||
return the new socket's descriptor, or -1 for errors. */
|
||||
int accept __P ((int __sockfd, __const struct sockaddr *__peer,
|
||||
int *__paddrlen));
|
||||
|
||||
/* Put the current value for socket FD's option OPTNAME at protocol
|
||||
level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set
|
||||
*OPTLEN to the value's actual length. Returns 0 on success, -1 for
|
||||
errors. */
|
||||
int getsockopt __P ((int __s, int __level, int __optname,
|
||||
void *__optval, int *__optlen));
|
||||
|
||||
/* Set socket FD's option OPTNAME at protocol level LEVEL
|
||||
to *OPTVAL (which is OPTLEN bytes long).
|
||||
Returns 0 on success, -1 for errors. */
|
||||
int setsockopt __P ((int __s, int __level, int __optname,
|
||||
__const void *__optval, int optlen));
|
||||
|
||||
/* Put the local address of FD into *ADDR and its length in *LEN. */
|
||||
int getsockname __P ((int __sockfd, struct sockaddr *__addr,
|
||||
int *__paddrlen));
|
||||
|
||||
/* Put the address of the peer connected to socket FD into *ADDR
|
||||
(which is *LEN bytes long), and its actual length into *LEN. */
|
||||
int getpeername __P ((int __sockfd, struct sockaddr *__peer,
|
||||
int *__paddrlen));
|
||||
|
||||
/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
|
||||
int send __P ((int __sockfd, __const void *__buff, size_t __len,
|
||||
unsigned int __flags));
|
||||
|
||||
/* Read N bytes into BUF from socket FD.
|
||||
Returns the number read or -1 for errors. */
|
||||
int recv __P ((int __sockfd, void *__buff, size_t __len,
|
||||
unsigned int __flags));
|
||||
|
||||
/* Send N bytes of BUF on socket FD to peer at address ADDR (which is
|
||||
ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */
|
||||
int sendto __P ((int __sockfd, __const void *__buff, size_t __len,
|
||||
unsigned int __flags, __const struct sockaddr *__to,
|
||||
int __tolen));
|
||||
|
||||
/* Read N bytes into BUF through socket FD.
|
||||
If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address
|
||||
of the sender, and store the actual size of the address in
|
||||
*ADDR_LEN. Returns the number of bytes read or -1 for errors. */
|
||||
int recvfrom __P ((int __sockfd, void *__buff, size_t __len,
|
||||
unsigned int __flags, struct sockaddr *__from,
|
||||
int *__fromlen));
|
||||
|
||||
/* Send a message described MESSAGE on socket FD.
|
||||
Returns the number of bytes sent, or -1 for errors. */
|
||||
extern int sendmsg __P ((int __fd, __const struct msghdr *__message,
|
||||
unsigned int __flags));
|
||||
|
||||
/* Receive a message as described by MESSAGE from socket FD.
|
||||
Returns the number of bytes read or -1 for errors. */
|
||||
extern int recvmsg __P ((int __fd, struct msghdr *__message,
|
||||
unsigned int __flags));
|
||||
|
||||
/* Shut down all or part of the connection open on socket FD.
|
||||
HOW determines what to shut down:
|
||||
0 = No more receptions;
|
||||
1 = No more transmissions;
|
||||
2 = No more receptions or transmissions.
|
||||
Returns 0 on success, -1 for errors. */
|
||||
int shutdown __P ((int __sockfd, int __how));
|
||||
|
||||
|
||||
/* belongs here or elsewhere? */
|
||||
int rcmd __P ((char **__ahost, unsigned short __inport,
|
||||
__const char *__locuser, __const char *__remuser,
|
||||
__const char *__cmd, int *__fd2p));
|
||||
int rresvport __P ((int *__port));
|
||||
int ruserok __P ((__const char *__rhost, int __superuser,
|
||||
__const char *__ruser, __const char *__luser));
|
||||
int rexec __P ((char **__ahost, int __inport, __const char *__user,
|
||||
__const char *__passwd, __const char *__cmd,
|
||||
int *__fd2p));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* _SYS_SOCKET_H */
|
22
include/sys/socketcall.h
Normal file
22
include/sys/socketcall.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef _SYS_SOCKETCALL_H
|
||||
#define _SYS_SOCKETCALL_H
|
||||
|
||||
#define SYS_SOCKET 1
|
||||
#define SYS_BIND 2
|
||||
#define SYS_CONNECT 3
|
||||
#define SYS_LISTEN 4
|
||||
#define SYS_ACCEPT 5
|
||||
#define SYS_GETSOCKNAME 6
|
||||
#define SYS_GETPEERNAME 7
|
||||
#define SYS_SOCKETPAIR 8
|
||||
#define SYS_SEND 9
|
||||
#define SYS_RECV 10
|
||||
#define SYS_SENDTO 11
|
||||
#define SYS_RECVFROM 12
|
||||
#define SYS_SHUTDOWN 13
|
||||
#define SYS_SETSOCKOPT 14
|
||||
#define SYS_GETSOCKOPT 15
|
||||
#define SYS_SENDMSG 16
|
||||
#define SYS_RECVMSG 17
|
||||
|
||||
#endif _SYS_SOCKETCALL_H
|
1
include/sys/socketio.h
Normal file
1
include/sys/socketio.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/sockios.h>
|
8
include/sys/socketvar.h
Normal file
8
include/sys/socketvar.h
Normal file
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* This seems the best way to handle this. sys/socket.h already has
|
||||
* all the right bits in it. In fact there isn't a single useful thing
|
||||
* in the BSD net-2 sys/socketvar.h anyway but people persist in including
|
||||
* it...
|
||||
* Alan
|
||||
*/
|
||||
#include <sys/socket.h>
|
192
include/sys/stat.h
Normal file
192
include/sys/stat.h
Normal file
@@ -0,0 +1,192 @@
|
||||
#ifndef _SYS_STAT_H
|
||||
#define _SYS_STAT_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#undef __NOT_KERNEL
|
||||
#define __NOT_KERNEL
|
||||
#include <linux/stat.h>
|
||||
#undef __NOT_KERNEL
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
#include <sys/time.h> /* For timestruc_t */
|
||||
#endif /* __SVR4_I386_ABI_L1__ */
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct stat {
|
||||
dev_t st_dev;
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
long st_pad1[3];
|
||||
#else
|
||||
unsigned short __pad1;
|
||||
#endif
|
||||
|
||||
ino_t st_ino;
|
||||
umode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
dev_t st_rdev;
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
long st_pad2[2];
|
||||
#else
|
||||
unsigned short __pad2;
|
||||
#endif
|
||||
|
||||
off_t st_size;
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
timestruc_t st_atim;
|
||||
timestruc_t st_mtim;
|
||||
timestruc_t st_ctim;
|
||||
long st_blksize;
|
||||
long st_blocks;
|
||||
|
||||
#define FSTYPSZ 16
|
||||
|
||||
char st_fstype[FSTYPSZ];
|
||||
long st_pad4[8];
|
||||
|
||||
#define st_atime st_atim.tv_sec
|
||||
#define st_mtime st_mtim.tv_sec
|
||||
#define st_ctime st_ctim.tv_sec
|
||||
|
||||
#else /*! __SVR4_I386_ABI_L1__*/
|
||||
unsigned long st_blksize;
|
||||
unsigned long st_blocks;
|
||||
time_t st_atime;
|
||||
unsigned long __unused1;
|
||||
time_t st_mtime;
|
||||
unsigned long __unused2;
|
||||
time_t st_ctime;
|
||||
unsigned long __unused3;
|
||||
unsigned long __unused4;
|
||||
unsigned long __unused5;
|
||||
#endif /*! __SVR4_I386_ABI_L1__*/
|
||||
};
|
||||
|
||||
|
||||
#define LINUX_MKNOD_VERSION 1 /* SVr4 */
|
||||
#define LINUX_STAT_VERSION 1 /* SVr4 */
|
||||
|
||||
extern int _fxstat __P ((int __ver, int __fildes,
|
||||
struct stat *__stat_buf));
|
||||
|
||||
extern int _xstat __P ((int __ver, __const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
|
||||
extern int _lxstat __P ((int __ver, __const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
|
||||
#ifdef _MIT_POSIX_THREADS
|
||||
extern int __machdep_sys__fxstat __P ((int __ver, int __fd,
|
||||
struct stat *__stat_buf));
|
||||
#endif
|
||||
|
||||
extern int _xmknod __P ((int __ver, __const char *__path,
|
||||
mode_t __mode, dev_t *__dev));
|
||||
|
||||
/* Some synonyms used historically in the kernel and elsewhere */
|
||||
#define S_IREAD S_IRUSR /* read permission, owner */
|
||||
#define S_IWRITE S_IWUSR /* write permission, owner */
|
||||
#define S_IEXEC S_IXUSR /* execute/search permission, owner */
|
||||
|
||||
extern int __chmod __P ((__const char *__path, mode_t __mode));
|
||||
extern int chmod __P ((__const char *__path, mode_t __mode));
|
||||
|
||||
extern int __fchmod __P ((int __fildes, mode_t __mode));
|
||||
extern int fchmod __P ((int __fildes, mode_t __mode));
|
||||
|
||||
extern int __mkdir __P ((__const char *__path, mode_t __mode));
|
||||
extern int mkdir __P ((__const char *__path, mode_t __mode));
|
||||
|
||||
extern int mkfifo __P ((__const char *__path, mode_t __mode));
|
||||
|
||||
#if 1
|
||||
|
||||
extern int __fstat __P ((int __fildes, struct stat *__stat_buf));
|
||||
extern int fstat __P ((int __fildes, struct stat *__stat_buf));
|
||||
|
||||
extern int __stat __P ((__const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
extern int stat __P ((__const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
|
||||
extern int __lstat __P ((__const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
extern int lstat __P ((__const char *__filename,
|
||||
struct stat *__stat_buf));
|
||||
|
||||
extern int __mknod __P ((__const char *__path, mode_t __mode,
|
||||
dev_t __dev));
|
||||
extern int mknod __P ((__const char *__path, mode_t __mode,
|
||||
dev_t __dev));
|
||||
#endif /* #if 0 */
|
||||
|
||||
extern mode_t __umask __P ((mode_t __mask));
|
||||
extern mode_t umask __P ((mode_t __mask));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#if 0
|
||||
|
||||
static __inline__ int __stat(__const char * __path, struct stat * __statbuf)
|
||||
{
|
||||
return _xstat(LINUX_STAT_VERSION, __path, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int stat(__const char * __path, struct stat * __statbuf)
|
||||
{
|
||||
return _xstat(LINUX_STAT_VERSION, __path, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int __lstat(__const char * __path, struct stat * __statbuf)
|
||||
{
|
||||
return _lxstat(LINUX_STAT_VERSION, __path, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int lstat(__const char * __path, struct stat * __statbuf)
|
||||
{
|
||||
return _lxstat(LINUX_STAT_VERSION, __path, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int __fstat(int __fd, struct stat * __statbuf)
|
||||
{
|
||||
return _fxstat(LINUX_STAT_VERSION, __fd, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int fstat(int __fd, struct stat * __statbuf)
|
||||
{
|
||||
return _fxstat(LINUX_STAT_VERSION, __fd, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int __mknod(__const char * __path, mode_t __mode, dev_t __dev)
|
||||
{
|
||||
return _xmknod(LINUX_MKNOD_VERSION, __path, __mode, &__dev);
|
||||
}
|
||||
|
||||
static __inline__ int mknod(__const char * __path, mode_t __mode, dev_t __dev)
|
||||
{
|
||||
return _xmknod(LINUX_MKNOD_VERSION, __path, __mode, &__dev);
|
||||
}
|
||||
|
||||
#ifdef _MIT_POSIX_THREADS
|
||||
|
||||
static __inline__ int __machdep_sys_fstat(int __fd, struct stat * __statbuf)
|
||||
{
|
||||
return __machdep_sys__fxstat(LINUX_STAT_VERSION, __fd, __statbuf);
|
||||
}
|
||||
|
||||
static __inline__ int machdep_sys_fstat(int __fd, struct stat * __statbuf)
|
||||
{
|
||||
return __machdep_sys__fxstat(LINUX_STAT_VERSION, __fd, __statbuf);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
182
include/sys/syscall.h
Normal file
182
include/sys/syscall.h
Normal file
@@ -0,0 +1,182 @@
|
||||
#ifndef _SYS_SYSCALL_H
|
||||
#define _SYS_SYSCALL_H
|
||||
|
||||
#define SYS_setup 0 /* Used only by init, to get system going. */
|
||||
#define SYS_exit 1
|
||||
#define SYS_fork 2
|
||||
#define SYS_read 3
|
||||
#define SYS_write 4
|
||||
#define SYS_open 5
|
||||
#define SYS_close 6
|
||||
#define SYS_waitpid 7
|
||||
#define SYS_creat 8
|
||||
#define SYS_link 9
|
||||
#define SYS_unlink 10
|
||||
#define SYS_execve 11
|
||||
#define SYS_chdir 12
|
||||
#define SYS_time 13
|
||||
#define SYS_mknod 14
|
||||
#define SYS_prev_mknod 14
|
||||
#define SYS_chmod 15
|
||||
#define SYS_chown 16
|
||||
#define SYS_break 17
|
||||
#define SYS_oldstat 18
|
||||
#define SYS_lseek 19
|
||||
#define SYS_getpid 20
|
||||
#define SYS_mount 21
|
||||
#define SYS_umount 22
|
||||
#define SYS_setuid 23
|
||||
#define SYS_getuid 24
|
||||
#define SYS_stime 25
|
||||
#define SYS_ptrace 26
|
||||
#define SYS_alarm 27
|
||||
#define SYS_oldfstat 28
|
||||
#define SYS_pause 29
|
||||
#define SYS_utime 30
|
||||
#define SYS_stty 31
|
||||
#define SYS_gtty 32
|
||||
#define SYS_access 33
|
||||
#define SYS_nice 34
|
||||
#define SYS_ftime 35
|
||||
#define SYS_sync 36
|
||||
#define SYS_kill 37
|
||||
#define SYS_rename 38
|
||||
#define SYS_mkdir 39
|
||||
#define SYS_rmdir 40
|
||||
#define SYS_dup 41
|
||||
#define SYS_pipe 42
|
||||
#define SYS_times 43
|
||||
#define SYS_prof 44
|
||||
#define SYS_brk 45
|
||||
#define SYS_setgid 46
|
||||
#define SYS_getgid 47
|
||||
#define SYS_signal 48
|
||||
#define SYS_geteuid 49
|
||||
#define SYS_getegid 50
|
||||
#define SYS_acct 51
|
||||
#define SYS_phys 52
|
||||
#define SYS_lock 53
|
||||
#define SYS_ioctl 54
|
||||
#define SYS_fcntl 55
|
||||
#define SYS_mpx 56
|
||||
#define SYS_setpgid 57
|
||||
#define SYS_ulimit 58
|
||||
#define SYS_oldolduname 59
|
||||
#define SYS_umask 60
|
||||
#define SYS_chroot 61
|
||||
#define SYS_prev_ustat 62
|
||||
#define SYS_dup2 63
|
||||
#define SYS_getppid 64
|
||||
#define SYS_getpgrp 65
|
||||
#define SYS_setsid 66
|
||||
#define SYS_sigaction 67
|
||||
#define SYS_siggetmask 68
|
||||
#define SYS_sigsetmask 69
|
||||
#define SYS_setreuid 70
|
||||
#define SYS_setregid 71
|
||||
#define SYS_sigsuspend 72
|
||||
#define SYS_sigpending 73
|
||||
#define SYS_sethostname 74
|
||||
#define SYS_setrlimit 75
|
||||
#define SYS_getrlimit 76
|
||||
#define SYS_getrusage 77
|
||||
#define SYS_gettimeofday 78
|
||||
#define SYS_settimeofday 79
|
||||
#define SYS_getgroups 80
|
||||
#define SYS_setgroups 81
|
||||
#define SYS_select 82
|
||||
#define SYS_symlink 83
|
||||
#define SYS_oldlstat 84
|
||||
#define SYS_readlink 85
|
||||
#define SYS_uselib 86
|
||||
#define SYS_swapon 87
|
||||
#define SYS_reboot 88
|
||||
#define SYS_readdir 89
|
||||
#define SYS_mmap 90
|
||||
#define SYS_munmap 91
|
||||
#define SYS_truncate 92
|
||||
#define SYS_ftruncate 93
|
||||
#define SYS_fchmod 94
|
||||
#define SYS_fchown 95
|
||||
#define SYS_getpriority 96
|
||||
#define SYS_setpriority 97
|
||||
#define SYS_profil 98
|
||||
#define SYS_statfs 99
|
||||
#define SYS_fstatfs 100
|
||||
#define SYS_ioperm 101
|
||||
#define SYS_socketcall 102
|
||||
#define SYS_klog 103
|
||||
#define SYS_setitimer 104
|
||||
#define SYS_getitimer 105
|
||||
#define SYS_prev_stat 106
|
||||
#define SYS_prev_lstat 107
|
||||
#define SYS_prev_fstat 108
|
||||
#define SYS_stat 106
|
||||
#define SYS_lstat 107
|
||||
#define SYS_fstat 108
|
||||
#define SYS_olduname 109
|
||||
#define SYS_iopl 110
|
||||
#define SYS_vhangup 111
|
||||
#define SYS_idle 112
|
||||
#define SYS_vm86old 113
|
||||
#define SYS_wait4 114
|
||||
#define SYS_swapoff 115
|
||||
#define SYS_sysinfo 116
|
||||
#define SYS_ipc 117
|
||||
#define SYS_fsync 118
|
||||
#define SYS_sigreturn 119
|
||||
#define SYS_clone 120
|
||||
#define SYS_setdomainname 121
|
||||
#define SYS_uname 122
|
||||
#define SYS_modify_ldt 123
|
||||
#define SYS_adjtimex 124
|
||||
#define SYS_mprotect 125
|
||||
#define SYS_sigprocmask 126
|
||||
#define SYS_create_module 127
|
||||
#define SYS_init_module 128
|
||||
#define SYS_delete_module 129
|
||||
#define SYS_get_kernel_syms 130
|
||||
#define SYS_quotactl 131
|
||||
#define SYS_getpgid 132
|
||||
#define SYS_fchdir 133
|
||||
#define SYS_bdflush 134
|
||||
#define SYS_sysfs 135
|
||||
#define SYS_personality 136
|
||||
#define SYS_afs_syscall 137 /* Syscall for Andrew File System */
|
||||
#define SYS_setfsuid 138
|
||||
#define SYS_setfsgid 139
|
||||
#define SYS__llseek 140
|
||||
#define SYS_getdents 141
|
||||
#define SYS__newselect 142
|
||||
#define SYS_flock 143
|
||||
#define SYS_syscall_flock SYS_flock
|
||||
#define SYS_msync 144
|
||||
#define SYS_readv 145
|
||||
#define SYS_syscall_readv SYS_readv
|
||||
#define SYS_writev 146
|
||||
#define SYS_syscall_writev SYS_writev
|
||||
#define SYS_getsid 147
|
||||
#define SYS_fdatasync 148
|
||||
#define SYS__sysctl 149
|
||||
#define SYS_mlock 150
|
||||
#define SYS_munlock 151
|
||||
#define SYS_mlockall 152
|
||||
#define SYS_munlockall 153
|
||||
#define SYS_sched_setparam 154
|
||||
#define SYS_sched_getparam 155
|
||||
#define SYS_sched_setscheduler 156
|
||||
#define SYS_sched_getscheduler 157
|
||||
#define SYS_sched_yield 158
|
||||
#define SYS_sched_get_priority_max 159
|
||||
#define SYS_sched_get_priority_min 160
|
||||
#define SYS_sched_rr_get_interval 161
|
||||
#define SYS_nanosleep 162
|
||||
#define SYS_mremap 163
|
||||
#define SYS_setresuid 164
|
||||
#define SYS_getresuid 165
|
||||
#define SYS_vm86 166
|
||||
#define SYS_query_module 167
|
||||
#define SYS_poll 168
|
||||
#define SYS_syscall_poll SYS_poll
|
||||
|
||||
#endif /* <sys/syscall.h> */
|
200
include/sys/syslog.h
Normal file
200
include/sys/syslog.h
Normal file
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1988 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.
|
||||
*
|
||||
* @(#)syslog.h 7.20 (Berkeley) 2/23/91
|
||||
*/
|
||||
|
||||
#ifndef _SYS_LOG_H
|
||||
#define _SYS_LOG_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
#define _PATH_LOG "/dev/log"
|
||||
|
||||
/*
|
||||
* priorities/facilities are encoded into a single 32-bit quantity, where the
|
||||
* bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
|
||||
* (0-big number). Both the priorities and the facilities map roughly
|
||||
* one-to-one to strings in the syslogd(8) source code. This mapping is
|
||||
* included in this file.
|
||||
*
|
||||
* priorities (these are ordered)
|
||||
*/
|
||||
#define LOG_EMERG 0 /* system is unusable */
|
||||
#define LOG_ALERT 1 /* action must be taken immediately */
|
||||
#define LOG_CRIT 2 /* critical conditions */
|
||||
#define LOG_ERR 3 /* error conditions */
|
||||
#define LOG_WARNING 4 /* warning conditions */
|
||||
#define LOG_NOTICE 5 /* normal but significant condition */
|
||||
#define LOG_INFO 6 /* informational */
|
||||
#define LOG_DEBUG 7 /* debug-level messages */
|
||||
|
||||
#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
|
||||
/* extract priority */
|
||||
#define LOG_PRI(p) ((p) & LOG_PRIMASK)
|
||||
#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri))
|
||||
|
||||
#ifdef SYSLOG_NAMES
|
||||
#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
|
||||
/* mark "facility" */
|
||||
#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES, 0)
|
||||
typedef struct _code {
|
||||
char *c_name;
|
||||
int c_val;
|
||||
} CODE;
|
||||
|
||||
CODE prioritynames[] = {
|
||||
{ "alert", LOG_ALERT },
|
||||
{ "crit", LOG_CRIT },
|
||||
{ "debug", LOG_DEBUG },
|
||||
{ "emerg", LOG_EMERG },
|
||||
{ "err", LOG_ERR },
|
||||
{ "error", LOG_ERR }, /* DEPRECATED */
|
||||
{ "info", LOG_INFO },
|
||||
{ "none", INTERNAL_NOPRI }, /* INTERNAL */
|
||||
{ "notice", LOG_NOTICE },
|
||||
{ "panic", LOG_EMERG }, /* DEPRECATED */
|
||||
{ "warn", LOG_WARNING }, /* DEPRECATED */
|
||||
{ "warning", LOG_WARNING },
|
||||
{ NULL, -1 }
|
||||
};
|
||||
#endif
|
||||
|
||||
/* facility codes */
|
||||
#define LOG_KERN (0<<3) /* kernel messages */
|
||||
#define LOG_USER (1<<3) /* random user-level messages */
|
||||
#define LOG_MAIL (2<<3) /* mail system */
|
||||
#define LOG_DAEMON (3<<3) /* system daemons */
|
||||
#define LOG_AUTH (4<<3) /* security/authorization messages */
|
||||
#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
|
||||
#define LOG_LPR (6<<3) /* line printer subsystem */
|
||||
#define LOG_NEWS (7<<3) /* network news subsystem */
|
||||
#define LOG_UUCP (8<<3) /* UUCP subsystem */
|
||||
#define LOG_CRON (9<<3) /* clock daemon */
|
||||
#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
|
||||
|
||||
/* other codes through 15 reserved for system use */
|
||||
#define LOG_LOCAL0 (16<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL1 (17<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL2 (18<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL3 (19<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL4 (20<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL5 (21<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL6 (22<<3) /* reserved for local use */
|
||||
#define LOG_LOCAL7 (23<<3) /* reserved for local use */
|
||||
|
||||
#define LOG_NFACILITIES 24 /* current number of facilities */
|
||||
#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
|
||||
/* facility of pri */
|
||||
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
|
||||
|
||||
#ifdef SYSLOG_NAMES
|
||||
CODE facilitynames[] = {
|
||||
{ "auth", LOG_AUTH },
|
||||
{ "authpriv", LOG_AUTHPRIV },
|
||||
{ "cron", LOG_CRON },
|
||||
{ "daemon", LOG_DAEMON },
|
||||
{ "kern", LOG_KERN },
|
||||
{ "lpr", LOG_LPR },
|
||||
{ "mail", LOG_MAIL },
|
||||
{ "mark", INTERNAL_MARK }, /* INTERNAL */
|
||||
{ "news", LOG_NEWS },
|
||||
{ "security", LOG_AUTH }, /* DEPRECATED */
|
||||
{ "syslog", LOG_SYSLOG },
|
||||
{ "user", LOG_USER },
|
||||
{ "uucp", LOG_UUCP },
|
||||
{ "local0", LOG_LOCAL0 },
|
||||
{ "local1", LOG_LOCAL1 },
|
||||
{ "local2", LOG_LOCAL2 },
|
||||
{ "local3", LOG_LOCAL3 },
|
||||
{ "local4", LOG_LOCAL4 },
|
||||
{ "local5", LOG_LOCAL5 },
|
||||
{ "local6", LOG_LOCAL6 },
|
||||
{ "local7", LOG_LOCAL7 },
|
||||
{ NULL, -1 }
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef KERNEL
|
||||
#define LOG_PRINTF -1 /* pseudo-priority to indicate use of printf */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* arguments to setlogmask.
|
||||
*/
|
||||
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
|
||||
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
|
||||
|
||||
/*
|
||||
* Option flags for openlog.
|
||||
*
|
||||
* LOG_ODELAY no longer does anything.
|
||||
* LOG_NDELAY is the inverse of what it used to be.
|
||||
*/
|
||||
#define LOG_PID 0x01 /* log the pid with each message */
|
||||
#define LOG_CONS 0x02 /* log on the console if errors in sending */
|
||||
#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
|
||||
#define LOG_NDELAY 0x08 /* don't delay open */
|
||||
#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
|
||||
#define LOG_PERROR 0x20 /* log to stderr as well */
|
||||
|
||||
#ifndef KERNEL
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#ifdef __GNUC__
|
||||
/* This define avoids name pollution if we're using GNU stdarg.h */
|
||||
#define __need___va_list
|
||||
#include <stdarg.h>
|
||||
#endif
|
||||
|
||||
void closelog __P((void));
|
||||
void openlog __P((__const char *, int, int));
|
||||
int setlogmask __P((int));
|
||||
void syslog __P((int, __const char *, ...))
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)
|
||||
__attribute__ ((format (printf, 2, 0)))
|
||||
#endif
|
||||
;
|
||||
#ifdef __GNUC_VA_LIST
|
||||
void vsyslog __P((int, __const char *, __gnuc_va_list));
|
||||
#else
|
||||
void vsyslog __P(());
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !KERNEL */
|
||||
|
||||
#endif /* _SYS_LOG_H */
|
4
include/sys/termios.h
Normal file
4
include/sys/termios.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#ifndef _SYS_TERMIOS_H
|
||||
#define _SYS_TERMIOS_H
|
||||
#include <termios.h>
|
||||
#endif
|
81
include/sys/time.h
Normal file
81
include/sys/time.h
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _SYS_TIME_H
|
||||
#define _SYS_TIME_H
|
||||
|
||||
#include <features.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/time.h>
|
||||
|
||||
#define DST_NONE 0 /* not on dst */
|
||||
#define DST_USA 1 /* USA style dst */
|
||||
#define DST_AUST 2 /* Australian style dst */
|
||||
#define DST_WET 3 /* Western European dst */
|
||||
#define DST_MET 4 /* Middle European dst */
|
||||
#define DST_EET 5 /* Eastern European dst */
|
||||
#define DST_CAN 6 /* Canada */
|
||||
#define DST_GB 7 /* Great Britain and Eire */
|
||||
#define DST_RUM 8 /* Rumania */
|
||||
#define DST_TUR 9 /* Turkey */
|
||||
#define DST_AUSTALT 10 /* Australian style with shift in 1986 */
|
||||
|
||||
#ifdef __SVR4_I386_ABI_L1__
|
||||
typedef struct timestruc {
|
||||
time_t tv_sec;
|
||||
long tv_nsec;
|
||||
} timestruc_t;
|
||||
#endif /* __SVR4_I386_ABI_L1__ */
|
||||
|
||||
/*
|
||||
* Operations on timevals.
|
||||
*
|
||||
* NB: timercmp does not work for >= or <=.
|
||||
*
|
||||
*/
|
||||
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
|
||||
#define timercmp(tvp, uvp, cmp) \
|
||||
(((tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) \
|
||||
|| (tvp)->tv_sec cmp (uvp)->tv_sec)
|
||||
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
|
||||
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __gettimeofday __P ((struct timeval * __tp,
|
||||
struct timezone * __tz));
|
||||
extern int gettimeofday __P ((struct timeval * __tp,
|
||||
struct timezone * __tz));
|
||||
extern int __settimeofday __P ((__const struct timeval *__tv,
|
||||
__const struct timezone *__tz));
|
||||
extern int settimeofday __P ((__const struct timeval *__tv,
|
||||
__const struct timezone *__tz));
|
||||
|
||||
extern int __select __P ((int __width, fd_set * __readfds,
|
||||
fd_set * __writefds, fd_set * __exceptfds,
|
||||
struct timeval * __timeout));
|
||||
extern int select __P ((int __width, fd_set * __readfds,
|
||||
fd_set * __writefds, fd_set * __exceptfds,
|
||||
struct timeval * __timeout));
|
||||
|
||||
extern int __getitimer __P ((int __which,
|
||||
struct itimerval *__value));
|
||||
extern int getitimer __P ((int __which,
|
||||
struct itimerval *__value));
|
||||
extern int __setitimer __P ((int __which,
|
||||
__const struct itimerval *__value,
|
||||
struct itimerval *__ovalue));
|
||||
extern int setitimer __P ((int __which,
|
||||
__const struct itimerval *__value,
|
||||
struct itimerval *__ovalue));
|
||||
|
||||
extern int __adjtime __P ((struct timeval * __itv,
|
||||
struct timeval * __otv));
|
||||
extern int adjtime __P ((struct timeval * __itv,
|
||||
struct timeval * __otv));
|
||||
|
||||
extern int __utimes __P((char *__path, struct timeval *tvp));
|
||||
extern int utimes __P((char *__path, struct timeval *tvp));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_SYS_TIME_H*/
|
21
include/sys/times.h
Normal file
21
include/sys/times.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef _SYS_TIMES_H
|
||||
#define _SYS_TIMES_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
struct tms {
|
||||
clock_t tms_utime;
|
||||
clock_t tms_stime;
|
||||
clock_t tms_cutime;
|
||||
clock_t tms_cstime;
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern clock_t times __P ((struct tms * __tp));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
4
include/sys/types.h
Normal file
4
include/sys/types.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#include <stddef.h>
|
||||
#include <sys/bitypes.h>
|
||||
#include <linux/types.h>
|
||||
#include <gnu/types.h>
|
65
include/sys/uio.h
Normal file
65
include/sys/uio.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#ifndef _SYS_UIO_H
|
||||
|
||||
#define _SYS_UIO_H 1
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
/* That is a klude for Linux. */
|
||||
#ifdef __linux__
|
||||
#include <linux/socket.h>
|
||||
#endif
|
||||
|
||||
#ifndef __LINUX_UIO_H
|
||||
|
||||
/* Structure describing a section of memory. */
|
||||
|
||||
struct iovec
|
||||
{
|
||||
/* Starting address. */
|
||||
__ptr_t iov_base;
|
||||
/* Length in bytes. */
|
||||
size_t iov_len;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* Read data from file descriptor FD, and put the result in the
|
||||
buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
|
||||
The buffers are filled in the order specified.
|
||||
Operates just like `read' (see <unistd.h>) except that data are
|
||||
put in VECTOR instead of a contiguous buffer. */
|
||||
int readv __P ((int __fd, __const struct iovec * __vector, size_t __count));
|
||||
|
||||
/* Write data pointed by the buffers described by VECTOR, which
|
||||
is a vector of COUNT `struct iovec's, to file descriptor FD.
|
||||
The data is written in the order specified.
|
||||
Operates just like `write' (see <unistd.h>) except that the data
|
||||
are taken from VECTOR instead of a contiguous buffer. */
|
||||
int writev __P ((int __fd, __const struct iovec * __vector, size_t __count));
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/uio.h */
|
1
include/sys/un.h
Normal file
1
include/sys/un.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/un.h>
|
18
include/sys/utsname.h
Normal file
18
include/sys/utsname.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef __SYS_UTSNAME_H
|
||||
#define __SYS_UTSNAME_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
struct utsname {
|
||||
char sysname[65];
|
||||
char nodename[65];
|
||||
char release[65];
|
||||
char version[65];
|
||||
char machine[65];
|
||||
char domainname[65];
|
||||
};
|
||||
|
||||
extern int uname __P ((struct utsname * __utsbuf));
|
||||
|
||||
#endif
|
17
include/sys/vfs.h
Normal file
17
include/sys/vfs.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _SYS_VFS_H
|
||||
#define _SYS_VFS_H
|
||||
|
||||
#include <features.h>
|
||||
#include <linux/vfs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __statfs __P ((__const char *__path, struct statfs *__buf));
|
||||
extern int statfs __P ((__const char *__path, struct statfs *__buf));
|
||||
|
||||
extern int __fstatfs __P ((int __fildes, struct statfs *__buf));
|
||||
extern int fstatfs __P ((int __fildes, struct statfs *__buf));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_SYS_VFS_H */
|
125
include/sys/vm86.h
Normal file
125
include/sys/vm86.h
Normal file
@@ -0,0 +1,125 @@
|
||||
#if !__AS386_16__
|
||||
|
||||
#ifndef _SYS_VM86_H
|
||||
#define _SYS_VM86_H
|
||||
|
||||
#include <features.h>
|
||||
#ifndef _LINUX_VM86_H
|
||||
#define _LINUX_VM86_H
|
||||
|
||||
/*
|
||||
* I'm guessing at the VIF/VIP flag usage, but hope that this is how
|
||||
* the Pentium uses them. Linux will return from vm86 mode when both
|
||||
* VIF and VIP is set.
|
||||
*
|
||||
* On a Pentium, we could probably optimize the virtual flags directly
|
||||
* in the eflags register instead of doing it "by hand" in vflags...
|
||||
*
|
||||
* Linus
|
||||
*/
|
||||
|
||||
#define TF_MASK 0x00000100
|
||||
#define IF_MASK 0x00000200
|
||||
#define IOPL_MASK 0x00003000
|
||||
#define NT_MASK 0x00004000
|
||||
#define VM_MASK 0x00020000
|
||||
#define AC_MASK 0x00040000
|
||||
#define VIF_MASK 0x00080000 /* virtual interrupt flag */
|
||||
#define VIP_MASK 0x00100000 /* virtual interrupt pending */
|
||||
#define ID_MASK 0x00200000
|
||||
|
||||
#define BIOSSEG 0x0f000
|
||||
|
||||
#define CPU_086 0
|
||||
#define CPU_186 1
|
||||
#define CPU_286 2
|
||||
#define CPU_386 3
|
||||
#define CPU_486 4
|
||||
#define CPU_586 5
|
||||
|
||||
/*
|
||||
* Return values for the 'vm86()' system call
|
||||
*/
|
||||
#define VM86_TYPE(retval) ((retval) & 0xff)
|
||||
#define VM86_ARG(retval) ((retval) >> 8)
|
||||
|
||||
#define VM86_SIGNAL 0 /* return due to signal */
|
||||
#define VM86_UNKNOWN 1 /* unhandled GP fault - IO-instruction or similar */
|
||||
#define VM86_INTx 2 /* int3/int x instruction (ARG = x) */
|
||||
#define VM86_STI 3 /* sti/popf/iret instruction enabled virtual interrupts */
|
||||
|
||||
/*
|
||||
* This is the stack-layout when we have done a "SAVE_ALL" from vm86
|
||||
* mode - the main change is that the old segment descriptors aren't
|
||||
* useful any more and are forced to be zero by the kernel (and the
|
||||
* hardware when a trap occurs), and the real segment descriptors are
|
||||
* at the end of the structure. Look at ptrace.h to see the "normal"
|
||||
* setup.
|
||||
*/
|
||||
|
||||
struct vm86_regs {
|
||||
/*
|
||||
* normal regs, with special meaning for the segment descriptors..
|
||||
*/
|
||||
long ebx;
|
||||
long ecx;
|
||||
long edx;
|
||||
long esi;
|
||||
long edi;
|
||||
long ebp;
|
||||
long eax;
|
||||
long __null_ds;
|
||||
long __null_es;
|
||||
long __null_fs;
|
||||
long __null_gs;
|
||||
long orig_eax;
|
||||
long eip;
|
||||
unsigned short cs, __csh;
|
||||
long eflags;
|
||||
long esp;
|
||||
unsigned short ss, __ssh;
|
||||
/*
|
||||
* these are specific to v86 mode:
|
||||
*/
|
||||
unsigned short es, __esh;
|
||||
unsigned short ds, __dsh;
|
||||
unsigned short fs, __fsh;
|
||||
unsigned short gs, __gsh;
|
||||
};
|
||||
|
||||
struct revectored_struct {
|
||||
unsigned long __map[8]; /* 256 bits */
|
||||
};
|
||||
|
||||
struct vm86_struct {
|
||||
struct vm86_regs regs;
|
||||
unsigned long flags;
|
||||
unsigned long screen_bitmap;
|
||||
unsigned long cpu_type;
|
||||
struct revectored_struct int_revectored;
|
||||
struct revectored_struct int21_revectored;
|
||||
};
|
||||
|
||||
/*
|
||||
* flags masks
|
||||
*/
|
||||
#define VM86_SCREEN_BITMAP 0x0001
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
void handle_vm86_fault(struct vm86_regs *, long);
|
||||
void handle_vm86_debug(struct vm86_regs *, long);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern vm86(struct vm86_struct * __info);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_SYS_VM86_H */
|
||||
|
||||
#endif
|
146
include/sys/wait.h
Normal file
146
include/sys/wait.h
Normal file
@@ -0,0 +1,146 @@
|
||||
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* POSIX Standard: 3.2.1 Wait for Process Termination <sys/wait.h>
|
||||
*/
|
||||
|
||||
#ifndef _SYS_WAIT_H
|
||||
|
||||
#define _SYS_WAIT_H 1
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <gnu/types.h>
|
||||
|
||||
/* This will define the `W*' macros for the flag
|
||||
bits to `waitpid', `wait3', and `wait4'. */
|
||||
#include <waitflags.h>
|
||||
|
||||
#ifdef __USE_BSD
|
||||
|
||||
/* Lots of hair to allow traditional BSD use of `union wait'
|
||||
as well as POSIX.1 use of `int' for the status word. */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define __WAIT_INT(status) \
|
||||
(__extension__ ({ union { __typeof(status) __in; int __i; } __u; \
|
||||
__u.__in = (status); __u.__i; }))
|
||||
#else
|
||||
#define __WAIT_INT(status) (*(int *) &(status))
|
||||
#endif
|
||||
|
||||
/* This is the type of the argument to `wait'. With GCC 2.6.1 and later,
|
||||
the funky union causes redeclarations with either `int *' or `union wait
|
||||
*' to be allowed without complaint. __WAIT_STATUS_DEFN is the type used
|
||||
in the actual function definitions. */
|
||||
|
||||
/* g++ in gcc 2.6.1 doesn't work. Maybe 2.7.x. H.J. */
|
||||
#if !defined (__GNUC__) || defined (__cplusplus) || \
|
||||
__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) || \
|
||||
(defined(_MIT_POSIX_THREADS) && _MIT_POSIX_THREADS > 0)
|
||||
#define __WAIT_STATUS __ptr_t
|
||||
#define __WAIT_STATUS_DEFN __ptr_t
|
||||
#else
|
||||
/* This works in GCC 2.6.1 and later. */
|
||||
typedef union
|
||||
{
|
||||
union wait *__uptr;
|
||||
int *__iptr;
|
||||
} __WAIT_STATUS __attribute__ ((transparent_union));
|
||||
#define __WAIT_STATUS_DEFN int *
|
||||
#endif
|
||||
|
||||
#else /* Don't use BSD. */
|
||||
|
||||
#define __WAIT_INT(status) (status)
|
||||
#define __WAIT_STATUS int *
|
||||
|
||||
#endif /* Use BSD. */
|
||||
|
||||
/* This will define all the `__W*' macros. */
|
||||
#include <waitstatus.h>
|
||||
|
||||
#define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
|
||||
#define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
|
||||
#define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
|
||||
#define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
|
||||
#define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
|
||||
#define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
|
||||
|
||||
#ifdef __USE_BSD
|
||||
#define WCOREDUMP(status) __WCOREDUMP(__WAIT_INT(status))
|
||||
#define W_EXITCODE(ret, sig) __W_EXITCODE(ret, sig)
|
||||
#define W_STOPCODE(sig) __W_STOPCODE(sig)
|
||||
#endif
|
||||
|
||||
|
||||
/* Wait for a child to die. When one does, put its status in *STAT_LOC
|
||||
and return its process ID. For errors, return (pid_t) -1. */
|
||||
extern __pid_t __wait __P ((__WAIT_STATUS __stat_loc));
|
||||
extern __pid_t wait __P ((__WAIT_STATUS __stat_loc));
|
||||
|
||||
#ifdef __USE_BSD
|
||||
/* Special values for the PID argument to `waitpid' and `wait4'. */
|
||||
#define WAIT_ANY (-1) /* Any process. */
|
||||
#define WAIT_MYPGRP 0 /* Any process in my process group. */
|
||||
#endif
|
||||
|
||||
/* Wait for a child matching PID to die.
|
||||
If PID is greater than 0, match any process whose process ID is PID.
|
||||
If PID is (pid_t) -1, match any process.
|
||||
If PID is (pid_t) 0, match any process with the
|
||||
same process group as the current process.
|
||||
If PID is less than -1, match any process whose
|
||||
process group is the absolute value of PID.
|
||||
If the WNOHANG bit is set in OPTIONS, and that child
|
||||
is not already dead, return (pid_t) 0. If successful,
|
||||
return PID and store the dead child's status in STAT_LOC.
|
||||
Return (pid_t) -1 for errors. If the WUNTRACED bit is
|
||||
set in OPTIONS, return status for stopped children; otherwise don't. */
|
||||
extern __pid_t __waitpid __P ((__pid_t __pid, int *__stat_loc,
|
||||
int __options));
|
||||
extern __pid_t waitpid __P ((__pid_t __pid, int *__stat_loc,
|
||||
int __options));
|
||||
#ifdef __USE_BSD
|
||||
/* This being here makes the prototypes valid whether or not
|
||||
we have already included <sys/resource.h> to define `struct rusage'. */
|
||||
struct rusage;
|
||||
|
||||
/* Wait for a child to exit. When one does, put its status in *STAT_LOC and
|
||||
return its process ID. For errors return (pid_t) -1. If USAGE is not
|
||||
nil, store information about the child's resource usage there. If the
|
||||
WUNTRACED bit is set in OPTIONS, return status for stopped children;
|
||||
otherwise don't. */
|
||||
extern __pid_t __wait3 __P ((__WAIT_STATUS __stat_loc,
|
||||
int __options, struct rusage * __usage));
|
||||
extern __pid_t wait3 __P ((__WAIT_STATUS __stat_loc,
|
||||
int __options, struct rusage * __usage));
|
||||
|
||||
/* PID is like waitpid. Other args are like wait3. */
|
||||
extern __pid_t __wait4 __P ((__pid_t __pid, __WAIT_STATUS __stat_loc,
|
||||
int __options, struct rusage *__usage));
|
||||
extern __pid_t wait4 __P ((__pid_t __pid, __WAIT_STATUS __stat_loc,
|
||||
int __options, struct rusage *__usage));
|
||||
#endif /* Use BSD. */
|
||||
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/wait.h */
|
6
include/syscall.h
Normal file
6
include/syscall.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <errno.h>
|
||||
|
||||
#define __check_errno(__res) ((__res) >= 0)
|
||||
|
||||
#include <m68k/syscall.h>
|
||||
#include <sys/syscall.h>
|
1
include/syslog.h
Normal file
1
include/syslog.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <sys/syslog.h>
|
21
include/termcap.h
Normal file
21
include/termcap.h
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
#ifndef _TERMCAP_H
|
||||
#define _TERMCAP_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
extern char PC;
|
||||
extern char *UP;
|
||||
extern char *BC;
|
||||
extern int ospeed;
|
||||
|
||||
extern int tgetent __P((char *, const char *));
|
||||
extern int tgetflag __P((const char *));
|
||||
extern int tgetnum __P((const char *));
|
||||
extern char *tgetstr __P((const char *, char **));
|
||||
|
||||
extern int tputs __P((const char *, int, int (*)(int)));
|
||||
extern char *tgoto __P((const char *, int, int));
|
||||
|
||||
#endif /* _TERMCAP_H */
|
1
include/termio.h
Normal file
1
include/termio.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <termios.h>
|
32
include/termios.h
Normal file
32
include/termios.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef __TERMIOS_H
|
||||
#define __TERMIOS_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/termios.h>
|
||||
|
||||
extern speed_t cfgetispeed __P ((struct termios *__termios_p));
|
||||
extern speed_t cfgetospeed __P ((struct termios *__termios_p));
|
||||
extern int cfsetispeed __P ((struct termios *__termios_p, speed_t __speed));
|
||||
extern int cfsetospeed __P ((struct termios *__termios_p, speed_t __speed));
|
||||
|
||||
extern int tcspeed_to_number __P ((speed_t __speed));
|
||||
extern speed_t tcspeed_from_number __P ((int number));
|
||||
|
||||
extern int cfgetispeedn __P ((struct termios *__termios_p));
|
||||
extern int cfgetospeedn __P ((struct termios *__termios_p));
|
||||
extern int cfsetispeedn __P ((struct termios *__termios_p, int __speed));
|
||||
extern int cfsetospeedn __P ((struct termios *__termios_p, int __speed));
|
||||
|
||||
extern void cfmakeraw __P ((struct termios *__t));
|
||||
|
||||
extern int tcsetattr __P ((int __fd, int __opt, struct termios *__termios_p));
|
||||
extern int tcgetattr __P ((int __fildes, struct termios *__termios_p));
|
||||
extern int tcdrain __P ((int __fildes));
|
||||
extern int tcflow __P ((int __fildes, int __action));
|
||||
extern int tcflush __P ((int __fildes, int __queue_selector));
|
||||
extern int tcsendbreak __P ((int __fildes, int __duration));
|
||||
extern pid_t tcgetpgrp __P ((int __fildes));
|
||||
extern int tcsetpgrp __P ((int __fildes, pid_t __pgrp_id));
|
||||
|
||||
#endif
|
128
include/time.h
Normal file
128
include/time.h
Normal file
@@ -0,0 +1,128 @@
|
||||
/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/*
|
||||
* ANSI Standard: 4.12 DATE and TIME <time.h>
|
||||
*/
|
||||
|
||||
#ifndef _TIME_H
|
||||
#define _TIME_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#ifndef _TIME_T
|
||||
#define _TIME_T
|
||||
typedef long time_t;
|
||||
#endif
|
||||
|
||||
#ifndef _CLOCK_T
|
||||
#define _CLOCK_T
|
||||
typedef long clock_t;
|
||||
#endif
|
||||
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef unsigned int size_t;
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#ifdef __cplusplus
|
||||
#define NULL 0
|
||||
#else
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define CLOCKS_PER_SEC 100
|
||||
#define CLK_TCK 100 /* That must be the same as HZ ???? */
|
||||
|
||||
struct tm {
|
||||
int tm_sec;
|
||||
int tm_min;
|
||||
int tm_hour;
|
||||
int tm_mday;
|
||||
int tm_mon;
|
||||
int tm_year;
|
||||
int tm_wday;
|
||||
int tm_yday;
|
||||
int tm_isdst;
|
||||
/* Those are for future use. */
|
||||
long int __tm_gmtoff__;
|
||||
__const char *__tm_zone__;
|
||||
};
|
||||
|
||||
#define __isleap(year) \
|
||||
((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
|
||||
|
||||
extern char *tzname[2];
|
||||
extern int daylight;
|
||||
extern long int timezone;
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int stime __P ((time_t* __tptr));
|
||||
|
||||
extern clock_t clock __P ((void));
|
||||
extern time_t time __P ((time_t * __tp));
|
||||
extern __CONSTVALUE double difftime __P ((time_t __time2,
|
||||
time_t __time1)) __CONSTVALUE2;
|
||||
extern time_t mktime __P ((struct tm * __tp));
|
||||
|
||||
extern char * asctime __P ((__const struct tm * __tp));
|
||||
extern char * ctime __P ((__const time_t * __tp));
|
||||
extern size_t strftime __P ((char * __s, size_t __smax,
|
||||
__const char * __fmt, __const struct tm * __tp));
|
||||
extern char * strptime __P ((__const char * __s, __const char * __fmt,
|
||||
struct tm * __tm));
|
||||
|
||||
extern void tzset __P ((void));
|
||||
|
||||
extern struct tm* gmtime __P ((__const time_t *__tp));
|
||||
extern struct tm* localtime __P ((__const time_t * __tp));
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Miscellaneous functions many Unices inherited from the public domain
|
||||
localtime package. These are included only for compatibility. */
|
||||
|
||||
/* Like `mktime', but for TP represents Universal Time, not local time. */
|
||||
extern time_t timegm __P ((struct tm *__tp));
|
||||
|
||||
/* Another name for `mktime'. */
|
||||
extern time_t timelocal __P ((struct tm *__tp));
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT)
|
||||
|
||||
extern char * asctime_r __P((__const struct tm *, char *));
|
||||
extern char * ctime_r __P((__const time_t *, char *));
|
||||
extern struct tm* gmtime_r __P((__const time_t *, struct tm *));
|
||||
extern struct tm* localtime_r __P((__const time_t *, struct tm *));
|
||||
|
||||
#endif
|
||||
|
||||
struct timespec;
|
||||
|
||||
/* IEEE Std 1003.1b-1993. */
|
||||
extern int nanosleep __P((__const struct timespec *__rqtp,
|
||||
struct timespec *__rmtp));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
108
include/unistd.h
Normal file
108
include/unistd.h
Normal file
@@ -0,0 +1,108 @@
|
||||
/* unistd.h <ndf@linux.mit.edu> */
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef __UNISTD_H
|
||||
#define __UNISTD_H
|
||||
|
||||
#include <errno.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
#define STDIN_FILENO 0
|
||||
#define STDOUT_FILENO 1
|
||||
#define STDERR_FILENO 2
|
||||
|
||||
|
||||
|
||||
extern int close __P ((int));
|
||||
extern size_t read __P ((int __fd, char * __buf, size_t __nbytes));
|
||||
extern size_t write __P ((int __fd, __const char * __buf, size_t __n));
|
||||
extern off_t lseek __P ((int __fd, off_t __n, int __whence));
|
||||
extern int pipe __P ((int __pipedes[2]));
|
||||
extern unsigned int alarm __P ((unsigned int __seconds));
|
||||
extern int sleep __P ((unsigned int __seconds));
|
||||
extern void usleep __P ((unsigned long __microseconds));
|
||||
extern int pause __P ((void));
|
||||
extern char* crypt __P((__const char *__key, __const char *__salt));
|
||||
extern int isatty __P ((int __fd));
|
||||
extern int readlink __P ((__const char *__path, char *__buf, size_t __len));
|
||||
extern int link __P ((__const char *__from, __const char *__to));
|
||||
extern int symlink __P ((__const char *__from, __const char *__to));
|
||||
extern int readlink __P ((__const char *__path, char *__buf, size_t __len));
|
||||
extern int unlink __P ((__const char *__name));
|
||||
extern char *getcwd __P ((char *__buf, size_t __size));
|
||||
extern int fchdir __P ((int __fd));
|
||||
extern int chdir __P ((__const char *__path));
|
||||
extern int chown __P ((__const char *__file,
|
||||
uid_t __owner, gid_t __group));
|
||||
|
||||
extern int fchown __P ((int __fd,
|
||||
uid_t __owner, gid_t __group));
|
||||
|
||||
extern int fsync __P ((int __fd));
|
||||
|
||||
extern int sync __P ((void));
|
||||
|
||||
extern int rmdir __P ((__const char *__path));
|
||||
|
||||
extern int rename __P((__const char* _old, __const char* _new));
|
||||
|
||||
extern int access __P ((__const char *__name, int __type));
|
||||
|
||||
extern int reboot __P ((int __magic, int __magic_too, int __flag));
|
||||
|
||||
extern int mkstemp __P ((char * __template));
|
||||
extern char * mktemp __P ((char * __template));
|
||||
|
||||
extern int _clone __P ((int (*fn)(void *arg), void *child_stack, int flags, void *arg));
|
||||
|
||||
|
||||
#if 0
|
||||
#ifndef SYS_fork
|
||||
#define SYS_fork 2
|
||||
#endif
|
||||
|
||||
#define vfork() ({ \
|
||||
register long __res __asm__ ("%d0"); \
|
||||
__asm__ __volatile__ ("trap #0" \
|
||||
: "=g" (__res) \
|
||||
: "0" (SYS_fork) \
|
||||
: "%d0"); \
|
||||
__res; \
|
||||
})
|
||||
#endif
|
||||
|
||||
#define vfork() ({ \
|
||||
register unsigned long __res __asm__ ("%d0") = __NR_fork; \
|
||||
__asm__ __volatile__ ("trap #0" \
|
||||
: "=g" (__res) \
|
||||
: "0" (__res) \
|
||||
: "%d0"); \
|
||||
if (__res >= (unsigned long)-4096) { \
|
||||
errno = -__res; \
|
||||
__res = (pid_t)-1; \
|
||||
} \
|
||||
(pid_t)__res; \
|
||||
})
|
||||
|
||||
|
||||
#define fork fork_not_available_use_vfork
|
||||
#define clone clone_not_available_use__clone
|
||||
|
||||
|
||||
#ifndef SEEK_SET
|
||||
#define SEEK_SET 0
|
||||
#define SEEK_CUR 1
|
||||
#define SEEK_END 2
|
||||
#endif
|
||||
|
||||
#ifndef R_OK
|
||||
#define R_OK 4 /* Test for read permission. */
|
||||
#define W_OK 2 /* Test for write permission. */
|
||||
#define X_OK 1 /* Test for execute permission. */
|
||||
#define F_OK 0 /* Test for existence. */
|
||||
#endif
|
||||
|
||||
#endif /* __UNISTD_H */
|
||||
|
||||
|
15
include/utime.h
Normal file
15
include/utime.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef __UTIME_H
|
||||
#define __UTIME_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
struct utimbuf {
|
||||
time_t actime;
|
||||
time_t modtime;
|
||||
};
|
||||
|
||||
extern int utime __P ((char *__filename, struct utimbuf *__utimebuf));
|
||||
|
||||
#endif
|
||||
|
52
include/utmp.h
Normal file
52
include/utmp.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* utmp.h */
|
||||
|
||||
#ifndef __UTMP_H
|
||||
#define __UTMP_H
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
#include <paths.h>
|
||||
#include <time.h>
|
||||
|
||||
#define UT_UNKNOWN 0
|
||||
#define UT_LINESIZE 12
|
||||
#define UT_NAMESIZE 8
|
||||
#define UT_HOSTSIZE 16
|
||||
|
||||
#define RUN_LVL 1
|
||||
#define BOOT_TIME 2
|
||||
#define NEW_TIME 3
|
||||
#define OLD_TIME 4
|
||||
|
||||
#define INIT_PROCESS 5
|
||||
#define LOGIN_PROCESS 6
|
||||
#define USER_PROCESS 7
|
||||
#define DEAD_PROCESS 8
|
||||
|
||||
struct utmp
|
||||
{
|
||||
short ut_type; /* type of login */
|
||||
pid_t ut_pid; /* pid of login-process */
|
||||
char ut_line[UT_LINESIZE]; /* devicename of tty -"/dev/", null-term */
|
||||
char ut_id[2]; /* abbrev. ttyname, as 01, s1 etc. */
|
||||
time_t ut_time; /* login time */
|
||||
char ut_user[UT_NAMESIZE]; /* username, not null-term */
|
||||
char ut_host[UT_HOSTSIZE]; /* hostname for remote login... */
|
||||
long ut_addr; /* IP addr of remote host */
|
||||
|
||||
};
|
||||
|
||||
extern void setutent __P ((void));
|
||||
extern void utmpname __P ((__const char *));
|
||||
extern struct utmp * getutent __P ((void));
|
||||
extern struct utmp * getutid __P ((struct utmp *));
|
||||
extern struct utmp * getutline __P ((struct utmp *));
|
||||
extern struct utmp * pututline __P ((struct utmp *));
|
||||
extern void endutent __P ((void));
|
||||
|
||||
#ifdef __LIBC__
|
||||
struct utmp * __getutent __P ((int));
|
||||
#endif
|
||||
|
||||
#endif /* __UTMP_H */
|
||||
|
3
include/wait.h
Normal file
3
include/wait.h
Normal file
@@ -0,0 +1,3 @@
|
||||
/* SVR4 ABI requires <wait.h> rather than <sys/wait.h> */
|
||||
|
||||
#include <sys/wait.h>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user