ruby-changes:8866
From: yugui <ko1@a...>
Date: Sun, 30 Nov 2008 18:23:28 +0900 (JST)
Subject: [ruby-changes:8866] Ruby:r20403 (ruby_1_9_1): merges r20340 from trunk into ruby_1_9_1.
yugui 2008-11-30 18:21:57 +0900 (Sun, 30 Nov 2008) New Revision: 20403 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20403 Log: 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. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/strftime.c branches/ruby_1_9_1/test/ruby/test_time.rb Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 20402) +++ ruby_1_9_1/ChangeLog (revision 20403) @@ -1,3 +1,8 @@ +Mon Nov 24 22:57:25 2008 Shugo Maeda <shugo@r...> + + * strftime.c (rb_strftime): A width specifier for %t and %n should + work. [ruby-dev:37160] + Mon Nov 24 22:07:07 2008 Shugo Maeda <shugo@r...> * strftime.c (rb_strftime): The precision of %0N should be 9. Index: ruby_1_9_1/strftime.c =================================================================== --- ruby_1_9_1/strftime.c (revision 20402) +++ ruby_1_9_1/strftime.c (revision 20403) @@ -270,6 +270,16 @@ 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 @@ #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 @@ 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): Index: ruby_1_9_1/test/ruby/test_time.rb =================================================================== --- ruby_1_9_1/test/ruby/test_time.rb (revision 20402) +++ ruby_1_9_1/test/ruby/test_time.rb (revision 20403) @@ -449,5 +449,17 @@ t = Time.mktime(1970, 1, 18) assert_equal("0", t.strftime("%w")) assert_equal("7", t.strftime("%u")) + + # [ruby-dev:37160] + assert_equal("\t", T2000.strftime("%t")) + assert_equal("\t", T2000.strftime("%0t")) + assert_equal("\t", T2000.strftime("%1t")) + assert_equal(" \t", T2000.strftime("%3t")) + assert_equal("00\t", T2000.strftime("%03t")) + assert_equal("\n", T2000.strftime("%n")) + assert_equal("\n", T2000.strftime("%0n")) + assert_equal("\n", T2000.strftime("%1n")) + assert_equal(" \n", T2000.strftime("%3n")) + assert_equal("00\n", T2000.strftime("%03n")) end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/