]> granicus.if.org Git - libtirpc/commitdiff
Add xdr_int8_t() and xdr_u_int8_t()
authorChuck Lever <chuck.lever@oracle.com>
Mon, 9 Dec 2013 16:13:03 +0000 (11:13 -0500)
committerSteve Dickson <steved@redhat.com>
Mon, 9 Dec 2013 16:19:09 +0000 (11:19 -0500)
The legacy RPC implementation in glibc has XDR functions for 8-bit
integers.  For glibc compatibility, introduce similar functions in
libtirpc.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
src/xdr.c
tirpc/rpc/xdr.h

index fb31f5442ba8d233f14c2a7dafe9539f5e4bed63..221f31ebdf88a3d1a53a6087668e4cf443c2fd32 100644 (file)
--- a/src/xdr.c
+++ b/src/xdr.c
@@ -376,6 +376,68 @@ xdr_u_int16_t(xdrs, u_int16_p)
 }
 
 
+/*
+ * XDR 8-bit integers
+ */
+bool_t
+xdr_int8_t(xdrs, int8_p)
+       XDR *xdrs;
+       int8_t *int8_p;
+{
+       long l;
+
+       switch (xdrs->x_op) {
+
+       case XDR_ENCODE:
+               l = (long) *int8_p;
+               return (XDR_PUTLONG(xdrs, &l));
+
+       case XDR_DECODE:
+               if (!XDR_GETLONG(xdrs, &l)) {
+                       return (FALSE);
+               }
+               *int8_p = (int8_t) l;
+               return (TRUE);
+
+       case XDR_FREE:
+               return (TRUE);
+       }
+       /* NOTREACHED */
+       return (FALSE);
+}
+
+
+/*
+ * XDR unsigned 8-bit integers
+ */
+bool_t
+xdr_u_int8_t(xdrs, uint8_p)
+       XDR *xdrs;
+       uint8_t *uint8_p;
+{
+       u_long l;
+
+       switch (xdrs->x_op) {
+
+       case XDR_ENCODE:
+               l = (u_long) *uint8_p;
+               return (XDR_PUTLONG(xdrs, (long *)&l));
+
+       case XDR_DECODE:
+               if (!XDR_GETLONG(xdrs, (long *)&l)) {
+                       return (FALSE);
+               }
+               *uint8_p = (uint8_t) l;
+               return (TRUE);
+
+       case XDR_FREE:
+               return (TRUE);
+       }
+       /* NOTREACHED */
+       return (FALSE);
+}
+
+
 /*
  * XDR a char
  */
index 2c2a860b5238efba758f2fc938fa8f25b2e27653..8518e9147fe8ef8a654c408ef1f94c143b9aaaed 100644 (file)
@@ -295,6 +295,8 @@ extern bool_t       xdr_long(XDR *, long *);
 extern bool_t  xdr_u_long(XDR *, u_long *);
 extern bool_t  xdr_short(XDR *, short *);
 extern bool_t  xdr_u_short(XDR *, u_short *);
+extern bool_t  xdr_int8_t(XDR *, int8_t *);
+extern bool_t  xdr_u_int8_t(XDR *, uint8_t *);
 extern bool_t  xdr_int16_t(XDR *, int16_t *);
 extern bool_t  xdr_u_int16_t(XDR *, u_int16_t *);
 extern bool_t  xdr_int32_t(XDR *, int32_t *);