svn commit: r204672 - head/sbin/newfs

Max Laier max at love2party.net
Wed Mar 3 23:36:30 UTC 2010


On Thursday 04 March 2010 00:25:53 Garrett Cooper wrote:
> On Mar 3, 2010, at 1:53 PM, Warner Losh <imp at FreeBSD.org> 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?  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.

Regards,
  Max


More information about the svn-src-head mailing list