svn commit: r263831 - user/marcel/mkimg
Marcel Moolenaar
marcel at FreeBSD.org
Thu Mar 27 20:14:41 UTC 2014
Author: marcel
Date: Thu Mar 27 20:14:40 2014
New Revision: 263831
URL: http://svnweb.freebsd.org/changeset/base/263831
Log:
1. Add -v option to increase vebosity levels
2. Fix copy-paste bug -- acrually check secsz for being a power of 2
3. Check secsz and blksz parameters
4. Print the sector and block size when -v is given
Modified:
user/marcel/mkimg/mkimg.c
user/marcel/mkimg/mkimg.h
Modified: user/marcel/mkimg/mkimg.c
==============================================================================
--- user/marcel/mkimg/mkimg.c Thu Mar 27 20:13:53 2014 (r263830)
+++ user/marcel/mkimg/mkimg.c Thu Mar 27 20:14:40 2014 (r263831)
@@ -50,11 +50,13 @@ __FBSDID("$FreeBSD$");
struct partlisthead partlist = STAILQ_HEAD_INITIALIZER(partlist);
u_int nparts = 0;
+u_int verbose;
+
u_int ncyls = 0;
u_int nheads = 1;
u_int nsecs = 1;
u_int secsz = 512;
-u_int blksz = 512;
+u_int blksz = 0;
static int bcfd = -1;
static int outfd = 0;
@@ -270,10 +272,6 @@ mkimg(int bfd)
off_t bytesize;
int error, fd;
- if (nparts > scheme_max_parts())
- errc(EX_DATAERR, ENOSPC, "only %d partitions are supported",
- scheme_max_parts());
-
error = scheme_bootcode(bfd);
if (error)
errc(EX_DATAERR, error, "boot code");
@@ -325,7 +323,7 @@ main(int argc, char *argv[])
{
int c, error;
- while ((c = getopt(argc, argv, "b:o:p:s:zH:P:S:T:")) != -1) {
+ while ((c = getopt(argc, argv, "b:o:p:s:vzH:P:S:T:")) != -1) {
switch (c) {
case 'b': /* BOOT CODE */
if (bcfd != -1)
@@ -354,6 +352,9 @@ main(int argc, char *argv[])
if (error)
errc(EX_DATAERR, error, "scheme");
break;
+ case 'v':
+ verbose++;
+ break;
case 'z': /* SPARSE OUTPUT */
break;
case 'H': /* GEOMETRY: HEADS */
@@ -370,7 +371,7 @@ main(int argc, char *argv[])
break;
case 'S': /* GEOMETRY: LOGICAL SECTOR SIZE */
error = parse_number(&secsz, 512, INT_MAX + 1, optarg);
- if (error == 0 && !pwr_of_two(blksz))
+ if (error == 0 && !pwr_of_two(secsz))
error = EINVAL;
if (error)
errc(EX_DATAERR, error, "logical sector size");
@@ -384,6 +385,7 @@ main(int argc, char *argv[])
usage("unknown option");
}
}
+
if (argc > optind)
usage("trailing arguments");
if (scheme_selected() == NULL)
@@ -391,6 +393,21 @@ main(int argc, char *argv[])
if (nparts == 0)
usage("no partitions");
+ if (secsz > blksz) {
+ if (blksz != 0)
+ errx(EX_DATAERR, "the physical block size cannot "
+ "be smaller than the sector size");
+ blksz = secsz;
+ }
+
+ if (secsz > scheme_max_secsz())
+ errx(EX_DATAERR, "maximum sector size supported is %u; "
+ "size specified is %u", scheme_max_secsz(), secsz);
+
+ if (nparts > scheme_max_parts())
+ errx(EX_DATAERR, "%d partitions supported; %d given",
+ scheme_max_parts(), nparts);
+
if (outfd == 0) {
if (atexit(cleanup) == -1)
err(EX_OSERR, "cannot register cleanup function");
@@ -401,6 +418,11 @@ main(int argc, char *argv[])
} else
tmpfd = outfd;
+ if (verbose) {
+ printf("Logical sector size: %u\n", secsz);
+ printf("Physical block size: %u\n", blksz);
+ }
+
mkimg(bcfd);
if (tmpfd != outfd) {
Modified: user/marcel/mkimg/mkimg.h
==============================================================================
--- user/marcel/mkimg/mkimg.h Thu Mar 27 20:13:53 2014 (r263830)
+++ user/marcel/mkimg/mkimg.h Thu Mar 27 20:14:40 2014 (r263831)
@@ -52,6 +52,8 @@ struct part {
extern STAILQ_HEAD(partlisthead, part) partlist;
extern u_int nparts;
+extern u_int verbose;
+
extern u_int ncyls;
extern u_int nheads;
extern u_int nsecs;
More information about the svn-src-user
mailing list