On Sat, 9 May 2009, Joachim Schipper wrote:
> On Sat, May 09, 2009 at 02:27:08PM +0200, Mark Kettenis wrote:
> > > Date: Sat, 9 May 2009 12:20:25 +0200
> > > From: Joachim Schipper <[email protected]>
> > >
> > > The bioctl(8) man page helpfully suggests dd for zeroing out the
> > > disklabel etc. on the new disk. However, the command doesn't work, since
> > > OpenBSD's dd doesn't understand '1M'.
> >
> > Uh, indeed it doesn't, but it does understand '1m'.
>
> Yeah, sorry. Still, it should be fixed.
I think we should fix dd(1).
Index: args.c
===================================================================
RCS file: /cvs/src/bin/dd/args.c,v
retrieving revision 1.17
diff -u -p -r1.17 args.c
--- args.c 1 Nov 2006 05:46:20 -0000 1.17
+++ args.c 10 May 2009 22:51:38 -0000
@@ -341,6 +341,7 @@ get_bsz(char *val)
errx(1, "%s: illegal numeric value", oper);
switch(*expr) {
+ case 'B':
case 'b':
t = num;
num *= 512;
@@ -348,6 +349,7 @@ get_bsz(char *val)
goto erange;
++expr;
break;
+ case 'K':
case 'k':
t = num;
num *= 1024;
@@ -355,6 +357,7 @@ get_bsz(char *val)
goto erange;
++expr;
break;
+ case 'M':
case 'm':
t = num;
num *= 1048576;
@@ -362,6 +365,7 @@ get_bsz(char *val)
goto erange;
++expr;
break;
+ case 'W':
case 'w':
t = num;
num *= sizeof(int);
@@ -411,6 +415,7 @@ get_off(char *val)
errx(1, "%s: illegal numeric value", oper);
switch(*expr) {
+ case 'B':
case 'b':
t = num;
num *= 512;
@@ -418,6 +423,7 @@ get_off(char *val)
goto erange;
++expr;
break;
+ case 'K':
case 'k':
t = num;
num *= 1024;
@@ -425,6 +431,7 @@ get_off(char *val)
goto erange;
++expr;
break;
+ case 'M':
case 'm':
t = num;
num *= 1048576;
@@ -432,6 +439,7 @@ get_off(char *val)
goto erange;
++expr;
break;
+ case 'W':
case 'w':
t = num;
num *= sizeof(int);