summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-11-30 16:42:19 +0000
committerUlrich Drepper <drepper@redhat.com>1998-11-30 16:42:19 +0000
commit5713a71e1aeb46a2f9774b7a17c4236fca1cab02 (patch)
tree85be2eb29c0018dc78d16e5dff9ab1edb4b4369a
parent348ed5157bb4b6ef0e38f18ab8fd8d9910544e6e (diff)
Update.
1998-11-29 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * sunrpc/Makefile: Add xdr_intXX_t to routines. * sunrpc/Versions: Add xdr_int8_t, xdr_uint8_t, xdr_in16_t and xdr_uint16_t. * sunrpc/rpc/xdr.h: Add prototypes for new xdr_intXX_t functions. * sunrpc/xdr.c: Remove xdr_int32_t and xdr_uint32_t. * sunrpc/xdr_intXX_t.c: New, contains all xdr_intXX_t functions. * nis/Depend: New. * nis/nss_nis/nis-service.c: Include generated prototype for parser.
-rw-r--r--ChangeLog12
-rw-r--r--INSTALL19
-rw-r--r--manual/install.texi16
-rw-r--r--nis/Depend1
-rw-r--r--nis/nss_nis/nis-service.c11
-rw-r--r--sunrpc/Makefile2
-rw-r--r--sunrpc/Versions6
-rw-r--r--sunrpc/rpc/xdr.h8
-rw-r--r--sunrpc/xdr.c39
-rw-r--r--sunrpc/xdr_intXX_t.c147
10 files changed, 204 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index 180ccd4347..7d21b59b98 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+1998-11-29 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
+
+ * sunrpc/Makefile: Add xdr_intXX_t to routines.
+ * sunrpc/Versions: Add xdr_int8_t, xdr_uint8_t, xdr_in16_t and
+ xdr_uint16_t.
+ * sunrpc/rpc/xdr.h: Add prototypes for new xdr_intXX_t functions.
+ * sunrpc/xdr.c: Remove xdr_int32_t and xdr_uint32_t.
+ * sunrpc/xdr_intXX_t.c: New, contains all xdr_intXX_t functions.
+
+ * nis/Depend: New.
+ * nis/nss_nis/nis-service.c: Include generated prototype for parser.
+
1998-11-30 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nscd/nscd_getpw_r.c: Include nscd_proto.h for prototypes.
diff --git a/INSTALL b/INSTALL
index 410c21cb68..276750a833 100644
--- a/INSTALL
+++ b/INSTALL
@@ -247,7 +247,7 @@ build the GNU C library:
bugs which only show up in big projects like GNU `libc'. Version
3.76.1 seems OK but some people have reported problems.
- * EGCS 1.1 or 1.0.3
+ * EGCS 1.1.1, 1.1 or 1.0.3
The GNU C library can only be compiled with the GNU C compiler
family. We recommend EGCS 1.0.3 or higher. GCC 2.8.1 and older
@@ -257,7 +257,13 @@ build the GNU C library:
libc, but you may have problems, particularly with the math
functions.)
- * GNU `binutils' 2.8.1.0.23, 2.9.1, or 2.9.0.15
+ On Alpha machines you need at least EGCS 1.1.1. Earlier versions
+ don't work reliably.
+
+ For PPC you might need some patches even on top of the last EGCS
+ version. See the FAQ.
+
+ * GNU `binutils' 2.9.1, or 2.9.1.0.16
You must use GNU binutils (as and ld) if you want to build a shared
library. Even if you don't, we recommend you use them anyway. No
@@ -265,8 +271,12 @@ build the GNU C library:
The quality of binutils releases has varied a bit recently. The
bugs are in obscure features, but glibc uses quite a few of those.
- 2.8.1.0.23, 2.9.1, and 2.9.0.15 are known to work. Versions after
- 2.8.1.0.23 may or may not work. Older versions definitely don't.
+ 2.9.1 and 2.9.1.0.16 are known to work. Versions after 2.8.1.0.23
+ may or may not work. Older versions definitely don't. 2.9.1.0.16
+ is required on some platforms, like PPC and Arm.
+
+ For PPC you might need some patches even on top of the last
+ binutils version. See the FAQ.
* GNU `texinfo' 3.11
@@ -305,6 +315,7 @@ Supported Configurations
following patterns:
alpha-*-linux
+ arm-*-linux
arm-*-linuxaout
arm-*-none
iX86-*-gnu
diff --git a/manual/install.texi b/manual/install.texi
index 0348a23525..0bc0be3ef3 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -277,7 +277,7 @@ have bugs which only show up in big projects like GNU @code{libc}.
Version 3.76.1 seems OK but some people have reported problems.
@item
-EGCS 1.1 or 1.0.3
+EGCS 1.1.1, 1.1 or 1.0.3
The GNU C library can only be compiled with the GNU C compiler family.
We recommend EGCS 1.0.3 or higher. GCC 2.8.1 and older versions of EGCS
@@ -286,8 +286,14 @@ has catastrophic bugs and cannot be used at all. (You can use GCC 2.7.x
to compile programs that use GNU libc, but you may have problems,
particularly with the math functions.)
+On Alpha machines you need at least EGCS 1.1.1. Earlier versions don't
+work reliably.
+
+For PPC you might need some patches even on top of the last EGCS version.
+See the FAQ.
+
@item
-GNU @code{binutils} 2.8.1.0.23, 2.9.1, or 2.9.0.15
+GNU @code{binutils} 2.9.1, or 2.9.1.0.16
You must use GNU binutils (as and ld) if you want to build a shared
library. Even if you don't, we recommend you use them anyway. No one
@@ -295,8 +301,12 @@ has tested compilation with non-GNU binutils in a long time.
The quality of binutils releases has varied a bit recently. The bugs
are in obscure features, but glibc uses quite a few of those.
-2.8.1.0.23, 2.9.1, and 2.9.0.15 are known to work. Versions after
+2.9.1 and 2.9.1.0.16 are known to work. Versions after
2.8.1.0.23 may or may not work. Older versions definitely don't.
+2.9.1.0.16 is required on some platforms, like PPC and Arm.
+
+For PPC you might need some patches even on top of the last binutils
+version. See the FAQ.
@item
GNU @code{texinfo} 3.11
diff --git a/nis/Depend b/nis/Depend
new file mode 100644
index 0000000000..5eb2ea41b9
--- /dev/null
+++ b/nis/Depend
@@ -0,0 +1 @@
+nss
diff --git a/nis/nss_nis/nis-service.c b/nis/nss_nis/nis-service.c
index fac62a9679..91bd65b22a 100644
--- a/nis/nss_nis/nis-service.c
+++ b/nis/nss_nis/nis-service.c
@@ -29,10 +29,10 @@
#include "nss-nis.h"
-/* The parser is defined in a different module. */
-extern int _nss_files_parse_servent (char *line, struct servent *result,
- char *data, size_t datalen, int *errnop);
-
+/* Get the declaration of the parser function. */
+#define ENTNAME servent
+#define EXTERN_PARSER
+#include <nss/nss_files/files-parse.c>
__libc_lock_define_initialized (static, lock)
@@ -156,6 +156,7 @@ static enum nss_status
internal_nis_getservent_r (struct servent *serv, char *buffer,
size_t buflen, int *errnop, intern_t *data)
{
+ struct parser_data *pdata = (void *) buffer;
int parse_res;
char *p;
@@ -174,7 +175,7 @@ internal_nis_getservent_r (struct servent *serv, char *buffer,
while (isspace (*p))
++p;
- parse_res = _nss_files_parse_servent (p, serv, buffer, buflen, errnop);
+ parse_res = _nss_files_parse_servent (p, serv, pdata, buflen, errnop);
if (parse_res == -1)
return NSS_STATUS_TRYAGAIN;
data->next = data->next->next;
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index 0a327ea4f7..5ab9fb5941 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -67,7 +67,7 @@ routines := auth_none auth_unix authuxprot bindrsvprt \
xdr_rec xdr_ref xdr_stdio publickey xdr_sizeof \
auth_des authdes_prot des_crypt des_impl des_soft \
key_call key_prot netname openchild rtime svcauth_des xcrypt\
- clnt_unix svc_unix create_xid
+ clnt_unix svc_unix create_xid xdr_intXX_t
others := rpcinfo
install-bin := rpcgen
diff --git a/sunrpc/Versions b/sunrpc/Versions
index b840939a04..e1a74aedfd 100644
--- a/sunrpc/Versions
+++ b/sunrpc/Versions
@@ -96,8 +96,8 @@ libc {
# x*
xdecrypt; xdr_authdes_cred; xdr_authdes_verf;
xdr_cryptkeyarg; xdr_cryptkeyarg2; xdr_cryptkeyres; xdr_des_block;
- xdr_getcredres; xdr_int32_t; xdr_key_netstarg; xdr_key_netstres;
- xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; xdr_uint32_t;
- xdr_unixcred;
+ xdr_getcredres; xdr_int16_t; xdr_int32_t; xdr_int8_t; xdr_key_netstarg;
+ xdr_key_netstres; xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof;
+ xdr_uint16_t; xdr_uint32_t; xdr_uint8_t; xdr_unixcred;
}
}
diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h
index fe72abb7d8..dd9959aa5e 100644
--- a/sunrpc/rpc/xdr.h
+++ b/sunrpc/rpc/xdr.h
@@ -271,12 +271,16 @@ struct xdr_discrim
extern bool_t xdr_void __P ((void));
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_int32_t __P ((XDR *__xdrs, int32_t *__ip));
-extern bool_t xdr_uint32_t __P ((XDR *__xdrs, uint32_t *__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_short __P ((XDR *__xdrs, short *__sp));
extern bool_t xdr_u_short __P ((XDR *__xdrs, u_short *__usp));
+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_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,
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index 0e3e5fc63a..57552c4427 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -152,45 +152,6 @@ xdr_u_int (XDR *xdrs, u_int *up)
}
/*
- * XDR 32bit integers
- */
-bool_t
-xdr_int32_t (XDR *xdrs, int32_t *lp)
-{
-
- if (xdrs->x_op == XDR_ENCODE)
- return XDR_PUTINT32 (xdrs, lp);
-
- if (xdrs->x_op == XDR_DECODE)
- return XDR_GETINT32 (xdrs, lp);
-
- if (xdrs->x_op == XDR_FREE)
- return TRUE;
-
- return FALSE;
-}
-
-/*
- * XDR 32bit unsigned integers
- */
-bool_t
-xdr_uint32_t (XDR *xdrs, uint32_t *ulp)
-{
- switch (xdrs->x_op)
- {
- case XDR_DECODE:
- return XDR_GETINT32 (xdrs, (uint32_t *) ulp);
-
- case XDR_ENCODE:
- return XDR_PUTINT32 (xdrs, (uint32_t *) ulp);
-
- case XDR_FREE:
- return TRUE;
- }
- return FALSE;
-}
-
-/*
* XDR long integers
* same as xdr_u_long - open coded to save a proc call!
*/
diff --git a/sunrpc/xdr_intXX_t.c b/sunrpc/xdr_intXX_t.c
new file mode 100644
index 0000000000..98132cd802
--- /dev/null
+++ b/sunrpc/xdr_intXX_t.c
@@ -0,0 +1,147 @@
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <rpc/types.h>
+#include <rpc/xdr.h>
+
+/* XDR 32bit integers */
+bool_t
+xdr_int32_t (XDR *xdrs, int32_t *lp)
+{
+ switch (xdrs->x_op)
+ {
+ case XDR_ENCODE:
+ return XDR_PUTINT32 (xdrs, lp);
+ case XDR_DECODE:
+ return XDR_GETINT32 (xdrs, lp);
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+/* XDR 32bit unsigned integers */
+bool_t
+xdr_uint32_t (XDR *xdrs, uint32_t *ulp)
+{
+ switch (xdrs->x_op)
+ {
+ case XDR_DECODE:
+ return XDR_GETINT32 (xdrs, (int32_t *) ulp);
+ case XDR_ENCODE:
+ return XDR_PUTINT32 (xdrs, (int32_t *) ulp);
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+/* XDR 16bit integers */
+bool_t
+xdr_int16_t (XDR *xdrs, int16_t *ip)
+{
+ int32_t t;
+
+ switch (xdrs->x_op)
+ {
+ case XDR_ENCODE:
+ t = (int32_t) *ip;
+ return XDR_PUTINT32 (xdrs, &t);
+ case XDR_DECODE:
+ if (!XDR_GETINT32 (xdrs, &t))
+ return FALSE;
+ *ip = (int16_t) t;
+ return TRUE;
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+/* XDR 16bit unsigned integers */
+bool_t
+xdr_uint16_t (XDR *xdrs, uint16_t *uip)
+{
+ uint32_t ut;
+
+ switch (xdrs->x_op)
+ {
+ case XDR_DECODE:
+ ut = (uint32_t) *uip;
+ return XDR_GETINT32 (xdrs, (int32_t *) &ut);
+ case XDR_ENCODE:
+ if (!XDR_PUTINT32 (xdrs, (int32_t *) &ut))
+ return FALSE;
+ *uip = (uint16_t) ut;
+ return TRUE;
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+/* XDR 8bit integers */
+bool_t
+xdr_int8_t (XDR *xdrs, int8_t *ip)
+{
+ int32_t t;
+
+ switch (xdrs->x_op)
+ {
+ case XDR_ENCODE:
+ t = (int32_t) *ip;
+ return XDR_PUTINT32 (xdrs, &t);
+ case XDR_DECODE:
+ if (!XDR_GETINT32 (xdrs, &t))
+ return FALSE;
+ *ip = (int8_t) t;
+ return TRUE;
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+/* XDR 8bit unsigned integers */
+bool_t
+xdr_uint8_t (XDR *xdrs, uint8_t *uip)
+{
+ uint32_t ut;
+
+ switch (xdrs->x_op)
+ {
+ case XDR_DECODE:
+ ut = (uint32_t) *uip;
+ return XDR_GETINT32 (xdrs, (int32_t *) &ut);
+ case XDR_ENCODE:
+ if (!XDR_PUTINT32 (xdrs, (int32_t *) &ut))
+ return FALSE;
+ *uip = (uint8_t) ut;
+ return TRUE;
+ case XDR_FREE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}