[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00577] Re: 確認できた所だけ報告
- Subject: [FDclone-users:00577] Re: 確認できた所だけ報告
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 17 Sep 2006 23:03:48 +0900
しらいです。
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"
>
> となっています。
一応こちらでも試してみましたが全然再現しませんでした。
しらい たかし