PERFORCE change 76270 for review
Brian Fundakowski Feldman
green at FreeBSD.org
Sat Apr 30 15:29:16 GMT 2005
On Sat, Apr 30, 2005 at 01:12:28PM +0000, Robert Watson wrote:
> http://perforce.freebsd.org/chv.cgi?CH=76270
>
> Change 76270 by rwatson at rwatson_paprika on 2005/04/30 13:11:27
>
> Darwin 8.0 has 64-bit file ID's, so improve support for that.
>
> Affected files ...
>
> .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#9 edit
>
> Differences ...
>
> ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#9 (text+ko) ====
>
> @@ -181,12 +181,20 @@
> ADD_U_INT32(dptr, attr->va_gid);
> ADD_U_INT32(dptr, attr->va_fsid);
>
> - /*
> - * Darwin defines the size for fileid
> - * as 4 bytes; BSM defines 8 so pad with 0
> - */
> - ADD_U_INT32(dptr, pad0_32);
> - ADD_U_INT32(dptr, attr->va_fileid);
> + /*
> + * Some systems use 32-bit file ID's, other's use 64-bit file IDs.
> + * Attempt to handle both, and let the compiler sort it out. If we
> + * could pick this out at compile-time, it would be better, so as to
> + * avoid the else case below.
> + */
> + if (sizeof(attr->va_fileid) == sizeof(uint32_t)) {
> + ADD_U_INT32(dptr, pad0_32);
> + ADD_U_INT32(dptr, attr->va_fileid);
> + } else if (sizeof(attr->va_fileid) == sizeof(uint64_t)) {
> + ADD_U_INT64(dptr, attr->va_fileid);
> + } else {
> + ADD_U_INT64(dptr, 0LL);
> + }
>
> ADD_U_INT32(dptr, attr->va_rdev);
>
>
How about (after adding CTASSERT() if it hasn't already been merged to
Darwin):
+ CTASSERT(sizeof(((struct vattr *)NULL)->va_fileid) == sizeof(uint32_t) ||
+ sizeof(((struct vattr *)NULL)->va_fileid) == sizeof(uint64_t));
...
> + /*
> + * Some systems use 32-bit file ID's, other's use 64-bit file IDs.
> + */
> + if (sizeof(attr->va_fileid) == sizeof(uint32_t)) {
> + ADD_U_INT32(dptr, pad0_32);
> + ADD_U_INT32(dptr, attr->va_fileid);
> + } else {
> + ADD_U_INT64(dptr, attr->va_fileid);
> + }
--
Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\
<> green at FreeBSD.org \ The Power to Serve! \
Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message
More information about the trustedbsd-cvs
mailing list