[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00187] Re: 巨大ファイルの扱い



潮田です。

Hironao Komatsu <s1100089@u-aizu.ac.jp> wrote:
> ファイルが2GBytesを超えると表示されなくなるようです。
> どうでしょうか?
AIX 5L 5.1.0(ML4) で試しました。
確かに出てきませんね。

小松さんの環境がわからないのでなんですが、
> st_sizeがoff_t型(32bit)になっているのが原因のようですが、
ってのは、環境に依存するのではないかと。
(st_size が 32 bit かどうかの部分です)
原因が bit 数の壁にあるのはそう思います。


で、 AIX (もっと条件があると思いますが詳しくしりません) での
安直な逃げを報告。

$ gzip -dc FD-2.03b.tar.gz | tar xf -
$ cd FD-2.03b
$ make Makefile.tmp
$ Makefile.tmp の CFLAGS に -D_LARGE_FILES を追加
$ make

簡単なプログラムならこれで終了。

$ ./fd
2GB 超のファイルもファイラーの画面に出てきました。
が、
1.いままで出ていたファイルのサイズが 000000000 と表示される。
2.2GB 超のファイルのサイズが 0 と表示される。
(左よせで後ろブランクの 0)

parse.c の ascnumeric() で第2引数 n の型を
long -> long long
へ変更。

1.いままで出ていたファイルのサイズは正しそう。
2.2GB 超のファイルのサイズが 999999999 と表示される。
と変わりました。
999999999 の表示は、わざとそうされているようなので
これで終了。
ヘッダーとかソース中にある ascnumeric() のプロトタイプの
変更も必要なんでしょうが、動いているので。

# 環境によっては、 USELLSEEK を定義しておけばいいのではないかと。