
On Sat, Jan 19, 2008 at 07:58:31PM +0100, Jim Meyering wrote:
"Daniel P. Berrange" <berrange@redhat.com> wrote:
On Sat, Jan 19, 2008 at 07:09:31PM +0100, Jim Meyering wrote:
"Daniel P. Berrange" <berrange@redhat.com> wrote: ...
Since you're working on the weekend ;-), here are some notices I'd begun to accumulate:
There are a bunch of new uses of open64, which isn't portable. How about using AC_SYS_LARGEFILE in configure.in instead? Then you can use "open" everywhere.
AFAIK, there are two ways to do large file suport
- Explicit support - size_t, open, etc all remain the same, and new size64_t, open64, etc are introduced.
- Implicit support - size_t, open, etc are re-defined to be 64-bit at all times.
Both are part of POSIX. With the latter, if any size_t is exposed in your public API, then all applications linking against you must also be compiled with large file suport because this is an ABI sensitive think. With the former approach all the large file stuff is only visible inside your code so is not leaked to applications using the lib.
Since we have size_t in the public API, AFAICT, we have no choice but to use the explicit size64_t, open64() etc.
large-FILE support does not affect the memory-related size_t and ssize_t types, and open64/size64_t are not specified by POSIX.
Opps, it seems Large File Support is actually an X/Open UNIX standard rather than POSIX.
Maybe you're thinking of off_t, since that type does change size depending on whether large-file support is enabled. But off_t is not used in libvirt at all.
Yes, I was mistaken about size_t - its only the file related types that change. So, if we use AC_SYS_LARGEFILE, then all file related APIs - open, statfs, statvfs, etc, etc become 64-bit across the whole of libvirt but doesn't leak out into API. So i'm fine with that. Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|