Our getopt_long() doesn't do abbreviations or NLS

Started by Tom Lanealmost 21 years ago4 messages
#1Tom Lane
tgl@sss.pgh.pa.us

I just noticed that our port/getopt_long.c substitute implementation
does not accept abbreviated names for long options:

$ pg_dump --username tgl regression
... works ...
$ pg_dump --user tgl regression
pg_dump: illegal option -- user
Try "pg_dump --help" for more information.
$

The GNU implementation of getopt_long is documented to allow this:

The getopt_long() function works like getopt() except that it also
accepts long options, started out by two dashes. Long option names
may be abbreviated if the abbreviation is unique or is an exact match
for some defined option. A long option may take a parameter, of the
form --arg=param or --arg param.

and experimentation confirms it works.

Barring objections, I'm going to modify our version to allow unique
abbreviations too.

I also notice that our version isn't i18n-ready:

if (opterr && optstring[0] != ':')
fprintf(stderr,
"%s: illegal option -- %s\n", argv[0], place);

Should it be gettext'ified?

regards, tom lane

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#1)
Re: Our getopt_long() doesn't do abbreviations or NLS

Tom Lane wrote:

I just noticed that our port/getopt_long.c substitute implementation
does not accept abbreviated names for long options:

That is known, but since we don't advertise that feature, it's not a
problem.

Barring objections, I'm going to modify our version to allow unique
abbreviations too.

Sure, if you like.

Should it be gettext'ified?

Probably.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#2)
Re: Our getopt_long() doesn't do abbreviations or NLS

Peter Eisentraut <peter_e@gmx.net> writes:

Tom Lane wrote:

Should it be gettext'ified?

Probably.

I seem to recall that there was some special consideration for files
that would conditionally show up in multiple executables. Or were you
going to fix that by having just one .mo file for all the clients?

regards, tom lane

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#3)
Re: Our getopt_long() doesn't do abbreviations or NLS

Tom Lane wrote:

I seem to recall that there was some special consideration for files
that would conditionally show up in multiple executables. Or were
you going to fix that by having just one .mo file for all the
clients?

The current method is to explicitly register the source file in each
catalog that might need it. This is not ideal, but there isn't a
better way in the works at this time.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/