diff options
Diffstat (limited to 'libc/inet/rpc/xdr_float.c')
-rw-r--r-- | libc/inet/rpc/xdr_float.c | 154 |
1 files changed, 83 insertions, 71 deletions
diff --git a/libc/inet/rpc/xdr_float.c b/libc/inet/rpc/xdr_float.c index ce7b6e07f..f8eb5e99c 100644 --- a/libc/inet/rpc/xdr_float.c +++ b/libc/inet/rpc/xdr_float.c @@ -28,7 +28,9 @@ * Mountain View, California 94043 */ #if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; +static char sccsid[] = + + "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; #endif /* @@ -59,18 +61,18 @@ static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; #ifdef vax /* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; +struct ieee_single { + unsigned int mantissa:23; + unsigned int exp:8; + unsigned int sign:1; }; /* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; +struct vax_single { + unsigned int mantissa1:7; + unsigned int exp:8; + unsigned int sign:1; + unsigned int mantissa2:16; }; #define VAX_SNG_BIAS 0x81 @@ -80,17 +82,20 @@ static struct sgl_limits { struct vax_single s; struct ieee_single ieee; } sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ + { { + 0x7f, 0xff, 0x0, 0xffff}, /* Max Vax */ + { + 0x0, 0xff, 0x0}}, /* Max IEEE */ + { { + 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ + { + 0x0, 0x0, 0x0}} /* Min IEEE */ }; -#endif /* vax */ +#endif /* vax */ -bool_t -xdr_float(xdrs, fp) - register XDR *xdrs; - register float *fp; +bool_t xdr_float(xdrs, fp) +register XDR *xdrs; +register float *fp; { #if !defined(mc68000) && !defined(sparc) struct ieee_single is; @@ -102,12 +107,13 @@ xdr_float(xdrs, fp) case XDR_ENCODE: #if defined(mc68000) || defined(sparc) - return (XDR_PUTLONG(xdrs, (long *)fp)); + return (XDR_PUTLONG(xdrs, (long *) fp)); #else - vs = *((struct vax_single *)fp); + vs = *((struct vax_single *) fp); for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { + + i < sizeof(sgl_limits) / sizeof(struct sgl_limits); + i++, lim++) { if ((vs.mantissa2 == lim->s.mantissa2) && (vs.exp == lim->s.exp) && (vs.mantissa1 == lim->s.mantissa1)) { @@ -117,21 +123,22 @@ xdr_float(xdrs, fp) } is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: + shipit: is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); + return (XDR_PUTLONG(xdrs, (long *) &is)); #endif case XDR_DECODE: #if defined(mc68000) || defined(sparc) - return (XDR_GETLONG(xdrs, (long *)fp)); + return (XDR_GETLONG(xdrs, (long *) fp)); #else - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) + vsp = (struct vax_single *) fp; + if (!XDR_GETLONG(xdrs, (long *) &is)) return (FALSE); for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { + + i < sizeof(sgl_limits) / sizeof(struct sgl_limits); + i++, lim++) { if ((is.exp == lim->ieee.exp) && (is.mantissa == lim->ieee.mantissa)) { *vsp = lim->s; @@ -141,7 +148,7 @@ xdr_float(xdrs, fp) vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; vsp->mantissa2 = is.mantissa; vsp->mantissa1 = (is.mantissa >> 16); - doneit: + doneit: vsp->sign = is.sign; return (TRUE); #endif @@ -158,21 +165,21 @@ xdr_float(xdrs, fp) #ifdef vax /* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; +struct ieee_double { + unsigned int mantissa1:20; + unsigned int exp:11; + unsigned int sign:1; + unsigned int mantissa2:32; }; /* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; +struct vax_double { + unsigned int mantissa1:7; + unsigned int exp:8; + unsigned int sign:1; + unsigned int mantissa2:16; + unsigned int mantissa3:16; + unsigned int mantissa4:16; }; #define VAX_DBL_BIAS 0x81 @@ -180,27 +187,31 @@ struct vax_double { #define MASK(nbits) ((1 << nbits) - 1) static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; + struct vax_double d; + struct ieee_double ieee; } dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ + { { + 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff}, /* Max Vax */ + { + 0x0, 0x7ff, 0x0, 0x0}}, /* Max IEEE */ + { { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ + { + 0x0, 0x0, 0x0, 0x0}} /* Min IEEE */ }; -#endif /* vax */ +#endif /* vax */ -bool_t -xdr_double(xdrs, dp) - register XDR *xdrs; - double *dp; +bool_t xdr_double(xdrs, dp) +register XDR *xdrs; +double *dp; { register long *lp; + #if !defined(mc68000) && !defined(sparc) - struct ieee_double id; - struct vax_double vd; + struct ieee_double id; + struct vax_double vd; register struct dbl_limits *lim; int i; #endif @@ -209,12 +220,13 @@ xdr_double(xdrs, dp) case XDR_ENCODE: #if defined(mc68000) || defined(sparc) - lp = (long *)dp; + lp = (long *) dp; #else - vd = *((struct vax_double *)dp); + vd = *((struct vax_double *) dp); for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { + + i < sizeof(dbl_limits) / sizeof(struct dbl_limits); + i++, lim++) { if ((vd.mantissa4 == lim->d.mantissa4) && (vd.mantissa3 == lim->d.mantissa3) && (vd.mantissa2 == lim->d.mantissa2) && @@ -227,25 +239,25 @@ xdr_double(xdrs, dp) id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: + (vd.mantissa3 << 13) | ((vd.mantissa4 >> 3) & MASK(13)); + shipit: id.sign = vd.sign; - lp = (long *)&id; + lp = (long *) &id; #endif return (XDR_PUTLONG(xdrs, lp++) && XDR_PUTLONG(xdrs, lp)); case XDR_DECODE: #if defined(mc68000) || defined(sparc) - lp = (long *)dp; + lp = (long *) dp; return (XDR_GETLONG(xdrs, lp++) && XDR_GETLONG(xdrs, lp)); #else - lp = (long *)&id; + lp = (long *) &id; if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) return (FALSE); for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { + + i < sizeof(dbl_limits) / sizeof(struct dbl_limits); + i++, lim++) { if ((id.mantissa2 == lim->ieee.mantissa2) && (id.mantissa1 == lim->ieee.mantissa1) && (id.exp == lim->ieee.exp)) { @@ -256,12 +268,12 @@ xdr_double(xdrs, dp) vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; vd.mantissa1 = (id.mantissa1 >> 13); vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); + (id.mantissa2 >> 29); vd.mantissa3 = (id.mantissa2 >> 13); vd.mantissa4 = (id.mantissa2 << 3); - doneit: + doneit: vd.sign = id.sign; - *dp = *((double *)&vd); + *dp = *((double *) &vd); return (TRUE); #endif |