HEADSUP: zlib updated [svn commit: r205471 - in head: . lib/libz lib/libz/contrib lib/libz/doc sys/sys]

Xin LI delphij at delphij.net
Fri Apr 2 21:46:10 UTC 2010

Hash: SHA1


On 2010/04/02 14:32, Garrett Cooper wrote:
> 2010/4/2 Mark Linimon <linimon at lonesome.com>:
>> On Thu, Apr 01, 2010 at 03:30:47PM +0200, Dag-Erling Smørgrav wrote:
>>> And yes, I *will* keep harping on this until people Get It.
>> You're harping at the wrong people.  Complain to the application authors,
>> not to the poor slobs trying to maintain the ports collection.
>> There's a lot of crap code out there on the internet.  If we want to
>> insist that all the application authors both a) write good code and that
>> b) understands how FreeBSD does things, well, we can do that, but it's
>> not going to have much effect.
>> Probably 75%+ of the application authors neither know nor care that
>> their code is being run on anything other than Linux.  In extreme
>> cases we've enountered authors who outright refuse to accept our
>> patches, either due to philosophical disagreement or just due to the
>> xtra hassle.
> The problem actually was most likely the fact that the functionality
> wasn't properly documented or that people didn't thoroughly read or
> understand the documentation before implementing the feature. If
> there's anything that I've learned from cleaning up messes in the past
> (to be fair, some which I've created as well), it's that a lot of
> incorrect logic is created by misunderstanding things and/or making
> false assumptions on how things should work.

To be fair, the usage of _LARGEFILE64_SOURCE IS documented, people just
don't pay enough attention.  GNU headers choose to use #ifdef
_LARGEFILE64_SOURCE instead of #if _LARGEFILE64_SOURCE == 1, to be
pedantic, the latter form is correct. [1]

> But yes, zlib is buggy w.r.t. the item Xin Li mentioned and needed to
> be fixed. Too many folks try to resolve application porting issues by
> using inline:

If we use Large File Summit's documentation, it's not at all zlib's issue.

> /* #define a constant or typedef a feature */
> #endif
> This generally quasi-works in versions A (assuming the application
> runs and the developer upstream did their testing on version A's
> software... heh) or version C (typically a Linux) developer decided
> that they wanted to change the definition and dashed the consequences
> about backwards compatibility in their code. kernel.org sources are
> riddled with this kind of `decision making'.

Applications aiming to be portable should not define _LARGEFILE64_SOURCE
at all, on any *BSD platforms.

And, if they really want to do that, they should either use
- -D_LARGEFILE64_SOURCE or #define _LARGEFILE64_SOURCE 1 in the first place.

No, it's not zlib's fault.  We may workaround the application bug on
FreeBSD by removing all these checks in zlib.h and zconf.h, as they
doesn't affect FreeBSD's base system's headers at all, HOWEVER, it's
still the application's bug and should be fixed upstream.

[1] http://www.unix.org/version2/whatsnew/lfs20mar.html

- -- 
Xin LI <delphij at delphij.net>	http://www.delphij.net/
FreeBSD - The Power to Serve!	       Live free or die
Version: GnuPG v2.0.14 (FreeBSD)


More information about the freebsd-current mailing list