namazu-ml(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: y2k problem
綿密なテストをありがとうございます。
knok@xxxxxxxxxxxxx (NOKUBI Takatsugu) wrote:
>3. メールのDateフィールド
>
>適当にDateフィールドの値を設定したメールを用意し、インデックスを作成、
>namazu -e/-lを実行してソート結果が正しくなるかどうかを確認。
>
>結果:
>
>年が4桁で記録されているものについては正しく動作する。しかし、2桁で記録
>されているものについては奇妙な動作をする。
(snip)
> この点を修正する必要があるのではないでしょうか。
新しい順/古い順のソートは単純にファイルのタイムスタンプで比
較しているだけで、 Date: ヘッダは見ていません。Date: ヘッダ
を元にファイルのタイムスタンプを変更するツール mailutime を
添付しているのはそのためです。
で、確認してみると、mailutime の方は 2000年問題がありました。
メイル末尾のパッチをあてれば解決します。mknmz にはたぶん問題
はないでしょう。 (2038年問題はありますが)
p.s.
6月25日に <http://www.linux.or.jp/JLA/19990624.html> で 20分
くらい喋ります。いらっしゃる方はいませんか?
-- Satoru Takabayashi
*** mailutime.pl.orig Wed Jun 23 22:55:07 1999
--- mailutime.pl Wed Jun 23 23:00:55 1999
***************
*** 31,37 ****
"Sep" => 8, "Oct" => 9, "Nov" => 10, "Dec" => 11);
my $re_month = join('|', keys (%month_names));
my $re_day = '(?:0?[1-9]|[12][0-9]|3[01])';
! my $re_year = '(?:\d\d\d\d+|[789]\d)'; # allow 2 digit fomrat such as '98'
my $re_hour = '(?:[01][0-9]|2[0-3])';
my $re_min = '(?:[012345][0-9])';
my $re_sec = '(?:[012345][0-9])';
--- 31,37 ----
"Sep" => 8, "Oct" => 9, "Nov" => 10, "Dec" => 11);
my $re_month = join('|', keys (%month_names));
my $re_day = '(?:0?[1-9]|[12][0-9]|3[01])';
! my $re_year = '(?:\d\d\d\d+|\d\d)'; # allow 2 digit fomrat such as '98'
my $re_hour = '(?:[01][0-9]|2[0-3])';
my $re_min = '(?:[012345][0-9])';
my $re_sec = '(?:[012345][0-9])';
***************
*** 87,92 ****
--- 87,94 ----
/x)
{
my ($mday, $mon, $year, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6);
+ $year += 2000 if $year < 50;
+ $year += 1900 if 50 <= $year && $year <= 99;
$mon = $month_names{$mon};
my $mtime = timelocal($sec, $min, $hour, $mday, $mon, $year);
return $mtime;