diff options
author | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-08-19 09:17:55 +0000 |
---|---|---|
committer | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2003-08-19 09:17:55 +0000 |
commit | 88800f8d9b33a053583f9b287acf918d02bbb42c (patch) | |
tree | f07d1a5e1164e7d66deeacabb258bcfff58f37d3 /mdk-stage1/dietlibc/librpc/xdr_mem.c | |
parent | b0f2b0ccd4b2b95c00bdf773907ade413a29adf1 (diff) | |
download | drakx-88800f8d9b33a053583f9b287acf918d02bbb42c.tar drakx-88800f8d9b33a053583f9b287acf918d02bbb42c.tar.gz drakx-88800f8d9b33a053583f9b287acf918d02bbb42c.tar.bz2 drakx-88800f8d9b33a053583f9b287acf918d02bbb42c.tar.xz drakx-88800f8d9b33a053583f9b287acf918d02bbb42c.zip |
64-bit clean RPC code enough to let MDK stage1 do NFS mounts
Diffstat (limited to 'mdk-stage1/dietlibc/librpc/xdr_mem.c')
-rw-r--r-- | mdk-stage1/dietlibc/librpc/xdr_mem.c | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/mdk-stage1/dietlibc/librpc/xdr_mem.c b/mdk-stage1/dietlibc/librpc/xdr_mem.c index 0f137b676..c21121183 100644 --- a/mdk-stage1/dietlibc/librpc/xdr_mem.c +++ b/mdk-stage1/dietlibc/librpc/xdr_mem.c @@ -42,20 +42,20 @@ static char sccsid[] = "@(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro"; * */ - #include <rpc/types.h> #include <rpc/xdr.h> #include <netinet/in.h> #include <string.h> +#include <limits.h> -static bool_t xdrmem_getlong(XDR*, long*); -static bool_t xdrmem_putlong(XDR*, const long*); -static bool_t xdrmem_getbytes(); -static bool_t xdrmem_putbytes(); -static unsigned int xdrmem_getpos(); -static bool_t xdrmem_setpos(); -static int32_t *xdrmem_inline(XDR*, unsigned int); -static void xdrmem_destroy(); +static bool_t xdrmem_getlong (XDR *, long *); +static bool_t xdrmem_putlong (XDR *, const long *); +static bool_t xdrmem_getbytes (XDR *, char *, unsigned int); +static bool_t xdrmem_putbytes (XDR *, const char *, unsigned int); +static unsigned int xdrmem_getpos (const XDR *); +static bool_t xdrmem_setpos (XDR *, unsigned int); +static int32_t *xdrmem_inline (XDR *, unsigned int); +static void xdrmem_destroy (XDR *); static struct xdr_ops xdrmem_ops = { xdrmem_getlong, @@ -73,27 +73,22 @@ static struct xdr_ops xdrmem_ops = { * The procedure xdrmem_create initializes a stream descriptor for a * memory buffer. */ -void xdrmem_create(xdrs, addr, size, op) -register XDR *xdrs; -const char* addr; -unsigned int size; -enum xdr_op op; +void +xdrmem_create (XDR *xdrs, const char* addr, unsigned int size, enum xdr_op op) { - xdrs->x_op = op; xdrs->x_ops = &xdrmem_ops; xdrs->x_private = xdrs->x_base = (char*)addr; xdrs->x_handy = size; } -static void xdrmem_destroy( /*xdrs */ ) - /*XDR *xdrs; */ +static void +xdrmem_destroy (XDR *xdrs) { } -static bool_t xdrmem_getlong(xdrs, lp) -register XDR *xdrs; -long *lp; +static bool_t +xdrmem_getlong (XDR *xdrs, long *lp) { if (xdrs->x_handy < 4) return FALSE; xdrs->x_handy -= 4; @@ -103,18 +98,19 @@ long *lp; return TRUE; } -static bool_t xdrmem_putlong(XDR* xdrs, const long* lp) +static bool_t +xdrmem_putlong (XDR *xdrs, const long *lp) { if (xdrs->x_handy < 4) return FALSE; xdrs->x_handy -= 4; *(int32_t *) xdrs->x_private = htonl(*lp); - xdrs->x_private += sizeof(long); - + xdrs->x_private += 4; return (TRUE); } -static bool_t xdrmem_getbytes(XDR* xdrs, char* addr, unsigned int len) +static bool_t +xdrmem_getbytes (XDR *xdrs, char *addr, unsigned int len) { if (xdrs->x_handy < len) return FALSE; xdrs->x_handy -= len; @@ -123,7 +119,8 @@ static bool_t xdrmem_getbytes(XDR* xdrs, char* addr, unsigned int len) return TRUE; } -static bool_t xdrmem_putbytes(XDR* xdrs, char* addr, unsigned int len) +static bool_t +xdrmem_putbytes (XDR *xdrs, const char *addr, unsigned int len) { if (xdrs->x_handy < len) return FALSE; xdrs->x_handy -= len; @@ -132,11 +129,10 @@ static bool_t xdrmem_putbytes(XDR* xdrs, char* addr, unsigned int len) return (TRUE); } -static unsigned int xdrmem_getpos(xdrs) -register XDR *xdrs; +static unsigned int +xdrmem_getpos (const XDR *xdrs) { - - return ((unsigned int) xdrs->x_private - (unsigned int) xdrs->x_base); + return ((unsigned long) xdrs->x_private - (unsigned long) xdrs->x_base); } static bool_t xdrmem_setpos(xdrs, pos) @@ -146,16 +142,17 @@ unsigned int pos; register char* newaddr = xdrs->x_base + pos; register char* lastaddr = xdrs->x_private + xdrs->x_handy; - if ((long) newaddr > (long) lastaddr || (long)newaddr<(long)xdrs->x_base) + if ((long) newaddr > (long) lastaddr + || (UINT_MAX < LONG_MAX + && (long) UINT_MAX < (long) lastaddr - (long) newaddr)) return (FALSE); xdrs->x_private = newaddr; - xdrs->x_handy = (int) lastaddr - (int) newaddr; + xdrs->x_handy = (long) lastaddr - (long) newaddr; return (TRUE); } -static int32_t *xdrmem_inline(xdrs, len) -register XDR *xdrs; -unsigned int len; +static int32_t * +xdrmem_inline (XDR *xdrs, unsigned int len) { int32_t *buf = 0; |