[Namazu-devel-ja 1634] ディスクの空き容量がない場合に mknmz でエラーとなるように

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2007年 8月 4日 (土) 16:45:14 JST


寺西です。

ディスクの空き容量がない場合に mknmz がエラーも出さずに平気な顔して
終了すると指摘を受けました。

# まぁ、エラーチェックしてないから、そうだろうけど...。

ということで対策なんですが。
全ての書き込み時にチェックすべきなんですが、その修正は大変なので、
util::fclose の中で IO::File を close する前にそのハンドルで
エラーが発生したか否かで判定することにしました。

もちろん、これで全てのチェックができるわけではないのですが、
util::fclose を呼び出す部分だけでもチェックができます。
そして、このチェックだけでも十分に目的は果たせるものと思います。

とりあえず差分です。

--- pl/util.pl.org      2006-02-06 03:53:30.000000000 +0900
+++ pl/util.pl  2007-08-04 15:56:34.000000000 +0900
@@ -72,6 +72,8 @@ sub fclose ($) {
     if (ref $arg) {
         if ($arg =~ /^(IO::File|FileHandle)/) {
             my $fh = $arg;
+            $fh->flush;
+            cdie("write error: $!\n") if ($fh->error);
             $fh->close();
             return undef;
         }
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内