This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: getopt_long behavior


Christopher Faylor wrote:
> On Thu, Jan 30, 2003 at 01:44:52AM -0000, Max Bowsher wrote:
>> This does not invalidate the proposal "do something at link time to
>> force POSIXLY_CORRECT if necessary for this app".
>
> I don't understand what it has to do with anything.  Your proposed
> change (which I've already made) will still work.  It will just
> require that executables be relinked before there is any change.
>
> To answer the question, no I don't think this calls for a binmode.o
> solution.  That would just lend to exactly the kind of confusion that
> Larry was cautioning against.

OK, confusion == bad. But I don't think what I propose would cause
confusion, done right. So maybe I'm not explaining it very well:

* getopt reordering is helpful for most programs
* getopt reordering is annoying for programs which take invocations of other
programs as arguments
* Cygwin getopt penalizes all programs for the sake of the few.
* POSIXLY_INCORRECT_GETOPT goes a little way to fixing this, but is still
not ideal.
* Ideal would be for the default to be reordering-enabled, and the few
programs which don't work well with this to automatically switch it off.

Possible solutions include having the few programs which need to:
- Call setenv("POSIXLY_CORRECT", "1") before calling getopt.
- Call [the hypothetical] set_getopt_posixly_correct(1) before calling
getopt
- Have an optionally linked premain object which does on of these

The only possible flaw is:
How to determine which programs need to do this.
Off hand, I can think of strace, and find -exec.

Max.


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]