Date: Wed, 3 Mar 2010 13:31:12 -0800 From: "K. Macy" <kmacy@freebsd.org> To: Maxim Sobolev <sobomax@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r204654 - in head: sbin/newfs usr.bin/truncate Message-ID: <82c4140e1003031331y37a7c7a6x935084dbe46743e3@mail.gmail.com> In-Reply-To: <201003031925.o23JPTnW042804@svn.freebsd.org> References: <201003031925.o23JPTnW042804@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This broke world. On Wed, Mar 3, 2010 at 11:25 AM, Maxim Sobolev <sobomax@freebsd.org> wrote: > Author: sobomax > Date: Wed Mar =A03 19:25:28 2010 > New Revision: 204654 > URL: http://svn.freebsd.org/changeset/base/204654 > > Log: > =A0Use expand_number(3) from libutil instead of home-grown function to pa= rse > =A0human-friendly power-of-two numbers (i.e. 2k, 5M etc). > > =A0Suggested by: many > =A0MFC after: =A0 =A01 week > > Modified: > =A0head/sbin/newfs/Makefile > =A0head/sbin/newfs/newfs.c > =A0head/sbin/newfs/newfs.h > =A0head/usr.bin/truncate/Makefile > =A0head/usr.bin/truncate/truncate.c > > Modified: head/sbin/newfs/Makefile > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sbin/newfs/Makefile =A0 =A0Wed Mar =A03 19:14:05 2010 =A0 =A0 = =A0 =A0(r204653) > +++ head/sbin/newfs/Makefile =A0 =A0Wed Mar =A03 19:25:28 2010 =A0 =A0 = =A0 =A0(r204654) > @@ -4,8 +4,8 @@ > =A0.PATH: ${.CURDIR}/../../sys/geom > > =A0PROG=3D =A0newfs > -DPADD=3D ${LIBUFS} > -LDADD=3D -lufs > +DPADD=3D ${LIBUFS} ${LIBUTIL} > +LDADD=3D -lufs -lutil > =A0SRCS=3D =A0newfs.c mkfs.c geom_bsd_enc.c > > =A0WARNS?=3D =A0 =A0 =A0 =A03 > > Modified: head/sbin/newfs/newfs.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sbin/newfs/newfs.c =A0 =A0 Wed Mar =A03 19:14:05 2010 =A0 =A0 = =A0 =A0(r204653) > +++ head/sbin/newfs/newfs.c =A0 =A0 Wed Mar =A03 19:25:28 2010 =A0 =A0 = =A0 =A0(r204654) > @@ -77,6 +77,8 @@ __FBSDID("$FreeBSD$"); > =A0#include <syslog.h> > =A0#include <unistd.h> > > +#include <libutil.h> > + > =A0#include "newfs.h" > > =A0int =A0 =A0Eflag; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* Erase previous= disk contents */ > @@ -90,19 +92,19 @@ int Jflag; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* enab= le gjournal for file > =A0int =A0 =A0lflag; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* enable multila= bel for file system */ > =A0int =A0 =A0nflag; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* do not create = .snap directory */ > =A0intmax_t fssize; =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* file system size */ > -int =A0 =A0sectorsize; =A0 =A0 =A0 =A0 =A0 =A0 /* bytes/sector */ > +int64_t =A0 =A0 =A0 =A0sectorsize; =A0 =A0 =A0 =A0 =A0 =A0 /* bytes/sect= or */ > =A0int =A0 =A0realsectorsize; =A0 =A0 =A0 =A0 /* bytes/sector in hardware= */ > -int =A0 =A0fsize =3D 0; =A0 =A0 =A0 =A0 =A0 =A0 =A0/* fragment size */ > -int =A0 =A0bsize =3D 0; =A0 =A0 =A0 =A0 =A0 =A0 =A0/* block size */ > -int =A0 =A0maxbsize =3D 0; =A0 =A0 =A0 =A0 =A0 /* maximum clustering */ > -int =A0 =A0maxblkspercg =3D MAXBLKSPERCG; /* maximum blocks per cylinder= group */ > +int64_t =A0 =A0 =A0 =A0fsize =3D 0; =A0 =A0 =A0 =A0 =A0 =A0 =A0/* fragme= nt size */ > +int64_t =A0 =A0 =A0 =A0bsize =3D 0; =A0 =A0 =A0 =A0 =A0 =A0 =A0/* block = size */ > +int64_t =A0 =A0 =A0 =A0maxbsize =3D 0; =A0 =A0 =A0 =A0 =A0 /* maximum cl= ustering */ > +int64_t =A0 =A0 =A0 =A0maxblkspercg =3D MAXBLKSPERCG; /* maximum blocks = per cylinder group */ > =A0int =A0 =A0minfree =3D MINFREE; =A0 =A0 =A0/* free space threshold */ > =A0int =A0 =A0opt =3D DEFAULTOPT; =A0 =A0 =A0 /* optimization preference = (space or time) */ > -int =A0 =A0density; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* number of bytes pe= r inode */ > -int =A0 =A0maxcontig =3D 0; =A0 =A0 =A0 =A0 =A0/* max contiguous blocks = to allocate */ > -int =A0 =A0maxbpg; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* maximum blocks per= file in a cyl group */ > -int =A0 =A0avgfilesize =3D AVFILESIZ;/* expected average file size */ > -int =A0 =A0avgfilesperdir =3D AFPDIR;/* expected number of files per dir= ectory */ > +int64_t =A0 =A0 =A0 =A0density; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* number= of bytes per inode */ > +int64_t =A0 =A0 =A0 =A0maxcontig =3D 0; =A0 =A0 =A0 =A0 =A0/* max contig= uous blocks to allocate */ > +int64_t =A0 =A0 =A0 =A0maxbpg; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* maximu= m blocks per file in a cyl group */ > +int64_t =A0 =A0 =A0 =A0avgfilesize =3D AVFILESIZ;/* expected average fil= e size */ > +int64_t =A0 =A0 =A0 =A0avgfilesperdir =3D AFPDIR;/* expected number of f= iles per directory */ > =A0u_char *volumelabel =3D NULL; =A0 =A0/* volume label for filesystem */ > =A0struct uufsd disk; =A0 =A0 =A0 =A0 =A0 =A0 /* libufs disk structure */ > > @@ -117,7 +119,6 @@ static void getfssize(intmax_t *, const > =A0static struct disklabel *getdisklabel(char *s); > =A0static void rewritelabel(char *s, struct disklabel *lp); > =A0static void usage(void); > -static int parselength(const char *ls, int *sz); > > =A0ufs2_daddr_t part_ofs; /* partition offset in blocks, used with files = */ > > @@ -170,7 +171,7 @@ main(int argc, char *argv[]) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Rflag =3D 1; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'S': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , §orsize); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, §orsize); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || sectorsize= <=3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad sector size", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > @@ -184,13 +185,13 @@ main(int argc, char *argv[]) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Xflag++; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'a': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &maxcontig); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &maxcontig); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || maxcontig = <=3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad maximum contiguous blocks", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0op= targ); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'b': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &bsize); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &bsize); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errx(1, "= %s: bad block size", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 o= ptarg); > @@ -202,39 +203,39 @@ main(int argc, char *argv[]) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0op= targ, MAXBSIZE); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'c': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &maxblkspercg); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &maxblkspercg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || maxblksper= cg <=3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad blocks per cylinder group", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0op= targ); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'd': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &maxbsize); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &maxbsize); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || maxbsize <= MINBSIZE) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad extent block size", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'e': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &maxbpg); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &maxbpg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || maxbpg <= =3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%s: bad block= s per file in a cylinder group", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0op= targ); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'f': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &fsize); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &fsize); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || fsize <=3D= 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad fragment size", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'g': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &avgfilesize); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &avgfilesize); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || avgfilesiz= e <=3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad average file size", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'h': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &avgfilesperdir); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &avgfilesperdir); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || avgfilespe= rdir <=3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errx(1, "%s: = bad average files per dir", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 'i': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D parselength(optarg= , &density); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta= rg, &density); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (rval < 0 || density <= =3D 0) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(1, "%= s: bad bytes per inode", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > @@ -495,62 +496,3 @@ usage() > =A0 =A0 =A0 =A0fprintf(stderr, "\t-s file system size (sectors)\n"); > =A0 =A0 =A0 =A0exit(1); > =A0} > - > -/* > - * Return the numeric value of a string given in the form [+-][0-9]+[GMK= T] > - * or -1 on format error or overflow. > - */ > -static int > -parselength(const char *ls, int *sz) > -{ > - =A0 =A0 =A0 off_t length, oflow; > - =A0 =A0 =A0 int lsign; > - > - =A0 =A0 =A0 length =3D 0; > - =A0 =A0 =A0 lsign =3D 1; > - > - =A0 =A0 =A0 switch (*ls) { > - =A0 =A0 =A0 case '-': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 lsign =3D -1; > - =A0 =A0 =A0 case '+': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ls++; > - =A0 =A0 =A0 } > - > -#define ASSIGN_CHK_OFLOW(x, y) =A0if (x < y) return -1; y =3D x > - =A0 =A0 =A0 /* > - =A0 =A0 =A0 =A0* Calculate the value of the decimal digit string, faili= ng > - =A0 =A0 =A0 =A0* on overflow. > - =A0 =A0 =A0 =A0*/ > - =A0 =A0 =A0 while (isdigit(*ls)) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 10 + *ls++ - '0'; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 } > - > - =A0 =A0 =A0 switch (*ls) { > - =A0 =A0 =A0 case 'T': > - =A0 =A0 =A0 case 't': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'G': > - =A0 =A0 =A0 case 'g': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'M': > - =A0 =A0 =A0 case 'm': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'K': > - =A0 =A0 =A0 case 'k': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (ls[1] !=3D '\0') > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return -1; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case '\0': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > - =A0 =A0 =A0 default: > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 return -1; > - =A0 =A0 =A0 } > - > - =A0 =A0 =A0 *sz =3D length * lsign; > - =A0 =A0 =A0 return 0; > -} > > Modified: head/sbin/newfs/newfs.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sbin/newfs/newfs.h =A0 =A0 Wed Mar =A03 19:14:05 2010 =A0 =A0 = =A0 =A0(r204653) > +++ head/sbin/newfs/newfs.h =A0 =A0 Wed Mar =A03 19:25:28 2010 =A0 =A0 = =A0 =A0(r204654) > @@ -86,19 +86,19 @@ extern int =A0Jflag; =A0 =A0 =A0 =A0 =A0/* enable gjo= urnal fo > =A0extern int =A0 =A0 lflag; =A0 =A0 =A0 =A0 =A0/* enable multilabel MAC = for file system */ > =A0extern int =A0 =A0 nflag; =A0 =A0 =A0 =A0 =A0/* do not create .snap di= rectory */ > =A0extern intmax_t =A0 =A0 =A0 =A0fssize; =A0 =A0 =A0 =A0 /* file system = size */ > -extern int =A0 =A0 sectorsize; =A0 =A0 /* bytes/sector */ > +extern int64_t sectorsize; =A0 =A0 /* bytes/sector */ > =A0extern int =A0 =A0 realsectorsize; /* bytes/sector in hardware*/ > -extern int =A0 =A0 fsize; =A0 =A0 =A0 =A0 =A0/* fragment size */ > -extern int =A0 =A0 bsize; =A0 =A0 =A0 =A0 =A0/* block size */ > -extern int =A0 =A0 maxbsize; =A0 =A0 =A0 /* maximum clustering */ > -extern int =A0 =A0 maxblkspercg; =A0 /* maximum blocks per cylinder grou= p */ > +extern int64_t fsize; =A0 =A0 =A0 =A0 =A0/* fragment size */ > +extern int64_t bsize; =A0 =A0 =A0 =A0 =A0/* block size */ > +extern int64_t maxbsize; =A0 =A0 =A0 /* maximum clustering */ > +extern int64_t maxblkspercg; =A0 /* maximum blocks per cylinder group */ > =A0extern int =A0 =A0 minfree; =A0 =A0 =A0 =A0/* free space threshold */ > =A0extern int =A0 =A0 opt; =A0 =A0 =A0 =A0 =A0 =A0/* optimization prefere= nce (space or time) */ > -extern int =A0 =A0 density; =A0 =A0 =A0 =A0/* number of bytes per inode = */ > -extern int =A0 =A0 maxcontig; =A0 =A0 =A0/* max contiguous blocks to all= ocate */ > -extern int =A0 =A0 maxbpg; =A0 =A0 =A0 =A0 /* maximum blocks per file in= a cyl group */ > -extern int =A0 =A0 avgfilesize; =A0 =A0/* expected average file size */ > -extern int =A0 =A0 avgfilesperdir; /* expected number of files per direc= tory */ > +extern int64_t density; =A0 =A0 =A0 =A0/* number of bytes per inode */ > +extern int64_t maxcontig; =A0 =A0 =A0/* max contiguous blocks to allocat= e */ > +extern int64_t maxbpg; =A0 =A0 =A0 =A0 /* maximum blocks per file in a c= yl group */ > +extern int64_t avgfilesize; =A0 =A0/* expected average file size */ > +extern int64_t avgfilesperdir; /* expected number of files per directory= */ > =A0extern u_char =A0*volumelabel; =A0 /* volume label for filesystem */ > =A0extern struct uufsd disk; =A0 =A0 =A0/* libufs disk structure */ > > > Modified: head/usr.bin/truncate/Makefile > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/usr.bin/truncate/Makefile =A0 =A0 =A0Wed Mar =A03 19:14:05 2010 = =A0 =A0 =A0 =A0(r204653) > +++ head/usr.bin/truncate/Makefile =A0 =A0 =A0Wed Mar =A03 19:25:28 2010 = =A0 =A0 =A0 =A0(r204654) > @@ -1,5 +1,7 @@ > =A0# $FreeBSD$ > > =A0PROG=3D =A0 =A0 =A0 =A0 =A0truncate > +DPADD=3D =A0 =A0 =A0 =A0 ${LIBUTIL} > +LDADD=3D =A0 =A0 =A0 =A0 -lutil > > =A0.include <bsd.prog.mk> > > Modified: head/usr.bin/truncate/truncate.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/usr.bin/truncate/truncate.c =A0 =A0Wed Mar =A03 19:14:05 2010 = =A0 =A0 =A0 =A0(r204653) > +++ head/usr.bin/truncate/truncate.c =A0 =A0Wed Mar =A03 19:25:28 2010 = =A0 =A0 =A0 =A0(r204654) > @@ -40,7 +40,8 @@ static const char rcsid[] =3D > =A0#include <stdlib.h> > =A0#include <unistd.h> > > -static int =A0 =A0 parselength(char *, off_t *); > +#include <libutil.h> > + > =A0static void =A0 =A0usage(void); > > =A0static int =A0 =A0 no_create; > @@ -53,7 +54,8 @@ main(int argc, char **argv) > =A0{ > =A0 =A0 =A0 =A0struct stat =A0 =A0 sb; > =A0 =A0 =A0 =A0mode_t =A0omode; > - =A0 =A0 =A0 off_t =A0 oflow, rsize, sz, tsize; > + =A0 =A0 =A0 off_t =A0 oflow, rsize, tsize; > + =A0 =A0 =A0 int64_t sz; > =A0 =A0 =A0 =A0int =A0 =A0 ch, error, fd, oflags; > =A0 =A0 =A0 =A0char =A0 *fname, *rname; > > @@ -71,7 +73,7 @@ main(int argc, char **argv) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0rname =3D optarg; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0break; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 's': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (parselength(optarg, &sz= ) =3D=3D -1) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (expand_number(optarg, &= sz) =3D=3D -1) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0errx(EXIT_= FAILURE, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0"i= nvalid size argument `%s'", optarg); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (*optarg =3D=3D '+' || = *optarg =3D=3D '-') > @@ -148,65 +150,6 @@ main(int argc, char **argv) > =A0 =A0 =A0 =A0return error ? EXIT_FAILURE : EXIT_SUCCESS; > =A0} > > -/* > - * Return the numeric value of a string given in the form [+-][0-9]+[GMK= T] > - * or -1 on format error or overflow. > - */ > -static int > -parselength(char *ls, off_t *sz) > -{ > - =A0 =A0 =A0 off_t =A0 length, oflow; > - =A0 =A0 =A0 int =A0 =A0 lsign; > - > - =A0 =A0 =A0 length =3D 0; > - =A0 =A0 =A0 lsign =3D 1; > - > - =A0 =A0 =A0 switch (*ls) { > - =A0 =A0 =A0 case '-': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 lsign =3D -1; > - =A0 =A0 =A0 case '+': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ls++; > - =A0 =A0 =A0 } > - > -#define =A0 =A0 =A0 =A0ASSIGN_CHK_OFLOW(x, y) =A0if (x < y) return -1; y= =3D x > - =A0 =A0 =A0 /* > - =A0 =A0 =A0 =A0* Calculate the value of the decimal digit string, faili= ng > - =A0 =A0 =A0 =A0* on overflow. > - =A0 =A0 =A0 =A0*/ > - =A0 =A0 =A0 while (isdigit(*ls)) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 10 + *ls++ - '0'; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 } > - > - =A0 =A0 =A0 switch (*ls) { > - =A0 =A0 =A0 case 'T': > - =A0 =A0 =A0 case 't': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'G': > - =A0 =A0 =A0 case 'g': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'M': > - =A0 =A0 =A0 case 'm': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case 'K': > - =A0 =A0 =A0 case 'k': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (ls[1] !=3D '\0') > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return -1; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 oflow =3D length * 1024; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 ASSIGN_CHK_OFLOW(oflow, length); > - =A0 =A0 =A0 case '\0': > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > - =A0 =A0 =A0 default: > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 return -1; > - =A0 =A0 =A0 } > - > - =A0 =A0 =A0 *sz =3D length * lsign; > - =A0 =A0 =A0 return 0; > -} > - > =A0static void > =A0usage(void) > =A0{ >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?82c4140e1003031331y37a7c7a6x935084dbe46743e3>