[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23275] Re: Time.gm(...): gmtime/localtime error (ArgumentError)

From: Tanaka Akira <akr@...17n.org>
Date: 2004-03-30 10:48:10 UTC
List: ruby-dev #23275
In article <4069466A.2030008@az.jp.nec.com>,
  MIYAMUKO Katsuyuki <k-miyamuko@az.jp.nec.com> writes:

> Time.gm でエラーになっているみたいです。
>
> % ./miniruby -e "Time.gm(2000,1,1,1,1,1)"
> -e:1:in `gm': gmtime/localtime error (ArgumentError)
> 	from -e:1

> (gdb) print guess_lo
> $2 = -9223372036854775808

うぅむ。ついにこの不具合が報告される日が。

64bit time_t で timegm の無い環境が手元に無いのでちゃんとテストして直
したわけではないのですが、次のパッチを当てるとどうでしょうか。

Index: time.c
===================================================================
RCS file: /src/ruby/time.c,v
retrieving revision 1.96
diff -u -r1.96 time.c
--- time.c	29 Mar 2004 07:54:15 -0000	1.96
+++ time.c	30 Mar 2004 10:42:11 -0000
@@ -444,6 +444,15 @@
                (1UL << (8 * sizeof(time_t) - 1)) - 1 :
 	       ~(time_t)0;
 
+#if defined(HAVE_MKTIME)
+    if ((guess = mktime(tptr)) != -1) {
+      if (guess_lo < guess - 24 * 60 * 60)
+        guess_lo = guess - 24 * 60 * 60;
+      if (guess + 24 * 60 * 60 < guess_hi)
+        guess_hi = guess + 24 * 60 * 60;
+    }
+#endif
+
     tm = (utc_p ? gmtime : localtime)(&guess_lo);
     if (!tm) goto error;
     d = tmcmp(tptr, tm);

本当は、これに加えてさらに mktime も無い場合と mktime が -1 を返した場
合にそなえて、閏秒を考慮しない timegm を自前で書いてあげないといけない
のですが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread