Module Name:    src
Committed By:   dholland
Date:           Mon Aug 15 02:19:50 UTC 2011

Modified Files:
        src/sbin/resize_ffs: Makefile resize_ffs.c

Log Message:
WARNS = 4


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sbin/resize_ffs/Makefile
cvs rdiff -u -r1.29 -r1.30 src/sbin/resize_ffs/resize_ffs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/resize_ffs/Makefile
diff -u src/sbin/resize_ffs/Makefile:1.3 src/sbin/resize_ffs/Makefile:1.4
--- src/sbin/resize_ffs/Makefile:1.3	Wed Jan  5 02:18:15 2011
+++ src/sbin/resize_ffs/Makefile	Mon Aug 15 02:19:50 2011
@@ -1,9 +1,7 @@
-#	$NetBSD: Makefile,v 1.3 2011/01/05 02:18:15 riz Exp $
+#	$NetBSD: Makefile,v 1.4 2011/08/15 02:19:50 dholland Exp $
 
 .include <bsd.own.mk>
 
-WARNS?=	3	# XXX: sign-compare issues
-
 PROG=resize_ffs
 MAN=resize_ffs.8
 SRCS=resize_ffs.c ffs_bswap.c

Index: src/sbin/resize_ffs/resize_ffs.c
diff -u src/sbin/resize_ffs/resize_ffs.c:1.29 src/sbin/resize_ffs/resize_ffs.c:1.30
--- src/sbin/resize_ffs/resize_ffs.c:1.29	Mon Aug 15 00:30:25 2011
+++ src/sbin/resize_ffs/resize_ffs.c	Mon Aug 15 02:19:50 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: resize_ffs.c,v 1.29 2011/08/15 00:30:25 dholland Exp $	*/
+/*	$NetBSD: resize_ffs.c,v 1.30 2011/08/15 02:19:50 dholland Exp $	*/
 /* From sources sent on February 17, 2003 */
 /*-
  * As its sole author, I explicitly place this code in the public
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: resize_ffs.c,v 1.29 2011/08/15 00:30:25 dholland Exp $");
+__RCSID("$NetBSD: resize_ffs.c,v 1.30 2011/08/15 02:19:50 dholland Exp $");
 
 #include <sys/disk.h>
 #include <sys/disklabel.h>
@@ -60,7 +60,7 @@
 #include <unistd.h>
 
 /* new size of file system, in sectors */
-static uint64_t newsize;
+static int64_t newsize;
 
 /* fd open onto disk device or file */
 static int fd;
@@ -137,10 +137,10 @@
 				 * block. */
 
 /* resize_ffs works directly on dinodes, adapt blksize() */
-#define dblksize(fs, dip, lbn) \
-	(((lbn) >= NDADDR || DIP((dip), di_size) >= lblktosize(fs, (lbn) + 1)) \
+#define dblksize(fs, dip, lbn, filesize) \
+	(((lbn) >= NDADDR || (filesize) >= lblktosize(fs, (lbn) + 1)) \
 	    ? (fs)->fs_bsize						       \
-	    : (fragroundup(fs, blkoff(fs, DIP((dip), di_size)))))
+	    : (fragroundup(fs, blkoff(fs, (filesize)))))
 
 
 /*
@@ -645,7 +645,7 @@
 	int cgn;		/* number of cg hand currently points into */
 	int fwc;		/* frag-within-cg number of frag hand points
 				 * to */
-	int run;		/* length of run of free frags seen so far */
+	unsigned int run;	/* length of run of free frags seen so far */
 	int secondpass;		/* have we wrapped from end of fs to
 				 * beginning? */
 	unsigned char *bits;	/* cg_blksfree()[] for cg hand points into */
@@ -1041,22 +1041,24 @@
 #define MDB_INDIR_PRE  2
 #define MDB_INDIR_POST 3
 
