svn commit: r209836 - head/sys/kern
Jung-uk Kim
jkim at FreeBSD.org
Thu Jul 8 22:13:24 UTC 2010
Author: jkim
Date: Thu Jul 8 22:13:23 2010
New Revision: 209836
URL: http://svn.freebsd.org/changeset/base/209836
Log:
Implement optional 'precision' for numbers. Previously, it was parsed but
ignored. Some third-party modules (e.g., APCICA) prefer this format over
zero padding flag '0'.
Modified:
head/sys/kern/subr_prf.c
Modified: head/sys/kern/subr_prf.c
==============================================================================
--- head/sys/kern/subr_prf.c Thu Jul 8 21:56:05 2010 (r209835)
+++ head/sys/kern/subr_prf.c Thu Jul 8 22:13:23 2010 (r209836)
@@ -800,7 +800,8 @@ number:
neg = 1;
num = -(intmax_t)num;
}
- p = ksprintn(nbuf, num, base, &tmp, upper);
+ p = ksprintn(nbuf, num, base, &n, upper);
+ tmp = 0;
if (sharpflag && num != 0) {
if (base == 8)
tmp++;
@@ -810,10 +811,13 @@ number:
if (neg)
tmp++;
- if (!ladjust && padc != '0' && width
- && (width -= tmp) > 0)
- while (width--)
- PCHAR(padc);
+ if (!ladjust && padc == '0')
+ dwidth = width - tmp;
+ width -= tmp + MAX(dwidth, n);
+ dwidth -= n;
+ if (!ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
if (neg)
PCHAR('-');
if (sharpflag && num != 0) {
@@ -824,16 +828,15 @@ number:
PCHAR('x');
}
}
- if (!ladjust && width && (width -= tmp) > 0)
- while (width--)
- PCHAR(padc);
+ while (dwidth-- > 0)
+ PCHAR('0');
while (*p)
PCHAR(*p--);
- if (ladjust && width && (width -= tmp) > 0)
- while (width--)
- PCHAR(padc);
+ if (ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
break;
default:
More information about the svn-src-head
mailing list