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

[FDclone-users:00581] Re: やって見ましたが??



 しらいです。

In Message-Id <20060919232239.233074.88aafe51@isis.ocn.ne.jp>
        yuji tamura <yuji@isis.ocn.ne.jp>さんwrites:
> こんばんは、田村です。

> -----
> #else
> 		cp = (char *)getcwd(path, 1024);
> #endif
> -----
> こういう事ですよね?

 そうです。但し MAXPATHLEN == 1,024 の時の話ですが。


> この状態では、普通に起動できます、症状は出ますが。

 だとすると、dosemu.c が元凶ではなかったと言うことですね。


> > ---- Cut Here ----
> > #include <stdio.h>
> > #include <sys/param.h>
> > main()
> > {
> > 	printf("%d\n", MAXPATHLEN);
> > }
> > ---- Cut Here ----
> 
> これはどこの事なんでしょうか?これを挿入して make する
> のでしょうか?違いますよね...

 いえ、これはこういう中身のファイルを一個こしらえて compile
するという意味です。例えば maxpath.c という名前で作成したと
すると
	cc -o maxpath maxpath.c
のように compile します。
 これで maxpath という実行ファイルが出来上がるので、それを
	./maxpath
として実行すると MAXPATHLEN の値が端末に表示される筈です。

 尤も、上で当てずっぽうで書いた 1,024 を試してみて動いたと
いうことは、ちゃんと調べてみても 1,024 になるんだとは思いま
すが。


> #define MAXPATHLEN2 65536		<ここに挿入した
> #endif
> -----
> 場所はこれで良いのでしょうか?

 別に Mac OS X 用の箇所である必要はないのですが、そこに書い
て支障があるという訳ではないので、それで構いません。


> これで添付していただいたシェルスクリプトを
> MAX_2.sh として、カレントディレクトリに置き chmod 755 して
> 実行し再コンパイルすると
> 
> 起動は出来ますが、症状は出ます。
> と言う事で先に進めなくなってしまいました....。

 そうすると、最初の func.h の変更に戻ってやり直すしかないで
すねー。


Step 1.
 一旦 .tar.gz を展開した元のまんまの状態に戻して、func.h の
再後尾に
	#undef	MAXPATHLEN
	#define	MAXPATHLEN	65536
を書きます。まずはこの状態で compile して動作確認です。
 先の実験ではここで正常動作になった筈ですが、その状態を改め
て確認して下さい。これで症状が現れては元の黙阿弥ですから。

Step 2.
 次は MAX_2.sh を使ってみます。machine.h に下記の記述を追加
して compile しましょう。ここでは仮に 1,024 としていますが、
実際には上の方法で調べた元の MAXPATHLEN の値にして下さい。
	#define MAXPATHLEN2	1024
 もしこれでも症状が現れるようなら、先の mail で示した手順ど
おりに一ファイルずつ一個ずつ MAXPATHLEN2 を MAXPATHLEN に戻
して元凶を探して下さい。
 逆に症状が現れないようならば、残りの MAXPATHLEN も全部変更
してしまいましょう。

Step 3.
 MAX_2.sh にちょっと手を加えた script を使ってみます。今度
は *.h も含めて全部 MAXPATHLEN2 にしてしまいましょう。
---- Cut Here ----
#!/bin/sh

for f in *.[ch]; do
	sed -e 's/MAXPATHLEN\([^2]\)/MAXPATHLEN3\1/g' ${f} > ${f}.tmp
	mv ${f}.tmp ${f}
done
---- Cut Here ----
 加えて machine.h に以下の記述を追加します。こちらも同様に
1,024 かどうかを調べてから、必要に応じて書換えて下さい。
	#define MAXPATHLEN3	1024
 これで症状が現れるようなら、先の mail で示した手順どおりに
一ファイルずつ一個ずつ MAXPATHLEN3 を MAXPATHLEN に戻して元
凶を探して下さい。「2」じゃなくて「3」なのでご注意。
 逆に症状が現れないようならば、Mac OS X の何かのヘッダの中
に埋め込まれた MAXPATHLEN の値に依存することになるので、かな
り厄介なことになりますが、くじけず次のステップに進みましょう。

Step 4.
 最後のステップまで進んでしまった場合は、*.c/*.h のあらゆる
MAXPATHLEN は MAXPATHLEN2 又は MAXPATHLEN3 に置換わっている
筈です。このことは以下のコマンドで確認出来ます。
	grep -w MAXPATHLEN *.[ch]
 もし MAXPATHLEN が残っているようなら、手動で書換えて Step
3. からやり直して下さい。残っていないことを確認したら次に進
みます。
 func.h を元に戻します。最初に追加した #define を削除して、
.tar.gz 展開直後の状態にします。これで compile すると症状が
再現することも確認して下さい。
 そして machine.h の MAXPATHLEN2 と MAXPATHLEN3 の値をどち
らも 256 にして下さい。少なくとも調べた MAXPATHLEN の元の値
よりは小さくします。但し 107 よりは大きな値で。
 これで症状が現れないようなら、先の mail で示した手順どおり
に一ファイルずつ一個ずつ MAXPATHLEN2 を MAXPATHLEN に戻して
元凶を探して下さい。同様に MAXPATHLEN3 も確認します。
 逆に症状が再現するようならお手上げです。多分 Mac OS X の内
包的なバグなんじゃないでしょうか。


 ややこしいことこの上ない確認方法ですが、実機が手元にない以
上はこういう紆余曲折を経ないと正解には辿り付けそうにありませ
ん。
 地道にコツコツと頑張ってみて下さい。

                                               しらい たかし