[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00599] Re: 仕切り直します。
- Subject: [FDclone-users:00599] Re: 仕切り直します。
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 01 Oct 2006 22:53:30 +0900
しらいです。
In Message-Id <20061001210952.392760.01235905@isis.ocn.ne.jp>
yuji tamura <yuji@isis.ocn.ne.jp>さんwrites:
> こんばんは田村です。
> config.h に
> #define _NOKANJIFCONV
> を追加して make
> /Users/yuji/012345678901234567
> /Users/yuji/Documents/10 blog
> 共に、ファイル名が消える現象確認、
> ただ日本語を含むファイル名。
この時点で今までの前提が全部崩れてしまうので、以降の検証は
失礼ながら全くの無駄になっています。
> #define _NODOSDRIVE
> #define _NOKANJIFCONV
> #define _NOROCKRIDGE
>
> を追加して make
> make できない。エラーメッセージは下記
以下の patch でどうでしょう?これで再度挑戦してみて下さい。
---- Cut Here ----
diff -u ../old/FD-2.09/dosemu.c ./dosemu.c
--- ../old/FD-2.09/dosemu.c Tue Aug 22 00:00:00 2006
+++ ./dosemu.c Sun Oct 1 22:03:16 2006
@@ -418,7 +418,11 @@
char conv[MAXPATHLEN];
int n;
+#ifdef _NOROCKRIDGE
+ path = convput(conv, path, 1, 0, NULL, NULL);
+#else
path = convput(conv, path, 1, 0, rpath, NULL);
+#endif
#ifndef _NODOSDRIVE
if (_dospath(path)) n = doslstat(path, stp);
else
---- Cut Here ----
これで上記 3 行を config.h に加えてみて、それでも再現する
ようならこれはもう Mac OS X の library に潜在する bug だとい
うことになると思います。
ただ、この状態ではこれまでと全然違う実装になる筈なので、そ
れでも再現するということになると、何かまた別のところで間違っ
ている可能性の方が大きいので、設定等再確認して下さい。
逆に再現しなくなった場合、3 行の #define を一個ずつ削除し
たり復活させたりして、全ての組合せで再度検証して下さい。
組合せとしては 8 通りあることになりますが、既に「全てなし」
と「_NOFNAMEKCODE のみ」は検証済なので、残り 6 通りについて
のみ検証すれば十分だと思います。
> -----dosemu.c-----
> strcatdelim2(path, dirpathlist[i].path, src);
> //if (convget(conv, path, dos) == conv) {
> // if ((src = strrdelim(conv, 0))) src++;
> // else src = conv;
> //}
> strcpy(dest, src);
> ------------------
>
> で make
> /Users/yuji/012345678901234567
> /Users/yuji/Documents/10 blog
> 共に、ファイル名が消える現象確認、
> ただ日本語を含むファイル名。
うーむ、これで再現するということは、原因として考えられるの
は二つです。
一つはこの部分のコードが全然実行されていないということ。こ
れは、comment out 部分の直前に「exit(0);」という行を追加して
みることで確認出来ます。
これを追加すると起動直後に終了する筈なんですが、もし終了し
ないようなら Xopendir() のどこかでおかしなことが起こっている
ことになります。もしそうなら別途検証しましょう。
これで終了するようならもう一つの原因が考えられます。コピー
先の dest という変数が何かとんでもない領域を指しているという
ことです。
この確認のために、上で追加した「exit(0);」の直前に以下の行
を追加して printf debug をしましょう。これで表示される二つの
値が大きくかけ離れていた場合は dest の値がおかしいですね。
printf("%p,%p\r\n", &buf, dest);
因みに、どっちの検証でも終了後の端末がおかしな設定になって
いると思いますので、「stty sane」等のコマンドを入力して端末
設定を正常に戻してやるといいでしょう。
おかしな端末状態だと入力文字が表示されないので不安に陥るか
も知れませんが、フリーズしている訳ではないので慌てないで下さ
い。
しらい たかし