2005年09月30日
川俣晶の縁側ソフトウェアその他開発日誌total 6387 count

長いファイル名を処理する際、du for Win32でエラー234が発生する問題

Written By: 川俣 晶連絡先

現象 §

 du for Win32で、以下のような問題が発生していました。

極端に長いファイル名のファイルを含むディレクトリを処理させると、エラー234の致命的なエラーが発生する

原因 §

 Win32 APIのFindFirstFile, FindNextFile等は、結果をWIN32_FIND_DATA構造体で受け取ります。このとき、取得するファイルの長さの上限は、構造体の定義により、固定値が与えられます。

 さて、これらのAPIにはUnicode版と、ANSI版が存在します。

 ANSI版を使用し、シフトJISでファイル名を取得する場合、ファイルシステムに保存されたUnicodeのファイル名がシフトJISに変換されます。

 その際、ANSI版ではUnicode版の半分の容量しか確保されていないにもかかわらず、それより大きなサイズの文字列に変換される場合があります。

 このようなケースでは、ファイル名を完全に取得できず、Win32の234番のエラー(ERROR_MORE_DATA, More data is available.)になります。 

解決 §

 これらのAPIのUnicodeバージョンを使用すれば解決します。

 そこで、Unicodeビルドをバージョン0.9として作成しました。

 以下がそれにあたります。

du for Win32 Version 0.9

制限事項 §

 Unicodeビルドは、Windows 9X/MEで動作しないと思われます。

 Windows 9X/MEでの利用を希望する場合は、バージョン0.8までを使用して下さい。

 ちなみに、バージョン0.8は以下より取得できます。

du for Win32 Version 0.8

 ただし、バージョン0.8には、du -?で表示されるバージョンが0.7になっているという情けないバグが存在することが確認されています。

Facebook

キーワード【 川俣晶の縁側ソフトウェアその他開発日誌
【その他開発日誌】の次のコンテンツ
2005年
10月
31日
やっと公開にこぎ着けた! 電子小説・Ajax読書プログラム テストNo.1
3days 0 count
total 5036 count
【その他開発日誌】の前のコンテンツ
2005年
09月
13日
NT版UNIX-like toolsのcat, cmp, wcが常にテキストモードでファイルを開く問題
3days 0 count
total 2672 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20050930181032
サイトの表紙【その他開発日誌】の表紙【その他開発日誌】のコンテンツ全リスト 【その他開発日誌】の入手全リスト 【その他開発日誌】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.