On Sat, 12 Apr 2014, Ralph Siegler wrote:
> > Well, starting with r1.54 [0], stdlib.h never declares getopt().
> > However, I think the conversation could continue in spite of that.
> > I would expect "motivation" to be aggregated cost in the form:
> > * a significant amount of patched ports;
> > * a significant amount of affected port prospects; or
> > * a significant amount of patched user programs.
> > You happen to mention the last item. Are there other users interested in
> > this facet of source compatibility?
> > 
> > Also, are there other possible costs?
> > 
> > [0]
> > http://www.openbsd.org/cgi-bin/cvsweb/src/include/stdlib.h.diff?
> r1=1.53;r2=1.54;f=h
> 
> You are mistaken, it was just defined in different place/way in same 
> file, even 18 years ago it is found in OpenBSD in stdlib.h (as well as 
> in unistd.h):

Gotcha: you don't want to update a program to meet 18+ year old standards.  
Is your beef with OpenBSD?  Or is it with POSIX for specifying in 1995 
that getopt() only be declared in unistd.h and not stdlib.h?


> It doesn't hurt anything to provide this backward compatibility

It makes the header more complex and annoying to maintain, just to support 
programs that haven't been updated for 18+ years.  That's a negative.

You may find it interesting to see how long a source tree might work 
without changes, but that's not of interest to OpenBSD.  It's probably of 
*negative* interest of OpenBSD, as adding "#include <unistd.h>" is a 
trivial cost to the person compiling said unmaintained program, and such a 
program probably hasn't been scrutinized for the various sins of the past 
like buffer and string handling, TOCTOU violations, etc.  History is neat 
to study, but living in it sucks.


Philip

Reply via email to