From 7513a7dcd41f511878c9886b41685d9212679e7f Mon Sep 17 00:00:00 2001
From: Sheldon Hearn <sheldonh@FreeBSD.org>
Date: Wed, 22 Dec 1999 14:59:58 +0000
Subject: [PATCH] Fix zero-padding for printf formats which include a precision
 or width.

This is a vendor-supplied patch.

Requested by:	bde
Submitted by:	Aharon Robbins <arnold@skeeve.com>
---
 contrib/awk/builtin.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/contrib/awk/builtin.c b/contrib/awk/builtin.c
index a4e5a0812cf6..00ff75707f99 100644
--- a/contrib/awk/builtin.c
+++ b/contrib/awk/builtin.c
@@ -459,7 +459,13 @@ register NODE *carg;
 			break;
 
 		case '0':
-			zero_flag = TRUE;
+			/*
+			 * Only turn on zero_flag if we haven't seen
+			 * the field width or precision yet.  Otherwise,
+			 * screws up floating point formatting.
+			 */
+			if (cur == & fw)
+				zero_flag = TRUE;
 			if (lj)
 				goto retry;
 			/* FALL through */
@@ -1998,7 +2004,7 @@ NODE *tree;
 	free_temp(tmp);
 
 	if (do_lint) {
-		if (uval < 0)
+		if (d < 0)
 			warning("compl(%lf): negative value will give strange results", d);
 		if (double_to_int(d) != d)
 			warning("compl(%lf): fractional value will be truncated", d);