diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-05-21 00:07:57 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-05-21 00:07:57 +0000 |
commit | ea72be0702312b0b10ea93a8a117545c84b6dd78 (patch) | |
tree | 24d81e736d3ef80baf96f650931fa10cec7d61b4 /time | |
parent | 780f64dfed9ff984c1a85fc8d1eb689f5678ebde (diff) | |
download | glibc-ea72be0702312b0b10ea93a8a117545c84b6dd78.tar.gz glibc-ea72be0702312b0b10ea93a8a117545c84b6dd78.tar.xz glibc-ea72be0702312b0b10ea93a8a117545c84b6dd78.zip |
(add): Respect `0' padding flag.
Diffstat (limited to 'time')
-rw-r--r-- | time/strftime.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/time/strftime.c b/time/strftime.c index 898bd6c98c..4cb6c9e260 100644 --- a/time/strftime.c +++ b/time/strftime.c @@ -175,6 +175,7 @@ localtime_r (t, tp) /* 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 { \ @@ -189,11 +190,26 @@ static const char spaces[16] = " "; } \ 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); \ @@ -204,7 +220,12 @@ static const char spaces[16] = " "; if (p) \ { \ if (_delta > 0) \ - memset_space (p, _delta); \ + { \ + if (pad == '0') \ + memset_zero (p, _delta); \ + else \ + memset_space (p, _delta); \ + } \ f; \ p += _n; \ } \ |