コメント:
翻訳の正確さは保証しません。
必ず、原文と共に、使用してください。
DeleGate/9.2.2 で、4GB 超の巨大なファイルを FTP や、HTTP で提供できるようになりました。 巨大なファイルを扱えるようにするための2つの基本的な問題はバージョン9.2.2で解決されました:
make CFLAGS="-DSTAT64 -O"make 中に問題に遭遇したら、3.X 以降の最新の Gcc を使っているか確認してください。 少なくとも、RedHat9 (gcc 3.2.2) と、Debian3.1 (gcc 3.3.5) で成功しています。
2GB 超のファイルは標準では使えない Linux ファミリーのようなオペレーティングシステムがあります。 stat(),lseek(),ftruncate() を含むファイルを扱うシステムコールが、 ファイルサイズを 32ビットで表現する基本タイプ "off_t" を使う "struct stat" を基本としているからです。 そのようなシステムでは、4GB 超の大きなファイルを扱う他のファイルを扱うシステムコール stat64(),lseek64(),ftruncate64() などがあり、拡張された構造体 "struct stat64" を基本としています。 それらでは、64ビット整数の "off64_t" でファイルサイズが表現されます。
ほとんどのプラットフォームは 32ビット整数を持ち、DeleGate は "int" で、
データやファイルのサイズを表現しています。
32ビットの "int" では、最大 4GB のデータを表現できますが、
"signed" と解釈されるなら、最大 2GB になります。
可能な解決策は、DeleGate 全体で 64ビット整数を使うことですが、
DeleGate に対してはやりすぎではないかと思います。
DeleGate 内のコードが、"int" が 32ビットであることを期待してコーディングされている可能性もあります
(例えば、カウンターファイルの場合)。