diff src/strftime.c @ 17965:2ef01cc793bf

automatically generated from GPLed version
author Paul Eggert <eggert@twinsun.com>
date Tue, 27 May 1997 03:15:29 +0000
parents 8f3dcea869f5
children 47be751da08b
line wrap: on
line diff
--- a/src/strftime.c	Tue May 27 03:15:15 1997 +0000
+++ b/src/strftime.c	Tue May 27 03:15:29 1997 +0000
@@ -177,6 +177,7 @@
 /* Some systems lack the `memset' function and we don't want to
    introduce additional dependencies.  */
 static const char spaces[16] = "                ";
+static const char zeroes[16] = "0000000000000000";
 
 # define memset_space(P, Len) \
   do {									      \
@@ -191,11 +192,26 @@
       }									      \
     while (_len > 0);							      \
   } while (0)
+
+# define memset_zero(P, Len) \
+  do {									      \
+    int _len = (Len);							      \
+									      \
+    do									      \
+      {									      \
+	int _this = _len > 16 ? 16 : _len;				      \
+	memcpy ((P), zeroes, _this);					      \
+	(P) += _this;							      \
+	_len -= _this;							      \
+      }									      \
+    while (_len > 0);							      \
+  } while (0)
 #else
 # define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len))
+# define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len))
 #endif
 
-#define	add(n, f) \
+#define	add(n, f)							      \
   do									      \
     {									      \
       int _n = (n);							      \
@@ -206,7 +222,12 @@
       if (p)								      \
 	{								      \
 	  if (_delta > 0)						      \
-	    memset_space (p, _delta);					      \
+	    {								      \
+	      if (pad == '0')						      \
+		memset_zero (p, _delta);				      \
+	      else							      \
+		memset_space (p, _delta);				      \
+	    }								      \
 	  f;								      \
 	  p += _n;							      \
 	}								      \