[#41772] [Feature #3513] spawn ..., err: nil — Shyouhei Urabe <redmine@...>
Feature #3513: spawn ..., err: nil
10 messages
2010/07/01
[#41773] Re: [Feature #3513] spawn ..., err: nil
— Tanaka Akira <akr@...>
2010/07/01
2010年7月1日19:09 Shyouhei Urabe <redmine@ruby-lang.org>:
[#41780] Re: [Feature #3513] spawn ..., err: nil
— Urabe Shyouhei <shyouhei@...>
2010/07/02
卜部です。
[#41774] 動的ローディングの仕様について — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
7 messages
2010/07/01
[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>
Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)
12 messages
2010/07/02
[#41826] Re: [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2)
— Tanaka Akira <akr@...>
2010/07/06
2010年7月2日12:20 Yui NARUSE <redmine@ruby-lang.org>:
[#41828] Re: [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2)
— Takahiro Kambe <taca@...>
2010/07/06
In message <AANLkTimD2geIuuhr0GQZ4fprYTv3m4kuESajvsrxaItm@mail.gmail.com>
[#41782] [Bug #3522] String::size return invalid size on mswin64 — shintaro kuwamoto <redmine@...>
Bug #3522: String::size return invalid size on mswin64
5 messages
2010/07/02
[#41800] Tempfile#size returns 0 under windows — take_tk <ggb03124@...>
たけ(tk)です。
6 messages
2010/07/03
[#41833] [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED — Tanaka Akira <akr@...>
GNU/Linux で、以下のプログラムがハングします。
7 messages
2010/07/06
[#41834] Re: [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED
— Yukihiro Matsumoto <matz@...>
2010/07/06
まつもと ゆきひろです
[#41835] Re: [bug:trunk] GNU/Linux select hang on a socket which TCP state is CLOSED
— KOSAKI Motohiro <kosaki.motohiro@...>
2010/07/06
kosakiです
[#41856] [Bug #3579] RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する — Motohiro KOSAKI <redmine@...>
Bug #3579: RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する
5 messages
2010/07/16
[#41858] Re: [Bug #3579] RHEL5のautoconf-2.59だとruby-1.8.7-p299でautoconfが失敗する
— Nobuyoshi Nakada <nobu@...>
2010/07/17
なかだです。
[#41862] [bug:trunk] rb_data_type_t should be extensible — Nobuyoshi Nakada <nobu@...>
なかだです。
5 messages
2010/07/17
[#41876] redmine.ruby-lang.orgが落ちてる? — kimura wataru <kimuraw@...>
木村(わ)といいます。
4 messages
2010/07/25
[#41883] failed to build ext/tk of ruby-1.9.2-rc2 on Mac OS X — Yutaka Hara <yutaka.hara@...>
yharaです。
6 messages
2010/07/28
[#41884] Re: failed to build ext/tk of ruby-1.9.2-rc2 on Mac OS X
— Hidetoshi NAGAI <nagai@...>
2010/07/28
永井@知能.九工大です.
[#41892] [Feature #3627] catchのブロックを再実行するメソッド — Makoto Kishimoto <redmine@...>
Feature #3627: catchのブロックを再実行するメソッド
6 messages
2010/07/29
[#41893] thread.bind(sym, val) { ... } — Tanaka Akira <akr@...>
スレッド変数を一時的に設定するメソッドを加えるのはどうでしょうか。
7 messages
2010/07/29
[ruby-dev:41841] [feature:trunk] %:z and %::z for strftime
From:
Tanaka Akira <akr@...>
Date:
2010-07-07 12:53:26 UTC
List:
ruby-dev #41841
strftime で %:z と %::z という指定を可能にするのはどうでしょうか。
% ./ruby -e 'p Time.now.strftime("%z %:z %::z")'
"+0900 +09:00 +09:00:00"
時差をフォーマットするのに現在は %z がありますが、これは +hhmm という形です。
これは RFC 822 形式の時刻を表現するにはちょうどいいのですが、
XML Schema や RFC 3339 や W3CDTF で使う、コロンが入った +hh:mm という
形式とは合いません。
そして、最近知ったのですが、GNU coreutils の date には %:z という指定で
+hh:mm という形式を生成する機能があります。
また、コロンをふたつにして %::z とすると +hh:mm:ss と秒まで生成します。
というわけで、Ruby でも %:z と %::z をサポートするのはどうでしょう。
なお、コロンが入った形式はその文字列自体を見て時刻の類であることがわかるので
間違いが起きにくく、この型式はそれ自体良いものだと思います。
% svn diff --diff-cmd diff -x '-u -p'
Index: time.c
===================================================================
--- time.c (revision 28563)
+++ time.c (working copy)
@@ -4346,7 +4346,9 @@ strftimev(const char *fmt, VALUE time)
* %X - Preferred representation for the time alone, no date
* %y - Year without a century (00..99)
* %Y - Year with century
- * %z - Time zone as hour offset from UTC (e.g. +0900)
+ * %z - Time zone as hour and minute offset from UTC (e.g. +0900)
+ * %:z - hour and minute offset from UTC with a colon (e.g. +09:00)
+ * %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
* %Z - Time zone name
* %% - Literal ``%'' character
*
Index: strftime.c
===================================================================
--- strftime.c (revision 28563)
+++ strftime.c (working copy)
@@ -215,7 +215,7 @@ rb_strftime_with_timespec(char *s, size_
#endif
#endif /* HAVE_TM_NAME */
#endif /* HAVE_TM_ZONE */
- int precision, flags;
+ int precision, flags, colons;
char padding;
enum {LEFT, CHCASE, LOWER, UPPER, LOCALE_O, LOCALE_E};
#define BIT_OF(n) (1U<<(n))
@@ -348,6 +348,7 @@ rb_strftime_with_timespec(char *s, size_
precision = -1;
flags = 0;
padding = 0;
+ colons = 0;
again:
switch (*++format) {
case '\0':
@@ -530,13 +531,31 @@ rb_strftime_with_timespec(char *s, size_
* us that muck around with various message processors.
*/
case 'z': /* time zone offset east of GMT e.g. -0600 */
- if (precision < 4) precision = 4;
- NEEDS(precision + 1);
+ switch (colons) {
+ case 0: /* %z -> +hhmm */
+ precision = precision <= 5 ? 2 : precision-3;
+ NEEDS(precision + 3);
+ break;
+
+ case 1: /* %:z -> +hh:mm */
+ precision = precision <= 5 ? 2 : precision-3;
+ NEEDS(precision + 4);
+ break;
+
+ case 2: /* %::z -> +hh:mm:ss */
+ precision = precision <= 5 ? 2 : precision-3;
+ NEEDS(precision + 7);
+ break;
+
+ default:
+ format--;
+ goto unknown;
+ }
if (gmt) {
off = 0;
}
else {
- off = NUM2LONG(rb_funcall(quo(vtm->utc_offset, INT2FIX(60)),
rb_intern("round"), 0));
+ off = NUM2LONG(rb_funcall(vtm->utc_offset, rb_intern("round"), 0));
#if 0
#ifdef HAVE_TM_NAME
/*
@@ -583,11 +602,22 @@ rb_strftime_with_timespec(char *s, size_
} else {
*s++ = '+';
}
- off = off/60*100 + off%60;
- i = snprintf(s, endp - s, (padding == ' ' ? "%*ld" : "%.*ld"),
- precision - (precision > 4), off);
+ i = snprintf(s, endp - s, (padding == ' ' ? "%*ld" : "%.*ld"),
precision, off / 3600);
+ if (i < 0) goto err;
+ s += i;
+ off = off % 3600;
+ if (1 <= colons)
+ *s++ = ':';
+ i = snprintf(s, endp - s, "%02d", off / 60);
if (i < 0) goto err;
s += i;
+ off = off % 60;
+ if (2 <= colons) {
+ *s++ = ':';
+ i = snprintf(s, endp - s, "%02d", off);
+ if (i < 0) goto err;
+ s += i;
+ }
continue;
#endif /* MAILHEADER_EXT */
@@ -839,6 +869,11 @@ rb_strftime_with_timespec(char *s, size_
padding = ' ';
goto again;
+ case ':':
+ FLAG_FOUND();
+ colons++;
+ goto again;
+
case '0':
padding = '0';
case '1': case '2': case '3': case '4':
--
[田中 哲][たなか あきら][Tanaka Akira]