summary refs log tree commit diff
diff options
context:
space:
mode:
-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;
+    }
+}