From: "Oliver M . Bolzer" Date: 2002-02-25T21:44:48+09:00 Subject: [ruby-dev:16074] How to do large file support ? Oliverです。 -listにも書きましたが、-devにもsubscribeしました。 ふと用事があって、Rubyが32-bitプラットフォームで2GBを越えるファイル を扱えない事に気がつきました。いわゆるLarge File Supportです。 で、configure.inの適当なところに AC_SYS_LARGEFILE AC_CHECK_SIZEOF( off_t ) を追加するとCレベルでLFSに対応しますが、io.c と file.c で Rubyのオブジェクトからoff_tに変換するところで NUM2INTを使って いるので、sizeof(off_t) > sizeof( int )な環境では2GB強のふぁいるんが 使えません。off_tのサイズが不定になるので、NUM2OFF_Tみたいなのが 必要になります。 そこで、相談なんですが、どういう風に解決するのが良いと思いますか? > all - マクロでサイズを比べて NUM2INT や NUM2LONG へ #define する -> NUM2LONGLONG が必要になる - numeric.c, bignum.c に num2long と似た num2off_t を作ってそれに任せる。 また、上のconfigure.inマクロだとopen, seek 等が64-bitなものに置き換えられ てバイナリ互換性がなくなるので、off_tを使う拡張ライブラリ等は同じ フラグでコンパイルさせる必要があります。どうしましょう。 -- Oliver M. Bolzer oliver@gol.com GPG (PGP) Fingerprint = 621B 52F6 2AC1 36DB 8761 018F 8786 87AD EF50 D1FF