diff options
author | Roland McGrath <roland@gnu.org> | 1996-07-20 11:26:09 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1996-07-20 11:26:09 +0000 |
commit | 22f87e0fa87762b244202e32500bda7085f5d287 (patch) | |
tree | 8a862a0ac6d2a134db30e42579acbfd313ee845b /sunrpc/xdr.c | |
parent | cf725107f396b4fc40f50343519f1cf9ceba6a22 (diff) | |
download | glibc-22f87e0fa87762b244202e32500bda7085f5d287.tar.gz glibc-22f87e0fa87762b244202e32500bda7085f5d287.tar.xz glibc-22f87e0fa87762b244202e32500bda7085f5d287.zip |
Sat Jul 20 07:15:33 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* crypt/Makefile, crypt/nocrypt.c: Removed. It is illegal to export from the USA any software that even makes it easy to drop in an encryption module of foreign origin. * Makerules (cryptobjdir): Variable removed. ($(libdir)/libc.so): Remove dep on libcrypt.so$(libcrypt.so-version). * Makefile (subdirs): Remove crypt. Fri Jul 19 15:10:37 1996 David Mosberger-Tang <davidm@azstarnet.com> * sunrpc/xdr_mem.c (xdrmem_putlong): Don't cast LP to int32 (the old code would have failed on a big-endian 64-bit architecture). * sunrpc/xdr_stdio.c (xdrstdio_putlong): Ditto. * sunrpc/xdr.c (xdr_int): Handle XDR_FREE case. (xdr_u_long): Use switch instead of chain of if-statements. Remove gratitous parentheses around return expressions. (xdr_enum): Open code case where INT_MAX<LONG_MAX. * sunrpc/svc.c (svc_getreqset): Increment SOCK by 32, not NFDBITS. * sunrpc/portmap.c (reg_service): Declare ANS and PORT as long, not int. Fri Jul 19 16:56:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * dlfcn.h, db.h: New wrapper headers. * posix/glob.h [!_AMIGA && !VMS]: Check this instead of just [!_AMIGA] for `struct stat;' forward decl. Fri Jul 19 22:25:19 1996 Ulrich Drepper <drepper@cygnus.com> * locale/iso-4217.def: Add some more standardized currency symbols.
Diffstat (limited to 'sunrpc/xdr.c')
-rw-r--r-- | sunrpc/xdr.c | 196 |
1 files changed, 108 insertions, 88 deletions
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c index 56953e07ef..99a47bf42c 100644 --- a/sunrpc/xdr.c +++ b/sunrpc/xdr.c @@ -112,8 +112,10 @@ xdr_int(xdrs, ip) return FALSE; } *ip = (int) l; + case XDR_FREE: return TRUE; } + return FALSE; # elif INT_MAX == LONG_MAX return xdr_long(xdrs, (long *)ip); # elif INT_MAX == SHRT_MAX @@ -149,8 +151,10 @@ xdr_u_int(xdrs, up) return FALSE; } *up = (u_int) l; + case XDR_FREE: return TRUE; } + return FALSE; # elif UINT_MAX == ULONG_MAX return xdr_u_long(xdrs, (u_long *)up); # elif UINT_MAX == USHRT_MAX @@ -192,14 +196,17 @@ xdr_u_long(xdrs, ulp) register XDR *xdrs; u_long *ulp; { + switch (xdrs->x_op) { + case XDR_DECODE: + return XDR_GETLONG(xdrs, (long *)ulp); - if (xdrs->x_op == XDR_DECODE) - return (XDR_GETLONG(xdrs, (long *)ulp)); - if (xdrs->x_op == XDR_ENCODE) - return (XDR_PUTLONG(xdrs, (long *)ulp)); - if (xdrs->x_op == XDR_FREE) - return (TRUE); - return (FALSE); + case XDR_ENCODE: + return XDR_PUTLONG(xdrs, (long *)ulp); + + case XDR_FREE: + return TRUE; + } + return FALSE; } /* @@ -213,22 +220,21 @@ xdr_short(xdrs, sp) long l; switch (xdrs->x_op) { - - case XDR_ENCODE: + case XDR_ENCODE: l = (long) *sp; - return (XDR_PUTLONG(xdrs, &l)); + return XDR_PUTLONG(xdrs, &l); - case XDR_DECODE: + case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { - return (FALSE); + return FALSE; } *sp = (short) l; - return (TRUE); + return TRUE; - case XDR_FREE: - return (TRUE); + case XDR_FREE: + return TRUE; } - return (FALSE); + return FALSE; } /* @@ -242,22 +248,21 @@ xdr_u_short(xdrs, usp) u_long l; switch (xdrs->x_op) { - - case XDR_ENCODE: + case XDR_ENCODE: l = (u_long) *usp; - return (XDR_PUTLONG(xdrs, &l)); + return XDR_PUTLONG(xdrs, &l); - case XDR_DECODE: + case XDR_DECODE: if (!XDR_GETLONG(xdrs, &l)) { - return (FALSE); + return FALSE; } *usp = (u_short) l; - return (TRUE); + return TRUE; - case XDR_FREE: - return (TRUE); + case XDR_FREE: + return TRUE; } - return (FALSE); + return FALSE; } @@ -273,10 +278,10 @@ xdr_char(xdrs, cp) i = (*cp); if (!xdr_int(xdrs, &i)) { - return (FALSE); + return FALSE; } *cp = i; - return (TRUE); + return TRUE; } /* @@ -285,16 +290,16 @@ xdr_char(xdrs, cp) bool_t xdr_u_char(xdrs, cp) XDR *xdrs; - char *cp; + u_char *cp; { u_int u; u = (*cp); if (!xdr_u_int(xdrs, &u)) { - return (FALSE); + return FALSE; } *cp = u; - return (TRUE); + return TRUE; } /* @@ -308,22 +313,21 @@ xdr_bool(xdrs, bp) long lb; switch (xdrs->x_op) { - - case XDR_ENCODE: + case XDR_ENCODE: lb = *bp ? XDR_TRUE : XDR_FALSE; - return (XDR_PUTLONG(xdrs, &lb)); + return XDR_PUTLONG(xdrs, &lb); - case XDR_DECODE: + case XDR_DECODE: if (!XDR_GETLONG(xdrs, &lb)) { - return (FALSE); + return FALSE; } *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return (TRUE); + return TRUE; - case XDR_FREE: - return (TRUE); + case XDR_FREE: + return TRUE; } - return (FALSE); + return FALSE; } /* @@ -341,16 +345,36 @@ xdr_enum(xdrs, ep) * enums are treated as ints */ if (sizeof (enum sizecheck) == 4) { +# if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) { + case XDR_ENCODE: + l = *ep; + return XDR_PUTLONG(xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG(xdrs, &l)) { + return FALSE; + } + *ep = l; + case XDR_FREE: + return TRUE; + + } + return FALSE; +# else return (xdr_long(xdrs, (long *)ep)); +# endif } else if (sizeof (enum sizecheck) == sizeof (short)) { - return (xdr_short(xdrs, (short *)ep)); + return xdr_short(xdrs, (short *)ep); } else { - return (FALSE); + return FALSE; } -#else +#else /* lint */ (void) (xdr_short(xdrs, (short *)ep)); return (xdr_long(xdrs, (long *)ep)); -#endif +#endif /* lint */ } /* @@ -371,7 +395,7 @@ xdr_opaque(xdrs, cp, cnt) * if no data we are done */ if (cnt == 0) - return (TRUE); + return TRUE; /* * round byte count to full xdr units @@ -380,29 +404,27 @@ xdr_opaque(xdrs, cp, cnt) if (rndup > 0) rndup = BYTES_PER_XDR_UNIT - rndup; - if (xdrs->x_op == XDR_DECODE) { + switch (xdrs->x_op) { + case XDR_DECODE: if (!XDR_GETBYTES(xdrs, cp, cnt)) { - return (FALSE); + return FALSE; } if (rndup == 0) - return (TRUE); - return (XDR_GETBYTES(xdrs, crud, rndup)); - } + return TRUE; + return XDR_GETBYTES(xdrs, crud, rndup); - if (xdrs->x_op == XDR_ENCODE) { + case XDR_ENCODE: if (!XDR_PUTBYTES(xdrs, cp, cnt)) { - return (FALSE); + return FALSE; } if (rndup == 0) - return (TRUE); - return (XDR_PUTBYTES(xdrs, xdr_zero, rndup)); - } + return TRUE; + return XDR_PUTBYTES(xdrs, xdr_zero, rndup); - if (xdrs->x_op == XDR_FREE) { - return (TRUE); + case XDR_FREE: + return TRUE; } - - return (FALSE); + return FALSE; } /* @@ -424,42 +446,41 @@ xdr_bytes(xdrs, cpp, sizep, maxsize) * first deal with the length since xdr bytes are counted */ if (! xdr_u_int(xdrs, sizep)) { - return (FALSE); + return FALSE; } nodesize = *sizep; if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) { - return (FALSE); + return FALSE; } /* * now deal with the actual bytes */ switch (xdrs->x_op) { - - case XDR_DECODE: + case XDR_DECODE: if (nodesize == 0) { - return (TRUE); + return TRUE; } if (sp == NULL) { *cpp = sp = (char *)mem_alloc(nodesize); } if (sp == NULL) { (void) fprintf(stderr, "xdr_bytes: out of memory\n"); - return (FALSE); + return FALSE; } /* fall into ... */ - case XDR_ENCODE: - return (xdr_opaque(xdrs, sp, nodesize)); + case XDR_ENCODE: + return xdr_opaque(xdrs, sp, nodesize); - case XDR_FREE: + case XDR_FREE: if (sp != NULL) { mem_free(sp, nodesize); *cpp = NULL; } - return (TRUE); + return TRUE; } - return (FALSE); + return FALSE; } /* @@ -471,7 +492,7 @@ xdr_netobj(xdrs, np) struct netobj *np; { - return (xdr_bytes(xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ)); + return xdr_bytes(xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); } /* @@ -499,7 +520,7 @@ xdr_union(xdrs, dscmp, unp, choices, dfault) * we deal with the discriminator; it's an enum */ if (! xdr_enum(xdrs, dscmp)) { - return (FALSE); + return FALSE; } dscm = *dscmp; @@ -509,7 +530,7 @@ xdr_union(xdrs, dscmp, unp, choices, dfault) */ for (; choices->proc != NULL_xdrproc_t; choices++) { if (choices->value == dscm) - return ((*(choices->proc))(xdrs, unp, LASTUNSIGNED)); + return (*(choices->proc))(xdrs, unp, LASTUNSIGNED); } /* @@ -548,20 +569,20 @@ xdr_string(xdrs, cpp, maxsize) * first deal with the length since xdr strings are counted-strings */ switch (xdrs->x_op) { - case XDR_FREE: + case XDR_FREE: if (sp == NULL) { - return(TRUE); /* already free */ + return TRUE; /* already free */ } /* fall through... */ - case XDR_ENCODE: + case XDR_ENCODE: size = strlen(sp); break; } if (! xdr_u_int(xdrs, &size)) { - return (FALSE); + return FALSE; } if (size > maxsize) { - return (FALSE); + return FALSE; } nodesize = size + 1; @@ -569,29 +590,28 @@ xdr_string(xdrs, cpp, maxsize) * now deal with the actual bytes */ switch (xdrs->x_op) { - - case XDR_DECODE: + case XDR_DECODE: if (nodesize == 0) { - return (TRUE); + return TRUE; } if (sp == NULL) *cpp = sp = (char *)mem_alloc(nodesize); if (sp == NULL) { (void) fprintf(stderr, "xdr_string: out of memory\n"); - return (FALSE); + return FALSE; } sp[size] = 0; /* fall into ... */ - case XDR_ENCODE: - return (xdr_opaque(xdrs, sp, size)); + case XDR_ENCODE: + return xdr_opaque(xdrs, sp, size); - case XDR_FREE: + case XDR_FREE: mem_free(sp, nodesize); *cpp = NULL; - return (TRUE); + return TRUE; } - return (FALSE); + return FALSE; } /* @@ -604,7 +624,7 @@ xdr_wrapstring(xdrs, cpp) char **cpp; { if (xdr_string(xdrs, cpp, LASTUNSIGNED)) { - return (TRUE); + return TRUE; } - return (FALSE); + return FALSE; } |