diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-24 14:29:37 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-24 14:29:37 +0000 |
commit | 361a713f9666305bfbc82bb60da0c6f10d801483 (patch) | |
tree | 9271f92f39424b66c628fb95207def59835cbccd /strftime.c | |
parent | 3380a05bd6d5b3df1ddfba974d88b7e82a85b9ee (diff) | |
download | ruby-361a713f9666305bfbc82bb60da0c6f10d801483.tar.gz |
* strftime.c (rb_strftime): The # flag should work with %a, %A, %b,
%B, and %h. [ruby-dev:37162]
* test/ruby/test_time.rb (test_strftime): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'strftime.c')
-rw-r--r-- | strftime.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/strftime.c b/strftime.c index 3a88208b1f..d6d1f8bd3a 100644 --- a/strftime.c +++ b/strftime.c @@ -318,6 +318,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept continue; case 'a': /* abbreviated weekday name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) i = 1, tp = "?"; else @@ -325,6 +329,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept break; case 'A': /* full weekday name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) i = 1, tp = "?"; else @@ -335,6 +343,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept case 'h': /* abbreviated month name */ #endif case 'b': /* abbreviated month name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) i = 1, tp = "?"; else @@ -342,6 +354,10 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept break; case 'B': /* full month name */ + if (flags & BIT_OF(CHCASE)) { + flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE)); + flags |= BIT_OF(UPPER); + } if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) i = 1, tp = "?"; else |