From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30953 invoked by alias); 14 Aug 2013 19:32:04 -0000 Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: glibc-bugs-owner@sourceware.org Received: (qmail 30920 invoked by uid 48); 14 Aug 2013 19:32:02 -0000 From: "bugdal at aerifal dot cx" To: glibc-bugs@sourceware.org Subject: [Bug libc/15838] New: fts.h interfaces are presently non-usable except on 64-bit systems Date: Wed, 14 Aug 2013 19:32:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: libc X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: bugdal at aerifal dot cx X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter cc Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-08/txt/msg00053.txt.bz2 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 " 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.