On Mar 3, 2010, at 3:36 PM, Max Laier <[email protected]> wrote:

On Thursday 04 March 2010 00:25:53 Garrett Cooper wrote:
On Mar 3, 2010, at 1:53 PM, Warner Losh <[email protected]> wrote:
Author: imp
Date: Wed Mar  3 21:53:25 2010
New Revision: 204672
URL: http://svn.freebsd.org/changeset/base/204672

Log:
Cast these to intmax_t before printing to fix build bustage.  Better
solutions welcome.

Modified:
head/sbin/newfs/mkfs.c

Modified: head/sbin/newfs/mkfs.c
===
===
===
===
==================================================================
--- head/sbin/newfs/mkfs.c    Wed Mar  3 21:47:25 2010    (r204671)
+++ head/sbin/newfs/mkfs.c    Wed Mar  3 21:53:25 2010    (r204672)
@@ -191,8 +191,8 @@ restart:
     exit(17);
 }
 if (sblock.fs_fsize < sectorsize) {
- printf("increasing fragment size from %d to sector size (%d)
\n",
-            sblock.fs_fsize, sectorsize);
+        printf("increasing fragment size from %d to sector size
(%jd)\n",
+            sblock.fs_fsize, (intmax_t)sectorsize);
     sblock.fs_fsize = sectorsize;
 }
 if (sblock.fs_bsize > MAXBSIZE) {
@@ -337,8 +337,8 @@ restart:
 } else if (density < minfragsperinode * fsize) {
     origdensity = density;
     density = minfragsperinode * fsize;
-        fprintf(stderr, "density increased from %d to %d\n",
-            origdensity, density);
+        fprintf(stderr, "density increased from %d to %jd\n",
+            origdensity, (intmax_t)density);
 }
 origdensity = density;
 for (;;) {
@@ -346,8 +346,9 @@ restart:
     if (fragsperinode < minfragsperinode) {
         bsize <<= 1;
         fsize <<= 1;
- printf("Block size too small for a file system %s %d \n",
-                 "of this size. Increasing blocksize to", bsize);
+ printf("Block size too small for a file system %s %jd \n",
+                "of this size. Increasing blocksize to",
+                (intmax_t)bsize);
         goto restart;
     }
     minfpg = fragsperinode * INOPB(&sblock);
@@ -371,7 +372,8 @@ restart:
     density -= sblock.fs_fsize;
 }
 if (density != origdensity)
-        printf("density reduced from %d to %d\n", origdensity,
density);
+        printf("density reduced from %d to %jd\n", origdensity,
+            (intmax_t)density);
 /*
  * Start packing more blocks into the cylinder group until
  * it cannot grow any larger, the number of cylinder groups

Use PRId64 from inttypes.h ?

you just forgot to type ";)" there, didn't you?

Eh, not really my intent TBH (although I guess my answer was pretty cheeky looking back).

How are the PRI* macros
better than an intmax_t cast? In my opinion, the intmax_t cast and %j is the best, realistic solution for this. I have partitioned in the past that we change int64 types to "long long" on platforms with 64bit "long". That way you can print int64 types with "%ll" on all platforms. But casting to intmax is just as good and the compiler should be able to figure out what goes on and
make it a no-op.

Course it helps to read more dilligently too. It's fine today I suppose, but pardoning my ignorance, are there any archs where in practice today, intmax_t isn't synonymous with int64_t, like maybe some ARM variants?

TIA!
-Garrett
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to