Re: getopt compatibility
[email protected] (Christos Zoulas)
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Organization | Astron Software |
| Message-ID | <[email protected]> |
On May 27, 11:35am, [email protected] ("James K. Lowden") wrote: -- Subject: Re: [freetds] getopt compatibility | ZIGLIO, Frediano, VF-IT wrote: | > Testing for HP-UX from code is not that | > difficult and optreset variable can be tested quite easily in autoconf, | > something like | > | > static int | > reset_getopt(void) | > { | > #if hpux | > optind = 1; | > #else | > #if HAVE_OPTRESET | > optreset = 1; | > #endif | > optind = 0; | > #endif | > } | | www.gnu.org/software/libtool/manual/libc/Getopt.htm | | Actually, this is going to be much easier than you think. | | 1. tsql appears to be wrong: GNU says "The initial value of this variable | is 1." Not zero. | 2. NetBSD, HP/UX, and opengroup.org all say the same thing. | | I tested getopt(3) on a RHEL system; setting optind to 1 caused it to | parse again from the beginning. | | 3. I think it's legal in C to declare | | extern int optreset; | | without ever having: | | int optreset; | | so there's no need even to test HAVE_OPTRESET: | | static int | reset_getopt(void) | { | optreset = 1; | optind = 1; | } | | which of course means we don't need the funciton at all. :-) Yes, it is, but then you get a link error unless you make it weak. setting optind always to 1 is probably the best way. For the belt and suspenders version, setting optreset if it exists is good too. christos