Eric Blake wrote: > Provide brute-force implementation that works on all remaining > systems. Some day, it would be nice to override all APIs that > take FILE*, so that we can guarantee efficient in-memory access, > but in the meantime, this works even if it is slow on deficient > platforms. The idea here is that eventually those platforms will > comply with POSIX 2008 and provide an efficient open_memstream > themselves, or they will die off as reasonable porting targets. > > test-open_memstream now passes on cygwin 1.5, mingw, and Solaris > 10. However, this exposed some additional bugs: mingw had > C++ compilation failures with the replacement <time.h>, and this > patch exposed a Solaris 10 bug in __fpurge(). > > Several licenses need to be relaxed before this can be LGPLv2+. > > * m4/open_memstream.m4(gl_PREREQ_OPEN_MEMSTREAM): Update > prerequisites for alternate implementation. > * modules/open_memstream (Depends-on): Likewise. > * lib/stdio.in.h (gnulib_open_memstream_hook): Declare. > * lib/fflush.c (rpl_fflush): Call into hook. > * lib/open_memstream.c (open_memstream) [!HAVE_FUNOPEN]: Provide > alternate implementation. > * doc/posix-functions/open_memstream.texi (open_memstream): > Update. > > Signed-off-by: Eric Blake <ebl...@redhat.com> > --- > > This is a proof-of-concept patch; it solves the problem at hand, > but has some dependencies on incompatible modules that would > need to be relaxed to LGPLv2+ before this module could be used > in libvirt. > > fflush - GPL > fpurge - LGPLv3 > freading - LGPLv3 > ftello - LGPLv3 > full-read - LGPLv3 > full-write - LGPLv3 > safe-read - LGPLv3 > safe-write - LGPLv3 > tmpdir - LGPLv3 > tmpfile - GPL
Thanks. This sounds great. Regarding licenses, I'm fine with relaxing those of all I'm responsible for (full-* and safe-*).