Bernhard R. Link wrote:

There might be ways to help libraries to still link against libarchive
without having to change their off_t to 64 bit, but using off64_t in
those cases.

Actually, I believe I've laid the groundwork to
make the 64-bit/32-bit issue completely transparent
to software using libarchive.  It requires someone
knowledgable about this area of Linux to help me
fill in the few remaining pieces, but should not
require any deep knowledge of libarchive internals.

The most important piece is to create three versions
of archive_entry_stat() and archive_entry_copy_stat()
(which copy data between a platform-native
struct stat and libarchive's internal storage):

 * archive_entry_stat32 and archive_entry_copy_stat32,
which deal with "struct stat32"
 * Similar archive_entry_stat64 and archive_entry_copy_stat64
 * archive_entry_stat() and archive_entry_copy_stat()
would be defined twice:  In code as synonyms for the 64-bit
versions (to preserve ABI compat for programs using the
shared libraries) and as macros that map to 32-bit or
64-bit versions depending on the off_t size being
used by the program.

There are a couple of entry points defined in archive.h
that use off_t directly, but those are rarely used
and so are less critical.  Once the above is working,
similar techniques should apply to them.

Getting all of the configuration right so this builds
correctly on platforms that don't have two different
off_t/struct stat definitions is probably the
trickiest part.

This is a low priority for me right now, though I
do believe that I've factored the internals well
enough to make this a feasible project for someone
who knows nothing about libarchive.  If anyone is
interested, let me know.

Tim Kientzle


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to