diff options
Diffstat (limited to 'sunrpc')
-rw-r--r-- | sunrpc/Makefile | 2 | ||||
-rw-r--r-- | sunrpc/Versions | 6 | ||||
-rw-r--r-- | sunrpc/rpc/xdr.h | 8 | ||||
-rw-r--r-- | sunrpc/xdr.c | 39 | ||||
-rw-r--r-- | sunrpc/xdr_intXX_t.c | 147 |
5 files changed, 157 insertions, 45 deletions
diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 0a327ea4f7..5ab9fb5941 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -67,7 +67,7 @@ routines := auth_none auth_unix authuxprot bindrsvprt \ xdr_rec xdr_ref xdr_stdio publickey xdr_sizeof \ auth_des authdes_prot des_crypt des_impl des_soft \ key_call key_prot netname openchild rtime svcauth_des xcrypt\ - clnt_unix svc_unix create_xid + clnt_unix svc_unix create_xid xdr_intXX_t others := rpcinfo install-bin := rpcgen diff --git a/sunrpc/Versions b/sunrpc/Versions index b840939a04..e1a74aedfd 100644 --- a/sunrpc/Versions +++ b/sunrpc/Versions @@ -96,8 +96,8 @@ libc { # x* xdecrypt; xdr_authdes_cred; xdr_authdes_verf; xdr_cryptkeyarg; xdr_cryptkeyarg2; xdr_cryptkeyres; xdr_des_block; - xdr_getcredres; xdr_int32_t; xdr_key_netstarg; xdr_key_netstres; - xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; xdr_uint32_t; - xdr_unixcred; + xdr_getcredres; xdr_int16_t; xdr_int32_t; xdr_int8_t; xdr_key_netstarg; + xdr_key_netstres; xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; + xdr_uint16_t; xdr_uint32_t; xdr_uint8_t; xdr_unixcred; } } diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h index fe72abb7d8..dd9959aa5e 100644 --- a/sunrpc/rpc/xdr.h +++ b/sunrpc/rpc/xdr.h @@ -271,12 +271,16 @@ struct xdr_discrim extern bool_t xdr_void __P ((void)); extern bool_t xdr_int __P ((XDR *__xdrs, int *__ip)); extern bool_t xdr_u_int __P ((XDR *__xdrs, u_int *__up)); -extern bool_t xdr_int32_t __P ((XDR *__xdrs, int32_t *__ip)); -extern bool_t xdr_uint32_t __P ((XDR *__xdrs, uint32_t *__up)); extern bool_t xdr_long __P ((XDR *__xdrs, long *__lp)); extern bool_t xdr_u_long __P ((XDR *__xdrs, u_long *__ulp)); extern bool_t xdr_short __P ((XDR *__xdrs, short *__sp)); extern bool_t xdr_u_short __P ((XDR *__xdrs, u_short *__usp)); +extern bool_t xdr_int8_t __P ((XDR *__xdrs, int8_t *__ip)); +extern bool_t xdr_uint8_t __P ((XDR *__xdrs, uint8_t *__up)); +extern bool_t xdr_int16_t __P ((XDR *__xdrs, int16_t *__ip)); +extern bool_t xdr_uint16_t __P ((XDR *__xdrs, uint16_t *__up)); +extern bool_t xdr_int32_t __P ((XDR *__xdrs, int32_t *__ip)); +extern bool_t xdr_uint32_t __P ((XDR *__xdrs, uint32_t *__up)); extern bool_t xdr_bool __P ((XDR *__xdrs, bool_t *__bp)); extern bool_t xdr_enum __P ((XDR *__xdrs, enum_t *__ep)); extern bool_t xdr_array __P ((XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c index 0e3e5fc63a..57552c4427 100644 --- a/sunrpc/xdr.c +++ b/sunrpc/xdr.c @@ -152,45 +152,6 @@ xdr_u_int (XDR *xdrs, u_int *up) } /* - * XDR 32bit integers - */ -bool_t -xdr_int32_t (XDR *xdrs, int32_t *lp) -{ - - if (xdrs->x_op == XDR_ENCODE) - return XDR_PUTINT32 (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETINT32 (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} - -/* - * XDR 32bit unsigned integers - */ -bool_t -xdr_uint32_t (XDR *xdrs, uint32_t *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - return XDR_GETINT32 (xdrs, (uint32_t *) ulp); - - case XDR_ENCODE: - return XDR_PUTINT32 (xdrs, (uint32_t *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} - -/* * XDR long integers * same as xdr_u_long - open coded to save a proc call! */ diff --git a/sunrpc/xdr_intXX_t.c b/sunrpc/xdr_intXX_t.c new file mode 100644 index 0000000000..98132cd802 --- /dev/null +++ b/sunrpc/xdr_intXX_t.c @@ -0,0 +1,147 @@ +/* Copyright (c) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <rpc/types.h> +#include <rpc/xdr.h> + +/* XDR 32bit integers */ +bool_t +xdr_int32_t (XDR *xdrs, int32_t *lp) +{ + switch (xdrs->x_op) + { + case XDR_ENCODE: + return XDR_PUTINT32 (xdrs, lp); + case XDR_DECODE: + return XDR_GETINT32 (xdrs, lp); + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} + +/* XDR 32bit unsigned integers */ +bool_t +xdr_uint32_t (XDR *xdrs, uint32_t *ulp) +{ + switch (xdrs->x_op) + { + case XDR_DECODE: + return XDR_GETINT32 (xdrs, (int32_t *) ulp); + case XDR_ENCODE: + return XDR_PUTINT32 (xdrs, (int32_t *) ulp); + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} + +/* XDR 16bit integers */ +bool_t +xdr_int16_t (XDR *xdrs, int16_t *ip) +{ + int32_t t; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + t = (int32_t) *ip; + return XDR_PUTINT32 (xdrs, &t); + case XDR_DECODE: + if (!XDR_GETINT32 (xdrs, &t)) + return FALSE; + *ip = (int16_t) t; + return TRUE; + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} + +/* XDR 16bit unsigned integers */ +bool_t +xdr_uint16_t (XDR *xdrs, uint16_t *uip) +{ + uint32_t ut; + + switch (xdrs->x_op) + { + case XDR_DECODE: + ut = (uint32_t) *uip; + return XDR_GETINT32 (xdrs, (int32_t *) &ut); + case XDR_ENCODE: + if (!XDR_PUTINT32 (xdrs, (int32_t *) &ut)) + return FALSE; + *uip = (uint16_t) ut; + return TRUE; + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} + +/* XDR 8bit integers */ +bool_t +xdr_int8_t (XDR *xdrs, int8_t *ip) +{ + int32_t t; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + t = (int32_t) *ip; + return XDR_PUTINT32 (xdrs, &t); + case XDR_DECODE: + if (!XDR_GETINT32 (xdrs, &t)) + return FALSE; + *ip = (int8_t) t; + return TRUE; + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} + +/* XDR 8bit unsigned integers */ +bool_t +xdr_uint8_t (XDR *xdrs, uint8_t *uip) +{ + uint32_t ut; + + switch (xdrs->x_op) + { + case XDR_DECODE: + ut = (uint32_t) *uip; + return XDR_GETINT32 (xdrs, (int32_t *) &ut); + case XDR_ENCODE: + if (!XDR_PUTINT32 (xdrs, (int32_t *) &ut)) + return FALSE; + *uip = (uint8_t) ut; + return TRUE; + case XDR_FREE: + return TRUE; + default: + return FALSE; + } +} |