Namazu-win32-users-ja(旧)


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

Re: command not found but...



吉村と申します。昨日このMLに入会しました。よろしくお願いします。
さて、最近のメールを取り寄せて読んでみたところ…

At Mon, 5 Mar 2001 17:02:57 +0900 ,
弓岡 也守輝	 <te-kun@xxxxxxxxxxxxxx> wrote:

> DOS 窓で (cygwin の bash でも)、mknmz とすると、
> 
> C:\appli\namazu\bin>mknmz
> コマンドまたはファイル名が違います.
> 使い方: mknmz [オプション] <対象>...
> `mknmz --help' でより詳しい情報が表示されます
> 
> と表示されて、 ** 素直に ** 動いてくれません。
> 
> この状態で、mknmz を実行すると、mknmz を探しているらしく、しばらくディ
> スクがカタカタ言って、起動に時間がかかります。

これについて私の所でも全く同じことが起きていました。
環境は弓岡さんとほぼ同じです (cygwinのパス、Active Perlのビルドが違う
ぐらい)。

で、地道にmknmzの中にprint文を仕込んでいろいろ調べたところ
 load_modules -> load_win32modules -> load_filter
で、manのフィルタを呼んでいるところで引っかかっていました。

さらに、filter/man.plを同様に調べたら、$roffpath (39〜45行目でroffのパ
スをutil::checkcmd()で得たもの) が"\"で区切る表現になっており、これを
使って53行目の
  `echo ''| $roffpath -Tnippon 1>nul 2>&1`;
を実行するとパスが見つからずエラーになってしまうようでした。

とりあえず場当たり的に、$roffpathを内部で"/"区切りに変換してやると、問
題は発生しなくなりました (perlからシェル?へは再度"/"を"\"に変換して渡
しているのでしょうか??)。

サーチパス上にmanや[jgn]roffがない場合はこの部分は実行されないようです
ので、これまであまり問題になっていなかったのかもしれません。

きちんとパッチというものを作ったことがないので、とりあえずdiffを取った
結果を添付します。
cd c:/namazu/share/namazu/filter/
diff -c "c:/namazu/share/namazu/filter/man.pl.org" "c:/namazu/share/namazu/filter/man.pl"
*** c:/namazu/share/namazu/filter/man.pl.org	Wed Nov  8 06:06:42 2000
--- c:/namazu/share/namazu/filter/man.pl	Tue Feb  6 18:45:42 2001
***************
*** 50,55 ****
--- 50,56 ----
      if (util::islang("ja") && $roffpath =~ /\bj?groff$/) {
  	# Check wheter -Tnippon is valid.
  	if (($mknmz::SYSTEM eq "MSWin32") || ($mknmz::SYSTEM eq "os2")){
+  	    $roffpath =~ s/\\/\//g;
  	    `echo ''| $roffpath -Tnippon 1>nul 2>&1`;
  	} else {
  	    `echo ''| $roffpath -Tnippon 1>/dev/null 2>&1`;

Diff finished at Fri Mar 09 13:06:55

# もっと早く報告すべきでしたね。すみません。
# 弓岡さん、こちらでもよろしくお願いします。
------------------------------------------------------
  吉村俊司  YOSHIMURA Shunji
    mailto:Shunji.Yoshimura@xxxxxxxxxxx