Subject: Re: types gone amuck (Re: CVS commit: basesrc/bin/pax)
To: Klaus Klein <kleink@reziprozitaet.de>
From: Chuck Silvers <chuq@chuq.com>
List: tech-kern
Date: 10/30/2001 21:26:09
so I grep'd for longlong_t in the entire source tree, and here's what I got:
include/rpc/xdr.h:extern bool_t xdr_hyper __P((XDR *, longlong_t *));
include/rpc/xdr.h:extern bool_t xdr_u_hyper __P((XDR *, u_longlong_t *));
include/rpc/xdr.h:extern bool_t xdr_longlong_t __P((XDR *, longlong_t *));
include/rpc/xdr.h:extern bool_t xdr_u_longlong_t __P((XDR *, u_longlong_t *));
lib/libc/include/namespace.h:#define xdr_longlong_t _xdr_longlong_t
lib/libc/include/namespace.h:#define xdr_u_longlong_t _xdr_u_longlong_t
lib/libc/rpc/xdr.c:__weak_alias(xdr_longlong_t,_xdr_longlong_t)
lib/libc/rpc/xdr.c:__weak_alias(xdr_u_longlong_t,_xdr_u_longlong_t)
lib/libc/rpc/xdr.c: * NOTE: xdr_hyper(), xdr_u_hyper(), xdr_longlong_t(), and xdr_u_longlong_t()
lib/libc/rpc/xdr.c: longlong_t *llp;
lib/libc/rpc/xdr.c: u_longlong_t *ullp;
lib/libc/rpc/xdr.c: * XDR longlong_t's
lib/libc/rpc/xdr.c:xdr_longlong_t(xdrs, llp)
lib/libc/rpc/xdr.c: longlong_t *llp;
lib/libc/rpc/xdr.c: * XDR u_longlong_t's
lib/libc/rpc/xdr.c:xdr_u_longlong_t(xdrs, ullp)
lib/libc/rpc/xdr.c: u_longlong_t *ullp;
sys/sys/types.h:typedef quad_t longlong_t; /* ANSI long long type */
sys/sys/types.h:typedef u_quad_t u_longlong_t; /* ANSI unsigned long long type */
having the xdr_{,u_}longlong_t functions take an argument that is not a
{,u_}longlong_t would be a bit odd. so perhaps the best thing to do
would just be to replace the comments about them being ANSI with
something like:
/*
* The types longlong_t and u_longlong_t exist for use with the
* Sun-derived XDR routines involving these types, and their usage
* in other contexts is discouraged. Further note that these types
* may not be equivalent to "long long" and "unsigned long long",
* they are only guaranteed to be signed and unsigned 64-bit types
* respectively. Portable programs that need 64-bit types should use
* the ANSI types int64_t and uint64_t instead.
*/
how does that sound?
-Chuck
On Sun, Oct 28, 2001 at 06:32:33PM +0100, Klaus Klein wrote:
> Chuck Silvers <chuq@chuq.com> writes:
>
> > so is "u_longlong_t" actually an ANSI-specified type?
> > if not, we should remove the comment that says that it is.
> > if it's supposed to be defined as "unsigned long long",
> > then we should change the header so that it is.
>
> I concur.
>
> > actually if this type isn't specified by any standard,
> > it may be best to just remove it.
>
> Of all recent systems I've seen only Solaris defining it, so except
> for cruft^H^H^H^H^Hbreakage in our own tree which we can fix, I'm all
> for it.
>
>
> - Klaus