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

[FDclone-users:00577] Re: 確認できた所だけ報告



 しらいです。

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

> >  空白文字よりはパス名の長さが関係してそうですね。「yuji」の
> > 直下に例えば「012345678901234567」という名前の directory を
> > 作ってその下に置くと、フルパス名が同じ長さになりますよね。
> >  この状態で再現するかどうか試してみて下さい。
> 
> 確かに状況はは再現します、頻度はよくわからないです。

 このパス名を足すことでフルパス名が 107 文字になりますね。
/User/yuji 直下だと 89 文字です。どうやらこの間に何らかの境
界がありそうですね。


> >  func.h の最後に以下の記述を追加します。
> > 	#undef	MAXPATHLEN
> > 	#define	MAXPATHLEN	65536
> 
> 以上の対策を施して見ました。状況は再現しません。

 そもそも Mac OS X では MAXPATHLEN の値は幾らなんでしょう?
MS-DOS ですら 260 文字あるので、流石に 100 文字やそこらでは
上限に至らないとは思うんですが。
 尤も、Mac OS X の場合は HFS+ と API との間に wrapper が介
在しているらしくて、実際に HDD に格納される byte 数と API を
通して見える byte 数が一致しないそうですので、その辺のカラク
リが元凶なのかも。

 因みに Mac OS X 以外の環境で試しに MAXPATHLEN を 100 程度
にして compile してみると、件のファイル名はそもそも表示すら
されないのでそれ以上は検証出来ませんでした。
 そもそも MAXPATHLEN を越えたパス名は OS の制限上存在し得な
いので、それが存在している時点で矛盾が生じており、FDclone の
中では処理し切れないという訳です。


> >  もしこれで直るようならば、実際にどの部分の MAXPATHLEN の値
> > が原因になっているかを確認して下さい。
> 
> すみません、これがまだ途中で、どこなのか確定できてません。

 dosemu.c の Xreaddir() 辺りが怪しそうですね。まぁ下手に先
入観を持ってしまって見過ごしが出てもまずいので、一通りのファ
イルを一個ずつ地道に試してみて下さい。
 変更を加えた func.h を含んでいて尚且つ MAXPATHLEN を含むの
は以下の 18 ファイルなので、まずはこれらから試してみるといい
と思います。
	apply.c archive.c browse.c builtin.c command.c
	custom.c dict.c dosemu.c file.c kanji.c
	libc.c log.c main.c parse.c rockridg.c
	shell.c termemu.c tree.c


> UNICODEBUFFER=1
> LANGUAGE="utf8-mac"
> DEFKCODE="utf8-mac"
> INPUTKCODE="utf8-mac"
> PTYINKCODE="utf8-mac"
> PTYOUTKCODE="utf8-mac"
> FNAMEKCODE="utf8-mac"
> MESSAGELANG="C"
> 
> となっています。

 一応こちらでも試してみましたが全然再現しませんでした。

                                               しらい たかし