about summary refs log tree commit diff
path: root/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc')
-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
5 files changed, 157 insertions, 45 deletions
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;
+    }
+}