apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Orton <...@manyfish.co.uk>
Subject RFC: Unix LFS support for 1.0
Date Mon, 22 Mar 2004 13:17:30 GMT
A concrete proposal... the two requirements are:

1. APR 1.0 should support large files on Unix systems which have a 
32-bit off_t but support the LFS standard
2. APR must not export -D_FILE_OFFSET_BITS=64 by default to get a 64-bit
off_t, since this breaks the ABI of any other packages which use off_t
in their API, and is generally a Bad Thing.  But users should be allowed
to build like this by passing the appropriate CPPFLAGS to configure if
they want.

The proposed solution is that APR must use the "transitional" LFS API on
such platforms, define apr_off_t as off64_t; and use lseek64 and friends
throughout.  Some of this work is already done for Netware, but it
appears to be incomplete since it doesn't use readdir{,_r}64, nor struct
stat64; but maybe Netware does things differently.

If anyone has issues with this approach, please speak up soon!

Work in progress patch attached, todo list currently:

- AIX and Solaris have variants for their sendfile interfaces which take
an off64_t in the appropriate place; need to hook these up and check
HP-UX too (### help welcome! :)

- what to do about old Linux 2.2's which have no sendfile64(): disable
sendfile support, or disable LFS support? both change the ABI

- automatically add -D_LARGEFILE64_SOURCE to CPPFLAGS on platforms which
need it.  Linux doesn't because it's implied by -D_GNU_SOURCE, other
platforms do.

View raw message