[Namazu-win32-users-ja 1266] Re: mknmzの処理が中断する

Toru Ishizuka ishizuka @ o-plans.co.jp
2010年 10月 3日 (日) 21:39:20 JST


お世話になっています 石塚です。

> あぁ、日本語を含む場合だけ起こるわけではなくて、日本語を含む場合で
> しか確認されていなかったわけですね。
> # ちょっと誤解していました。
 はいそうなります。

> 日本語を含むからといって、パスの長さは関係ないですよっていう話を
> していたのですが、日本語かどうかは別に関係なく、パスが 260 文字を
> 超えるとおかしいということですか?
 日本語を含む場合限定の問題かどうかは未確認ですが、文字
の種類を変えなくても、長さが長くなるだけでおかしくなって
いるようです。
 おそらく、特定の文字(2byte目に0x5cを含むSJIS文字)でも
おかしくなるし、長さを超えてもおかしくなるということだと
思います。

> # 文字を書き換えると 260 文字超えてもいけるとか何とかという話が混じって
> # いたような、いなかったような...。
 長いパスを持つファイルが、大量なファイルがあるディレク
トリに有る場合と、少数のファイルしかないディレクトリにあ
る場合で、後者は処理が中断しないという報告をしてました。
 ただ、おそらくこれは、おかしくなるときの挙動が、
 ・mknmzの処理が中断する
 ・長いパスを持つファイルが認識できずスキップされる
 と2通りあり、後者の場合は、mknmzは中断(ハングアップ)
しないため、正常に処理ができていると私が勘違いしてしまっ
た可能性が高いです

> 260 文字というところが怪しいですが、これは _MAX_PATH の制限ぽい
> ですね。

 ANSI系のAPIの制限ですね。ActivePerlにAnsi版/Unicode版
はなかったようなので、ActivePerlはこちらを使用している可
能性が高いですかね。環境に応じてAPIを呼び分けてくれてい
ると大丈夫なのですが。。

> 日本語の問題を除外して、260文字を超えるパスの話ですと、Windows では
> 無理ぽいです。
> # ちょっと誤魔化してすり抜けるようになっていたかと思いましたが、
> # 実際問題が生じているのなら無理だったっぽいので。
 なるほど。。
 であれば、他のメールに書かれているように、処理できない
ファイルはエラーなりでスキップしていただいた方がよいかも
しれませんね。


> >  こちらはダメなパスです。
> > c:\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\1234567890\270バイト_______________________.xls
> 
> って、ファイルはどうやって作ったのでしょう。

 mdコマンドでディレクトリを一発で掘った後、explorerでファ
イルを別ディレクトリからコピーしてきました。
 こちらの環境(win2k3/excel2003)ではこのファイルをExcel
で読み書きしても大丈夫そうです。
 explorerでも普通に扱えています。

---
ishizuka



Namazu-win32-users-ja メーリングリストの案内