Skip site navigation (1)Skip section navigation (2)
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=
, &sectorsize);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 rval =3D expand_number(opta=
rg, &sectorsize);
> =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>