+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.
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
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
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
following patterns:
alpha-*-linux
+ arm-*-linux
arm-*-linuxaout
arm-*-none
iX86-*-gnu
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
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
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
#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)
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;
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;
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
# 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;
}
}
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,
}
/*
- * 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!
*/
--- /dev/null
+/* 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;
+ }
+}