namazu-ml(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mknmz in namazu-1.3.1.0-pre-9



清水@住友林業です。

まだ mknmz が不完全です。
例によって WIN32 or OS/2 で NKF.pm を使う際に、

  [H:\project\namazu\namazu-1.3.1.0-pre-9\src] perl ./mknmz

  Can't spawn "module_nkf": No such file or directory
  |module_nkf -s: No such file or directory

となります。これは、mknmz に引数を与えずに起動すると、

      require_modules();

を通るよりも前に

      parse_command_line_options();

の中で  usage(); を呼び出してしまうからです。

つまり、$CCS は sjis で、かつ、$conf::USE_NKF_MODULE  が '1' に設定
されていないので、

 sub usage () {
    if ($conf::LANGUAGE eq "ja") {
	if ($CCS eq "euc") {
	    print STDERR $conf::USAGE_JA;
	} elsif ($CCS eq "sjis") {
	    if ($conf::USE_NKF_MODULE) {
		require NKF;
		print NKF::nkf("-s", $conf::USAGE_JA);
	    } else {
		my $fh_nkf = util::fopen_or_die("|$conf::NKF -s");
		print $fh_nkf $conf::USAGE_JA;
	    }
	}
    } else {
	print STDERR $conf::USAGE_EN;
    }
    exit;
 }


の中で

  my $fh_nkf = util::fopen_or_die("|$conf::NKF -s");

が実行され、その際に $conf::NKF の値が 'module_nkf' となっているからです。


in [namazu 121] 

> util::dprint() の方をあきらめるか、 usage() で NKF モジュールを呼
> び出すかで迷って、結局後者にしました。手元の版では直っています。

えーと、$conf::USE_NKF_MODULE の値が設定されるのは require_modules(); 
の中なので、require_modules(); を通るよりも前に

 	    if ($conf::USE_NKF_MODULE) {

という条件分岐が usage(); 内でなされること自体が、そもそもの誤りです。

内部 EUC な環境では絶対に顕在化しないので、なかなか面倒だとは思いますが
よろしくお願いします。

 

end
--
  住友林業株式会社  情報システム部   清水 和佳
 
  TEL: +81-3-5322-6672  FAX: +81-3-5322-6658  Niftyserve: XLW01034
  e-mail: <kshimz@xxxxxxxxx>