-typedef void (*mark_callback_t) (unsigned int blocknum, unsigned int nfrags,
+typedef void (*mark_callback_t) (off_t blocknum, unsigned int nfrags,
 				 unsigned int blksize, int opcode);
 
 /* Helper function - handles a data block.  Calls the callback
  * function and returns number of bytes occupied in file (actually,
  * rounded up to a frag boundary).  The name is historical.  */
 static int
-markblk(mark_callback_t fn, union dinode * di, int bn, off_t o)
+markblk(mark_callback_t fn, union dinode * di, off_t bn, off_t o)
 {
 	int sz;
 	int nb;
+	off_t filesize;
 
-	if (o >= DIP(di,di_size))
+	filesize = DIP(di,di_size);
+	if (o >= filesize)
 		return (0);
-	sz = dblksize(newsb, di, lblkno(newsb, o));
-	nb = (sz > DIP(di,di_size) - o) ? DIP(di,di_size) - o : sz;
+	sz = dblksize(newsb, di, lblkno(newsb, o), filesize);
+	nb = (sz > filesize - o) ? filesize - o : sz;
 	if (bn)
 		(*fn) (bn, numfrags(newsb, sz), nb, MDB_DATA);
 	return (sz);
@@ -1068,10 +1070,11 @@
  * For the sake of update_for_data_move(), we read the indirect block
  * _after_ making the _PRE callback.  The name is historical.  */
 static int
-markiblk(mark_callback_t fn, union dinode * di, int bn, off_t o, int lev)
+markiblk(mark_callback_t fn, union dinode * di, off_t bn, off_t o, int lev)
 {
 	int i;
 	int j;
+	unsigned k;
 	int tot;
 	static int32_t indirblk1[howmany(MAXBSIZE, sizeof(int32_t))];
 	static int32_t indirblk2[howmany(MAXBSIZE, sizeof(int32_t))];
@@ -1091,8 +1094,8 @@
 	(*fn) (bn, newsb->fs_frag, newsb->fs_bsize, MDB_INDIR_PRE);
 	readat(fsbtodb(newsb, bn), indirblks[lev], newsb->fs_bsize);
 	if (needswap)
-		for (i = 0; i < howmany(MAXBSIZE, sizeof(int32_t)); i++)
-			indirblks[lev][i] = bswap32(indirblks[lev][i]);
+		for (k = 0; k < howmany(MAXBSIZE, sizeof(int32_t)); k++)
+			indirblks[lev][k] = bswap32(indirblks[lev][k]);
 	tot = 0;
 	for (i = 0; i < NINDIR(newsb); i++) {
 		j = markiblk(fn, di, indirblks[lev][i], o, lev - 1);
@@ -1148,11 +1151,13 @@
 dblk_callback(union dinode * di, unsigned int inum, void *arg)
 {
 	mark_callback_t fn;
+	off_t filesize;
 
+	filesize = DIP(di,di_size);
 	fn = (mark_callback_t) arg;
 	switch (DIP(di,di_mode) & IFMT) {
 	case IFLNK:
-		if (DIP(di,di_size) > newsb->fs_maxsymlinklen) {
+		if (filesize > newsb->fs_maxsymlinklen) {
 	case IFDIR:
 	case IFREG:
 			map_inode_data_blocks(di, fn);
@@ -1264,7 +1269,7 @@
 static void
 fragmove(struct cg * cg, int base, unsigned int start, unsigned int n)
 {
-	int i;
+	unsigned int i;
 	int run;
 
 	run = 0;
@@ -1299,7 +1304,7 @@
  *  lurking here.
  */
 static void
-evict_data(struct cg * cg, unsigned int minfrag, unsigned int nfrag)
+evict_data(struct cg * cg, unsigned int minfrag, int nfrag)
 {
 	int base;	/* base of cg (in frags from beginning of fs) */
 
@@ -1377,7 +1382,7 @@
 	maxrun = sizeof(buf) / newsb->fs_fsize;
 	run = 0;
 	for (i = 0; i < oldsb->fs_size; i++) {
-		if ((blkmove[i] == i) ||
+		if ((blkmove[i] == (unsigned)i /*XXX cast*/) ||
 		    (run >= maxrun) ||
 		    ((run > 0) &&
 			(blkmove[i] != blkmove[i - 1] + 1))) {
@@ -1389,7 +1394,7 @@
 			}
 			run = 0;
 		}
-		if (blkmove[i] != i)
+		if (blkmove[i] != (unsigned)i /*XXX cast*/)
 			run++;
 	}
 	if (run > 0) {
@@ -1414,7 +1419,7 @@
 
 	rv = 0;
 	for (; n > 0; n--, vec++) {
-		if (blkmove[*vec] != *vec) {
+		if (blkmove[*vec] != (unsigned)*vec /*XXX cast*/) {
 			*vec = blkmove[*vec];
 			rv++;
 		}
@@ -1424,19 +1429,20 @@
 static void
 moveblocks_callback(union dinode * di, unsigned int inum, void *arg)
 {
-	void *dblkptr, *iblkptr; /* XXX */
+	int32_t *dblkptr, *iblkptr;
 
 	switch (DIP(di,di_mode) & IFMT) {
 	case IFLNK:
-		if (DIP(di,di_size) <= oldsb->fs_maxsymlinklen) {
+		if ((off_t)DIP(di,di_size) <= oldsb->fs_maxsymlinklen) {
 			break;
 		}
 		/* FALLTHROUGH */
 	case IFDIR:
 	case IFREG:
 		if (is_ufs2) {
-			dblkptr = &(di->dp2.di_db[0]);
-			iblkptr = &(di->dp2.di_ib[0]);
+			/* XXX these are not int32_t and this is WRONG! */
+			dblkptr = (void *) &(di->dp2.di_db[0]);
+			iblkptr = (void *) &(di->dp2.di_ib[0]);
 		} else {
 			dblkptr = &(di->dp1.di_db[0]);
 			iblkptr = &(di->dp1.di_ib[0]);
@@ -1456,10 +1462,10 @@
 }
 
 static void
-moveindir_callback(unsigned int off, unsigned int nfrag, unsigned int nbytes,
+moveindir_callback(off_t off, unsigned int nfrag, unsigned int nbytes,
 		   int kind)
 {
-	int i;
+	unsigned int i;
 
 	if (kind == MDB_INDIR_PRE) {
 		int32_t blk[howmany(MAXBSIZE, sizeof(int32_t))];
@@ -1602,8 +1608,8 @@
 static void
 perform_inode_move(void)
 {
-	int i;
-	int ni;
+	unsigned int i;
+	unsigned int ni;
 
 	ni = oldsb->fs_ipg * oldsb->fs_ncg;
 	for (i = 0; i < ni; i++) {
@@ -1644,7 +1650,7 @@
  *  directory to point to new inode locations.
  */
 static void
-update_dir_data(unsigned int bn, unsigned int size, unsigned int nb, int kind)
+update_dir_data(off_t bn, unsigned int size, unsigned int nb, int kind)
 {
 	if (kind == MDB_DATA) {
 		union {
@@ -2022,7 +2028,7 @@
 	}
 }
 
-static uint32_t
+static off_t
 get_dev_size(char *dev_name)
 {
 	struct dkwedge_info dkw;
@@ -2068,7 +2074,7 @@
 		switch (ch) {
 		case 's':
 			SFlag = 1;
-			newsize = (size_t)strtoul(optarg, NULL, 10);
+			newsize = strtoll(optarg, NULL, 10);
 			if(newsize < 1) {
 				usage();
 			}

Reply via email to