From owner-svn-src-all@FreeBSD.ORG Sat Jul 9 08:14:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id 76E011065670; Sat, 9 Jul 2011 08:14:13 +0000 (UTC) Date: Sat, 9 Jul 2011 08:14:13 +0000 From: Alexander Best To: Kevin Lo Message-ID: <20110709081413.GA84325@freebsd.org> References: <201107090743.p697huB2086379@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201107090743.p697huB2086379@svn.freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223877 - in head: include/rpc lib/libc/xdr X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jul 2011 08:14:13 -0000 On Sat Jul 9 11, Kevin Lo wrote: > Author: kevlo > Date: Sat Jul 9 07:43:56 2011 > New Revision: 223877 > URL: http://svn.freebsd.org/changeset/base/223877 > > Log: > - Add xdr_sizeof(3) to libc > - Document xdr_sizeof(3); from NetBSD > > Discussed with: kib > > Modified: > head/include/rpc/xdr.h > head/lib/libc/xdr/Makefile.inc > head/lib/libc/xdr/Symbol.map > head/lib/libc/xdr/xdr.3 > head/lib/libc/xdr/xdr_sizeof.c > > Modified: head/include/rpc/xdr.h > ============================================================================== > --- head/include/rpc/xdr.h Fri Jul 8 20:41:12 2011 (r223876) > +++ head/include/rpc/xdr.h Sat Jul 9 07:43:56 2011 (r223877) > @@ -285,43 +285,46 @@ struct xdr_discrim { > * These are the "generic" xdr routines. > */ > __BEGIN_DECLS > -extern bool_t xdr_void(void); > -extern bool_t xdr_int(XDR *, int *); > -extern bool_t xdr_u_int(XDR *, u_int *); > -extern bool_t xdr_long(XDR *, long *); > -extern bool_t xdr_u_long(XDR *, u_long *); > -extern bool_t xdr_short(XDR *, short *); > -extern bool_t xdr_u_short(XDR *, u_short *); > -extern bool_t xdr_int16_t(XDR *, int16_t *); > -extern bool_t xdr_u_int16_t(XDR *, u_int16_t *); > -extern bool_t xdr_uint16_t(XDR *, u_int16_t *); > -extern bool_t xdr_int32_t(XDR *, int32_t *); > -extern bool_t xdr_u_int32_t(XDR *, u_int32_t *); > -extern bool_t xdr_uint32_t(XDR *, u_int32_t *); > -extern bool_t xdr_int64_t(XDR *, int64_t *); > -extern bool_t xdr_u_int64_t(XDR *, u_int64_t *); > -extern bool_t xdr_uint64_t(XDR *, u_int64_t *); > -extern bool_t xdr_bool(XDR *, bool_t *); > -extern bool_t xdr_enum(XDR *, enum_t *); > -extern bool_t xdr_array(XDR *, char **, u_int *, u_int, u_int, xdrproc_t); > -extern bool_t xdr_bytes(XDR *, char **, u_int *, u_int); > -extern bool_t xdr_opaque(XDR *, char *, u_int); > -extern bool_t xdr_string(XDR *, char **, u_int); > -extern bool_t xdr_union(XDR *, enum_t *, char *, const struct xdr_discrim *, xdrproc_t); > -extern bool_t xdr_char(XDR *, char *); > -extern bool_t xdr_u_char(XDR *, u_char *); > -extern bool_t xdr_vector(XDR *, char *, u_int, u_int, xdrproc_t); > -extern bool_t xdr_float(XDR *, float *); > -extern bool_t xdr_double(XDR *, double *); > -extern bool_t xdr_quadruple(XDR *, long double *); > -extern bool_t xdr_reference(XDR *, char **, u_int, xdrproc_t); > -extern bool_t xdr_pointer(XDR *, char **, u_int, xdrproc_t); > -extern bool_t xdr_wrapstring(XDR *, char **); > -extern void xdr_free(xdrproc_t, void *); > -extern bool_t xdr_hyper(XDR *, quad_t *); > -extern bool_t xdr_u_hyper(XDR *, u_quad_t *); > -extern bool_t xdr_longlong_t(XDR *, quad_t *); > -extern bool_t xdr_u_longlong_t(XDR *, u_quad_t *); > +extern bool_t xdr_void(void); > +extern bool_t xdr_int(XDR *, int *); > +extern bool_t xdr_u_int(XDR *, u_int *); > +extern bool_t xdr_long(XDR *, long *); > +extern bool_t xdr_u_long(XDR *, u_long *); > +extern bool_t xdr_short(XDR *, short *); > +extern bool_t xdr_u_short(XDR *, u_short *); > +extern bool_t xdr_int16_t(XDR *, int16_t *); > +extern bool_t xdr_u_int16_t(XDR *, u_int16_t *); > +extern bool_t xdr_uint16_t(XDR *, u_int16_t *); > +extern bool_t xdr_int32_t(XDR *, int32_t *); > +extern bool_t xdr_u_int32_t(XDR *, u_int32_t *); > +extern bool_t xdr_uint32_t(XDR *, u_int32_t *); > +extern bool_t xdr_int64_t(XDR *, int64_t *); > +extern bool_t xdr_u_int64_t(XDR *, u_int64_t *); > +extern bool_t xdr_uint64_t(XDR *, u_int64_t *); > +extern bool_t xdr_bool(XDR *, bool_t *); > +extern bool_t xdr_enum(XDR *, enum_t *); > +extern bool_t xdr_array(XDR *, char **, u_int *, u_int, u_int, > + xdrproc_t); > +extern bool_t xdr_bytes(XDR *, char **, u_int *, u_int); > +extern bool_t xdr_opaque(XDR *, char *, u_int); > +extern bool_t xdr_string(XDR *, char **, u_int); > +extern bool_t xdr_union(XDR *, enum_t *, char *, > + const struct xdr_discrim *, xdrproc_t); > +extern bool_t xdr_char(XDR *, char *); > +extern bool_t xdr_u_char(XDR *, u_char *); > +extern bool_t xdr_vector(XDR *, char *, u_int, u_int, xdrproc_t); > +extern bool_t xdr_float(XDR *, float *); > +extern bool_t xdr_double(XDR *, double *); > +extern bool_t xdr_quadruple(XDR *, long double *); > +extern bool_t xdr_reference(XDR *, char **, u_int, xdrproc_t); > +extern bool_t xdr_pointer(XDR *, char **, u_int, xdrproc_t); > +extern bool_t xdr_wrapstring(XDR *, char **); > +extern void xdr_free(xdrproc_t, void *); > +extern bool_t xdr_hyper(XDR *, quad_t *); > +extern bool_t xdr_u_hyper(XDR *, u_quad_t *); > +extern bool_t xdr_longlong_t(XDR *, quad_t *); > +extern bool_t xdr_u_longlong_t(XDR *, u_quad_t *); > +extern unsigned long xdr_sizeof(xdrproc_t, void *); > __END_DECLS > > /* > > Modified: head/lib/libc/xdr/Makefile.inc > ============================================================================== > --- head/lib/libc/xdr/Makefile.inc Fri Jul 8 20:41:12 2011 (r223876) > +++ head/lib/libc/xdr/Makefile.inc Sat Jul 9 07:43:56 2011 (r223877) > @@ -3,7 +3,8 @@ > > .PATH: ${.CURDIR}/xdr ${.CURDIR}/. > SRCS+= xdr.c xdr_array.c xdr_float.c xdr_mem.c \ > - xdr_rec.c xdr_reference.c xdr_stdio.c > + xdr_rec.c xdr_reference.c xdr_sizeof.c \ > + xdr_stdio.c > > SYM_MAPS+= ${.CURDIR}/xdr/Symbol.map > > @@ -39,6 +40,7 @@ MLINKS+= rpc_xdr.3 xdr_accepted_reply.3 > xdr.3 xdr_reference.3 \ > xdr.3 xdr_setpos.3 \ > xdr.3 xdr_short.3 \ > + xdr.3 xdr_sizeof.3 \ > xdr.3 xdrstdio_create.3 \ > xdr.3 xdr_string.3 \ > xdr.3 xdr_u_char.3 \ > > Modified: head/lib/libc/xdr/Symbol.map > ============================================================================== > --- head/lib/libc/xdr/Symbol.map Fri Jul 8 20:41:12 2011 (r223876) > +++ head/lib/libc/xdr/Symbol.map Sat Jul 9 07:43:56 2011 (r223877) > @@ -42,7 +42,6 @@ FBSD_1.0 { > xdrrec_endofrecord; > xdr_reference; > xdr_pointer; > - /* xdr_sizeof; */ /* Why is xdr_sizeof.c not included in Makefileinc? */ > xdrstdio_create; > }; > > @@ -51,3 +50,7 @@ FBSD_1.1 { > xdr_uint32_t; > xdr_uint64_t; > }; > + > +FBSD_1.2 { > + xdr_sizeof; > +}; > > Modified: head/lib/libc/xdr/xdr.3 > ============================================================================== > --- head/lib/libc/xdr/xdr.3 Fri Jul 8 20:41:12 2011 (r223876) > +++ head/lib/libc/xdr/xdr.3 Sat Jul 9 07:43:56 2011 (r223877) how about adding a HISTORY section to the xdr(3) man page, with a note that xdr_sizeof() was added in freebsd 9.0 and was optained from netbsd? > @@ -31,6 +31,7 @@ > .Nm xdr_reference , > .Nm xdr_setpos , > .Nm xdr_short , > +.Nm xdr_sizeof, > .Nm xdrstdio_create , > .Nm xdr_string , > .Nm xdr_u_char , > @@ -561,6 +562,18 @@ A filter primitive that translates betwe > integers and their external representations. > This routine returns one if it succeeds, zero otherwise. > .Pp > +.It Xo > +.Ft unsigned long > +.Xc > +.It Xo > +.Fn xdr_sizeof "xdrproc_t func" "void *data" > +.Xc > +.Pp > +This routine returns the amount of memory required to encode > +.Fa data > +using filter > +.Fa func . > +.Pp > .It Li "#ifdef _STDIO_H_" > .It Li "/* XDR using stdio library */" > .It Xo > > Modified: head/lib/libc/xdr/xdr_sizeof.c > ============================================================================== > --- head/lib/libc/xdr/xdr_sizeof.c Fri Jul 8 20:41:12 2011 (r223876) > +++ head/lib/libc/xdr/xdr_sizeof.c Sat Jul 9 07:43:56 2011 (r223877) > @@ -94,7 +94,7 @@ x_inline(xdrs, len) > if (xdrs->x_op != XDR_ENCODE) { > return (NULL); > } > - if (len < (u_int)xdrs->x_base) { > + if (len < (u_int)(uintptr_t)xdrs->x_base) { > /* x_private was already allocated */ > xdrs->x_handy += len; > return ((int32_t *) xdrs->x_private); > @@ -106,7 +106,7 @@ x_inline(xdrs, len) > xdrs->x_base = 0; > return (NULL); > } > - xdrs->x_base = (caddr_t) len; > + xdrs->x_base = (caddr_t)(uintptr_t)len; > xdrs->x_handy += len; > return ((int32_t *) xdrs->x_private); > }