Label elements of rx structures
[openafs.git] / src / rx / xdr_mem.c
index 903db68..eeffd76 100644 (file)
@@ -29,7 +29,6 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header$");
 
 #ifndef        NeXT
 
@@ -47,106 +46,125 @@ RCSID("$Header$");
 #include "xdr.h"
 #ifndef AFS_NT40_ENV
 #include <netinet/in.h>
+#else
+#include <limits.h>
 #endif
 
-static bool_t  xdrmem_getint32();
-static bool_t  xdrmem_putint32();
-static bool_t  xdrmem_getbytes();
-static bool_t  xdrmem_putbytes();
-static u_int   xdrmem_getpos();
-static bool_t  xdrmem_setpos();
-static afs_int32 *     xdrmem_inline();
-static void    xdrmem_destroy();
-
-static struct  xdr_ops xdrmem_ops = {
-       xdrmem_getint32,
-       xdrmem_putint32,
-       xdrmem_getbytes,
-       xdrmem_putbytes,
-       xdrmem_getpos,
-       xdrmem_setpos,
-       xdrmem_inline,
-       xdrmem_destroy
+static bool_t xdrmem_getint32();
+static bool_t xdrmem_putint32();
+static bool_t xdrmem_getbytes();
+static bool_t xdrmem_putbytes();
+static u_int xdrmem_getpos();
+static bool_t xdrmem_setpos();
+static afs_int32 *xdrmem_inline();
+static void xdrmem_destroy();
+
+static struct xdr_ops xdrmem_ops = {
+    .x_getint32 = xdrmem_getint32,
+    .x_putint32 = xdrmem_putint32,
+    .x_getbytes = xdrmem_getbytes,
+    .x_putbytes = xdrmem_putbytes,
+    .x_getpos = xdrmem_getpos,
+    .x_setpos = xdrmem_setpos,
+    .x_inline = xdrmem_inline,
+    .x_destroy = xdrmem_destroy
 };
 
 /*
  * The procedure xdrmem_create initializes a stream descriptor for a
  * memory buffer.  
  */
-void xdrmem_create(register XDR *xdrs, caddr_t addr, u_int size, enum xdr_op op)
+void
+xdrmem_create(XDR * xdrs, caddr_t addr, u_int size, enum xdr_op op)
 {
-       xdrs->x_op = op;
-       xdrs->x_ops = &xdrmem_ops;
-       xdrs->x_private = xdrs->x_base = addr;
-       xdrs->x_handy = size;
+    xdrs->x_op = op;
+    xdrs->x_ops = &xdrmem_ops;
+    xdrs->x_private = xdrs->x_base = addr;
+    xdrs->x_handy = (size > INT_MAX) ? INT_MAX : size; /* XXX */
 }
 
-static void xdrmem_destroy(void)
+static void
+xdrmem_destroy(void)
 {
 }
 
-static bool_t xdrmem_getint32(register XDR *xdrs, afs_int32 *lp)
+static bool_t
+xdrmem_getint32(XDR * xdrs, afs_int32 * lp)
 {
-       if ((xdrs->x_handy -= sizeof(afs_int32)) < 0)
-               return (FALSE);
-       *lp = ntohl(*((afs_int32 *)(xdrs->x_private)));
-       xdrs->x_private += sizeof(afs_int32);
-       return (TRUE);
+    if (xdrs->x_handy < sizeof(afs_int32))
+       return (FALSE);
+    else
+       xdrs->x_handy -= sizeof(afs_int32);
+    *lp = ntohl(*((afs_int32 *) (xdrs->x_private)));
+    xdrs->x_private += sizeof(afs_int32);
+    return (TRUE);
 }
 
-static bool_t xdrmem_putint32(register XDR *xdrs, afs_int32 *lp)
+static bool_t
+xdrmem_putint32(XDR * xdrs, afs_int32 * lp)
 {
-       if ((xdrs->x_handy -= sizeof(afs_int32)) < 0)
-               return (FALSE);
-       *(afs_int32 *)xdrs->x_private = htonl(*lp);
-       xdrs->x_private += sizeof(afs_int32);
-       return (TRUE);
+    if (xdrs->x_handy < sizeof(afs_int32))
+       return (FALSE);
+    else
+       xdrs->x_handy -= sizeof(afs_int32);
+    *(afs_int32 *) xdrs->x_private = htonl(*lp);
+    xdrs->x_private += sizeof(afs_int32);
+    return (TRUE);
 }
 
-static bool_t xdrmem_getbytes(register XDR *xdrs, caddr_t addr, register u_int len)
+static bool_t
+xdrmem_getbytes(XDR * xdrs, caddr_t addr, u_int len)
 {
-       if ((xdrs->x_handy -= len) < 0)
-               return (FALSE);
-       memcpy(addr, xdrs->x_private, len);
-       xdrs->x_private += len;
-       return (TRUE);
+    if (xdrs->x_handy < len)
+       return (FALSE);
+    else
+       xdrs->x_handy -= len;
+    memcpy(addr, xdrs->x_private, len);
+    xdrs->x_private += len;
+    return (TRUE);
 }
 
-static bool_t xdrmem_putbytes(register XDR *xdrs, caddr_t addr, register u_int len)
+static bool_t
+xdrmem_putbytes(XDR * xdrs, caddr_t addr, u_int len)
 {
-       if ((xdrs->x_handy -= len) < 0)
-               return (FALSE);
-       memcpy(xdrs->x_private, addr, len);
-       xdrs->x_private += len;
-       return (TRUE);
+    if (xdrs->x_handy < len)
+       return (FALSE);
+    else
+       xdrs->x_handy -= len;
+    memcpy(xdrs->x_private, addr, len);
+    xdrs->x_private += len;
+    return (TRUE);
 }
 
-static u_int xdrmem_getpos(register XDR *xdrs)
+static u_int
+xdrmem_getpos(XDR * xdrs)
 {
-       return ((u_int)xdrs->x_private - (u_int)xdrs->x_base);
+    return ((u_int)(xdrs->x_private - xdrs->x_base));
 }
 
-static bool_t xdrmem_setpos(register XDR *xdrs, u_int pos)
+static bool_t
+xdrmem_setpos(XDR * xdrs, u_int pos)
 {
-       register caddr_t newaddr = xdrs->x_base + pos;
-       register caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
-
-       if ((afs_int32)newaddr > (afs_int32)lastaddr)
-               return (FALSE);
-       xdrs->x_private = newaddr;
-       xdrs->x_handy = (int)lastaddr - (int)newaddr;
-       return (TRUE);
+    caddr_t newaddr = xdrs->x_base + pos;
+    caddr_t lastaddr = xdrs->x_private + xdrs->x_handy;
+
+    if (newaddr > lastaddr)
+       return (FALSE);
+    xdrs->x_private = newaddr;
+    xdrs->x_handy = (int)(lastaddr - newaddr);
+    return (TRUE);
 }
 
-static afs_int32 *xdrmem_inline(register XDR *xdrs, int len)
+static afs_int32 *
+xdrmem_inline(XDR * xdrs, int len)
 {
-       afs_int32 *buf = 0;
-
-       if (xdrs->x_handy >= len) {
-               xdrs->x_handy -= len;
-               buf = (afs_int32 *) xdrs->x_private;
-               xdrs->x_private += len;
-       }
-       return (buf);
+    afs_int32 *buf = 0;
+
+    if (len >= 0 && xdrs->x_handy >= len) {
+       xdrs->x_handy -= len;
+       buf = (afs_int32 *) xdrs->x_private;
+       xdrs->x_private += len;
+    }
+    return (buf);
 }
 #endif /* NeXT */