On Thu, 4 Dec 2008, Max Laier wrote:

On Thursday 04 December 2008 00:00:57 Max Laier wrote:
Author: mlaier
Date: Wed Dec  3 23:00:57 2008
New Revision: 185594
URL: http://svn.freebsd.org/changeset/base/185594

Log:
  Fix build - cast off_t to (intmax_t) for printing.

intmax_t is declared in <stdint.h>, but this patch gets it by including
the full bloat of <inttypes.h>.  However, <inttypes.h> is needed for
a complete fix.  Input of off_t's is still broken -- it uses strtoll(),
but should use strtoimax() so as not to depend on the implementation
of off_t and so as not to have style bugs (any use of long long).

I'd really like to typedef the int64 types "long long" on all architectures
:-\  It's a big POLA violation in my opinion and causes quite a bit of porting
headache.  Or at least let's fix printf to understand that "long" types on
64bit architectures can be printed with %ll.  Since they are - in fact - 64bit
wide.

But I keep reiterating this point - I guess I still don't understand the exact
reason why we can't just do that.

This would break detection of the bug that you fixed.  Printing off_t using
either %ld or %lld is a bug, since off_t might not be either of long or
long long.  Having %ld (physically) incompatible with long long on 32-bit
arches and %lld (only logically) incompatible with long long on 64-bit
arches results in both errors being detected eventually.

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to