Initial revision

This commit is contained in:
Erik Andersen
2000-05-14 04:16:35 +00:00
commit 64bc641218
202 changed files with 22487 additions and 0 deletions

481
COPYING.LIB Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File

1
include/memory.h Normal file
View File

@@ -0,0 +1 @@
#include <string.h>

110
include/mntent.h Normal file
View 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
View 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
View 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
View 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 */

View File

@@ -0,0 +1 @@
#include <linux/in_systm.h>

39
include/netinet/ip.h Normal file
View 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
View File

@@ -0,0 +1 @@
#include <linux/ip_fw.h>

View File

@@ -0,0 +1 @@
#include <linux/icmp.h>

72
include/netinet/ip_tcp.h Normal file
View 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
View File

@@ -0,0 +1 @@
#include <linux/udp.h>

View 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
View File

@@ -0,0 +1 @@
#include <netinet/ip_tcp.h>

1
include/netinet/udp.h Normal file
View File

@@ -0,0 +1 @@
#include <netinet/ip_udp.h>

22
include/paths.h Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
#include <string.h>

94
include/sys/bitypes.h Normal file
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
#include <errno.h>

1
include/sys/fcntl.h Normal file
View File

@@ -0,0 +1 @@
#include <fcntl.h>

35
include/sys/file.h Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
#include <signal.h>

135
include/sys/socket.h Normal file
View 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
View 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
View File

@@ -0,0 +1 @@
#include <linux/sockios.h>

8
include/sys/socketvar.h Normal file
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,4 @@
#ifndef _SYS_TERMIOS_H
#define _SYS_TERMIOS_H
#include <termios.h>
#endif

81
include/sys/time.h Normal file
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
#include <linux/un.h>

18
include/sys/utsname.h Normal file
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1 @@
#include <sys/syslog.h>

21
include/termcap.h Normal file
View 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
View File

@@ -0,0 +1 @@
#include <termios.h>

32
include/termios.h Normal file
View 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
View 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
View 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
View 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
View 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
View 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