diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-30 09:21:57 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-30 09:21:57 +0000 |
commit | 3899822d26574cede351f206d7ba6052feac3fb5 (patch) | |
tree | a9093c0698d073809cf53d1e73d609e3bccd73f4 /strftime.c | |
parent | cca7d596d4370d332c6a5945c0e7fbdbe464a59d (diff) |
merges r20340 from trunk into ruby_1_9_1.
* strftime.c (rb_strftime): A width specifier for %t and %n should
work. [ruby-dev:37160]
* test/ruby/test_time.rb (test_strftime): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'strftime.c')
-rw-r--r-- | strftime.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/strftime.c b/strftime.c index 2c98164c0b..3a88208b1f 100644 --- a/strftime.c +++ b/strftime.c @@ -270,6 +270,16 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept goto unknown; \ } while (0) #define NEEDS(n) do if (s + (n) >= endp - 1) goto err; while (0) +#define FILL_PADDING(i) do { \ + if (!(flags & BIT_OF(LEFT)) && precision > i) { \ + NEEDS(precision); \ + memset(s, padding ? padding : ' ', precision - i); \ + s += precision - i; \ + } \ + else { \ + NEEDS(i); \ + } \ +} while (0); #define FMT(def_pad, def_prec, fmt, val) \ do { \ int l; \ @@ -540,12 +550,12 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept #ifdef SYSV_EXT case 'n': /* same as \n */ - NEEDS(1); + FILL_PADDING(1); *s++ = '\n'; continue; case 't': /* same as \t */ - NEEDS(1); + FILL_PADDING(1); *s++ = '\t'; continue; @@ -741,14 +751,7 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept break; } if (i) { - if (!(flags & BIT_OF(LEFT)) && precision > i) { - NEEDS(precision); - memset(s, padding ? padding : ' ', precision - i); - s += precision - i; - } - else { - NEEDS(i); - } + FILL_PADDING(i); memcpy(s, tp, i); switch (flags & (BIT_OF(UPPER)|BIT_OF(LOWER))) { case BIT_OF(UPPER): |