Kazuhiko
kazuh****@fdiar*****
2005年 4月 25日 (月) 12:22:01 JST
At Mon, 25 Apr 2005 11:50:54 +0900, Yazawa wrote: > 追試したところ"marshal data too short"というエラーが出ていました。 > やはり、Windows固有の問題でバイナリモードでopenしないと0x1a以降を読んで > くれないみたいです。 なるほど。File.read ではバイナリモードを指定できなさそうなので、以下のパッ チの「いずれか」で問題が解決するか確認してくださいますか? もし 1. で解決するなら、1. で行くほうが今後同様の問題ではまらなくてすみそ うですが、どうでしょうか? ○ 1. $stdin を binmode にする --- hiki.cgi.orig 2005-04-22 10:22:30.000000000 +0900 +++ hiki.cgi 2005-04-25 12:12:15.822174316 +0900 @@ -2,7 +2,7 @@ # $Id: hiki.cgi,v 1.25 2005/04/22 01:22:30 fdiary Exp $ # Copyright (C) 2002-2004 TAKEUCHI Hitoshi <hitos****@namar*****> -BEGIN { $defout.binmode } +BEGIN { $stdout.binmode; $stdin.binmode } $SAFE = 1 $KCODE = 'e' ○ 2. File.read の替りに File.open(filename, 'rb'){|f| f.read} にする --- hiki/storage.rb.orig 2005-01-31 22:08:37.866359000 +0900 +++ hiki/storage.rb 2005-04-25 12:07:15.331245135 +0900 @@ -93,7 +93,7 @@ cache_path = "#{@conf.cache_path}/parser" Dir.mkdir( cache_path ) unless test( ?e, cache_path ) begin - return Marshal::load( File.read( "#{cache_path}/#{CGI::escape( page )}" ) ) + return Marshal::load( File.open( "#{cache_path}/#{CGI::escape( page )}", 'rb' ) {|f| f.read} ) rescue return nil end -- かずひこ <http://wiki.fdiary.net/kazuhiko/> 「恋とハックはアジャイルが命!」