$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Jens Maurer (Jens.Maurer_at_[hidden])
Date: 2004-01-31 12:44:02
Beman Dawes wrote:
> On POSIX compliant 32-bit systems, is there any reliable way to find the
> size of a file?
First, POSIX only had stat(), which is limited to 32 bits, as you
found out. When files got large enough that this wasn't a good
assumption any more even on 32bit systems, a new interface was
introduced: stat64() which has, for example, a 64bit
stat64::st_size .
(Btw, Linux 2.6 supports up to 16 TB file sizes on 32bit machines,
AFAIK.)
Of course, 64bit environments have their regular stat()
use 64bit stat::st_size.
You get stat64() by #define _LARGEFILE64_SOURCE .
You get stat() to use a 64bit stat::st_size even on 32bit
environments by #define _FILE_OFFSET_BITS=64 .
Both options require reasonably recent Unix systems.
The latter option may impede binary compatibility if some
modules are compiled with the #define and others aren't,
because the perceived "struct stat" size will be different.
Jens Maurer