This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/15838] New: fts.h interfaces are presently non-usable except on 64-bit systems
- From: "bugdal at aerifal dot cx" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Wed, 14 Aug 2013 19:32:00 +0000
- Subject: [Bug libc/15838] New: fts.h interfaces are presently non-usable except on 64-bit systems
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=15838
Bug ID: 15838
Summary: fts.h interfaces are presently non-usable except on
64-bit systems
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: libc
Assignee: unassigned at sourceware dot org
Reporter: bugdal at aerifal dot cx
CC: drepper.fsp at gmail dot com
fts.h contains the following:
/* The fts interface is incompatible with the LFS interface which
transparently uses the 64-bit file access functions. */
#ifdef __USE_FILE_OFFSET64
# error "<fts.h> cannot be used with -D_FILE_OFFSET_BITS==64"
#endif
Thus, the whole fts.h API is useless except on 64-bit machines. Assuming a
32-bit system, if 64-bit off_t is used, fts.h explicitly generates an error. If
32-bit off_t is used, fts will fail at runtime because stat fails with
EOVERFLOW when the inode number or file size does not fit in 32 bits, making
any program using the fts interfaces unreliable.
I would prefer just deprecating this whole API, removing the header and using
symbol versioning to prevent new apps from linking to it. There is a perfectly
good version, without the 32-bit limitations, in gnulib which apps can use if
they need it, and there are various BSD versions that also work fine. The
breakage in the glibc version is purely from keeping ABI compatibility with the
old 32-bit off_t interfaces.
Alternatively, FTS64, fts_open64, etc. could be added...
--
You are receiving this mail because:
You are on the CC list for the bug.