diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-09-27 05:21:15 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-09-27 05:21:15 +0000 |
commit | e83a36ce9f97ac0f59117b3a62fd2dd8461b1fd5 (patch) | |
tree | 85ce10f2fc87fba69e07a13d7036d074e195dea7 | |
parent | 65eee187317b93773d2409d0e7e2814d34c6a0e1 (diff) |
Rev all the header files to sync things with glibc 2.2.4
142 files changed, 8278 insertions, 4321 deletions
diff --git a/include/alloca.h b/include/alloca.h index 741eca743..0dd291f1b 100644 --- a/include/alloca.h +++ b/include/alloca.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1992, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1996, 1997, 1998, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ALLOCA_H #define _ALLOCA_H 1 @@ -30,7 +30,7 @@ __BEGIN_DECLS #undef alloca /* Allocate a block that will be freed when the calling function exits. */ -extern __ptr_t alloca __P ((size_t __size)); +extern void *alloca (size_t __size) __THROW; #ifdef __GNUC__ # define alloca(size) __builtin_alloca (size) diff --git a/include/ar.h b/include/ar.h index 2b54ecb87..5d157eca9 100644 --- a/include/ar.h +++ b/include/ar.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _AR_H #define _AR_H 1 diff --git a/include/arpa/ftp.h b/include/arpa/ftp.h index ac864aa70..e5b340db1 100644 --- a/include/arpa/ftp.h +++ b/include/arpa/ftp.h @@ -10,10 +10,6 @@ * 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. diff --git a/include/arpa/inet.h b/include/arpa/inet.h index e34c4726a..30af9757d 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -1,94 +1,105 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ARPA_INET_H #define _ARPA_INET_H 1 #include <features.h> - -#include <sys/types.h> #include <netinet/in.h> /* To define `struct in_addr'. */ +/* Type for length arguments in socket calls. */ +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif + __BEGIN_DECLS /* Convert Internet host address from numbers-and-dots notation in CP into binary data in network byte order. */ -extern u_int32_t inet_addr __P ((__const char *__cp)); - -/* Convert Internet host address from numbers-and-dots notation in CP - into binary data and store the result in the structure INP. */ -extern int inet_aton __P ((__const char *__cp, struct in_addr *__inp)); +extern in_addr_t inet_addr (__const char *__cp) __THROW; /* Return the local host address part of the Internet address in IN. */ -extern u_int32_t inet_lnaof __P ((struct in_addr __in)); +extern in_addr_t inet_lnaof (struct in_addr __in) __THROW; /* Make Internet host address in network byte order by combining the network number NET with the local address HOST. */ -extern struct in_addr inet_makeaddr __P ((u_int32_t __net, u_int32_t __host)); - -/* Format a network number NET into presentation format and place result - in buffer starting at BUF with length of LEN bytes. */ -extern char *inet_neta __P ((u_int32_t __net, char *__buf, size_t __len)); +extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host) + __THROW; /* Return network number part of the Internet address IN. */ -extern u_int32_t inet_netof __P ((struct in_addr __in)); +extern in_addr_t inet_netof (struct in_addr __in) __THROW; /* Extract the network number in network byte order from the address in numbers-and-dots natation starting at CP. */ -extern u_int32_t inet_network __P ((__const char *__cp)); - -/* Convert network number for interface type AF in buffer starting at - CP to presentation format. The result will specifiy BITS bits of - the number. */ -extern char *inet_net_ntop __P ((int __af, __const void *__cp, int __bits, - char *__buf, size_t __len)); - -/* Convert network number for interface type AF from presentation in - buffer starting at CP to network format and store result int - buffer starting at BUF of size LEN. */ -extern int inet_net_pton __P ((int __af, __const char *__cp, - void *__buf, size_t __len)); +extern in_addr_t inet_network (__const char *__cp) __THROW; /* Convert Internet number in IN to ASCII representation. The return value is a pointer to an internal array containing the string. */ -extern char *inet_ntoa __P ((struct in_addr __in)); +extern char *inet_ntoa (struct in_addr __in) __THROW; /* Convert from presentation format of an Internet number in buffer starting at CP to the binary network format and store result for interface type AF in buffer starting at BUF. */ -extern int inet_pton __P ((int __af, __const char *__cp, void *__buf)); +extern int inet_pton (int __af, __const char *__restrict __cp, + void *__restrict __buf) __THROW; /* Convert a Internet address in binary network format for interface type AF in buffer starting at CP to presentation form and place result in buffer of length LEN astarting at BUF. */ -extern __const char *inet_ntop __P ((int __af, __const void *__cp, - char *__buf, size_t __len)); +extern __const char *inet_ntop (int __af, __const void *__restrict __cp, + char *__restrict __buf, socklen_t __len) + __THROW; + + +/* The following functions are not part of XNS 5.2. */ +#ifdef __USE_MISC +/* Convert Internet host address from numbers-and-dots notation in CP + into binary data and store the result in the structure INP. */ +extern in_addr_t inet_aton (__const char *__cp, struct in_addr *__inp) __THROW; + +/* Format a network number NET into presentation format and place result + in buffer starting at BUF with length of LEN bytes. */ +extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __THROW; + +/* Convert network number for interface type AF in buffer starting at + CP to presentation format. The result will specifiy BITS bits of + the number. */ +extern char *inet_net_ntop (int __af, __const void *__cp, int __bits, + char *__buf, size_t __len) __THROW; + +/* Convert network number for interface type AF from presentation in + buffer starting at CP to network format and store result int + buffer starting at BUF of size LEN. */ +extern int inet_net_pton (int __af, __const char *__cp, + void *__buf, size_t __len) __THROW; /* Convert ASCII representation in hexadecimal form of the Internet address to binary form and place result in buffer of length LEN starting at BUF. */ -extern unsigned int inet_nsap_addr __P ((__const char *__cp, - unsigned char *__buf, int __len)); +extern unsigned int inet_nsap_addr (__const char *__cp, + unsigned char *__buf, int __len) __THROW; /* Convert internet address in binary form in LEN bytes starting at CP a presentation form and place result in BUF. */ -extern char *inet_nsap_ntoa __P ((int __len, __const unsigned char *__cp, - char *__buf)); +extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp, + char *__buf) __THROW; +#endif __END_DECLS diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h index 4a8ef67c7..6ae1bc61e 100644 --- a/include/arpa/nameser.h +++ b/include/arpa/nameser.h @@ -1,9 +1,7 @@ /* - * ++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: @@ -12,14 +10,10 @@ * 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 @@ -31,320 +25,531 @@ * 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. + */ + +/* + * Copyright (c) 1996-1999 by Internet Software Consortium. * * 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. + * copyright notice and this permission notice appear in all copies. * - * 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 + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM 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.3 2000/07/09 06:39:14 andersen Exp $ + * $BINDId: nameser.h,v 8.37 2000/03/30 21:16:49 vixie Exp $ */ -#ifndef _ARPA_NAMESER_H -#define _ARPA_NAMESER_H 1 +#ifndef _ARPA_NAMESER_H_ +#define _ARPA_NAMESER_H_ + +#define BIND_4_COMPAT -#include <features.h> #include <sys/param.h> -#include <sys/types.h> +#if (!defined(BSD)) || (BSD < 199306) +# include <sys/bitypes.h> +#else +# include <sys/types.h> +#endif +#include <sys/cdefs.h> /* - * 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. + * 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 (__NAMESER > 19931104)". Do not + * compare for equality; rather, use it to determine whether your libbind.a + * contains a new enough lib/nameser/ to support the feature you need. */ -#define __BIND 19960801 /* interface version stamp */ +#define __NAMESER 19991006 /* New interface version stamp. */ /* - * Define constants based on rfc883 + * Define constants based on RFC 883, RFC 1034, RFC 1035 */ -#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 */ +#define NS_PACKETSZ 512 /* maximum packet size */ +#define NS_MAXDNAME 1025 /* maximum domain name */ +#define NS_MAXCDNAME 255 /* maximum compressed domain name */ +#define NS_MAXLABEL 63 /* maximum length of domain label */ +#define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ +#define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ +#define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ +#define NS_INT32SZ 4 /* #/bytes of data in a u_int32_t */ +#define NS_INT16SZ 2 /* #/bytes of data in a u_int16_t */ +#define NS_INT8SZ 1 /* #/bytes of data in a u_int8_t */ +#define NS_INADDRSZ 4 /* IPv4 T_A */ +#define NS_IN6ADDRSZ 16 /* IPv6 T_AAAA */ +#define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ +#define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ /* - * Internet nameserver port number + * These can be expanded with synonyms, just keep ns_parse.c:ns_parserecord() + * in synch with it. */ -#define NAMESERVER_PORT 53 +typedef enum __ns_sect { + ns_s_qd = 0, /* Query: Question. */ + ns_s_zn = 0, /* Update: Zone. */ + ns_s_an = 1, /* Query: Answer. */ + ns_s_pr = 1, /* Update: Prerequisites. */ + ns_s_ns = 2, /* Query: Name servers. */ + ns_s_ud = 2, /* Update: Update. */ + ns_s_ar = 3, /* Query|Update: Additional records. */ + ns_s_max = 4 +} ns_sect; /* - * Currently defined opcodes + * This is a message handle. It is caller allocated and has no dynamic data. + * This structure is intended to be opaque to all but ns_parse.c, thus the + * leading _'s on the member names. Use the accessor functions, not the _'s. */ -#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 */ +typedef struct __ns_msg { + const u_char *_msg, *_eom; + u_int16_t _id, _flags, _counts[ns_s_max]; + const u_char *_sections[ns_s_max]; + ns_sect _sect; + int _rrnum; + const u_char *_ptr; +} ns_msg; + +/* Private data structure - do not use from outside library. */ +struct _ns_flagdata { int mask, shift; }; +extern struct _ns_flagdata _ns_flagdata[]; + +/* Accessor macros - this is part of the public interface. */ +#define ns_msg_getflag(handle, flag) ( \ + ((handle)._flags & _ns_flagdata[flag].mask) \ + >> _ns_flagdata[flag].shift \ + ) +#define ns_msg_id(handle) ((handle)._id + 0) +#define ns_msg_base(handle) ((handle)._msg + 0) +#define ns_msg_end(handle) ((handle)._eom + 0) +#define ns_msg_size(handle) ((handle)._eom - (handle)._msg) +#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) + /* - * Currently defined response codes + * This is a parsed record. It is caller allocated and has no dynamic data. */ -#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 */ +typedef struct __ns_rr { + char name[NS_MAXDNAME]; + u_int16_t type; + u_int16_t rr_class; + u_int32_t ttl; + u_int16_t rdlength; + const u_char * rdata; +} ns_rr; + +/* Accessor macros - this is part of the public interface. */ +#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_type(rr) ((ns_type)((rr).type + 0)) +#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl(rr) ((rr).ttl + 0) +#define ns_rr_rdlen(rr) ((rr).rdlength + 0) +#define ns_rr_rdata(rr) ((rr).rdata + 0) /* - * Type values for resources and queries + * These don't have to be in the same order as in the packet flags word, + * and they can even overlap in some cases, but they will need to be kept + * in synch with ns_parse.c:ns_flagdata[]. */ -#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 */ +typedef enum __ns_flag { + ns_f_qr, /* Question/Response. */ + ns_f_opcode, /* Operation code. */ + ns_f_aa, /* Authoritative Answer. */ + ns_f_tc, /* Truncation occurred. */ + ns_f_rd, /* Recursion Desired. */ + ns_f_ra, /* Recursion Available. */ + ns_f_z, /* MBZ. */ + ns_f_ad, /* Authentic Data (DNSSEC). */ + ns_f_cd, /* Checking Disabled (DNSSEC). */ + ns_f_rcode, /* Response code. */ + ns_f_max +} ns_flag; /* - * Values for class field + * Currently defined opcodes. */ - -#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 */ +typedef enum __ns_opcode { + ns_o_query = 0, /* Standard query. */ + ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */ + ns_o_status = 2, /* Name server status query (unsupported). */ + /* Opcode 3 is undefined/reserved. */ + ns_o_notify = 4, /* Zone change notification. */ + ns_o_update = 5, /* Zone update message. */ + ns_o_max = 6 +} ns_opcode; /* - * Flags field of the KEY RR rdata + * Currently defined response codes. */ -#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) +typedef enum __ns_rcode { + ns_r_noerror = 0, /* No error occurred. */ + ns_r_formerr = 1, /* Format error. */ + ns_r_servfail = 2, /* Server failure. */ + ns_r_nxdomain = 3, /* Name error. */ + ns_r_notimpl = 4, /* Unimplemented. */ + ns_r_refused = 5, /* Operation refused. */ + /* these are for BIND_UPDATE */ + ns_r_yxdomain = 6, /* Name exists */ + ns_r_yxrrset = 7, /* RRset exists */ + ns_r_nxrrset = 8, /* RRset does not exist */ + ns_r_notauth = 9, /* Not authoritative for zone */ + ns_r_notzone = 10, /* Zone of record different from zone section */ + ns_r_max = 11, + /* The following are TSIG extended errors */ + ns_r_badsig = 16, + ns_r_badkey = 17, + ns_r_badtime = 18 +} ns_rcode; -/* 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 */ +/* BIND_UPDATE */ +typedef enum __ns_update_operation { + ns_uop_delete = 0, + ns_uop_add = 1, + ns_uop_max = 2 +} ns_update_operation; -/* 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) +/* + * This structure is used for TSIG authenticated messages + */ +struct ns_tsig_key { + char name[NS_MAXDNAME], alg[NS_MAXDNAME]; + unsigned char *data; + int len; +}; +typedef struct ns_tsig_key ns_tsig_key; /* - * Status return codes for T_UNSPEC conversion routines + * This structure is used for TSIG authenticated TCP messages */ -#define CONV_SUCCESS 0 -#define CONV_OVERFLOW (-1) -#define CONV_BADFMT (-2) -#define CONV_BADCKSUM (-3) -#define CONV_BADBUFLEN (-4) +struct ns_tcp_tsig_state { + int counter; + struct dst_key *key; + void *ctx; + unsigned char sig[NS_PACKETSZ]; + int siglen; +}; +typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; -/* glibc always has byte order info in <endian.h> */ -#include <endian.h> +#define NS_TSIG_FUDGE 300 +#define NS_TSIG_TCP_COUNT 100 +#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" -__BEGIN_DECLS +#define NS_TSIG_ERROR_NO_TSIG -10 +#define NS_TSIG_ERROR_NO_SPACE -11 +#define NS_TSIG_ERROR_FORMERR -12 /* - * 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. + * Currently defined type values for resources and queries. */ +typedef enum __ns_type { + ns_t_invalid = 0, /* Cookie. */ + ns_t_a = 1, /* Host address. */ + ns_t_ns = 2, /* Authoritative server. */ + ns_t_md = 3, /* Mail destination. */ + ns_t_mf = 4, /* Mail forwarder. */ + ns_t_cname = 5, /* Canonical name. */ + ns_t_soa = 6, /* Start of authority zone. */ + ns_t_mb = 7, /* Mailbox domain name. */ + ns_t_mg = 8, /* Mail group member. */ + ns_t_mr = 9, /* Mail rename name. */ + ns_t_null = 10, /* Null resource record. */ + ns_t_wks = 11, /* Well known service. */ + ns_t_ptr = 12, /* Domain name pointer. */ + ns_t_hinfo = 13, /* Host information. */ + ns_t_minfo = 14, /* Mailbox information. */ + ns_t_mx = 15, /* Mail routing information. */ + ns_t_txt = 16, /* Text strings. */ + ns_t_rp = 17, /* Responsible person. */ + ns_t_afsdb = 18, /* AFS cell database. */ + ns_t_x25 = 19, /* X_25 calling address. */ + ns_t_isdn = 20, /* ISDN calling address. */ + ns_t_rt = 21, /* Router. */ + ns_t_nsap = 22, /* NSAP address. */ + ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */ + ns_t_sig = 24, /* Security signature. */ + ns_t_key = 25, /* Security key. */ + ns_t_px = 26, /* X.400 mail mapping. */ + ns_t_gpos = 27, /* Geographical position (withdrawn). */ + ns_t_aaaa = 28, /* Ip6 Address. */ + ns_t_loc = 29, /* Location Information. */ + ns_t_nxt = 30, /* Next domain (security). */ + ns_t_eid = 31, /* Endpoint identifier. */ + ns_t_nimloc = 32, /* Nimrod Locator. */ + ns_t_srv = 33, /* Server Selection. */ + ns_t_atma = 34, /* ATM Address */ + ns_t_naptr = 35, /* Naming Authority PoinTeR */ + ns_t_kx = 36, /* Key Exchange */ + ns_t_cert = 37, /* Certification record */ + ns_t_a6 = 38, /* IPv6 address (deprecates AAAA) */ + ns_t_dname = 39, /* Non-terminal DNAME (for IPv6) */ + ns_t_sink = 40, /* Kitchen sink (experimentatl) */ + ns_t_opt = 41, /* EDNS0 option (meta-RR) */ + ns_t_tsig = 250, /* Transaction signature. */ + ns_t_ixfr = 251, /* Incremental zone transfer. */ + ns_t_axfr = 252, /* Transfer zone of authority. */ + ns_t_mailb = 253, /* Transfer mailbox records. */ + ns_t_maila = 254, /* Transfer mail agent records. */ + ns_t_any = 255, /* Wildcard match. */ + ns_t_zxfr = 256, /* BIND-specific, nonstandard. */ + ns_t_max = 65536 +} ns_type; -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; +/* Exclusively a QTYPE? (not also an RTYPE) */ +#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ + (t) == ns_t_mailb || (t) == ns_t_maila) +/* Some kind of meta-RR? (not a QTYPE, but also not an RTYPE) */ +#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) +/* Exclusively an RTYPE? (not also a QTYPE or a meta-RR) */ +#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) +#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) +#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ + (t) == ns_t_zxfr) /* - * Defines for handling compressed domain names + * Values for class field */ -#define INDIR_MASK 0xc0 +typedef enum __ns_class { + ns_c_invalid = 0, /* Cookie. */ + ns_c_in = 1, /* Internet. */ + ns_c_2 = 2, /* unallocated/unsupported. */ + ns_c_chaos = 3, /* MIT Chaos-net. */ + ns_c_hs = 4, /* MIT Hesiod. */ + /* Query class values which do not appear in resource records */ + ns_c_none = 254, /* for prereq. sections in update requests */ + ns_c_any = 255, /* Wildcard match. */ + ns_c_max = 65536 +} ns_class; + +/* DNSSEC constants. */ + +typedef enum __ns_key_types { + ns_kt_rsa = 1, /* key type RSA/MD5 */ + ns_kt_dh = 2, /* Diffie Hellman */ + ns_kt_dsa = 3, /* Digital Signature Standard (MANDATORY) */ + ns_kt_private = 254 /* Private key type starts with OID */ +} ns_key_types; -extern u_int16_t _getshort __P((const u_char *)); -extern u_int32_t _getlong __P((const u_char *)); +typedef enum __ns_cert_types { + cert_t_pkix = 1, /* PKIX (X.509v3) */ + cert_t_spki = 2, /* SPKI */ + cert_t_pgp = 3, /* PGP */ + cert_t_url = 253, /* URL private type */ + cert_t_oid = 254 /* OID private type */ +} ns_cert_types; + +/* Flags field of the KEY RR rdata. */ +#define NS_KEY_TYPEMASK 0xC000 /* Mask for "type" bits */ +#define NS_KEY_TYPE_AUTH_CONF 0x0000 /* Key usable for both */ +#define NS_KEY_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */ +#define NS_KEY_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */ +#define NS_KEY_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */ +/* The type bits can also be interpreted independently, as single bits: */ +#define NS_KEY_NO_AUTH 0x8000 /* Key unusable for authentication */ +#define NS_KEY_NO_CONF 0x4000 /* Key unusable for confidentiality */ +#define NS_KEY_RESERVED2 0x2000 /* Security is *mandatory* if bit=0 */ +#define NS_KEY_EXTENDED_FLAGS 0x1000 /* reserved - must be zero */ +#define NS_KEY_RESERVED4 0x0800 /* reserved - must be zero */ +#define NS_KEY_RESERVED5 0x0400 /* reserved - must be zero */ +#define NS_KEY_NAME_TYPE 0x0300 /* these bits determine the type */ +#define NS_KEY_NAME_USER 0x0000 /* key is assoc. with user */ +#define NS_KEY_NAME_ENTITY 0x0200 /* key is assoc. with entity eg host */ +#define NS_KEY_NAME_ZONE 0x0100 /* key is zone key */ +#define NS_KEY_NAME_RESERVED 0x0300 /* reserved meaning */ +#define NS_KEY_RESERVED8 0x0080 /* reserved - must be zero */ +#define NS_KEY_RESERVED9 0x0040 /* reserved - must be zero */ +#define NS_KEY_RESERVED10 0x0020 /* reserved - must be zero */ +#define NS_KEY_RESERVED11 0x0010 /* reserved - must be zero */ +#define NS_KEY_SIGNATORYMASK 0x000F /* key can sign RR's of same name */ +#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ + NS_KEY_RESERVED4 | \ + NS_KEY_RESERVED5 | \ + NS_KEY_RESERVED8 | \ + NS_KEY_RESERVED9 | \ + NS_KEY_RESERVED10 | \ + NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK2 0xFFFF /* no bits defined here */ + +/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */ +#define NS_ALG_MD5RSA 1 /* MD5 with RSA */ +#define NS_ALG_DH 2 /* Diffie Hellman KEY */ +#define NS_ALG_DSA 3 /* DSA KEY */ +#define NS_ALG_DSS NS_ALG_DSA +#define NS_ALG_EXPIRE_ONLY 253 /* No alg, no security */ +#define NS_ALG_PRIVATE_OID 254 /* Key begins with OID giving alg */ + +/* Protocol values */ +/* value 0 is reserved */ +#define NS_KEY_PROT_TLS 1 +#define NS_KEY_PROT_EMAIL 2 +#define NS_KEY_PROT_DNSSEC 3 +#define NS_KEY_PROT_IPSEC 4 +#define NS_KEY_PROT_ANY 255 + +/* Signatures */ +#define NS_MD5RSA_MIN_BITS 512 /* Size of a mod or exp in bits */ +#define NS_MD5RSA_MAX_BITS 2552 + /* Total of binary mod and exp */ +#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) + /* Max length of text sig block */ +#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) +#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) +#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) + +#define NS_DSA_SIG_SIZE 41 +#define NS_DSA_MIN_SIZE 213 +#define NS_DSA_MAX_BYTES 405 + +/* Offsets into SIG record rdata to find various values */ +#define NS_SIG_TYPE 0 /* Type flags */ +#define NS_SIG_ALG 2 /* Algorithm */ +#define NS_SIG_LABELS 3 /* How many labels in name */ +#define NS_SIG_OTTL 4 /* Original TTL */ +#define NS_SIG_EXPIR 8 /* Expiration time */ +#define NS_SIG_SIGNED 12 /* Signature time */ +#define NS_SIG_FOOT 16 /* Key footprint */ +#define NS_SIG_SIGNER 18 /* Domain name of who signed it */ + +/* How RR types are represented as bit-flags in NXT records */ +#define NS_NXT_BITS 8 +#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_MAX 127 /* * 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) { \ +#define NS_GET16(s, cp) do { \ register u_char *t_cp = (u_char *)(cp); \ (s) = ((u_int16_t)t_cp[0] << 8) \ | ((u_int16_t)t_cp[1]) \ ; \ - (cp) += INT16SZ; \ -} + (cp) += NS_INT16SZ; \ +} while (0) -#define GETLONG(l, cp) { \ +#define NS_GET32(l, cp) do { \ 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; \ -} + (cp) += NS_INT32SZ; \ +} while (0) -#define PUTSHORT(s, cp) { \ +#define NS_PUT16(s, cp) do { \ 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; \ -} + (cp) += NS_INT16SZ; \ +} while (0) -#define PUTLONG(l, cp) { \ +#define NS_PUT32(l, cp) do { \ 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; \ -} + (cp) += NS_INT32SZ; \ +} while (0) +/* + * ANSI C identifier hiding for bind's lib/nameser. + */ +#define ns_get16 __ns_get16 +#define ns_get32 __ns_get32 +#define ns_put16 __ns_put16 +#define ns_put32 __ns_put32 +#define ns_initparse __ns_initparse +#define ns_skiprr __ns_skiprr +#define ns_parserr __ns_parserr +#define ns_sprintrr __ns_sprintrr +#define ns_sprintrrf __ns_sprintrrf +#define ns_format_ttl __ns_format_ttl +#define ns_parse_ttl __ns_parse_ttl +#define ns_datetosecs __ns_datetosecs +#define ns_name_ntol __ns_name_ntol +#define ns_name_ntop __ns_name_ntop +#define ns_name_pton __ns_name_pton +#define ns_name_unpack __ns_name_unpack +#define ns_name_pack __ns_name_pack +#define ns_name_compress __ns_name_compress +#define ns_name_uncompress __ns_name_uncompress +#define ns_name_skip __ns_name_skip +#define ns_name_rollback __ns_name_rollback +#define ns_sign __ns_sign +#define ns_sign_tcp __ns_sign_tcp +#define ns_sign_tcp_init __ns_sign_tcp_init +#define ns_find_tsig __ns_find_tsig +#define ns_verify __ns_verify +#define ns_verify_tcp __ns_verify_tcp +#define ns_verify_tcp_init __ns_verify_tcp_init +#define ns_samedomain __ns_samedomain +#define ns_subdomain __ns_subdomain +#define ns_makecanon __ns_makecanon +#define ns_samename __ns_samename + +__BEGIN_DECLS +u_int ns_get16 __P((const u_char *)); +u_long ns_get32 __P((const u_char *)); +void ns_put16 __P((u_int, u_char *)); +void ns_put32 __P((u_long, u_char *)); +int ns_initparse __P((const u_char *, int, ns_msg *)); +int ns_skiprr __P((const u_char *, const u_char *, ns_sect, int)); +int ns_parserr __P((ns_msg *, ns_sect, int, ns_rr *)); +int ns_sprintrr __P((const ns_msg *, const ns_rr *, + const char *, const char *, char *, size_t)); +int ns_sprintrrf __P((const u_char *, size_t, const char *, + ns_class, ns_type, u_long, const u_char *, + size_t, const char *, const char *, + char *, size_t)); +int ns_format_ttl __P((u_long, char *, size_t)); +int ns_parse_ttl __P((const char *, u_long *)); +u_int32_t ns_datetosecs __P((const char *cp, int *errp)); +int ns_name_ntol __P((const u_char *, u_char *, size_t)); +int ns_name_ntop __P((const u_char *, char *, size_t)); +int ns_name_pton __P((const char *, u_char *, size_t)); +int ns_name_unpack __P((const u_char *, const u_char *, + const u_char *, u_char *, size_t)); +int ns_name_pack __P((const u_char *, u_char *, int, + const u_char **, const u_char **)); +int ns_name_uncompress __P((const u_char *, const u_char *, + const u_char *, char *, size_t)); +int ns_name_compress __P((const char *, u_char *, size_t, + const u_char **, const u_char **)); +int ns_name_skip __P((const u_char **, const u_char *)); +void ns_name_rollback __P((const u_char *, const u_char **, + const u_char **)); +int ns_sign __P((u_char *, int *, int, int, void *, + const u_char *, int, u_char *, int *, time_t)); +int ns_sign_tcp __P((u_char *, int *, int, int, + ns_tcp_tsig_state *, int)); +int ns_sign_tcp_init __P((void *, const u_char *, int, + ns_tcp_tsig_state *)); +u_char *ns_find_tsig __P((u_char *, u_char *)); +int ns_verify __P((u_char *, int *, void *, + const u_char *, int, u_char *, int *, + time_t *, int)); +int ns_verify_tcp __P((u_char *, int *, ns_tcp_tsig_state *, int)); +int ns_verify_tcp_init __P((void *, const u_char *, int, + ns_tcp_tsig_state *)); +int ns_samedomain __P((const char *, const char *)); +int ns_subdomain __P((const char *, const char *)); +int ns_makecanon __P((const char *, char *, size_t)); +int ns_samename __P((const char *, const char *)); __END_DECLS -#endif /* arpa/nameser.h */ +#ifdef BIND_4_COMPAT +#include <arpa/nameser_compat.h> +#endif + +#endif /* !_ARPA_NAMESER_H_ */ diff --git a/include/arpa/telnet.h b/include/arpa/telnet.h index 3309e5d72..3774c8928 100644 --- a/include/arpa/telnet.h +++ b/include/arpa/telnet.h @@ -10,10 +10,6 @@ * 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. diff --git a/include/arpa/tftp.h b/include/arpa/tftp.h index 69187da08..21b0559e5 100644 --- a/include/arpa/tftp.h +++ b/include/arpa/tftp.h @@ -10,10 +10,6 @@ * 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. diff --git a/include/assert.h b/include/assert.h index 2612534cd..15a5bfe12 100644 --- a/include/assert.h +++ b/include/assert.h @@ -1,3 +1,25 @@ +/* Copyright (C) 1991,1992,1994-1999,2000,2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * ISO C99 Standard: 7.2 Diagnostics <assert.h> + */ + #ifndef __ASSERT_H #define __ASSERT_H #include <features.h> diff --git a/include/cfgfile.h b/include/cfgfile.h deleted file mode 100644 index 3e26f9c4c..000000000 --- a/include/cfgfile.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __CFGFILE_H__ -#define __CFGFILE_H__ - -#include <stdio.h> - -__BEGIN_DECLS -char ** cfgread(FILE *fp); -char ** cfgfind(FILE *fp, char *var); -__END_DECLS - -#endif /* __CFGFILE_H__ */ diff --git a/include/cpio.h b/include/cpio.h index 0364e8af8..a2fefab51 100644 --- a/include/cpio.h +++ b/include/cpio.h @@ -1,24 +1,23 @@ /* Extended cpio format from POSIX.1. This file is part of the GNU C Library. Copyright (C) 1992, 1998 Free Software Foundation, Inc. - NOTE: The canonical source of this file is maintained with the GNU cpio. Bugs can be reported to bug-glibc@gnu.org. 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _CPIO_H #define _CPIO_H 1 diff --git a/include/crypt.h b/include/crypt.h index 6c7f6c85d..a35d8c0bd 100644 --- a/include/crypt.h +++ b/include/crypt.h @@ -1,24 +1,20 @@ /* - * UFC-crypt: ultra fast crypt(3) implementation + * crypt(3) implementation for uClibc * - * Copyright (C) 1991, 92, 93, 96, 97, 98, 2000 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * The uClibc Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * 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. + * Lesser General Public License for more details. * - * @(#)crypt.h 1.5 12/20/96 + * You should have received a copy of the GNU Lesser General Public + * License along with the GNU C Library; if not, write to the Free + * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA. * */ diff --git a/include/ctype.h b/include/ctype.h index 546d032f9..81f09bebe 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -1,5 +1,26 @@ -/* ctype.h - * Character classification and conversion */ +/* vi: set sw=4 ts=4: */ +/* + * ctype.h + * Character classification and conversion + * + * Copyright (C) 2000 by Lineo, inc. + * Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org> + * + * This program 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 program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + * for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ #ifndef __CTYPE_H #define __CTYPE_H diff --git a/include/dirent.h b/include/dirent.h index 519373a55..8079d7097 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,98,2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 5.1.2 Directory Operations <dirent.h> @@ -30,17 +30,17 @@ __BEGIN_DECLS #include <bits/types.h> #ifdef __USE_XOPEN -# ifndef ino_t +# ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif -# define ino_t ino_t +# define __ino_t_defined # endif -# if defined __USE_LARGEFILE64 && !defined ino64_t +# if defined __USE_LARGEFILE64 && !defined __ino64_t_defined typedef __ino64_t ino64_t; -# define ino64_t ino64_t +# define __ino64_t_defined # endif #endif @@ -111,8 +111,10 @@ enum # define DT_REG DT_REG DT_LNK = 10, # define DT_LNK DT_LNK - DT_SOCK = 12 + DT_SOCK = 12, # define DT_SOCK DT_SOCK + DT_WHT = 14 +# define DT_WHT DT_WHT }; /* Convert between stat structure types and directory types. */ @@ -127,11 +129,11 @@ typedef struct __dirstream DIR; /* 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)); +extern DIR *opendir (__const char *__name) __THROW; /* Close the directory stream DIRP. Return 0 if successful, -1 if not. */ -extern int closedir __P ((DIR *__dirp)); +extern int closedir (DIR *__dirp) __THROW; /* Read a directory entry from DIRP. Return a pointer to a `struct dirent' describing the entry, or NULL for EOF or error. The @@ -141,61 +143,62 @@ extern int closedir __P ((DIR *__dirp)); If the Large File Support API is selected we have to use the appropriate interface. */ #ifndef __USE_FILE_OFFSET64 -extern struct dirent *readdir __P ((DIR *__dirp)); +extern struct dirent *readdir (DIR *__dirp) __THROW; #else # ifdef __REDIRECT -extern struct dirent *__REDIRECT (readdir, __P ((DIR *__dirp)), readdir64); +extern struct dirent *__REDIRECT (readdir, (DIR *__dirp) __THROW, readdir64); # else # define readdir readdir64 # endif #endif #ifdef __USE_LARGEFILE64 -extern struct dirent64 *readdir64 __P ((DIR *__dirp)); +extern struct dirent64 *readdir64 (DIR *__dirp) __THROW; #endif #if defined __USE_POSIX || defined __USE_MISC /* Reentrant version of `readdir'. Return in RESULT a pointer to the next entry. */ # ifndef __USE_FILE_OFFSET64 -extern int readdir_r __P ((DIR *__restrict __dirp, - struct dirent *__restrict __entry, - struct dirent **__restrict __result)); +extern int readdir_r (DIR *__restrict __dirp, + struct dirent *__restrict __entry, + struct dirent **__restrict __result) __THROW; # else # ifdef __REDIRECT -extern int __REDIRECT (readdir_r, __P ((DIR *__restrict __dirp, - struct dirent *__restrict __entry, - struct dirent **__restrict __result)), - readdir64_r); +extern int __REDIRECT (readdir_r, + (DIR *__restrict __dirp, + struct dirent *__restrict __entry, + struct dirent **__restrict __result) __THROW, + readdir64_r); # else # define readdir_r readdir64_r # endif # endif # ifdef __USE_LARGEFILE64 -extern int readdir64_r __P ((DIR *__restrict __dirp, - struct dirent64 *__restrict __entry, - struct dirent64 **__restrict __result)); +extern int readdir64_r (DIR *__restrict __dirp, + struct dirent64 *__restrict __entry, + struct dirent64 **__restrict __result) __THROW; # endif #endif /* POSIX or misc */ /* Rewind DIRP to the beginning of the directory. */ -extern void rewinddir __P ((DIR *__dirp)); +extern void rewinddir (DIR *__dirp) __THROW; #if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN # include <bits/types.h> /* Seek to position POS on DIRP. */ -extern void seekdir __P ((DIR *__dirp, long int __pos)); +extern void seekdir (DIR *__dirp, long int __pos) __THROW; /* Return the current position of DIRP. */ -extern long int telldir __P ((DIR *__dirp)); +extern long int telldir (DIR *__dirp) __THROW; #endif #if defined __USE_BSD || defined __USE_MISC /* Return the file descriptor used by DIRP. */ -extern int dirfd __P ((DIR *__dirp)); +extern int dirfd (DIR *__dirp) __THROW; # if defined __OPTIMIZE__ && defined _DIR_dirfd # define dirfd(dirp) _DIR_dirfd (dirp) @@ -221,17 +224,17 @@ extern int dirfd __P ((DIR *__dirp)); sorted using qsort with CMP, and collected in a malloc'd array in *NAMELIST. Returns the number of entries selected, or -1 on error. */ # ifndef __USE_FILE_OFFSET64 -extern int scandir __P ((__const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (__const struct dirent *), - int (*__cmp) (__const __ptr_t, __const __ptr_t))); +extern int scandir (__const char *__restrict __dir, + struct dirent ***__restrict __namelist, + int (*__selector) (__const struct dirent *), + int (*__cmp) (__const void *, __const void *)) __THROW; # else # ifdef __REDIRECT extern int __REDIRECT (scandir, - __P ((__const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (__const struct dirent *), - int (*__cmp) (__const __ptr_t, __const __ptr_t))), + (__const char *__restrict __dir, + struct dirent ***__restrict __namelist, + int (*__selector) (__const struct dirent *), + int (*__cmp) (__const void *, __const void *)) __THROW, scandir64); # else # define scandir scandir64 @@ -241,45 +244,51 @@ extern int __REDIRECT (scandir, # if defined __USE_GNU && defined __USE_LARGEFILE64 /* This function is like `scandir' but it uses the 64bit dirent structure. Please note that the CMP function must now work with struct dirent64 **. */ -extern int scandir64 __P ((__const char *__restrict __dir, - struct dirent64 ***__restrict __namelist, - int (*__selector) (__const struct dirent64 *), - int (*__cmp) (__const __ptr_t, __const __ptr_t))); +extern int scandir64 (__const char *__restrict __dir, + struct dirent64 ***__restrict __namelist, + int (*__selector) (__const struct dirent64 *), + int (*__cmp) (__const void *, __const void *)) __THROW; # endif /* Function to compare two `struct dirent's alphabetically. */ # ifndef __USE_FILE_OFFSET64 -extern int alphasort __P ((__const __ptr_t __e1, __const __ptr_t __e2)); +extern int alphasort (__const void *__e1, __const void *__e2) + __THROW __attribute_pure__; # else # ifdef __REDIRECT extern int __REDIRECT (alphasort, - __P ((__const __ptr_t __e1, __const __ptr_t __e2)), - alphasort64); + (__const void *__e1, __const void *__e2) + __THROW, + alphasort64) __attribute_pure__; # else # define alphasort alphasort64 # endif # endif # if defined __USE_GNU && defined __USE_LARGEFILE64 -extern int alphasort64 __P ((__const __ptr_t __e1, __const __ptr_t __e2)); +extern int alphasort64 (__const void *__e1, __const void *__e2) + __THROW __attribute_pure__; # endif # ifdef __USE_GNU /* Function to compare two `struct dirent's by name & version. */ # ifndef __USE_FILE_OFFSET64 -extern int versionsort __P ((__const __ptr_t __e1, __const __ptr_t __e2)); +extern int versionsort (__const void *__e1, __const void *__e2) + __THROW __attribute_pure__; # else # ifdef __REDIRECT extern int __REDIRECT (versionsort, - __P ((__const __ptr_t __e1, __const __ptr_t __e2)), - versionsort64); + (__const void *__e1, __const void *__e2) + __THROW, + versionsort64) __attribute_pure__; # else # define versionsort versionsort64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int versionsort64 __P ((__const __ptr_t __e1, __const __ptr_t __e2)); +extern int versionsort64 (__const void *__e1, __const void *__e2) + __THROW __attribute_pure__; # endif # endif @@ -287,17 +296,16 @@ extern int versionsort64 __P ((__const __ptr_t __e1, __const __ptr_t __e2)); 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. */ - # ifndef __USE_FILE_OFFSET64 -extern __ssize_t getdirentries __P ((int __fd, char *__restrict __buf, - size_t __nbytes, - __off_t *__restrict __basep)); +extern __ssize_t getdirentries (int __fd, char *__restrict __buf, + size_t __nbytes, + __off_t *__restrict __basep) __THROW; # else # ifdef __REDIRECT extern __ssize_t __REDIRECT (getdirentries, - __P ((int __fd, char *__restrict __buf, - size_t __nbytes, - __off64_t *__restrict __basep)), + (int __fd, char *__restrict __buf, + size_t __nbytes, + __off64_t *__restrict __basep) __THROW, getdirentries64); # else # define getdirentries getdirentries64 @@ -305,9 +313,9 @@ extern __ssize_t __REDIRECT (getdirentries, # endif # ifdef __USE_LARGEFILE64 -extern __ssize_t getdirentries64 __P ((int __fd, char *__restrict __buf, - size_t __nbytes, - __off64_t *__restrict __basep)); +extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, + size_t __nbytes, + __off64_t *__restrict __basep) __THROW; # endif #endif /* Use BSD or misc. */ diff --git a/include/dlfcn.h b/include/dlfcn.h index 998350baa..3fe4d0266 100644 --- a/include/dlfcn.h +++ b/include/dlfcn.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _DLFCN_H #define _DLFCN_H 1 @@ -25,72 +25,61 @@ /* Collect various system dependent definitions and declarations. */ #include <bits/dlfcn.h> +#ifdef __USE_GNU /* If the first argument of `dlsym' or `dlvsym' is set to RTLD_NEXT the run-time address of the symbol called NAME in the next shared object is returned. The "next" relation is defined by the order the shared objects were loaded. */ -#define RTLD_NEXT ((void *) -1l) +# define RTLD_NEXT ((void *) -1l) /* If the first argument to `dlsym' or `dlvsym' is set to RTLD_DEFAULT the run-time address of the symbol called NAME in the global scope is returned. */ -#define RTLD_DEFAULT ((void *) 0) +# define RTLD_DEFAULT ((void *) 0) +#endif __BEGIN_DECLS /* Open the shared object FILE and map it in; return a handle that can be passed to `dlsym' to get symbol values from it. */ -extern void *dlopen __P ((__const char *__file, int __mode)); +extern void *dlopen (__const char *__file, int __mode) __THROW; /* Unmap and close a shared object opened by `dlopen'. The handle cannot be used again after calling `dlclose'. */ -extern int dlclose __P ((void *__handle)); +extern int dlclose (void *__handle) __THROW; /* Find the run-time address in the shared object HANDLE refers to of the symbol called NAME. */ -extern void *dlsym __P ((void *__restrict __handle, - __const char *__restrict __name)); +extern void *dlsym (void *__restrict __handle, + __const char *__restrict __name) __THROW; #ifdef __USE_GNU /* Find the run-time address in the shared object HANDLE refers to of the symbol called NAME with VERSION. */ -extern void *dlvsym __P ((void *__restrict __handle, - __const char *__restrict __name, - __const char *__restrict __version)); +extern void *dlvsym (void *__restrict __handle, + __const char *__restrict __name, + __const char *__restrict __version) __THROW; #endif /* When any of the above functions fails, call this function to return a string describing the error. Each call resets the error string so that a following call returns null. */ -extern char *dlerror __P ((void)); +extern char *dlerror (void) __THROW; #ifdef __USE_GNU +/* Structure containing information about object searched using + `dladdr'. */ +typedef struct +{ + __const char *dli_fname; /* File name of defining object. */ + void *dli_fbase; /* Load address of that object. */ + __const char *dli_sname; /* Name of nearest symbol. */ + void *dli_saddr; /* Exact value of nearest symbol. */ +} Dl_info; + /* Fill in *INFO with the following information about ADDRESS. Returns 0 iff no shared object's segments contain that address. */ -typedef struct - { - __const char *dli_fname; /* File name of defining object. */ - void *dli_fbase; /* Load address of that object. */ - __const char *dli_sname; /* Name of nearest symbol. */ - void *dli_saddr; /* Exact value of nearest symbol. */ - } Dl_info; -extern int dladdr __P ((const void *__address, Dl_info *__info)); - -/* To support profiling of shared objects it is a good idea to call - the function found using `dlsym' using the following macro since - these calls do not use the PLT. But this would mean the dynamic - loader has no chance to find out when the function is called. The - macro applies the necessary magic so that profiling is possible. - Rewrite - foo = (*fctp) (arg1, arg2); - into - foo = DL_CALL_FCT (fctp, (arg1, arg2)); -*/ -# define DL_CALL_FCT(fctp, args) \ - (_dl_mcount_wrapper_check (fctp), (*(fctp)) args) - -/* This function calls the profiling functions. */ -extern void _dl_mcount_wrapper_check __P ((void *__selfpc)); +extern int dladdr (const void *__address, Dl_info *__info) __THROW; #endif __END_DECLS diff --git a/include/elf.h b/include/elf.h index 0644fd753..da82d591f 100644 --- a/include/elf.h +++ b/include/elf.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _ELF_H #define _ELF_H 1 @@ -235,7 +235,10 @@ typedef struct #define EM_MN10300 89 /* Matsushita MN10300 */ #define EM_MN10200 90 /* Matsushita MN10200 */ #define EM_PJ 91 /* picoJava */ -#define EM_NUM 92 +#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ +#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ +#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ +#define EM_NUM 95 /* If it is necessary to assign new unofficial EM_* values, please pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the @@ -663,7 +666,12 @@ typedef struct If any adjustment is made to the ELF object after it has been built these entries will need to be adjusted. */ #define DT_ADDRRNGLO 0x6ffffe00 -#define DT_SYMINFO 0x6ffffeff /* syminfo table */ +#define DT_CONFIG 0x6ffffefa /* Configuration information. */ +#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */ +#define DT_AUDIT 0x6ffffefc /* Object auditing. */ +#define DT_PLTPAD 0x6ffffefd /* PLT padding. */ +#define DT_MOVETAB 0x6ffffefe /* Move table. */ +#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */ #define DT_ADDRRNGHI 0x6ffffeff /* The versioning entry types. The next are defined as part of the @@ -711,9 +719,11 @@ typedef struct #define DF_1_TRANS 0x00000200 #define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */ #define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */ -#define DF_1_NODUMP 0x00001000 -#define DF_1_CONFALT 0x00002000 -#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */ +#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/ +#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */ +#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */ +#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */ /* Flags for the feature selection in DT_FEATURE_1. */ #define DTF_1_PARINIT 0x00000001 @@ -760,6 +770,12 @@ typedef struct #define VER_FLG_BASE 0x1 /* Version definition of file itself */ #define VER_FLG_WEAK 0x2 /* Weak version identifier */ +/* Versym symbol index values. */ +#define VER_NDX_LOCAL 0 /* Symbol is local. */ +#define VER_NDX_GLOBAL 1 /* Symbol is global. */ +#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ +#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ + /* Auxialiary version information. */ typedef struct diff --git a/include/endian.h b/include/endian.h index 109678aea..2f7bce100 100644 --- a/include/endian.h +++ b/include/endian.h @@ -1,31 +1,33 @@ -/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1996, 1997, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; 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. */ +/* 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, and then writing down one digit for + each byte, starting with the byte at the lowest address at the left, + and proceeding to the byte with the highest address at the right. */ #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 @@ -47,4 +49,10 @@ # define BYTE_ORDER __BYTE_ORDER #endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +# define __LONG_LONG_PAIR(HI, LO) LO, HI +#elif __BYTE_ORDER == __BIG_ENDIAN +# define __LONG_LONG_PAIR(HI, LO) HI, LO +#endif + #endif /* endian.h */ diff --git a/include/err.h b/include/err.h index 5bd51ea0d..9791a659c 100644 --- a/include/err.h +++ b/include/err.h @@ -1,7 +1,58 @@ -#ifndef __ERR_H__ -#define __ERR_H__ +/* 4.4BSD utility functions for error messages. + Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#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);}) + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -#endif /* __ERR_H__ */ + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _ERR_H +#define _ERR_H 1 + +#include <features.h> + +#define __need___va_list +#include <stdarg.h> +#ifndef __GNUC_VA_LIST +# define __gnuc_va_list __ptr_t +#endif + +__BEGIN_DECLS + +/* Print "program: ", FORMAT, ": ", the standard error string for errno, + and a newline, on stderr. */ +extern void warn (__const char *__format, ...) + __THROW __attribute__ ((__format__ (__printf__, 1, 2))); +extern void vwarn (__const char *__format, __gnuc_va_list) + __THROW __attribute__ ((__format__ (__printf__, 1, 0))); + +/* Likewise, but without ": " and the standard error string. */ +extern void warnx (__const char *__format, ...) + __THROW __attribute__ ((__format__ (__printf__, 1, 2))); +extern void vwarnx (__const char *__format, __gnuc_va_list) + __THROW __attribute__ ((__format__ (__printf__, 1, 0))); + +/* Likewise, and then exit with STATUS. */ +extern void err (int __status, __const char *__format, ...) + __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); +extern void verr (int __status, __const char *__format, __gnuc_va_list) + __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); +extern void errx (int __status, __const char *__format, ...) + __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); +extern void verrx (int __status, __const char *, __gnuc_va_list) + __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); + +__END_DECLS + +#endif /* err.h */ diff --git a/include/errno.h b/include/errno.h index aa7e6bcae..645a439db 100644 --- a/include/errno.h +++ b/include/errno.h @@ -1,23 +1,73 @@ -#ifndef _ERRNO_H -#define _ERRNO_H +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * ISO C99 Standard: 7.5 Errors <errno.h> + */ + +#ifndef _ERRNO_H + +/* The includer defined __need_Emath if he wants only the definitions + of EDOM and ERANGE, and not everything else. */ +#ifndef __need_Emath +#define _ERRNO_H 1 #include <features.h> -#include <bits/errno.h> +#endif __BEGIN_DECLS -extern int sys_nerr; -extern const char *const sys_errlist[]; +/* Get the error number constants from the system-specific file. + This file will test __need_Emath and _ERRNO_H. */ +#include <bits/errno.h> +#undef __need_Emath -#define _sys_nerr sys_nerr -#define _sys_errlist sys_errlist +#ifdef _ERRNO_H +/* Declare the `errno' variable, unless it's defined as a macro by + bits/errno.h. This is the case in GNU, where it is a per-thread + variable. This redeclaration using the macro still works, but it + will be a function declaration without a prototype and may trigger + a -Wstrict-prototypes warning. */ #ifndef errno -extern int errno; +extern int errno; #endif -extern void perror __P ((__const char* __s)); -extern char* strerror __P ((int __errno)); + +#ifdef __USE_GNU + +/* The full and simple forms of the name with which the program was + invoked. These variables are set up automatically at startup based on + the value of ARGV[0] (this works only if you use GNU ld). */ +extern char *program_invocation_name, *program_invocation_short_name; +#endif /* __USE_GNU */ +#endif /* _ERRNO_H */ __END_DECLS +#endif /* _ERRNO_H */ + +/* The Hurd <bits/errno.h> defines `error_t' as an enumerated type so + that printing `error_t' values in the debugger shows the names. We + might need this definition sometimes even if this file was included + before. */ +#if defined __USE_GNU || defined __need_error_t +# ifndef __error_t_defined +typedef int error_t; +# define __error_t_defined 1 +# endif +# undef __need_error_t #endif diff --git a/include/fcntl.h b/include/fcntl.h index 744f5ae4f..951fd8016 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 6.5 File Control Operations <fcntl.h> @@ -57,42 +57,40 @@ __BEGIN_DECLS /* Do the file control operation described by CMD on FD. The remaining arguments are interpreted depending on CMD. */ -extern int __fcntl __P ((int __fd, int __cmd, ...)); -extern int fcntl __P ((int __fd, int __cmd, ...)); +extern int fcntl (int __fd, int __cmd, ...) __THROW; /* Open FILE and return a new file descriptor for it, or -1 on error. OFLAG determines the type of access used. If O_CREAT is on OFLAG, the third argument is taken as a `mode_t', the mode of the created file. */ -extern int __open __P ((__const char *__file, int __oflag, mode_t mode)); #ifndef __USE_FILE_OFFSET64 -extern int open __P ((__const char *__file, int __oflag, ...)); +extern int open (__const char *__file, int __oflag, ...) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (open, __P ((__const char *__file, int __oflag, ...)), +extern int __REDIRECT (open, (__const char *__file, int __oflag, ...) __THROW, open64); # else # define open open64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int open64 __P ((__const char *__file, int __oflag, ...)); +extern int open64 (__const char *__file, int __oflag, ...) __THROW; #endif /* Create and open FILE, with mode MODE. This takes an `int' MODE argument because that is what `mode_t' will be widened to. */ #ifndef __USE_FILE_OFFSET64 -extern int creat __P ((__const char *__file, __mode_t __mode)); +extern int creat (__const char *__file, __mode_t __mode) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (creat, __P ((__const char *__file, __mode_t __mode)), +extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode) __THROW, creat64); # else # define creat creat64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int creat64 __P ((__const char *__file, __mode_t __mode)); +extern int creat64 (__const char *__file, __mode_t __mode) __THROW; #endif #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ @@ -111,17 +109,56 @@ extern int creat64 __P ((__const char *__file, __mode_t __mode)); # define F_TEST 3 /* Test a region for other processes locks. */ # ifndef __USE_FILE_OFFSET64 -extern int lockf __P ((int __fd, int __cmd, __off_t __len)); +extern int lockf (int __fd, int __cmd, __off_t __len) __THROW; # else # ifdef __REDIRECT -extern int __REDIRECT (lockf, __P ((int __fd, int __cmd, __off64_t __len)), +extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW, lockf64); # else # define lockf lockf64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len)); +extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW; +# endif +#endif + +#ifdef __USE_XOPEN2K +/* Advice the system about the expected behaviour of the application with + respect to the file associated with FD. */ +# ifndef __USE_FILE_OFFSET64 +extern int posix_fadvise (int __fd, __off_t __offset, size_t __len, + int __advise) __THROW; +# else +# ifdef __REDIRECT +extern int __REDIRECT (posix_fadvise, (int __fd, __off64_t __offset, + size_t __len, int __advise) __THROW, + posix_fadvise64); +# else +# define posix_fadvise posix_fadvise64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len, + int __advise) __THROW; +# endif + + +/* Reserve storage for the data of the file associated with FD. */ +# ifndef __USE_FILE_OFFSET64 +extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) __THROW; +# else +# ifdef __REDIRECT +extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset, + size_t __len) __THROW, + posix_fallocate64); +# else +# define posix_fallocate posix_fallocate64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len) + __THROW; # endif #endif diff --git a/include/features.h b/include/features.h index f86788fa4..05afff6d8 100644 --- a/include/features.h +++ b/include/features.h @@ -1,6 +1,250 @@ -#ifndef __FEATURES_H -#define __FEATURES_H +/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _FEATURES_H +#define _FEATURES_H 1 + +/* These are defined by the user (or the compiler) + to specify the desired environment: + + __STRICT_ANSI__ ISO Standard C. + _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. + _POSIX_SOURCE IEEE Std 1003.1. + _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; + if >=199309L, add IEEE Std 1003.1b-1993; + if >=199506L, add IEEE Std 1003.1c-1995 + _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if + Single Unix conformance is wanted, to 600 for the + upcoming sixth revision. + _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. + _LARGEFILE_SOURCE Some more functions for correct standard I/O. + _LARGEFILE64_SOURCE Additional functionality from LFS for large files. + _FILE_OFFSET_BITS=N Select default filesystem interface. + _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. + _SVID_SOURCE ISO C, POSIX, and SVID things. + _GNU_SOURCE All of the above, plus GNU extensions. + _REENTRANT Select additionally reentrant object. + _THREAD_SAFE Same as _REENTRANT, often used by other systems. + + The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. + If none of these are defined, the default is to have _SVID_SOURCE, + _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to + 199506L. If more than one of these are defined, they accumulate. + For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE + together give you ISO C, 1003.1, and 1003.2, but nothing else. + + These are defined by this file and are used by the + header files to decide what to declare or define: + + __USE_ISOC99 Define ISO C99 things. + __USE_POSIX Define IEEE Std 1003.1 things. + __USE_POSIX2 Define IEEE Std 1003.2 things. + __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. + __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. + __USE_XOPEN Define XPG things. + __USE_XOPEN_EXTENDED Define X/Open Unix things. + __USE_UNIX98 Define Single Unix V2 things. + __USE_XOPEN2K Define XPG6 things. + __USE_LARGEFILE Define correct standard I/O things. + __USE_LARGEFILE64 Define LFS things with separate names. + __USE_FILE_OFFSET64 Define 64bit interface as default. + __USE_BSD Define 4.3BSD things. + __USE_SVID Define SVID things. + __USE_MISC Define things common to BSD and System V Unix. + __USE_GNU Define GNU extensions. + __USE_REENTRANT Define reentrant/thread-safe *_r functions. + __FAVOR_BSD Favor 4.3BSD things in cases of conflict. + + The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are + defined by this file unconditionally. `__GNU_LIBRARY__' is provided + only for compatibility. All new code should use the other symbols + to test for features. + + All macros listed above as possibly being defined by this file are + explicitly undefined if they are not explicitly defined. + Feature-test macros that are not defined by the user or compiler + but are implied by the other feature-test macros defined (or by the + lack of any definitions) are defined by the file. */ + + +/* Undefine everything, so we get a clean slate. */ +#undef __USE_ISOC99 +#undef __USE_POSIX +#undef __USE_POSIX2 +#undef __USE_POSIX199309 +#undef __USE_POSIX199506 +#undef __USE_XOPEN +#undef __USE_XOPEN_EXTENDED +#undef __USE_UNIX98 +#undef __USE_XOPEN2K +#undef __USE_LARGEFILE +#undef __USE_LARGEFILE64 +#undef __USE_FILE_OFFSET64 +#undef __USE_BSD +#undef __USE_SVID +#undef __USE_MISC +#undef __USE_GNU +#undef __USE_REENTRANT +#undef __FAVOR_BSD +#undef __KERNEL_STRICT_NAMES + +/* Suppress kernel-name space pollution unless user expressedly asks + for it. */ +#ifndef _LOOSE_KERNEL_NAMES +# define __KERNEL_STRICT_NAMES +#endif + +/* Always use ISO C things. */ +#define __USE_ANSI 1 + + +/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ +#if defined _BSD_SOURCE && \ + !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \ + defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \ + defined _GNU_SOURCE || defined _SVID_SOURCE) +# define __FAVOR_BSD 1 +#endif + +/* If _GNU_SOURCE was defined by the user, turn on all the other features. */ +#ifdef _GNU_SOURCE +# undef _ISOC99_SOURCE +# define _ISOC99_SOURCE 1 +# undef _POSIX_SOURCE +# define _POSIX_SOURCE 1 +# undef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 199506L +# undef _XOPEN_SOURCE +# define _XOPEN_SOURCE 600 +# undef _XOPEN_SOURCE_EXTENDED +# define _XOPEN_SOURCE_EXTENDED 1 +# undef _LARGEFILE64_SOURCE +# define _LARGEFILE64_SOURCE 1 +# undef _BSD_SOURCE +# define _BSD_SOURCE 1 +# undef _SVID_SOURCE +# define _SVID_SOURCE 1 +#endif + +/* If nothing (other than _GNU_SOURCE) is defined, + define _BSD_SOURCE and _SVID_SOURCE. */ +#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \ + !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \ + !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \ + !defined _BSD_SOURCE && !defined _SVID_SOURCE) +# define _BSD_SOURCE 1 +# define _SVID_SOURCE 1 +#endif + +/* This is to enable the ISO C99 extension. Also recognize the old macro + which was used prior to the standard acceptance. This macro will + eventually go away and the features enabled by default once the ISO C99 + standard is widely adopted. */ +#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) +# define __USE_ISOC99 1 +#endif + +/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2 + (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */ +#if (!defined __STRICT_ANSI__ && !defined _POSIX_SOURCE && \ + !defined _POSIX_C_SOURCE) +# define _POSIX_SOURCE 1 +# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 +# define _POSIX_C_SOURCE 2 +# else +# define _POSIX_C_SOURCE 199506L +# endif +#endif + +#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE +# define __USE_POSIX 1 +#endif + +#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE +# define __USE_POSIX2 1 +#endif + +#if (_POSIX_C_SOURCE - 0) >= 199309L +# define __USE_POSIX199309 1 +#endif + +#if (_POSIX_C_SOURCE - 0) >= 199506L +# define __USE_POSIX199506 1 +#endif + +#ifdef _XOPEN_SOURCE +# define __USE_XOPEN 1 +# if (_XOPEN_SOURCE - 0) >= 500 +# define __USE_XOPEN_EXTENDED 1 +# define __USE_UNIX98 1 +# undef _LARGEFILE_SOURCE +# define _LARGEFILE_SOURCE 1 +# if (_XOPEN_SOURCE - 0) >= 600 +# define __USE_XOPEN2K 1 +# undef __USE_ISOC99 +# define __USE_ISOC99 1 +# endif +# else +# ifdef _XOPEN_SOURCE_EXTENDED +# define __USE_XOPEN_EXTENDED 1 +# endif +# endif +#endif + +#ifdef _LARGEFILE_SOURCE +# define __USE_LARGEFILE 1 +#endif + +#ifdef _LARGEFILE64_SOURCE +# define __USE_LARGEFILE64 1 +#endif + +#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 +# define __USE_FILE_OFFSET64 1 +#endif + +#if defined _BSD_SOURCE || defined _SVID_SOURCE +# define __USE_MISC 1 +#endif + +#ifdef _BSD_SOURCE +# define __USE_BSD 1 +#endif + +#ifdef _SVID_SOURCE +# define __USE_SVID 1 +#endif + +#ifdef _GNU_SOURCE +# define __USE_GNU 1 +#endif + +#if defined _REENTRANT || defined _THREAD_SAFE +# define __USE_REENTRANT 1 +#endif + +/* We do support the IEC 559 math functionality, real and complex. */ +#define __STDC_IEC_559__ 1 +#define __STDC_IEC_559_COMPLEX__ 1 + +/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.0. */ +#define __STDC_ISO_10646__ 200009L /* Major and minor version number of the uClibc library package. Use these macros to test for features in specific releases. */ @@ -18,93 +262,67 @@ #if !defined _LIBC || defined __FORCE_GLIBC__ # define __GNU_LIBRARY__ 6 # define __GLIBC__ 2 -# define __GLIBC_MINOR__ 1 +# define __GLIBC_MINOR__ 2 #endif -/* Make a half-hearted attempt to accomodate non-gcc compilers */ -#ifndef __GNUC__ -#define __attribute(foo) /* Ignore */ -#endif - -/* Convenience macro to test the version of gcc. - * Use it like this: - * #if __GNUC_PREREQ (2,8) - * ... code requiring gcc 2.8 or later ... - * #endif - * Note - they won't work for gcc1, since the _MINOR macros - * were not defined then. */ +/* Convenience macros to test the versions of glibc and gcc. + Use them like this: + #if __GNUC_PREREQ (2,8) + ... code requiring gcc 2.8 or later ... + #endif + Note - they won't work for gcc1 or glibc1, since the _MINOR macros + were not defined then. */ #if defined __GNUC__ && defined __GNUC_MINOR__ -#define __GNUC_PREREQ(maj, min) \ +# define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else -#define __GNUC_PREREQ(maj,min) 0 +# define __GNUC_PREREQ(maj, min) 0 #endif -/* __restrict is known in EGCS 1.2 and above. */ -#if !defined __GNUC__ || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 92) -# define __restrict /* Ignore */ -#endif +#define __GLIBC_PREREQ(maj, min) \ + ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) -/* __extension__ is known in gcc 2.8 above. */ -#if !defined __GNUC__ || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) -# define __extension__ /* Ignore */ +/* This is here only because every header file already includes this one. */ +#ifndef __ASSEMBLER__ +#ifndef _SYS_CDEFS_H +# include <sys/cdefs.h> #endif -#ifdef __STDC__ +/* If we don't have __REDIRECT, prototypes will be missing if + __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ +# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT +# define __USE_LARGEFILE 1 +# define __USE_LARGEFILE64 1 +# endif -#define __P(x) x -#define __PMT(x) x -#ifndef __const -#define __const const -#endif +#endif /* !ASSEMBLER */ -/* Almost ansi */ -#if __STDC__ != 1 -#ifndef const -#define const -#endif -#define volatile +/* Decide whether we can define 'extern inline' functions in headers. */ +#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ + && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ +# define __USE_EXTERN_INLINES 1 #endif -#else /* K&R */ +/* This is here only because every header file already includes this one. */ +#if 0 +//#ifndef _LIBC +/* Get the definitions of all the appropriate `__stub_FUNCTION' symbols. + <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub + which will always return failure (and set errno to ENOSYS). -#define __P(x) () -#ifndef __const -#define __const -#endif -#ifndef const -#define const -#endif -#define volatile + We avoid including <gnu/stubs.h> when compiling the C library itself to + avoid a dependency loop. stubs.h depends on every object file. If + this #include were done for the library source code, then every object + file would depend on stubs.h. */ +# include <gnu/stubs.h> #endif -/* GNUish things */ -#define __CONSTVALUE -#define __CONSTVALUE2 - -#define __USE_BSD -#define __USE_MISC -#define __USE_POSIX -#define __USE_POSIX2 -#define __USE_XOPEN - -#undef __KERNEL_STRICT_NAMES -#ifndef _LOOSE_KERNEL_NAMES -# define __KERNEL_STRICT_NAMES -#endif - -#ifdef _GNU_SOURCE -# define __USE_GNU 1 -#endif - -#include <sys/cdefs.h> - +/* Load up the current set of uClibc supported features */ #define __need_uClibc_config_h #include <bits/uClibc_config.h> #undef __need_uClibc_config_h - /* Some nice features only work properly with ELF */ #if defined HAVE_ELF # define link_warning(symbol, msg) \ @@ -121,6 +339,4 @@ __asm__(".global alias\n.set alias,original"); #endif - -#endif - +#endif /* features.h */ diff --git a/include/fnmatch.h b/include/fnmatch.h index c89d0ee4b..c0fd6a920 100644 --- a/include/fnmatch.h +++ b/include/fnmatch.h @@ -1,47 +1,85 @@ -/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,96,97,98,99,2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. -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. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + 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 + Lesser General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with this library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _FNMATCH_H - #define _FNMATCH_H 1 -#include <features.h> +#ifdef __cplusplus +extern "C" { +#endif + +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ || !defined __P +# undef __P +# define __P(protos) protos +# endif +#else /* Not C++ or ANSI C. */ +# undef __P +# define __P(protos) () +/* We can get away without defining `const' here only because in this file + it is used only inside the prototype for `fnmatch', which is elided in + non-ANSI C where `const' is problematical. */ +#endif /* C++ or ANSI C. */ + +#ifndef const +# if (defined __STDC__ && __STDC__) || defined __cplusplus +# define __const const +# else +# define __const +# endif +#endif -__BEGIN_DECLS +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in <unistd.h>. */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD /* Bits set in the FLAGS argument to `fnmatch'. */ #define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ #define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ #define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ -#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE) -#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ -#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ -#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE +# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ +# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ #endif /* Value returned by `fnmatch' if STRING does not match PATTERN. */ #define FNM_NOMATCH 1 -/* Match STRING against the filename pattern PATTERN, +/* This value is returned if the implementation does not support + `fnmatch'. Since this is not the case here it will never be + returned but the conformance test suites still require the symbol + to be defined. */ +#ifdef _XOPEN_SOURCE +# define FNM_NOSYS (-1) +#endif + +/* Match NAME against the filename pattern PATTERN, returning zero if it matches, FNM_NOMATCH if not. */ -extern int fnmatch __P ((__const char *__pattern, __const char *__string, +extern int fnmatch __P ((__const char *__pattern, __const char *__name, int __flags)); -__END_DECLS +#ifdef __cplusplus +} +#endif #endif /* fnmatch.h */ diff --git a/include/fstab.h b/include/fstab.h index 274f23aae..24ecad7db 100644 --- a/include/fstab.h +++ b/include/fstab.h @@ -10,10 +10,6 @@ * 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. @@ -72,11 +68,11 @@ struct fstab __BEGIN_DECLS -extern struct fstab *getfsent __P ((void)); -extern struct fstab *getfsspec __P ((__const char *__name)); -extern struct fstab *getfsfile __P ((__const char *__name)); -extern int setfsent __P ((void)); -extern void endfsent __P ((void)); +extern struct fstab *getfsent (void) __THROW; +extern struct fstab *getfsspec (__const char *__name) __THROW; +extern struct fstab *getfsfile (__const char *__name) __THROW; +extern int setfsent (void) __THROW; +extern void endfsent (void) __THROW; __END_DECLS diff --git a/include/getopt.h b/include/getopt.h index 725d9cbd4..a1b8dd665 100644 --- a/include/getopt.h +++ b/include/getopt.h @@ -1,27 +1,38 @@ /* Declarations for getopt. - Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. -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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -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 + Lesser General Public License for more details. -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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _GETOPT_H -#define _GETOPT_H 1 -#include <features.h> +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif + +/* If __GNU_LIBRARY__ is not already defined, either we are being used + standalone, or this is the first header included in the source file. + If we are being used with glibc, we need to include <features.h>, but + that does not exist if we are standalone. So: if __GNU_LIBRARY__ is + not defined, include <ctype.h>, which will pull in <features.h> for us + if it's from glibc. (Why ctype.h? It's guaranteed to exist and it + doesn't flood the namespace with stuff the way some other headers do.) */ +#if !defined __GNU_LIBRARY__ +# include <ctype.h> +#endif #ifdef __cplusplus extern "C" { @@ -41,7 +52,7 @@ extern char *optarg; On entry to `getopt', zero means this is the first call; initialize. - When `getopt' returns EOF, this is the index of the first of the + When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next @@ -58,6 +69,7 @@ extern int opterr; extern int optopt; +#ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is @@ -81,7 +93,11 @@ extern int optopt; struct option { +# if (defined __STDC__ && __STDC__) || defined __cplusplus const char *name; +# else + char *name; +# endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; @@ -91,19 +107,74 @@ struct option /* Names for the values of the `has_arg' field of `struct option'. */ -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -extern int getopt __P((int argc, char *const *argv, const char *shortopts)); -extern int getopt_long __P((int argc, char *const *argv, const char *shortopts, - const struct option *longopts, int *longind)); -extern int getopt_long_only __P((int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind)); +# define no_argument 0 +# define required_argument 1 +# define optional_argument 2 +#endif /* need getopt */ + + +/* Get definitions and prototypes for functions to process the + arguments in ARGV (ARGC of them, minus the program name) for + options given in OPTS. + + Return the option character from OPTS just read. Return -1 when + there are no more options. For unrecognized options, or options + missing arguments, `optopt' is set to the option letter, and '?' is + returned. + + The OPTS string is a list of characters which are recognized option + letters, optionally followed by colons, specifying that that letter + takes an argument, to be placed in `optarg'. + + If a letter in OPTS is followed by two colons, its argument is + optional. This behavior is specific to the GNU `getopt'. + + The argument `--' causes premature termination of argument + scanning, explicitly telling `getopt' that there are no more + options. + + If OPTS begins with `--', then non-option arguments are treated as + arguments to the option '\0'. This behavior is specific to the GNU + `getopt'. */ + +#if (defined __STDC__ && __STDC__) || defined __cplusplus +# ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int __argc, char *const *__argv, const char *__shortopts); +# else /* not __GNU_LIBRARY__ */ +extern int getopt (); +# endif /* __GNU_LIBRARY__ */ + +# ifndef __need_getopt +extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, + const struct option *__longopts, int *__longind); +extern int getopt_long_only (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only); +# endif +#else /* not __STDC__ */ +extern int getopt (); +# ifndef __need_getopt +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +# endif +#endif /* __STDC__ */ #ifdef __cplusplus } #endif -#endif /* _GETOPT_H */ +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/include/glob.h b/include/glob.h index c4ad24f17..6bb7c7e8c 100644 --- a/include/glob.h +++ b/include/glob.h @@ -1,19 +1,20 @@ -/* Copyright (C) 1991, 92, 95, 96, 97, 98, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,95,96,97,98,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _GLOB_H #define _GLOB_H 1 @@ -106,7 +107,9 @@ typedef unsigned long int __size_t; /* Structure describing a globbing run. */ #if !defined _AMIGA && !defined VMS /* Buggy compiler. */ +# ifdef _GNU_SOURCE struct stat; +# endif #endif typedef struct { @@ -118,14 +121,26 @@ typedef struct /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ void (*gl_closedir) __PMT ((void *)); +#ifdef _GNU_SOURCE struct dirent *(*gl_readdir) __PMT ((void *)); +#else + void *(*gl_readdir) __PMT ((void *)); +#endif __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat *)); - int (*gl_stat) __PMT ((__const char *, struct stat *)); +#ifdef _GNU_SOURCE + int (*gl_lstat) __PMT ((__const char *__restrict, + struct stat *__restrict)); + int (*gl_stat) __PMT ((__const char *__restrict, struct stat *__restrict)); +#else + int (*gl_lstat) __PMT ((__const char *__restrict, void *__restrict)); + int (*gl_stat) __PMT ((__const char *__restrict, void *__restrict)); +#endif } glob_t; #ifdef _LARGEFILE64_SOURCE +# ifdef _GNU_SOURCE struct stat64; +# endif typedef struct { __size_t gl_pathc; @@ -136,13 +151,29 @@ typedef struct /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ void (*gl_closedir) __PMT ((void *)); +# ifdef _GNU_SOURCE struct dirent64 *(*gl_readdir) __PMT ((void *)); +# else + void *(*gl_readdir) __PMT ((void *)); +# endif __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); - int (*gl_stat) __PMT ((__const char *, struct stat64 *)); +# ifdef _GNU_SOURCE + int (*gl_lstat) __PMT ((__const char *__restrict, + struct stat64 *__restrict)); + int (*gl_stat) __PMT ((__const char *__restrict, + struct stat64 *__restrict)); +# else + int (*gl_lstat) __PMT ((__const char *__restrict, void *__restrict)); + int (*gl_stat) __PMT ((__const char *__restrict, void *__restrict)); +# endif } glob64_t; #endif +#if _FILE_OFFSET_BITS == 64 && __GNUC__ < 2 +# define glob glob64 +# define globfree globfree64 +#endif + /* Do glob searching for PATTERN, placing results in PGLOB. The bits defined above may be set in FLAGS. If a directory cannot be opened or read and ERRFUNC is not nil, @@ -151,30 +182,25 @@ typedef struct `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ -#if _FILE_OFFSET_BITS != 64 -extern int glob __P ((__const char *__pattern, int __flags, +#if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 +extern int glob __P ((__const char *__restrict __pattern, int __flags, int (*__errfunc) (__const char *, int), - glob_t *__pglob)); + glob_t *__restrict __pglob)); /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree __P ((glob_t *__pglob)); #else -# if __GNUC__ >= 2 -extern int glob __P ((__const char *__pattern, int __flags, +extern int glob __P ((__const char *__restrict __pattern, int __flags, int (*__errfunc) (__const char *, int), - glob_t *__pglob)) __asm__ ("glob64"); + glob_t *__restrict __pglob)) __asm__ ("glob64"); extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); -# else -# define glob glob64 -# define globfree globfree64 -# endif #endif #ifdef _LARGEFILE64_SOURCE -extern int glob64 __P ((__const char *__pattern, int __flags, +extern int glob64 __P ((__const char *__restrict __pattern, int __flags, int (*__errfunc) (__const char *, int), - glob64_t *__pglob)); + glob64_t *__restrict __pglob)); extern void globfree64 __P ((glob64_t *__pglob)); #endif diff --git a/include/gnu-versions.h b/include/gnu-versions.h index f642f6aee..59e617c4b 100644 --- a/include/gnu-versions.h +++ b/include/gnu-versions.h @@ -1,29 +1,53 @@ -/* Header to ignore some special GNU libc interfaces not provided - * by uClibc. */ +/* Header with interface version macros for library pieces copied elsewhere. + Copyright (C) 1995, 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _GNU_VERSIONS_H #define _GNU_VERSIONS_H 1 -/* This file exists to avoid uClibc getting into trouble these macros - such as the following: - - #define OBSTACK_INTERFACE_VERSION 1 - #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 - #include <gnu-versions.h> - #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION - #define ELIDE_CODE - #endif - #endif - - By defining bogus interface versions, I believe we can safely get - past such things while continuing to lie and define __GNU_LIBRARY__, - thereby getting better compatibility with the majority of the code - written for Linux. */ - -#define _GNU_OBSTACK_INTERFACE_VERSION -1 /* vs malloc/obstack.c */ -#define _GNU_REGEX_INTERFACE_VERSION -1 /* vs posix/regex.c */ -#define _GNU_GLOB_INTERFACE_VERSION -1 /* vs posix/glob.c */ -#define _GNU_GETOPT_INTERFACE_VERSION -1 /* vs posix/getopt.c and +/* This file exists to define these few macros. Each specifies a version + number associated with the library interface of a piece of the C library + which is also distributed with other GNU packages. These pieces are + both part of the GNU C library and also distributed with other GNU + packages so those packages may use their facilities on systems lacking + the GNU C library. The source files for each piece surround all their + code with `#ifndef ELIDE_CODE' after defining it with this: + + #define OBSTACK_INTERFACE_VERSION 1 + #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 + #include <gnu-versions.h> + #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION + #define ELIDE_CODE + #endif + #endif + + This allows those one to avoid compiling those files when part of a GNU + package not libc, on a system using a GNU C library that supports the + same interface. + + Please preserve the format of the comments after each macro. And + remember, if any of these versions change, the libc.so major version + number must change too (so avoid it)! */ + +#define _GNU_OBSTACK_INTERFACE_VERSION 1 /* vs malloc/obstack.c */ +#define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */ +#define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */ +#define _GNU_GETOPT_INTERFACE_VERSION 2 /* vs posix/getopt.c and posix/getopt1.c */ #endif /* gnu-versions.h */ diff --git a/include/grp.h b/include/grp.h index c0db17e44..33247718a 100644 --- a/include/grp.h +++ b/include/grp.h @@ -1,41 +1,154 @@ -#ifndef __GRP_H -#define __GRP_H +/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * POSIX Standard: 9.2.1 Group Database Access <grp.h> + */ + +#ifndef _GRP_H +#define _GRP_H 1 -#include <sys/types.h> #include <features.h> -#include <stdio.h> __BEGIN_DECLS -/* The group structure */ +#include <bits/types.h> + +#define __need_size_t +#include <stddef.h> + + +/* For the Single Unix specification we must define this type here. */ +#if defined __USE_XOPEN && !defined __gid_t_defined +typedef __gid_t gid_t; +# define __gid_t_defined +#endif + +/* 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. */ -}; + { + 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)); +#if defined __USE_SVID || defined __USE_GNU +# define __need_FILE +# include <stdio.h> +#endif -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)); +#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED +/* Rewind the group-file stream. */ +extern void setgrent (void) __THROW; +/* Close the group-file stream. */ +extern void endgrent (void) __THROW; -#ifdef _LIBC -extern struct group * __getgrent __P ((int grp_fd)); +/* Read an entry from the group-file stream, opening it if necessary. */ +extern struct group *getgrent (void) __THROW; #endif -__END_DECLS +#ifdef __USE_SVID +/* Read a group entry from STREAM. */ +extern struct group *fgetgrent (FILE *__stream) __THROW; +#endif + +#ifdef __USE_GNU +/* Write the given entry onto the given stream. */ +extern int putgrent (__const struct group *__restrict __p, + FILE *__restrict __f) __THROW; +#endif + +/* Search for an entry with a matching group ID. */ +extern struct group *getgrgid (__gid_t __gid) __THROW; -#endif /* _GRP_H */ +/* Search for an entry with a matching group name. */ +extern struct group *getgrnam (__const char *__name) __THROW; +#if defined __USE_POSIX || defined __USE_MISC +# ifdef __USE_MISC +/* Reasonable value for the buffer sized used in the reentrant + functions below. But better use `sysconf'. */ +# define NSS_BUFLEN_GROUP 1024 +# endif + +/* Reentrant versions of some of the functions above. + + PLEASE NOTE: the `getgrent_r' function is not (yet) standardized. + The interface may change in later versions of this library. But + the interface is designed following the principals used for the + other reentrant functions so the chances are good this is what the + POSIX people would choose. */ + +# ifdef __USE_GNU +extern int getgrent_r (struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; +# endif + +/* Search for an entry with a matching group ID. */ +extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; + +/* Search for an entry with a matching group name. */ +extern int getgrnam_r (__const char *__restrict __name, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; + +# ifdef __USE_SVID +/* Read a group entry from STREAM. This function is not standardized + an probably never will. */ +extern int fgetgrent_r (FILE *__restrict __stream, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result) __THROW; +# endif + +#endif /* POSIX or reentrant */ + + +#ifdef __USE_BSD + +# define __need_size_t +# include <stddef.h> + +/* Set the group set for the current user to GROUPS (N of them). */ +extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW; + +/* Store at most *NGROUPS members of the group set for USER into + *GROUPS. Also include GROUP. The actual number of groups found is + returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */ +extern int getgrouplist (__const char *__user, __gid_t __group, + __gid_t *__groups, int *__ngroups) __THROW; + +/* Initialize the group set for the current user + by reading the group database and using all groups + of which USER is a member. Also include GROUP. */ +extern int initgroups (__const char *__user, __gid_t __group) __THROW; + +#endif /* Use BSD. */ + +__END_DECLS +#endif /* grp.h */ diff --git a/include/langinfo.h b/include/langinfo.h index 3844db2e4..21d16cd90 100644 --- a/include/langinfo.h +++ b/include/langinfo.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _LANGINFO_H #define _LANGINFO_H 1 @@ -572,10 +572,11 @@ enum The string returned will not change until `setlocale' is called; it is usually in read-only memory and cannot be modified. */ -extern char *nl_langinfo (nl_item __item); +extern char *nl_langinfo (nl_item __item) __THROW; -#ifdef __USE_GNU +#if 0 +//#ifdef __USE_GNU /* This interface is for the extended locale model. See <locale.h> for more information. */ diff --git a/include/limits.h b/include/limits.h index 39ff69778..45cd6f253 100644 --- a/include/limits.h +++ b/include/limits.h @@ -1,23 +1,23 @@ -/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ISO C Standard: 4.14/2.2.4.2 Limits of integral types <limits.h> + * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h> */ #ifndef _LIBC_LIMITS_H_ @@ -25,32 +25,25 @@ #include <features.h> -#ifdef __USE_POSIX -/* POSIX adds things to <limits.h>. */ -# include <bits/posix1_lim.h> -#endif - -#ifdef __USE_POSIX2 -# include <bits/posix2_lim.h> -#endif - -#ifdef __USE_XOPEN -# include <bits/xopen_lim.h> -#endif - /* Maximum length of any multibyte character in any locale. We define this value here since the gcc header does not define the correct value. */ -#define MB_LEN_MAX 6 +#define MB_LEN_MAX 16 +/* If we are not using GNU CC we have to define all the symbols ourself. + Otherwise use gcc's definitions (see below). */ +#if !defined __GNUC__ || __GNUC__ < 2 + /* We only protect from multiple inclusion here, because all the other #include's protect themselves, and in GCC 2 we may #include_next through multiple copies of this file before we get to GCC's. */ # ifndef _LIMITS_H # define _LIMITS_H 1 +#include <bits/wordsize.h> + /* We don't have #include_next. Define ANSI <limits.h> for standard 32-bit words. */ @@ -88,14 +81,10 @@ # 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 +# define UINT_MAX 4294967295U /* Minimum and maximum values a `signed long int' can hold. */ -# ifdef __alpha__ +# if __WORDSIZE == 64 # define LONG_MAX 9223372036854775807L # else # define LONG_MAX 2147483647L @@ -103,17 +92,25 @@ # define LONG_MIN (-LONG_MAX - 1L) /* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */ -# ifdef __alpha__ +# if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # else -# ifdef __STDC__ -# define ULONG_MAX 4294967295UL -# else -# define ULONG_MAX 4294967295L -# endif +# define ULONG_MAX 4294967295UL # endif +# ifdef __USE_ISOC99 + +/* Minimum and maximum values a `signed long long int' can hold. */ +# define LLONG_MAX 9223372036854775807LL +# define LLONG_MIN (-LLONG_MAX - 1LL) + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0.) */ +# define ULLONG_MAX 18446744073709551615ULL + +# endif /* ISO C99 */ + # endif /* limits.h */ +#endif /* GCC 2. */ #endif /* !_LIBC_LIMITS_H_ */ @@ -125,4 +122,32 @@ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ # include_next <limits.h> + +/* The <limits.h> files in some gcc versions don't define LLONG_MIN, + LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for + ages are available. */ +# ifdef __USE_ISOC99 +# ifndef LLONG_MIN +# define LLONG_MIN LONG_LONG_MIN +# endif +# ifndef LLONG_MAX +# define LLONG_MAX LONG_LONG_MAX +# endif +# ifndef ULLONG_MAX +# define ULLONG_MAX ULONG_LONG_MAX +# endif +# endif +#endif + +#ifdef __USE_POSIX +/* POSIX adds things to <limits.h>. */ +# include <bits/posix1_lim.h> +#endif + +#ifdef __USE_POSIX2 +# include <bits/posix2_lim.h> +#endif + +#ifdef __USE_XOPEN +# include <bits/xopen_lim.h> #endif diff --git a/include/link.h b/include/link.h index 4680dd914..f8e7f629d 100644 --- a/include/link.h +++ b/include/link.h @@ -1,22 +1,22 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _LINK_H #define _LINK_H 1 @@ -92,4 +92,24 @@ struct link_map struct link_map *l_next, *l_prev; /* Chain of loaded objects. */ }; +#ifdef __USE_GNU + +struct dl_phdr_info + { + ElfW(Addr) dlpi_addr; + const char *dlpi_name; + const ElfW(Phdr) *dlpi_phdr; + ElfW(Half) dlpi_phnum; + }; + +__BEGIN_DECLS + +extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, + size_t size, void *data), + void *data) __THROW; + +__END_DECLS + +#endif + #endif /* link.h */ diff --git a/include/locale.h b/include/locale.h index 00e75d5b5..b3736dd11 100644 --- a/include/locale.h +++ b/include/locale.h @@ -6,6 +6,8 @@ #include <features.h> +__BEGIN_DECLS + #ifndef NULL #ifdef __cplusplus #define NULL 0 @@ -70,12 +72,12 @@ struct lconv char n_sign_posn; }; -__BEGIN_DECLS -extern char *setlocale(int __category, __const char *__locale); +/* Set and/or return the current locale. */ +extern char *setlocale (int __category, __const char *__locale) __THROW; /* Return the numeric/monetary information for the current locale. */ -extern struct lconv *localeconv __P ((void)); +extern struct lconv *localeconv (void) __THROW; __END_DECLS diff --git a/include/malloc.h b/include/malloc.h index 7ef63d8c7..8accd6469 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -1,18 +1,243 @@ +/* Prototypes and definition for malloc implementation. + Copyright (C) 1996, 1997, 1999, 2000 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _MALLOC_H +#define _MALLOC_H 1 -#ifndef __MALLOC_H -#define __MALLOC_H #include <features.h> -#include <sys/types.h> -__BEGIN_DECLS +/* + `ptmalloc', a malloc implementation for multiple threads without + lock contention, by Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>. + See the files `ptmalloc.c' or `COPYRIGHT' for copying conditions. + + VERSION 2.6.4-pt Wed Dec 4 00:35:54 MET 1996 + + This work is mainly derived from malloc-2.6.4 by Doug Lea + <dl@cs.oswego.edu>, which is available from: + + ftp://g.oswego.edu/pub/misc/malloc.c + + This trimmed-down header file only provides function prototypes and + the exported data structures. For more detailed function + descriptions and compile-time options, see the source file + `ptmalloc.c'. +*/ + +#if defined(__STDC__) || defined (__cplusplus) +# include <stddef.h> +# define __malloc_ptr_t void * +#else +# undef size_t +# define size_t unsigned int +# undef ptrdiff_t +# define ptrdiff_t int +# define __malloc_ptr_t char * +#endif + +#ifdef _LIBC +/* Used by GNU libc internals. */ +# define __malloc_size_t size_t +# define __malloc_ptrdiff_t ptrdiff_t +#elif !defined __attribute_malloc__ +# define __attribute_malloc__ +#endif + +#ifdef __GNUC__ + +/* GCC can always grok prototypes. For C++ programs we add throw() + to help it optimize the function calls. But this works only with + gcc 2.8.x and egcs. */ +# if defined __cplusplus && (__GNUC__ >= 3 || __GNUC_MINOR__ >= 8) +# define __THROW throw () +# else +# define __THROW +# endif +# define __MALLOC_P(args) args __THROW +/* This macro will be used for functions which might take C++ callback + functions. */ +# define __MALLOC_PMT(args) args -extern void free __P((void *)); -extern void *malloc __P((size_t)); -extern void *realloc __P((void *, size_t)); -extern void *alloca __P((size_t)); +#else /* Not GCC. */ -extern void *(*__alloca_alloc) __P((size_t)); +# define __THROW -__END_DECLS +# if (defined __STDC__ && __STDC__) || defined __cplusplus +# define __MALLOC_P(args) args +# define __MALLOC_PMT(args) args + +# else /* Not ANSI C or C++. */ + +# define __MALLOC_P(args) () /* No prototypes. */ +# define __MALLOC_PMT(args) () + +# endif /* ANSI C or C++. */ + +#endif /* GCC. */ + +#ifndef NULL +# ifdef __cplusplus +# define NULL 0 +# else +# define NULL ((__malloc_ptr_t) 0) +# endif +#endif + +#ifdef __cplusplus +extern "C" { #endif + +/* Nonzero if the malloc is already initialized. */ +#ifdef _LIBC +/* In the GNU libc we rename the global variable + `__malloc_initialized' to `__libc_malloc_initialized'. */ +# define __malloc_initialized __libc_malloc_initialized +#endif +extern int __malloc_initialized; + +/* Initialize global configuration. Not needed with GNU libc. */ +#ifndef __GLIBC__ +extern void ptmalloc_init __MALLOC_P ((void)); +#endif + +/* Allocate SIZE bytes of memory. */ +extern __malloc_ptr_t malloc __MALLOC_P ((size_t __size)) __attribute_malloc__; + +/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ +extern __malloc_ptr_t calloc __MALLOC_P ((size_t __nmemb, size_t __size)) + __attribute_malloc__; + +/* Re-allocate the previously allocated block in __ptr, making the new + block SIZE bytes long. */ +extern __malloc_ptr_t realloc __MALLOC_P ((__malloc_ptr_t __ptr, + size_t __size)) + __attribute_malloc__; + +/* Free a block allocated by `malloc', `realloc' or `calloc'. */ +extern void free __MALLOC_P ((__malloc_ptr_t __ptr)); + +/* Free a block allocated by `calloc'. */ +extern void cfree __MALLOC_P ((__malloc_ptr_t __ptr)); + +/* Allocate SIZE bytes allocated to ALIGNMENT bytes. */ +extern __malloc_ptr_t memalign __MALLOC_P ((size_t __alignment, size_t __size)); + +/* Allocate SIZE bytes on a page boundary. */ +extern __malloc_ptr_t valloc __MALLOC_P ((size_t __size)) __attribute_malloc__; + +/* Equivalent to valloc(minimum-page-that-holds(n)), that is, round up + __size to nearest pagesize. */ +extern __malloc_ptr_t pvalloc __MALLOC_P ((size_t __size)) + __attribute_malloc__; + +/* Underlying allocation function; successive calls should return + contiguous pieces of memory. */ +extern __malloc_ptr_t (*__morecore) __MALLOC_PMT ((ptrdiff_t __size)); + +/* Default value of `__morecore'. */ +extern __malloc_ptr_t __default_morecore __MALLOC_P ((ptrdiff_t __size)) + __attribute_malloc__; + +/* SVID2/XPG mallinfo structure */ +struct mallinfo { + int arena; /* total space allocated from system */ + int ordblks; /* number of non-inuse chunks */ + int smblks; /* unused -- always zero */ + int hblks; /* number of mmapped regions */ + int hblkhd; /* total space in mmapped regions */ + int usmblks; /* unused -- always zero */ + int fsmblks; /* unused -- always zero */ + int uordblks; /* total allocated space */ + int fordblks; /* total non-inuse space */ + int keepcost; /* top-most, releasable (via malloc_trim) space */ +}; + +/* Returns a copy of the updated current mallinfo. */ +extern struct mallinfo mallinfo __MALLOC_P ((void)); + +/* SVID2/XPG mallopt options */ +#ifndef M_MXFAST +# define M_MXFAST 1 /* UNUSED in this malloc */ +#endif +#ifndef M_NLBLKS +# define M_NLBLKS 2 /* UNUSED in this malloc */ +#endif +#ifndef M_GRAIN +# define M_GRAIN 3 /* UNUSED in this malloc */ +#endif +#ifndef M_KEEP +# define M_KEEP 4 /* UNUSED in this malloc */ +#endif + +/* mallopt options that actually do something */ +#define M_TRIM_THRESHOLD -1 +#define M_TOP_PAD -2 +#define M_MMAP_THRESHOLD -3 +#define M_MMAP_MAX -4 +#define M_CHECK_ACTION -5 + +/* General SVID/XPG interface to tunable parameters. */ +extern int mallopt __MALLOC_P ((int __param, int __val)); + +/* Release all but __pad bytes of freed top-most memory back to the + system. Return 1 if successful, else 0. */ +extern int malloc_trim __MALLOC_P ((size_t __pad)); + +/* Report the number of usable allocated bytes associated with allocated + chunk __ptr. */ +extern size_t malloc_usable_size __MALLOC_P ((__malloc_ptr_t __ptr)); + +/* Prints brief summary statistics on stderr. */ +extern void malloc_stats __MALLOC_P ((void)); + +/* Record the state of all malloc variables in an opaque data structure. */ +extern __malloc_ptr_t malloc_get_state __MALLOC_P ((void)); + +/* Restore the state of all malloc variables from data obtained with + malloc_get_state(). */ +extern int malloc_set_state __MALLOC_P ((__malloc_ptr_t __ptr)); + +#if defined __GLIBC__ || defined MALLOC_HOOKS +/* Called once when malloc is initialized; redefining this variable in + the application provides the preferred way to set up the hook + pointers. */ +extern void (*__malloc_initialize_hook) __MALLOC_PMT ((void)); +/* Hooks for debugging and user-defined versions. */ +extern void (*__free_hook) __MALLOC_PMT ((__malloc_ptr_t __ptr, + __const __malloc_ptr_t)); +extern __malloc_ptr_t (*__malloc_hook) __MALLOC_PMT ((size_t __size, + __const __malloc_ptr_t)); +extern __malloc_ptr_t (*__realloc_hook) __MALLOC_PMT ((__malloc_ptr_t __ptr, + size_t __size, + __const __malloc_ptr_t)); +extern __malloc_ptr_t (*__memalign_hook) __MALLOC_PMT ((size_t __alignment, + size_t __size, + __const __malloc_ptr_t)); +extern void (*__after_morecore_hook) __MALLOC_PMT ((void)); + +/* Activate a standard set of debugging hooks. */ +extern void __malloc_check_init __MALLOC_P ((void)); +#endif + +#ifdef __cplusplus +}; /* end of extern "C" */ +#endif + +#endif /* malloc.h */ diff --git a/include/memory.h b/include/memory.h index 3b2f59002..743fa6a95 100644 --- a/include/memory.h +++ b/include/memory.h @@ -1 +1,34 @@ -#include <string.h> +/* Copyright (C) 1991, 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * SVID + */ + +#ifndef _MEMORY_H +#define _MEMORY_H 1 + +#include <features.h> + + +#ifndef _STRING_H +# include <string.h> +#endif /* string.h */ + + +#endif /* memory.h */ diff --git a/include/mntent.h b/include/mntent.h index b4c6a8f2d..a82e9539a 100644 --- a/include/mntent.h +++ b/include/mntent.h @@ -1,110 +1,98 @@ -#ifndef _MNTENT_H -#define _MNTENT_H +/* Utilities for reading/writing fstab, mtab, etc. + Copyright (C) 1995, 1996, 1997, 1998, 1999 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _MNTENT_H +#define _MNTENT_H 1 #include <features.h> +#define __need_FILE +#include <stdio.h> +#include <paths.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 +/* File listing canonical interesting mount points. */ +#define MNTTAB _PATH_MNTTAB /* Deprecated alias. */ -struct mntent{ - char *mnt_fsname; - char *mnt_dir; - char *mnt_type; - char *mnt_opts; - int mnt_freq; - int mnt_passno; -}; +/* File listing currently active mount points. */ +#define MOUNTED _PATH_MOUNTED /* Deprecated alias. */ -__END_DECLS -#define __need_file -#include <stdio.h> +/* General filesystem types. */ +#define MNTTYPE_IGNORE "ignore" /* Ignore this entry. */ +#define MNTTYPE_NFS "nfs" /* Network file system. */ +#define MNTTYPE_SWAP "swap" /* Swap device. */ + + +/* Generic mount options. */ +#define MNTOPT_DEFAULTS "defaults" /* Use all default options. */ +#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" /* Do not auto mount. */ + __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)); +/* Structure describing a mount table entry. */ +struct mntent + { + char *mnt_fsname; /* Device or server for filesystem. */ + char *mnt_dir; /* Directory mounted on. */ + char *mnt_type; /* Type of filesystem: ufs, nfs, etc. */ + char *mnt_opts; /* Comma-separated options for fs. */ + int mnt_freq; /* Dump frequency (in days). */ + int mnt_passno; /* Pass number for `fsck'. */ + }; + + +/* Prepare to begin reading and/or writing mount table entries from the + beginning of FILE. MODE is as for `fopen'. */ +extern FILE *setmntent (__const char *__file, __const char *__mode) __THROW; + +/* Read one mount table entry from STREAM. Returns a pointer to storage + reused on the next call, or null for EOF or error (use feof/ferror to + check). */ +extern struct mntent *getmntent (FILE *__stream) __THROW; + +#ifdef __USE_MISC +/* Reentrant version of the above function. */ +extern struct mntent *getmntent_r (FILE *__restrict __stream, + struct mntent *__restrict __result, + char *__restrict __buffer, + int __bufsize) __THROW; +#endif + +/* Write the mount table entry described by MNT to STREAM. + Return zero on success, nonzero on failure. */ +extern int addmntent (FILE *__restrict __stream, + __const struct mntent *__restrict __mnt) __THROW; + +/* Close a stream opened with `setmntent'. */ +extern int endmntent (FILE *__stream) __THROW; + +/* Search MNT->mnt_opts for an option matching OPT. + Returns the address of the substring, or null if none found. */ +extern char *hasmntopt (__const struct mntent *__mnt, + __const char *__opt) __THROW; + __END_DECLS -#endif /* _MNTENT_H */ +#endif /* mntent.h */ diff --git a/include/net/ethernet.h b/include/net/ethernet.h index c8093bc5a..ae7b78460 100644 --- a/include/net/ethernet.h +++ b/include/net/ethernet.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Based on the FreeBSD version of this file. Curiously, that file lacks a copyright in the header. */ diff --git a/include/net/if.h b/include/net/if.h index 3591dded7..b10245f45 100644 --- a/include/net/if.h +++ b/include/net/if.h @@ -1,67 +1,82 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* net/if.h -- declarations for inquiring about network interfaces + Copyright (C) 1997,98,99,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NET_IF_H - #define _NET_IF_H 1 + #include <features.h> -#include <sys/types.h> -#include <sys/socket.h> +#ifdef __USE_MISC +# include <sys/types.h> +# include <sys/socket.h> +#endif + + +/* Length of interface name. */ +#define IF_NAMESIZE 16 + +struct if_nameindex + { + unsigned int if_index; /* 1, 2, ... */ + char *if_name; /* null terminated name: "eth0", ... */ + }; + +#ifdef __USE_MISC /* Standard interface flags. */ enum { IFF_UP = 0x1, /* Interface is up. */ -#define IFF_UP IFF_UP +# define IFF_UP IFF_UP IFF_BROADCAST = 0x2, /* Broadcast address valid. */ -#define IFF_BROADCAST IFF_BROADCAST +# define IFF_BROADCAST IFF_BROADCAST IFF_DEBUG = 0x4, /* Turn on debugging. */ -#define IFF_DEBUG IFF_DEBUG +# define IFF_DEBUG IFF_DEBUG IFF_LOOPBACK = 0x8, /* Is a loopback net. */ -#define IFF_LOOPBACK IFF_LOOPBACK +# define IFF_LOOPBACK IFF_LOOPBACK IFF_POINTOPOINT = 0x10, /* Interface is point-to-point link. */ -#define IFF_POINTOPOINT IFF_POINTOPOINT +# define IFF_POINTOPOINT IFF_POINTOPOINT IFF_NOTRAILERS = 0x20, /* Avoid use of trailers. */ -#define IFF_NOTRAILERS IFF_NOTRAILERS +# define IFF_NOTRAILERS IFF_NOTRAILERS IFF_RUNNING = 0x40, /* Resources allocated. */ -#define IFF_RUNNING IFF_RUNNING +# define IFF_RUNNING IFF_RUNNING IFF_NOARP = 0x80, /* No address resolution protocol. */ -#define IFF_NOARP IFF_NOARP +# define IFF_NOARP IFF_NOARP IFF_PROMISC = 0x100, /* Receive all packets. */ -#define IFF_PROMISC IFF_PROMISC +# define IFF_PROMISC IFF_PROMISC /* Not supported */ IFF_ALLMULTI = 0x200, /* Receive all multicast packets. */ -#define IFF_ALLMULTI IFF_ALLMULTI +# define IFF_ALLMULTI IFF_ALLMULTI IFF_MASTER = 0x400, /* Master of a load balancer. */ -#define IFF_MASTER IFF_MASTER +# define IFF_MASTER IFF_MASTER IFF_SLAVE = 0x800, /* Slave of a load balancer. */ -#define IFF_SLAVE IFF_SLAVE +# define IFF_SLAVE IFF_SLAVE IFF_MULTICAST = 0x1000, /* Supports multicast. */ -#define IFF_MULTICAST IFF_MULTICAST +# define IFF_MULTICAST IFF_MULTICAST IFF_PORTSEL = 0x2000, /* Can set media type. */ -#define IFF_PORTSEL IFF_PORTSEL +# define IFF_PORTSEL IFF_PORTSEL IFF_AUTOMEDIA = 0x4000 /* Auto media select active. */ -#define IFF_AUTOMEDIA IFF_AUTOMEDIA +# define IFF_AUTOMEDIA IFF_AUTOMEDIA }; /* The ifaddr structure contains information about one address of an @@ -81,8 +96,8 @@ struct ifaddr struct ifaddr *ifa_next; /* Next address for interface. */ }; -#define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */ -#define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of link */ +# define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */ +# define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of link */ /* Device mapping structure. I'd just gone off and designed a beautiful scheme using only loadable modules with arguments for @@ -109,8 +124,8 @@ struct ifmap struct ifreq { -#define IFHWADDRLEN 6 -#define IFNAMSIZ 16 +# define IFHWADDRLEN 6 +# define IFNAMSIZ IF_NAMESIZE union { char ifrn_name[IFNAMSIZ]; /* Interface name, e.g. "en0". */ @@ -128,25 +143,29 @@ struct ifreq int ifru_mtu; struct ifmap ifru_map; char ifru_slave[IFNAMSIZ]; /* Just fits the size */ + char ifru_newname[IFNAMSIZ]; __caddr_t ifru_data; } ifr_ifru; }; - -#define ifr_name ifr_ifrn.ifrn_name /* interface name */ -#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ -#define ifr_addr ifr_ifru.ifru_addr /* address */ -#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */ -#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ -#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */ -#define ifr_flags ifr_ifru.ifru_flags /* flags */ -#define ifr_metric ifr_ifru.ifru_ivalue /* metric */ -#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ -#define ifr_map ifr_ifru.ifru_map /* device map */ -#define ifr_slave ifr_ifru.ifru_slave /* slave device */ -#define ifr_data ifr_ifru.ifru_data /* for use by interface */ -#define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */ -#define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */ -#define ifr_qlen ifr_ifru.ifru_ivalue /* queue length */ +# define ifr_name ifr_ifrn.ifrn_name /* interface name */ +# define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ +# define ifr_addr ifr_ifru.ifru_addr /* address */ +# define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */ +# define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ +# define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */ +# define ifr_flags ifr_ifru.ifru_flags /* flags */ +# define ifr_metric ifr_ifru.ifru_ivalue /* metric */ +# define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ +# define ifr_map ifr_ifru.ifru_map /* device map */ +# define ifr_slave ifr_ifru.ifru_slave /* slave device */ +# define ifr_data ifr_ifru.ifru_data /* for use by interface */ +# define ifr_ifindex ifr_ifru.ifru_ivalue /* interface index */ +# define ifr_bandwidth ifr_ifru.ifru_ivalue /* link bandwidth */ +# define ifr_qlen ifr_ifru.ifru_ivalue /* queue length */ +# define ifr_newname ifr_ifru.ifru_newname /* New name */ +# define _IOT_ifreq _IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0) +# define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0) +# define _IOT_ifreq_int _IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0) /* Structure used in SIOCGIFCONF request. Used to retrieve interface @@ -162,29 +181,22 @@ struct ifconf struct ifreq *ifcu_req; } ifc_ifcu; }; -#define ifc_buf ifc_ifcu.ifcu_buf /* Buffer address. */ -#define ifc_req ifc_ifcu.ifcu_req /* Array of structures. */ +# define ifc_buf ifc_ifcu.ifcu_buf /* Buffer address. */ +# define ifc_req ifc_ifcu.ifcu_req /* Array of structures. */ +# define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) /* not right */ +#endif /* Misc. */ __BEGIN_DECLS /* Convert an interface name to an index, and vice versa. */ - -extern unsigned int if_nametoindex __P ((__const char *__ifname)); -extern char *if_indextoname __P ((unsigned int __ifindex, char *__ifname)); +extern unsigned int if_nametoindex (__const char *__ifname) __THROW; +extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __THROW; /* Return a list of all interfaces and their indices. */ - -struct if_nameindex - { - unsigned int if_index; /* 1, 2, ... */ - char *if_name; /* null terminated name: "eth0", ... */ - }; - -extern struct if_nameindex *if_nameindex __P ((void)); +extern struct if_nameindex *if_nameindex (void) __THROW; /* Free the data returned from if_nameindex. */ - -extern void if_freenameindex __P ((struct if_nameindex *__ptr)); +extern void if_freenameindex (struct if_nameindex *__ptr) __THROW; __END_DECLS diff --git a/include/net/if_arp.h b/include/net/if_arp.h index 2fa9baedd..d6a366459 100644 --- a/include/net/if_arp.h +++ b/include/net/if_arp.h @@ -1,22 +1,22 @@ /* Definitions for Address Resolution Protocol. - Copyright (C) 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Based on the 4.4BSD and Linux version of this file. */ @@ -93,10 +93,13 @@ struct arphdr #define ARPHRD_ADAPT 264 #define ARPHRD_ROSE 270 #define ARPHRD_X25 271 /* CCITT X.25. */ +#define ARPHDR_HWX25 272 /* Boards with X.25 in firmware. */ #define ARPHRD_PPP 512 -#define ARPHRD_HDLC 513 /* (Cisco) HDLC. */ +#define ARPHRD_CISCO 513 /* Cisco HDLC. */ +#define ARPHRD_HDLC ARPHRD_CISCO #define ARPHRD_LAPB 516 /* LAPB. */ #define ARPHRD_DDCMP 517 /* Digital's DDCMP. */ +#define ARPHRD_RAWHDLC 518 /* Raw HDLC. */ #define ARPHRD_TUNNEL 768 /* IPIP tunnel. */ #define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */ @@ -113,13 +116,13 @@ struct arphdr #define ARPHRD_HIPPI 780 /* High Performance Parallel I'face. */ #define ARPHRD_ASH 781 /* (Nexus Electronics) Ash. */ #define ARPHRD_ECONET 782 /* Acorn Econet. */ -#define ARPHRD_IRDA 783 /* Linux/IR. */ +#define ARPHRD_IRDA 783 /* Linux-IrDA. */ #define ARPHRD_FCPP 784 /* Point to point fibrechanel. */ #define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */ #define ARPHRD_FCPL 786 /* Fibrechanel public loop. */ #define ARPHRD_FCPFABRIC 787 /* Fibrechanel fabric. */ #define ARPHRD_IEEE802_TR 800 /* Magic type ident for TR. */ - +#define ARPHRD_IEEE80211 801 /* IEEE 802.11. */ /* ARP ioctl request. */ struct arpreq diff --git a/include/net/if_packet.h b/include/net/if_packet.h index 441cad175..e5184e7f1 100644 --- a/include/net/if_packet.h +++ b/include/net/if_packet.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef __IF_PACKET_H #define __IF_PACKET_H diff --git a/include/net/if_shaper.h b/include/net/if_shaper.h index 94d7cd405..7060af31e 100644 --- a/include/net/if_shaper.h +++ b/include/net/if_shaper.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NET_IF_SHAPER_H #define _NET_IF_SHAPER_H 1 diff --git a/include/net/if_slip.h b/include/net/if_slip.h index 4686bc5da..66bd7f30a 100644 --- a/include/net/if_slip.h +++ b/include/net/if_slip.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NET_IF_SLIP_H #define _NET_IF_SLIP_H 1 diff --git a/include/net/pppio.h b/include/net/pppio.h index 3f552d8f0..1b163f811 100644 --- a/include/net/pppio.h +++ b/include/net/pppio.h @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: pppio.h,v 1.1 2001/01/16 10:03:48 andersen Exp $ + * $Id: pppio.h,v 1.2 2001/09/27 05:21:12 andersen Exp $ */ #define _PPPIO(n) (('p' << 8) + (n)) diff --git a/include/net/route.h b/include/net/route.h index 6cccbeee2..fc72c7efb 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Based on the 4.4BSD and Linux version of this file. */ diff --git a/include/net/slcompress.h b/include/net/slcompress.h index fc3b000a9..bb494c4ff 100644 --- a/include/net/slcompress.h +++ b/include/net/slcompress.h @@ -1,7 +1,7 @@ /* * Definitions for tcp compression routines. * - * $Id: slcompress.h,v 1.2 2001/07/11 13:47:42 davidm Exp $ + * $Id: slcompress.h,v 1.3 2001/09/27 05:21:12 andersen Exp $ * * Copyright (c) 1989 Regents of the University of California. * All rights reserved. @@ -137,8 +137,6 @@ struct slcompress { /* flag values */ #define SLF_TOSS 1 /* tossing rcvd frames because of input err */ -__BEGIN_DECLS - void sl_compress_init __P((struct slcompress *)); void sl_compress_setup __P((struct slcompress *, int)); u_int sl_compress_tcp __P((struct mbuf *, @@ -147,6 +145,4 @@ int sl_uncompress_tcp __P((u_char **, int, u_int, struct slcompress *)); int sl_uncompress_tcp_core __P((u_char *, int, int, u_int, struct slcompress *, u_char **, u_int *)); -__END_DECLS - #endif /* _SLCOMPRESS_H_ */ diff --git a/include/net/vjcompress.h b/include/net/vjcompress.h index c792fe5e7..c70dda3d0 100644 --- a/include/net/vjcompress.h +++ b/include/net/vjcompress.h @@ -1,7 +1,7 @@ /* * Definitions for tcp compression routines. * - * $Id: vjcompress.h,v 1.2 2001/07/11 13:47:42 davidm Exp $ + * $Id: vjcompress.h,v 1.3 2001/09/27 05:21:12 andersen Exp $ * * Copyright (c) 1989 Regents of the University of California. * All rights reserved. @@ -130,8 +130,6 @@ struct vjcompress { /* flag values */ #define VJF_TOSS 1 /* tossing rcvd frames because of input err */ -__BEGIN_DECLS - extern void vj_compress_init __P((struct vjcompress *comp, int max_state)); extern u_int vj_compress_tcp __P((struct ip *ip, u_int mlen, struct vjcompress *comp, int compress_cid_flag, @@ -143,6 +141,4 @@ extern int vj_uncompress_tcp __P((u_char *buf, int buflen, int total_len, struct vjcompress *comp, u_char **hdrp, u_int *hlenp)); -__END_DECLS - #endif /* _VJCOMPRESS_H_ */ diff --git a/include/netdb.h b/include/netdb.h index 84191b68d..aea6e0050 100644 --- a/include/netdb.h +++ b/include/netdb.h @@ -1,221 +1,522 @@ -/*- - * 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> +/* Copyright (C) 1996,1997,1998,1999,2000,2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* All data returned by the network data base library are supplied in + host order and returned in network order (suitable for use in + system calls). */ + +#ifndef _NETDB_H +#define _NETDB_H 1 + +#include <features.h> + #include <netinet/in.h> +#include <stdint.h> +#ifdef __USE_MISC +/* This is necessary to make this include file properly replace the + Sun version. */ +# include <rpc/netdb.h> +#endif + +#ifdef __USE_GNU +# define __need_sigevent_t +# include <bits/siginfo.h> +# define __need_timespec +# include <time.h> +#endif + +#include <bits/netdb.h> + +/* Absolute file name for network data base files. */ +#define _PATH_HEQUIV "/etc/hosts.equiv" +#define _PATH_HOSTS "/etc/hosts" +#define _PATH_NETWORKS "/etc/networks" +#define _PATH_NSSWITCH_CONF "/etc/nsswitch.conf" +#define _PATH_PROTOCOLS "/etc/protocols" +#define _PATH_SERVICES "/etc/services" + + +__BEGIN_DECLS + +/* Error status for non-reentrant lookup functions. + * NOTE: uClibc reuses errno for h_errno. */ +#include <errno.h> +#define h_errno errno + + +#if 0 +/* Function to get address of global `h_errno' variable. */ +extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); + +#ifdef _LIBC +# ifdef _LIBC_REENTRANT +static inline int +__set_h_errno (int __err) +{ + return *__h_errno_location () = __err; +} +# else +# define __set_h_errno(x) (h_errno = (x)) +# endif /* _LIBC_REENTRANT */ +#endif /* _LIBC */ + + +#if !defined _LIBC || defined _LIBC_REENTRANT +/* Use a macro to access always the thread specific `h_errno' variable. */ +# define h_errno (*__h_errno_location ()) +#endif #endif -#include <paths.h> - -#define __PATH_ETC_INET "/etc" -#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 */ + +/* Possible values left in `h_errno'. */ +#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-Authoritative 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. */ + +#ifdef __USE_XOPEN2K +/* Highest reserved Internet port number. */ +# define IPPORT_RESERVED 1024 +#endif + +#ifdef __USE_GNU +/* Scope delimiter for getaddrinfo(), getnameinfo(). */ +# define SCOPE_DELIMITER '%' +#endif + +/* Print error indicated by `h_errno' variable on standard error. STR + if non-null is printed before the error string. */ +extern void herror (__const char *__str) __THROW; + +/* Return string associated with error ERR_NUM. */ +extern __const char *hstrerror (int __err_num) __THROW; + + + +/* Description of data base entry for a single host. */ +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 compatibility. */ }; -/* - * 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 # */ +/* Open host data base files and mark them as staying open even after + a later search if STAY_OPEN is non-zero. */ +extern void sethostent (int __stay_open) __THROW; + +/* Close host data base files and clear `stay open' flag. */ +extern void endhostent (void) __THROW; + +/* Get next entry from host data base file. Open data base if + necessary. */ +extern struct hostent *gethostent (void) __THROW; + +/* Return entry from host data base which address match ADDR with + length LEN and type TYPE. */ +extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len, + int __type) __THROW; + +/* Return entry from host data base for host with NAME. */ +extern struct hostent *gethostbyname (__const char *__name) __THROW; + +#ifdef __USE_MISC +/* Return entry from host data base for host with NAME. AF must be + set to the address type which is `AF_INET' for IPv4 or `AF_INET6' + for IPv6. */ +extern struct hostent *gethostbyname2 (__const char *__name, int __af) __THROW; + +/* Reentrant versions of the functions above. The additional + arguments specify a buffer of BUFLEN starting at BUF. The last + argument is a pointer to a variable which gets the value which + would be stored in the global variable `herrno' by the + non-reentrant functions. */ +extern int gethostent_r (struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop) __THROW; + +extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len, + int __type, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop) __THROW; + +extern int gethostbyname_r (__const char *__restrict __name, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop) __THROW; + +extern int gethostbyname2_r (__const char *__restrict __name, int __af, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop) __THROW; +#endif /* misc */ + + +/* Open network data base files and mark them as staying open even + after a later search if STAY_OPEN is non-zero. */ +extern void setnetent (int __stay_open) __THROW; + +/* Close network data base files and clear `stay open' flag. */ +extern void endnetent (void) __THROW; + +/* Get next entry from network data base file. Open data base if + necessary. */ +extern struct netent *getnetent (void) __THROW; + +/* Return entry from network data base which address match NET and + type TYPE. */ +extern struct netent *getnetbyaddr (uint32_t __net, int __type) + __THROW; + +/* Return entry from network data base for network with NAME. */ +extern struct netent *getnetbyname (__const char *__name) __THROW; + +#ifdef __USE_MISC +/* Reentrant versions of the functions above. The additional + arguments specify a buffer of BUFLEN starting at BUF. The last + argument is a pointer to a variable which gets the value which + would be stored in the global variable `herrno' by the + non-reentrant functions. */ +extern int getnetent_r (struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop) __THROW; + +extern int getnetbyaddr_r (uint32_t __net, int __type, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop) __THROW; + +extern int getnetbyname_r (__const char *__restrict __name, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop) __THROW; +#endif /* misc */ + + +/* Description of data base entry for a single service. */ +struct servent +{ + char *s_name; /* Official service name. */ + char **s_aliases; /* Alias list. */ + int s_port; /* Port number. */ + char *s_proto; /* Protocol to use. */ }; -struct servent { - char *s_name; /* official service name */ - char **s_aliases; /* alias list */ - int s_port; /* port # */ - char *s_proto; /* protocol to use */ +/* Open service data base files and mark them as staying open even + after a later search if STAY_OPEN is non-zero. */ +extern void setservent (int __stay_open) __THROW; + +/* Close service data base files and clear `stay open' flag. */ +extern void endservent (void) __THROW; + +/* Get next entry from service data base file. Open data base if + necessary. */ +extern struct servent *getservent (void) __THROW; + +/* Return entry from network data base for network with NAME and + protocol PROTO. */ +extern struct servent *getservbyname (__const char *__name, + __const char *__proto) __THROW; + +/* Return entry from service data base which matches port PORT and + protocol PROTO. */ +extern struct servent *getservbyport (int __port, __const char *__proto) + __THROW; + + +#ifdef __USE_MISC +/* Reentrant versions of the functions above. The additional + arguments specify a buffer of BUFLEN starting at BUF. */ +extern int getservent_r (struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result) __THROW; + +extern int getservbyname_r (__const char *__restrict __name, + __const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result) __THROW; + +extern int getservbyport_r (int __port, __const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result) __THROW; +#endif /* misc */ + + +/* Description of data base entry for a single service. */ +struct protoent +{ + char *p_name; /* Official protocol name. */ + char **p_aliases; /* Alias list. */ + int p_proto; /* Protocol number. */ }; -struct protoent { - char *p_name; /* official protocol name */ - char **p_aliases; /* alias list */ - int p_proto; /* protocol # */ +/* Open protocol data base files and mark them as staying open even + after a later search if STAY_OPEN is non-zero. */ +extern void setprotoent (int __stay_open) __THROW; + +/* Close protocol data base files and clear `stay open' flag. */ +extern void endprotoent (void) __THROW; + +/* Get next entry from protocol data base file. Open data base if + necessary. */ +extern struct protoent *getprotoent (void) __THROW; + +/* Return entry from protocol data base for network with NAME. */ +extern struct protoent *getprotobyname (__const char *__name) __THROW; + +/* Return entry from protocol data base which number is PROTO. */ +extern struct protoent *getprotobynumber (int __proto) __THROW; + + +#ifdef __USE_MISC +/* Reentrant versions of the functions above. The additional + arguments specify a buffer of BUFLEN starting at BUF. */ +extern int getprotoent_r (struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result) __THROW; + +extern int getprotobyname_r (__const char *__restrict __name, + struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result) __THROW; + +extern int getprotobynumber_r (int __proto, + struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result) __THROW; +#endif /* misc */ + + +/* Establish network group NETGROUP for enumeration. */ +extern int setnetgrent (__const char *__netgroup) __THROW; + +/* Free all space allocated by previous `setnetgrent' call. */ +extern void endnetgrent (void) __THROW; + +/* Get next member of netgroup established by last `setnetgrent' call + and return pointers to elements in HOSTP, USERP, and DOMAINP. */ +extern int getnetgrent (char **__restrict __hostp, + char **__restrict __userp, + char **__restrict __domainp) __THROW; + +#ifdef __USE_MISC +/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN). */ +extern int innetgr (__const char *__netgroup, __const char *__host, + __const char *__user, __const char *domain) __THROW; + +/* Reentrant version of `getnetgrent' where result is placed in BUFFER. */ +extern int getnetgrent_r (char **__restrict __hostp, + char **__restrict __userp, + char **__restrict __domainp, + char *__restrict __buffer, size_t __buflen) __THROW; +#endif /* misc */ + + +#ifdef __USE_BSD +/* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD. + The local user is LOCUSER, on the remote machine the command is + executed as REMUSER. In *FD2P the descriptor to the socket for the + connection is returned. The caller must have the right to use a + reserved port. When the function returns *AHOST contains the + official host name. */ +extern int rcmd (char **__restrict __ahost, unsigned short int __rport, + __const char *__restrict __locuser, + __const char *__restrict __remuser, + __const char *__restrict __cmd, int *__restrict __fd2p) + __THROW; + +/* This is the equivalent function where the protocol can be selected + and which therefore can be used for IPv6. */ +extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport, + __const char *__restrict __locuser, + __const char *__restrict __remuser, + __const char *__restrict __cmd, int *__restrict __fd2p, + sa_family_t __af) __THROW; + +/* Call `rexecd' at port RPORT on remote machine *AHOST to execute + CMD. The process runs at the remote machine using the ID of user + NAME whose cleartext password is PASSWD. In *FD2P the descriptor + to the socket for the connection is returned. When the function + returns *AHOST contains the official host name. */ +extern int rexec (char **__restrict __ahost, int __rport, + __const char *__restrict __name, + __const char *__restrict __pass, + __const char *__restrict __cmd, int *__restrict __fd2p) + __THROW; + +/* This is the equivalent function where the protocol can be selected + and which therefore can be used for IPv6. */ +extern int rexec_af (char **__restrict __ahost, int __rport, + __const char *__restrict __name, + __const char *__restrict __pass, + __const char *__restrict __cmd, int *__restrict __fd2p, + sa_family_t __af) __THROW; + +/* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER. + If SUSER is not zero the user tries to become superuser. Return 0 if + it is possible. */ +extern int ruserok (__const char *__rhost, int __suser, + __const char *__remuser, __const char *__locuser) __THROW; + +/* This is the equivalent function where the protocol can be selected + and which therefore can be used for IPv6. */ +extern int ruserok_af (__const char *__rhost, int __suser, + __const char *__remuser, __const char *__locuser, + sa_family_t __af) __THROW; + +/* Try to allocate reserved port, returning a descriptor for a socket opened + at this port or -1 if unsuccessful. The search for an available port + will start at ALPORT and continues with lower numbers. */ +extern int rresvport (int *__alport) __THROW; + +/* This is the equivalent function where the protocol can be selected + and which therefore can be used for IPv6. */ +extern int rresvport_af (int *__alport, sa_family_t __af) __THROW; +#endif + + +/* Extension from POSIX.1g. */ +#ifdef __USE_POSIX +/* Structure to contain information about address of a service provider. */ +struct addrinfo +{ + int ai_flags; /* Input flags. */ + int ai_family; /* Protocol family for socket. */ + int ai_socktype; /* Socket type. */ + int ai_protocol; /* Protocol for socket. */ + socklen_t ai_addrlen; /* Length of socket address. */ + struct sockaddr *ai_addr; /* Socket address for socket. */ + char *ai_canonname; /* Canonical name for service location. */ + struct addrinfo *ai_next; /* Pointer to next in list. */ }; -struct rpcent { - char *r_name; /* name of server for this rpc program */ - char **r_aliases; /* alias list */ - int r_number; /* rpc program number */ +# ifdef __USE_GNU +/* Structure used as control block for asynchronous lookup. */ +struct gaicb +{ + const char *ar_name; /* Name to look up. */ + const char *ar_service; /* Service name. */ + const struct addrinfo *ar_request; /* Additional request specification. */ + struct addrinfo *ar_result; /* Pointer to result. */ + /* The following are internal elements. */ + int __return; + int __unused[5]; }; -#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(_REENTRANT) +/* Lookup mode. */ +# define GAI_WAIT 0 +# define GAI_NOWAIT 1 +# endif -#define __NETDB_MAXALIASES 35 -#define __NETDB_MAXADDRS 35 +/* Possible values for `ai_flags' field in `addrinfo' structure. */ +# define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */ +# define AI_CANONNAME 0x0002 /* Request for canonical name. */ +# define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ -#endif +/* Error values for `getaddrinfo' function. */ +# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ +# define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ +# define EAI_AGAIN -3 /* Temporary failure in name resolution. */ +# define EAI_FAIL -4 /* Non-recoverable failure in name res. */ +# define EAI_NODATA -5 /* No address associated with NAME. */ +# define EAI_FAMILY -6 /* `ai_family' not supported. */ +# define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ +# define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ +# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ +# define EAI_MEMORY -10 /* Memory allocation failure. */ +# define EAI_SYSTEM -11 /* System error returned in `errno'. */ +# ifdef __USE_GNU +# define EAI_INPROGRESS -100 /* Processing request in progress. */ +# define EAI_CANCELED -101 /* Request canceled. */ +# define EAI_NOTCANCELED -102 /* Request not canceled. */ +# define EAI_ALLDONE -103 /* All requests done. */ +# define EAI_INTR -104 /* Interrupted by a signal. */ +# endif -/* - * Error return codes from gethostbyname() and gethostbyaddr() - * (left in extern int h_errno). - */ +# define NI_MAXHOST 1025 +# define NI_MAXSERV 32 -/* uClibc reuses errno for h_errno. */ -#include <errno.h> -#define h_errno errno +# define NI_NUMERICHOST 1 /* Don't try to look up hostname. */ +# define NI_NUMERICSERV 2 /* Don't convert port number to name. */ +# define NI_NOFQDN 4 /* Only return nodename portion. */ +# define NI_NAMEREQD 8 /* Don't return numeric addresses. */ +# define NI_DGRAM 16 /* Look up UDP service rather than TCP. */ -#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 */ +/* Translate name of a service location and/or a service name to set of + socket addresses. */ +extern int getaddrinfo (__const char *__restrict __name, + __const char *__restrict __service, + __const struct addrinfo *__restrict __req, + struct addrinfo **__restrict __pai) __THROW; -#include <features.h> +/* Free `addrinfo' structure AI including associated storage. */ +extern void freeaddrinfo (struct addrinfo *__ai) __THROW; -__BEGIN_DECLS +/* Convert error return from getaddrinfo() to a string. */ +extern __const char *gai_strerror (int __ecode) __THROW; -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 *gethostbyname2 __P((__const char *, int)); -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)); - -#define hstrerror(x) strerror(x) - -#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)); +/* Translate a socket address to a location and service name. */ +extern int getnameinfo (__const struct sockaddr *__restrict __sa, + socklen_t __salen, char *__restrict __host, + socklen_t __hostlen, char *__restrict __serv, + socklen_t __servlen, unsigned int __flags) __THROW; -#endif +# ifdef __USE_GNU +/* Enqueue ENT requests from the LIST. If MODE is GAI_WAIT wait until all + requests are handled. If WAIT is GAI_NOWAIT return immediately after + queueing the requests and signal completion according to SIG. */ +extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr], + int __ent, struct sigevent *__restrict __sig) + __THROW; + +/* Suspend execution of the thread until at least one of the ENT requests + in LIST is handled. If TIMEOUT is not a null pointer it specifies the + longest time the function keeps waiting before returning with an error. */ +extern int gai_suspend (__const struct gaicb *__const __list[], int __ent, + __const struct timespec *__timeout) __THROW; + +/* Get the error status of the request REQ. */ +extern int gai_error (struct gaicb *__req) __THROW; + +/* Cancel the requests associated with GAICBP. */ +extern int gai_cancel (struct gaicb *__gaicbp) __THROW; +# endif /* GNU */ +#endif /* POSIX */ __END_DECLS -#endif /* !_NETDB_H_ */ +#endif /* netdb.h */ diff --git a/include/netinet/ether.h b/include/netinet/ether.h index c7985d7ac..ca780e2d0 100644 --- a/include/netinet/ether.h +++ b/include/netinet/ether.h @@ -1,21 +1,21 @@ /* Functions for storing Ethernet addresses in ASCII and mapping to hostnames. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_ETHER_H #define _NETINET_ETHER_H 1 @@ -28,26 +28,26 @@ __BEGIN_DECLS /* Convert 48 bit Ethernet ADDRess to ASCII. */ -extern char *ether_ntoa __P ((__const struct ether_addr *__addr)); -extern char *ether_ntoa_r __P ((__const struct ether_addr *__addr, - char *__buf)); +extern char *ether_ntoa (__const struct ether_addr *__addr) __THROW; +extern char *ether_ntoa_r (__const struct ether_addr *__addr, char *__buf) + __THROW; /* Convert ASCII string S to 48 bit Ethernet address. */ -extern struct ether_addr *ether_aton __P ((__const char *__asc)); -extern struct ether_addr *ether_aton_r __P ((__const char *__asc, - struct ether_addr *__addr)); +extern struct ether_addr *ether_aton (__const char *__asc) __THROW; +extern struct ether_addr *ether_aton_r (__const char *__asc, + struct ether_addr *__addr) __THROW; /* Map 48 bit Ethernet number ADDR to HOSTNAME. */ -extern int ether_ntohost __P ((char *__hostname, - __const struct ether_addr *__addr)); +extern int ether_ntohost (char *__hostname, __const struct ether_addr *__addr) + __THROW; /* Map HOSTNAME to 48 bit Ethernet address. */ -extern int ether_hostton __P ((__const char *__hostname, - struct ether_addr *__addr)); +extern int ether_hostton (__const char *__hostname, struct ether_addr *__addr) + __THROW; /* Scan LINE and set ADDR and HOSTNAME. */ -extern int ether_line __P ((__const char *__line, struct ether_addr *__addr, - char *__hostname)); +extern int ether_line (__const char *__line, struct ether_addr *__addr, + char *__hostname) __THROW; __END_DECLS diff --git a/include/netinet/icmp6.h b/include/netinet/icmp6.h index 5a3863953..4b17d9cd9 100644 --- a/include/netinet/icmp6.h +++ b/include/netinet/icmp6.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,94,95,96,97,2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_ICMP6_H #define _NETINET_ICMP6_H 1 @@ -36,18 +36,18 @@ struct icmp6_filter uint32_t data[8]; }; -struct icmp6_hdr +struct icmp6_hdr { uint8_t icmp6_type; /* type field */ uint8_t icmp6_code; /* code field */ uint16_t icmp6_cksum; /* checksum field */ - union + union { uint32_t icmp6_un_data32[1]; /* type-specific field */ uint16_t icmp6_un_data16[2]; /* type-specific field */ uint8_t icmp6_un_data8[4]; /* type-specific field */ } icmp6_dataun; - }; + }; #define icmp6_data32 icmp6_dataun.icmp6_un_data32 #define icmp6_data16 icmp6_dataun.icmp6_un_data16 @@ -135,6 +135,7 @@ struct nd_router_advert /* router advertisement */ #define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1] #define ND_RA_FLAG_MANAGED 0x80 #define ND_RA_FLAG_OTHER 0x40 +#define ND_RA_FLAG_HOME_AGENT 0x20 #define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1] struct nd_neighbor_solicit /* neighbor solicitation */ @@ -177,7 +178,7 @@ struct nd_redirect /* redirect */ struct in6_addr nd_rd_dst; /* destination address */ /* could be followed by options */ }; - + #define nd_rd_type nd_rd_hdr.icmp6_type #define nd_rd_code nd_rd_hdr.icmp6_code #define nd_rd_cksum nd_rd_hdr.icmp6_cksum @@ -195,6 +196,8 @@ struct nd_opt_hdr /* Neighbor discovery option header */ #define ND_OPT_PREFIX_INFORMATION 3 #define ND_OPT_REDIRECTED_HEADER 4 #define ND_OPT_MTU 5 +#define ND_OPT_RTR_ADV_INTERVAL 7 +#define ND_OPT_HOME_AGENT_INFO 8 struct nd_opt_prefix_info /* prefix information */ { @@ -210,6 +213,7 @@ struct nd_opt_prefix_info /* prefix information */ #define ND_OPT_PI_FLAG_ONLINK 0x80 #define ND_OPT_PI_FLAG_AUTO 0x40 +#define ND_OPT_PI_FLAG_RADDR 0x20 struct nd_opt_rd_hdr /* redirected header */ { @@ -228,5 +232,23 @@ struct nd_opt_mtu /* MTU option */ uint32_t nd_opt_mtu_mtu; }; +/* Mobile IPv6 extension: Advertisement Interval. */ +struct nd_opt_adv_interval + { + uint8_t nd_opt_adv_interval_type; + uint8_t nd_opt_adv_interval_len; + uint16_t nd_opt_adv_interval_reserved; + uint32_t nd_opt_adv_interval_ival; + }; + +/* Mobile IPv6 extension: Home Agent Info. */ +struct nd_opt_home_agent_info + { + uint8_t nd_opt_home_agent_info_type; + uint8_t nd_opt_home_agent_info_len; + uint16_t nd_opt_home_agent_info_reserved; + int16_t nd_opt_home_agent_info_preference; + uint16_t nd_opt_home_agent_info_lifetime; + }; #endif /* netinet/icmpv6.h */ diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h index 7194490f5..aadb59bea 100644 --- a/include/netinet/if_ether.h +++ b/include/netinet/if_ether.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef __NETINET_IF_ETHER_H @@ -38,10 +38,6 @@ * 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. diff --git a/include/netinet/if_fddi.h b/include/netinet/if_fddi.h index d5d6dbdbe..1a0ec927d 100644 --- a/include/netinet/if_fddi.h +++ b/include/netinet/if_fddi.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IF_FDDI_H #define _NETINET_IF_FDDI_H 1 diff --git a/include/netinet/if_tr.h b/include/netinet/if_tr.h index 3c1be2102..1a7bc68c9 100644 --- a/include/netinet/if_tr.h +++ b/include/netinet/if_tr.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IF_TR_H #define _NETINET_IF_TR_H 1 diff --git a/include/netinet/igmp.h b/include/netinet/igmp.h index 7a6ed6e8c..a4683bd7f 100644 --- a/include/netinet/igmp.h +++ b/include/netinet/igmp.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IGMP_H #define _NETINET_IGMP_H 1 @@ -47,10 +47,6 @@ __BEGIN_DECLS * 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. diff --git a/include/netinet/in.h b/include/netinet/in.h index b5a5c7275..26be9ea75 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -1,30 +1,27 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IN_H #define _NETINET_IN_H 1 #include <features.h> -#include <limits.h> #include <stdint.h> - -#include <sys/types.h> -#include <bits/socket.h> +#include <bits/types.h> __BEGIN_DECLS @@ -33,34 +30,64 @@ __BEGIN_DECLS enum { IPPROTO_IP = 0, /* Dummy protocol for TCP. */ +#define IPPROTO_IP IPPROTO_IP IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ +#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ +#define IPPROTO_ICMP IPPROTO_ICMP IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ +#define IPPROTO_IGMP IPPROTO_IGMP IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */ +#define IPPROTO_IPIP IPPROTO_IPIP IPPROTO_TCP = 6, /* Transmission Control Protocol. */ +#define IPPROTO_TCP IPPROTO_TCP IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */ +#define IPPROTO_EGP IPPROTO_EGP IPPROTO_PUP = 12, /* PUP protocol. */ +#define IPPROTO_PUP IPPROTO_PUP IPPROTO_UDP = 17, /* User Datagram Protocol. */ +#define IPPROTO_UDP IPPROTO_UDP IPPROTO_IDP = 22, /* XNS IDP protocol. */ +#define IPPROTO_IDP IPPROTO_IDP IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */ +#define IPPROTO_TP IPPROTO_TP IPPROTO_IPV6 = 41, /* IPv6 header. */ +#define IPPROTO_IPV6 IPPROTO_IPV6 IPPROTO_ROUTING = 43, /* IPv6 routing header. */ +#define IPPROTO_ROUTING IPPROTO_ROUTING IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ +#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT IPPROTO_RSVP = 46, /* Reservation Protocol. */ +#define IPPROTO_RSVP IPPROTO_RSVP IPPROTO_GRE = 47, /* General Routing Encapsulation. */ +#define IPPROTO_GRE IPPROTO_GRE IPPROTO_ESP = 50, /* encapsulating security payload. */ +#define IPPROTO_ESP IPPROTO_ESP IPPROTO_AH = 51, /* authentication header. */ +#define IPPROTO_AH IPPROTO_AH IPPROTO_ICMPV6 = 58, /* ICMPv6. */ +#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 IPPROTO_NONE = 59, /* IPv6 no next header. */ +#define IPPROTO_NONE IPPROTO_NONE IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ +#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ +#define IPPROTO_MTP IPPROTO_MTP IPPROTO_ENCAP = 98, /* Encapsulation Header. */ +#define IPPROTO_ENCAP IPPROTO_ENCAP IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ +#define IPPROTO_PIM IPPROTO_PIM IPPROTO_COMP = 108, /* Compression Header Protocol. */ +#define IPPROTO_COMP IPPROTO_COMP IPPROTO_RAW = 255, /* Raw IP packets. */ +#define IPPROTO_RAW IPPROTO_RAW IPPROTO_MAX }; + +/* Type to represent a port. */ +typedef uint16_t in_port_t; + /* Standard well-known ports. */ enum { @@ -105,9 +132,9 @@ enum /* Internet address. */ typedef uint32_t in_addr_t; struct in_addr -{ + { in_addr_t s_addr; -}; + }; /* Definitions of the bits in an Internet address integer. @@ -115,48 +142,48 @@ struct in_addr On subnets, host and network parts are found according to the subnet mask, not these masks. */ -#define IN_CLASSA(a) ((((uint32_t) (a)) & 0x80000000) == 0) +#define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) #define IN_CLASSA_MAX 128 -#define IN_CLASSB(a) ((((uint32_t) (a)) & 0xc0000000) == 0x80000000) +#define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000) #define IN_CLASSB_NET 0xffff0000 #define IN_CLASSB_NSHIFT 16 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) #define IN_CLASSB_MAX 65536 -#define IN_CLASSC(a) ((((uint32_t) (a)) & 0xe0000000) == 0xc0000000) +#define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000) #define IN_CLASSC_NET 0xffffff00 #define IN_CLASSC_NSHIFT 8 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) -#define IN_CLASSD(a) ((((uint32_t) (a)) & 0xf0000000) == 0xe0000000) +#define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) #define IN_MULTICAST(a) IN_CLASSD(a) -#define IN_EXPERIMENTAL(a) ((((uint32_t) (a)) & 0xe0000000) == 0xe0000000) -#define IN_BADCLASS(a) ((((uint32_t) (a)) & 0xf0000000) == 0xf0000000) +#define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000) +#define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000) /* Address to accept any incoming messages. */ -#define INADDR_ANY ((uint32_t) 0x00000000) +#define INADDR_ANY ((in_addr_t) 0x00000000) /* Address to send to all hosts. */ -#define INADDR_BROADCAST ((uint32_t) 0xffffffff) +#define INADDR_BROADCAST ((in_addr_t) 0xffffffff) /* Address indicating an error return. */ -#define INADDR_NONE ((uint32_t) 0xffffffff) +#define INADDR_NONE ((in_addr_t) 0xffffffff) /* Network number for local host loopback. */ #define IN_LOOPBACKNET 127 /* Address to loopback in software to local host. */ #ifndef INADDR_LOOPBACK -# define INADDR_LOOPBACK ((uint32_t) 0x7f000001) /* Inet 127.0.0.1. */ +# define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */ #endif /* Defines for Multicast INADDR. */ -#define INADDR_UNSPEC_GROUP ((uint32_t) 0xe0000000) /* 224.0.0.0 */ -#define INADDR_ALLHOSTS_GROUP ((uint32_t) 0xe0000001) /* 224.0.0.1 */ -#define INADDR_ALLRTRS_GROUP ((uint32_t) 0xe0000002) /* 224.0.0.2 */ -#define INADDR_MAX_LOCAL_GROUP ((uint32_t) 0xe00000ff) /* 224.0.0.255 */ +#define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) /* 224.0.0.0 */ +#define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) /* 224.0.0.1 */ +#define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */ +#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */ /* IPv6 address */ @@ -164,17 +191,13 @@ struct in6_addr { union { - uint8_t u6_addr8[16]; - uint16_t u6_addr16[8]; - uint32_t u6_addr32[4]; -#if ULONG_MAX > 0xffffffff - uint64_t u6_addr64[2]; -#endif + uint8_t u6_addr8[16]; + uint16_t u6_addr16[8]; + uint32_t u6_addr32[4]; } in6_u; #define s6_addr in6_u.u6_addr8 #define s6_addr16 in6_u.u6_addr16 #define s6_addr32 in6_u.u6_addr32 -#define s6_addr64 in6_u.u6_addr64 }; extern const struct in6_addr in6addr_any; /* :: */ @@ -186,20 +209,20 @@ extern const struct in6_addr in6addr_loopback; /* ::1 */ #define INET6_ADDRSTRLEN 46 /* Get the definition of the macro to define the common sockaddr members. */ -#include <bits/sockaddr.h> +#include <bits/socket.h> /* Structure describing an Internet socket address. */ struct sockaddr_in { __SOCKADDR_COMMON (sin_); - uint16_t sin_port; /* Port number. */ + in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - - sizeof (uint16_t) - + sizeof (in_port_t) - sizeof (struct in_addr)]; }; @@ -207,9 +230,10 @@ struct sockaddr_in struct sockaddr_in6 { __SOCKADDR_COMMON (sin6_); - uint16_t sin6_port; /* Transport layer port # */ + in_port_t sin6_port; /* Transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ + uint32_t sin6_scope_id; /* IPv6 scope-id */ }; /* IPv6 multicast request. */ @@ -232,81 +256,106 @@ struct ipv6_mreq this was a short-sighted decision since on different systems the types may have different representations but the values are always the same. */ -extern uint32_t ntohl __P ((uint32_t __netlong)); -extern uint16_t ntohs __P ((uint16_t __netshort)); -extern uint32_t htonl __P ((uint32_t __hostlong)); -extern uint16_t htons __P ((uint16_t __hostshort)); +extern uint32_t ntohl (uint32_t __netlong) __THROW __attribute__ ((__const__)); +extern uint16_t ntohs (uint16_t __netshort) + __THROW __attribute__ ((__const__)); +extern uint32_t htonl (uint32_t __hostlong) + __THROW __attribute__ ((__const__)); +extern uint16_t htons (uint16_t __hostshort) + __THROW __attribute__ ((__const__)); #include <endian.h> /* Get machine dependent optimized versions of byte swapping functions. */ #include <bits/byteswap.h> -#if __BYTE_ORDER == __BIG_ENDIAN +#ifdef __OPTIMIZE__ +/* We can optimize calls to the conversion functions. Either nothing has + to be done or we are using directly the byte-swapping functions which + often can be inlined. */ +# if __BYTE_ORDER == __BIG_ENDIAN /* The host byte order is the same as network byte order, so these functions are all just identity. */ # define ntohl(x) (x) # define ntohs(x) (x) # define htonl(x) (x) # define htons(x) (x) -#else -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define ntohl(x) __bswap_32 (x) -# define ntohs(x) __bswap_16 (x) -# define htonl(x) __bswap_32 (x) -# define htons(x) __bswap_16 (x) +# else +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define ntohl(x) __bswap_32 (x) +# define ntohs(x) __bswap_16 (x) +# define htonl(x) __bswap_32 (x) +# define htons(x) __bswap_16 (x) +# endif # endif #endif #define IN6_IS_ADDR_UNSPECIFIED(a) \ - (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ - ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0) + (((__const uint32_t *) (a))[0] == 0 \ + && ((__const uint32_t *) (a))[1] == 0 \ + && ((__const uint32_t *) (a))[2] == 0 \ + && ((__const uint32_t *) (a))[3] == 0) #define IN6_IS_ADDR_LOOPBACK(a) \ - (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ - ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == htonl (1)) + (((__const uint32_t *) (a))[0] == 0 \ + && ((__const uint32_t *) (a))[1] == 0 \ + && ((__const uint32_t *) (a))[2] == 0 \ + && ((__const uint32_t *) (a))[3] == htonl (1)) -#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff) +#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff) #define IN6_IS_ADDR_LINKLOCAL(a) \ - ((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000)) + ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ + == htonl (0xfe800000)) #define IN6_IS_ADDR_SITELOCAL(a) \ - ((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000)) + ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ + == htonl (0xfec00000)) #define IN6_IS_ADDR_V4MAPPED(a) \ - ((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \ - (((uint32_t *) (a))[2] == htonl (0xffff))) + ((((__const uint32_t *) (a))[0] == 0) \ + && (((__const uint32_t *) (a))[1] == 0) \ + && (((__const uint32_t *) (a))[2] == htonl (0xffff))) #define IN6_IS_ADDR_V4COMPAT(a) \ - ((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \ - (((uint32_t *) (a))[2] == 0) && (ntohl (((uint32_t *) (a))[3]) > 1)) + ((((__const uint32_t *) (a))[0] == 0) \ + && (((__const uint32_t *) (a))[1] == 0) \ + && (((__const uint32_t *) (a))[2] == 0) \ + && (ntohl (((__const uint32_t *) (a))[3]) > 1)) #define IN6_ARE_ADDR_EQUAL(a,b) \ - ((((uint32_t *) (a))[0] == ((uint32_t *) (b))[0]) && \ - (((uint32_t *) (a))[1] == ((uint32_t *) (b))[2]) && \ - (((uint32_t *) (a))[2] == ((uint32_t *) (b))[1]) && \ - (((uint32_t *) (a))[3] == ((uint32_t *) (b))[3])) + ((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \ + && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \ + && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \ + && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3])) /* Bind socket to a privileged IP port. */ -extern int bindresvport __P ((int __sockfd, struct sockaddr_in *__sock_in)); +extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; +/* The IPv6 version of this function. */ +extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) + __THROW; #define IN6_IS_ADDR_MC_NODELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x1)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x2)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2)) #define IN6_IS_ADDR_MC_SITELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x5)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5)) #define IN6_IS_ADDR_MC_ORGLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0x8)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8)) #define IN6_IS_ADDR_MC_GLOBAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((u_int8_t *) (a))[1] & 0xf) == 0xe)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe)) /* IPv6 packet information. */ struct in6_pktinfo diff --git a/include/netinet/in_systm.h b/include/netinet/in_systm.h index 902fe6ea0..51a08e176 100644 --- a/include/netinet/in_systm.h +++ b/include/netinet/in_systm.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IN_SYSTM_H #define _NETINET_IN_SYSTM_H 1 diff --git a/include/netinet/ip.h b/include/netinet/ip.h index 246a56a5d..fc9144052 100644 --- a/include/netinet/ip.h +++ b/include/netinet/ip.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,95,96,97,98,99,2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef __NETINET_IP_H #define __NETINET_IP_H 1 @@ -42,29 +42,6 @@ struct timestamp u_int32_t data[9]; }; -struct ip_options - { - u_int32_t faddr; /* Saved first hop address */ - u_int8_t optlen; - u_int8_t srr; - u_int8_t rr; - u_int8_t ts; - unsigned int is_setbyuser:1; /* Set by setsockopt? */ - unsigned int is_data:1; /* Options in __data, rather than skb */ - unsigned int is_strictroute:1; /* Strict source route */ - unsigned int srr_is_hit:1; /* Packet destination addr was our one */ - unsigned int is_changed:1; /* IP checksum more not valid */ - unsigned int rr_needaddr:1; /* Need to record addr of outgoing dev */ - unsigned int ts_needtime:1; /* Need to record timestamp */ - unsigned int ts_needaddr:1; /* Need to record addr of outgoing dev */ - u_int8_t router_alert; - u_int8_t __pad1; - u_int8_t __pad2; -#ifdef __GNUC__ - u_int8_t __data[0]; -#endif - }; - struct iphdr { #if __BYTE_ORDER == __LITTLE_ENDIAN @@ -101,10 +78,6 @@ struct iphdr * 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. diff --git a/include/netinet/ip6.h b/include/netinet/ip6.h index cd42ef64b..c6fc2b31c 100644 --- a/include/netinet/ip6.h +++ b/include/netinet/ip6.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. +/* Copyright (C) 1991-1997, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NETINET_IP6_H #define _NETINET_IP6_H 1 @@ -22,18 +22,19 @@ #include <inttypes.h> #include <netinet/in.h> -struct ip6_hdr +struct ip6_hdr { - union + union { - struct ip6_hdrctl + struct ip6_hdrctl { - uint32_t ip6_un1_flow; /* 24 bits of flow-ID */ + uint32_t ip6_un1_flow; /* 4 bits version, 8 bits TC, + 20 bits flow-ID */ uint16_t ip6_un1_plen; /* payload length */ uint8_t ip6_un1_nxt; /* next header */ uint8_t ip6_un1_hlim; /* hop limit */ } ip6_un1; - uint8_t ip6_un2_vfc; /* 4 bits version, 4 bits priority */ + uint8_t ip6_un2_vfc; /* 4 bits version, top 4 bits tclass */ } ip6_ctlun; struct in6_addr ip6_src; /* source address */ struct in6_addr ip6_dst; /* destination address */ @@ -47,7 +48,7 @@ struct ip6_hdr #define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim /* Hop-by-Hop options header. */ -struct ip6_hbh +struct ip6_hbh { uint8_t ip6h_nxt; /* next hesder. */ uint8_t ip6h_len; /* length in units of 8 octets. */ @@ -55,7 +56,7 @@ struct ip6_hbh }; /* Destination options header */ -struct ip6_dest +struct ip6_dest { uint8_t ip6d_nxt; /* next header */ uint8_t ip6d_len; /* length in units of 8 octets */ @@ -63,7 +64,7 @@ struct ip6_dest }; /* Routing header */ -struct ip6_rthdr +struct ip6_rthdr { uint8_t ip6r_nxt; /* next header */ uint8_t ip6r_len; /* length in units of 8 octets */ @@ -73,7 +74,7 @@ struct ip6_rthdr }; /* Type 0 Routing header */ -struct ip6_rthdr0 +struct ip6_rthdr0 { uint8_t ip6r0_nxt; /* next header */ uint8_t ip6r0_len; /* length in units of 8 octets */ @@ -85,7 +86,7 @@ struct ip6_rthdr0 }; /* Fragment header */ -struct ip6_frag +struct ip6_frag { uint8_t ip6f_nxt; /* next header */ uint8_t ip6f_reserved; /* reserved field */ diff --git a/include/netinet/ip_icmp.h b/include/netinet/ip_icmp.h index be7959ee7..2fc8e9c1c 100644 --- a/include/netinet/ip_icmp.h +++ b/include/netinet/ip_icmp.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 95, 96, 97, 99 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef __NETINET_IP_ICMP_H #define __NETINET_IP_ICMP_H 1 @@ -104,10 +104,6 @@ struct icmphdr * 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. diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h index 36976369e..87099ec14 100644 --- a/include/netinet/tcp.h +++ b/include/netinet/tcp.h @@ -10,10 +10,6 @@ * 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. @@ -37,11 +33,27 @@ #define _NETINET_TCP_H 1 #include <features.h> -#include <sys/types.h> -__BEGIN_DECLS +/* + * User-settable options (used with setsockopt). + */ +#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ +#define TCP_MAXSEG 2 /* Set maximum segment size */ +#define TCP_CORK 3 /* Control sending of partial frames */ +#define TCP_KEEPIDLE 4 /* Start keeplives after this period */ +#define TCP_KEEPINTVL 5 /* Interval between keepalives */ +#define TCP_KEEPCNT 6 /* Number of keepalives before death */ +#define TCP_SYNCNT 7 /* Number of SYN retransmits */ +#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */ +#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */ +#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */ +#define TCP_INFO 11 /* Information about this connection. */ +#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */ -#ifdef __FAVOR_BSD +#ifdef __USE_MISC +# include <sys/types.h> + +# ifdef __FAVOR_BSD typedef u_int32_t tcp_seq; /* * TCP header. @@ -53,34 +65,34 @@ struct tcphdr u_int16_t th_dport; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ -#if __BYTE_ORDER == __LITTLE_ENDIAN +# if __BYTE_ORDER == __LITTLE_ENDIAN u_int8_t th_x2:4; /* (unused) */ u_int8_t th_off:4; /* data offset */ -#endif -#if __BYTE_ORDER == __BIG_ENDIAN +# endif +# if __BYTE_ORDER == __BIG_ENDIAN u_int8_t th_off:4; /* data offset */ u_int8_t th_x2:4; /* (unused) */ -#endif +# endif u_int8_t 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 +# 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_int16_t th_win; /* window */ u_int16_t th_sum; /* checksum */ u_int16_t th_urp; /* urgent pointer */ }; -#else /* !__FAVOR_BSD */ +# else /* !__FAVOR_BSD */ struct tcphdr { u_int16_t source; u_int16_t dest; u_int32_t seq; u_int32_t ack_seq; -#if __BYTE_ORDER == __LITTLE_ENDIAN +# if __BYTE_ORDER == __LITTLE_ENDIAN u_int16_t res1:4; u_int16_t doff:4; u_int16_t fin:1; @@ -90,7 +102,7 @@ struct tcphdr u_int16_t ack:1; u_int16_t urg:1; u_int16_t res2:2; -#elif __BYTE_ORDER == __BIG_ENDIAN +# elif __BYTE_ORDER == __BIG_ENDIAN u_int16_t doff:4; u_int16_t res1:4; u_int16_t res2:2; @@ -100,14 +112,14 @@ struct tcphdr u_int16_t rst:1; u_int16_t syn:1; u_int16_t fin:1; -#else -#error "Adjust your <bits/endian.h> defines" -#endif +# else +# error "Adjust your <bits/endian.h> defines" +# endif u_int16_t window; u_int16_t check; u_int16_t urg_ptr; }; -#endif /* __FAVOR_BSD */ +# endif /* __FAVOR_BSD */ enum { @@ -124,20 +136,20 @@ enum TCP_CLOSING /* now a valid state */ }; -#define TCPOPT_EOL 0 -#define TCPOPT_NOP 1 -#define TCPOPT_MAXSEG 2 -#define TCPOLEN_MAXSEG 4 -#define TCPOPT_WINDOW 3 -#define TCPOLEN_WINDOW 3 -#define TCPOPT_SACK_PERMITTED 4 /* Experimental */ -#define TCPOLEN_SACK_PERMITTED 2 -#define TCPOPT_SACK 5 /* Experimental */ -#define TCPOPT_TIMESTAMP 8 -#define TCPOLEN_TIMESTAMP 10 -#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ - -#define TCPOPT_TSTAMP_HDR \ +# define TCPOPT_EOL 0 +# define TCPOPT_NOP 1 +# define TCPOPT_MAXSEG 2 +# define TCPOLEN_MAXSEG 4 +# define TCPOPT_WINDOW 3 +# define TCPOLEN_WINDOW 3 +# define TCPOPT_SACK_PERMITTED 4 /* Experimental */ +# define TCPOLEN_SACK_PERMITTED 2 +# define TCPOPT_SACK 5 /* Experimental */ +# define TCPOPT_TIMESTAMP 8 +# define TCPOLEN_TIMESTAMP 10 +# define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ + +# define TCPOPT_TSTAMP_HDR \ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) /* @@ -146,21 +158,68 @@ enum * but 512 is probably more convenient. * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)). */ -#define TCP_MSS 512 +# define TCP_MSS 512 -#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ +# define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ -#define TCP_MAX_WINSHIFT 14 /* maximum window shift */ +# define TCP_MAX_WINSHIFT 14 /* maximum window shift */ -/* - * User-settable options (used with setsockopt). - */ -#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ -#define TCP_MAXSEG 0x02 /* set maximum segment size */ -#define TCP_CORK 0x03 /* control sending of partial frames */ +# define SOL_TCP 6 /* TCP level */ + + +# define TCPI_OPT_TIMESTAMPS 1 +# define TCPI_OPT_SACK 2 +# define TCPI_OPT_WSCALE 4 +# define TCPI_OPT_ECN 8 -#define SOL_TCP 6 /* TCP level */ +/* Values for tcpi_state. */ +enum tcp_ca_state +{ + TCP_CA_Open = 0, + TCP_CA_Disorder = 1, + TCP_CA_CWR = 2, + TCP_CA_Recovery = 3, + TCP_CA_Loss = 4 +}; + +struct tcp_info +{ + u_int8_t tcpi_state; + u_int8_t tcpi_ca_state; + u_int8_t tcpi_retransmits; + u_int8_t tcpi_probes; + u_int8_t tcpi_backoff; + u_int8_t tcpi_options; + u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; + + u_int32_t tcpi_rto; + u_int32_t tcpi_ato; + u_int32_t tcpi_snd_mss; + u_int32_t tcpi_rcv_mss; + + u_int32_t tcpi_unacked; + u_int32_t tcpi_sacked; + u_int32_t tcpi_lost; + u_int32_t tcpi_retrans; + u_int32_t tcpi_fackets; + + /* Times. */ + u_int32_t tcpi_last_data_sent; + u_int32_t tcpi_last_ack_sent; /* Not remembered, sorry. */ + u_int32_t tcpi_last_data_recv; + u_int32_t tcpi_last_ack_recv; + + /* Metrics. */ + u_int32_t tcpi_pmtu; + u_int32_t tcpi_rcv_ssthresh; + u_int32_t tcpi_rtt; + u_int32_t tcpi_rttvar; + u_int32_t tcpi_snd_ssthresh; + u_int32_t tcpi_snd_cwnd; + u_int32_t tcpi_advmss; + u_int32_t tcpi_reordering; +}; -__END_DECLS +#endif /* Misc. */ #endif /* netinet/tcp.h */ diff --git a/include/netinet/udp.h b/include/netinet/udp.h index 9ee66f0fc..5be4bbd3e 100644 --- a/include/netinet/udp.h +++ b/include/netinet/udp.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * Copyright (c) 1982, 1986 Regents of the University of California. diff --git a/include/nl_types.h b/include/nl_types.h index 2fa7d7f64..9322aa246 100644 --- a/include/nl_types.h +++ b/include/nl_types.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _NL_TYPES_H #define _NL_TYPES_H 1 @@ -37,15 +37,15 @@ typedef void *nl_catd; typedef int nl_item; /* Open message catalog for later use, returning descriptor. */ -extern nl_catd catopen (__const char *__cat_name, int __flag); +extern nl_catd catopen (__const char *__cat_name, int __flag) __THROW; /* Return translation with NUMBER in SET of CATALOG; if not found return STRING. */ extern char *catgets (nl_catd __catalog, int __set, int __number, - __const char *__string); + __const char *__string) __THROW; /* Close message CATALOG. */ -extern int catclose (nl_catd __catalog); +extern int catclose (nl_catd __catalog) __THROW; __END_DECLS diff --git a/include/paths.h b/include/paths.h index 95b63c58b..2f7cc6dad 100644 --- a/include/paths.h +++ b/include/paths.h @@ -1,22 +1,74 @@ -/* paths.h <ndf@linux.mit.edu> */ +/* + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 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. + * + * @(#)paths.h 8.1 (Berkeley) 6/2/93 + */ -#ifndef ___PATHS_H -#define ___PATHS_H +#ifndef _PATHS_H_ +#define _PATHS_H_ +/* Default search path. */ +#define _PATH_DEFPATH "/usr/bin:/bin" +/* All standard utilities path. */ +#define _PATH_STDPATH \ + "/usr/bin:/bin:/usr/sbin:/sbin" +#define _PATH_BSHELL "/bin/sh" #define _PATH_CONSOLE "/dev/console" -#define _PATH_TTY "/dev/tty" +#define _PATH_CSHELL "/bin/csh" +#define _PATH_DEVDB "/var/run/dev.db" +#define _PATH_DEVNULL "/dev/null" +#define _PATH_DRUM "/dev/drum" +#define _PATH_KLOG "/proc/kmsg" +#define _PATH_KMEM "/dev/kmem" +#define _PATH_LASTLOG "/var/log/lastlog" +#define _PATH_MAILDIR "/var/mail" +#define _PATH_MAN "/usr/share/man" +#define _PATH_MEM "/dev/mem" +#define _PATH_MNTTAB "/etc/fstab" +#define _PATH_MOUNTED "/etc/mtab" #define _PATH_NOLOGIN "/etc/nologin" -#define _PATH_LOGIN "/bin/login" -#define _PATH_BSHELL "/bin/sh" +#define _PATH_PRESERVE "/var/lib" +#define _PATH_RWHODIR "/var/spool/rwho" +#define _PATH_SENDMAIL "/usr/sbin/sendmail" +#define _PATH_SHADOW "/etc/shadow" +#define _PATH_SHELLS "/etc/shells" +#define _PATH_TTY "/dev/tty" +#define _PATH_UNIX "/boot/vmlinux" #define _PATH_UTMP "/var/run/utmp" +#define _PATH_VI "/usr/bin/vi" #define _PATH_WTMP "/var/log/wtmp" -#define _PATH_DEFPATH "/bin:/usr/bin:/usr/local/bin:." + +/* Provide trailing slash, since mostly used for building pathnames. */ #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/run/" +#define _PATH_VARDB "/var/lib/misc/" +#define _PATH_VARRUN "/var/run/" +#define _PATH_VARTMP "/var/tmp/" -#endif /* __PATHS_H */ +#endif /* !_PATHS_H_ */ diff --git a/include/pty.h b/include/pty.h index 7c64359d2..2d4b5e270 100644 --- a/include/pty.h +++ b/include/pty.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _PTY_H #define _PTY_H 1 @@ -25,18 +25,19 @@ #include <termios.h> #include <sys/ioctl.h> + __BEGIN_DECLS /* Create pseudo tty master slave pair with NAME and set terminal attributes according to TERMP and WINP and return handles for both ends in AMASTER and ASLAVE. */ extern int openpty (int *__amaster, int *__aslave, char *__name, - struct termios *__termp, struct winsize *__winp); + struct termios *__termp, struct winsize *__winp) __THROW; /* Create child process and establish the slave pseudo terminal as the child's controlling terminal. */ extern int forkpty (int *__amaster, char *__name, - struct termios *__termp, struct winsize *__winp); + struct termios *__termp, struct winsize *__winp) __THROW; __END_DECLS diff --git a/include/pwd.h b/include/pwd.h index 3377afd88..8a54578b8 100644 --- a/include/pwd.h +++ b/include/pwd.h @@ -1,63 +1,147 @@ -#ifndef __PWD_H -#define __PWD_H +/* Copyright (C) 1991,92,95,96,97,98,99,2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * POSIX Standard: 9.2.2 User Database Access <pwd.h> + */ + +#ifndef _PWD_H +#define _PWD_H 1 -#include <sys/types.h> #include <features.h> -#include <stdio.h> __BEGIN_DECLS +#include <bits/types.h> + +#define __need_size_t +#include <stddef.h> + +#ifdef __USE_XOPEN +/* The Single Unix specification says that some more types are + available here. */ +# ifndef __gid_t_defined +typedef __gid_t gid_t; +# define __gid_t_defined +# endif + +# ifndef __uid_t_defined +typedef __uid_t uid_t; +# define __uid_t_defined +# endif +#endif + /* 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. */ + __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)); +#if defined __USE_SVID || defined __USE_GNU +# define __need_FILE +# include <stdio.h> +#endif + -extern int putpwent __P ((const struct passwd * __p, FILE * __f)); -extern int getpw __P ((uid_t uid, char *buf)); +#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN_EXTENDED +/* Rewind the password-file stream. */ +extern void setpwent (void) __THROW; -extern struct passwd * fgetpwent __P ((FILE * file)); +/* Close the password-file stream. */ +extern void endpwent (void) __THROW; -extern struct passwd * getpwuid __P ((const uid_t)); -extern struct passwd * getpwnam __P ((const char *)); +/* Read an entry from the password-file stream, opening it if necessary. */ +extern struct passwd *getpwent (void) __THROW; +#endif +#ifdef __USE_SVID +/* Read an entry from STREAM. */ +extern struct passwd *fgetpwent (FILE *__stream) __THROW; -extern int getpwent_r __P ((struct passwd *__restrict __resultbuf, - char *__restrict __buffer, size_t __buflen, - struct passwd **__restrict __result)); -extern int getpwuid_r __P ((uid_t __uid, - struct passwd *__restrict __resultbuf, - char *__restrict __buffer, size_t __buflen, - struct passwd **__restrict __result)); -extern int getpwnam_r __P ((const char *__restrict __name, - struct passwd *__restrict __resultbuf, - char *__restrict __buffer, size_t __buflen, - struct passwd **__restrict __result)); -extern int fgetpwent_r __P ((FILE *__restrict __stream, - struct passwd *__restrict __resultbuf, - char *__restrict __buffer, size_t __buflen, - struct passwd **__restrict __result)); +/* Write the given entry onto the given stream. */ +extern int putpwent (__const struct passwd *__restrict __p, + FILE *__restrict __f) __THROW; +#endif -#ifdef _LIBC -/* This is used internally to uClibc */ -extern int __getpwent_r(struct passwd * passwd, char * line_buff, - size_t buflen, int pwd_fd); +/* Search for an entry with a matching user ID. */ +extern struct passwd *getpwuid (__uid_t __uid) __THROW; + +/* Search for an entry with a matching username. */ +extern struct passwd *getpwnam (__const char *__name) __THROW; + +#if defined __USE_POSIX || defined __USE_MISC + +# ifdef __USE_MISC +/* Reasonable value for the buffer sized used in the reentrant + functions below. But better use `sysconf'. */ +# define NSS_BUFLEN_PASSWD 1024 +# endif + +/* Reentrant versions of some of the functions above. + + PLEASE NOTE: the `getpwent_r' function is not (yet) standardized. + The interface may change in later versions of this library. But + the interface is designed following the principals used for the + other reentrant functions so the chances are good this is what the + POSIX people would choose. */ + +# if defined __USE_SVID || defined __USE_MISC +extern int getpwent_r (struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result) __THROW; +# endif + +extern int getpwuid_r (__uid_t __uid, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result) __THROW; + +extern int getpwnam_r (__const char *__restrict __name, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result) __THROW; + + +# ifdef __USE_SVID +/* Read an entry from STREAM. This function is not standardized and + probably never will. */ +extern int fgetpwent_r (FILE *__restrict __stream, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result) __THROW; +# endif + +#endif /* POSIX or reentrant */ + +#ifdef __USE_GNU +/* Re-construct the password-file line for the given uid + in the given buffer. This knows the format that the caller + will expect, but this need not be the format of the password file. */ +extern int getpw (__uid_t __uid, char *__buffer) __THROW; #endif __END_DECLS #endif /* pwd.h */ - - - diff --git a/include/regex.h b/include/regex.h index 113a32e72..b9c2d97cc 100644 --- a/include/regex.h +++ b/include/regex.h @@ -1,24 +1,23 @@ /* Definitions for data structures and routines for the regular expression library, version 0.12. - Copyright (C) 1985,1989-1993,1995-1998,2000 Free Software Foundation, Inc. - + Copyright (C) 1985,1989-1993,1995-1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Its master source is NOT part of the C library, however. The master source lives in /gd/gnu/lib. 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _REGEX_H #define _REGEX_H 1 @@ -160,6 +159,11 @@ typedef unsigned long int reg_syntax_t; this bit set, and it won't affect anything in the normal case. */ #define RE_DEBUG (RE_NO_GNU_OPS << 1) +/* If this bit is set, a syntactically invalid interval is treated as + a string of ordinary characters. For example, the ERE 'a{1' is + treated as 'a\{1'. */ +#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1) + /* This global variable defines the particular regexp syntax to use (for some interfaces). When a regexp is compiled, the syntax used is stored in the pattern buffer, so changing this does not affect @@ -199,7 +203,8 @@ extern reg_syntax_t re_syntax_options; | RE_NO_BK_VBAR) #define RE_SYNTAX_POSIX_EGREP \ - (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES) + (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES \ + | RE_INVALID_INTERVAL_ORD) /* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */ #define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC @@ -226,8 +231,8 @@ extern reg_syntax_t re_syntax_options; | RE_NO_BK_PARENS | RE_NO_BK_VBAR \ | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD) -/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS - replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */ +/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is + removed and RE_NO_BK_REFS is added. */ #define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \ @@ -513,13 +518,31 @@ extern int re_exec _RE_ARGS ((const char *)); # endif #endif +/* GCC 2.95 and later have "__restrict"; C99 compilers have + "restrict", and "configure" may have defined "restrict". */ +#ifndef __restrict +# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) +# if defined restrict || 199901L <= __STDC_VERSION__ +# define __restrict restrict +# else +# define __restrict +# endif +# endif +#endif +/* For now unconditionally define __restrict_arr to expand to nothing. + Ideally we would have a test for the compiler which allows defining + it to restrict. */ +#define __restrict_arr + /* POSIX compatibility. */ -extern int regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern, +extern int regcomp _RE_ARGS ((regex_t *__restrict __preg, + const char *__restrict __pattern, int __cflags)); -extern int regexec _RE_ARGS ((const regex_t *__preg, - const char *__string, size_t __nmatch, - regmatch_t __pmatch[], int __eflags)); +extern int regexec _RE_ARGS ((const regex_t *__restrict __preg, + const char *__restrict __string, size_t __nmatch, + regmatch_t __pmatch[__restrict_arr], + int __eflags)); extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg, char *__errbuf, size_t __errbuf_size)); diff --git a/include/regexp.h b/include/regexp.h index fc60d3ca5..bb1c4017f 100644 --- a/include/regexp.h +++ b/include/regexp.h @@ -3,19 +3,19 @@ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _REGEXP_H #define _REGEXP_H 1 @@ -206,14 +206,14 @@ compile (char *__restrict instring, char *__restrict expbuf, found in the buffer starting at EXPBUF. `loc1' will return the first character matched and `loc2' points to the next unmatched character. */ -extern int step __P ((__const char *__restrict __string, - __const char *__restrict __expbuf)); +extern int step (__const char *__restrict __string, + __const char *__restrict __expbuf) __THROW; /* Match the beginning of STRING with the compiled regular expression in EXPBUF. If the match is successful `loc2' will contain the position of the first unmatched character. */ -extern int advance __P ((__const char *__restrict __string, - __const char *__restrict __expbuf)); +extern int advance (__const char *__restrict __string, + __const char *__restrict __expbuf) __THROW; __END_DECLS diff --git a/include/resolv.h b/include/resolv.h index 9ac45959a..bb8c78293 100644 --- a/include/resolv.h +++ b/include/resolv.h @@ -1,18 +1,56 @@ -/* resolv.h: DNS Resolver +/* + * Copyright (c) 1983, 1987, 1989 + * The Regents of the University of California. All rights reserved. * - * Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com>, - * The Silver Hammer Group, Ltd. + * 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. + * 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 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 SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ -#ifndef _RESOLV_H_ -#define _RESOLV_H_ +/* + * Portions Copyright (c) 1996-1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM 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. + */ -#include <features.h> +/* + * @(#)resolv.h 8.1 (Berkeley) 6/2/93 + * $BINDId: resolv.h,v 8.31 2000/03/30 20:16:50 vixie Exp $ + */ + +#ifndef _RESOLV_H_ +#define _RESOLV_H_ #include <sys/param.h> #if (!defined(BSD)) || (BSD < 199306) @@ -20,71 +58,321 @@ #else # include <sys/types.h> #endif +#include <sys/cdefs.h> #include <stdio.h> + #include <netinet/in.h> +#include <arpa/nameser.h> -__BEGIN_DECLS +/* + * 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 (__RES > 19931104)". Do not + * compare for equality; rather, use it to determine whether your resolver + * is new enough to contain a certain feature. + */ -struct resolv_header { - int id; - int qr,opcode,aa,tc,rd,ra,rcode; - int qdcount; - int ancount; - int nscount; - int arcount; -}; +#define __RES 19991006 -struct resolv_question { - char * dotted; - int qtype; - int qclass; +/* + * Resolver configuration file. + * Normally not present, but may contain the address of the + * inital name server(s) to query and the domain search list. + */ + +#ifndef _PATH_RESCONF +#define _PATH_RESCONF "/etc/resolv.conf" +#endif + +typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error } + res_sendhookact; + +typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns, + const u_char **query, + int *querylen, + u_char *ans, + int anssiz, + int *resplen); + +typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns, + const u_char *query, + int querylen, + u_char *ans, + int anssiz, + int *resplen); + +struct res_sym { + int number; /* Identifying number, like T_MX */ + char * name; /* Its symbolic name, like "MX" */ + char * humanname; /* Its fun name, like "mail exchanger" */ }; -struct resolv_answer { - char * dotted; - int atype; - int aclass; - int ttl; - int rdlength; - unsigned char * rdata; - int rdoffset; +/* + * Global defines and variables for resolver stub. + */ +#define MAXNS 3 /* max # name servers we'll track */ +#define MAXDFLSRCH 3 /* # default domain levels to try */ +#define MAXDNSRCH 6 /* max # domains in search path */ +#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ + +#define RES_TIMEOUT 5 /* min. seconds between retries */ +#define MAXRESOLVSORT 10 /* number of net to sort on */ +#define RES_MAXNDOTS 15 /* should reflect bit field size */ +#define RES_MAXRETRANS 30 /* only for resolv.conf/RES_OPTIONS */ +#define RES_MAXRETRY 5 /* only for resolv.conf/RES_OPTIONS */ +#define RES_DFLRETRY 2 /* Default #/tries. */ +#define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ + +struct __res_state { + int retrans; /* retransmition time interval */ + int retry; /* number of times to retransmit */ + u_long options; /* option flags - see below. */ + int nscount; /* number of name servers */ + struct sockaddr_in + nsaddr_list[MAXNS]; /* address of name server */ +#define nsaddr nsaddr_list[0] /* for backward compatibility */ + u_short id; /* current message id */ + char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ + char defdname[256]; /* default domain (deprecated) */ + u_long pfcode; /* RES_PRF_ flags - see below. */ + unsigned ndots:4; /* threshold for initial abs. query */ + unsigned nsort:4; /* number of elements in sort_list[] */ + char unused[3]; + struct { + struct in_addr addr; + u_int32_t mask; + } sort_list[MAXRESOLVSORT]; + res_send_qhook qhook; /* query hook */ + res_send_rhook rhook; /* response hook */ + int res_h_errno; /* last one set for this context */ + int _vcsock; /* PRIVATE: for res_send VC i/o */ + u_int _flags; /* PRIVATE: see below */ + union { + char pad[52]; /* On an i386 this means 512b total. */ + struct { + u_int16_t nscount; + u_int16_t nstimes[MAXNS]; /* ms. */ + int nssocks[MAXNS]; + u_int16_t nscount6; + u_int16_t nsinit; + struct sockaddr_in6 *nsaddrs[MAXNS]; + } _ext; + } _u; }; -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); -const char * resolve_name(const char * name, int mailbox); - -int encode_packet(struct resolv_header * h, - struct resolv_question ** q, - struct resolv_answer ** an, - struct resolv_answer ** ns, - struct resolv_answer ** ar, - unsigned char * dest, int maxlen); -int decode_packet(unsigned char * data, struct resolv_header * h); - -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); - -extern int res_init(void); -extern int res_query(const char *dname, int class, int type, - unsigned char *answer, int anslen); +typedef struct __res_state *res_state; + +/* + * Resolver flags (used to be discrete per-module statics ints). + */ +#define RES_F_VC 0x00000001 /* socket is TCP */ +#define RES_F_CONN 0x00000002 /* socket is connected */ + +/* res_findzonecut() options */ +#define RES_EXHAUSTIVE 0x00000001 /* always do all queries */ + +/* + * Resolver options (keep these in synch with res_debug.c, please) + */ +#define RES_INIT 0x00000001 /* address initialized */ +#define RES_DEBUG 0x00000002 /* print debug messages */ +#define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ +#define RES_USEVC 0x00000008 /* use virtual circuit */ +#define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ +#define RES_IGNTC 0x00000020 /* ignore trucation errors */ +#define RES_RECURSE 0x00000040 /* recursion desired */ +#define RES_DEFNAMES 0x00000080 /* use default domain name */ +#define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ +#define RES_DNSRCH 0x00000200 /* search up local domain tree */ +#define RES_INSECURE1 0x00000400 /* type 1 security disabled */ +#define RES_INSECURE2 0x00000800 /* type 2 security disabled */ +#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ +#define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ +#define RES_ROTATE 0x00004000 /* rotate ns list after each query */ +#define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity. */ +#define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */ +#define RES_BLAST 0x00020000 /* blast all recursive servers */ + +#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH) + +/* + * Resolver "pfcode" values. Used by dig. + */ +#define RES_PRF_STATS 0x00000001 +#define RES_PRF_UPDATE 0x00000002 +#define RES_PRF_CLASS 0x00000004 +#define RES_PRF_CMD 0x00000008 +#define RES_PRF_QUES 0x00000010 +#define RES_PRF_ANS 0x00000020 +#define RES_PRF_AUTH 0x00000040 +#define RES_PRF_ADD 0x00000080 +#define RES_PRF_HEAD1 0x00000100 +#define RES_PRF_HEAD2 0x00000200 +#define RES_PRF_TTLID 0x00000400 +#define RES_PRF_HEADX 0x00000800 +#define RES_PRF_QUERY 0x00001000 +#define RES_PRF_REPLY 0x00002000 +#define RES_PRF_INIT 0x00004000 +/* 0x00008000 */ + +/* Things involving an internal (static) resolver context. */ +#if !defined _LIBC || defined _LIBC_REENTRANT +__BEGIN_DECLS +extern struct __res_state *__res_state(void) __attribute__ ((__const__)); +__END_DECLS +#define _res (*__res_state()) +#else +#ifndef __BIND_NOSTATIC +extern struct __res_state _res; +#endif +#endif + +#ifndef __BIND_NOSTATIC +#define fp_nquery __fp_nquery +#define fp_query __fp_query +#define hostalias __hostalias +#define p_query __p_query +#define res_close __res_close +#define res_init __res_init +#define res_isourserver __res_isourserver +#define res_mkquery __res_mkquery +#define res_query __res_query +#define res_querydomain __res_querydomain +#define res_search __res_search +#define res_send __res_send +__BEGIN_DECLS +void fp_nquery __P((const u_char *, int, FILE *)); +void fp_query __P((const u_char *, FILE *)); +const char * hostalias __P((const char *)); +void p_query __P((const u_char *)); +void res_close __P((void)); +int res_init __P((void)); +int res_isourserver __P((const struct sockaddr_in *)); +int res_mkquery __P((int, const char *, int, int, const u_char *, + int, const u_char *, u_char *, int)); +int res_query __P((const char *, int, int, u_char *, int)); +int res_querydomain __P((const char *, const char *, int, int, + u_char *, int)); +int res_search __P((const char *, int, int, u_char *, int)); +int res_send __P((const u_char *, int, u_char *, int)); +__END_DECLS +#endif + +#if !defined(SHARED_LIBBIND) || defined(LIB) +/* + * If libbind is a shared object (well, DLL anyway) + * these externs break the linker when resolv.h is + * included by a lib client (like named) + * Make them go away if a client is including this + * + */ +extern const struct res_sym __p_key_syms[]; +extern const struct res_sym __p_cert_syms[]; +extern const struct res_sym __p_class_syms[]; +extern const struct res_sym __p_type_syms[]; +extern const struct res_sym __p_rcode_syms[]; +#endif /* SHARED_LIBBIND */ + +#define b64_ntop __b64_ntop +#define b64_pton __b64_pton +#define dn_comp __dn_comp +#define dn_count_labels __dn_count_labels +#define dn_expand __dn_expand +#define dn_skipname __dn_skipname +#define fp_resstat __fp_resstat +#define loc_aton __loc_aton +#define loc_ntoa __loc_ntoa +#define p_cdname __p_cdname +#define p_cdnname __p_cdnname +#define p_class __p_class +#define p_fqname __p_fqname +#define p_fqnname __p_fqnname +#define p_option __p_option +#define p_secstodate __p_secstodate +#define p_section __p_section +#define p_time __p_time +#define p_type __p_type +#define p_rcode __p_rcode +#define putlong __putlong +#define putshort __putshort +#define res_dnok __res_dnok +#define res_hnok __res_hnok +#define res_hostalias __res_hostalias +#define res_mailok __res_mailok +#define res_nameinquery __res_nameinquery +#define res_nclose __res_nclose +#define res_ninit __res_ninit +#define res_nmkquery __res_nmkquery +#define res_npquery __res_npquery +#define res_nquery __res_nquery +#define res_nquerydomain __res_nquerydomain +#define res_nsearch __res_nsearch +#define res_nsend __res_nsend +#define res_nisourserver __res_nisourserver +#define res_ownok __res_ownok +#define res_queriesmatch __res_queriesmatch +#define res_randomid __res_randomid +#define sym_ntop __sym_ntop +#define sym_ntos __sym_ntos +#define sym_ston __sym_ston +__BEGIN_DECLS +int res_hnok __P((const char *)); +int res_ownok __P((const char *)); +int res_mailok __P((const char *)); +int res_dnok __P((const char *)); +int sym_ston __P((const struct res_sym *, const char *, int *)); +const char * sym_ntos __P((const struct res_sym *, int, int *)); +const char * sym_ntop __P((const struct res_sym *, int, int *)); +int b64_ntop __P((u_char const *, size_t, char *, size_t)); +int b64_pton __P((char const *, u_char *, size_t)); +int loc_aton __P((const char *ascii, u_char *binary)); +const char * loc_ntoa __P((const u_char *binary, char *ascii)); +int dn_skipname __P((const u_char *, const u_char *)); +void putlong __P((u_int32_t, u_char *)); +void putshort __P((u_int16_t, u_char *)); +const char * p_class __P((int)); +const char * p_time __P((u_int32_t)); +const char * p_type __P((int)); +const char * p_rcode __P((int)); +const u_char * p_cdnname __P((const u_char *, const u_char *, int, FILE *)); +const u_char * p_cdname __P((const u_char *, const u_char *, FILE *)); +const u_char * p_fqnname __P((const u_char *cp, const u_char *msg, + int, char *, int)); +const u_char * p_fqname __P((const u_char *, const u_char *, FILE *)); +const char * p_option __P((u_long option)); +char * p_secstodate __P((u_long)); +int dn_count_labels __P((const char *)); +int dn_comp __P((const char *, u_char *, int, + u_char **, u_char **)); +int dn_expand __P((const u_char *, const u_char *, const u_char *, + char *, int)); +u_int res_randomid __P((void)); +int res_nameinquery __P((const char *, int, int, + const u_char *, const u_char *)); +int res_queriesmatch __P((const u_char *, const u_char *, + const u_char *, const u_char *)); +const char * p_section __P((int section, int opcode)); +/* Things involving a resolver context. */ +int res_ninit __P((res_state)); +int res_nisourserver __P((const res_state, + const struct sockaddr_in *)); +void fp_resstat __P((const res_state, FILE *)); +void res_npquery __P((const res_state, const u_char *, int, FILE *)); +const char * res_hostalias __P((const res_state, const char *, + char *, size_t)); +int res_nquery __P((res_state, + const char *, int, int, u_char *, int)); +int res_nsearch __P((res_state, const char *, int, + int, u_char *, int)); +int res_nquerydomain __P((res_state, + const char *, const char *, int, int, + u_char *, int)); +int res_nmkquery __P((res_state, + int, const char *, int, int, const u_char *, + int, const u_char *, u_char *, int)); +int res_nsend __P((res_state, const u_char *, int, u_char *, int)); +void res_nclose __P((res_state)); __END_DECLS -#endif /*_RESOLV_H_*/ +#endif /* !_RESOLV_H_ */ diff --git a/include/rpc/auth.h b/include/rpc/auth.h index e0e1e5f67..661295766 100644 --- a/include/rpc/auth.h +++ b/include/rpc/auth.h @@ -77,7 +77,7 @@ union des_block { char c[8]; }; typedef union des_block des_block; -extern bool_t xdr_des_block __P ((XDR *__xdrs, des_block *__blkp)); +extern bool_t xdr_des_block (XDR *__xdrs, des_block *__blkp) __THROW; /* * Authentication info. Opaque to client. @@ -97,12 +97,12 @@ struct AUTH { struct opaque_auth ah_verf; union des_block ah_key; struct auth_ops { - void (*ah_nextverf) __PMT ((AUTH *)); - int (*ah_marshal) __PMT ((AUTH *, XDR *)); /* nextverf & serialize */ - int (*ah_validate) __PMT ((AUTH *, struct opaque_auth *)); + void (*ah_nextverf) (AUTH *); + int (*ah_marshal) (AUTH *, XDR *); /* nextverf & serialize */ + int (*ah_validate) (AUTH *, struct opaque_auth *); /* validate verifier */ - int (*ah_refresh) __PMT ((AUTH *)); /* refresh credentials */ - void (*ah_destroy) __PMT ((AUTH *)); /* destroy this structure */ + int (*ah_refresh) (AUTH *); /* refresh credentials */ + void (*ah_destroy) (AUTH *); /* destroy this structure */ } *ah_ops; caddr_t ah_private; }; @@ -158,16 +158,15 @@ extern struct opaque_auth _null_auth; * int len; * int *aup_gids; */ -extern AUTH *authunix_create __P ((char *__machname, __uid_t __uid, - __gid_t __gid, int __len, - __gid_t *__aup_gids)); -extern AUTH *authunix_create_default __P ((void)); -extern AUTH *authnone_create __P ((void)); -extern AUTH *authdes_create __P ((const char *__servername, u_int __window, - struct sockaddr *__syncaddr, - des_block *__ckey)); -extern AUTH *authdes_pk_create __P ((const char *, netobj *, u_int, - struct sockaddr *, des_block *)); +extern AUTH *authunix_create (char *__machname, __uid_t __uid, __gid_t __gid, + int __len, __gid_t *__aup_gids) __THROW; +extern AUTH *authunix_create_default (void) __THROW; +extern AUTH *authnone_create (void) __THROW; +extern AUTH *authdes_create (const char *__servername, u_int __window, + struct sockaddr *__syncaddr, des_block *__ckey) + __THROW; +extern AUTH *authdes_pk_create (const char *, netobj *, u_int, + struct sockaddr *, des_block *) __THROW; #define AUTH_NONE 0 /* no authentication */ @@ -183,31 +182,31 @@ extern AUTH *authdes_pk_create __P ((const char *, netobj *, u_int, * Netname manipulating functions * */ -extern int getnetname __P ((char *)); -extern int host2netname __P ((char *, __const char *, __const char *)); -extern int user2netname __P ((char *, __const uid_t, __const char *)); -extern int netname2user __P ((__const char *, uid_t *, gid_t *, int *, - gid_t *)); -extern int netname2host __P ((__const char *, char *, __const int)); +extern int getnetname (char *) __THROW; +extern int host2netname (char *, __const char *, __const char *) __THROW; +extern int user2netname (char *, __const uid_t, __const char *) __THROW; +extern int netname2user (__const char *, uid_t *, gid_t *, int *, gid_t *) + __THROW; +extern int netname2host (__const char *, char *, __const int) __THROW; /* * * These routines interface to the keyserv daemon * */ -extern int key_decryptsession __P ((char *, des_block *)); -extern int key_decryptsession_pk __P ((char *, netobj *, des_block *)); -extern int key_encryptsession __P ((char *, des_block *)); -extern int key_encryptsession_pk __P ((char *, netobj *, des_block *)); -extern int key_gendes __P ((des_block *)); -extern int key_setsecret __P ((char *)); -extern int key_secretkey_is_set __P ((void)); -extern int key_get_conv __P ((char *, des_block *)); +extern int key_decryptsession (char *, des_block *) __THROW; +extern int key_decryptsession_pk (char *, netobj *, des_block *) __THROW; +extern int key_encryptsession (char *, des_block *) __THROW; +extern int key_encryptsession_pk (char *, netobj *, des_block *) __THROW; +extern int key_gendes (des_block *) __THROW; +extern int key_setsecret (char *) __THROW; +extern int key_secretkey_is_set (void) __THROW; +extern int key_get_conv (char *, des_block *) __THROW; /* * XDR an opaque authentication struct. */ -extern bool_t xdr_opaque_auth __P ((XDR *, struct opaque_auth *)); +extern bool_t xdr_opaque_auth (XDR *, struct opaque_auth *) __THROW; __END_DECLS diff --git a/include/rpc/auth_des.h b/include/rpc/auth_des.h index b94bafb67..12ada8404 100644 --- a/include/rpc/auth_des.h +++ b/include/rpc/auth_des.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; 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 @@ -86,26 +86,25 @@ struct authdes_verf #define adv_nickname adv_int_u /* Map a des credential into a unix cred. */ -extern int authdes_getucred __P ((__const struct authdes_cred * __adc, - uid_t * __uid, gid_t * __gid, - short *__grouplen, gid_t * __groups)); +extern int authdes_getucred (__const struct authdes_cred * __adc, + uid_t * __uid, gid_t * __gid, + short *__grouplen, gid_t * __groups) __THROW; /* 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 HEXKEYBYTES + 1 bytes long to fit all characters from the key. */ -extern int getpublickey __P ((__const char *__name, char *__key)); +extern int getpublickey (__const char *__name, char *__key) __THROW; /* 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 HEXKEYBYTES + 1 bytes long to fit all characters from the key. */ -extern int getsecretkey __P ((__const char *__name, char *__key, - __const char *__passwd)); +extern int getsecretkey (__const char *__name, char *__key, + __const char *__passwd) __THROW; -extern int rtime __P ((struct sockaddr_in *__addrp, - struct rpc_timeval *__timep, - struct rpc_timeval *__timeout)); +extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep, + struct rpc_timeval *__timeout) __THROW; __END_DECLS diff --git a/include/rpc/auth_unix.h b/include/rpc/auth_unix.h index ed3b9322c..424661d9c 100644 --- a/include/rpc/auth_unix.h +++ b/include/rpc/auth_unix.h @@ -72,8 +72,8 @@ struct authunix_parms __gid_t *aup_gids; }; -extern bool_t xdr_authunix_parms __P ((XDR *__xdrs, - struct authunix_parms *__p)); +extern bool_t xdr_authunix_parms (XDR *__xdrs, struct authunix_parms *__p) + __THROW; /* * If a response verifier has flavor AUTH_SHORT, diff --git a/include/rpc/clnt.h b/include/rpc/clnt.h index b3852927a..a19fc773b 100644 --- a/include/rpc/clnt.h +++ b/include/rpc/clnt.h @@ -133,17 +133,16 @@ typedef struct CLIENT CLIENT; struct CLIENT { AUTH *cl_auth; /* authenticator */ struct clnt_ops { - enum clnt_stat (*cl_call) __PMT ((CLIENT *, u_long, xdrproc_t, - caddr_t, xdrproc_t, - caddr_t, struct timeval)); + enum clnt_stat (*cl_call) (CLIENT *, u_long, xdrproc_t, caddr_t, xdrproc_t, + caddr_t, struct timeval); /* call remote procedure */ - void (*cl_abort) __PMT ((void)); /* abort a call */ - void (*cl_geterr) __PMT ((CLIENT *, struct rpc_err *)); + void (*cl_abort) (void); /* abort a call */ + void (*cl_geterr) (CLIENT *, struct rpc_err *); /* get specific error code */ - bool_t (*cl_freeres) __PMT ((CLIENT *, xdrproc_t, caddr_t)); + bool_t (*cl_freeres) (CLIENT *, xdrproc_t, caddr_t); /* frees results */ - void (*cl_destroy) __PMT ((CLIENT *)); /* destroy this structure */ - bool_t (*cl_control) __PMT ((CLIENT *, int, char *)); + void (*cl_destroy) (CLIENT *); /* destroy this structure */ + bool_t (*cl_control) (CLIENT *, int, char *); /* the ioctl() of rpc */ } *cl_ops; caddr_t cl_private; /* private stuff */ @@ -278,8 +277,8 @@ struct CLIENT { * u_long prog; * u_long vers; */ -extern CLIENT *clntraw_create __P ((__const u_long __prog, - __const u_long __vers)); +extern CLIENT *clntraw_create (__const u_long __prog, __const u_long __vers) + __THROW; /* @@ -292,8 +291,9 @@ extern CLIENT *clntraw_create __P ((__const u_long __prog, * u_ong vers; -- version number * char *prot; -- protocol */ -extern CLIENT *clnt_create __P ((__const char *__host, __const u_long __prog, - __const u_long __vers, __const char *__prot)); +extern CLIENT *clnt_create (__const char *__host, __const u_long __prog, + __const u_long __vers, __const char *__prot) + __THROW; /* @@ -307,10 +307,9 @@ extern CLIENT *clnt_create __P ((__const char *__host, __const u_long __prog, * u_int sendsz; * u_int recvsz; */ -extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr, - u_long __prog, u_long __version, - int *__sockp, u_int __sendsz, - u_int __recvsz)); +extern CLIENT *clnttcp_create (struct sockaddr_in *__raddr, u_long __prog, + u_long __version, int *__sockp, u_int __sendsz, + u_int __recvsz) __THROW; /* * UDP based rpc. @@ -333,15 +332,15 @@ extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr, * u_int sendsz; * u_int recvsz; */ -extern CLIENT *clntudp_create __P ((struct sockaddr_in *__raddr, - u_long __program, u_long __version, - struct timeval __wait_resend, - int *__sockp)); -extern CLIENT *clntudp_bufcreate __P ((struct sockaddr_in *__raddr, - u_long __program, u_long __version, - struct timeval __wait_resend, - int *__sockp, u_int __sendsz, - u_int __recvsz)); +extern CLIENT *clntudp_create (struct sockaddr_in *__raddr, u_long __program, + u_long __version, struct timeval __wait_resend, + int *__sockp) __THROW; +extern CLIENT *clntudp_bufcreate (struct sockaddr_in *__raddr, + u_long __program, u_long __version, + struct timeval __wait_resend, int *__sockp, + u_int __sendsz, u_int __recvsz) __THROW; + + /* @@ -355,35 +354,34 @@ extern CLIENT *clntudp_bufcreate __P ((struct sockaddr_in *__raddr, * u_int sendsz; * u_int recvsz; */ -extern CLIENT *clntunix_create __P ((struct sockaddr_un *__raddr, - u_long __program, u_long __version, - int *__sockp, u_int __sendsz, - u_int __recvsz)); +extern CLIENT *clntunix_create (struct sockaddr_un *__raddr, u_long __program, + u_long __version, int *__sockp, + u_int __sendsz, u_int __recvsz) __THROW; -extern int callrpc __P ((__const char *__host, __const u_long __prognum, - __const u_long __versnum, __const u_long __procnum, - __const xdrproc_t __inproc, __const char *__in, - __const xdrproc_t __outproc, char *__out)); -extern int _rpc_dtablesize __P ((void)); +extern int callrpc (__const char *__host, __const u_long __prognum, + __const u_long __versnum, __const u_long __procnum, + __const xdrproc_t __inproc, __const char *__in, + __const xdrproc_t __outproc, char *__out) __THROW; +extern int _rpc_dtablesize (void) __THROW; /* * Print why creation failed */ -extern void clnt_pcreateerror __P ((__const char *__msg)); /* stderr */ -extern char *clnt_spcreateerror __P ((__const char *__msg)); /* string */ +extern void clnt_pcreateerror (__const char *__msg) __THROW; /* stderr */ +extern char *clnt_spcreateerror(__const char *__msg) __THROW; /* string */ /* * Like clnt_perror(), but is more verbose in its output */ -extern void clnt_perrno __P ((enum clnt_stat __num)); /* stderr */ +extern void clnt_perrno (enum clnt_stat __num) __THROW; /* stderr */ /* * Print an English error message, given the client error code */ -extern void clnt_perror __P ((CLIENT *__clnt, __const char *__msg)); +extern void clnt_perror (CLIENT *__clnt, __const char *__msg) __THROW; /* stderr */ -extern char *clnt_sperror __P ((CLIENT *__clnt, __const char *__msg)); +extern char *clnt_sperror (CLIENT *__clnt, __const char *__msg) __THROW; /* string */ /* @@ -401,19 +399,19 @@ extern struct rpc_createerr rpc_createerr; /* * Copy error message to buffer. */ -extern char *clnt_sperrno __P ((enum clnt_stat __num)); /* string */ +extern char *clnt_sperrno (enum clnt_stat __num) __THROW; /* string */ /* * get the port number on the host for the rpc program,version and proto */ -extern int getrpcport __P ((__const char * __host, u_long __prognum, - u_long __versnum, u_int proto)); +extern int getrpcport (__const char * __host, u_long __prognum, + u_long __versnum, u_int proto) __THROW; /* * get the local host's IP address without consulting * name service library functions */ -extern void get_myaddress __P ((struct sockaddr_in *)); +extern void get_myaddress (struct sockaddr_in *) __THROW; #define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */ #define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */ diff --git a/include/rpc/des_crypt.h b/include/rpc/des_crypt.h index e20cc3824..6a65887d3 100644 --- a/include/rpc/des_crypt.h +++ b/include/rpc/des_crypt.h @@ -11,23 +11,23 @@ * 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 @@ -47,7 +47,7 @@ __BEGIN_DECLS #define DES_DEVMASK (1 << 1) -#define DES_HW (0*DES_DEVMASK) /* Use hardware device */ +#define DES_HW (0*DES_DEVMASK) /* Use hardware device */ #define DES_SW (1*DES_DEVMASK) /* Use software device */ @@ -77,20 +77,20 @@ __BEGIN_DECLS /* * Cipher Block Chaining mode */ -extern int cbc_crypt __P ((char *__key, char *__buf, unsigned __len, - unsigned __mode, char *__ivec)); +extern int cbc_crypt (char *__key, char *__buf, unsigned __len, + unsigned __mode, char *__ivec) __THROW; /* * Electronic Code Book mode */ -extern int ecb_crypt __P ((char *__key, char *__buf, unsigned __len, - unsigned __mode)); +extern int ecb_crypt (char *__key, char *__buf, unsigned __len, + unsigned __mode) __THROW; -/* +/* * Set des parity for a key. * DES parity is odd and in the low bit of each byte */ -extern void des_setparity __P ((char *__key)); +extern void des_setparity (char *__key) __THROW; __END_DECLS diff --git a/include/rpc/netdb.h b/include/rpc/netdb.h index 6b820c84d..539d8c326 100644 --- a/include/rpc/netdb.h +++ b/include/rpc/netdb.h @@ -50,23 +50,23 @@ struct rpcent int r_number; /* RPC program number. */ }; -extern void setrpcent __P ((int _stayopen)); -extern void endrpcent __P ((void)); -extern struct rpcent *getrpcbyname __P ((__const char *__name)); -extern struct rpcent *getrpcbynumber __P ((int __number)); -extern struct rpcent *getrpcent __P ((void)); +extern void setrpcent (int __stayopen) __THROW; +extern void endrpcent (void) __THROW; +extern struct rpcent *getrpcbyname (__const char *__name) __THROW; +extern struct rpcent *getrpcbynumber (int __number) __THROW; +extern struct rpcent *getrpcent (void) __THROW; #ifdef __USE_MISC -extern int getrpcbyname_r __P ((__const char *__name, - struct rpcent *__result_buf, char *__buffer, - size_t __buflen, struct rpcent **__result)); +extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result) __THROW; -extern int getrpcbynumber_r __P ((int __number, struct rpcent *__result_buf, - char *__buffer, size_t __buflen, - struct rpcent **__result)); +extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result) __THROW; -extern int getrpcent_r __P ((struct rpcent *__result_buf, char *__buffer, - size_t __buflen, struct rpcent **__result)); +extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, + size_t __buflen, struct rpcent **__result) __THROW; #endif __END_DECLS diff --git a/include/rpc/pmap_clnt.h b/include/rpc/pmap_clnt.h index d9800d400..1b1c45291 100644 --- a/include/rpc/pmap_clnt.h +++ b/include/rpc/pmap_clnt.h @@ -45,8 +45,7 @@ __BEGIN_DECLS -typedef bool_t (*resultproc_t) __PMT ((caddr_t resp, - struct sockaddr_in *raddr)); +typedef bool_t (*resultproc_t) (caddr_t resp, struct sockaddr_in *raddr); /* * Usage: @@ -70,30 +69,29 @@ typedef bool_t (*resultproc_t) __PMT ((caddr_t resp, * address if the responder to the broadcast. */ -extern bool_t pmap_set __P ((__const u_long __program, __const u_long __vers, - int __protocol, u_short __port)); -extern bool_t pmap_unset __P ((__const u_long __program, __const u_long __vers)); -extern struct pmaplist *pmap_getmaps __P ((struct sockaddr_in *__address)); -extern enum clnt_stat pmap_rmtcall __P ((struct sockaddr_in *__addr, - __const u_long __prog, - __const u_long __vers, - __const u_long __proc, - xdrproc_t __xdrargs, - caddr_t __argsp, xdrproc_t __xdrres, - caddr_t __resp, struct timeval __tout, - u_long *__port_ptr)); -extern enum clnt_stat clnt_broadcast __P ((__const u_long __prog, - __const u_long __vers, - __const u_long __proc, - xdrproc_t __xargs, - caddr_t __argsp, - xdrproc_t __xresults, - caddr_t __resultsp, - resultproc_t __eachresult)); -extern u_short pmap_getport __P ((struct sockaddr_in *__address, - __const u_long __program, - __const u_long __version, - u_int __protocol)); +extern bool_t pmap_set (__const u_long __program, __const u_long __vers, + int __protocol, u_short __port) __THROW; +extern bool_t pmap_unset (__const u_long __program, __const u_long __vers) + __THROW; +extern struct pmaplist *pmap_getmaps (struct sockaddr_in *__address) __THROW; +extern enum clnt_stat pmap_rmtcall (struct sockaddr_in *__addr, + __const u_long __prog, + __const u_long __vers, + __const u_long __proc, + xdrproc_t __xdrargs, + caddr_t __argsp, xdrproc_t __xdrres, + caddr_t __resp, struct timeval __tout, + u_long *__port_ptr) __THROW; +extern enum clnt_stat clnt_broadcast (__const u_long __prog, + __const u_long __vers, + __const u_long __proc, xdrproc_t __xargs, + caddr_t __argsp, xdrproc_t __xresults, + caddr_t __resultsp, + resultproc_t __eachresult) __THROW; +extern u_short pmap_getport (struct sockaddr_in *__address, + __const u_long __program, + __const u_long __version, u_int __protocol) + __THROW; __END_DECLS diff --git a/include/rpc/pmap_prot.h b/include/rpc/pmap_prot.h index 52185d319..cd64e36de 100644 --- a/include/rpc/pmap_prot.h +++ b/include/rpc/pmap_prot.h @@ -94,14 +94,14 @@ struct pmap { long unsigned pm_port; }; -extern bool_t xdr_pmap __P ((XDR *__xdrs, struct pmap *__regs)); +extern bool_t xdr_pmap (XDR *__xdrs, struct pmap *__regs) __THROW; struct pmaplist { struct pmap pml_map; struct pmaplist *pml_next; }; -extern bool_t xdr_pmaplist __P ((XDR *__xdrs, struct pmaplist **__rp)); +extern bool_t xdr_pmaplist (XDR *__xdrs, struct pmaplist **__rp) __THROW; __END_DECLS diff --git a/include/rpc/pmap_rmt.h b/include/rpc/pmap_rmt.h index bb35ad63e..7a38b5f5f 100644 --- a/include/rpc/pmap_rmt.h +++ b/include/rpc/pmap_rmt.h @@ -51,7 +51,8 @@ struct rmtcallargs { xdrproc_t xdr_args; }; -extern bool_t xdr_rmtcall_args __P ((XDR *__xdrs, struct rmtcallargs *__crp)); +extern bool_t xdr_rmtcall_args (XDR *__xdrs, struct rmtcallargs *__crp) + __THROW; struct rmtcallres { u_long *port_ptr; @@ -60,7 +61,7 @@ struct rmtcallres { xdrproc_t xdr_results; }; -extern bool_t xdr_rmtcallres __P ((XDR *__xdrs, struct rmtcallres *__crp)); +extern bool_t xdr_rmtcallres (XDR *__xdrs, struct rmtcallres *__crp) __THROW; __END_DECLS diff --git a/include/rpc/rpc.h b/include/rpc/rpc.h index 74e529d82..e7799ccb1 100644 --- a/include/rpc/rpc.h +++ b/include/rpc/rpc.h @@ -65,6 +65,35 @@ * defined by <rpc/netdb.h> included in <netdb.h>. */ /* routines for parsing /etc/rpc */ -//#include <rpc/netdb.h> /* structures and routines to parse /etc/rpc */ +#include <rpc/netdb.h> /* structures and routines to parse /etc/rpc */ + +__BEGIN_DECLS + +#if 0 +/* Global variables, protected for multi-threaded applications. */ +extern fd_set *__rpc_thread_svc_fdset (void) __attribute__ ((__const__)); +#define svc_fdset (*__rpc_thread_svc_fdset ()) + +extern struct rpc_createerr *__rpc_thread_createerr (void) + __attribute__ ((__const__)); +#define get_rpc_createerr() (*__rpc_thread_createerr ()) +/* The people who "engineered" RPC should bee punished for naming the + data structure and the variable the same. We cannot always define the + macro 'rpc_createerr' because this would prevent people from defining + object of type 'struct rpc_createerr'. So we leave it up to the user + to select transparent replacement also of this variable. */ +#ifdef _RPC_MT_VARS +# define rpc_createerr (*__rpc_thread_createerr ()) +#endif + +extern struct pollfd **__rpc_thread_svc_pollfd (void) + __attribute__ ((__const__)); +#define svc_pollfd (*__rpc_thread_svc_pollfd ()) + +extern int *__rpc_thread_svc_max_pollfd (void) __attribute__ ((__const__)); +#define svc_max_pollfd (*__rpc_thread_svc_max_pollfd ()) +#endif + +__END_DECLS #endif /* rpc/rpc.h */ diff --git a/include/rpc/rpc_msg.h b/include/rpc/rpc_msg.h index e2908ac9c..636d60ea9 100644 --- a/include/rpc/rpc_msg.h +++ b/include/rpc/rpc_msg.h @@ -170,7 +170,7 @@ struct rpc_msg { * XDR *xdrs; * struct rpc_msg *cmsg; */ -extern bool_t xdr_callmsg __P ((XDR *__xdrs, struct rpc_msg *__cmsg)); +extern bool_t xdr_callmsg (XDR *__xdrs, struct rpc_msg *__cmsg) __THROW; /* * XDR routine to pre-serialize the static part of a rpc message. @@ -178,7 +178,7 @@ extern bool_t xdr_callmsg __P ((XDR *__xdrs, struct rpc_msg *__cmsg)); * XDR *xdrs; * struct rpc_msg *cmsg; */ -extern bool_t xdr_callhdr __P ((XDR *__xdrs, struct rpc_msg *__cmsg)); +extern bool_t xdr_callhdr (XDR *__xdrs, struct rpc_msg *__cmsg) __THROW; /* * XDR routine to handle a rpc reply. @@ -186,7 +186,7 @@ extern bool_t xdr_callhdr __P ((XDR *__xdrs, struct rpc_msg *__cmsg)); * XDR *xdrs; * struct rpc_msg *rmsg; */ -extern bool_t xdr_replymsg __P ((XDR *__xdrs, struct rpc_msg *__rmsg)); +extern bool_t xdr_replymsg (XDR *__xdrs, struct rpc_msg *__rmsg) __THROW; /* * Fills in the error part of a reply message. @@ -194,8 +194,8 @@ extern bool_t xdr_replymsg __P ((XDR *__xdrs, struct rpc_msg *__rmsg)); * struct rpc_msg *msg; * struct rpc_err *error; */ -extern void _seterr_reply __P ((struct rpc_msg *__msg, - struct rpc_err *__error)); +extern void _seterr_reply (struct rpc_msg *__msg, struct rpc_err *__error) + __THROW; __END_DECLS diff --git a/include/rpc/svc.h b/include/rpc/svc.h index 4ac2a5cdf..3ffca50bd 100644 --- a/include/rpc/svc.h +++ b/include/rpc/svc.h @@ -1,4 +1,3 @@ -/* @(#)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 @@ -78,18 +77,18 @@ struct SVCXPRT { int xp_sock; u_short xp_port; /* associated port number */ const struct xp_ops { - bool_t (*xp_recv) __PMT ((SVCXPRT *__xprt, struct rpc_msg *__msg)); + bool_t (*xp_recv) (SVCXPRT *__xprt, struct rpc_msg *__msg); /* receive incoming requests */ - enum xprt_stat (*xp_stat) __PMT ((SVCXPRT *__xprt)); + enum xprt_stat (*xp_stat) (SVCXPRT *__xprt); /* get transport status */ - bool_t (*xp_getargs) __PMT ((SVCXPRT *__xprt, xdrproc_t __xdr_args, - caddr_t args_ptr)); /* get arguments */ - bool_t (*xp_reply) __PMT ((SVCXPRT *__xprt, struct rpc_msg *__msg)); + bool_t (*xp_getargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args, + caddr_t args_ptr); /* get arguments */ + bool_t (*xp_reply) (SVCXPRT *__xprt, struct rpc_msg *__msg); /* send reply */ - bool_t (*xp_freeargs) __PMT ((SVCXPRT *__xprt, xdrproc_t __xdr_args, - caddr_t args_ptr)); + bool_t (*xp_freeargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args, + caddr_t args_ptr); /* free mem allocated for args */ - void (*xp_destroy) __PMT ((SVCXPRT *__xprt)); + void (*xp_destroy) (SVCXPRT *__xprt); /* destroy this struct */ } *xp_ops; int xp_addrlen; /* length of remote address */ @@ -97,6 +96,7 @@ struct SVCXPRT { struct opaque_auth xp_verf; /* raw response verifier */ caddr_t xp_p1; /* private */ caddr_t xp_p2; /* private */ + char xp_pad [256]; /* padding, internal use */ }; /* @@ -147,17 +147,17 @@ struct SVCXPRT { * 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 */ + rpcprog_t rq_prog; /* service program number */ + rpcvers_t rq_vers; /* service protocol version */ + rpcproc_t 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 */ }; #ifndef __DISPATCH_FN_T #define __DISPATCH_FN_T -typedef void (*__dispatch_fn_t) __PMT ((struct svc_req*, SVCXPRT*)); +typedef void (*__dispatch_fn_t) (struct svc_req*, SVCXPRT*); #endif /* @@ -165,23 +165,23 @@ typedef void (*__dispatch_fn_t) __PMT ((struct svc_req*, SVCXPRT*)); * * svc_register(xprt, prog, vers, dispatch, protocol) * SVCXPRT *xprt; - * u_long prog; - * u_long vers; - * void (*dispatch)(); - * u_long protocol; like TCP or UDP, zero means do not register + * rpcprog_t prog; + * rpcvers_t vers; + * void (*dispatch)(struct svc_req*, SVCXPRT*); + * rpcprot_t protocol; like TCP or UDP, zero means do not register */ -extern bool_t svc_register __P ((SVCXPRT *__xprt, u_long __prog, - u_long __vers, __dispatch_fn_t __dispatch, - u_long __protocol)); +extern bool_t svc_register (SVCXPRT *__xprt, rpcprog_t __prog, + rpcvers_t __vers, __dispatch_fn_t __dispatch, + rpcprot_t __protocol) __THROW; /* * Service un-registration * * svc_unregister(prog, vers) - * u_long prog; - * u_long vers; + * rpcprog_t prog; + * rpcvers_t vers; */ -extern void svc_unregister __P ((u_long __prog, u_long __vers)); +extern void svc_unregister (rpcprog_t __prog, rpcvers_t __vers) __THROW; /* * Transport registration. @@ -189,7 +189,7 @@ extern void svc_unregister __P ((u_long __prog, u_long __vers)); * xprt_register(xprt) * SVCXPRT *xprt; */ -extern void xprt_register __P ((SVCXPRT *__xprt)); +extern void xprt_register (SVCXPRT *__xprt) __THROW; /* * Transport un-register @@ -197,9 +197,7 @@ extern void xprt_register __P ((SVCXPRT *__xprt)); * xprt_unregister(xprt) * SVCXPRT *xprt; */ -extern void xprt_unregister __P ((SVCXPRT *__xprt)); - - +extern void xprt_unregister (SVCXPRT *__xprt) __THROW; /* @@ -228,23 +226,23 @@ extern void xprt_unregister __P ((SVCXPRT *__xprt)); * deadlock the caller and server processes! */ -extern bool_t svc_sendreply __P ((SVCXPRT *xprt, xdrproc_t __xdr_results, - caddr_t __xdr_location)); +extern bool_t svc_sendreply (SVCXPRT *xprt, xdrproc_t __xdr_results, + caddr_t __xdr_location) __THROW; -extern void svcerr_decode __P ((SVCXPRT *__xprt)); +extern void svcerr_decode (SVCXPRT *__xprt) __THROW; -extern void svcerr_weakauth __P ((SVCXPRT *__xprt)); +extern void svcerr_weakauth (SVCXPRT *__xprt) __THROW; -extern void svcerr_noproc __P ((SVCXPRT *__xprt)); +extern void svcerr_noproc (SVCXPRT *__xprt) __THROW; -extern void svcerr_progvers __P ((SVCXPRT *__xprt, u_long __low_vers, - u_long __high_vers)); +extern void svcerr_progvers (SVCXPRT *__xprt, rpcvers_t __low_vers, + rpcvers_t __high_vers) __THROW; -extern void svcerr_auth __P ((SVCXPRT *__xprt, enum auth_stat __why)); +extern void svcerr_auth (SVCXPRT *__xprt, enum auth_stat __why) __THROW; -extern void svcerr_noprog __P ((SVCXPRT *__xprt)); +extern void svcerr_noprog (SVCXPRT *__xprt) __THROW; -extern void svcerr_systemerr __P ((SVCXPRT *__xprt)); +extern void svcerr_systemerr (SVCXPRT *__xprt) __THROW; /* * Lowest level dispatching -OR- who owns this process anyway. @@ -261,21 +259,22 @@ extern void svcerr_systemerr __P ((SVCXPRT *__xprt)); * Global keeper of rpc service descriptors in use * dynamic; must be inspected before each call to select */ -#ifdef FD_SETSIZE + +extern struct pollfd *svc_pollfd; +extern int svc_max_pollfd; 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 svc_getreq __P ((int __rdfds)); -extern void svc_getreqset __P ((fd_set *__readfds)); -extern void svc_exit __P ((void)); -extern void svc_run __P ((void)); +extern void svc_getreq (int __rdfds) __THROW; +extern void svc_getreq_common (const int __fd) __THROW; +extern void svc_getreqset (fd_set *__readfds) __THROW; +extern void svc_getreq_poll (struct pollfd *, const int) __THROW; +extern void svc_exit (void) __THROW; +extern void svc_run (void) __THROW; /* * Socket to use on svcxxx_create call to get default socket @@ -289,27 +288,27 @@ extern void svc_run __P ((void)); /* * Memory based rpc for testing and timing. */ -extern SVCXPRT *svcraw_create __P ((void)); +extern SVCXPRT *svcraw_create (void) __THROW; /* * Udp based rpc. */ -extern SVCXPRT *svcudp_create __P ((int __sock)); -extern SVCXPRT *svcudp_bufcreate __P ((int __sock, u_int __sendsz, - u_int __recvsz)); +extern SVCXPRT *svcudp_create (int __sock) __THROW; +extern SVCXPRT *svcudp_bufcreate (int __sock, u_int __sendsz, u_int __recvsz) + __THROW; /* * Tcp based rpc. */ -extern SVCXPRT *svctcp_create __P ((int __sock, u_int __sendsize, - u_int __recvsize)); +extern SVCXPRT *svctcp_create (int __sock, u_int __sendsize, u_int __recvsize) + __THROW; /* * Unix based rpc. */ -extern SVCXPRT *svcunix_create __P ((int __sock, u_int __sendsize, - u_int __recvsize, char *__path)); +extern SVCXPRT *svcunix_create (int __sock, u_int __sendsize, u_int __recvsize, + char *__path) __THROW; __END_DECLS diff --git a/include/rpc/svc_auth.h b/include/rpc/svc_auth.h index ad08b71c7..1c1a7156a 100644 --- a/include/rpc/svc_auth.h +++ b/include/rpc/svc_auth.h @@ -46,8 +46,8 @@ __BEGIN_DECLS /* * Server side authenticator */ -extern enum auth_stat _authenticate __P ((struct svc_req *__rqst, - struct rpc_msg *__msg)); +extern enum auth_stat _authenticate (struct svc_req *__rqst, + struct rpc_msg *__msg) __THROW; __END_DECLS diff --git a/include/rpc/types.h b/include/rpc/types.h index 61ea3c19f..8eff8e718 100644 --- a/include/rpc/types.h +++ b/include/rpc/types.h @@ -1,4 +1,3 @@ -/* @(#)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 @@ -27,8 +26,6 @@ * 2550 Garcia Avenue * Mountain View, California 94043 */ -/* @(#)types.h 1.18 87/07/24 SMI */ - /* fixincludes should not add extern "C" to this file */ /* * Rpc additions to <sys/types.h> @@ -38,6 +35,12 @@ typedef int bool_t; typedef int enum_t; +/* This needs to be changed to uint32_t in the future */ +typedef unsigned long rpcprog_t; +typedef unsigned long rpcvers_t; +typedef unsigned long rpcproc_t; +typedef unsigned long rpcprot_t; +typedef unsigned long rpcport_t; #define __dontcare__ -1 @@ -60,6 +63,23 @@ typedef int enum_t; #ifndef makedev /* ie, we haven't already included it */ #include <sys/types.h> #endif + +#ifndef __u_char_defined +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; +# define __u_char_defined +#endif +#ifndef __daddr_t_defined +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; +# define __daddr_t_defined +#endif + #include <sys/time.h> #include <sys/param.h> diff --git a/include/rpc/xdr.h b/include/rpc/xdr.h index 91dbcc3da..0b703445a 100644 --- a/include/rpc/xdr.h +++ b/include/rpc/xdr.h @@ -114,27 +114,25 @@ struct XDR enum xdr_op x_op; /* operation; fast additional param */ struct xdr_ops { - bool_t (*x_getlong) __PMT ((XDR *__xdrs, long *__lp)); + bool_t (*x_getlong) (XDR *__xdrs, long *__lp); /* get a long from underlying stream */ - bool_t (*x_putlong) __PMT ((XDR *__xdrs, __const long *__lp)); + bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); /* put a long to " */ - bool_t (*x_getbytes) __PMT ((XDR *__xdrs, caddr_t __addr, - u_int __len)); + bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); /* get some bytes from " */ - bool_t (*x_putbytes) __PMT ((XDR *__xdrs, __const char *__addr, - u_int __len)); + bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); /* put some bytes to " */ - u_int (*x_getpostn) __PMT ((__const XDR *__xdrs)); + u_int (*x_getpostn) (__const XDR *__xdrs); /* returns bytes off from beginning */ - bool_t (*x_setpostn) __PMT ((XDR *__xdrs, u_int pos)); + bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); /* lets you reposition the stream */ - int32_t *(*x_inline) __PMT ((XDR *__xdrs, int len)); + int32_t *(*x_inline) (XDR *__xdrs, int __len); /* buf quick ptr to buffered data */ - void (*x_destroy) __PMT ((XDR *__xdrs)); + void (*x_destroy) (XDR *__xdrs); /* free privates of this xdr_stream */ - bool_t (*x_getint32) __PMT ((XDR *__xdrs, int32_t *__ip)); + bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); /* get a int from underlying stream */ - bool_t (*x_putint32) __PMT ((XDR *__xdrs, __const int32_t *__ip)); + bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); /* put a int to " */ } *x_ops; @@ -153,7 +151,7 @@ struct XDR * allocate dynamic storage of the appropriate size and return it. * bool_t (*xdrproc_t)(XDR *, caddr_t *); */ -typedef bool_t (*xdrproc_t) __PMT ((XDR *, void *,...)); +typedef bool_t (*xdrproc_t) (XDR *, void *,...); /* @@ -288,49 +286,49 @@ struct xdr_discrim * know whether the call is a read or a write to the passed parameter * also, the XDR structure is always updated by some of these calls. */ -extern bool_t xdr_void __P ((void)); -extern bool_t xdr_short __P ((XDR *__xdrs, short *__sp)); -extern bool_t xdr_u_short __P ((XDR *__xdrs, u_short *__usp)); -extern bool_t xdr_int __P ((XDR *__xdrs, int *__ip)); -extern bool_t xdr_u_int __P ((XDR *__xdrs, u_int *__up)); -extern bool_t xdr_long __P ((XDR *__xdrs, long *__lp)); -extern bool_t xdr_u_long __P ((XDR *__xdrs, u_long *__ulp)); -extern bool_t xdr_hyper __P ((XDR *__xdrs, quad_t *__llp)); -extern bool_t xdr_u_hyper __P ((XDR *__xdrs, u_quad_t *__ullp)); -extern bool_t xdr_longlong_t __P ((XDR *__xdrs, quad_t *__llp)); -extern bool_t xdr_u_longlong_t __P ((XDR *__xdrs, u_quad_t *__ullp)); -extern bool_t xdr_int8_t __P ((XDR *__xdrs, int8_t *__ip)); -extern bool_t xdr_uint8_t __P ((XDR *__xdrs, uint8_t *__up)); -extern bool_t xdr_int16_t __P ((XDR *__xdrs, int16_t *__ip)); -extern bool_t xdr_uint16_t __P ((XDR *__xdrs, uint16_t *__up)); -extern bool_t xdr_int32_t __P ((XDR *__xdrs, int32_t *__ip)); -extern bool_t xdr_uint32_t __P ((XDR *__xdrs, uint32_t *__up)); -extern bool_t xdr_int64_t __P ((XDR *__xdrs, int64_t *__ip)); -extern bool_t xdr_uint64_t __P ((XDR *__xdrs, uint64_t *__up)); -extern bool_t xdr_bool __P ((XDR *__xdrs, bool_t *__bp)); -extern bool_t xdr_enum __P ((XDR *__xdrs, enum_t *__ep)); -extern bool_t xdr_array __P ((XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, - xdrproc_t __elproc)); -extern bool_t xdr_bytes __P ((XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize)); -extern bool_t xdr_opaque __P ((XDR *__xdrs, caddr_t __cp, u_int __cnt)); -extern bool_t xdr_string __P ((XDR *__xdrs, char **__cpp, u_int __maxsize)); -extern bool_t xdr_union __P ((XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault)); -extern bool_t xdr_char __P ((XDR *__xdrs, char *__cp)); -extern bool_t xdr_u_char __P ((XDR *__xdrs, u_char *__cp)); -extern bool_t xdr_vector __P ((XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem)); -extern bool_t xdr_float __P ((XDR *__xdrs, float *__fp)); -extern bool_t xdr_double __P ((XDR *__xdrs, double *__dp)); -extern bool_t xdr_reference __P ((XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc)); -extern bool_t xdr_pointer __P ((XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj)); -extern bool_t xdr_wrapstring __P ((XDR *__xdrs, char **__cpp)); -extern u_long xdr_sizeof __P ((xdrproc_t, void *)); +extern bool_t xdr_void (void) __THROW; +extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; +extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; +extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; +extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; +extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; +extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; +extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; +extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; +extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; +extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; +extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; +extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; +extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; +extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; +extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; +extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; +extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, + u_int __maxsize, u_int __elsize, xdrproc_t __elproc) + __THROW; +extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, + u_int __maxsize) __THROW; +extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; +extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; +extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, + __const struct xdr_discrim *__choices, + xdrproc_t dfault) __THROW; +extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; +extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; +extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, + u_int __elemsize, xdrproc_t __xdr_elem) __THROW; +extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; +extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; +extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, + xdrproc_t __proc) __THROW; +extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, + u_int __obj_size, xdrproc_t __xdr_obj) __THROW; +extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; +extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; /* * Common opaque bytes objects used by many rpc protocols; @@ -343,7 +341,7 @@ struct netobj char *n_bytes; }; typedef struct netobj netobj; -extern bool_t xdr_netobj __P ((XDR *__xdrs, struct netobj *__np)); +extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; /* * These are the public routines for the various implementations of @@ -351,30 +349,30 @@ extern bool_t xdr_netobj __P ((XDR *__xdrs, struct netobj *__np)); */ /* XDR using memory buffers */ -extern void xdrmem_create __P ((XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop)); +extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, + u_int __size, enum xdr_op __xop) __THROW; /* XDR using stdio library */ -extern void xdrstdio_create __P ((XDR *__xdrs, FILE *__file, - enum xdr_op __xop)); +extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) + __THROW; /* XDR pseudo records for tcp */ -extern void xdrrec_create __P ((XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int))); +extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, + u_int __recvsize, caddr_t __tcp_handle, + int (*__readit) (char *, char *, int), + int (*__writeit) (char *, char *, int)) __THROW; /* make end of xdr record */ -extern bool_t xdrrec_endofrecord __P ((XDR *__xdrs, bool_t __sendnow)); +extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; /* move to beginning of next record */ -extern bool_t xdrrec_skiprecord __P ((XDR *__xdrs)); +extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; /* true if no more input */ -extern bool_t xdrrec_eof __P ((XDR *__xdrs)); +extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; /* free memory buffers for xdr */ -extern void xdr_free __P ((xdrproc_t __proc, char *__objp)); +extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; __END_DECLS diff --git a/include/search.h b/include/search.h index fa3e5c083..2ffba697b 100644 --- a/include/search.h +++ b/include/search.h @@ -1,98 +1,174 @@ -/* Copyright (C) 1993 Ulrich Drepper +/* Declarations for System V style searching functions. + Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. -This file is intended to be included in the GNU C Library and the -Linux C Library. So the copyright notice will be: + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + 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 + Lesser General Public License for more details. -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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SEARCH_H -#define _SEARCH_H +#define _SEARCH_H 1 #include <features.h> #define __need_size_t -#define __need_NULL #include <stddef.h> -/* Get __compar_fn_t from stdlib.h */ -#include <stdlib.h> - __BEGIN_DECLS -#if 0 -#ifndef __COMPAR_FN_T -#define __COMPAR_FN_T -typedef int (*__compar_fn_t) __P ((__const __ptr_t, __const __ptr_t)); -#endif +#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED +/* Prototype structure for a linked-list data structure. + This is the type used by the `insque' and `remque' functions. */ + +# ifdef __USE_GNU +struct qelem + { + struct qelem *q_forw; + struct qelem *q_back; + char q_data[1]; + }; +# endif + + +/* Insert ELEM into a doubly-linked list, after PREV. */ +extern void insque (void *__elem, void *__prev) __THROW; + +/* Unlink ELEM from the doubly-linked list that it is in. */ +extern void remque (void *__elem) __THROW; #endif -/* for use with hsearch(3) */ -typedef struct entry { char *key; char *data; } ENTRY; -typedef enum { FIND, ENTER } ACTION; +/* For use with hsearch(3). */ +#ifndef __COMPAR_FN_T +# define __COMPAR_FN_T +typedef int (*__compar_fn_t) (__const void *, __const void *); + +# ifdef __USE_GNU +typedef __compar_fn_t comparison_fn_t; +# endif +#endif -extern ENTRY * hsearch __P((ENTRY __item, ACTION __action)); -extern int hcreate __P((unsigned __nel)); -extern void hdestroy __P((void)); +/* Action which shall be performed in the call the hsearch. */ +typedef enum + { + FIND, + ENTER + } +ACTION; + +typedef struct entry + { + char *key; + void *data; + } +ENTRY; + +/* Opaque type for internal use. */ +struct _ENTRY; + +/* Family of hash table handling functions. The functions also + have reentrant counterparts ending with _r. The non-reentrant + functions all work on a signle internal hashing table. */ + +/* Search for entry matching ITEM.key in internal hash table. If + ACTION is `FIND' return found entry or signal error by returning + NULL. If ACTION is `ENTER' replace existing data (if any) with + ITEM.data. */ +extern ENTRY *hsearch (ENTRY __item, ACTION __action) __THROW; + +/* Create a new hashing table which will at most contain NEL elements. */ +extern int hcreate (size_t __nel) __THROW; + +/* Destroy current internal hashing table. */ +extern void hdestroy (void) __THROW; + +#ifdef __USE_GNU +/* Data type for reentrant functions. */ +struct hsearch_data + { + struct _ENTRY *table; + unsigned int size; + unsigned int filled; + }; + +/* Reentrant versions which can handle multiple hashing tables at the + same time. */ +extern int hsearch_r (ENTRY __item, ACTION __action, ENTRY **__retval, + struct hsearch_data *__htab) __THROW; +extern int hcreate_r (size_t __nel, struct hsearch_data *__htab) __THROW; +extern void hdestroy_r (struct hsearch_data *__htab) __THROW; +#endif /* 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. - */ + assumptions about the compiler. It assumes that the first field + in node must be the "key" field, which points to the datum. + Everything depends on that. */ /* For tsearch */ -typedef enum { preorder, postorder, endorder, leaf } VISIT; +typedef enum +{ + preorder, + postorder, + endorder, + leaf +} +VISIT; + +/* Search for an entry matching the given KEY in the tree pointed to + by *ROOTP and insert a new element if not found. */ +extern void *tsearch (__const void *__key, void **__rootp, + __compar_fn_t __compar); + +/* Search for an entry matching the given KEY in the tree pointed to + by *ROOTP. If no matching entry is available return NULL. */ +extern void *tfind (__const void *__key, void *__const *__rootp, + __compar_fn_t __compar); + +/* Remove the element matching KEY from the tree pointed to by *ROOTP. */ +extern void *tdelete (__const void *__restrict __key, + void **__restrict __rootp, + __compar_fn_t __compar); -extern void *tsearch __P((__const void * __key, void **__rootp, - __compar_fn_t compar)); +#ifndef __ACTION_FN_T +# define __ACTION_FN_T +typedef void (*__action_fn_t) (__const void *__nodep, VISIT __value, + int __level); +#endif -extern void *tfind __P((__const void * __key, void * __const * __rootp, - __compar_fn_t compar)); +/* Walk through the whole tree and call the ACTION callback for every node + or leaf. */ +extern void twalk (__const void *__root, __action_fn_t __action); -extern void *tdelete __P((__const void * __key, void ** __rootp, - __compar_fn_t compar)); +#ifdef __USE_GNU +/* Callback type for function to free a tree node. If the keys are atomic + data this function should do nothing. */ +typedef void (*__free_fn_t) (void *__nodep); -#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)); +/* Destroy the whole tree, call FREEFCT for each node or leaf. */ +extern void tdestroy (void *__root, __free_fn_t __freefct); #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)); +/* Perform linear search for KEY by comparing by COMPAR in an array + [BASE,BASE+NMEMB*SIZE). */ +extern void *lfind (__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)); +/* Perform linear search for KEY by comparing by COMPAR function in + array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */ +extern void *lsearch (__const void *__key, void *__base, + size_t *__nmemb, size_t __size, __compar_fn_t __compar); __END_DECLS diff --git a/include/setjmp.h b/include/setjmp.h index 33bcfc539..99e3dc8cd 100644 --- a/include/setjmp.h +++ b/include/setjmp.h @@ -1,23 +1,23 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ISO C Standard: 4.6 NON-LOCAL JUMPS <setjmp.h> + * ISO C99 Standard: 7.13 Nonlocal jumps <setjmp.h> */ #ifndef _SETJMP_H @@ -34,50 +34,54 @@ __BEGIN_DECLS typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */ { /* NOTE: The machine-dependent definitions of `__sigsetjmp' - assume that a `jmp_buf' begins with a `__jmp_buf'. - Do not move this member or add others before it. */ + assume that a `jmp_buf' begins with a `__jmp_buf' and that + `__mask_was_saved' follows it. Do not move these members + or add others before it. */ __jmp_buf __jmpbuf; /* Calling environment. */ int __mask_was_saved; /* Saved the signal mask? */ __sigset_t __saved_mask; /* Saved signal mask. */ } jmp_buf[1]; +/* Store the calling environment in ENV, also saving the signal mask. + Return 0. */ +extern int setjmp (jmp_buf __env) __THROW; + +/* Store the calling environment in ENV, not saving the signal mask. + Return 0. */ +extern int _setjmp (jmp_buf __env) __THROW; + /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. This is the internal name for `sigsetjmp'. */ -extern int __sigsetjmp __P ((jmp_buf __env, int __savemask)); +extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW; #ifndef __FAVOR_BSD -/* Set ENV to the current position and return 0, not saving the signal mask. - This is just like `sigsetjmp (ENV, 0)'. - The ISO C standard says `setjmp' is a macro. */ -# define setjmp(env) __sigsetjmp ((env), 0) +/* Do not save the signal mask. This is equivalent to the `_setjmp' + BSD function. */ +# define setjmp(env) _setjmp (env) #else /* We are in 4.3 BSD-compatibility mode in which `setjmp' - saves the signal mask like `sigsetjmp (ENV, 1)'. */ -# define setjmp(env) __sigsetjmp ((env), 1) + saves the signal mask like `sigsetjmp (ENV, 1)'. We have to + define a macro since ISO C says `setjmp' is one. */ +# define setjmp(env) setjmp (env) #endif /* Favor BSD. */ -#if defined __USE_BSD || defined __USE_XOPEN -/* Set ENV to the current position and return 0, not saving the signal mask. - This is the 4.3 BSD name for ISO `setjmp'. */ -# define _setjmp(env) __sigsetjmp ((env), 0) -#endif - /* Jump to the environment saved in ENV, making the `setjmp' call there return VAL, or 1 if VAL is 0. */ -extern void longjmp __P ((jmp_buf __env, int __val)) - __attribute__ ((__noreturn__)); +extern void longjmp (jmp_buf __env, int __val) + __THROW __attribute__ ((__noreturn__)); #if defined __USE_BSD || defined __USE_XOPEN /* Same. Usually `_longjmp' is used with `_setjmp', which does not save the signal mask. But it is how ENV was saved that determines whether `longjmp' restores the mask; `_longjmp' is just an alias. */ -extern void _longjmp __P ((jmp_buf __env, int __val)) - __attribute__ ((__noreturn__)); +extern void _longjmp (jmp_buf __env, int __val) + __THROW __attribute__ ((__noreturn__)); #endif +#ifdef __USE_POSIX /* Use the same type for `jmp_buf' and `sigjmp_buf'. The `__mask_was_saved' flag determines whether or not `longjmp' will restore the signal mask. */ @@ -85,14 +89,15 @@ typedef jmp_buf sigjmp_buf; /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. */ -# define sigsetjmp(env, savemask) __sigsetjmp ((env), (savemask)) +# define sigsetjmp(env, savemask) __sigsetjmp (env, savemask) /* Jump to the environment saved in ENV, making the sigsetjmp call there return VAL, or 1 if VAL is 0. Restore the signal mask if that sigsetjmp call saved it. This is just an alias `longjmp'. */ -extern void siglongjmp __P ((sigjmp_buf __env, int __val)) - __attribute__ ((__noreturn__)); +extern void siglongjmp (sigjmp_buf __env, int __val) + __THROW __attribute__ ((__noreturn__)); +#endif /* Use POSIX. */ __END_DECLS diff --git a/include/signal.h b/include/signal.h index c94d8bfda..f217349d0 100644 --- a/include/signal.h +++ b/include/signal.h @@ -1,23 +1,23 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ISO C Standard: 4.7 SIGNAL HANDLING <signal.h> + * ISO C99 Standard: 7.14 Signal handling <signal.h> */ #ifndef _SIGNAL_H @@ -27,7 +27,6 @@ #endif #include <features.h> -#include <sys/types.h> __BEGIN_DECLS @@ -35,49 +34,63 @@ __BEGIN_DECLS /* An integral type that can be modified atomically, without the possibility of a signal arriving in the middle of the operation. */ +#if defined __need_sig_atomic_t || defined _SIGNAL_H +# ifndef __sig_atomic_t_defined +# define __sig_atomic_t_defined typedef __sig_atomic_t sig_atomic_t; +# endif +# undef __need_sig_atomic_t +#endif +#if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX) +# ifndef __sigset_t_defined +# define __sigset_t_defined typedef __sigset_t sigset_t; +# endif +# undef __need_sigset_t +#endif #ifdef _SIGNAL_H -//#include <bits/types.h> +#include <bits/types.h> #include <bits/signum.h> #ifdef __USE_XOPEN -# ifndef pid_t +# ifndef __pid_t_defined typedef __pid_t pid_t; -# define pid_t pid_t +# define __pid_t_defined # endif -# ifndef uid_t +# ifndef __uid_t_defined typedef __uid_t uid_t; -# define uid_t uid_t +# define __uid_t_defined # endif #endif /* Unix98 */ /* Type of a signal handler. */ -typedef void (*__sighandler_t) __P ((int)); +typedef void (*__sighandler_t) (int); /* The X/Open definition of `signal' specifies the SVID semantic. Use the additional function `sysv_signal' when X/Open compatibility is requested. */ -extern __sighandler_t __sysv_signal __P ((int __sig, - __sighandler_t __handler)); +extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) + __THROW; #ifdef __USE_GNU -extern __sighandler_t sysv_signal __P ((int __sig, __sighandler_t __handler)); +extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) + __THROW; #endif /* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */ #ifdef __USE_BSD -extern __sighandler_t signal __P ((int __sig, __sighandler_t __handler)); +extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; #else /* Make sure the used `signal' implementation is the SVID version. */ # ifdef __REDIRECT extern __sighandler_t __REDIRECT (signal, - __P ((int __sig, __sighandler_t __handler)), + (int __sig, + __sighandler_t __handler) __THROW, __sysv_signal); # else # define signal __sysv_signal @@ -87,35 +100,35 @@ extern __sighandler_t __REDIRECT (signal, #ifdef __USE_XOPEN /* The X/Open definition of `signal' conflicts with the BSD version. So they defined another function `bsd_signal'. */ -extern __sighandler_t bsd_signal __P ((int __sig, __sighandler_t __handler)); +extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) __THROW; #endif /* Send signal SIG to process number PID. If PID is zero, send SIG to all processes in the current process's process group. If PID is < -1, send SIG to all processes in process group - PID. */ #ifdef __USE_POSIX -extern int kill __P ((__pid_t __pid, int __sig)); +extern int kill (__pid_t __pid, int __sig) __THROW; #endif /* Use POSIX. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Send SIG to all processes in process group PGRP. If PGRP is zero, send SIG to all processes in the current process's process group. */ -extern int killpg __P ((__pid_t __pgrp, int __sig)); +extern int killpg (__pid_t __pgrp, int __sig) __THROW; #endif /* Use BSD || X/Open Unix. */ /* Raise signal SIG, i.e., send SIG to yourself. */ -extern int raise __P ((int __sig)); +extern int raise (int __sig) __THROW; #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)); +extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) __THROW; +extern int gsignal (int __sig) __THROW; #endif /* Use SVID. */ #ifdef __USE_MISC /* Print a message describing the meaning of the given signal number. */ -extern void psignal __P ((int __sig, __const char *__s)); +extern void psignal (int __sig, __const char *__s) __THROW; #endif /* Use misc. */ @@ -124,15 +137,18 @@ extern void psignal __P ((int __sig, __const char *__s)); the more modern interface in X/Open defines it as the signal number. We go with the BSD version unless the user explicitly selects the X/Open version. */ -extern int __sigpause __P ((int __sig_or_mask, int __is_sig)); +extern int __sigpause (int __sig_or_mask, int __is_sig) __THROW; #ifdef __USE_BSD /* Set the mask of blocked signals to MASK, wait for a signal to arrive, and then restore the mask. */ -extern int sigpause __P ((int __mask)); +extern int sigpause (int __mask) __THROW; # define sigpause(mask) __sigpause ((mask), 0) #else # ifdef __USE_XOPEN +# ifdef __GNUC__ +extern int sigpause (int __sig) __THROW __asm__ ("__xpg_sigpause"); +# endif /* Remove a signal from the signal mask and suspend the process. */ # define sigpause(sig) __sigpause ((sig), 1) # endif @@ -149,13 +165,13 @@ extern int sigpause __P ((int __mask)); # define sigmask(sig) __sigmask(sig) /* Block signals in MASK, returning the old mask. */ -extern int sigblock __P ((int __mask)); +extern int sigblock (int __mask) __THROW; /* Set the mask of blocked signals to MASK, returning the old mask. */ -extern int sigsetmask __P ((int __mask)); +extern int sigsetmask (int __mask) __THROW; /* Return currently selected signal mask. */ -extern int siggetmask __P ((void)); +extern int siggetmask (void) __THROW; #endif /* Use BSD. */ @@ -184,31 +200,31 @@ typedef __sighandler_t sig_t; # endif /* Clear all signals from SET. */ -extern int sigemptyset __P ((sigset_t *__set)); +extern int sigemptyset (sigset_t *__set) __THROW; /* Set all signals in SET. */ -extern int sigfillset __P ((sigset_t *__set)); +extern int sigfillset (sigset_t *__set) __THROW; /* Add SIGNO to SET. */ -extern int sigaddset __P ((sigset_t *__set, int __signo)); +extern int sigaddset (sigset_t *__set, int __signo) __THROW; /* Remove SIGNO from SET. */ -extern int sigdelset __P ((sigset_t *__set, int __signo)); +extern int sigdelset (sigset_t *__set, int __signo) __THROW; /* Return 1 if SIGNO is in SET, 0 if not. */ -extern int sigismember __P ((__const sigset_t *__set, int __signo)); +extern int sigismember (__const sigset_t *__set, int __signo) __THROW; # ifdef __USE_GNU /* Return non-empty value is SET is not empty. */ -extern int sigisemptyset __P ((__const sigset_t *__set)); +extern int sigisemptyset (__const sigset_t *__set) __THROW; /* Build new signal set by combining the two inputs set using logical AND. */ -extern int sigandset __P ((sigset_t *__set, __const sigset_t *__left, - __const sigset_t *__right)); +extern int sigandset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __THROW; /* Build new signal set by combining the two inputs set using logical OR. */ -extern int sigorset __P ((sigset_t *__set, __const sigset_t *__left, - __const sigset_t *__right)); +extern int sigorset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __THROW; # endif /* GNU */ /* Get the system-specific definitions of `struct sigaction' @@ -216,37 +232,41 @@ extern int sigorset __P ((sigset_t *__set, __const sigset_t *__left, # include <bits/sigaction.h> /* Get and/or change the set of blocked signals. */ -extern int sigprocmask __P ((int __how, - __const sigset_t *__set, sigset_t *__oset)); +extern int sigprocmask (int __how, __const sigset_t *__restrict __set, + sigset_t *__restrict __oset) __THROW; /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. */ -extern int sigsuspend __P ((__const sigset_t *__set)); +extern int sigsuspend (__const sigset_t *__set) __THROW; /* Get and/or set the action for signal SIG. */ -extern int sigaction __P ((int __sig, __const struct sigaction *__act, - struct sigaction *__oact)); +extern int sigaction (int __sig, __const struct sigaction *__restrict __act, + struct sigaction *__restrict __oact) __THROW; /* Put in SET all signals that are blocked and waiting to be delivered. */ -extern int sigpending __P ((sigset_t *__set)); +extern int sigpending (sigset_t *__set) __THROW; /* Select any of pending signals from SET or wait for any to arrive. */ -extern int sigwait __P ((__const sigset_t *__set, int *__sig)); +extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) + __THROW; # ifdef __USE_POSIX199309 /* Select any of pending signals from SET and place information in INFO. */ -extern int sigwaitinfo __P ((__const sigset_t *__set, siginfo_t *__info)); +extern int sigwaitinfo (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info) __THROW; /* Select any of pending signals from SET and place information in INFO. Wait the imte specified by TIMEOUT if no signal is pending. */ -extern int sigtimedwait __P ((__const sigset_t *__set, siginfo_t *__info, - __const struct timespec *__timeout)); +extern int sigtimedwait (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info, + __const struct timespec *__restrict __timeout) + __THROW; /* Send signal SIG to the process PID. Associate data in VAL with the signal. */ -extern int sigqueue __P ((__pid_t __pid, int __sig, - __const union sigval __val)); +extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) + __THROW; # endif /* Use POSIX 199306. */ #endif /* Use POSIX. */ @@ -279,15 +299,15 @@ struct sigvec If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL, it is filled in with the old information for SIG. */ -extern int sigvec __P ((int __sig, __const struct sigvec *__vec, - struct sigvec *__ovec)); +extern int sigvec (int __sig, __const struct sigvec *__vec, + struct sigvec *__ovec) __THROW; /* Get machine-dependent `struct sigcontext' and signal subcodes. */ # include <bits/sigcontext.h> /* Restore the state saved in SCP. */ -extern int sigreturn __P ((struct sigcontext *__scp)); +extern int sigreturn (struct sigcontext *__scp) __THROW; #endif /* use BSD. */ @@ -297,22 +317,22 @@ extern int sigreturn __P ((struct sigcontext *__scp)); /* If INTERRUPT is nonzero, make signal SIG interrupt system calls (causing them to fail with EINTR); if INTERRUPT is zero, make system calls be restarted after signal SIG. */ -extern int siginterrupt __P ((int __sig, int __interrupt)); +extern int siginterrupt (int __sig, int __interrupt) __THROW; # include <bits/sigstack.h> -# ifdef __USE_GNU +# ifdef __USE_XOPEN # include <ucontext.h> # endif /* Run signals handlers on the stack specified by SS (if not NULL). If OSS is not NULL, it is filled in with the old signal stack status. This interface is obsolete and on many platform not implemented. */ -extern int sigstack __P ((struct sigstack *__ss, struct sigstack *__oss)); +extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) __THROW; /* Alternate signal handler stack interface. This interface should always be preferred over `sigstack'. */ -extern int sigaltstack __P ((__const struct sigaltstack *__ss, - struct sigaltstack *__oss)); +extern int sigaltstack (__const struct sigaltstack *__restrict __ss, + struct sigaltstack *__restrict __oss) __THROW; #endif /* use BSD or X/Open Unix. */ @@ -320,17 +340,19 @@ extern int sigaltstack __P ((__const struct sigaltstack *__ss, /* Simplified interface for signal management. */ /* Add SIG to the calling process' signal mask. */ -extern int sighold __P ((int __sig)); +extern int sighold (int __sig) __THROW; /* Remove SIG from the calling process' signal mask. */ -extern int sigrelse __P ((int __sig)); +extern int sigrelse (int __sig) __THROW; /* Set the disposition of SIG to SIG_IGN. */ -extern int sigignore __P ((int __sig)); +extern int sigignore (int __sig) __THROW; /* Set the disposition of SIG. */ -extern __sighandler_t sigset __P ((int __sig, __sighandler_t __disp)); +extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW; +#endif +#if defined _POSIX_THREADS && (defined __USE_POSIX199506 || defined __USE_UNIX98) /* Some of the functions for handling signals in threaded programs must be defined here. */ # include <bits/sigthread.h> @@ -340,14 +362,10 @@ extern __sighandler_t sigset __P ((int __sig, __sighandler_t __disp)); other code which need deep insights. */ /* Return number of available real-time signal with highest priority. */ -extern int __libc_current_sigrtmin __P ((void)); +extern int __libc_current_sigrtmin (void) __THROW; /* Return number of available real-time signal with lowest priority. */ -extern int __libc_current_sigrtmax __P ((void)); +extern int __libc_current_sigrtmax (void) __THROW; -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)); #endif /* signal.h */ __END_DECLS diff --git a/include/stdarg.h b/include/stdarg.h deleted file mode 100644 index 24f338319..000000000 --- a/include/stdarg.h +++ /dev/null @@ -1,205 +0,0 @@ -/* stdarg.h for GNU. - Note that the type used in va_arg is supposed to match the - actual type **after default promotions**. - Thus, va_arg (..., short) is not valid. */ - -#ifndef _STDARG_H -#ifndef _ANSI_STDARG_H_ -#ifndef __need___va_list -#define _STDARG_H -#define _ANSI_STDARG_H_ -#endif /* not __need___va_list */ -#undef __need___va_list - -#ifdef __clipper__ -#include "va-clipper.h" -#else -#ifdef __m88k__ -#include "va-m88k.h" -#else -#ifdef __i860__ -#include "va-i860.h" -#else -#ifdef __hppa__ -#include "va-pa.h" -#else -#ifdef __mips__ -#include "va-mips.h" -#else -#ifdef __sparc__ -#include "va-sparc.h" -#else -#ifdef __i960__ -#include "va-i960.h" -#else -#ifdef __alpha__ -#include "va-alpha.h" -#else -#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) -#include "va-h8300.h" -#else -#if defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32)) -#include "va-ppc.h" -#else -#ifdef __arc__ -#include "va-arc.h" -#else -#ifdef __M32R__ -#include "va-m32r.h" -#else -#ifdef __sh__ -#include "va-sh.h" -#else -#ifdef __mn10300__ -#include "va-mn10300.h" -#else -#ifdef __mn10200__ -#include "va-mn10200.h" -#else -#ifdef __v850__ -#include "va-v850.h" -#else - -/* Define __gnuc_va_list. */ - -#ifndef __GNUC_VA_LIST -#define __GNUC_VA_LIST -#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) -typedef char *__gnuc_va_list; -#else -typedef void *__gnuc_va_list; -#endif -#endif - -/* Define the standard macros for the user, - if this invocation was from the user program. */ -#ifdef _STDARG_H - -/* Amount of space required in an argument list for an arg of type TYPE. - TYPE may alternatively be an expression whose type is used. */ - -#if defined(sysV68) -#define __va_rounded_size(TYPE) \ - (((sizeof (TYPE) + sizeof (short) - 1) / sizeof (short)) * sizeof (short)) -#else -#define __va_rounded_size(TYPE) \ - (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) -#endif - -#define va_start(AP, LASTARG) \ - (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG))) - -#undef va_end -void va_end (__gnuc_va_list); /* Defined in libgcc.a */ -#define va_end(AP) ((void)0) - -/* We cast to void * and then to TYPE * because this avoids - a warning about increasing the alignment requirement. */ - -#if (defined (__arm__) && ! defined (__ARMEB__)) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__) -/* This is for little-endian machines; small args are padded upward. */ -#define va_arg(AP, TYPE) \ - (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ - *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE)))) -#else /* big-endian */ -/* This is for big-endian machines; small args are padded downward. */ -#define va_arg(AP, TYPE) \ - (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ - *((TYPE *) (void *) ((char *) (AP) \ - - ((sizeof (TYPE) < __va_rounded_size (char) \ - ? sizeof (TYPE) : __va_rounded_size (TYPE)))))) -#endif /* big-endian */ - -/* Copy __gnuc_va_list into another variable of this type. */ -#define __va_copy(dest, src) (dest) = (src) - -#endif /* _STDARG_H */ - -#endif /* not v850 */ -#endif /* not mn10200 */ -#endif /* not mn10300 */ -#endif /* not sh */ -#endif /* not m32r */ -#endif /* not arc */ -#endif /* not powerpc with V.4 calling sequence */ -#endif /* not h8300 */ -#endif /* not alpha */ -#endif /* not i960 */ -#endif /* not sparc */ -#endif /* not mips */ -#endif /* not hppa */ -#endif /* not i860 */ -#endif /* not m88k */ -#endif /* not clipper */ - -#ifdef _STDARG_H -/* Define va_list, if desired, from __gnuc_va_list. */ -/* We deliberately do not define va_list when called from - stdio.h, because ANSI C says that stdio.h is not supposed to define - va_list. stdio.h needs to have access to that data type, - but must not use that name. It should use the name __gnuc_va_list, - which is safe because it is reserved for the implementation. */ - -#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ -#undef _VA_LIST -#endif - -#ifdef _BSD_VA_LIST -#undef _BSD_VA_LIST -#endif - -#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) -/* SVR4.2 uses _VA_LIST for an internal alias for va_list, - so we must avoid testing it and setting it here. - SVR4 uses _VA_LIST as a flag in stdarg.h, but we should - have no conflict with that. */ -#ifndef _VA_LIST_ -#define _VA_LIST_ -#ifdef __i860__ -#ifndef _VA_LIST -#define _VA_LIST va_list -#endif -#endif /* __i860__ */ -typedef __gnuc_va_list va_list; -#ifdef _SCO_DS -#define __VA_LIST -#endif -#endif /* _VA_LIST_ */ -#else /* not __svr4__ || _SCO_DS */ - -/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. - But on BSD NET2 we must not test or define or undef it. - (Note that the comments in NET 2's ansi.h - are incorrect for _VA_LIST_--see stdio.h!) */ -#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) -/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ -#ifndef _VA_LIST_DEFINED -/* The macro _VA_LIST is used in SCO Unix 3.2. */ -#ifndef _VA_LIST -/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ -#ifndef _VA_LIST_T_H -typedef __gnuc_va_list va_list; -#endif /* not _VA_LIST_T_H */ -#endif /* not _VA_LIST */ -#endif /* not _VA_LIST_DEFINED */ -#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) -#define _VA_LIST_ -#endif -#ifndef _VA_LIST -#define _VA_LIST -#endif -#ifndef _VA_LIST_DEFINED -#define _VA_LIST_DEFINED -#endif -#ifndef _VA_LIST_T_H -#define _VA_LIST_T_H -#endif - -#endif /* not _VA_LIST_, except on certain systems */ - -#endif /* not __svr4__ */ - -#endif /* _STDARG_H */ - -#endif /* not _ANSI_STDARG_H_ */ -#endif /* not _STDARG_H */ diff --git a/include/stdint.h b/include/stdint.h index af73866e3..d254dcabb 100644 --- a/include/stdint.h +++ b/include/stdint.h @@ -1,31 +1,32 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ISO C 9X: 7.18 Integer types <stdint.h> + * ISO C99: 7.18 Integer types <stdint.h> */ #ifndef _STDINT_H #define _STDINT_H 1 #include <features.h> -#define __need_wchar_t +//#define __need_wchar_t #include <stddef.h> +//#include <bits/wchar.h> #include <bits/wordsize.h> /* Exact integral types. */ @@ -49,7 +50,10 @@ typedef long long int int64_t; /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; +#ifndef __uint32_t_defined typedef unsigned int uint32_t; +# define __uint32_t_defined +#endif #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #else @@ -114,15 +118,15 @@ typedef unsigned long long int uint_fast64_t; /* Types for `void *' pointers. */ #if __WORDSIZE == 64 -# ifndef intptr_t +# ifndef __intptr_t_defined typedef long int intptr_t; -# define intptr_t intptr_t +# define __intptr_t_defined # endif typedef unsigned long int uintptr_t; #else -# ifndef intptr_t +# ifndef __intptr_t_defined typedef int intptr_t; -# define intptr_t intptr_t +# define __intptr_t_defined # endif typedef unsigned int uintptr_t; #endif @@ -140,7 +144,7 @@ typedef unsigned long long int uintmax_t; #endif -/* The ISO C 9X standard specifies that in C++ implementations these +/* The ISO C99 standard specifies that in C++ implementations these macros should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_LIMIT_MACROS @@ -166,8 +170,8 @@ typedef unsigned long long int uintmax_t; # define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ -# define UINT8_MAX (255U) -# define UINT16_MAX (65535U) +# define UINT8_MAX (255) +# define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) # define UINT64_MAX (__UINT64_C(18446744073709551615)) @@ -184,8 +188,8 @@ typedef unsigned long long int uintmax_t; # define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types having a minimum size. */ -# define UINT_LEAST8_MAX (255U) -# define UINT_LEAST16_MAX (65535U) +# define UINT_LEAST8_MAX (255) +# define UINT_LEAST16_MAX (65535) # define UINT_LEAST32_MAX (4294967295U) # define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) @@ -212,7 +216,7 @@ typedef unsigned long long int uintmax_t; # define INT_FAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of fast unsigned integral types having a minimum size. */ -# define UINT_FAST8_MAX (255U) +# define UINT_FAST8_MAX (255) # if __WORDSIZE == 64 # define UINT_FAST16_MAX (18446744073709551615UL) # define UINT_FAST32_MAX (18446744073709551615UL) @@ -269,18 +273,18 @@ typedef unsigned long long int uintmax_t; /* Limits of `wchar_t'. */ # ifndef WCHAR_MIN /* These constants might also be defined in <wchar.h>. */ -# define WCHAR_MIN (0) -# define WCHAR_MAX (2147483647) +# define WCHAR_MIN __WCHAR_MIN +# define WCHAR_MAX __WCHAR_MAX # endif /* Limits of `wint_t'. */ -# define WINT_MIN (0) -# define WINT_MAX (2147483647) +# define WINT_MIN (0u) +# define WINT_MAX (4294967295u) #endif /* C++ && limit macros */ -/* The ISO C 9X standard specifies that in C++ implementations these +/* The ISO C99 standard specifies that in C++ implementations these should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS diff --git a/include/stdio.h b/include/stdio.h index 25912ebaf..def468794 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -1,45 +1,59 @@ /* Define ISO C stdio on top of C++ iostreams. - Copyright (C) 1991, 1994-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1991, 1994-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ISO C Standard: 4.9 INPUT/OUTPUT <stdio.h> + * ISO C99 Standard: 7.19 Input/output <stdio.h> */ #ifndef _STDIO_H -#define _STDIO_H -#include <features.h> -#include <stdarg.h> -#include <sys/types.h> +#if !defined __need_FILE && !defined __need___FILE +# define _STDIO_H 1 +# include <features.h> __BEGIN_DECLS +# define __need_size_t +# define __need_NULL +# include <stddef.h> + +# include <bits/types.h> +# define __need_FILE +# define __need___FILE +#endif /* Don't need FILE. */ +#include <sys/types.h> + + +#if !defined __FILE_defined && defined __need_FILE + +/* The opaque type of streams. This is the definition used elsewhere. */ /* when you add or change fields here, be sure to change the initialization * in stdio_init and fopen */ -struct __stdio_file { +struct _IO_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; /* 1 + 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 */ - struct __stdio_file * next; + struct _IO_FILE * next; int fd; /* the file descriptor associated with the stream */ @@ -47,16 +61,37 @@ struct __stdio_file { unsigned char ungot; char unbuf[2]; /* The buffer for 'unbuffered' streams */ }; +typedef struct _IO_FILE FILE; -typedef struct __stdio_file FILE; +# define __FILE_defined 1 +#endif /* FILE not defined. */ +#undef __need_FILE -/* Default buffer size. */ -#define BUFSIZ (512) -/* Define EOF and NULL */ -#define EOF (-1) -#ifndef NULL -#define NULL (0) +#if !defined ____FILE_defined && defined __need___FILE + +/* The opaque type of streams. This is the definition used elsewhere. */ +typedef struct _IO_FILE __FILE; + +# define ____FILE_defined 1 +#endif /* __FILE not defined. */ +#undef __need___FILE + + +#ifdef _STDIO_H +#undef _STDIO_USES_IOSTREAM + +#include <stdarg.h> +typedef va_list _G_va_list; + +/* The type of the second argument to `fgetpos' and `fsetpos'. */ +#ifndef __USE_FILE_OFFSET64 +typedef __off_t fpos_t; +#else +typedef __off64_t fpos_t; +#endif +#ifdef __USE_LARGEFILE64 +typedef __off64_t fpos64_t; #endif /* The possibilities for the third argument to `setvbuf'. */ @@ -73,14 +108,33 @@ typedef struct __stdio_file FILE; #define __MODE_EOF 0x40 /* EOF status */ #define __MODE_ERR 0x80 /* Error status */ + +/* Default buffer size. */ +#ifndef BUFSIZ +# define BUFSIZ (512) +#endif + + +/* End of file character. + Some things throughout the library rely on this being -1. */ +#ifndef EOF +# define EOF (-1) +#endif + + /* The possibilities for the third argument to `fseek'. These values should not be changed. */ #define SEEK_SET 0 /* Seek from beginning of file. */ #define SEEK_CUR 1 /* Seek from current position. */ #define SEEK_END 2 /* Seek from end of file. */ + +#if defined __USE_SVID || defined __USE_XOPEN /* Default path prefix for `tempnam' and `tmpnam'. */ -#define P_tmpdir "/tmp" +# define P_tmpdir "/tmp" +#endif + + /* Get the values: L_tmpnam How long an array of chars must be to be passed to `tmpnam'. TMP_MAX The minimum number of unique filenames generated by tmpnam @@ -90,9 +144,7 @@ typedef struct __stdio_file FILE; L_cuserid How long an array to pass to `cuserid'. FOPEN_MAX Minimum number of files that can be open at once. FILENAME_MAX Maximum length of a filename. */ -#define __need_FOPEN_MAX #include <bits/stdio_lim.h> -#undef __need_FOPEN_MAX /* Standard streams. */ @@ -105,23 +157,31 @@ extern FILE *stderr; /* Standard error output stream. */ #define stderr stderr /* Remove file FILENAME. */ -extern int remove __P ((__const char *__filename)); +extern int remove (__const char *__filename) __THROW; /* Rename file OLD to NEW. */ -extern int rename __P ((__const char *__old, __const char *__new)); +extern int rename (__const char *__old, __const char *__new) __THROW; /* Create a temporary file and open it read/write. */ -extern FILE *tmpfile __P ((void)); +#ifndef __USE_FILE_OFFSET64 +extern FILE *tmpfile (void) __THROW; +#else +# ifdef __REDIRECT +extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64); +# else +# define tmpfile tmpfile64 +# endif +#endif #ifdef __USE_LARGEFILE64 -extern FILE *tmpfile64 __P ((void)); +extern FILE *tmpfile64 (void) __THROW; #endif /* Generate a temporary filename. */ -extern char *tmpnam __P ((char *__s)); +extern char *tmpnam (char *__s) __THROW; #ifdef __USE_MISC /* This is the reentrant variant of `tmpnam'. The only difference is that it does not allow S to be NULL. */ -extern char *tmpnam_r __P ((char *__s)); +extern char *tmpnam_r (char *__s) __THROW; #endif @@ -133,170 +193,218 @@ extern char *tmpnam_r __P ((char *__s)); If not and if DIR is not NULL, that value is checked. If that fails, P_tmpdir is tried and finally "/tmp". The storage for the filename is allocated by `malloc'. */ -extern char *tempnam __P ((__const char *__dir, __const char *__pfx)); +extern char *tempnam (__const char *__dir, __const char *__pfx) + __THROW __attribute_malloc__; #endif /* Close STREAM. */ -extern int fclose __P ((FILE *__stream)); +extern int fclose (FILE *__stream) __THROW; /* Flush STREAM, or all streams if STREAM is NULL. */ -extern int fflush __P ((FILE *__stream)); - -/* Open a file and create a new stream for it. */ -extern FILE *fopen __P ((__const char *__restrict __filename, - __const char *__restrict __mode)); -/* Open a file, replacing an existing stream with it. */ -extern FILE *freopen __P ((__const char *__restrict __filename, - __const char *__restrict __mode, - FILE *__restrict __stream)); +extern int fflush (FILE *__stream) __THROW; #ifdef __USE_MISC -/* - * Open a file using an automatically (stack) or statically allocated FILE. - * The FILE * returned behaves just as any other FILE * with respect to the - * stdio functions, but be aware of the following: - * NOTE: The buffer used for the file is FILE's builtin 2-byte buffer, so - * setting a new buffer is probably advisable. - * NOTE: This function is primarily intended to be used for stack-allocated - * FILEs when uClibc stdio has been built with no dynamic memory support. - * For the statically allocated case, it is probably better to increase - * the value of FIXED_STREAMS in stdio.c. - * WARNING: If allocated on the stack, make sure you call fclose before the - * stack memory is reclaimed! - */ -extern FILE *fsfopen __P ((__const char *__restrict __filename, - __const char *__restrict __mode, - FILE *__restrict __stream)); +/* Faster versions when locking is not required. */ +extern int fflush_unlocked (FILE *__stream) __THROW; +#endif + +#if 0 +//#ifdef __USE_GNU +/* Close all streams. */ +extern int fcloseall (void) __THROW; #endif +#ifndef __USE_FILE_OFFSET64 +/* Open a file and create a new stream for it. */ +extern FILE *fopen (__const char *__restrict __filename, + __const char *__restrict __modes) __THROW; +/* Open a file, replacing an existing stream with it. */ +extern FILE *freopen (__const char *__restrict __filename, + __const char *__restrict __modes, + FILE *__restrict __stream) __THROW; +#else +# ifdef __REDIRECT +extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename, + __const char *__restrict __modes) __THROW, + fopen64); +extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename, + __const char *__restrict __modes, + FILE *__restrict __stream) __THROW, + freopen64); +# else +# define fopen fopen64 +# define freopen freopen64 +# endif +#endif #ifdef __USE_LARGEFILE64 -extern FILE *fopen64 __P ((__const char *__restrict __filename, - __const char *__restrict __mode)); -extern FILE *freopen64 __P ((__const char *__restrict __filename, - __const char *__restrict __mode, - FILE *__restrict __stream)); +extern FILE *fopen64 (__const char *__restrict __filename, + __const char *__restrict __modes) __THROW; +extern FILE *freopen64 (__const char *__restrict __filename, + __const char *__restrict __modes, + FILE *__restrict __stream) __THROW; #endif #ifdef __USE_POSIX /* Create a new stream that refers to an existing system file descriptor. */ -extern FILE *fdopen __P ((int __fd, __const char *__mode)); +extern FILE *fdopen (int __fd, __const char *__modes) __THROW; #endif +#if 0 +//#ifdef __USE_GNU +/* Create a new stream that refers to the given magic cookie, + and uses the given functions for input and output. */ +extern FILE *fopencookie (void *__restrict __magic_cookie, + __const char *__restrict __modes, + _IO_cookie_io_functions_t __io_funcs) __THROW; + +/* Create a new stream that refers to a memory buffer. */ +extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) __THROW; + +/* Open a stream that writes into a malloc'd buffer that is expanded as + necessary. *BUFLOC and *SIZELOC are updated with the buffer's location + and the number of characters written on fflush or fclose. */ +extern FILE *open_memstream (char **__restrict __bufloc, + size_t *__restrict __sizeloc) __THROW; +#endif -/* Make STREAM use buffering mode MODE. - If BUF is not NULL, use N bytes of it for buffering; - else allocate an internal buffer N bytes long. */ -extern int setvbuf __P ((FILE *__restrict __stream, char *__restrict __buf, - int __mode, size_t __n)); /* If BUF is NULL, make STREAM unbuffered. Else make it use buffer BUF, of size BUFSIZ. */ -extern void setbuf __P ((FILE *__restrict __stream, char *__restrict __buf)); +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW; +/* Make STREAM use buffering mode MODE. + If BUF is not NULL, use N bytes of it for buffering; + else allocate an internal buffer N bytes long. */ +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) __THROW; #ifdef __USE_BSD /* If BUF is NULL, make STREAM unbuffered. Else make it use SIZE bytes of BUF for buffering. */ -extern void setbuffer __P ((FILE *__restrict __stream, char *__restrict __buf, - size_t __size)); +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) __THROW; /* Make STREAM line-buffered. */ -extern void setlinebuf __P ((FILE *__stream)); +extern void setlinebuf (FILE *__stream) __THROW; #endif /* Write formatted output to STREAM. */ -extern int fprintf __P ((FILE *__restrict __stream, - __const char *__restrict __format, ...)); +extern int fprintf (FILE *__restrict __stream, + __const char *__restrict __format, ...) __THROW; /* Write formatted output to stdout. */ -extern int printf __P ((__const char *__restrict __format, ...)); +extern int printf (__const char *__restrict __format, ...) __THROW; /* Write formatted output to S. */ -extern int sprintf __P ((char *__restrict __s, - __const char *__restrict __format, ...)); - -/* Write formatted output to a file descriptor */ -extern int vdprintf __P((int fd, __const char *__restrict __format, - va_list __arg)); - -/* Write formatted output to a buffer S dynamically allocated by asprintf. */ -extern int asprintf __P ((char **__restrict __s, - __const char *__restrict __format, ...)); +extern int sprintf (char *__restrict __s, + __const char *__restrict __format, ...) __THROW; /* Write formatted output to S from argument list ARG. */ -extern int vfprintf __P ((FILE *__restrict __s, - __const char *__restrict __format, - va_list __arg)); +extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, + _G_va_list __arg) __THROW; /* Write formatted output to stdout from argument list ARG. */ -extern int vprintf __P ((__const char *__restrict __format, - va_list __arg)); +extern int vprintf (__const char *__restrict __format, _G_va_list __arg) + __THROW; /* Write formatted output to S from argument list ARG. */ -extern int vsprintf __P ((char *__restrict __s, - __const char *__restrict __format, - va_list __arg)); +extern int vsprintf (char *__restrict __s, __const char *__restrict __format, + _G_va_list __arg) __THROW; +#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98 /* Maximum chars of output to write in MAXLEN. */ -extern int snprintf __P ((char *__restrict __s, size_t __maxlen, - __const char *__restrict __format, ...)) - __attribute__ ((__format__ (__printf__, 3, 4))); - -extern int __vsnprintf __P ((char *__restrict __s, size_t __maxlen, - __const char *__restrict __format, - va_list __arg)) - __attribute__ ((__format__ (__printf__, 3, 0))); -extern int vsnprintf __P ((char *__restrict __s, size_t __maxlen, - __const char *__restrict __format, - va_list __arg)) - __attribute__ ((__format__ (__printf__, 3, 0))); +extern int snprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, ...) + __THROW __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, _G_va_list __arg) + __THROW __attribute__ ((__format__ (__printf__, 3, 0))); +#endif + +#ifdef __USE_GNU +/* Write formatted output to a string dynamically allocated with `malloc'. + Store the address of the string in *PTR. */ +extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, + _G_va_list __arg) + __THROW __attribute__ ((__format__ (__printf__, 2, 0))); +extern int __asprintf (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + __THROW __attribute__ ((__format__ (__printf__, 2, 3))); +extern int asprintf (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + __THROW __attribute__ ((__format__ (__printf__, 2, 3))); + +/* Write formatted output to a file descriptor. */ +extern int vdprintf (int __fd, __const char *__restrict __fmt, + _G_va_list __arg) + __THROW __attribute__ ((__format__ (__printf__, 2, 0))); +extern int dprintf (int __fd, __const char *__restrict __fmt, ...) + __THROW __attribute__ ((__format__ (__printf__, 2, 3))); +#endif + /* Read formatted input from STREAM. */ -extern int fscanf __P ((FILE *__restrict __stream, - __const char *__restrict __format, ...)); +extern int fscanf (FILE *__restrict __stream, + __const char *__restrict __format, ...) __THROW; /* Read formatted input from stdin. */ -extern int scanf __P ((__const char *__restrict __format, ...)); +extern int scanf (__const char *__restrict __format, ...) __THROW; /* Read formatted input from S. */ -extern int sscanf __P ((__const char *__restrict __s, - __const char *__restrict __format, ...)); +extern int sscanf (__const char *__restrict __s, + __const char *__restrict __format, ...) __THROW; +#ifdef __USE_ISOC99 /* Read formatted input from S into argument list ARG. */ -extern int vfscanf __P ((FILE *__restrict __s, - __const char *__restrict __format, - va_list __arg)) - __attribute__ ((__format__ (__scanf__, 2, 0))); +extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, + _G_va_list __arg) + __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); /* Read formatted input from stdin into argument list ARG. */ -extern int vscanf __P ((__const char *__restrict __format, va_list __arg)) - __attribute__ ((__format__ (__scanf__, 1, 0))); +extern int vscanf (__const char *__restrict __format, _G_va_list __arg) + __THROW __attribute__ ((__format__ (__scanf__, 1, 0))); /* Read formatted input from S into argument list ARG. */ -extern int vsscanf __P ((__const char *__restrict __s, - __const char *__restrict __format, - va_list __arg)) - __attribute__ ((__format__ (__scanf__, 2, 0))); +extern int vsscanf (__const char *__restrict __s, + __const char *__restrict __format, _G_va_list __arg) + __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); +#endif /* Use ISO C9x. */ /* Read a character from STREAM. */ -extern int fgetc __P ((FILE *__stream)); -extern int getc __P ((FILE *__stream)); +extern int fgetc (FILE *__stream) __THROW; +extern int getc (FILE *__stream) __THROW; /* Read a character from stdin. */ -extern int getchar __P ((void)); +extern int getchar (void) __THROW; -/* The C standard explicitly says this is a macro, so be that way */ +/* The C standard explicitly says this is a macro, so we always do the + optimization for it. */ #define getc(stream) \ (((stream)->bufpos >= (stream)->bufread) ? fgetc(stream): \ (*(stream)->bufpos++)) + /* getchar() is equivalent to getc(stdin). Since getc is a macro, * that means that getchar() should be a macro too... */ #define getchar() getc(stdin) +#if defined __USE_POSIX || defined __USE_MISC +/* These are defined in POSIX.1:1996. */ +extern int getc_unlocked (FILE *__stream) __THROW; +extern int getchar_unlocked (void) __THROW; +#endif /* Use POSIX or MISC. */ + +#ifdef __USE_MISC +/* Faster version when locking is not necessary. */ +extern int fgetc_unlocked (FILE *__stream) __THROW; +#endif /* Use MISC. */ + + /* Write a character to STREAM. */ -extern int fputc __P ((int __c, FILE *__stream)); -extern int putc __P ((int __c, FILE *__stream)); +extern int fputc (int __c, FILE *__stream) __THROW; +extern int putc (int __c, FILE *__stream) __THROW; /* Write a character to stdout. */ -extern int putchar __P ((int __c)); +extern int putchar (int __c) __THROW; -/* The C standard explicitly says this can be a macro, so be that way */ +/* The C standard explicitly says this can be a macro, + so we always do the optimization for it. */ #define putc(c, stream) \ (((stream)->bufpos >= (stream)->bufwrite) ? fputc((c), (stream)) \ : (unsigned char) (*(stream)->bufpos++ = (c)) ) @@ -304,169 +412,264 @@ extern int putchar __P ((int __c)); * that means that putchar() should be a macro too... */ #define putchar(c) putc((c), stdout) + +#ifdef __USE_MISC +/* Faster version when locking is not necessary. */ +extern int fputc_unlocked (int __c, FILE *__stream) __THROW; +#endif /* Use MISC. */ + +#if defined __USE_POSIX || defined __USE_MISC +/* These are defined in POSIX.1:1996. */ +extern int putc_unlocked (int __c, FILE *__stream) __THROW; +extern int putchar_unlocked (int __c) __THROW; +#endif /* Use POSIX or MISC. */ + + #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN /* Get a word (int) from STREAM. */ -extern int getw __P ((FILE *__stream)); +extern int getw (FILE *__stream) __THROW; /* Write a word (int) to STREAM. */ -extern int putw __P ((int __w, FILE *__stream)); +extern int putw (int __w, FILE *__stream) __THROW; #endif /* Get a newline-terminated string of finite length from STREAM. */ -extern char *fgets __P ((char *__restrict __s, int __n, - FILE *__restrict __stream)); +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) + __THROW; + +#if 0 +//#ifdef __USE_GNU +/* This function does the same as `fgets' but does not lock the stream. */ +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream) __THROW; +#endif /* Get a newline-terminated string from stdin, removing the newline. DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */ -extern char *gets __P ((char *__s)); +extern char *gets (char *__s) __THROW; -#ifdef __USE_GNU +#ifdef __USE_GNU /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR (and null-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *N characters of space. It is realloc'd as necessary. Returns the number of characters read (not including the null terminator), or -1 on error or EOF. */ -extern ssize_t __getdelim __P ((char **__restrict __lineptr, - size_t *__restrict __n, int __delimiter, - FILE *__restrict __stream)); -extern ssize_t getdelim __P ((char **__restrict __lineptr, - size_t *__restrict __n, int __delimiter, - FILE *__restrict __stream)); +extern ssize_t __getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) __THROW; +extern ssize_t getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) __THROW; /* Like `getdelim', but reads up to a newline. */ -extern ssize_t getline __P ((char **__restrict __lineptr, - size_t *__restrict __n, - FILE *__restrict __stream)); +extern ssize_t getline (char **__restrict __lineptr, + size_t *__restrict __n, + FILE *__restrict __stream) __THROW; #endif /* Write a string to STREAM. */ -extern int fputs __P ((__const char *__restrict __s, - FILE *__restrict __stream)); +extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) + __THROW; + +#if 0 +//#ifdef __USE_GNU +/* This function does the same as `fputs' but does not lock the stream. */ +extern int fputs_unlocked (__const char *__restrict __s, + FILE *__restrict __stream) __THROW; +#endif /* Write a string, followed by a newline, to stdout. */ -extern int puts __P ((__const char *__s)); +extern int puts (__const char *__s) __THROW; /* Push a character back onto the input buffer of STREAM. */ -extern int ungetc __P ((int __c, FILE *__stream)); +extern int ungetc (int __c, FILE *__stream) __THROW; /* Read chunks of generic data from STREAM. */ -extern size_t fread __P ((void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __stream)); +extern size_t fread (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) __THROW; /* Write chunks of generic data to STREAM. */ -extern size_t fwrite __P ((__const void *__restrict __ptr, size_t __size, - size_t __n, FILE *__restrict __s)); +extern size_t fwrite (__const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __s) __THROW; + +#ifdef __USE_MISC +/* Faster versions when locking is not necessary. */ +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) __THROW; +extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) __THROW; +#endif -/* Rewind to the beginning of STREAM. */ -extern void rewind __P ((FILE *__stream)); /* Seek to a certain position on STREAM. */ -extern int fseek __P ((FILE *__stream, long int __off, int __whence)); +extern int fseek (FILE *__stream, long int __off, int __whence) __THROW; /* Return the current position of STREAM. */ -extern long int ftell __P ((FILE *__stream)); +extern long int ftell (FILE *__stream) __THROW; +/* Rewind to the beginning of STREAM. */ +extern void rewind (FILE *__stream) __THROW; /* The Single Unix Specification, Version 2, specifies an alternative, more adequate interface for the two functions above which deal with file offset. `long int' is not the right type. These definitions are originally defined in the Large File Support API. */ -/* Types needed in these functions. */ -#ifndef off_t -typedef __off_t off_t; -# define off_t off_t -#endif - -#if defined __USE_LARGEFILE64 && !defined off64_t -typedef __off64_t off64_t; -# define off64_t off64_t +#ifndef __USE_FILE_OFFSET64 +# ifdef __USE_LARGEFILE +/* Seek to a certain position on STREAM. */ +extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW; +/* Return the current position of STREAM. */ +extern __off_t ftello (FILE *__stream) __THROW; +# endif + +/* Get STREAM's position. */ +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) + __THROW; +/* Set STREAM's position. */ +extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW; +#else +# ifdef __REDIRECT +# ifdef __USE_LARGEFILE +extern int __REDIRECT (fseeko, + (FILE *__stream, __off64_t __off, int __whence) __THROW, + fseeko64); +extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64); +# endif +extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, + fpos_t *__restrict __pos) __THROW, fgetpos64); +extern int __REDIRECT (fsetpos, + (FILE *__stream, __const fpos_t *__pos) __THROW, + fsetpos64); +# else +# ifdef __USE_LARGEFILE +# define fseeko fseeko64 +# define ftello ftello64 +# endif +# define fgetpos fgetpos64 +# define fsetpos fsetpos64 +# endif #endif -#ifndef fpos_t -typedef off_t fpos_t; -#define fpos_t fpos_t +#ifdef __USE_LARGEFILE64 +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW; +extern __off64_t ftello64 (FILE *__stream) __THROW; +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) + __THROW; +extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW; #endif -/* Seek to a certain position on STREAM. */ -extern int fsetpos __P((FILE *__stream, __const fpos_t *__pos)); -/* Return the current position of STREAM. */ -extern int fgetpos __P((FILE *__stream, fpos_t *__pos)); - /* Clear the error and EOF indicators for STREAM. */ -extern void clearerr __P ((FILE *__stream)); +extern void clearerr (FILE *__stream) __THROW; /* Return the EOF indicator for STREAM. */ -extern int feof __P ((FILE *__stream)); +extern int feof (FILE *__stream) __THROW; /* Return the error indicator for STREAM. */ -extern int ferror __P ((FILE *__stream)); +extern int ferror (FILE *__stream) __THROW; + +#ifdef __USE_MISC +/* Faster versions when locking is not required. */ +extern void clearerr_unlocked (FILE *__stream) __THROW; +extern int feof_unlocked (FILE *__stream) __THROW; +extern int ferror_unlocked (FILE *__stream) __THROW; +#endif + /* Print a message describing the meaning of the value of errno. */ -extern void perror __P ((__const char *__s)); +extern void perror (__const char *__s) __THROW; /* These variables normally should not be used directly. The `strerror' function provides all the needed functionality. */ +#ifdef __USE_BSD extern int sys_nerr; extern __const char *__const sys_errlist[]; +#endif +#if 0 +//#ifdef __USE_GNU +extern int _sys_nerr; +extern __const char *__const _sys_errlist[]; +#endif + #ifdef __USE_POSIX /* Return the system file descriptor for STREAM. */ -extern int fileno __P ((FILE *__stream)); +extern int fileno (FILE *__stream) __THROW; /* Only use the macro below if you know fp is a valid FILE for a valid fd. */ #define __fileno(fp) ((fp)->fd) #endif /* Use POSIX. */ +#ifdef __USE_MISC +/* Faster version when locking is not required. */ +extern int fileno_unlocked (FILE *__stream) __THROW; +#endif + + #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \ defined __USE_MISC) /* Create a new stream connected to a pipe running the given command. */ -extern FILE *popen __P ((__const char *__command, __const char *__mode)); +extern FILE *popen (__const char *__command, __const char *__modes) __THROW; /* Close a stream opened by popen and return the status of its child. */ -extern int pclose __P ((FILE *__stream)); +extern int pclose (FILE *__stream) __THROW; #endif #ifdef __USE_POSIX /* Return the name of the controlling terminal. */ -extern char *ctermid __P ((char *__s)); +extern char *ctermid (char *__s) __THROW; #endif /* Use POSIX. */ #ifdef __USE_XOPEN /* Return the name of the current user. */ -extern char *cuserid __P ((char *__s)); -#endif /* Use X/Open. */ +extern char *cuserid (char *__s) __THROW; +#endif /* Use X/Open, but not issue 6. */ + + +#if 0 +//#ifdef __USE_GNU +struct obstack; /* See <obstack.h>. */ + +/* Write formatted output to an obstack. */ +extern int obstack_printf (struct obstack *__restrict __obstack, + __const char *__restrict __format, ...) __THROW; +extern int obstack_vprintf (struct obstack *__restrict __obstack, + __const char *__restrict __format, + _G_va_list __args) __THROW; +#endif /* Use GNU. */ #if defined __USE_POSIX || defined __USE_MISC /* These are defined in POSIX.1:1996. */ /* Acquire ownership of STREAM. */ -extern void flockfile __P ((FILE *__stream)); +extern void flockfile (FILE *__stream) __THROW; /* Try to acquire ownership of STREAM but do not block if it is not possible. */ -extern int ftrylockfile __P ((FILE *__stream)); +extern int ftrylockfile (FILE *__stream) __THROW; /* Relinquish the ownership granted for STREAM. */ -extern void funlockfile __P ((FILE *__stream)); +extern void funlockfile (FILE *__stream) __THROW; #endif /* POSIX || misc */ -#if defined __USE_XOPEN && !defined __USE_GNU +#if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU /* The X/Open standard requires some functions and variables to be declared here which do not belong into this header. But we have to follow. In GNU mode we don't do this nonsense. */ # define __need_getopt # include <getopt.h> -#endif +#endif /* X/Open, but not issue 6 and not for GNU. */ /* If we are compiling with optimizing read this file. It contains - several optizing inline functions and macros. */ + several optimizing inline functions and macros. */ #ifdef __USE_EXTERN_INLINES # include <bits/stdio.h> #endif __END_DECLS +#endif /* <stdio.h> included. */ + #endif /* !_STDIO_H */ diff --git a/include/stdlib.h b/include/stdlib.h index 28119c6aa..ac5bf3973 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -1,130 +1,873 @@ -/* stdlib.h */ -#ifndef __STDLIB_H -#define __STDLIB_H +/* Copyright (C) 1991-1999, 2000, 2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * ISO C99 Standard: 7.20 General utilities <stdlib.h> + */ + +#ifndef _STDLIB_H #include <features.h> -#include <sys/types.h> -#include <limits.h> + +/* Get size_t, wchar_t and NULL from <stddef.h>. */ +#define __need_size_t +#ifndef __need_malloc_and_calloc +# define __need_wchar_t +# define __need_NULL +#endif +#include <stddef.h> __BEGIN_DECLS -/* Don't overwrite user definitions of NULL */ -#ifndef NULL -#define NULL ((void *) 0) +#ifndef __need_malloc_and_calloc +#define _STDLIB_H 1 + +#if defined __USE_XOPEN && !defined _SYS_WAIT_H +/* XPG requires a few symbols from <sys/wait.h> being defined. */ +# include <bits/waitflags.h> +# include <bits/waitstatus.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. */ + +# if defined __GNUC__ && !defined __cplusplus +# 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'. The funky union + causes redeclarations with ether `int *' or `union wait *' to be + allowed without complaint. __WAIT_STATUS_DEFN is the type used in + the actual function definitions. */ + +# if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus +# define __WAIT_STATUS void * +# define __WAIT_STATUS_DEFN void * +# 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 * +# define __WAIT_STATUS_DEFN int * + +# endif /* Use BSD. */ + +/* Define the macros <sys/wait.h> also would define this way. */ +# 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)) +#endif /* X/Open and <sys/wait.h> not included. */ + +/* Returned by `div'. */ +typedef struct + { + int quot; /* Quotient. */ + int rem; /* Remainder. */ + } div_t; + +/* Returned by `ldiv'. */ +#ifndef __ldiv_t_defined +typedef struct + { + long int quot; /* Quotient. */ + long int rem; /* Remainder. */ + } ldiv_t; +# define __ldiv_t_defined 1 #endif +#if defined __USE_ISOC99 && !defined __lldiv_t_defined +/* Returned by `lldiv'. */ +__extension__ typedef struct + { + long long int quot; /* Quotient. */ + long long int rem; /* Remainder. */ + } lldiv_t; +# define __lldiv_t_defined 1 +#endif + + +/* The largest number rand will return (same as INT_MAX). */ +#define RAND_MAX 2147483647 + + /* We define these the same for all machines. - * Changes from this to the outside world should be done in `_exit'. */ -#define EXIT_FAILURE 1 /* Failing exit status. */ -#define EXIT_SUCCESS 0 /* Successful exit status. */ + Changes from this to the outside world should be done in `_exit'. */ +#define EXIT_FAILURE 1 /* Failing exit status. */ +#define EXIT_SUCCESS 0 /* Successful exit status. */ -/* The largest number rand will return */ -#define RAND_MAX INT_MAX /* Maximum length of a multibyte character in the current locale. */ -#define MB_CUR_MAX 1 +#define MB_CUR_MAX (__ctype_get_mb_cur_max ()) +extern size_t __ctype_get_mb_cur_max (void) __THROW; -typedef struct + +/* Convert a string to a floating-point number. */ +extern double atof (__const char *__nptr) __THROW __attribute_pure__; +/* Convert a string to an integer. */ +extern int atoi (__const char *__nptr) __THROW __attribute_pure__; +/* Convert a string to a long integer. */ +extern long int atol (__const char *__nptr) __THROW __attribute_pure__; + +#if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_MISC) +/* Convert a string to a long long integer. */ +__extension__ extern long long int atoll (__const char *__nptr) + __THROW __attribute_pure__; +#endif + +/* Convert a string to a floating-point number. */ +extern double strtod (__const char *__restrict __nptr, + char **__restrict __endptr) __THROW; + +#ifdef __USE_ISOC99 +/* Likewise for `float' and `long double' sizes of floating-point numbers. */ +extern float strtof (__const char *__restrict __nptr, + char **__restrict __endptr) __THROW; + +extern long double strtold (__const char *__restrict __nptr, + char **__restrict __endptr) __THROW; +#endif + +/* Convert a string to a long integer. */ +extern long int strtol (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) __THROW; +/* Convert a string to an unsigned long integer. */ +extern unsigned long int strtoul (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __THROW; + +#if defined __GNUC__ && defined __USE_BSD +/* Convert a string to a quadword integer. */ +__extension__ +extern long long int strtoq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) __THROW; +/* Convert a string to an unsigned quadword integer. */ +__extension__ +extern unsigned long long int strtouq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __THROW; +#endif /* GCC and use BSD. */ + +#if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_MISC) +/* These functions will part of the standard C library in ISO C99. */ + +/* Convert a string to a quadword integer. */ +__extension__ +extern long long int strtoll (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) __THROW; +/* Convert a string to an unsigned quadword integer. */ +__extension__ +extern unsigned long long int strtoull (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __THROW; +#endif /* ISO C99 or GCC and use MISC. */ + + +#if 0 +//#ifdef __USE_GNU +/* The concept of one static locale per category is not very well + thought out. Many applications will need to process its data using + information from several different locales. Another application is + the implementation of the internationalization handling in the + upcoming ISO C++ standard library. To support this another set of + the functions using locale data exist which have an additional + argument. + + Attention: all these functions are *not* standardized in any form. + This is a proof-of-concept implementation. */ + +/* Structure for reentrant locale using functions. This is an + (almost) opaque type for the user level programs. */ +# include <xlocale.h> + +/* Special versions of the functions above which take the locale to + use as an additional parameter. */ +extern long int __strtol_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __THROW; + +extern unsigned long int __strtoul_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) __THROW; + +__extension__ +extern long long int __strtoll_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __THROW; + +__extension__ +extern unsigned long long int __strtoull_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __THROW; + +extern double __strtod_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __THROW; + +extern float __strtof_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) __THROW; + +extern long double __strtold_l (__const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) __THROW; +#endif /* GNU */ + + +/* The internal entry points for `strtoX' take an extra flag argument + saying whether or not to parse locale-dependent number grouping. */ + +extern double __strtod_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __THROW; +extern float __strtof_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __THROW; +extern long double __strtold_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __group) __THROW; +#ifndef __strtol_internal_defined +extern long int __strtol_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) __THROW; +# define __strtol_internal_defined 1 +#endif +#ifndef __strtoul_internal_defined +extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) __THROW; +# define __strtoul_internal_defined 1 +#endif +#if defined __GNUC__ || defined __USE_ISOC99 +# ifndef __strtoll_internal_defined +__extension__ +extern long long int __strtoll_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) __THROW; +# define __strtoll_internal_defined 1 +# endif +# ifndef __strtoull_internal_defined +__extension__ +extern unsigned long long int __strtoull_internal (__const char * + __restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __THROW; +# define __strtoull_internal_defined 1 +# endif +#endif /* GCC */ + +#ifdef __USE_EXTERN_INLINES +/* Define inline functions which call the internal entry points. */ + +extern __inline double +strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW +{ + return __strtod_internal (__nptr, __endptr, 0); +} +extern __inline long int +strtol (__const char *__restrict __nptr, char **__restrict __endptr, + int __base) __THROW { - int quot; /* Quotient. */ - int rem; /* Remainder. */ -} div_t; + return __strtol_internal (__nptr, __endptr, __base, 0); +} +extern __inline unsigned long int +strtoul (__const char *__restrict __nptr, char **__restrict __endptr, + int __base) __THROW +{ + return __strtoul_internal (__nptr, __endptr, __base, 0); +} -typedef struct +# ifdef __USE_ISOC99 +extern __inline float +strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW +{ + return __strtof_internal (__nptr, __endptr, 0); +} +extern __inline long double +strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW { - long int quot; /* Quotient. */ - long int rem; /* Remainder. */ -} ldiv_t; + return __strtold_internal (__nptr, __endptr, 0); +} +# endif -/* comparison function used by bsearch() and qsort() */ -typedef int (*__compar_fn_t) __P ((__const __ptr_t, __const __ptr_t)); -typedef __compar_fn_t comparison_fn_t; +# ifdef __USE_BSD +__extension__ extern __inline long long int +strtoq (__const char *__restrict __nptr, char **__restrict __endptr, + int __base) __THROW +{ + return __strtoll_internal (__nptr, __endptr, __base, 0); +} +__extension__ extern __inline unsigned long long int +strtouq (__const char *__restrict __nptr, char **__restrict __endptr, + int __base) __THROW +{ + return __strtoull_internal (__nptr, __endptr, __base, 0); +} +# endif + +# if defined __USE_MISC || defined __USE_ISOC99 +__extension__ extern __inline long long int +strtoll (__const char *__restrict __nptr, char **__restrict __endptr, + int __base) __THROW +{ + return __strtoll_internal (__nptr, __endptr, __base, 0); +} +__extension__ extern __inline unsigned long long int +strtoull (__const char * __restrict __nptr, char **__restrict __endptr, + int __base) __THROW +{ + return __strtoull_internal (__nptr, __endptr, __base, 0); +} +# endif + +extern __inline double +atof (__const char *__nptr) __THROW +{ + return strtod (__nptr, (char **) NULL); +} +extern __inline int +atoi (__const char *__nptr) __THROW +{ + return (int) strtol (__nptr, (char **) NULL, 10); +} +extern __inline long int +atol (__const char *__nptr) __THROW +{ + return strtol (__nptr, (char **) NULL, 10); +} + +# if defined __USE_MISC || defined __USE_ISOC99 +__extension__ extern __inline long long int +atoll (__const char *__nptr) __THROW +{ + return strtoll (__nptr, (char **) NULL, 10); +} +# endif +#endif /* Optimizing and Inlining. */ + + +#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED +/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant + digit first. Returns a pointer to static storage overwritten by the + next call. */ +extern char *l64a (long int __n) __THROW; + +/* Read a number from a string S in base 64 as above. */ +extern long int a64l (__const char *__s) __THROW __attribute_pure__; + + +# include <sys/types.h> /* we need int32_t... */ + +/* These are the functions that actually do things. The `random', `srandom', + `initstate' and `setstate' functions are those from BSD Unices. + The `rand' and `srand' functions are required by the ANSI standard. + We provide both interfaces to the same random number generator. */ +/* Return a random long integer between 0 and RAND_MAX inclusive. */ +extern long int random (void) __THROW; + +/* Seed the random number generator with the given number. */ +extern void srandom (unsigned int __seed) __THROW; + +/* Initialize the random number generator to use state buffer STATEBUF, + of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16, + 32, 64, 128 and 256, the bigger the better; values less than 8 will + cause an error and values greater than 256 will be rounded down. */ +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) __THROW; + +/* Switch the random number generator to state buffer STATEBUF, + which should have been previously initialized by `initstate'. */ +extern char *setstate (char *__statebuf) __THROW; + + +# ifdef __USE_MISC +/* Reentrant versions of the `random' family of functions. + These functions all use the following data structure to contain + state, rather than global state variables. */ + +struct random_data + { + int32_t *fptr; /* Front pointer. */ + int32_t *rptr; /* Rear pointer. */ + int32_t *state; /* Array of state values. */ + int rand_type; /* Type of random number generator. */ + int rand_deg; /* Degree of random number generator. */ + int rand_sep; /* Distance between front and rear. */ + int32_t *end_ptr; /* Pointer behind state table. */ + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) __THROW; + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) __THROW; + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) __THROW; + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) __THROW; +# endif /* Use misc. */ +#endif /* Use SVID || extended X/Open. */ + + +/* Return a random integer between 0 and RAND_MAX inclusive. */ +extern int rand (void) __THROW; +/* Seed the random number generator with the given number. */ +extern void srand (unsigned int __seed) __THROW; + +#ifdef __USE_POSIX +/* Reentrant interface according to POSIX.1. */ +extern int rand_r (unsigned int *__seed) __THROW; +#endif + + +#if defined __USE_SVID || defined __USE_XOPEN +/* System V style 48-bit random number generator functions. */ + +/* Return non-negative, double-precision floating-point value in [0.0,1.0). */ +extern double drand48 (void) __THROW; +extern double erand48 (unsigned short int __xsubi[3]) __THROW; + +/* Return non-negative, long integer in [0,2^31). */ +extern long int lrand48 (void) __THROW; +extern long int nrand48 (unsigned short int __xsubi[3]) __THROW; +/* Return signed, long integers in [-2^31,2^31). */ +extern long int mrand48 (void) __THROW; +extern long int jrand48 (unsigned short int __xsubi[3]) __THROW; -/* String to number conversion functions */ -extern double atof(const char *nptr); -extern int atoi(const char *nptr); -extern long atol(const char *nptr); -extern long strtol __P ((const char * nptr, char ** endptr, int base)); -extern unsigned long strtoul __P ((const char * nptr, char ** endptr, int base)); -#if defined __UCLIBC_HAS_LONG_LONG__ -extern long long atoll(const char *nptr); -extern long long strtoll __P ((const char * nptr, char ** endptr, int base)); -extern unsigned long long strtoull __P ((const char * nptr, char ** endptr, int base)); -#endif -#ifdef __UCLIBC_HAS_FLOATS__ -/*TODO: extern char * gcvt __P ((double number, size_t ndigit, char * buf)); */ -extern double strtod __P ((const char * nptr, char ** endptr)); -#endif - - - -/* Random number functions */ -extern int rand __P ((void)); -extern void srand __P ((unsigned int seed)); -extern long int random(void); -extern void srandom(unsigned int seed); - -/* Memory management functions */ -extern __ptr_t calloc __P ((size_t, size_t)); -extern __ptr_t malloc __P ((size_t)); -extern __ptr_t realloc __P ((__ptr_t, size_t)); -extern void free __P ((__ptr_t)); -/* Allocate a block on the stack that will be freed - * when the calling function exits. We use gcc's - * version to make life better... */ -#undef alloca -extern __ptr_t alloca __P ((size_t __size)); -#define alloca(size) __builtin_alloca (size) - -#ifdef DEBUG_MALLOC -extern __ptr_t calloc_dbg __P ((size_t, size_t, char* func, char* file, int line)); -extern __ptr_t malloc_dbg __P ((size_t, char* func, char* file, int line)); -extern __ptr_t realloc_dbg __P ((__ptr_t, size_t, char* func, char* file, int line)); -extern void free_dbg __P ((__ptr_t, char* func, char* file, int line)); -#define calloc(x,y) calloc_dbg((x),(y),__FUNCTION__,__FILE__,__LINE__) -#define malloc(x) malloc_dbg((x),__FUNCTION__,__FILE__,__LINE__) -#define realloc(x,y) realloc_dbg((x),(y),__FUNCTION__,__FILE__,__LINE__) -#define free(x) free_dbg((x),__FUNCTION__,__FILE__,__LINE__) -#endif - - - -/* System and environment functions */ -extern void abort __P ((void)) __attribute__ ((__noreturn__)); -extern int atexit __P ((void (*__func) (void))); -extern void exit __P ((int __status)) __attribute__ ((__noreturn__)); -extern void _exit __P ((int __status)) __attribute__ ((__noreturn__)); -extern char *getenv __P ((__const char *__name)); -extern int putenv __P ((__const char *__string)); -extern char *realpath __P ((__const char *__restrict __name, - char *__restrict __resolved)); -extern int setenv __P ((__const char *__name, __const char *__value, - int __replace)); -extern int system __P ((__const char *__command)); -extern void unsetenv __P ((__const char *__name)); +/* Seed random number generator. */ +extern void srand48 (long int __seedval) __THROW; +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) __THROW; +extern void lcong48 (unsigned short int __param[7]) __THROW; + +# ifdef __USE_MISC +/* Data structure for communication with thread safe versions. This + type is to be regarded as opaque. It's only exported because users + have to allocate objects of this type. */ +struct drand48_data + { + unsigned short int __x[3]; /* Current state. */ + unsigned short int __old_x[3]; /* Old state. */ + unsigned short int __c; /* Additive const. in congruential formula. */ + unsigned short int __init; /* Flag for initializing. */ + unsigned long long int __a; /* Factor in congruential formula. */ + }; + +/* Return non-negative, double-precision floating-point value in [0.0,1.0). */ +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) __THROW; +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) __THROW; + +/* Return non-negative, long integer in [0,2^31). */ +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) __THROW; +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) __THROW; + +/* Return signed, long integers in [-2^31,2^31). */ +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) __THROW; +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) __THROW; + +/* Seed random number generator. */ +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + __THROW; + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) __THROW; + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) __THROW; +# endif /* Use misc. */ +#endif /* Use SVID or X/Open. */ + +#endif /* don't just need malloc and calloc */ + +#ifndef __malloc_and_calloc_defined +#define __malloc_and_calloc_defined +/* Allocate SIZE bytes of memory. */ +extern void *malloc (size_t __size) __THROW __attribute_malloc__; +/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ +extern void *calloc (size_t __nmemb, size_t __size) + __THROW __attribute_malloc__; +#endif + +#ifndef __need_malloc_and_calloc +/* Re-allocate the previously allocated block + in PTR, making the new block SIZE bytes long. */ +extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__; +/* Free a block allocated by `malloc', `realloc' or `calloc'. */ +extern void free (void *__ptr) __THROW; + +#ifdef __USE_MISC +/* Free a block. An alias for `free'. (Sun Unices). */ +extern void cfree (void *__ptr) __THROW; +#endif /* Use misc. */ + +#if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC +# include <alloca.h> +#endif /* Use GNU, BSD, or misc. */ + +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED +/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */ +extern void *valloc (size_t __size) __THROW __attribute_malloc__; +#endif + +#ifdef __USE_XOPEN2K +/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */ +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + __THROW __attribute_malloc__; +#endif + +/* Abort execution and generate a core-dump. */ +extern void abort (void) __THROW __attribute__ ((__noreturn__)); + + +/* Register a function to be called when `exit' is called. */ +extern int atexit (void (*__func) (void)) __THROW; /* The following is used by uClibc in atexit.c and sysconf.c */ #define __UCLIBC_MAX_ATEXIT 20 -/* Search and sort functions */ -extern __ptr_t bsearch __P ((__const __ptr_t __key, __const __ptr_t __base, - size_t __nmemb, size_t __size, __compar_fn_t __compar)); -extern void qsort __P ((__ptr_t __base, size_t __nmemb, size_t __size, - __compar_fn_t __compar)); + +#ifdef __USE_MISC +/* Register a function to be called with the status + given to `exit' and the given argument. */ +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + __THROW; +#endif + +/* Call all functions registered with `atexit' and `on_exit', + in the reverse of the order in which they were registered + perform stdio cleanup, and terminate program execution with STATUS. */ +extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); + +#ifdef __USE_ISOC99 +/* Terminate the program with STATUS without calling any of the + functions registered with `atexit' or `on_exit'. */ +extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); +#endif + + +/* Return the value of envariable NAME, or NULL if it doesn't exist. */ +extern char *getenv (__const char *__name) __THROW; + +/* This function is similar to the above but returns NULL if the + programs is running with SUID or SGID enabled. */ +extern char *__secure_getenv (__const char *__name) __THROW; + +#if defined __USE_SVID || defined __USE_XOPEN +/* The SVID says this is in <stdio.h>, but this seems a better place. */ +/* Put STRING, which is of the form "NAME=VALUE", in the environment. + If there is no `=', remove NAME from the environment. */ +extern int putenv (char *__string) __THROW; +#endif + +#if defined __USE_BSD || defined __USE_XOPEN2K +/* Set NAME to VALUE in the environment. + If REPLACE is nonzero, overwrite an existing value. */ +extern int setenv (__const char *__name, __const char *__value, int __replace) + __THROW; + +/* Remove the variable NAME from the environment. */ +extern int unsetenv (__const char *__name) __THROW; +#endif + +#ifdef __USE_MISC +/* The `clearenv' was planned to be added to POSIX.1 but probably + never made it. Nevertheless the POSIX.9 standard (POSIX bindings + for Fortran 77) requires this function. */ +extern int clearenv (void) __THROW; +#endif + + +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED +/* Generate a unique temporary file name from TEMPLATE. + The last six characters of TEMPLATE must be "XXXXXX"; + they are replaced with a string that makes the file name unique. + Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */ +extern char *mktemp (char *__template) __THROW; + +/* Generate a unique temporary file name from TEMPLATE. + The last six characters of TEMPLATE must be "XXXXXX"; + they are replaced with a string that makes the filename unique. + Returns a file descriptor open on the file for reading and writing, + or -1 if it cannot create a uniquely-named file. */ +# ifndef __USE_FILE_OFFSET64 +extern int mkstemp (char *__template) __THROW; +# else +# ifdef __REDIRECT +extern int __REDIRECT (mkstemp, (char *__template) __THROW, mkstemp64); +# else +# define mkstemp mkstemp64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int mkstemp64 (char *__template) __THROW; +# endif +#endif + +#ifdef __USE_BSD +/* Create a unique temporary directory from TEMPLATE. + The last six characters of TEMPLATE must be "XXXXXX"; + they are replaced with a string that makes the directory name unique. + Returns TEMPLATE, or a null pointer if it cannot get a unique name. + The directory is created mode 700. */ +extern char *mkdtemp (char *__template) __THROW; +#endif + + +/* Execute the given line as a shell command. */ +extern int system (__const char *__command) __THROW; + + +#if 0 +//#ifdef __USE_GNU +/* Return a malloc'd string containing the canonical absolute name of the + named file. The last file name component need not exist, and may be a + symlink to a nonexistent file. */ +extern char *canonicalize_file_name (__const char *__name) __THROW; +#endif + +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED +/* Return the canonical absolute name of file NAME. The last file name + component need not exist, and may be a symlink to a nonexistent file. + If RESOLVED is null, the result is malloc'd; otherwise, if the canonical + name is PATH_MAX chars or more, returns null with `errno' set to + ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the + name in RESOLVED. */ +extern char *realpath (__const char *__restrict __name, + char *__restrict __resolved) __THROW; +#endif +/* Shorthand for type of comparison functions. */ +#ifndef __COMPAR_FN_T +# define __COMPAR_FN_T +typedef int (*__compar_fn_t) (__const void *, __const void *); -/* Integer math functions */ -extern int abs __P ((int __x)) __attribute__ ((__const__)); -extern div_t div __P ((int __numer, int __denom)) __attribute__ ((__const__)); -extern long int labs __P ((long int __x)) __attribute__ ((__const__)); -extern ldiv_t ldiv __P ((long int __numer, long int __denom)) __attribute__ ((__const__)); +# ifdef __USE_GNU +typedef __compar_fn_t comparison_fn_t; +# endif +#endif + +/* Do a binary search for KEY in BASE, which consists of NMEMB elements + of SIZE bytes each, using COMPAR to perform the comparisons. */ +extern void *bsearch (__const void *__key, __const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar); + +/* Sort NMEMB elements of BASE, of SIZE bytes each, + using COMPAR to perform the comparisons. */ +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar); + + +/* Return the absolute value of X. */ +extern int abs (int __x) __THROW __attribute__ ((__const__)); +extern long int labs (long int __x) __THROW __attribute__ ((__const__)); +#ifdef __USE_ISOC99 +__extension__ extern long long int llabs (long long int __x) + __THROW __attribute__ ((__const__)); +#endif + + +/* Return the `div_t', `ldiv_t' or `lldiv_t' representation + of the value of NUMER over DENOM. */ +/* GCC may have built-ins for these someday. */ +extern div_t div (int __numer, int __denom) + __THROW __attribute__ ((__const__)); +extern ldiv_t ldiv (long int __numer, long int __denom) + __THROW __attribute__ ((__const__)); +#ifdef __USE_ISOC99 +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + __THROW __attribute__ ((__const__)); +#endif + + +#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED +/* Convert floating point numbers to strings. The returned values are + valid only until another call to the same function. */ + +/* Convert VALUE to a string with NDIGIT digits and return a pointer to + this. Set *DECPT with the position of the decimal character and *SIGN + with the sign of the number. */ +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __THROW; + +/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT + with the position of the decimal character and *SIGN with the sign of + the number. */ +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __THROW; + +/* If possible convert VALUE to a string with NDIGIT significant digits. + Otherwise use exponential representation. The resulting string will + be written to BUF. */ +extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW; + + +# ifdef __USE_MISC +/* Long double versions of above functions. */ +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) __THROW; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) __THROW; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW; + + +/* Reentrant version of the functions above which provide their own + buffers. */ +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __THROW; +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __THROW; + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) __THROW; +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) __THROW; +# endif /* misc */ +#endif /* use MISC || use X/Open Unix */ + + +/* Return the length of the multibyte character + in S, which is no longer than N. */ +extern int mblen (__const char *__s, size_t __n) __THROW; +/* Return the length of the given multibyte character, + putting its `wchar_t' representation in *PWC. */ +extern int mbtowc (wchar_t *__restrict __pwc, + __const char *__restrict __s, size_t __n) __THROW; +/* Put the multibyte character represented + by WCHAR in S, returning its length. */ +extern int wctomb (char *__s, wchar_t __wchar) __THROW; + + +/* Convert a multibyte string to a wide char string. */ +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + __const char *__restrict __s, size_t __n) __THROW; +/* Convert a wide char string to multibyte string. */ +extern size_t wcstombs (char *__restrict __s, + __const wchar_t *__restrict __pwcs, size_t __n) + __THROW; + + +#ifdef __USE_SVID +/* Determine whether the string value of RESPONSE matches the affirmation + or negative response expression as specified by the LC_MESSAGES category + in the program's current locale. Returns 1 if affirmative, 0 if + negative, and -1 if not matching. */ +extern int rpmatch (__const char *__response) __THROW; +#endif + + +#ifdef __USE_XOPEN_EXTENDED +/* Parse comma separated suboption from *OPTIONP and match against + strings in TOKENS. If found return index and set *VALUEP to + optional value introduced by an equal sign. If the suboption is + not part of TOKENS return in *VALUEP beginning of unknown + suboption. On exit *OPTIONP is set to the beginning of the next + token or at the terminating NUL character. */ +extern int getsubopt (char **__restrict __optionp, + char *__const *__restrict __tokens, + char **__restrict __valuep) __THROW; +#endif + + +#ifdef __USE_XOPEN +/* Setup DES tables according KEY. */ +extern void setkey (__const char *__key) __THROW; +#endif + + +/* X/Open pseudo terminal handling. */ + +#ifdef __USE_XOPEN2K +/* Return a master pseudo-terminal handle. */ +extern int posix_openpt (int __oflag) __THROW; +#endif + +#ifdef __USE_XOPEN +/* The next four functions all take a master pseudo-tty fd and + perform an operation on the associated slave: */ + +/* Chown the slave to the calling user. */ +extern int grantpt (int __fd) __THROW; + +/* Release an internal lock so the slave can be opened. + Call after grantpt(). */ +extern int unlockpt (int __fd) __THROW; + +/* Return the pathname of the pseudo terminal slave assoicated with + the master FD is open on, or NULL on errors. + The returned storage is good until the next call to this function. */ +extern char *ptsname (int __fd) __THROW; +#endif + +#if 0 +//#ifdef __USE_GNU +/* Store at most BUFLEN characters of the pathname of the slave pseudo + terminal associated with the master FD is open on in BUF. + Return 0 on success, otherwise an error number. */ +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW; + +/* Open a master pseudo terminal and return its file descriptor. */ +extern int getpt (void) __THROW; +#endif + +#ifdef __USE_BSD +/* Put the 1 minute, 5 minute and 15 minute load averages into the first + NELEM elements of LOADAVG. Return the number written (never more than + three, but may be less than NELEM), or -1 if an error occurred. */ +extern int getloadavg (double __loadavg[], int __nelem) __THROW; +#endif -/* Generate a unique temporary file name from TEMPLATE. */ -extern char *mktemp __P ((char *__template)); -extern int mkstemp __P ((char *__template)); +#endif /* don't just need malloc and calloc */ +#undef __need_malloc_and_calloc __END_DECLS -#endif /* __STDLIB_H */ +#endif /* stdlib.h */ diff --git a/include/string.h b/include/string.h index 4191f7ba1..3c03c7cee 100644 --- a/include/string.h +++ b/include/string.h @@ -1,141 +1,144 @@ +/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#ifndef __STRING_H -#define __STRING_H -#include <features.h> -#include <sys/types.h> -#include <stddef.h> + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -__BEGIN_DECLS -/* Basic string functions */ + 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 + Lesser General Public License for more details. -/* Return the length of S. */ -extern size_t strlen __P ((__const char *__s)); -/* Append SRC onto DEST. */ -extern char *strcat __P ((char *__restrict __dest, - __const char *__restrict __src)); -/* Append no more than N characters from SRC onto DEST. */ -extern char *strncat __P ((char *__restrict __dest, - __const char *__restrict __src, size_t __n)); + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ -/* Copy SRC to DEST. */ -extern char *strcpy __P ((char *__restrict __dest, - __const char *__restrict __src)); -extern char *stpcpy __P ((char *__restrict __dest, - __const char *__restrict __src)); -extern char *stpncpy __P ((char *__restrict __dest, - __const char *__restrict __src, size_t __n)); -/* Copy no more than N characters of SRC to DEST. */ -extern char *strncpy __P ((char *__restrict __dest, - __const char *__restrict __src, size_t __n)); +/* + * ISO C99 Standard: 7.21 String handling <string.h> + */ -/* Compare S1 and S2. */ -extern int strcmp __P ((__const char *__s1, __const char *__s2)); -/* Compare N characters of S1 and S2. */ -extern int strncmp __P ((__const char *__s1, __const char *__s2, size_t __n)); +#ifndef _STRING_H +#define _STRING_H 1 -/* Find the first occurrence of C in S. */ -extern char *strchr __P ((__const char *__s, int __c)); -/* Find the last occurrence of C in S. */ -extern char *strrchr __P ((__const char *__s, int __c)); -/* Duplicate S, returning an identical malloc'd string. */ -extern char *strdup __P ((__const char *__s)); +#include <features.h> + +__BEGIN_DECLS + +/* Get size_t and NULL from <stddef.h>. */ +#define __need_size_t +#define __need_NULL +#include <stddef.h> -/* Basic mem functions */ /* Copy N bytes of SRC to DEST. */ -extern __ptr_t memcpy __P ((__ptr_t __restrict __dest, - __const __ptr_t __restrict __src, size_t __n)); +extern void *memcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) __THROW; +/* Copy N bytes of SRC to DEST, guaranteeing + correct behavior for overlapping strings. */ +extern void *memmove (void *__dest, __const void *__src, size_t __n) + __THROW; + /* Copy no more than N bytes of SRC to DEST, stopping when C is found. Return the position in DEST one byte past where C was copied, or NULL if C was not found in the first N bytes of SRC. */ -extern __ptr_t memccpy __P ((__ptr_t __dest, __const __ptr_t __src, - int __c, size_t __n)); -/* Search N bytes of S for C. */ -extern __ptr_t memchr __P ((__const __ptr_t __s, int __c, size_t __n)); +#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN +extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, + int __c, size_t __n) + __THROW; +#endif /* SVID. */ + + /* Set N bytes of S to C. */ -extern __ptr_t memset __P ((__ptr_t __s, int __c, size_t __n)); +extern void *memset (void *__s, int __c, size_t __n) __THROW; + /* Compare N bytes of S1 and S2. */ -extern int memcmp __P ((__const __ptr_t __s1, __const __ptr_t __s2, - size_t __n)); -/* Copy N bytes of SRC to DEST, guaranteeing - correct behavior for overlapping strings. */ -extern __ptr_t memmove __P ((__ptr_t __dest, __const __ptr_t __src, - size_t __n)); +extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) + __THROW __attribute_pure__; +/* Search N bytes of S for C. */ +extern void *memchr (__const void *__s, int __c, size_t __n) + __THROW __attribute_pure__; -/* Minimal (very!) locale support */ -extern int strcoll __P ((__const char *__s1, __const char *__s2)); -extern size_t strxfrm __P ((char *__restrict __dest, - __const char *__restrict __src, size_t __n)); +#if 0 +//#ifdef __USE_GNU +/* Search in S for C. This is similar to `memchr' but there is no + length limit. */ +extern void *rawmemchr (__const void *__s, int __c) __THROW __attribute_pure__; -/* BSDisms */ -extern char *index __P ((__const char *__s, int __c)); -extern char *rindex __P ((__const char *__s, int __c)); +/* Search N bytes of S for the final occurrence of C. */ +extern void *memrchr (__const void *__s, int __c, size_t __n) + __THROW __attribute_pure__; +#endif -/* Return the position of the first bit set in I, or 0 if none are set. - The least-significant bit is position 1, the most-significant 32. */ -extern int ffs __P ((int __i)) __attribute__ ((const)); -/* Other common BSD functions */ -/* Set N bytes of S to 0. */ -extern void bzero __P ((__ptr_t __s, size_t __n)); -/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ -extern void bcopy __P ((__const __ptr_t __src, __ptr_t __dest, size_t __n)); +/* Copy SRC to DEST. */ +extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) + __THROW; +/* Copy no more than N characters of SRC to DEST. */ +extern char *strncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) __THROW; -/* Compare S1 and S2, ignoring case. */ -extern int strcasecmp __P ((__const char *__s1, __const char *__s2)); -/* Compare no more than N chars of S1 and S2, ignoring case. */ -extern int strncasecmp __P ((__const char *__s1, __const char *__s2, - size_t __n)); -/* Find the first occurrence in S of any character in ACCEPT. */ -extern char *strpbrk __P ((__const char *__s, __const char *__accept)); -/* Return the next DELIM-delimited token from *STRINGP, - terminating it with a '\0', and update *STRINGP to point past it. */ -extern char *strsep __P ((char **__restrict __stringp, - __const char *__restrict __delim)); -/* Find the first occurrence of NEEDLE in HAYSTACK. */ -extern char *strstr __P ((__const char *__haystack, __const char *__needle)); -extern char *strcasestr __P((__const char *__haystack, __const char *__needle)); -/* Divide S into tokens separated by characters in DELIM. */ -extern char *strtok __P ((char *__restrict __s, - __const char *__restrict __delim)); -/* Divide S into tokens separated by characters in DELIM. Information - passed between calls are stored in SAVE_PTR. */ -extern char *__strtok_r __P ((char *__restrict __s, - __const char *__restrict __delim, - char **__restrict __save_ptr)); -#if defined __USE_POSIX || defined __USE_MISC -extern char *strtok_r __P ((char *__restrict __s, - __const char *__restrict __delim, - char **__restrict __save_ptr)); -#endif -/* Return the length of the initial segment of S which - consists entirely of characters not in REJECT. */ -extern size_t strcspn __P ((__const char *__s, __const char *__reject)); -/* Return the length of the initial segment of S which - consists entirely of characters in ACCEPT. */ -extern size_t strspn __P ((__const char *__s, __const char *__accept)); +/* Append SRC onto DEST. */ +extern char *strcat (char *__restrict __dest, __const char *__restrict __src) + __THROW; +/* Append no more than N characters from SRC onto DEST. */ +extern char *strncat (char *__restrict __dest, __const char *__restrict __src, + size_t __n) __THROW; -/* Return a string describing the meaning of the signal number in SIG. */ -extern char *strsignal __P ((int __sig)); +/* Compare S1 and S2. */ +extern int strcmp (__const char *__s1, __const char *__s2) + __THROW __attribute_pure__; +/* Compare N characters of S1 and S2. */ +extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) + __THROW __attribute_pure__; -/* More BSD compatabilty */ -extern int bcmp(const void *s1, const void *s2, size_t n); +/* Compare the collated forms of S1 and S2. */ +extern int strcoll (__const char *__s1, __const char *__s2) + __THROW __attribute_pure__; +/* Put a transformation of SRC into no more than N bytes of DEST. */ +extern size_t strxfrm (char *__restrict __dest, + __const char *__restrict __src, size_t __n) __THROW; -/* Linux silly hour */ -char *strfry __P ((char *)); +#if 0 +//#ifdef __USE_GNU +/* The following functions are equivalent to the both above but they + take the locale they use for the collation as an extra argument. + This is not standardsized but something like will come. */ +# include <xlocale.h> -/* Find the length of STRING, but scan at most MAXLEN characters. - If no '\0' terminator is found in that many characters, return MAXLEN. */ -extern size_t strnlen __P ((__const char *__string, size_t __maxlen)); +/* Compare the collated forms of S1 and S2 using rules from L. */ +extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) + __THROW __attribute_pure__; +/* Put a transformation of SRC into no more than N bytes of DEST. */ +extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n, + __locale_t __l) __THROW; +#endif + +#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED +/* Duplicate S, returning an identical malloc'd string. */ +extern char *strdup (__const char *__s) __THROW __attribute_malloc__; +#endif + +/* Return a malloc'd copy of at most N bytes of STRING. The + resultant string is terminated even if no null terminator + appears before STRING[N]. */ +#if 0 +//#if defined __USE_GNU +extern char *strndup (__const char *__string, size_t __n) + __THROW __attribute_malloc__; +#endif +#if defined __USE_GNU && defined __GNUC__ /* Duplicate S, returning an identical alloca'd string. */ # define strdupa(s) \ (__extension__ \ ({ \ __const char *__old = (s); \ size_t __len = strlen (__old) + 1; \ - char *__new = __builtin_alloca (__len); \ + char *__new = (char *) __builtin_alloca (__len); \ (char *) memcpy (__new, __old, __len); \ })) @@ -145,11 +148,233 @@ extern size_t strnlen __P ((__const char *__string, size_t __maxlen)); ({ \ __const char *__old = (s); \ size_t __len = strnlen (__old, (n)); \ - char *__new = __builtin_alloca (__len + 1); \ + char *__new = (char *) __builtin_alloca (__len + 1); \ __new[__len] = '\0'; \ (char *) memcpy (__new, __old, __len); \ })) +#endif + +/* Find the first occurrence of C in S. */ +extern char *strchr (__const char *__s, int __c) __THROW __attribute_pure__; +/* Find the last occurrence of C in S. */ +extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__; + +#if 0 +//#ifdef __USE_GNU +/* This funciton is similar to `strchr'. But it returns a pointer to + the closing NUL byte in case C is not found in S. */ +extern char *strchrnul (__const char *__s, int __c) __THROW __attribute_pure__; +#endif + +/* Return the length of the initial segment of S which + consists entirely of characters not in REJECT. */ +extern size_t strcspn (__const char *__s, __const char *__reject) + __THROW __attribute_pure__; +/* Return the length of the initial segment of S which + consists entirely of characters in ACCEPT. */ +extern size_t strspn (__const char *__s, __const char *__accept) + __THROW __attribute_pure__; +/* Find the first occurrence in S of any character in ACCEPT. */ +extern char *strpbrk (__const char *__s, __const char *__accept) + __THROW __attribute_pure__; +/* Find the first occurrence of NEEDLE in HAYSTACK. */ +extern char *strstr (__const char *__haystack, __const char *__needle) + __THROW __attribute_pure__; + +#ifdef __USE_GNU +/* Similar to `strstr' but this function ignores the case of both strings. */ +extern char *strcasestr (__const char *__haystack, __const char *__needle) + __THROW __attribute_pure__; +#endif + +/* Divide S into tokens separated by characters in DELIM. */ +extern char *strtok (char *__restrict __s, __const char *__restrict __delim) + __THROW; + +/* Divide S into tokens separated by characters in DELIM. Information + passed between calls are stored in SAVE_PTR. */ +extern char *__strtok_r (char *__restrict __s, + __const char *__restrict __delim, + char **__restrict __save_ptr) __THROW; +#if defined __USE_POSIX || defined __USE_MISC +extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, + char **__restrict __save_ptr) __THROW; +#endif + +#if 0 +//#ifdef __USE_GNU +/* Find the first occurrence of NEEDLE in HAYSTACK. + NEEDLE is NEEDLELEN bytes long; + HAYSTACK is HAYSTACKLEN bytes long. */ +extern void *memmem (__const void *__haystack, size_t __haystacklen, + __const void *__needle, size_t __needlelen) + __THROW __attribute_pure__; + +/* Copy N bytes of SRC to DEST, return pointer to bytes after the + last written byte. */ +extern void *__mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) __THROW; +extern void *mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) __THROW; +#endif -__END_DECLS +/* Return the length of S. */ +extern size_t strlen (__const char *__s) __THROW __attribute_pure__; + +#ifdef __USE_GNU +/* Find the length of STRING, but scan at most MAXLEN characters. + If no '\0' terminator is found in that many characters, return MAXLEN. */ +extern size_t strnlen (__const char *__string, size_t __maxlen) + __THROW __attribute_pure__; #endif + + +/* Return a string describing the meaning of the `errno' code in ERRNUM. */ +extern char *strerror (int __errnum) __THROW; +#ifdef __USE_MISC +/* Reentrant version of `strerror'. If a temporary buffer is required, at + most BUFLEN bytes of BUF will be used. */ +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW; +#endif + +/* We define this function always since `bzero' is sometimes needed when + the namespace rules does not allow this. */ +extern void __bzero (void *__s, size_t __n) __THROW; + +#if defined __USE_BSD +/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ +extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW; + +/* Set N bytes of S to 0. */ +extern void bzero (void *__s, size_t __n) __THROW; + +/* Compare N bytes of S1 and S2 (same as memcmp). */ +extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) + __THROW __attribute_pure__; + +/* Find the first occurrence of C in S (same as strchr). */ +extern char *index (__const char *__s, int __c) __THROW __attribute_pure__; + +/* Find the last occurrence of C in S (same as strrchr). */ +extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__; + +/* Return the position of the first bit set in I, or 0 if none are set. + The least-significant bit is position 1, the most-significant 32. */ +extern int ffs (int __i) __THROW __attribute__ ((__const__)); + +/* The following two functions are non-standard but necessary for non-32 bit + platforms. */ +# if 0 +//# ifdef __USE_GNU +extern int ffsl (long int __l) __THROW __attribute__ ((__const__)); +# ifdef __GNUC__ +__extension__ extern int ffsll (long long int __ll) + __THROW __attribute__ ((__const__)); +# endif +# endif + +/* Compare S1 and S2, ignoring case. */ +extern int strcasecmp (__const char *__s1, __const char *__s2) + __THROW __attribute_pure__; + +/* Compare no more than N chars of S1 and S2, ignoring case. */ +extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) + __THROW __attribute_pure__; +#endif /* Use BSD. */ + +#if 0 +//#ifdef __USE_GNU +/* Again versions of a few functions which use the given locale instead + of the global one. */ +extern int __strcasecmp_l (__const char *__s1, __const char *__s2, + __locale_t __loc) __THROW __attribute_pure__; + +extern int __strncasecmp_l (__const char *__s1, __const char *__s2, + size_t __n, __locale_t __loc) + __THROW __attribute_pure__; +#endif + +#ifdef __USE_BSD +/* Return the next DELIM-delimited token from *STRINGP, + terminating it with a '\0', and update *STRINGP to point past it. */ +extern char *strsep (char **__restrict __stringp, + __const char *__restrict __delim) __THROW; +#endif + +#ifdef __USE_GNU +#if 0 +/* Compare S1 and S2 as strings holding name & indices/version numbers. */ +extern int strverscmp (__const char *__s1, __const char *__s2) + __THROW __attribute_pure__; +#endif + +/* Return a string describing the meaning of the signal number in SIG. */ +extern char *strsignal (int __sig) __THROW; + +#if 0 +/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ +extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) + __THROW; +extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) + __THROW; +#endif + +/* Copy no more than N characters of SRC to DEST, returning the address of + the last character written into DEST. */ +extern char *__stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) __THROW; +extern char *stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) __THROW; + +#if 0 +/* Sautee STRING briskly. */ +extern char *strfry (char *__string) __THROW; + +/* Frobnicate N bytes of S. */ +extern void *memfrob (void *__s, size_t __n) __THROW; +#endif + +# ifndef basename +/* Return the file name within directory of FILENAME. We don't + declare the function if the `basename' macro is available (defined + in <libgen.h>) which makes the XPG version of this function + available. */ +extern char *basename (__const char *__filename) __THROW; +# endif +#endif + +#if 0 +#if defined __GNUC__ && __GNUC__ >= 2 +# if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ + && !defined __NO_INLINE__ && !defined __cplusplus +/* When using GNU CC we provide some optimized versions of selected + functions from this header. There are two kinds of optimizations: + + - machine-dependent optimizations, most probably using inline + assembler code; these might be quite expensive since the code + size can increase significantly. + These optimizations are not used unless the symbol + __USE_STRING_INLINES + is defined before including this header. + + - machine-independent optimizations which do not increase the + code size significantly and which optimize mainly situations + where one or more arguments are compile-time constants. + These optimizations are used always when the compiler is + taught to optimize. + + One can inhibit all optimizations by defining __NO_STRING_INLINES. */ + +/* Get the machine-dependent optimizations (if any). */ +# include <bits/string.h> + +/* These are generic optimizations which do not add too much inline code. */ +# include <bits/string2.h> +# endif +#endif +#endif + +__END_DECLS + +#endif /* string.h */ diff --git a/include/strings.h b/include/strings.h index 3b2f59002..3ba2b04c8 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1 +1,65 @@ -#include <string.h> +/* Copyright (C) 1991,92,96,97,99,2000,2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _STRINGS_H +#define _STRINGS_H 1 + +/* We don't need and should not read this file if <string.h> was already + read. The one exception being that if __USE_BSD isn't defined, then + these aren't defined in string.h, so we need to define them here. */ +#if !defined _STRING_H || !defined __USE_BSD + +# include <features.h> +# define __need_size_t +# include <stddef.h> + +__BEGIN_DECLS + +/* Compare N bytes of S1 and S2 (same as memcmp). */ +extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) + __THROW __attribute_pure__; + +/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ +extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW; + +/* Set N bytes of S to 0. */ +extern void bzero (void *__s, size_t __n) __THROW; + +/* Return the position of the first bit set in I, or 0 if none are set. + The least-significant bit is position 1, the most-significant 32. */ +extern int ffs (int __i) __THROW __attribute__ ((const)); + +/* Find the first occurrence of C in S (same as strchr). */ +extern char *index (__const char *__s, int __c) __THROW __attribute_pure__; + +/* Find the last occurrence of C in S (same as strrchr). */ +extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__; + +/* Compare S1 and S2, ignoring case. */ +extern int strcasecmp (__const char *__s1, __const char *__s2) + __THROW __attribute_pure__; + +/* Compare no more than N chars of S1 and S2, ignoring case. */ +extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) + __THROW __attribute_pure__; + +__END_DECLS + +#endif /* string.h */ + +#endif /* strings.h */ diff --git a/include/sys/bitypes.h b/include/sys/bitypes.h index 21aaf7436..3a9860f71 100644 --- a/include/sys/bitypes.h +++ b/include/sys/bitypes.h @@ -1 +1,3 @@ -#include <stddef.h> +/* The GNU <sys/types.h> defines all the necessary types. */ + +#include <sys/types.h> diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h index 7df9f1e52..02454ee4d 100644 --- a/include/sys/cdefs.h +++ b/include/sys/cdefs.h @@ -1,49 +1,217 @@ +/* Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#ifndef __SYS_CDEFS_H -#define __SYS_CDEFS_H -#include <features.h> + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -#if defined (__STDC__) && __STDC__ + 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 + Lesser General Public License for more details. -#define __CONCAT(x,y) x ## y -#define __STRING(x) #x + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_CDEFS_H +#define _SYS_CDEFS_H 1 + +/* We are almost always included from features.h. */ +#ifndef _FEATURES_H +# include <features.h> +#endif + +/* The GNU libc does not support any K&R compilers or the traditional mode + of ISO C compilers anymore. Check for some of the combinations not + anymore supported. */ +#if defined __GNUC__ && !defined __STDC__ +# error "You need a ISO C conforming compiler to use the glibc headers" +#endif + +/* Some user header file might have defined this before. */ +#undef __P +#undef __PMT + +#ifdef __GNUC__ + +/* GCC can always grok prototypes. For C++ programs we add throw() + to help it optimize the function calls. But this works only with + gcc 2.8.x and egcs. */ +# if defined __cplusplus && __GNUC_PREREQ (2,8) +# define __THROW throw () +# else +# define __THROW +# endif +# define __P(args) args __THROW +/* This macro will be used for functions which might take C++ callback + functions. */ +# define __PMT(args) args + +#else /* Not GCC. */ + +# define __inline /* No inline functions. */ + +# define __THROW +# define __P(args) args +# define __PMT(args) args + +# define __const const +# define __signed signed +# define __volatile volatile + +#endif /* GCC. */ + +/* For these things, GCC behaves the ANSI way normally, + and the non-ANSI way under -traditional. */ + +#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 * +#define __long_double_t long double + + +/* C++ needs to know that types and declarations are C, not C++. */ +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS +# define __END_DECLS +#endif + +/* Support for bounded pointers. */ +#ifndef __BOUNDED_POINTERS__ +# define __bounded /* nothing */ +# define __unbounded /* nothing */ +# define __ptrvalue /* nothing */ +#endif + + +/* Support for flexible arrays. */ +#if __GNUC_PREREQ (2,97) +/* GCC 2.97 supports C99 flexible array members. */ +# define __flexarr [] #else +# ifdef __GNUC__ +# define __flexarr [0] +# else +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +# define __flexarr [] +# else +/* Some other non-C99 compiler. Approximate with [1]. */ +# define __flexarr [1] +# endif +# endif +#endif + + +/* __asm__ ("xyz") is used throughout the headers to rename functions + at the assembly language level. This is wrapped by the __REDIRECT + macro, in order to support compilers that can do this some other + way. When compilers don't support asm-names at all, we have to do + preprocessor tricks instead (which don't have exactly the right + semantics, but it's the best we can do). + + Example: + int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ -#define __CONCAT(x,y) x/**/y -#define __STRING(x) "x" +#if defined __GNUC__ && __GNUC__ >= 2 -#define __ptr_t char * +# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) +# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) +# define __ASMNAME2(prefix, cname) __STRING (prefix) cname +/* +#elif __SOME_OTHER_COMPILER__ + +# define __REDIRECT(name, proto, alias) name proto; \ + _Pragma("let " #name " = " #alias) +*/ #endif -/* C++ needs to know that types and declarations are C, not C++. */ -#ifdef __cplusplus -# define __BEGIN_DECLS extern "C" { -# define __END_DECLS } +/* GCC has various useful declarations that can be made with the + `__attribute__' syntax. All of the ways we use this do fine if + they are omitted for compilers that don't understand it. */ +#if !defined __GNUC__ || __GNUC__ < 2 +# define __attribute__(xyz) /* Ignore */ +#endif + +/* At some point during the gcc 2.96 development the `malloc' attribute + for functions was introduced. We don't want to use it unconditionally + (although this would be possible) since it generates warnings. */ +#if __GNUC_PREREQ (2,96) +# define __attribute_malloc__ __attribute__ ((__malloc__)) #else -# define __BEGIN_DECLS -# define __END_DECLS +# define __attribute_malloc__ /* Ignore */ #endif -/* GNUish things */ -#define __CONSTVALUE -#define __CONSTVALUE2 +/* At some point during the gcc 2.96 development the `pure' attribute + for functions was introduced. We don't want to use it unconditionally + (although this would be possible) since it generates warnings. */ +#if __GNUC_PREREQ (2,96) +# define __attribute_pure__ __attribute__ ((__pure__)) +#else +# define __attribute_pure__ /* Ignore */ +#endif -#ifdef __GNUC__ -/* GCC can always grok prototypes. For C++ programs we add throw() - to help it optimize the function calls. But this works only with - gcc 2.8.x and egcs. */ -#if defined __cplusplus && __GNUC_PREREQ (2,8) -#define __THROW throw() +/* At some point during the gcc 2.8 development the `format_arg' attribute + for functions was introduced. We don't want to use it unconditionally + (although this would be possible) since it generates warnings. + If several `format_arg' attributes are given for the same function, in + gcc-3.0 and older, all but the last one are ignored. In newer gccs, + all designated arguments are considered. */ +#if __GNUC_PREREQ (2,8) +# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) #else -#define __THROW +# define __attribute_format_arg__(x) /* Ignore */ #endif -#else /* GCC */ -#define __THROW + +/* At some point during the gcc 2.97 development the `strfmon' format + attribute for functions was introduced. We don't want to use it + unconditionally (although this would be possible) since it + generates warnings. */ +#if __GNUC_PREREQ (2,97) +# define __attribute_format_strfmon__(a,b) \ + __attribute__ ((__format__ (__strfmon__, a, b))) +#else +# define __attribute_format_strfmon__(a,b) /* Ignore */ #endif +/* It is possible to compile containing GCC extensions even if GCC is + run in pedantic mode if the uses are carefully marked using the + `__extension__' keyword. But this is not generally available before + version 2.8. */ +#if !__GNUC_PREREQ (2,8) +# define __extension__ /* Ignore */ #endif + +/* __restrict is known in EGCS 1.2 and above. */ +#if !__GNUC_PREREQ (2,92) +# define __restrict /* Ignore */ +#endif + +/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is + array_name[restrict] + GCC 3.1 supports this. */ +#if __GNUC_PREREQ (3,1) && !defined __GNUG__ +# define __restrict_arr __restrict +#else +# ifdef __GNUC__ +# define __restrict_arr /* Not supported in old GCC. */ +# else +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +# define __restrict_arr restrict +# else +/* Some other non-C99 compiler. */ +# define __restrict_arr /* Not supported. */ +# endif +# endif +#endif + +#endif /* sys/cdefs.h */ diff --git a/include/sys/dir.h b/include/sys/dir.h index 96b36c78d..2611d6cd9 100644 --- a/include/sys/dir.h +++ b/include/sys/dir.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_DIR_H #define _SYS_DIR_H 1 diff --git a/include/sys/file.h b/include/sys/file.h index 2401b155a..93b36350a 100644 --- a/include/sys/file.h +++ b/include/sys/file.h @@ -1,35 +1,56 @@ -#ifndef _SYS_FILE_H -#define _SYS_FILE_H +/* Copyright (C) 1991, 92, 96, 97, 98, 99 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_FILE_H +#define _SYS_FILE_H 1 #include <features.h> -#include <fcntl.h> -#ifndef L_SET +#ifndef _FCNTL_H +# include <fcntl.h> +#endif + +__BEGIN_DECLS -#define L_SET 0 /* absolute offset */ -#define L_INCR 1 /* relative to current offset */ -#define L_XTND 2 /* relative to end of file */ +/* Alternate names for values for the WHENCE argument to `lseek'. + These are the same as SEEK_SET, SEEK_CUR, and SEEK_END, respectively. */ +#ifndef L_SET +# define L_SET 0 /* Seek from beginning of file. */ +# define L_INCR 1 /* Seek from current position. */ +# define L_XTND 2 /* Seek from 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. */ +#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. */ +#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)); +extern int flock (int __fd, int __operation) __THROW; + __END_DECLS -#endif +#endif /* sys/file.h */ diff --git a/include/sys/io.h b/include/sys/io.h index 9ce921365..9ea033a01 100644 --- a/include/sys/io.h +++ b/include/sys/io.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1998, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_IO_H @@ -26,15 +26,15 @@ __BEGIN_DECLS /* If TURN_ON is TRUE, request for permission to do direct i/o on the port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O permission off for that range. This call requires root privileges. */ -extern int ioperm __P ((unsigned long int __from, unsigned long int __num, - int __turn_on)); +extern int ioperm (unsigned long int __from, unsigned long int __num, + int __turn_on) __THROW; /* Set the I/O privilege level to LEVEL. If LEVEL is nonzero, permission to access any I/O port is granted. This call requires root privileges. */ -extern int iopl __P ((int __level)); +extern int iopl (int __level) __THROW; + -/* The functions that actually perform reads and writes. */ #ifdef __i386__ /* * For i386, glibc defines the in* and out* functions as static inlines @@ -45,13 +45,14 @@ extern int iopl __P ((int __level)); */ #include <bits/io_i386.h> #else -extern unsigned char inb (unsigned long port); -extern unsigned short inw (unsigned long port); -extern unsigned long inl (unsigned long port); +/* The functions that actually perform reads and writes. */ +extern unsigned char inb (unsigned long int port) __THROW; +extern unsigned short int inw (unsigned long int port) __THROW; +extern unsigned long int inl (unsigned long int port) __THROW; -extern void outb (unsigned char value, unsigned long port); -extern void outw (unsigned short value, unsigned long port); -extern void outl (unsigned long value, unsigned long port); +extern void outb (unsigned char value, unsigned long int port) __THROW; +extern void outw (unsigned short value, unsigned long int port) __THROW; +extern void outl (unsigned long value, unsigned long int port) __THROW; #endif /* __i386__ */ __END_DECLS diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h index acb42f2b3..6d8a0f40b 100644 --- a/include/sys/ioctl.h +++ b/include/sys/ioctl.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 94, 96, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 96, 98, 99 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_IOCTL_H #define _SYS_IOCTL_H 1 @@ -39,7 +39,7 @@ __BEGIN_DECLS /* Perform the I/O control operation specified by REQUEST on FD. One argument may follow; its presence and type depend on REQUEST. Return value depends on REQUEST. Usually -1 indicates error. */ -extern int ioctl __P ((int __fd, unsigned long int __request, ...)); +extern int ioctl (int __fd, unsigned long int __request, ...) __THROW; __END_DECLS diff --git a/include/sys/ipc.h b/include/sys/ipc.h index f1ba7ff18..42806db2b 100644 --- a/include/sys/ipc.h +++ b/include/sys/ipc.h @@ -1,37 +1,57 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_IPC_H #define _SYS_IPC_H 1 #include <features.h> +#if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2 +# warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" +#endif + /* Get system dependent definition of `struct ipc_perm' and more. */ #include <bits/ipc.h> -#if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2 -# warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" +#ifndef __uid_t_defined +typedef __uid_t uid_t; +# define __uid_t_defined +#endif + +#ifndef __gid_t_defined +typedef __gid_t gid_t; +# define __gid_t_defined +#endif + +#ifndef __mode_t_defined +typedef __mode_t mode_t; +# define __mode_t_defined +#endif + +#ifndef __key_t_defined +typedef __key_t key_t; +# define __key_t_defined #endif __BEGIN_DECLS /* Generates key for System V style IPC. */ -extern key_t ftok __P ((__const char *__pathname, int __proj_id)); +extern key_t ftok (__const char *__pathname, int __proj_id) __THROW; __END_DECLS diff --git a/include/sys/kd.h b/include/sys/kd.h index b37586abf..e0d2e869c 100644 --- a/include/sys/kd.h +++ b/include/sys/kd.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_KD_H #define _SYS_KD_H 1 diff --git a/include/sys/kdaemon.h b/include/sys/kdaemon.h index d59fe2bc3..61491f93d 100644 --- a/include/sys/kdaemon.h +++ b/include/sys/kdaemon.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Interfaces to control the various kernel daemons. */ @@ -26,7 +26,7 @@ __BEGIN_DECLS /* Start, flush, or tune the kernel's buffer flushing daemon. */ -extern int bdflush __P ((int __func, long int __data)); +extern int bdflush (int __func, long int __data) __THROW; __END_DECLS diff --git a/include/sys/klog.h b/include/sys/klog.h index 62243e9ec..35f5fe40e 100644 --- a/include/sys/klog.h +++ b/include/sys/klog.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_KLOG_H @@ -27,7 +27,7 @@ __BEGIN_DECLS the kernel's syslog system call, but that name is easily confused with the user-level syslog facility, which is something completely different. */ -extern int klogctl __P ((int __type, char *__bufp, int __len)); +extern int klogctl (int __type, char *__bufp, int __len) __THROW; __END_DECLS diff --git a/include/sys/mman.h b/include/sys/mman.h index 68445bbb1..c0dd39e32 100644 --- a/include/sys/mman.h +++ b/include/sys/mman.h @@ -1,39 +1,139 @@ -#ifndef _SYS_MMAN_H -#define _SYS_MMAN_H +/* Definitions for BSD-style memory management. + Copyright (C) 1994-1999, 2000 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_MMAN_H +#define _SYS_MMAN_H 1 #include <features.h> #include <bits/types.h> #define __need_size_t #include <stddef.h> -#include <bits/mman.h> -#ifndef MAP_ANON -#define MAP_ANON MAP_ANONYMOUS /* idem */ +#ifndef __off_t_defined +# ifndef __USE_FILE_OFFSET64 +typedef __off_t off_t; +# else +typedef __off64_t off_t; +# endif +# define __off_t_defined #endif -#ifndef MAP_FILE -#define MAP_FILE 0x00 /* The 'normal' way: mapped from file */ + +#ifndef __mode_t_defined +typedef __mode_t mode_t; +# define __mode_t_defined #endif -#define MAP_FAILED ((__ptr_t) -1) /* Return value of `mmap' in case of an error. */ +#include <bits/mman.h> + +/* Return value of `mmap' in case of an error. */ +#define MAP_FAILED ((void *) -1) __BEGIN_DECLS +/* Map addresses starting near ADDR and extending for LEN bytes. from + OFFSET into the file FD describes according to PROT and FLAGS. If ADDR + is nonzero, it is the desired mapping address. If the MAP_FIXED bit is + set in FLAGS, the mapping will be at ADDR exactly (which must be + page-aligned); otherwise the system chooses a convenient nearby address. + The return value is the actual mapping address chosen or MAP_FAILED + for errors (in which case `errno' is set). A successful `mmap' call + deallocates any previous mapping for the affected region. */ + +#ifndef __USE_FILE_OFFSET64 +extern void *mmap (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off_t __offset) __THROW; +#else +# ifdef __REDIRECT +extern void * __REDIRECT (mmap, + (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset) __THROW, + mmap64); +# else +# define mmap mmap64 +# endif +#endif +#ifdef __USE_LARGEFILE64 +extern void *mmap64 (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset) __THROW; +#endif -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)); +/* Deallocate any mapping for the region starting at ADDR and extending LEN + bytes. Returns 0 if successful, -1 for errors (and sets errno). */ +extern int munmap (void *__addr, size_t __len) __THROW; -extern int msync __P((__ptr_t __addr, size_t __len, int __flags)); +/* Change the memory protection of the region starting at ADDR and + extending LEN bytes to PROT. Returns 0 if successful, -1 for errors + (and sets errno). */ +extern int mprotect (void *__addr, size_t __len, int __prot) __THROW; + +/* Synchronize the region starting at ADDR and extending LEN bytes with the + file it maps. Filesystem operations on a file being mapped are + unpredictable before this is done. Flags are from the MS_* set. */ +extern int msync (void *__addr, size_t __len, int __flags) __THROW; + +#ifdef __USE_BSD +/* Advise the system about particular usage patterns the program follows + for the region starting at ADDR and extending LEN bytes. */ +extern int madvise (void *__addr, size_t __len, int __advice) __THROW; +#endif +#ifdef __USE_XOPEN2K +/* This is the POSIX name for this function. */ +extern int posix_madvise (void *__addr, size_t __len, int __advice) __THROW; +#endif + +/* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to + be memory resident. */ +extern int mlock (__const void *__addr, size_t __len) __THROW; + +/* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN). */ +extern int munlock (__const void *__addr, size_t __len) __THROW; + +/* Cause all currently mapped pages of the process to be memory resident + until unlocked by a call to the `munlockall', until the process exits, + or until the process calls `execve'. */ +extern int mlockall (int __flags) __THROW; + +/* All currently mapped pages of the process' address space become + unlocked. */ +extern int munlockall (void) __THROW; + +#ifdef __USE_MISC +/* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length + NEW_LEN. If MAY_MOVE is MREMAP_MAYMOVE the returned address may + differ from ADDR. */ +extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, + int __may_move) __THROW; + +/* mincore returns the memory residency status of the pages in the + current process's address space specified by [start, start + len). + The status is returned in a vector of bytes. The least significant + bit of each byte is 1 if the referenced page is in memory, otherwise + it is zero. */ +extern int mincore (void *__start, size_t __len, unsigned char *__vec); +#endif -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)); +/* Open shared memory segment. */ +extern int shm_open (__const char *__name, int __oflag, mode_t __mode); -extern __ptr_t mremap __P((__ptr_t __addr, size_t __old_len, - size_t __new_len, int __may_move)); +/* Remove shared memory segment. */ +extern int shm_unlink (__const char *__name); __END_DECLS -#endif /* _SYS_MMAN_H */ +#endif /* sys/mman.h */ diff --git a/include/sys/mount.h b/include/sys/mount.h index 862c1f040..f768d4dc7 100644 --- a/include/sys/mount.h +++ b/include/sys/mount.h @@ -1,21 +1,21 @@ /* Header file for mounting/unmount Linux filesystems. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This is taken from /usr/include/linux/fs.h. */ @@ -55,8 +55,10 @@ enum #define S_IMMUTABLE S_IMMUTABLE MS_NOATIME = 1024, /* Do not update access times. */ #define MS_NOATIME MS_NOATIME - MS_NODIRATIME = 2048 /* Do not update directory access times. */ + MS_NODIRATIME = 2048, /* Do not update directory access times. */ #define MS_NODIRATIME MS_NODIRATIME + MS_BIND = 4096, /* Bind directory at different place. */ +#define MS_BIND MS_BIND }; /* Flags that can be altered by MS_REMOUNT */ @@ -93,15 +95,15 @@ enum __BEGIN_DECLS /* Mount a filesystem. */ -extern int mount __P ((__const char *__special_file, __const char *__dir, - __const char *__fstype, unsigned long int __rwflag, - __const void *__data)); +extern int mount (__const char *__special_file, __const char *__dir, + __const char *__fstype, unsigned long int __rwflag, + __const void *__data) __THROW; /* Unmount a filesystem. */ -extern int umount __P ((__const char *__special_file)); +extern int umount (__const char *__special_file) __THROW; /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */ -extern int umount2 __P ((__const char *__special_file, int __flags)); +extern int umount2 (__const char *__special_file, int __flags) __THROW; __END_DECLS diff --git a/include/sys/msg.h b/include/sys/msg.h index cba58b364..9568baf89 100644 --- a/include/sys/msg.h +++ b/include/sys/msg.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_MSG_H #define _SYS_MSG_H @@ -57,18 +57,18 @@ struct msgbuf __BEGIN_DECLS /* Message queue control operation. */ -extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf); +extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW; /* Get messages queue. */ -extern int msgget (key_t __key, int __msgflg); +extern int msgget (key_t __key, int __msgflg) __THROW; /* Receive message from message queue. */ extern int msgrcv (int __msqid, void *__msgp, size_t __msgsz, - long int __msgtyp, int __msgflg); + long int __msgtyp, int __msgflg) __THROW; /* Send message to message queue. */ extern int msgsnd (int __msqid, __const void *__msgp, size_t __msgsz, - int __msgflg); + int __msgflg) __THROW; __END_DECLS diff --git a/include/sys/mtio.h b/include/sys/mtio.h index 7498dfa78..51fa550cd 100644 --- a/include/sys/mtio.h +++ b/include/sys/mtio.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Written by H. Bergman <hennus@cybercomm.nl>. */ diff --git a/include/sys/param.h b/include/sys/param.h index c59222cd4..d64f4b9a9 100644 --- a/include/sys/param.h +++ b/include/sys/param.h @@ -1,49 +1,66 @@ -/* 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. - */ +/* Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#ifndef _PARAM_H -#define _PARAM_H + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_PARAM_H +#define _SYS_PARAM_H 1 -#include <features.h> #include <limits.h> #include <linux/limits.h> -#include <asm/param.h> - -#include <sys/types.h> +#include <linux/param.h> -#define MAXPATHLEN PATH_MAX +/* BSD names for some <limits.h> values. */ -#ifndef NR_OPEN -#define NR_OPEN 32 -#endif -#ifndef NR_FILE -#define NR_FILE 32 +#define NBBY CHAR_BIT +#ifndef NGROUPS +# define NGROUPS NGROUPS_MAX #endif +#define MAXSYMLINKS 20 +#define CANBSIZ MAX_CANON +#define NCARGS ARG_MAX +#define MAXPATHLEN PATH_MAX +/* The following is not really correct but it is a value we used for a + long time and which seems to be usable. People should not use NOFILE + anyway. */ +#define NOFILE 256 + -/* Number of Bits per BYte */ -#define NBBY CHAR_BIT +#include <sys/types.h> /* 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) +#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)) +# 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) +#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)) +#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MAX(a,b) (((a)>(b))?(a):(b)) /* Unit of `st_blocks'. */ -#define DEV_BSIZE 512 +#define DEV_BSIZE 512 + -#endif /* _PARAM_H */ +#endif /* sys/param.h */ diff --git a/include/sys/poll.h b/include/sys/poll.h index 9cb60e72e..bf1c9e203 100644 --- a/include/sys/poll.h +++ b/include/sys/poll.h @@ -1,21 +1,21 @@ /* Compatibility definitions for System V `poll' interface. - Copyright (C) 1994, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1994,96,97,98,99,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_POLL_H #define _SYS_POLL_H 1 @@ -25,7 +25,9 @@ /* Get the platform dependent bits of `poll'. */ #include <bits/poll.h> -__BEGIN_DECLS + +/* Type used for the number of file descriptors. */ +typedef unsigned long int nfds_t; /* Data structure describing a polling request. */ struct pollfd @@ -36,15 +38,14 @@ struct pollfd }; +__BEGIN_DECLS + /* Poll the file descriptors described by the NFDS structures starting at FDS. If TIMEOUT is nonzero and not -1, allow TIMEOUT milliseconds for an event to occur; if TIMEOUT is -1, block until an event occurs. Returns the number of file descriptors with events, zero if timed out, or -1 for errors. */ -extern int __poll __P ((struct pollfd *__fds, unsigned long int __nfds, - int __timeout)); -extern int poll __P ((struct pollfd *__fds, unsigned long int __nfds, - int __timeout)); +extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout) __THROW; __END_DECLS diff --git a/include/sys/procfs.h b/include/sys/procfs.h new file mode 100644 index 000000000..3b3736324 --- /dev/null +++ b/include/sys/procfs.h @@ -0,0 +1,123 @@ +/* Copyright (C) 1996, 1997, 1999, 2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_PROCFS_H +#define _SYS_PROCFS_H 1 + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include <features.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/user.h> + +__BEGIN_DECLS + +/* Type for a general-purpose register. */ +typedef unsigned long elf_greg_t; + +/* And the whole bunch of them. We could have used `struct + user_regs' directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG (sizeof (struct user_regs) / sizeof(elf_greg_t)) +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +/* Register set for the floating-point registers. */ +typedef struct user_fpregs elf_fpregset_t; + +/* Signal info. */ +struct elf_siginfo + { + int si_signo; /* Signal number. */ + int si_code; /* Extra code. */ + int si_errno; /* Errno. */ + }; + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct elf_prstatus + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned long int pr_sigpend; /* Set of pending signals. */ + unsigned long int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct timeval pr_utime; /* User time. */ + struct timeval pr_stime; /* System time. */ + struct timeval pr_cutime; /* Cumulative user time. */ + struct timeval pr_cstime; /* Cumulative system time. */ + elf_gregset_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +#define ELF_PRARGSZ (80) /* Number of chars for args. */ + +struct elf_prpsinfo + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned long int pr_flag; /* Flags. */ + unsigned short int pr_uid; + unsigned short int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + +/* The rest of this file provides the types for emulation of the + Solaris <proc_service.h> interfaces that should be implemented by + users of libthread_db. */ + +/* Addresses. */ +typedef void *psaddr_t; + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; + +/* We don't have any differences between processes and threads, + therefore have only one PID type. */ +typedef __pid_t lwpid_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus prstatus_t; +typedef struct elf_prpsinfo prpsinfo_t; + +__END_DECLS + +#endif /* sys/procfs.h */ diff --git a/include/sys/ptrace.h b/include/sys/ptrace.h index 5b670668b..b4aec4f20 100644 --- a/include/sys/ptrace.h +++ b/include/sys/ptrace.h @@ -1,21 +1,21 @@ /* `ptrace' debugger support interface. Linux version. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_PTRACE_H #define _SYS_PTRACE_H 1 @@ -98,9 +98,19 @@ enum __ptrace_request PTRACE_DETACH = 17, #define PT_DETACH PTRACE_DETACH + /* Get all extended floating point registers used by a processes. + This is not supported on all machines. */ + PTRACE_GETFPXREGS = 18, +#define PT_GETFPXREGS PTRACE_GETFPXREGS + + /* Set all extended floating point registers used by a processes. + This is not supported on all machines. */ + PTRACE_SETFPXREGS = 19, +#define PT_SETFPXREGS PTRACE_SETFPXREGS + /* Continue and stop at the next (return from) syscall. */ PTRACE_SYSCALL = 24 -#define PTRACE_SYSCALL PTRACE_SYSCALL +#define PT_SYSCALL PTRACE_SYSCALL }; /* Perform process tracing functions. REQUEST is one of the values @@ -112,7 +122,7 @@ enum __ptrace_request appear (those that are used for the particular request) as: pid_t PID, void *ADDR, int DATA, void *ADDR2 after REQUEST. */ -extern long int ptrace __P ((enum __ptrace_request __request, ...)); +extern long int ptrace (enum __ptrace_request __request, ...) __THROW; __END_DECLS diff --git a/include/sys/reboot.h b/include/sys/reboot.h index dd7a71b4c..2a719c7a3 100644 --- a/include/sys/reboot.h +++ b/include/sys/reboot.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* This file should define RB_* macros to be used as flag bits in the argument to the `reboot' system call. */ @@ -42,7 +42,7 @@ __BEGIN_DECLS /* Reboot or halt the system. */ -extern int reboot __P ((int __howto)); +extern int reboot (int __howto) __THROW; __END_DECLS diff --git a/include/sys/resource.h b/include/sys/resource.h index 77a5f697a..e64a08672 100644 --- a/include/sys/resource.h +++ b/include/sys/resource.h @@ -2,25 +2,24 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_RESOURCE_H #define _SYS_RESOURCE_H 1 #include <features.h> -#include <sys/types.h> /* Get the system-dependent definitions of structures and bit values. */ #include <bits/resource.h> @@ -50,11 +49,11 @@ typedef int __priority_which_t; Returns 0 if successful, -1 if not (and sets errno). */ #ifndef __USE_FILE_OFFSET64 extern int getrlimit (__rlimit_resource_t __resource, - struct rlimit *__rlimits); + struct rlimit *__rlimits) __THROW; #else # ifdef __REDIRECT extern int __REDIRECT (getrlimit, (__rlimit_resource_t __resource, - struct rlimit *__rlimits) , + struct rlimit *__rlimits) __THROW, getrlimit64); # else # define getrlimit getrlimit64 @@ -62,7 +61,7 @@ extern int __REDIRECT (getrlimit, (__rlimit_resource_t __resource, #endif #ifdef __USE_LARGEFILE64 extern int getrlimit64 (__rlimit_resource_t __resource, - struct rlimit64 *__rlimits); + struct rlimit64 *__rlimits) __THROW; #endif /* Set the soft and hard limits for RESOURCE to *RLIMITS. @@ -70,11 +69,11 @@ extern int getrlimit64 (__rlimit_resource_t __resource, Return 0 if successful, -1 if not (and sets errno). */ #ifndef __USE_FILE_OFFSET64 extern int setrlimit (__rlimit_resource_t __resource, - __const struct rlimit *__rlimits); + __const struct rlimit *__rlimits) __THROW; #else # ifdef __REDIRECT extern int __REDIRECT (setrlimit, (__rlimit_resource_t __resource, - __const struct rlimit *__rlimits) , + __const struct rlimit *__rlimits) __THROW, setrlimit64); # else # define setrlimit setrlimit64 @@ -82,22 +81,23 @@ extern int __REDIRECT (setrlimit, (__rlimit_resource_t __resource, #endif #ifdef __USE_LARGEFILE64 extern int setrlimit64 (__rlimit_resource_t __resource, - __const struct rlimit64 *__rlimits); + __const struct rlimit64 *__rlimits) __THROW; #endif /* Return resource usage information on process indicated by WHO and put it in *USAGE. Returns 0 for success, -1 for failure. */ -extern int getrusage (__rusage_who_t __who, struct rusage *__usage); +extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW; /* Return the highest priority of any process specified by WHICH and WHO (see above); if WHO is zero, the current process, process group, or user (as specified by WHO) is used. A lower priority number means higher priority. Priorities range from PRIO_MIN to PRIO_MAX (above). */ -extern int getpriority (__priority_which_t __which, id_t __who); +extern int getpriority (__priority_which_t __which, id_t __who) __THROW; /* Set the priority of all processes specified by WHICH and WHO (see above) to PRIO. Returns 0 on success, -1 on errors. */ -extern int setpriority (__priority_which_t __which, id_t __who, int __prio); +extern int setpriority (__priority_which_t __which, id_t __who, int __prio) + __THROW; __END_DECLS diff --git a/include/sys/select.h b/include/sys/select.h index 0972560b9..8f03c73e9 100644 --- a/include/sys/select.h +++ b/include/sys/select.h @@ -1,21 +1,21 @@ /* `fd_set' type and related macros, and `select'/`pselect' declarations. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1998,1999,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */ @@ -33,61 +33,80 @@ /* Get __sigset_t. */ #include <bits/sigset.h> +#ifndef __sigset_t_defined +# define __sigset_t_defined +typedef __sigset_t sigset_t; +#endif + /* Get definition of timer specification structures. */ #define __need_timespec #include <time.h> - -__BEGIN_DECLS - -/* This declaration puts `struct timeval' in global scope even if - <sys/time.h> has not been included to define it. That way the - `select' prototype below will not conflict with a later definition - of `struct timeval'. */ -struct timeval; - -typedef __fd_mask fd_mask; - -/* Representation of a set of file descriptors. */ -typedef __fd_set fd_set; +#define __need_timeval +#include <bits/time.h> + + +/* The fd_set member is required to be an array of longs. */ +typedef long int __fd_mask; + +/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ +#define __NFDBITS (8 * sizeof (__fd_mask)) +#define __FDELT(d) ((d) / __NFDBITS) +#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) + +/* fd_set for select and pselect. */ +typedef struct + { + /* XPG4.2 requires this member name. Otherwise avoid the name + from the global namespace. */ +#ifdef __USE_XOPEN + __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; +# define __FDS_BITS(set) ((set)->fds_bits) +#else + __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; +# define __FDS_BITS(set) ((set)->__fds_bits) +#endif + } fd_set; /* Maximum number of file descriptors in `fd_set'. */ #define FD_SETSIZE __FD_SETSIZE #ifdef __USE_MISC +/* Sometimes the fd_set member is assumed to have this type. */ +typedef __fd_mask fd_mask; + /* Number of bits per word of `fd_set' (some code assumes this is 32). */ # define NFDBITS __NFDBITS #endif /* Access macros for `fd_set'. */ -#define FD_SET(fd, fdsetp) __FD_SET ((fd), (fdsetp)) -#define FD_CLR(fd, fdsetp) __FD_CLR ((fd), (fdsetp)) -#define FD_ISSET(fd, fdsetp) __FD_ISSET ((fd), (fdsetp)) +#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) +#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) +#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) +__BEGIN_DECLS + /* Check the first NFDS descriptors each in READFDS (if not NULL) for read readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out after waiting the interval specified therein. Returns the number of ready descriptors, or -1 for errors. */ -extern int __select __P ((int __nfds, __fd_set *__readfds, - __fd_set *__writefds, __fd_set *__exceptfds, - struct timeval *__timeout)); -extern int select __P ((int __nfds, __fd_set *__readfds, - __fd_set *__writefds, __fd_set *__exceptfds, - struct timeval *__timeout)); - -#ifdef __USE_GNU -/* XXX Once/if POSIX.1g gets official this prototype will be available - when defining __USE_POSIX. */ +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout) __THROW; + +#ifdef __USE_XOPEN2K /* Same as above only that the TIMEOUT value is given with higher resolution and a sigmask which is been set temporarily. This version should be used. */ -extern int pselect __P ((int __nfds, __fd_set *__readfds, - __fd_set *__writefds, __fd_set *__exceptfds, - const struct timespec *__timeout, - const __sigset_t *__sigmask)); +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask) __THROW; #endif __END_DECLS diff --git a/include/sys/sem.h b/include/sys/sem.h index 6ae76e234..5b1d38f52 100644 --- a/include/sys/sem.h +++ b/include/sys/sem.h @@ -1,27 +1,28 @@ -/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1995-1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_SEM_H #define _SYS_SEM_H 1 #include <features.h> -#include <sys/types.h> +#define __need_size_t +#include <stddef.h> /* Get common definition of System V style IPC. */ #include <sys/ipc.h> @@ -35,7 +36,7 @@ /* Structure used for argument to `semop' to describe operations. */ struct sembuf { - short int sem_num; /* semaphore number */ + unsigned short int sem_num; /* semaphore number */ short int sem_op; /* semaphore operation */ short int sem_flg; /* operation flag */ }; @@ -44,14 +45,13 @@ struct sembuf __BEGIN_DECLS /* Semaphore control operation. */ -extern int semctl __P ((int __semid, int __semnum, int __cmd, ...)); +extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW; /* Get semaphore. */ -extern int semget __P ((key_t __key, int __nsems, int __semflg)); +extern int semget (key_t __key, int __nsems, int __semflg) __THROW; /* Operate on semaphore. */ -extern int semop __P ((int __semid, struct sembuf *__sops, - unsigned int __nsops)); +extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW; __END_DECLS diff --git a/include/sys/shm.h b/include/sys/shm.h index 09e21d60e..1ef669ba4 100644 --- a/include/sys/shm.h +++ b/include/sys/shm.h @@ -1,28 +1,28 @@ -/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1995-1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_SHM_H #define _SYS_SHM_H 1 #include <features.h> -#include <unistd.h> /* for `getpagesize' declaration */ -#include <sys/types.h> +#define __need_size_t +#include <stddef.h> /* Get common definition of System V style IPC. */ #include <sys/ipc.h> @@ -30,26 +30,39 @@ /* Get system dependent definition of `struct shmid_ds' and more. */ #include <bits/shm.h> +/* Define types required by the standard. */ +#define __need_time_t +#include <time.h> + +#ifdef __USE_XOPEN +# ifndef __pid_t_defined +typedef __pid_t pid_t; +# define __pid_t_defined +# endif +#endif /* X/Open */ + +__BEGIN_DECLS /* Segment low boundary address multiple. */ -#define SHMLBA (getpagesize ()) +#define SHMLBA (__getpagesize ()) +extern int __getpagesize (void) __THROW __attribute__ ((__const__)); + /* The following System V style IPC functions implement a shared memory facility. The definition is found in XPG4.2. */ -__BEGIN_DECLS - /* Shared memory control operation. */ -extern int shmctl __P ((int __shmid, int __cmd, struct shmid_ds *__buf)); +extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW; /* Get shared memory segment. */ -extern int shmget __P ((key_t __key, size_t __size, int __shmflg)); +extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW; /* Attach shared memory segment. */ -extern void *shmat __P ((int __shmid, __const void *__shmaddr, int __shmflg)); +extern void *shmat (int __shmid, __const void *__shmaddr, int __shmflg) + __THROW; /* Detach shared memory segment. */ -extern int shmdt __P ((__const void *__shmaddr)); +extern int shmdt (__const void *__shmaddr) __THROW; __END_DECLS diff --git a/include/sys/socket.h b/include/sys/socket.h index dccf0e3f0..b57b63349 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_SOCKET_H #define _SYS_SOCKET_H 1 @@ -97,50 +97,50 @@ typedef union { __SOCKADDR_ALLTYPES /* 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. */ -extern int socket (int __domain, int __type, int __protocol) ; +extern int socket (int __domain, int __type, int __protocol) __THROW; /* 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. */ extern int socketpair (int __domain, int __type, int __protocol, - int __fds[2]) ; + int __fds[2]) __THROW; /* Give the socket FD the local address ADDR (which is LEN bytes long). */ extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) - ; + __THROW; /* Put the local address of FD into *ADDR and its length in *LEN. */ extern int getsockname (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __len) ; + socklen_t *__restrict __len) __THROW; /* 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. */ extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) - ; + __THROW; /* Put the address of the peer connected to socket FD into *ADDR (which is *LEN bytes long), and its actual length into *LEN. */ extern int getpeername (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __len) ; + socklen_t *__restrict __len) __THROW; /* Send N bytes of BUF to socket FD. Returns the number sent or -1. */ extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags) - ; + __THROW; /* Read N bytes into BUF from socket FD. Returns the number read or -1 for errors. */ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags) - ; + __THROW; /* 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. */ extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, - socklen_t __addr_len) ; + socklen_t __addr_len) __THROW; /* Read N bytes into BUF through socket FD. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of @@ -148,18 +148,18 @@ extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, Returns the number of bytes read or -1 for errors. */ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) - ; + __THROW; /* Send a message described MESSAGE on socket FD. Returns the number of bytes sent, or -1 for errors. */ extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, int __flags) - ; + __THROW; /* Receive a message as described by MESSAGE from socket FD. Returns the number of bytes read or -1 for errors. */ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags) - ; + __THROW; /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL @@ -167,19 +167,19 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags) actual length. Returns 0 on success, -1 for errors. */ extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, - socklen_t *__restrict __optlen) ; + socklen_t *__restrict __optlen) __THROW; /* Set socket FD's option OPTNAME at protocol level LEVEL to *OPTVAL (which is OPTLEN bytes long). Returns 0 on success, -1 for errors. */ extern int setsockopt (int __fd, int __level, int __optname, - __const void *__optval, socklen_t __optlen) ; + __const void *__optval, socklen_t __optlen) __THROW; /* 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. */ -extern int listen (int __fd, int __n) ; +extern int listen (int __fd, int __n) __THROW; /* Await a connection on socket FD. When a connection arrives, open a new socket to communicate with it, @@ -188,7 +188,7 @@ extern int listen (int __fd, int __n) ; new socket's descriptor, or -1 for errors. */ extern int accept (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) - ; + __THROW; /* Shut down all or part of the connection open on socket FD. HOW determines what to shut down: @@ -196,14 +196,20 @@ extern int accept (int __fd, __SOCKADDR_ARG __addr, SHUT_WR = No more transmissions; SHUT_RDWR = No more receptions or transmissions. Returns 0 on success, -1 for errors. */ -extern int shutdown (int __fd, int __how) ; +extern int shutdown (int __fd, int __how) __THROW; + + +#ifdef __USE_XOPEN2K +/* Determine wheter socket is at a out-of-band mark. */ +extern int sockatmark (int __fd) __THROW; +#endif #ifdef __USE_MISC /* FDTYPE is S_IFSOCK or another S_IF* macro defined in <sys/stat.h>; returns 1 if FD is open on an object of the indicated type, 0 if not, or -1 for errors (setting errno). */ -extern int isfdtype (int __fd, int __fdtype) ; +extern int isfdtype (int __fd, int __fdtype) __THROW; #endif __END_DECLS diff --git a/include/sys/socketcall.h b/include/sys/socketcall.h deleted file mode 100644 index 2538c672c..000000000 --- a/include/sys/socketcall.h +++ /dev/null @@ -1,22 +0,0 @@ -#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 */ diff --git a/include/sys/stat.h b/include/sys/stat.h index b4e1620df..a2a669277 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 1995-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 5.6 File Characteristics <sys/stat.h> @@ -33,54 +33,63 @@ /* The Single Unix specification says that some more types are available here. */ -# ifndef dev_t +# ifndef __dev_t_defined typedef __dev_t dev_t; -# define dev_t dev_t +# define __dev_t_defined # endif -# ifndef gid_t +# ifndef __gid_t_defined typedef __gid_t gid_t; -# define gid_t gid_t +# define __gid_t_defined # endif -# ifndef ino_t +# ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif -# define ino_t ino_t +# define __ino_t_defined # endif -# ifndef mode_t +# ifndef __mode_t_defined typedef __mode_t mode_t; -# define mode_t mode_t +# define __mode_t_defined # endif -# ifndef nlink_t +# ifndef __nlink_t_defined typedef __nlink_t nlink_t; -# define nlink_t nlink_t +# define __nlink_t_defined # endif -# ifndef off_t +# ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif -# define off_t off_t +# define __off_t_defined # endif -# ifndef uid_t +# ifndef __uid_t_defined typedef __uid_t uid_t; -# define uid_t uid_t +# define __uid_t_defined # endif #endif /* X/Open */ #ifdef __USE_UNIX98 -# ifndef pid_t -typedef __pid_t pid_t; -# define pid_t pid_t +# ifndef __blkcnt_t_defined +# ifndef __USE_FILE_OFFSET64 +typedef __blkcnt_t blkcnt_t; +# else +typedef __blkcnt64_t blkcnt_t; +# endif +# define __blkcnt_t_defined +# endif + +# ifndef __blksize_t_defined +typedef __blksize_t blksize_t; +# define __blksize_t_defined # endif #endif /* Unix98 */ @@ -97,13 +106,12 @@ __BEGIN_DECLS # ifdef __S_IFIFO # define S_IFIFO __S_IFIFO # endif -# if defined __USE_BSD || defined __USE_MISC -# ifdef __S_IFLNK -# define S_IFLNK __S_IFLNK -# endif -# ifdef __S_IFSOCK -# define S_IFSOCK __S_IFSOCK -# endif +# ifdef __S_IFLNK +# define S_IFLNK __S_IFLNK +# endif +# if (defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN2K) \ + && defined __S_IFSOCK +# define S_IFSOCK __S_IFSOCK # endif #endif @@ -118,11 +126,12 @@ __BEGIN_DECLS #ifdef __S_IFIFO # define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO) #endif +#ifdef __S_IFLNK +# define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK) +#endif #ifdef __USE_BSD -# ifdef __S_IFLNK -# define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK) -# else +# ifndef __S_IFLNK # define S_ISLNK(mode) 0 # endif # ifdef __S_IFSOCK @@ -130,13 +139,23 @@ __BEGIN_DECLS # endif #endif +/* These are from POSIX.1b. If the objects are not implemented using separate + distinct file types, the macros always will evaluate to zero. Unlike the + other S_* macros the following three take a pointer to a `struct stat' + object as the argument. */ +#ifdef __USE_POSIX199309 +# define S_TYPEISMQ(buf) __S_TYPEISMQ(buf) +# define S_TYPEISSEM(buf) __S_TYPEISSEM(buf) +# define S_TYPEISSHM(buf) __S_TYPEISSHM(buf) +#endif + /* Protection bits. */ #define S_ISUID __S_ISUID /* Set user ID on execution. */ #define S_ISGID __S_ISGID /* Set group ID on execution. */ -#if defined __USE_BSD || defined __USE_MISC +#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN /* Save swapped text after use (sticky bit). This is pretty well obsolete. */ # define S_ISVTX __S_ISVTX #endif @@ -178,79 +197,87 @@ __BEGIN_DECLS #ifndef __USE_FILE_OFFSET64 /* Get file attributes for FILE and put them in BUF. */ -extern int stat __P ((__const char *__file, struct stat *__buf)); +extern int stat (__const char *__restrict __file, + struct stat *__restrict __buf) __THROW; /* Get file attributes for the file, device, pipe, or socket that file descriptor FD is open on and put them in BUF. */ -extern int fstat __P ((int __fd, struct stat *__buf)); +extern int fstat (int __fd, struct stat *__buf) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (stat, __P ((__const char *__file, struct stat *__buf)), +extern int __REDIRECT (stat, + (__const char *__restrict __file, + struct stat *__restrict __buf) __THROW, stat64); -extern int __REDIRECT (fstat, __P ((int __fd, struct stat *__buf)), fstat64); +extern int __REDIRECT (fstat, (int __fd, struct stat *__buf) __THROW, fstat64); # else # define stat stat64 # define fstat fstat64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int stat64 __P ((__const char *__file, struct stat64 *__buf)); -extern int fstat64 __P ((int __fd, struct stat64 *__buf)); +extern int stat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) __THROW; +extern int fstat64 (int __fd, struct stat64 *__buf) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED # ifndef __USE_FILE_OFFSET64 /* Get file attributes about FILE and put them in BUF. If FILE is a symbolic link, do not follow it. */ -extern int lstat __P ((__const char *__file, struct stat *__buf)); +extern int lstat (__const char *__restrict __file, + struct stat *__restrict __buf) __THROW; # else # ifdef __REDIRECT -extern int __REDIRECT (lstat, __P ((__const char *__file, struct stat *__buf)), +extern int __REDIRECT (lstat, + (__const char *__restrict __file, + struct stat *__restrict __buf) __THROW, lstat64); # else # define lstat lstat64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int lstat64 __P ((__const char *__file, struct stat64 *__buf)); +extern int lstat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) __THROW; # endif #endif /* Set file access permissions for FILE to MODE. This takes an `int' MODE argument because that is what `mode_t's get widened to. */ -extern int chmod __P ((__const char *__file, __mode_t __mode)); +extern int chmod (__const char *__file, __mode_t __mode) __THROW; /* Set file access permissions of the file FD is open on to MODE. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED -extern int fchmod __P ((int __fd, __mode_t __mode)); +extern int fchmod (int __fd, __mode_t __mode) __THROW; #endif /* Set the file creation mask of the current process to MASK, and return the old creation mask. */ -extern __mode_t umask __P ((__mode_t __mask)); +extern __mode_t umask (__mode_t __mask) __THROW; #ifdef __USE_GNU /* Get the current `umask' value without changing it. This function is only available under the GNU Hurd. */ -extern __mode_t getumask __P ((void)); +extern __mode_t getumask (void) __THROW; #endif /* Create a new directory named PATH, with permission bits MODE. */ -extern int mkdir __P ((__const char *__path, __mode_t __mode)); +extern int mkdir (__const char *__path, __mode_t __mode) __THROW; /* Create a device file named PATH, with permission and special bits MODE and device number DEV (which can be constructed from major and minor device numbers with the `makedev' macro above). */ #if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED -extern int mknod __P ((__const char *__path, - __mode_t __mode, __dev_t __dev)); +extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) + __THROW; #endif /* Create a new FIFO named PATH, with permission bits MODE. */ -extern int mkfifo __P ((__const char *__path, __mode_t __mode)); +extern int mkfifo (__const char *__path, __mode_t __mode) __THROW; /* To allow the `struct stat' structure and the file type `mode_t' bits to vary without changing shared library major version number, @@ -276,87 +303,90 @@ extern int mkfifo __P ((__const char *__path, __mode_t __mode)); /* Wrappers for stat and mknod system calls. */ #ifndef __USE_FILE_OFFSET64 -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)); +extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) __THROW; +extern int __xstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __THROW; +extern int __lxstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (_fxstat, __P ((int __ver, int __fildes, - struct stat *__stat_buf)), _fxstat64); -extern int __REDIRECT (_xstat, __P ((int __ver, __const char *__filename, - struct stat *__stat_buf)), _xstat64); -extern int __REDIRECT (_lxstat, __P ((int __ver, __const char *__filename, - struct stat *__stat_buf)), _lxstat64); +extern int __REDIRECT (__fxstat, (int __ver, int __fildes, + struct stat *__stat_buf) __THROW, + __fxstat64); +extern int __REDIRECT (__xstat, (int __ver, __const char *__filename, + struct stat *__stat_buf) __THROW, __xstat64); +extern int __REDIRECT (__lxstat, (int __ver, __const char *__filename, + struct stat *__stat_buf) __THROW, + __lxstat64); # else -# define _fxstat _fxstat64 -# define _xstat _xstat64 -# define _lxstat _lxstat64 +# define __fxstat __fxstat64 +# define __xstat __xstat64 +# define __lxstat __lxstat64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int _fxstat64 __P ((int __ver, int __fildes, - struct stat64 *__stat_buf)); -extern int _xstat64 __P ((int __ver, __const char *__filename, - struct stat64 *__stat_buf)); -extern int _lxstat64 __P ((int __ver, __const char *__filename, - struct stat64 *__stat_buf)); +extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) + __THROW; +extern int __xstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __THROW; +extern int __lxstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __THROW; #endif -extern int _xmknod __P ((int __ver, __const char *__path, - __mode_t __mode, __dev_t *__dev)); +extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, + __dev_t *__dev) __THROW; #if defined __GNUC__ && __GNUC__ >= 2 /* Inlined versions of the real stat and mknod functions. */ extern __inline__ int stat (__const char *__path, - struct stat *__statbuf) + struct stat *__statbuf) __THROW { - return _xstat (_STAT_VER, __path, __statbuf); + return __xstat (_STAT_VER, __path, __statbuf); } # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern __inline__ int lstat (__const char *__path, - struct stat *__statbuf) + struct stat *__statbuf) __THROW { - return _lxstat (_STAT_VER, __path, __statbuf); + return __lxstat (_STAT_VER, __path, __statbuf); } # endif -extern __inline__ int fstat (int __fd, struct stat *__statbuf) +extern __inline__ int fstat (int __fd, struct stat *__statbuf) __THROW { - return _fxstat (_STAT_VER, __fd, __statbuf); + return __fxstat (_STAT_VER, __fd, __statbuf); } # if defined __USE_MISC || defined __USE_BSD extern __inline__ int mknod (__const char *__path, __mode_t __mode, - __dev_t __dev) + __dev_t __dev) __THROW { - return _xmknod (_MKNOD_VER, __path, __mode, &__dev); + return __xmknod (_MKNOD_VER, __path, __mode, &__dev); } # endif -# ifdef __USE_LARGEFILE64 +# if defined __USE_LARGEFILE64 \ + && (! defined __USE_FILE_OFFSET64 \ + || (defined __REDIRECT && defined __OPTIMIZE__)) extern __inline__ int stat64 (__const char *__path, - struct stat64 *__statbuf) + struct stat64 *__statbuf) __THROW { - return _xstat64 (_STAT_VER, __path, __statbuf); + return __xstat64 (_STAT_VER, __path, __statbuf); } # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern __inline__ int lstat64 (__const char *__path, - struct stat64 *__statbuf) + struct stat64 *__statbuf) __THROW { - return _lxstat64 (_STAT_VER, __path, __statbuf); + return __lxstat64 (_STAT_VER, __path, __statbuf); } # endif -extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) +extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) __THROW { - return _fxstat64 (_STAT_VER, __fd, __statbuf); + return __fxstat64 (_STAT_VER, __fd, __statbuf); } # endif diff --git a/include/sys/statfs.h b/include/sys/statfs.h index be93bc923..969d9d0e5 100644 --- a/include/sys/statfs.h +++ b/include/sys/statfs.h @@ -1,21 +1,21 @@ /* Definitions for getting information about a filesystem. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_STATFS_H #define _SYS_STATFS_H 1 @@ -29,33 +29,34 @@ __BEGIN_DECLS /* Return information about the filesystem on which FILE resides. */ #ifndef __USE_FILE_OFFSET64 -extern int statfs __P ((__const char *__file, struct statfs *__buf)); +extern int statfs (__const char *__file, struct statfs *__buf) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (statfs, __P ((__const char *__file, - struct statfs *__buf)), statfs64); +extern int __REDIRECT (statfs, + (__const char *__file, struct statfs *__buf) __THROW, + statfs64); # else # define statfs statfs64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int statfs64 __P ((__const char *__file, struct statfs64 *__buf)); +extern int statfs64 (__const char *__file, struct statfs64 *__buf) __THROW; #endif /* Return information about the filesystem containing the file FILDES refers to. */ #ifndef __USE_FILE_OFFSET64 -extern int fstatfs __P ((int __fildes, struct statfs *__buf)); +extern int fstatfs (int __fildes, struct statfs *__buf) __THROW; #else # ifdef __REDIRECT -extern int __REDIRECT (fstatfs, __P ((int __fildes, struct statfs *__buf)), +extern int __REDIRECT (fstatfs, (int __fildes, struct statfs *__buf) __THROW, fstatfs64); # else # define fstatfs fstatfs64 # endif #endif #ifdef __USE_LARGEFILE64 -extern int fstatfs64 __P ((int __fildes, struct statfs64 *__buf)); +extern int fstatfs64 (int __fildes, struct statfs64 *__buf) __THROW; #endif __END_DECLS diff --git a/include/sys/swap.h b/include/sys/swap.h index e84c36520..b6e7bef5d 100644 --- a/include/sys/swap.h +++ b/include/sys/swap.h @@ -1,21 +1,21 @@ /* Calls to enable and disable swapping on specified locations. Linux version. - Copyright (C) 1996, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 1999 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_SWAP_H @@ -33,10 +33,10 @@ __BEGIN_DECLS /* Make the block special device PATH available to the system for swapping. This call is restricted to the super-user. */ -extern int swapon __P ((__const char *__path, int __flags)); +extern int swapon (__const char *__path, int __flags) __THROW; /* Stop using block special device PATH for swapping. */ -extern int swapoff __P ((__const char *__path)); +extern int swapoff (__const char *__path) __THROW; __END_DECLS diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h index ebdb7715f..a6727b21e 100644 --- a/include/sys/sysinfo.h +++ b/include/sys/sysinfo.h @@ -1,15 +1,48 @@ +/* Copyright (C) 1996, 1999, 2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + #ifndef _SYS_SYSINFO_H -#define _SYS_SYSINFO_H +#define _SYS_SYSINFO_H 1 #include <features.h> +/* Get sysinfo structure from kernel header. */ #include <linux/kernel.h> __BEGIN_DECLS -extern int sysinfo __P((struct sysinfo *__info)); -extern int __sysinfo __P((struct sysinfo *__info)); +/* Returns information on overall system statistics. */ +extern int sysinfo (struct sysinfo *__info) __THROW; + + +/* Return number of configured processors. */ +extern int get_nprocs_conf (void) __THROW; + +/* Return number of available processors. */ +extern int get_nprocs (void) __THROW; + + +/* Return number of physical pages of memory in the system. */ +extern long int get_phys_pages (void) __THROW; + +/* Return number of available physical pages of memory in the system. */ +extern long int get_avphys_pages (void) __THROW; __END_DECLS -#endif +#endif /* sys/sysinfo.h */ diff --git a/include/sys/syslog.h b/include/sys/syslog.h index ffdb39bc1..940ee2dec 100644 --- a/include/sys/syslog.h +++ b/include/sys/syslog.h @@ -10,10 +10,6 @@ * 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. @@ -37,7 +33,7 @@ #define _SYS_SYSLOG_H 1 #include <features.h> -// #define __need___va_list +#define __need___va_list #include <stdarg.h> @@ -173,22 +169,23 @@ CODE facilitynames[] = __BEGIN_DECLS /* Close desriptor used to write to system logger. */ -extern void closelog __P ((void)); +extern void closelog (void) __THROW; /* Open connection to system logger. */ -extern void openlog __P ((__const char *__ident, int __option, - int __facility)); +extern void openlog (__const char *__ident, int __option, int __facility) + __THROW; /* Set the log mask level. */ -extern int setlogmask __P ((int __mask)); +extern int setlogmask (int __mask) __THROW; /* Generate a log message using FMT string and option arguments. */ -extern void syslog __P ((int __pri, __const char *__fmt, ...)); +extern void syslog (int __pri, __const char *__fmt, ...) __THROW + __attribute__ ((__format__(__printf__, 2, 3))); #ifdef __USE_BSD /* Generate a log message using FMT and using arguments pointed to by AP. */ -extern void vsyslog __P ((int __pri, __const char *__fmt, - va_list __ap)); +extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap) + __THROW __attribute__ ((__format__(__printf__, 2, 0))); #endif __END_DECLS diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h index 35760e5e0..e482aab17 100644 --- a/include/sys/sysmacros.h +++ b/include/sys/sysmacros.h @@ -3,19 +3,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_SYSMACROS_H #define _SYS_SYSMACROS_H 1 diff --git a/include/sys/time.h b/include/sys/time.h index c05c5c210..f051d58c4 100644 --- a/include/sys/time.h +++ b/include/sys/time.h @@ -1,54 +1,56 @@ -/* Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_TIME_H #define _SYS_TIME_H 1 #include <features.h> -/* POSIX.4 structure for a time value. This is like a `struct timeval' but - has nanoseconds instead of microseconds. */ -struct timespec - { - long int tv_sec; /* Seconds. */ - long int tv_nsec; /* Nanoseconds. */ - }; - +#include <bits/types.h> +#define __need_time_t #include <time.h> -#include <sys/select.h> - #define __need_timeval #include <bits/time.h> +#include <sys/select.h> + +#ifndef __suseconds_t_defined +typedef __suseconds_t suseconds_t; +# define __suseconds_t_defined +#endif + __BEGIN_DECLS +#ifdef __USE_GNU /* Macros for converting between `struct timeval' and `struct timespec'. */ -#define TIMEVAL_TO_TIMESPEC(tv, ts) { \ +# define TIMEVAL_TO_TIMESPEC(tv, ts) { \ (ts)->tv_sec = (tv)->tv_sec; \ (ts)->tv_nsec = (tv)->tv_usec * 1000; \ } -#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ +# define TIMESPEC_TO_TIMEVAL(tv, ts) { \ (tv)->tv_sec = (ts)->tv_sec; \ (tv)->tv_usec = (ts)->tv_nsec / 1000; \ } +#endif +#ifdef __USE_BSD /* Structure crudely representing a timezone. This is obsolete and should never be used. */ struct timezone @@ -57,25 +59,32 @@ struct timezone int tz_dsttime; /* Nonzero if DST is ever in effect. */ }; +typedef struct timezone *__restrict __timezone_ptr_t; +#else +typedef void *__restrict __timezone_ptr_t; +#endif + /* Get the current time of day and timezone information, putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. Returns 0 on success, -1 on errors. NOTE: This form of timezone information is obsolete. Use the functions and variables declared in <time.h> instead. */ -extern int gettimeofday __P ((struct timeval *__tv, - struct timezone *__tz)); +extern int gettimeofday (struct timeval *__restrict __tv, + __timezone_ptr_t __tz) __THROW; +#ifdef __USE_BSD /* Set the current time of day and timezone information. This call is restricted to the super-user. */ -extern int settimeofday __P ((__const struct timeval *__tv, - __const struct timezone *__tz)); +extern int settimeofday (__const struct timeval *__tv, + __const struct timezone *__tz) __THROW; /* Adjust the current time of day by the amount in DELTA. If OLDDELTA is not NULL, it is filled in with the amount of time adjustment remaining to be done from the last `adjtime' call. This call is restricted to the super-user. */ -extern int adjtime __P ((__const struct timeval *__delta, - struct timeval *__olddelta)); +extern int adjtime (__const struct timeval *__delta, + struct timeval *__olddelta) __THROW; +#endif /* Values for the first argument to `getitimer' and `setitimer'. */ @@ -103,32 +112,42 @@ struct itimerval struct timeval it_value; }; +#if defined __USE_GNU && !defined __cplusplus +/* Use the nicer parameter type only in GNU mode and not for C++ since the + strict C++ rules prevent the automatic promotion. */ +typedef enum __itimer_which __itimer_which_t; +#else +typedef int __itimer_which_t; +#endif + /* Set *VALUE to the current setting of timer WHICH. Return 0 on success, -1 on errors. */ -extern int getitimer __P ((enum __itimer_which __which, - struct itimerval *__value)); +extern int getitimer (__itimer_which_t __which, + struct itimerval *__value) __THROW; /* Set the timer WHICH to *NEW. If OLD is not NULL, set *OLD to the old value of timer WHICH. Returns 0 on success, -1 on errors. */ -extern int setitimer __P ((enum __itimer_which __which, - __const struct itimerval *__new, - struct itimerval *__old)); +extern int setitimer (__itimer_which_t __which, + __const struct itimerval *__restrict __new, + struct itimerval *__restrict __old) __THROW; /* Change the access time of FILE to TVP[0] and the modification time of FILE to TVP[1]. */ -extern int utimes __P ((__const char *__file, struct timeval __tvp[2])); +extern int utimes (__const char *__file, __const struct timeval __tvp[2]) + __THROW; +#ifdef __USE_BSD /* Convenience macros for operations on timevals. NOTE: `timercmp' does not work for >= or <=. */ -#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) -#define timercmp(a, b, CMP) \ +# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +# define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) +# define timercmp(a, b, CMP) \ (((a)->tv_sec == (b)->tv_sec) ? \ ((a)->tv_usec CMP (b)->tv_usec) : \ ((a)->tv_sec CMP (b)->tv_sec)) -#define timeradd(a, b, result) \ +# define timeradd(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ @@ -138,7 +157,7 @@ extern int utimes __P ((__const char *__file, struct timeval __tvp[2])); (result)->tv_usec -= 1000000; \ } \ } while (0) -#define timersub(a, b, result) \ +# define timersub(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ @@ -147,6 +166,7 @@ extern int utimes __P ((__const char *__file, struct timeval __tvp[2])); (result)->tv_usec += 1000000; \ } \ } while (0) +#endif /* BSD */ __END_DECLS diff --git a/include/sys/timeb.h b/include/sys/timeb.h index 52e5486b3..dbdbf45a8 100644 --- a/include/sys/timeb.h +++ b/include/sys/timeb.h @@ -29,16 +29,17 @@ __BEGIN_DECLS /* Structure returned by the `ftime' function. */ -struct timeb { - time_t time; /* Seconds since epoch, as from `time'. */ - unsigned short int millitm; /* Additional milliseconds. */ - short int timezone; /* Minutes west of GMT. */ - short int dstflag; /* Nonzero if Daylight Savings Time used. */ -}; +struct timeb + { + time_t time; /* Seconds since epoch, as from `time'. */ + unsigned short int millitm; /* Additional milliseconds. */ + short int timezone; /* Minutes west of GMT. */ + short int dstflag; /* Nonzero if Daylight Savings Time used. */ + }; /* Fill in TIMEBUF with information about the current time. */ -extern int ftime(struct timeb *__timebuf); +extern int ftime (struct timeb *__timebuf); __END_DECLS diff --git a/include/sys/times.h b/include/sys/times.h index b6defa877..6022f2f84 100644 --- a/include/sys/times.h +++ b/include/sys/times.h @@ -1,21 +1,53 @@ -#ifndef _SYS_TIMES_H -#define _SYS_TIMES_H +/* Copyright (C) 1991, 1992, 1996, 1998, 1999 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * POSIX Standard: 4.5.2 Process Times <sys/times.h> + */ + +#ifndef _SYS_TIMES_H +#define _SYS_TIMES_H 1 #include <features.h> -#include <sys/types.h> + +#define __need_clock_t #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)); +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +extern clock_t times (struct tms *__buffer) __THROW; __END_DECLS -#endif +#endif /* sys/times.h */ diff --git a/include/sys/timex.h b/include/sys/timex.h index 900341e54..773a5ab8d 100644 --- a/include/sys/timex.h +++ b/include/sys/timex.h @@ -2,19 +2,19 @@ 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_TIMEX_H #define _SYS_TIMEX_H 1 @@ -116,11 +116,11 @@ struct timex __BEGIN_DECLS -extern int __adjtimex __P ((struct timex *__ntx)); -extern int adjtimex __P ((struct timex *__ntx)); +extern int __adjtimex (struct timex *__ntx) __THROW; +extern int adjtimex (struct timex *__ntx) __THROW; -extern int ntp_gettime __P ((struct ntptimeval *__ntv)); -extern int ntp_adjtime __P ((struct timex *__tntx)); +extern int ntp_gettime (struct ntptimeval *__ntv) __THROW; +extern int ntp_adjtime (struct timex *__tntx) __THROW; __END_DECLS diff --git a/include/sys/ttydefaults.h b/include/sys/ttydefaults.h index b21c6d568..9be168b83 100644 --- a/include/sys/ttydefaults.h +++ b/include/sys/ttydefaults.h @@ -15,10 +15,6 @@ * 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. diff --git a/include/sys/types.h b/include/sys/types.h index c746ad6c6..cd114876f 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,94,95,96,97,98,99,2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h> @@ -30,6 +30,7 @@ __BEGIN_DECLS #include <bits/types.h> #ifdef __USE_BSD +# ifndef __u_char_defined typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; @@ -37,93 +38,110 @@ typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; +# define __u_char_defined +# endif #endif typedef __loff_t loff_t; -#ifndef ino_t +#ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif -# define ino_t ino_t +# define __ino_t_defined #endif -#if defined __USE_LARGEFILE64 && !defined ino64_t +#if defined __USE_LARGEFILE64 && !defined __ino64_t_defined typedef __ino64_t ino64_t; -# define ino64_t ino64_t +# define __ino64_t_defined #endif -#ifndef dev_t +#ifndef __dev_t_defined typedef __dev_t dev_t; -# define dev_t dev_t +# define __dev_t_defined #endif -#ifndef gid_t +#ifndef __gid_t_defined typedef __gid_t gid_t; -# define gid_t gid_t +# define __gid_t_defined #endif -#ifndef mode_t +#ifndef __mode_t_defined typedef __mode_t mode_t; -# define mode_t mode_t +# define __mode_t_defined #endif -#ifndef nlink_t +#ifndef __nlink_t_defined typedef __nlink_t nlink_t; -# define nlink_t nlink_t +# define __nlink_t_defined #endif -#ifndef uid_t +#ifndef __uid_t_defined typedef __uid_t uid_t; -# define uid_t uid_t +# define __uid_t_defined #endif -#ifndef off_t +#ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif -# define off_t off_t +# define __off_t_defined #endif -#if defined __USE_LARGEFILE64 && !defined off64_t +#if defined __USE_LARGEFILE64 && !defined __off64_t_defined typedef __off64_t off64_t; -# define off64_t off64_t +# define __off64_t_defined #endif -#ifndef pid_t +#ifndef __pid_t_defined typedef __pid_t pid_t; -# define pid_t pid_t # define __pid_t_defined #endif -#if defined __USE_SVID || defined __USE_XOPEN +#if (defined __USE_SVID || defined __USE_XOPEN) && !defined __id_t_defined typedef __id_t id_t; # define __id_t_defined #endif -#ifndef ssize_t +#ifndef __ssize_t_defined typedef __ssize_t ssize_t; -# define ssize_t ssize_t # define __ssize_t_defined #endif #ifdef __USE_BSD +# ifndef __daddr_t_defined typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; +# define __daddr_t_defined +# endif #endif -#if defined __USE_SVID || defined __USE_XOPEN +#if (defined __USE_SVID || defined __USE_XOPEN) && !defined __key_t_defined typedef __key_t key_t; +# define __key_t_defined #endif #ifdef __USE_XOPEN # define __need_clock_t #endif #define __need_time_t +#define __need_timer_t +#define __need_clockid_t #include <time.h> +#ifdef __USE_XOPEN +# ifndef __useconds_t_defined +typedef __useconds_t useconds_t; +# define __useconds_t_defined +# endif +# ifndef __suseconds_t_defined +typedef __suseconds_t suseconds_t; +# define __suseconds_t_defined +# endif +#endif + #define __need_size_t #include <stddef.h> @@ -136,9 +154,9 @@ typedef unsigned int uint; /* These size-specific names are used by some of the inet code. */ -#if !defined __GNUC__ || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +#if !__GNUC_PREREQ (2, 7) -/* These types are defined by the ISO C 9x header <inttypes.h>. */ +/* These types are defined by the ISO C99 header <inttypes.h>. */ # ifndef __int8_t_defined # define __int8_t_defined typedef char int8_t; @@ -201,15 +219,38 @@ typedef int register_t __attribute__ ((__mode__ (__word__))); #endif /* Use BSD. */ +#if defined __USE_UNIX98 && !defined __blksize_t_defined +typedef __blksize_t blksize_t; +# define __blksize_t_defined +#endif + /* Types from the Large File Support interface. */ #ifndef __USE_FILE_OFFSET64 +# ifndef __blkcnt_t_defined typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ +# define __blkcnt_t_defined +# endif +# ifndef __fsblkcnt_t_defined typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */ +# define __fsblkcnt_t_defined +# endif +# ifndef __fsfilcnt_t_defined typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */ +# define __fsfilcnt_t_defined +# endif #else +# ifndef __blkcnt_t_defined typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */ +# define __blkcnt_t_defined +# endif +# ifndef __fsblkcnt_t_defined typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */ +# define __fsblkcnt_t_defined +# endif +# ifndef __fsfilcnt_t_defined typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */ +# define __fsfilcnt_t_defined +# endif #endif #ifdef __USE_LARGEFILE64 diff --git a/include/sys/ucontext.h b/include/sys/ucontext.h new file mode 100644 index 000000000..6d6c8e399 --- /dev/null +++ b/include/sys/ucontext.h @@ -0,0 +1,94 @@ +/* Copyright (C) 1998, 1999, 2001 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* System V/ARM ABI compliant context switching support. */ + +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include <features.h> +#include <signal.h> +#include <sys/procfs.h> + +typedef int greg_t; + +/* Number of general registers. */ +#define NGREG 16 + +/* Container for all general registers. */ +typedef elf_gregset_t gregset_t; + +/* Number of each register is the `gregset_t' array. */ +enum +{ + R0 = 0, +#define R0 R0 + R1 = 1, +#define R1 R1 + R2 = 2, +#define R2 R2 + R3 = 3, +#define R3 R3 + R4 = 4, +#define R4 R4 + R5 = 5, +#define R5 R5 + R6 = 6, +#define R6 R6 + R7 = 7, +#define R7 R7 + R8 = 8, +#define R8 R8 + R9 = 9, +#define R9 R9 + R10 = 10, +#define R10 R10 + R11 = 11, +#define R11 R11 + R12 = 12, +#define R12 R12 + R13 = 13, +#define R13 R13 + R14 = 14, +#define R14 R14 + R15 = 15 +#define R15 R15 +}; + +/* Structure to describe FPU registers. */ +typedef elf_fpregset_t fpregset_t; + +/* Context to describe whole processor state. */ +typedef struct + { + gregset_t gregs; + fpregset_t fpregs; + } mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_link; + __sigset_t uc_sigmask; + stack_t uc_stack; + mcontext_t uc_mcontext; + long int uc_filler[5]; + } ucontext_t; + +#endif /* sys/ucontext.h */ diff --git a/include/sys/uio.h b/include/sys/uio.h index 0be33e9b4..4b3138088 100644 --- a/include/sys/uio.h +++ b/include/sys/uio.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 96, 97, 98, 99 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_UIO_H #define _SYS_UIO_H 1 @@ -34,16 +34,16 @@ __BEGIN_DECLS 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. */ -extern ssize_t readv __P ((int __fd, __const struct iovec *__vector, - int __count)); +extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count) + __THROW; /* 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. */ -extern ssize_t writev __P ((int __fd, __const struct iovec *__vector, - int __count)); +extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count) + __THROW; __END_DECLS diff --git a/include/sys/un.h b/include/sys/un.h index 03f36058b..1fa10e4fe 100644 --- a/include/sys/un.h +++ b/include/sys/un.h @@ -1,28 +1,26 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _SYS_UN_H #define _SYS_UN_H 1 #include <sys/cdefs.h> -#include <string.h> /* For prototype of `strlen'. */ - /* Get the definition of the macro to define the common sockaddr members. */ #include <bits/sockaddr.h> @@ -36,9 +34,13 @@ struct sockaddr_un }; +#ifdef __USE_MISC +# include <string.h> /* For prototype of `strlen'. */ + /* Evaluate to actual length of the `sockaddr_un' structure. */ -#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \ +# define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \ + strlen ((ptr)->sun_path)) +#endif __END_DECLS diff --git a/include/sys/user.h b/include/sys/user.h index aca46e7d3..3fae43f83 100644 --- a/include/sys/user.h +++ b/include/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000, 2001 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 @@ -23,81 +23,50 @@ too much into it. Don't use it for anything other than GDB unless you know what you are doing. */ -struct user_fpregs_struct +struct user_fpregs { - long int cwd; - long int swd; - long int twd; - long int fip; - long int fcs; - long int foo; - long int fos; - long int st_space [20]; + struct fp_reg + { + unsigned int sign1:1; + unsigned int unused:15; + unsigned int sign2:1; + unsigned int exponent:14; + unsigned int j:1; + unsigned int mantissa1:31; + unsigned int mantissa0:32; + } fpregs[8]; + unsigned int fpsr:32; + unsigned int fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; }; -struct user_fpxregs_struct +struct user_regs { - unsigned short int cwd; - unsigned short int swd; - unsigned short int twd; - unsigned short int fop; - long int fip; - long int fcs; - long int foo; - long int fos; - long int mxcsr; - long int reserved; - long int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ - long int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ - long int padding[56]; -}; - -struct user_regs_struct -{ - long int ebx; - long int ecx; - long int edx; - long int esi; - long int edi; - long int ebp; - long int eax; - long int xds; - long int xes; - long int xfs; - long int xgs; - long int orig_eax; - long int eip; - long int xcs; - long int eflags; - long int esp; - long int xss; + unsigned long int uregs[18]; }; struct user { - struct user_regs_struct regs; - int u_fpvalid; - struct user_fpregs_struct i387; - unsigned long int u_tsize; - unsigned long int u_dsize; - unsigned long int u_ssize; - unsigned long start_code; - unsigned long start_stack; - long int signal; - int reserved; - struct user_regs_struct* u_ar0; - struct user_fpregs_struct* u_fpstate; - unsigned long int magic; - char u_comm [32]; - int u_debugreg [8]; -}; + struct user_regs regs; /* General registers */ + int u_fpvalid; /* True if math co-processor being used. */ -#define PAGE_SHIFT 12 -#define PAGE_SIZE (1UL << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) -#define NBPG PAGE_SIZE -#define UPAGES 1 -#define HOST_TEXT_START_ADDR (u.start_code) -#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) + unsigned long int u_tsize; /* Text segment size (pages). */ + unsigned long int u_dsize; /* Data segment size (pages). */ + unsigned long int u_ssize; /* Stack segment size (pages). */ + + unsigned long start_code; /* Starting virtual address of text. */ + unsigned long start_stack; /* Starting virtual address of stack. */ + + long int signal; /* Signal that caused the core dump. */ + int reserved; /* No longer used */ + struct user_regs *u_ar0; /* help gdb to find the general registers. */ + + unsigned long magic; /* uniquely identify a core file */ + char u_comm[32]; /* User command that was responsible */ + int u_debugreg[8]; + struct user_fpregs u_fp; /* Floating point registers */ + struct user_fpregs *u_fp0; /* help gdb to find the FP registers. */ +}; -#endif /* _SYS_USER_H */ +#endif /* sys/user.h */ diff --git a/include/sys/utsname.h b/include/sys/utsname.h index 7625a5b6b..ca195cb4d 100644 --- a/include/sys/utsname.h +++ b/include/sys/utsname.h @@ -1,20 +1,74 @@ -#ifndef __SYS_UTSNAME_H -#define __SYS_UTSNAME_H +/* Copyright (C) 1991, 92, 94, 96, 97, 99 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#include <features.h> -#include <sys/param.h> + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ -struct utsname { - char sysname[65]; - char nodename[65]; - char release[65]; - char version[65]; - char machine[65]; - char domainname[65]; -}; +/* + * POSIX Standard: 4.4 System Identification <sys/utsname.h> + */ + +#ifndef _SYS_UTSNAME_H +#define _SYS_UTSNAME_H 1 + +#include <features.h> __BEGIN_DECLS -extern int uname __P ((struct utsname * __utsbuf)); -__END_DECLS +#include <bits/utsname.h> + +#ifndef _UTSNAME_NODENAME_LENGTH +# define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH +#endif + +/* Structure describing the system and machine. */ +struct utsname + { + /* Name of the implementation of the operating system. */ + char sysname[_UTSNAME_LENGTH]; + + /* Name of this node on the network. */ + char nodename[_UTSNAME_NODENAME_LENGTH]; + + /* Current release level of this implementation. */ + char release[_UTSNAME_LENGTH]; + /* Current version level of this release. */ + char version[_UTSNAME_LENGTH]; + + /* Name of the hardware type the system is running on. */ + char machine[_UTSNAME_LENGTH]; + +#if _UTSNAME_DOMAIN_LENGTH - 0 + /* Name of the domain of this node on the network. */ +# ifdef __USE_GNU + char domainname[_UTSNAME_DOMAIN_LENGTH]; +# else + char __domainname[_UTSNAME_DOMAIN_LENGTH]; +# endif #endif + }; + +#ifdef __USE_SVID +# define SYS_NMLN _UTSNAME_LENGTH +#endif + + +/* Put information about the system in NAME. */ +extern int uname (struct utsname *__name) __THROW; + + +__END_DECLS + +#endif /* sys/utsname.h */ diff --git a/include/sys/vm86.h b/include/sys/vm86.h deleted file mode 100644 index 851814e13..000000000 --- a/include/sys/vm86.h +++ /dev/null @@ -1,125 +0,0 @@ -#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 diff --git a/include/sys/wait.h b/include/sys/wait.h index 2ba604de6..03ac5fe35 100644 --- a/include/sys/wait.h +++ b/include/sys/wait.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 3.2.1 Wait for Process Termination <sys/wait.h> @@ -27,65 +27,64 @@ __BEGIN_DECLS -#include <bits/types.h> - -#if defined __USE_XOPEN && !defined pid_t -typedef __pid_t pid_t; -# define pid_t pid_t -#endif +#include <signal.h> +#include <sys/resource.h> +/* These macros could also be defined int <stdlib.h>. */ +#if !defined _STDLIB_H || !defined __USE_XOPEN /* This will define the `W*' macros for the flag bits to `waitpid', `wait3', and `wait4'. */ -#include <bits/waitflags.h> +# include <bits/waitflags.h> -#ifdef __USE_BSD +# 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. */ -# if defined __GNUC__ && !defined __cplusplus -# define __WAIT_INT(status) \ +# if defined __GNUC__ && !defined __cplusplus +# 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 +# else +# define __WAIT_INT(status) (*(int *) &(status)) +# endif /* This is the type of the argument to `wait'. The funky union causes redeclarations with ether `int *' or `union wait *' to be allowed without complaint. __WAIT_STATUS_DEFN is the type used in the actual function definitions. */ -# if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus -# define __WAIT_STATUS __ptr_t -# define __WAIT_STATUS_DEFN __ptr_t -# else +# if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus +# define __WAIT_STATUS void * +# define __WAIT_STATUS_DEFN void * +# 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 +# define __WAIT_STATUS_DEFN int * +# endif -#else /* Don't use BSD. */ +# else /* Don't use BSD. */ -# define __WAIT_INT(status) (status) -# define __WAIT_STATUS int * -# define __WAIT_STATUS_DEFN int * +# define __WAIT_INT(status) (status) +# define __WAIT_STATUS int * +# define __WAIT_STATUS_DEFN int * -#endif /* Use BSD. */ +# endif /* Use BSD. */ /* This will define all the `__W*' macros. */ -#include <bits/waitstatus.h> +# include <bits/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)) +# 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)) +#endif /* <stdlib.h> not included. */ #ifdef __USE_BSD # define WCOREFLAG __WCOREFLAG @@ -107,8 +106,7 @@ typedef enum /* 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)); +extern __pid_t wait (__WAIT_STATUS __stat_loc) __THROW; #ifdef __USE_BSD /* Special values for the PID argument to `waitpid' and `wait4'. */ @@ -128,8 +126,7 @@ extern __pid_t wait __P ((__WAIT_STATUS __stat_loc)); 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 (__pid_t __pid, int *__stat_loc, int __options) __THROW; #if defined __USE_SVID || defined __USE_XOPEN # define __need_siginfo_t @@ -142,8 +139,8 @@ extern __pid_t waitpid __P ((__pid_t __pid, int *__stat_loc, If the WNOHANG bit is set in OPTIONS, and that child is not already dead, clear *INFOP and return 0. If successful, store exit code and status in *INFOP. */ -extern int waitid __P ((idtype_t __idtype, __id_t __id, siginfo_t *__infop, - int __options)); +extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop, + int __options) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED @@ -156,8 +153,8 @@ struct rusage; 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 (__WAIT_STATUS __stat_loc, int __options, + struct rusage * __usage) __THROW; #endif #ifdef __USE_BSD @@ -166,8 +163,8 @@ extern __pid_t wait3 __P ((__WAIT_STATUS __stat_loc, struct rusage; /* 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 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, + struct rusage *__usage) __THROW; #endif /* Use BSD. */ diff --git a/include/tar.h b/include/tar.h index f8264a0f7..ddfef755d 100644 --- a/include/tar.h +++ b/include/tar.h @@ -4,19 +4,19 @@ Written by David J. MacKenzie. 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ #ifndef _TAR_H #define _TAR_H 1 diff --git a/include/termcap.h b/include/termcap.h index 97624192c..25d69557d 100644 --- a/include/termcap.h +++ b/include/termcap.h @@ -1,25 +1,75 @@ +/**************************************************************************** + * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ -#ifndef _TERMCAP_H -#define _TERMCAP_H +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* $Id: termcap.h,v 1.3 2001/09/27 05:21:09 andersen Exp $ */ + +#ifndef _NCU_TERMCAP_H +#define _NCU_TERMCAP_H 1 + +#undef NCURSES_VERSION +#define NCURSES_VERSION "5.2" + +#include <ncurses_dll.h> + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ -#include <features.h> #include <sys/types.h> -__BEGIN_DECLS +#undef NCURSES_CONST +#define NCURSES_CONST const -extern char PC; -extern char *UP; -extern char *BC; -extern int ospeed; +#undef NCURSES_OSPEED +#define NCURSES_OSPEED short -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 NCURSES_EXPORT_VAR(char) PC; +extern NCURSES_EXPORT_VAR(char *) UP; +extern NCURSES_EXPORT_VAR(char *) BC; +extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; -extern int tputs __P((const char *, int, int (*)(int))); -extern char *tgoto __P((const char *, int, int)); +#if !defined(_NCU_TERM_H) +extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **); +extern NCURSES_EXPORT(char *) tgoto (const char *, int, int); +extern NCURSES_EXPORT(int) tgetent (char *, const char *); +extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *); +extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *); +extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int)); +#endif -__END_DECLS +#ifdef __cplusplus +} +#endif -#endif /* _TERMCAP_H */ +#endif /* _NCU_TERMCAP_H */ diff --git a/include/termios.h b/include/termios.h index 0306d8fb8..2c66457e2 100644 --- a/include/termios.h +++ b/include/termios.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,94,96,97,98,99 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 7.1-2 General Terminal Interface <termios.h> @@ -27,9 +27,9 @@ #ifdef __USE_UNIX98 /* We need `pid_t'. */ # include <bits/types.h> -# ifndef pid_t +# ifndef __pid_t_defined typedef __pid_t pid_t; -# define pid_t pid_t +# define __pid_t_defined # endif #endif @@ -46,55 +46,55 @@ __BEGIN_DECLS #endif /* Return the output baud rate stored in *TERMIOS_P. */ -extern speed_t cfgetospeed __P ((__const struct termios *__termios_p)); +extern speed_t cfgetospeed (__const struct termios *__termios_p) __THROW; /* Return the input baud rate stored in *TERMIOS_P. */ -extern speed_t cfgetispeed __P ((__const struct termios *__termios_p)); +extern speed_t cfgetispeed (__const struct termios *__termios_p) __THROW; /* Set the output baud rate stored in *TERMIOS_P to SPEED. */ -extern int cfsetospeed __P ((struct termios *__termios_p, speed_t __speed)); +extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __THROW; /* Set the input baud rate stored in *TERMIOS_P to SPEED. */ -extern int cfsetispeed __P ((struct termios *__termios_p, speed_t __speed)); +extern int cfsetispeed (struct termios *__termios_p, speed_t __speed) __THROW; #ifdef __USE_BSD /* Set both the input and output baud rates in *TERMIOS_OP to SPEED. */ -extern int cfsetspeed __P ((struct termios *__termios_p, speed_t __speed)); +extern int cfsetspeed (struct termios *__termios_p, speed_t __speed) __THROW; #endif /* Put the state of FD into *TERMIOS_P. */ -extern int tcgetattr __P ((int __fd, struct termios *__termios_p)); +extern int tcgetattr (int __fd, struct termios *__termios_p) __THROW; /* Set the state of FD to *TERMIOS_P. Values for OPTIONAL_ACTIONS (TCSA*) are in <bits/termios.h>. */ -extern int tcsetattr __P ((int __fd, int __optional_actions, - __const struct termios *__termios_p)); +extern int tcsetattr (int __fd, int __optional_actions, + __const struct termios *__termios_p) __THROW; #ifdef __USE_BSD /* Set *TERMIOS_P to indicate raw mode. */ -extern void cfmakeraw __P ((struct termios *__termios_p)); +extern void cfmakeraw (struct termios *__termios_p) __THROW; #endif /* Send zero bits on FD. */ -extern int tcsendbreak __P ((int __fd, int __duration)); +extern int tcsendbreak (int __fd, int __duration) __THROW; /* Wait for pending output to be written on FD. */ -extern int tcdrain __P ((int __fd)); +extern int tcdrain (int __fd) __THROW; /* Flush pending data on FD. Values for QUEUE_SELECTOR (TC{I,O,IO}FLUSH) are in <bits/termios.h>. */ -extern int tcflush __P ((int __fd, int __queue_selector)); +extern int tcflush (int __fd, int __queue_selector) __THROW; /* Suspend or restart transmission on FD. Values for ACTION (TC[IO]{OFF,ON}) are in <bits/termios.h>. */ -extern int tcflow __P ((int __fd, int __action)); +extern int tcflow (int __fd, int __action) __THROW; #ifdef __USE_UNIX98 /* Get process group ID for session leader for controlling terminal FD. */ -extern __pid_t tcgetsid __P ((int __fd)); +extern __pid_t tcgetsid (int __fd) __THROW; #endif diff --git a/include/time.h b/include/time.h index 4d9781d5d..08ee502e5 100644 --- a/include/time.h +++ b/include/time.h @@ -1,122 +1,366 @@ -/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991-1999, 2000, 2001 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 free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -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. + 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 + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* - * ANSI Standard: 4.12 DATE and TIME <time.h> + * ISO C99 Standard: 7.23 Date and time <time.h> */ -#ifndef _TIME_H -#define _TIME_H +#ifndef _TIME_H -#include <features.h> -#include <sys/time.h> +#if (! defined __need_time_t && !defined __need_clock_t && \ + ! defined __need_timespec) +# define _TIME_H 1 +# include <features.h> -#ifndef _TIME_T -#define _TIME_T -typedef long time_t; -#endif +__BEGIN_DECLS -#ifndef _CLOCK_T -#define _CLOCK_T -typedef long clock_t; #endif -#ifndef _SIZE_T -#define _SIZE_T -typedef unsigned int size_t; -#endif +#ifdef _TIME_H +/* Get size_t and NULL from <stddef.h>. */ +# define __need_size_t +# define __need_NULL +# include <stddef.h> -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *) 0) -#endif -#endif +/* This defines CLOCKS_PER_SEC, which is the number of processor clock + ticks per second. */ +# include <bits/time.h> + +/* This is the obsolete POSIX.1-1988 name for the same constant. */ +# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K +# ifndef CLK_TCK +# define CLK_TCK CLOCKS_PER_SEC +# endif +# endif + +#endif /* <time.h> included. */ + +#if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t) +# define __clock_t_defined 1 + +# include <bits/types.h> + +/* Returned by `clock'. */ +typedef __clock_t clock_t; + +#endif /* clock_t not defined and <time.h> or need clock_t. */ +#undef __need_clock_t + +#if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t) +# define __time_t_defined 1 + +# include <bits/types.h> + +/* Returned by `time'. */ +typedef __time_t time_t; + +#endif /* time_t not defined and <time.h> or need time_t. */ +#undef __need_time_t + +#if !defined __clockid_t_defined && \ + ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t) +# define __clockid_t_defined 1 + +# include <bits/types.h> + +/* Clock ID used in clock and timer functions. */ +typedef __clockid_t clockid_t; + +#endif /* clockid_t not defined and <time.h> or need clockid_t. */ +#undef __clockid_time_t + +#if !defined __timer_t_defined && \ + ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) +# define __timer_t_defined 1 + +# include <bits/types.h> -#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__; +/* Timer ID returned by `timer_create'. */ +typedef __timer_t timer_t; + +#endif /* timer_t not defined and <time.h> or need timer_t. */ +#undef __need_timer_t + + +#if !defined __timespec_defined && \ + ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timespec) +# define __timespec_defined 1 + +/* POSIX.1b structure for a time value. This is like a `struct timeval' but + has nanoseconds instead of microseconds. */ +struct timespec + { + long int tv_sec; /* Seconds. */ + long int tv_nsec; /* Nanoseconds. */ + }; + +#endif /* timespec not defined and <time.h> or need timespec. */ +#undef __need_timespec + + +#ifdef _TIME_H +/* Used by other time functions. */ +struct tm +{ + int tm_sec; /* Seconds. [0-60] (1 leap second) */ + int tm_min; /* Minutes. [0-59] */ + int tm_hour; /* Hours. [0-23] */ + int tm_mday; /* Day. [1-31] */ + int tm_mon; /* Month. [0-11] */ + int tm_year; /* Year - 1900. */ + int tm_wday; /* Day of week. [0-6] */ + int tm_yday; /* Days in year.[0-365] */ + int tm_isdst; /* DST. [-1/0/1]*/ + +# ifdef __USE_BSD + long int tm_gmtoff; /* Seconds east of UTC. */ + __const char *tm_zone; /* Timezone abbreviation. */ +# else + long int __tm_gmtoff; /* Seconds east of UTC. */ + __const char *__tm_zone; /* Timezone abbreviation. */ +# endif }; -#define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +#ifdef __USE_POSIX199309 +/* POSIX.1b structure for timer start values and intervals. */ +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; + +/* We can use a simple forward declaration. */ +struct sigevent; + +#endif /* POSIX.1b */ + +#ifdef __USE_XOPEN2K +# ifndef __pid_t_defined +typedef __pid_t pid_t; +# define __pid_t_defined +# endif +#endif + + +/* Time used by the program so far (user time + system time). + The result / CLOCKS_PER_SECOND is program time in seconds. */ +extern clock_t clock (void) __THROW; + +/* Return the current time and put it in *TIMER if TIMER is not NULL. */ +extern time_t time (time_t *__timer) __THROW; + +/* Return the difference between TIME1 and TIME0. */ +extern double difftime (time_t __time1, time_t __time0) + __THROW __attribute__ ((__const__)); + +/* Return the `time_t' representation of TP and normalize TP. */ +extern time_t mktime (struct tm *__tp) __THROW; + + +/* Format TP into S according to FORMAT. + Write no more than MAXSIZE characters and return the number + of characters written, or 0 if it would exceed MAXSIZE. */ +extern size_t strftime (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp) __THROW; + +# ifdef __USE_XOPEN +/* Parse S according to FORMAT and store binary time information in TP. + The return value is a pointer to the first unparsed character in S. */ +extern char *strptime (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp) + __THROW; +# endif + + +/* Return the `struct tm' representation of *TIMER + in Universal Coordinated Time (aka Greenwich Mean Time). */ +extern struct tm *gmtime (__const time_t *__timer) __THROW; + +/* Return the `struct tm' representation + of *TIMER in the local timezone. */ +extern struct tm *localtime (__const time_t *__timer) __THROW; + +# if defined __USE_POSIX || defined __USE_MISC +/* Return the `struct tm' representation of *TIMER in UTC, + using *TP to store the result. */ +extern struct tm *gmtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __THROW; + +/* Return the `struct tm' representation of *TIMER in local time, + using *TP to store the result. */ +extern struct tm *localtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __THROW; +# endif /* POSIX or misc */ + +/* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" + that is the representation of TP in this format. */ +extern char *asctime (__const struct tm *__tp) __THROW; + +/* Equivalent to `asctime (localtime (timer))'. */ +extern char *ctime (__const time_t *__timer) __THROW; + +# if defined __USE_POSIX || defined __USE_MISC +/* Reentrant versions of the above functions. */ + +/* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" + that is the representation of TP in this format. */ +extern char *asctime_r (__const struct tm *__restrict __tp, + char *__restrict __buf) __THROW; + +/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ +extern char *ctime_r (__const time_t *__restrict __timer, + char *__restrict __buf) __THROW; +# endif /* POSIX or misc */ + + +/* Defined in localtime.c. */ +extern char *__tzname[2]; /* Current timezone names. */ +extern int __daylight; /* If daylight-saving time is ever in use. */ +extern long int __timezone; /* Seconds west of UTC. */ + + +# ifdef __USE_POSIX +/* Same as above. */ extern char *tzname[2]; -extern int daylight; -extern long int timezone; -__BEGIN_DECLS +/* Set time conversion information from the TZ environment variable. + If TZ is not defined, a locale-dependent default is used. */ +extern void tzset (void) __THROW; +# endif -extern int stime __P ((time_t* __tptr)); +# if defined __USE_SVID || defined __USE_XOPEN +extern int daylight; +extern long int timezone; +# endif -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)); +# ifdef __USE_SVID +/* Set the system time to *WHEN. + This call is restricted to the superuser. */ +extern int stime (__const time_t *__when) __THROW; +# endif -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)); +/* Nonzero if YEAR is a leap year (every 4 years, + except every 100th isn't, and every 400th is). */ +# define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) -extern struct tm* gmtime __P ((__const time_t *__tp)); -extern struct tm* localtime __P ((__const time_t * __tp)); -#ifdef __USE_MISC +# ifdef __USE_MISC /* Miscellaneous functions many Unices inherited from the public domain - localtime package. These are included only for compatibility. */ + 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)); - +extern time_t timegm (struct tm *__tp) __THROW; + /* Another name for `mktime'. */ -extern time_t timelocal __P ((struct tm *__tp)); +extern time_t timelocal (struct tm *__tp) __THROW; + +/* Return the number of days in YEAR. */ +extern int dysize (int __year) __THROW __attribute__ ((__const__)); +# endif + + +# ifdef __USE_POSIX199309 +/* Pause execution for a number of nanoseconds. */ +extern int nanosleep (__const struct timespec *__requested_time, + struct timespec *__remaining) __THROW; + + +/* Get resolution of clock CLOCK_ID. */ +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; + +/* Get current value of clock CLOCK_ID and store it in TP. */ +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; + +/* Set clock CLOCK_ID to value TP. */ +extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) + __THROW; + +# ifdef __USE_XOPEN2K +/* High-resolution sleep with the specified clock. */ +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + __const struct timespec *__req, + struct timespec *__rem) __THROW; + +/* Return clock ID for CPU-time clock. */ +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; +# endif -#endif -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 *)); +/* Create new per-process timer using CLOCK_ID. */ +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) __THROW; + +/* Delete timer TIMERID. */ +extern int timer_delete (timer_t __timerid) __THROW; + +/* Set timer TIMERID to VALUE, returning old value in OVLAUE. */ +extern int timer_settime (timer_t __timerid, int __flags, + __const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) __THROW; + +/* Get current value of timer TIMERID and store it in VLAUE. */ +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + __THROW; + +/* Get expiration overrun for timer TIMERID. */ +extern int timer_getoverrun (timer_t __timerid) __THROW; +# endif + + +# ifdef __USE_XOPEN_EXTENDED +/* Set to one of the following values to indicate an error. + 1 the DATEMSK environment variable is null or undefined, + 2 the template file cannot be opened for reading, + 3 failed to get file status information, + 4 the template file is not a regular file, + 5 an error is encountered while reading the template file, + 6 memory allication failed (not enough memory available), + 7 there is no line in the template that matches the input, + 8 invalid input specification Example: February 31 or a time is + specified that can not be represented in a time_t (representing + the time in seconds since 00:00:00 UTC, January 1, 1970) */ +extern int getdate_err; + +/* Parse the given string as a date specification and return a value + representing the value. The templates from the file identified by + the environment variable DATEMSK are used. In case of an error + `getdate_err' is set. */ +extern struct tm *getdate (__const char *__string) __THROW; +# endif + +# ifdef __USE_GNU +/* Since `getdate' is not reentrant because of the use of `getdate_err' + and the static buffer to return the result in, we provide a thread-safe + variant. The functionality is the same. The result is returned in + the buffer pointed to by RESBUFP and in case of an error the return + value is != 0 with the same values as given above for `getdate_err'. */ +extern int getdate_r (__const char *__restrict __string, + struct tm *__restrict __resbufp) __THROW; +# endif -/* IEEE Std 1003.1b-1993. */ -extern int nanosleep __P((__const struct timespec *__rqtp, - struct timespec *__rmtp)); __END_DECLS -#endif +#endif /* <time.h> included. */ + +#endif /* <time.h> not already included. */ diff --git a/include/ucontext.h b/include/ucontext.h index 5ba3c2f0f..ee6f594f0 100644 --- a/include/ucontext.h +++ b/include/ucontext.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* System V ABI compliant user-level context switching support. */ @@ -24,20 +24,20 @@ #include <features.h> /* Get machine dependent definition of data structures. */ -#if 0 #include <sys/ucontext.h> __BEGIN_DECLS /* Get user context and store it in variable pointed to by UCP. */ -extern int getcontext __P ((ucontext_t *__ucp)); +extern int getcontext (ucontext_t *__ucp) __THROW; /* Set user context from information of variable pointed to by UCP. */ -extern int setcontext __P ((__const ucontext_t *__ucp)); +extern int setcontext (__const ucontext_t *__ucp) __THROW; /* Save current context in context variable pointed to by OUCP and set context from variable pointed to by UCP. */ -extern int swapcontext __P ((ucontext_t *__oucp, __const ucontext_t *__ucp)); +extern int swapcontext (ucontext_t *__restrict __oucp, + __const ucontext_t *__restrict __ucp) __THROW; /* Manipulate user context UCP to continue with calling functions FUNC and the ARGC-1 parameters following ARGC when the context is used @@ -45,9 +45,9 @@ extern int swapcontext __P ((ucontext_t *__oucp, __const ucontext_t *__ucp)); We cannot say anything about the parameters FUNC takes; `void' is as good as any other choice. */ -extern void makecontext __P ((ucontext_t *__ucp, void (*__func) (void), - int __argc, ...)); +extern void makecontext (ucontext_t *__ucp, void (*__func) (void), + int __argc, ...) __THROW; + __END_DECLS -#endif #endif /* ucontext.h */ diff --git a/include/unistd.h b/include/unistd.h index 4364c88c4..47a60b135 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. 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. + Lesser 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. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* * POSIX Standard: 2.10 Symbolic Constants <unistd.h> @@ -23,9 +23,7 @@ #ifndef _UNISTD_H #define _UNISTD_H 1 -#include <errno.h> #include <features.h> -#include <sys/types.h> __BEGIN_DECLS @@ -98,7 +96,7 @@ __BEGIN_DECLS _POSIX_JOB_CONTROL Job control is supported. _POSIX_SAVED_IDS Processes have a saved set-user-ID - and a saved set-group-ID. + and a saved set-group-ID. _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. _POSIX_TIMERS POSIX.4 clocks and timers are supported. @@ -155,11 +153,11 @@ __BEGIN_DECLS for a specific file can be obtained from `pathconf' and `fpathconf'. _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change - the owner of a file. `chown' can only be used + the owner of a file. `chown' can only be used to change the group ID of a file to a group of which the calling process is a member. _POSIX_NO_TRUNC Pathname components longer than - NAME_MAX generate an error. + NAME_MAX generate an error. _POSIX_VDISABLE If defined, if the value of an element of the `c_cc' member of `struct termios' is _POSIX_VDISABLE, no character will have the @@ -175,8 +173,6 @@ __BEGIN_DECLS */ #include <bits/posix_opt.h> -/* At this time, we don't do pthreads... Sorry... */ -#undef _POSIX_THREADS /* Get the environment definitions from Unix98. */ #ifdef __USE_UNIX98 @@ -193,9 +189,9 @@ __BEGIN_DECLS #include <bits/types.h> -#ifndef ssize_t +#ifndef __ssize_t_defined typedef __ssize_t ssize_t; -# define ssize_t ssize_t +# define __ssize_t_defined #endif #define __need_size_t @@ -205,41 +201,53 @@ typedef __ssize_t ssize_t; #ifdef __USE_XOPEN /* The Single Unix specification says that some more types are available here. */ -# ifndef gid_t +# ifndef __gid_t_defined typedef __gid_t gid_t; -# define gid_t gid_t +# define __gid_t_defined # endif -# ifndef uid_t +# ifndef __uid_t_defined typedef __uid_t uid_t; -# define uid_t uid_t +# define __uid_t_defined # endif -# ifndef off_t +# ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif -# define off_t off_t +# define __off_t_defined # endif -# if defined __USE_LARGEFILE64 && !defined off64_t +# if defined __USE_LARGEFILE64 && !defined __off64_t_defined typedef __off64_t off64_t; -# define off64_t off64_t +# define __off64_t_defined # endif -# ifndef pid_t +# ifndef __useconds_t_defined +typedef __useconds_t useconds_t; +# define __useconds_t_defined +# endif + +# ifndef __pid_t_defined typedef __pid_t pid_t; -# define pid_t pid_t +# define __pid_t_defined # endif #endif /* X/Open */ -#ifdef __USE_UNIX98 -# ifndef intptr_t +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED +# ifndef __intptr_t_defined typedef __intptr_t intptr_t; -# define intptr_t intptr_t +# define __intptr_t_defined +# endif +#endif + +#if defined __USE_BSD || defined __USE_XOPEN +# ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined # endif -#endif /* Unix98 */ +#endif /* Values for the second argument to access. These may be OR'd together. */ @@ -249,12 +257,13 @@ typedef __intptr_t intptr_t; #define F_OK 0 /* Test for existence. */ /* Test for access to NAME using the real UID and real GID. */ -extern int access __P ((__const char *__name, int __type)); +extern int access (__const char *__name, int __type) __THROW; -#ifdef __USE_GNU +#if 0 +//#ifdef __USE_GNU /* Test for access to NAME using the effective UID and GID (as normal file operations use). */ -extern int euidaccess __P ((__const char *__name, int __type)); +extern int euidaccess (__const char *__name, int __type) __THROW; #endif @@ -278,59 +287,46 @@ extern int euidaccess __P ((__const char *__name, int __type)); the current position (if WHENCE is SEEK_CUR), or the end of the file (if WHENCE is SEEK_END). Return the new file position. */ -extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence)); #ifndef __USE_FILE_OFFSET64 -extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence)); +extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW; #else # ifdef __REDIRECT extern __off64_t __REDIRECT (lseek, - __P ((int __fd, __off64_t __offset, - int __whence)), + (int __fd, __off64_t __offset, int __whence) + __THROW, lseek64); # else # define lseek lseek64 # endif #endif #ifdef __USE_LARGEFILE64 -extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); +extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW; #endif /* Close the file descriptor FD. */ -extern int __close __P ((int __fd)); -extern int close __P ((int __fd)); +extern int close (int __fd) __THROW; /* Read NBYTES into BUF from FD. Return the number read, -1 for errors or 0 for EOF. */ -extern ssize_t __read __P ((int __fd, __ptr_t __buf, size_t __nbytes)); -extern ssize_t read __P ((int __fd, __ptr_t __buf, size_t __nbytes)); +extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __THROW; /* Write N bytes of BUF to FD. Return the number written, or -1. */ -extern ssize_t __write __P ((int __fd, __const __ptr_t __buf, size_t __n)); -extern ssize_t write __P ((int __fd, __const __ptr_t __buf, size_t __n)); +extern ssize_t write (int __fd, __const void *__buf, size_t __n) __THROW; #ifdef __USE_UNIX98 -/* Read NBYTES into BUF from FD at the given position OFFSET without - changing the file pointer. Return the number read, -1 for errors - or 0 for EOF. */ -extern ssize_t __pread64 __P ((int __fd, __ptr_t __buf, size_t __nbytes, - __off64_t __offset)); -/* Write N bytes of BUF to FD at the given position OFFSET without - changing the file pointer. Return the number written, or -1. */ -extern ssize_t __pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n, - __off64_t __offset)); - # ifndef __USE_FILE_OFFSET64 -extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes, - __off_t __offset)); -extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n, - __off_t __offset)); +extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) + __THROW; +extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, + __off_t __offset) __THROW; # else # ifdef __REDIRECT -extern ssize_t __REDIRECT (pread, __P ((int __fd, __ptr_t __buf, - size_t __nbytes,__off64_t __offset)), +extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset) __THROW, pread64); -extern ssize_t __REDIRECT (pwrite, __P ((int __fd, __const __ptr_t __buf, - size_t __nbytes, __off64_t __offset)), +extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf, + size_t __nbytes, __off64_t __offset) + __THROW, pwrite64); # else # define pread pread64 @@ -339,10 +335,15 @@ extern ssize_t __REDIRECT (pwrite, __P ((int __fd, __const __ptr_t __buf, # endif # ifdef __USE_LARGEFILE64 -extern ssize_t pread64 __P ((int __fd, __ptr_t __buf, size_t __nbytes, - __off64_t __offset)); -extern ssize_t pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n, - __off64_t __offset)); +/* Read NBYTES into BUF from FD at the given position OFFSET without + changing the file pointer. Return the number read, -1 for errors + or 0 for EOF. */ +extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset) __THROW; +/* Write N bytes of BUF to FD at the given position OFFSET without + changing the file pointer. Return the number written, or -1. */ +extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, + __off64_t __offset) __THROW; # endif #endif @@ -350,7 +351,7 @@ extern ssize_t pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n, If successful, two file descriptors are stored in PIPEDES; bytes written on PIPEDES[1] can be read from PIPEDES[0]. Returns 0 if successful, -1 if not. */ -extern int pipe __P ((int __pipedes[2])); +extern int pipe (int __pipedes[2]) __THROW; /* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM. If SECONDS is zero, any currently scheduled alarm will be cancelled. @@ -359,7 +360,7 @@ extern int pipe __P ((int __pipedes[2])); There is no return value to indicate an error, but you can set `errno' to 0 and check its value after calling `alarm', and this might tell you. The signal may come late due to processor scheduling. */ -extern unsigned int alarm __P ((unsigned int __seconds)); +extern unsigned int alarm (unsigned int __seconds) __THROW; /* Make the process sleep for SECONDS seconds, or until a signal arrives and is not ignored. The function returns the number of seconds less @@ -368,49 +369,49 @@ extern unsigned int alarm __P ((unsigned int __seconds)); SIGALRM signal while inside `sleep' call, the handling of the SIGALRM signal afterwards is undefined. There is no return value to indicate error, but if `sleep' returns SECONDS, it probably didn't work. */ -extern unsigned int sleep __P ((unsigned int __seconds)); +extern unsigned int sleep (unsigned int __seconds) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set an alarm to go off (generating a SIGALRM signal) in VALUE microseconds. If INTERVAL is nonzero, when the alarm goes off, the timer is reset to go off every INTERVAL microseconds thereafter. Returns the number of microseconds remaining before the alarm. */ -extern unsigned int ualarm __P ((unsigned int __value, - unsigned int __interval)); +extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) + __THROW; /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked or ignored. */ -extern void usleep __P ((unsigned int __useconds)); +extern int usleep (__useconds_t __useconds) __THROW; #endif /* Suspend the process until a signal arrives. This always returns -1 and sets `errno' to EINTR. */ -extern int pause __P ((void)); +extern int pause (void) __THROW; /* Change the owner and group of FILE. */ -extern int chown __P ((__const char *__file, __uid_t __owner, - __gid_t __group)); +extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) + __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Change the owner and group of the file that FD is open on. */ -extern int fchown __P ((int __fd, __uid_t __owner, __gid_t __group)); +extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW; /* Change owner and group of FILE, if it is a symbolic link the ownership of the symbolic link is changed. */ -extern int lchown __P ((__const char *__file, __uid_t __owner, - __gid_t __group)); +extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) + __THROW; #endif /* Use BSD || X/Open Unix. */ /* Change the process's working directory to PATH. */ -extern int chdir __P ((__const char *__path)); +extern int chdir (__const char *__path) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Change the process's working directory to the one FD is open on. */ -extern int fchdir __P ((int __fd)); +extern int fchdir (int __fd) __THROW; #endif /* Get the pathname of the current working directory, @@ -420,77 +421,80 @@ extern int fchdir __P ((int __fd)); an array is allocated with `malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ -extern char *getcwd __P ((char *__buf, size_t __size)); +extern char *getcwd (char *__buf, size_t __size) __THROW; -#ifdef __USE_GNU +#if 0 +//#ifdef __USE_GNU /* Return a malloc'd string containing the current directory name. If the environment variable `PWD' is set, and its value is correct, that value is used. */ -extern char *get_current_dir_name __P ((void)); +extern char *get_current_dir_name (void) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Put the absolute pathname of the current working directory in BUF. If successful, return BUF. If not, put an error message in BUF and return NULL. BUF should be at least PATH_MAX bytes long. */ -extern char *getwd __P ((char *__buf)); +extern char *getwd (char *__buf) __THROW; #endif /* Duplicate FD, returning a new file descriptor on the same file. */ -extern int dup __P ((int __fd)); +extern int dup (int __fd) __THROW; /* Duplicate FD to FD2, closing FD2 and making it open on the same file. */ -extern int dup2 __P ((int __fd, int __fd2)); +extern int dup2 (int __fd, int __fd2) __THROW; /* NULL-terminated array of "NAME=VALUE" environment variables. */ extern char **__environ; +#ifdef __USE_GNU extern char **environ; +#endif /* Replace the current process, executing PATH with arguments ARGV and environment ENVP. ARGV and ENVP are terminated by NULL pointers. */ -extern int execve __P ((__const char *__path, char *__const __argv[], - char *__const __envp[])); +extern int execve (__const char *__path, char *__const __argv[], + char *__const __envp[]) __THROW; -#ifdef __USE_GNU +#if 0 +//#ifdef __USE_GNU /* Execute the file FD refers to, overlaying the running program image. ARGV and ENVP are passed to the new program, as for `execve'. */ -extern int fexecve __P ((int __fd, - char *__const __argv[], char *__const __envp[])); - +extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) + __THROW; #endif /* Execute PATH with arguments ARGV and environment from `environ'. */ -extern int execv __P ((__const char *__path, char *__const __argv[])); +extern int execv (__const char *__path, char *__const __argv[]) __THROW; /* Execute PATH with all arguments after PATH until a NULL pointer, and the argument after that for environment. */ -extern int execle __P ((__const char *__path, __const char *__arg, ...)); +extern int execle (__const char *__path, __const char *__arg, ...) __THROW; /* Execute PATH with all arguments after PATH until a NULL pointer and environment from `environ'. */ -extern int execl __P ((__const char *__path, __const char *__arg, ...)); +extern int execl (__const char *__path, __const char *__arg, ...) __THROW; /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ -extern int execvp __P ((__const char *__file, char *__const __argv[])); +extern int execvp (__const char *__file, char *__const __argv[]) __THROW; /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with all arguments after FILE until a NULL pointer and environment from `environ'. */ -extern int execlp __P ((__const char *__file, __const char *__arg, ...)); +extern int execlp (__const char *__file, __const char *__arg, ...) __THROW; #if defined __USE_MISC || defined __USE_XOPEN /* Add INC to priority of the current process. */ -extern int nice __P ((int __inc)); +extern int nice (int __inc) __THROW; #endif /* Terminate program execution with the low-order 8 bits of STATUS. */ -extern void _exit __PMT ((int __status)) __attribute__ ((__noreturn__)); +extern void _exit (int __status) __attribute__ ((__noreturn__)); /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; @@ -499,48 +503,49 @@ extern void _exit __PMT ((int __status)) __attribute__ ((__noreturn__)); #include <bits/confname.h> /* Get file-specific configuration information about PATH. */ -extern long int pathconf __P ((__const char *__path, int __name)); +extern long int pathconf (__const char *__path, int __name) __THROW; /* Get file-specific configuration about descriptor FD. */ -extern long int fpathconf __P ((int __fd, int __name)); +extern long int fpathconf (int __fd, int __name) __THROW; /* Get the value of the system variable NAME. */ -extern long int sysconf __P ((int __name)); +extern long int sysconf (int __name) __THROW __attribute__ ((__const__)); #ifdef __USE_POSIX2 /* Get the value of the string-valued system variable NAME. */ -extern size_t confstr __P ((int __name, char *__buf, size_t __len)); +extern size_t confstr (int __name, char *__buf, size_t __len) __THROW; #endif /* Get the process ID of the calling process. */ -extern __pid_t __getpid __P ((void)); -extern __pid_t getpid __P ((void)); +extern __pid_t getpid (void) __THROW; /* Get the process ID of the calling process's parent. */ -extern __pid_t getppid __P ((void)); +extern __pid_t getppid (void) __THROW; /* Get the process group ID of the calling process. This function is different on old BSD. */ #ifndef __FAVOR_BSD -extern __pid_t getpgrp __P ((void)); +extern __pid_t getpgrp (void) __THROW; #else -//# ifdef __REDIRECT -//extern __pid_t __REDIRECT (getpgrp, __P ((__pid_t __pid)), __getpgid); -//# else -# define getpgrp getpgid -//# endif +# ifdef __REDIRECT +extern __pid_t __REDIRECT (getpgrp, (__pid_t __pid) __THROW, __getpgid); +# else +# define getpgrp __getpgid +# endif #endif /* Get the process group ID of process PID. */ -extern __pid_t getpgid __P ((__pid_t __pid)); +extern __pid_t __getpgid (__pid_t __pid) __THROW; +#ifdef __USE_XOPEN_EXTENDED +extern __pid_t getpgid (__pid_t __pid) __THROW; +#endif /* Set the process group ID of the process matching PID to PGID. If PID is zero, the current process's process group ID is set. If PGID is zero, the process ID of the process is used. */ -extern int __setpgid __P ((__pid_t __pid, __pid_t __pgid)); -extern int setpgid __P ((__pid_t __pid, __pid_t __pgid)); +extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW; #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Both System V and BSD have `setpgrp' functions, but with different @@ -557,13 +562,13 @@ extern int setpgid __P ((__pid_t __pid, __pid_t __pgid)); /* Set the process group ID of the calling process to its own PID. This is exactly the same as `setpgid (0, 0)'. */ -extern int setpgrp __P ((void)); +extern int setpgrp (void) __THROW; # else /* Another name for `setpgid' (above). */ # ifdef __REDIRECT -extern int __REDIRECT (setpgrp, __P ((__pid_t __pid, __pid_t __pgrp)), +extern int __REDIRECT (setpgrp, (__pid_t __pid, __pid_t __pgrp) __THROW, setpgid); # else # define setpgrp setpgid @@ -575,146 +580,145 @@ extern int __REDIRECT (setpgrp, __P ((__pid_t __pid, __pid_t __pgrp)), /* Create a new session with the calling process as its leader. The process group IDs of the session and the calling process are set to the process ID of the calling process, which is returned. */ -extern __pid_t setsid __P ((void)); +extern __pid_t setsid (void) __THROW; #ifdef __USE_XOPEN_EXTENDED /* Return the session ID of the given process. */ -extern __pid_t getsid __P ((__pid_t __pid)); +extern __pid_t getsid (__pid_t __pid) __THROW; #endif /* Get the real user ID of the calling process. */ -extern __uid_t getuid __P ((void)); +extern __uid_t getuid (void) __THROW; /* Get the effective user ID of the calling process. */ -extern __uid_t geteuid __P ((void)); +extern __uid_t geteuid (void) __THROW; /* Get the real group ID of the calling process. */ -extern __gid_t getgid __P ((void)); +extern __gid_t getgid (void) __THROW; /* Get the effective group ID of the calling process. */ -extern __gid_t getegid __P ((void)); +extern __gid_t getegid (void) __THROW; /* If SIZE is zero, return the number of supplementary groups the calling process is in. Otherwise, fill in the group IDs of its supplementary groups in LIST and return the number written. */ -extern int getgroups __P ((int __size, __gid_t __list[])); +extern int getgroups (int __size, __gid_t __list[]) __THROW; -#ifdef __USE_GNU +#if 0 +//#ifdef __USE_GNU /* Return nonzero iff the calling process is in group GID. */ -extern int group_member __P ((__gid_t __gid)); +extern int group_member (__gid_t __gid) __THROW; #endif /* Set the user ID of the calling process to UID. If the calling process is the super-user, set the real and effective user IDs, and the saved set-user-ID to UID; if not, the effective user ID is set to UID. */ -extern int setuid __P ((__uid_t __uid)); +extern int setuid (__uid_t __uid) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set the real user ID of the calling process to RUID, and the effective user ID of the calling process to EUID. */ -extern int setreuid __P ((__uid_t __ruid, __uid_t __euid)); +extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW; #endif -#ifdef __USE_BSD +#if defined __USE_BSD || defined __USE_XOPEN2K /* Set the effective user ID of the calling process to UID. */ -extern int seteuid __P ((__uid_t __uid)); +extern int seteuid (__uid_t __uid) __THROW; #endif /* Use BSD. */ /* Set the group ID of the calling process to GID. If the calling process is the super-user, set the real and effective group IDs, and the saved set-group-ID to GID; if not, the effective group ID is set to GID. */ -extern int setgid __P ((__gid_t __gid)); +extern int setgid (__gid_t __gid) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set the real group ID of the calling process to RGID, and the effective group ID of the calling process to EGID. */ -extern int setregid __P ((__gid_t __rgid, __gid_t __egid)); +extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW; #endif -#ifdef __USE_BSD +#if defined __USE_BSD || defined __USE_XOPEN2K /* Set the effective group ID of the calling process to GID. */ -extern int setegid __P ((__gid_t __gid)); +extern int setegid (__gid_t __gid) __THROW; #endif /* Use BSD. */ /* Clone the calling process, creating an exact copy. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ -#ifdef __UCLIBC_HAS_MMU__ -extern __pid_t fork __P ((void)); -#else -#define fork fork_not_available_on_mmuless_systems__use_vfork -#endif +extern __pid_t fork (void) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Clone the calling process, but without copying the whole address space. The calling process is suspended until the new process exits or is replaced by a call to `execve'. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ -extern __pid_t vfork __P ((void)); +extern __pid_t vfork (void) __THROW; #endif /* Use BSD. */ /* Return the pathname of the terminal FD is open on, or NULL on errors. The returned storage is good only until the next call to this function. */ -extern char *ttyname __P ((int __fd)); +extern char *ttyname (int __fd) __THROW; /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ -extern int ttyname_r __P ((int __fd, char *__buf, size_t __buflen)); +extern int ttyname_r (int __fd, char *__buf, size_t __buflen) __THROW; /* Return 1 if FD is a valid descriptor associated with a terminal, zero if not. */ -extern int isatty __P ((int __fd)); +extern int isatty (int __fd) __THROW; -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED +#if defined __USE_BSD \ + || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98) /* Return the index into the active-logins file (utmp) for the controlling terminal. */ -extern int ttyslot __P ((void)); +extern int ttyslot (void) __THROW; #endif /* Make a link to FROM named TO. */ -extern int link __P ((__const char *__from, __const char *__to)); +extern int link (__const char *__from, __const char *__to) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Make a symbolic link to FROM named TO. */ -extern int symlink __P ((__const char *__from, __const char *__to)); +extern int symlink (__const char *__from, __const char *__to) __THROW; /* Read the contents of the symbolic link PATH into no more than LEN bytes of BUF. The contents are not null-terminated. Returns the number of characters read, or -1 for errors. */ -extern int readlink __P ((__const char *__path, char *__buf, size_t __len)); +extern int readlink (__const char *__restrict __path, char *__restrict __buf, + size_t __len) __THROW; #endif /* Use BSD. */ /* Remove the link NAME. */ -extern int unlink __P ((__const char *__name)); +extern int unlink (__const char *__name) __THROW; /* Remove the directory PATH. */ -extern int rmdir __P ((__const char *__path)); +extern int rmdir (__const char *__path) __THROW; /* Return the foreground process group ID of FD. */ -extern __pid_t tcgetpgrp __P ((int __fd)); +extern __pid_t tcgetpgrp (int __fd) __THROW; /* Set the foreground process group ID of FD set PGRP_ID. */ -extern int tcsetpgrp __P ((int __fd, __pid_t __pgrp_id)); +extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW; /* Return the login name of the user. */ -extern char *getlogin __P ((void)); -#ifdef __USE_REENTRANT +extern char *getlogin (void) __THROW; +#if defined __USE_REENTRANT || defined __USE_UNIX98 /* Return at most NAME_LEN characters of the login name of the user in NAME. If it cannot be determined or some other error occurred, return the error code. Otherwise return 0. */ -extern int getlogin_r __P ((char *__name, size_t __name_len)); +extern int getlogin_r (char *__name, size_t __name_len) __THROW; #endif #ifdef __USE_BSD /* Set the login name returned by `getlogin'. */ -extern int setlogin __P ((__const char *__name)); +extern int setlogin (__const char *__name) __THROW; #endif @@ -727,40 +731,38 @@ extern int setlogin __P ((__const char *__name)); #endif -#if defined __USE_BSD || defined __USE_XOPEN - +#if defined __USE_BSD || defined __USE_XOPEN2K /* Put the name of the current host in no more than LEN bytes of NAME. The result is null-terminated if LEN is large enough for the full name and the terminator. */ -extern int gethostname __P ((char *__name, size_t __len)); +extern int gethostname (char *__name, size_t __len) __THROW; +#endif + +#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98) /* Set the name of the current host to NAME, which is LEN bytes long. This call is restricted to the super-user. */ -extern int sethostname __P ((__const char *__name, size_t __len)); +extern int sethostname (__const char *__name, size_t __len) __THROW; /* Set the current machine's Internet number to ID. This call is restricted to the super-user. */ -extern int sethostid __P ((long int __id)); +extern int sethostid (long int __id) __THROW; /* Get and set the NIS (aka YP) domain name, if any. Called just like `gethostname' and `sethostname'. The NIS domain name is usually the empty string when not using NIS. */ -extern int getdomainname __P ((char *__name, size_t __len)); -extern int setdomainname __P ((__const char *__name, size_t __len)); - - -/* Make all changes done to FD actually appear on disk. */ -extern int fsync __P ((int __fd)); +extern int getdomainname (char *__name, size_t __len) __THROW; +extern int setdomainname (__const char *__name, size_t __len) __THROW; /* Revoke access permissions to all processes currently communicating with the control terminal, and then send a SIGHUP signal to the process group of the control terminal. */ -extern int vhangup __P ((void)); +extern int vhangup (void) __THROW; /* Revoke the access of all descriptors currently open on FILE. */ -extern int revoke __P ((__const char *__file)); +extern int revoke (__const char *__file) __THROW; /* Enable statistical profiling, writing samples of the PC into at most @@ -768,89 +770,95 @@ extern int revoke __P ((__const char *__file)); is enabled, the system examines the user PC and increments SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536]. If SCALE is zero, disable profiling. Returns zero on success, -1 on error. */ -extern int profil __P ((unsigned short int *__sample_buffer, size_t __size, - size_t __offset, unsigned int __scale)); +extern int profil (unsigned short int *__sample_buffer, size_t __size, + size_t __offset, unsigned int __scale) __THROW; /* Turn accounting on if NAME is an existing file. The system will then write a record for each process as it terminates, to this file. If NAME is NULL, turn accounting off. This call is restricted to the super-user. */ -extern int acct __P ((__const char *__name)); - -/* Make PATH be the root directory (the starting point for absolute paths). - This call is restricted to the super-user. */ -extern int chroot __P ((__const char *__path)); +extern int acct (__const char *__name) __THROW; /* Successive calls return the shells listed in `/etc/shells'. */ -extern char *getusershell __P ((void)); -extern void endusershell __P ((void)); /* Discard cached info. */ -extern void setusershell __P ((void)); /* Rewind and re-read the file. */ - +extern char *getusershell (void) __THROW; +extern void endusershell (void) __THROW; /* Discard cached info. */ +extern void setusershell (void) __THROW; /* Rewind and re-read the file. */ -/* Prompt with PROMPT and read a string from the terminal without echoing. - Uses /dev/tty if possible; otherwise stderr and stdin. */ -extern char *getpass __P ((__const char *__prompt)); /* Put the program in the background, and dissociate from the controlling terminal. If NOCHDIR is zero, do `chdir ("/")'. If NOCLOSE is zero, redirects stdin, stdout, and stderr to /dev/null. */ -extern int daemon __P ((int __nochdir, int __noclose)); +extern int daemon (int __nochdir, int __noclose) __THROW; +#endif /* Use BSD || X/Open. */ + + +#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K) +/* Make PATH be the root directory (the starting point for absolute paths). + This call is restricted to the super-user. */ +extern int chroot (__const char *__path) __THROW; + +/* Prompt with PROMPT and read a string from the terminal without echoing. + Uses /dev/tty if possible; otherwise stderr and stdin. */ +extern char *getpass (__const char *__prompt) __THROW; +#endif /* Use BSD || X/Open. */ + +#if defined __USE_BSD || defined __USE_XOPEN +/* Make all changes done to FD actually appear on disk. */ +extern int fsync (int __fd) __THROW; #endif /* Use BSD || X/Open. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Return the current machine's Internet number. */ -extern long int gethostid __P ((void)); +extern long int gethostid (void) __THROW; /* Make all changes done to all files actually appear on disk. */ -extern int sync __P ((void)); +extern void sync (void) __THROW; /* Return the number of bytes in a page. This is the system's page size, which is not necessarily the same as the hardware page size. */ -extern int __getpagesize __P ((void)) __attribute__ ((__const__)); -extern int getpagesize __P ((void)) __attribute__ ((__const__)); +extern int getpagesize (void) __THROW __attribute__ ((__const__)); /* Truncate FILE to LENGTH bytes. */ -#ifndef __USE_FILE_OFFSET64 -extern int truncate __P ((__const char *__file, __off_t __length)); -#else -# ifdef __REDIRECT +# ifndef __USE_FILE_OFFSET64 +extern int truncate (__const char *__file, __off_t __length) __THROW; +# else +# ifdef __REDIRECT extern int __REDIRECT (truncate, - __P ((__const char *__file, __off64_t __length)), + (__const char *__file, __off64_t __length) __THROW, truncate64); -# else -# define truncate truncate64 +# else +# define truncate truncate64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int truncate64 (__const char *__file, __off64_t __length) __THROW; # endif -#endif -#ifdef __USE_LARGEFILE64 -extern int truncate64 __P ((__const char *__file, __off64_t __length)); -#endif /* Truncate the file FD is open on to LENGTH bytes. */ -extern int __ftruncate __P ((int __fd, __off_t __length)); -#ifndef __USE_FILE_OFFSET64 -extern int ftruncate __P ((int __fd, __off_t __length)); -#else -# ifdef __REDIRECT -extern int __REDIRECT (ftruncate, __P ((int __fd, __off64_t __length)), - ftruncate64); +# ifndef __USE_FILE_OFFSET64 +extern int ftruncate (int __fd, __off_t __length) __THROW; # else -# define ftruncate ftruncate64 +# ifdef __REDIRECT +extern int __REDIRECT (ftruncate, (int __fd, __off64_t __length) __THROW, + ftruncate64); +# else +# define ftruncate ftruncate64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int ftruncate64 (int __fd, __off64_t __length) __THROW; # endif -#endif -#ifdef __USE_LARGEFILE64 -extern int ftruncate64 __P ((int __fd, __off64_t __length)); -#endif /* Return the maximum number of file descriptors the current process could possibly have. */ -extern int getdtablesize __P ((void)); +extern int getdtablesize (void) __THROW; #endif /* Use BSD || X/Open Unix. */ @@ -859,18 +867,13 @@ extern int getdtablesize __P ((void)); /* Set the end of accessible data space (aka "the break") to ADDR. Returns zero on success and -1 for errors (with errno set). */ -extern int brk __P ((__ptr_t __addr)); - -# define __need_ptrdiff_t -# include <stddef.h> +extern int brk (void *__addr) __THROW; /* Increase or decrease the end of accessible data space by DELTA bytes. If successful, returns the address the previous end of data space (i.e. the beginning of the new space, if DELTA > 0); returns (void *) -1 for errors (with errno set). */ -#define ptrdiff_t int -extern __ptr_t __sbrk __P ((ptrdiff_t __delta)); -extern __ptr_t sbrk __P ((ptrdiff_t __delta)); +extern void *sbrk (intptr_t __delta) __THROW; #endif @@ -885,7 +888,7 @@ extern __ptr_t sbrk __P ((ptrdiff_t __delta)); In Mach, all system calls take normal arguments and always return an error code (zero for success). */ -extern long int syscall __P ((long int __sysno, ...)); +extern long int syscall (long int __sysno, ...) __THROW; #endif /* Use misc. */ @@ -905,17 +908,17 @@ extern long int syscall __P ((long int __sysno, ...)); # define F_TEST 3 /* Test a region for other processes locks. */ # ifndef __USE_FILE_OFFSET64 -extern int lockf __P ((int __fd, int __cmd, __off_t __len)); +extern int lockf (int __fd, int __cmd, __off_t __len) __THROW; # else # ifdef __REDIRECT -extern int __REDIRECT (lockf, __P ((int __fd, int __cmd, __off64_t __len)), +extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW, lockf64); # else # define lockf lockf64 # endif # endif # ifdef __USE_LARGEFILE64 -extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len)); +extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW; # endif #endif /* Use misc and F_LOCK not already defined. */ @@ -930,22 +933,13 @@ extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len)); ({ long int __result; \ do __result = (long int) (expression); \ while (__result == -1L && errno == EINTR); \ - __result; })) \ - - -/* This variable is set nonzero at startup if the process's effective - IDs differ from its real IDs, or it is otherwise indicated that - extra security should be used. When this is set the dynamic linker - and some functions contained in the C library ignore various - environment variables that normally affect them. */ -extern int __libc_enable_secure; - + __result; })) #endif #if defined __USE_POSIX199309 || defined __USE_UNIX98 /* Synchronize at least the data part of a file with the underlying media. */ -extern int fdatasync __P ((int __fildes)); +extern int fdatasync (int __fildes) __THROW; #endif /* Use POSIX199309 */ @@ -953,36 +947,27 @@ extern int fdatasync __P ((int __fildes)); be defined here. */ #ifdef __USE_XOPEN /* Encrypt at most 8 characters from KEY using salt to perturb DES. */ -extern char *crypt __P ((__const char *__key, __const char *__salt)); - -/* Setup DES tables according KEY. */ -extern void setkey __P ((__const char *__key)); +extern char *crypt (__const char *__key, __const char *__salt) __THROW; /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ -extern void encrypt __P ((char *__block, int __edflag)); +extern void encrypt (char *__block, int __edflag) __THROW; /* Swab pairs bytes in the first N bytes of the area pointed to by FROM and copy the result to TO. The value of TO must not be in the range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM is without partner. */ -extern void swab __P ((__const __ptr_t __from, __ptr_t __to, ssize_t __n)); +extern void swab (__const void *__restrict __from, void *__restrict __to, + ssize_t __n) __THROW; #endif -/* The Single Unix specification, version 2, demands these prototypes - to be here. They are also found in <stdio.h>. */ +/* The Single Unix specification demands this prototype to be here. + It is also found in <stdio.h>. */ #ifdef __USE_XOPEN /* Return the name of the controlling terminal. */ -extern char *ctermid __P ((char *__s)); - -/* Return the name of the current user. This function should not be - used and might go away some time. */ -extern char *cuserid __P ((char *__s)); - -/* Rename file OLD to NEW. */ -extern int rename __P ((__const char *__old, __const char *__new)); +extern char *ctermid (char *__s) __THROW; #endif @@ -999,9 +984,9 @@ extern int rename __P ((__const char *__old, __const char *__new)); handlers are called in LIFO order (last added with PTHREAD_ATFORK, first called before FORK), and the PARENT and CHILD handlers are called in FIFO (first added, first called). */ -extern int pthread_atfork __P ((void (*__prepare) (void), - void (*__parent) (void), - void (*__child) (void))); +extern int pthread_atfork (void (*__prepare) (void), + void (*__parent) (void), + void (*__child) (void)) __THROW; #endif __END_DECLS diff --git a/include/utime.h b/include/utime.h index d2e42b275..068769649 100644 --- a/include/utime.h +++ b/include/utime.h @@ -1,19 +1,51 @@ -#ifndef __UTIME_H -#define __UTIME_H +/* Copyright (C) 1991, 92, 96, 97, 98, 99 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* + * POSIX Standard: 5.6.6 Set File Access and Modification Times <utime.h> + */ + +#ifndef _UTIME_H +#define _UTIME_H 1 #include <features.h> -#include <sys/types.h> __BEGIN_DECLS -struct utimbuf { - time_t actime; - time_t modtime; -}; +#include <bits/types.h> -extern int utime __P ((const char *__filename, struct utimbuf *__utimebuf)); +#ifdef __USE_XOPEN +# define __need_time_t +# include <time.h> +#endif -__END_DECLS +/* Structure describing file times. */ +struct utimbuf + { + __time_t actime; /* Access time. */ + __time_t modtime; /* Modification time. */ + }; -#endif +/* Set the access and modification times of FILE to those given in + *FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */ +extern int utime (__const char *__file, + __const struct utimbuf *__file_times) __THROW; + +__END_DECLS +#endif /* utime.h */ diff --git a/include/utmp.h b/include/utmp.h index a9d5f53eb..64b10889b 100644 --- a/include/utmp.h +++ b/include/utmp.h @@ -1,60 +1,97 @@ -/* utmp.h */ +/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#ifndef __UTMP_H -#define __UTMP_H + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _UTMP_H +#define _UTMP_H 1 #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 +__BEGIN_DECLS -#define INIT_PROCESS 5 -#define LOGIN_PROCESS 6 -#define USER_PROCESS 7 -#define DEAD_PROCESS 8 +/* Get system dependent values and data structures. */ +#include <bits/utmp.h> -__BEGIN_DECLS +/* Compatibility names for the strings of the canonical file names. */ +#define UTMP_FILE _PATH_UTMP +#define UTMP_FILENAME _PATH_UTMP +#define WTMP_FILE _PATH_WTMP +#define WTMP_FILENAME _PATH_WTMP -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 */ -#define ut_name ut_user /* Backwards compatibility hack */ - 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)); -extern int login_tty (int __fd); -extern void login (const struct utmp *entry); -extern void logwtmp (const char *line, const char *name, const char *host); - -#ifdef _LIBC -struct utmp * __getutent __P ((int)); -#endif -__END_DECLS -#endif /* __UTMP_H */ +/* Make FD be the controlling terminal, stdin, stdout, and stderr; + then close FD. Returns 0 on success, nonzero on error. */ +extern int login_tty (int __fd) __THROW; + + +/* Write the given entry into utmp and wtmp. */ +extern void login (__const struct utmp *__entry) __THROW; + +/* Write the utmp entry to say the user on UT_LINE has logged out. */ +extern int logout (__const char *__ut_line) __THROW; + +/* Append to wtmp an entry for the current time and the given info. */ +extern void logwtmp (__const char *__ut_line, __const char *__ut_name, + __const char *__ut_host) __THROW; + +/* Append entry UTMP to the wtmp-like file WTMP_FILE. */ +extern void updwtmp (__const char *__wtmp_file, __const struct utmp *__utmp) + __THROW; + +/* Change name of the utmp file to be examined. */ +extern int utmpname (__const char *__file) __THROW; + +/* Read next entry from a utmp-like file. */ +extern struct utmp *getutent (void) __THROW; + +/* Reset the input stream to the beginning of the file. */ +extern void setutent (void) __THROW; + +/* Close the current open file. */ +extern void endutent (void) __THROW; + +/* Search forward from the current point in the utmp file until the + next entry with a ut_type matching ID->ut_type. */ +extern struct utmp *getutid (__const struct utmp *__id) __THROW; + +/* Search forward from the current point in the utmp file until the + next entry with a ut_line matching LINE->ut_line. */ +extern struct utmp *getutline (__const struct utmp *__line) __THROW; + +/* Write out entry pointed to by UTMP_PTR into the utmp file. */ +extern struct utmp *pututline (__const struct utmp *__utmp_ptr) __THROW; + + +#ifdef __USE_MISC +/* Reentrant versions of the file for handling utmp files. */ +extern int getutent_r (struct utmp *__buffer, struct utmp **__result) __THROW; + +extern int getutid_r (__const struct utmp *__id, struct utmp *__buffer, + struct utmp **__result) __THROW; + +extern int getutline_r (__const struct utmp *__line, + struct utmp *__buffer, struct utmp **__result) __THROW; + +#endif /* Use misc. */ + +__END_DECLS +#endif /* utmp.h */ diff --git a/include/va-sh.h b/include/va-sh.h deleted file mode 100644 index d891c171f..000000000 --- a/include/va-sh.h +++ /dev/null @@ -1,202 +0,0 @@ -/* This is just like the default gvarargs.h - except for differences described below. */ - -/* Define __gnuc_va_list. */ - -#ifndef __GNUC_VA_LIST -#define __GNUC_VA_LIST - -#ifdef __SH3E__ - -typedef long __va_greg; -typedef double __va_freg; - -typedef struct { - __va_greg * __va_next_o; /* next available register */ - __va_greg * __va_next_o_limit; /* past last available register */ - __va_freg * __va_next_fp; /* next available fp register */ - __va_freg * __va_next_fp_limit; /* last available fp register */ - __va_greg * __va_next_stack; /* next extended word on stack */ -} __gnuc_va_list; - -#else /* ! SH3E */ - -typedef void *__gnuc_va_list; - -#endif /* ! SH3E */ - -#endif /* __GNUC_VA_LIST */ - -/* If this is for internal libc use, don't define anything but - __gnuc_va_list. */ -#if defined (_STDARG_H) || defined (_VARARGS_H) - -#ifdef _STDARG_H - -#ifdef __SH3E__ - -#define va_start(AP, LASTARG) \ -__extension__ \ - ({ \ - AP.__va_next_fp = (__va_freg *) __builtin_saveregs (); \ - AP.__va_next_fp_limit = (AP.__va_next_fp + \ - (__builtin_args_info (1) < 8 ? 8 - __builtin_args_info (1) : 0)); \ - AP.__va_next_o = (__va_greg *) AP.__va_next_fp_limit; \ - AP.__va_next_o_limit = (AP.__va_next_o + \ - (__builtin_args_info (0) < 4 ? 4 - __builtin_args_info (0) : 0)); \ - AP.__va_next_stack = (__va_greg *) __builtin_next_arg (LASTARG); \ - }) - -#else /* ! SH3E */ - -#define va_start(AP, LASTARG) \ -do { \ - __builtin_saveregs();\ - (AP = ((__gnuc_va_list) __builtin_next_arg (LASTARG))); \ -} while (0) - -#endif /* ! SH3E */ - -#else /* _VARARGS_H */ - -#define va_alist __builtin_va_alist -#define va_dcl int __builtin_va_alist;... - -#ifdef __SH3E__ - -#define va_start(AP) \ -__extension__ \ - ({ \ - AP.__va_next_fp = (__va_freg *) __builtin_saveregs (); \ - AP.__va_next_fp_limit = (AP.__va_next_fp + \ - (__builtin_args_info (1) < 8 ? 8 - __builtin_args_info (1) : 0)); \ - AP.__va_next_o = (__va_greg *) AP.__va_next_fp_limit; \ - AP.__va_next_o_limit = (AP.__va_next_o + \ - (__builtin_args_info (0) < 4 ? 4 - __builtin_args_info (0) : 0)); \ - AP.__va_next_stack = (__va_greg *) __builtin_next_arg (__builtin_va_alist) \ - - (__builtin_args_info (0) >= 4 || __builtin_args_info (1) >= 8 ? 1 : 0); \ - }) - -#else /* ! SH3E */ - -#define va_start(AP) AP=(char *) &__builtin_va_alist - -#endif /* ! SH3E */ - -#endif /* _STDARG */ - -#ifndef va_end -void va_end (__gnuc_va_list); /* Defined in libgcc.a */ - -/* Values returned by __builtin_classify_type. */ - -enum __va_type_classes { - __no_type_class = -1, - __void_type_class, - __integer_type_class, - __char_type_class, - __enumeral_type_class, - __boolean_type_class, - __pointer_type_class, - __reference_type_class, - __offset_type_class, - __real_type_class, - __complex_type_class, - __function_type_class, - __method_type_class, - __record_type_class, - __union_type_class, - __array_type_class, - __string_type_class, - __set_type_class, - __file_type_class, - __lang_type_class -}; - -#endif -#define va_end(pvar) ((void)0) - -#ifdef __LITTLE_ENDIAN__ -#define __LITTLE_ENDIAN_P 1 -#else -#define __LITTLE_ENDIAN_P 0 -#endif - -#define __SCALAR_TYPE(TYPE) \ - ((TYPE) == __integer_type_class \ - || (TYPE) == __char_type_class \ - || (TYPE) == __enumeral_type_class) - -/* RECORD_TYPE args passed using the C calling convention are - passed by invisible reference. ??? RECORD_TYPE args passed - in the stack are made to be word-aligned; for an aggregate that is - not word-aligned, we advance the pointer to the first non-reg slot. */ - - /* When this is a smaller-than-int integer, using - auto-increment in the promoted (SImode) is fastest; - however, there is no way to express that is C. Therefore, - we use an asm. - We want the MEM_IN_STRUCT_P bit set in the emitted RTL, therefore we - use unions even when it would otherwise be unnecessary. */ - -#define __va_arg_sh1(AP, TYPE) __extension__ \ -__extension__ \ -({(sizeof (TYPE) == 1 \ - ? ({union {TYPE t; char c;} __t; \ - __asm("" \ - : "=r" (__t.c) \ - : "0" ((((union { int i, j; } *) (AP))++)->i)); \ - __t.t;}) \ - : sizeof (TYPE) == 2 \ - ? ({union {TYPE t; short s;} __t; \ - __asm("" \ - : "=r" (__t.s) \ - : "0" ((((union { int i, j; } *) (AP))++)->i)); \ - __t.t;}) \ - : sizeof (TYPE) >= 4 || __LITTLE_ENDIAN_P \ - ? (((union { TYPE t; int i;} *) (AP))++)->t \ - : ((union {TYPE t;TYPE u;}*) ((char *)++(int *)(AP) - sizeof (TYPE)))->t);}) - -#ifdef __SH3E__ - -#define __PASS_AS_FLOAT(TYPE_CLASS,SIZE) \ - (TYPE_CLASS == __real_type_class && SIZE == 4) - -#define va_arg(pvar,TYPE) \ -__extension__ \ -({int __type = __builtin_classify_type (* (TYPE *) 0); \ - void * __result_p; \ - if (__PASS_AS_FLOAT (__type, sizeof(TYPE))) \ - { \ - if (pvar.__va_next_fp < pvar.__va_next_fp_limit) \ - { \ - __result_p = &pvar.__va_next_fp; \ - } \ - else \ - __result_p = &pvar.__va_next_stack; \ - } \ - else \ - { \ - if (pvar.__va_next_o + ((sizeof (TYPE) + 3) / 4) \ - <= pvar.__va_next_o_limit) \ - __result_p = &pvar.__va_next_o; \ - else \ - { \ - if (sizeof (TYPE) > 4) \ - pvar.__va_next_o = pvar.__va_next_o_limit; \ - \ - __result_p = &pvar.__va_next_stack; \ - } \ - } \ - __va_arg_sh1(*(void **)__result_p, TYPE);}) - -#else /* ! SH3E */ - -#define va_arg(AP, TYPE) __va_arg_sh1((AP), TYPE) - -#endif /* SH3E */ - -/* Copy __gnuc_va_list into another variable of this type. */ -#define __va_copy(dest, src) (dest) = (src) - -#endif /* defined (_STDARG_H) || defined (_VARARGS_H) */ diff --git a/include/wait.h b/include/wait.h index cdb77149f..d01b81125 100644 --- a/include/wait.h +++ b/include/wait.h @@ -1,3 +1 @@ -/* SVR4 ABI requires <wait.h> rather than <sys/wait.h> */ - #include <sys/wait.h> |