[freetds] getopt compatibility
James K. Lowden
jklowden at freetds.org
Tue May 27 10:15:10 EDT 2008
ZIGLIO, Frediano, VF-IT wrote:
> > ZIGLIO, Frediano, VF-IT wrote:
> > > In tsql
> > > getopt is restarted to read options. It's currently
> > > restarted using GNU getopt way, that is setting optind with 0.
> > Looking at the code, I think the most portable choice -- and
> > probably the
> > least work -- is to refactor tsql.c: call getopt(3) in only
> > one place, and
> > don't reset optind/optreset.
> ehm.... that is only for main argc/argv ??
So ... are you suggesting I should read the code before offering advice?
Don't you understand how much harder that is?
OK, I see: the "go flags".
There is no standard for resetting getopt.
Do what you think is easiest or most interesting. I don't see the need --
unless you want to -- to develop an autoconf test for this. (A quick
search didn't turn up anything, and "getopt" doesn't appear in the
autoconf info file. It seems it's a void that needs filling.)
The quickest and least kludgy answer is probably to write a function:
static int reset_getopt();
that does what you want, complete with all the #ifs you need. :-/
At least it won't be very big!
>>> try to detect HP-UX and reset optind with 1?
ISTR we already test HP/UX symbols somewhere?
> > I think refactoring is best because otherwise you need an
> > autoconf test ...
> > with a bunch of #define macros. It would look like
> > src/tds/net.c. :-(
> I know.. net.c is ugly but it does a lot of system optimizations and all
> contained in a single file... all others use mainly plain C and some
> allocation/deallocation function...
Yeah, a dancing bear: not graceful, but impressive that it does what it
More information about the FreeTDS