svn commit: r210305 - stable/8/sys/kern

Jung-uk Kim jkim at FreeBSD.org
Tue Jul 20 18:55:14 UTC 2010


Author: jkim
Date: Tue Jul 20 18:55:13 2010
New Revision: 210305
URL: http://svn.freebsd.org/changeset/base/210305

Log:
  MFC:	r209836, r209949
  
  Implement optional 'precision' for numbers.  Previously, it was parsed but
  ignored.  Some third-party modules (e.g., ACPICA) prefer this format over
  zero padding flag '0'.

Modified:
  stable/8/sys/kern/subr_prf.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/kern/subr_prf.c
==============================================================================
--- stable/8/sys/kern/subr_prf.c	Tue Jul 20 18:43:15 2010	(r210304)
+++ stable/8/sys/kern/subr_prf.c	Tue Jul 20 18:55:13 2010	(r210305)
@@ -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 + imax(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-stable mailing list