This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/15838] New: fts.h interfaces are presently non-usable except on 64-bit systems


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]