What to do about gnulib libio dependencies?

Florian Weimer fweimer@redhat.com
Tue Aug 21 13:43:00 GMT 2018


On 08/21/2018 03:18 PM, Zack Weinberg wrote:
> Well, the question in my mind is, how much harm will it be?  I don't
> see how we can assess the tradeoff between consequences for external
> applications and increased maintenance burden for us, without knowing
> how important these APIs are to external applications.  I would also
> want to dig into just how invasive of libio internals these APIs
> actually are.  If they're like the stuff in stdio_ext.h, that's not a
> big deal, but if they involve messing with vtables or forcing us to
> preserve the C++-stream distinction between put and get pointers or
> something on that level, that would be much more of a problem, IMO.

Going by the source files are included in the debuginfo data (that is, 
actually compiled and linked in), I see the following packages using 
fseterr:

bison
coreutils
dc3dd
gzip
lbzip2
libunistring
pspp
recutils

freadahead is used by:

coreutils
findutils
m4

coreutils also uses freadptr and freadseek.

I do not see any use of fbufmode.

fpurge is also used fairly widely (bash, lftp, libbsd, libexplain, 
libprelude, libvirt, oath-toolkit), but we already provide __fpurge, and 
the gnulib implementation of fpurge should simply wrap our __fpurge.

fseterr looks pretty harmless to support.  freadahead and freadptr are 
problematic for wide-oriented streams, but we have ABI exposure for the 
read pointers already for the inline copy of fputc_unlocked.  The only 
caveat is that for fputc_unlocked, we can provide compatibility by 
always having an empty read buffer (at a cost to performance).  With the 
other interfaces, this might not be a possibility.

Thanks,
Florian



More information about the Libc-alpha mailing list