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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.