svn commit: r265550 - user/marcel/mkimg

Marcel Moolenaar marcel at FreeBSD.org
Wed May 7 15:08:01 UTC 2014


Author: marcel
Date: Wed May  7 15:08:00 2014
New Revision: 265550
URL: http://svnweb.freebsd.org/changeset/base/265550

Log:
  Abstract the use of ftruncate(2) behind mkimg_set_size().

Modified:
  user/marcel/mkimg/bsd.c
  user/marcel/mkimg/mkimg.c
  user/marcel/mkimg/mkimg.h
  user/marcel/mkimg/scheme.c
  user/marcel/mkimg/vtoc8.c

Modified: user/marcel/mkimg/bsd.c
==============================================================================
--- user/marcel/mkimg/bsd.c	Wed May  7 15:01:14 2014	(r265549)
+++ user/marcel/mkimg/bsd.c	Wed May  7 15:08:00 2014	(r265550)
@@ -80,7 +80,9 @@ bsd_write(int fd, lba_t imgsz, void *boo
 		memset(buf, 0, BBSIZE);
 
 	imgsz = ncyls * nheads * nsecs;
-	ftruncate(fd, imgsz * secsz);
+	error = mkimg_set_size(fd, imgsz);
+	if (error)
+		return (error);
 
 	d = (void *)(buf + secsz);
 	le32enc(&d->d_magic, DISKMAGIC);

Modified: user/marcel/mkimg/mkimg.c
==============================================================================
--- user/marcel/mkimg/mkimg.c	Wed May  7 15:01:14 2014	(r265549)
+++ user/marcel/mkimg/mkimg.c	Wed May  7 15:08:00 2014	(r265550)
@@ -317,6 +317,15 @@ fdcopy(int src, lba_t sblk, int dst, lba
 }
 
 int
+mkimg_set_size(int fd, lba_t blk)
+{
+
+	if (ftruncate(fd, blk * secsz) == -1)
+		return (errno);
+	return (0);
+}
+
+int
 mkimg_write(int fd, lba_t blk, void *buf, ssize_t len)
 {
 

Modified: user/marcel/mkimg/mkimg.h
==============================================================================
--- user/marcel/mkimg/mkimg.h	Wed May  7 15:01:14 2014	(r265549)
+++ user/marcel/mkimg/mkimg.h	Wed May  7 15:08:00 2014	(r265550)
@@ -67,6 +67,7 @@ round_block(lba_t n)
 	return ((n + b - 1) & ~(b - 1));
 }
 
+int mkimg_set_size(int fd, lba_t blk);
 int mkimg_write(int fd, lba_t blk, void *buf, ssize_t len);
 
 #endif /* _MKIMG_MKIMG_H_ */

Modified: user/marcel/mkimg/scheme.c
==============================================================================
--- user/marcel/mkimg/scheme.c	Wed May  7 15:01:14 2014	(r265549)
+++ user/marcel/mkimg/scheme.c	Wed May  7 15:08:00 2014	(r265550)
@@ -189,9 +189,8 @@ scheme_write(int fd, lba_t end)
 	cylsz = nsecs * nheads;
 	ncyls = (end + cylsz - 1) / cylsz;
 
-	if (ftruncate(fd, end * secsz) == -1)
-		return (errno);
-
-	error = scheme->write(fd, end, bootcode);
+	error = mkimg_set_size(fd, end);
+	if (!error)
+		error = scheme->write(fd, end, bootcode);
 	return (error);
 }

Modified: user/marcel/mkimg/vtoc8.c
==============================================================================
--- user/marcel/mkimg/vtoc8.c	Wed May  7 15:01:14 2014	(r265549)
+++ user/marcel/mkimg/vtoc8.c	Wed May  7 15:08:00 2014	(r265550)
@@ -86,7 +86,9 @@ vtoc8_write(int fd, lba_t imgsz, void *b
 	be16enc(&vtoc8.nsecs, nsecs);
 	be16enc(&vtoc8.magic, VTOC_MAGIC);
 
-	ftruncate(fd, imgsz * secsz);
+	error = mkimg_set_size(fd, imgsz);
+	if (error)
+		return (error);
 
 	be32enc(&vtoc8.map[VTOC_RAW_PART].nblks, imgsz);
 	STAILQ_FOREACH(part, &partlist, link) {


More information about the svn-src-user mailing list