BUG #3054: getopt_long () misbehaviour - Mailing list pgsql-bugs

From Tux
Subject BUG #3054: getopt_long () misbehaviour
Date
Msg-id 200702221336.l1MDa0rs097431@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #3054: getopt_long () misbehaviour  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      3054
Logged by:          Tux
Email address:      h.m.brand@xs4all.nl
PostgreSQL version: 8.2.3
Operating system:   HP-UX 11.00
Description:        getopt_long () misbehaviour
Details:

Might be some deep down misbehaving system library, but on HP-UX 11.00 (not
on 11.11, and/or 11.23) getopt_long () misbehaves in that it causes all
command line utilities to se the program name as the first argument, causing
a simple command like

# psql test

to be executed as

# psql psql test

The very first command already shows this misbehaviour, as

# initdb

does not create $PGDATA/*, but ./initdb as DB environment files. D'uh!

Patch below, also available on http://www.xs4all.nl/~procura/psql823.diff
All now runs fine:

--8<---
diff -pur postgresql-8.2.3/src/bin/initdb/initdb.c
postgresql-8.2.3-pro/src/bin/initdb/initdb.c
--- postgresql-8.2.3/src/bin/initdb/initdb.c    2006-10-04 20:58:08 +0200
+++ postgresql-8.2.3-pro/src/bin/initdb/initdb.c        2007-02-22 14:18:25
+0100
@@ -2440,6 +2440,7 @@ main(int argc, char *argv[])

        /* process command-line options */

+       optind = 1;
        while ((c = getopt_long(argc, argv, "dD:E:L:nU:WA:s", long_options,
&option_index)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/pg_dump/pg_dump.c
postgresql-8.2.3-pro/src/bin/pg_dump/pg_dump.c
--- postgresql-8.2.3/src/bin/pg_dump/pg_dump.c  2006-10-10 01:36:59 +0200
+++ postgresql-8.2.3-pro/src/bin/pg_dump/pg_dump.c      2007-02-22 14:18:47
+0100
@@ -296,6 +296,7 @@ main(int argc, char **argv)
                }
        }

+       optind = 1;
        while ((c = getopt_long(argc, argv,
"abcCdDE:f:F:h:in:N:oOp:RsS:t:T:uU:vWxX:Z:",
                                                        long_options,
&optindex)) != -1)
        {
diff -pur postgresql-8.2.3/src/bin/pg_dump/pg_dumpall.c
postgresql-8.2.3-pro/src/bin/pg_dump/pg_dumpall.c
--- postgresql-8.2.3/src/bin/pg_dump/pg_dumpall.c       2006-11-21 23:19:46
+0100
+++ postgresql-8.2.3-pro/src/bin/pg_dump/pg_dumpall.c   2007-02-22 14:18:52
+0100
@@ -161,6 +161,7 @@ main(int argc, char *argv[])

        pgdumpopts = createPQExpBuffer();

+       optind = 1;
        while ((c = getopt_long(argc, argv, "acdDgh:ioOp:sS:U:vWxX:",
long_options, &optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/pg_dump/pg_restore.c
postgresql-8.2.3-pro/src/bin/pg_dump/pg_restore.c
--- postgresql-8.2.3/src/bin/pg_dump/pg_restore.c       2006-10-15 01:07:22
+0200
+++ postgresql-8.2.3-pro/src/bin/pg_dump/pg_restore.c   2007-02-22 14:19:08
+0100
@@ -137,6 +137,7 @@ main(int argc, char **argv)
                }
        }

+       optind = 1;
        while ((c = getopt_long(argc, argv,
"acCd:ef:F:h:iI:lL:n:Op:P:RsS:t:T:uU:vWxX:1",
                                                        cmdopts, NULL)) !=
-1)
        {
diff -pur postgresql-8.2.3/src/bin/psql/startup.c
postgresql-8.2.3-pro/src/bin/psql/startup.c
--- postgresql-8.2.3/src/bin/psql/startup.c     2006-10-04 02:30:06 +0200
+++ postgresql-8.2.3-pro/src/bin/psql/startup.c 2007-02-22 14:19:17 +0100
@@ -451,6 +450,7 @@ parse_psql_options(int argc, char *argv[

        memset(options, 0, sizeof *options);

+       optind = 1;
        while ((c = getopt_long(argc, argv,
"aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:uU:v:VWxX?1",
                                                        long_options,
&optindex)) != -1)
        {
diff -pur postgresql-8.2.3/src/bin/scripts/clusterdb.c
postgresql-8.2.3-pro/src/bin/scripts/clusterdb.c
--- postgresql-8.2.3/src/bin/scripts/clusterdb.c        2006-03-05 16:58:52
+0100
+++ postgresql-8.2.3-pro/src/bin/scripts/clusterdb.c    2007-02-22 14:19:28
+0100
@@ -60,6 +60,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "clusterdb", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:Weqd:at:", long_options,
&optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/createdb.c
postgresql-8.2.3-pro/src/bin/scripts/createdb.c
--- postgresql-8.2.3/src/bin/scripts/createdb.c 2006-06-01 02:15:36 +0200
+++ postgresql-8.2.3-pro/src/bin/scripts/createdb.c     2007-02-22 14:19:33
+0100
@@ -64,6 +64,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "createdb", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:",
long_options, &optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/createlang.c
postgresql-8.2.3-pro/src/bin/scripts/createlang.c
--- postgresql-8.2.3/src/bin/scripts/createlang.c       2006-07-14 16:52:27
+0200
+++ postgresql-8.2.3-pro/src/bin/scripts/createlang.c   2007-02-22 14:19:39
+0100
@@ -56,6 +56,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "createlang", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options,
&optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/createuser.c
postgresql-8.2.3-pro/src/bin/scripts/createuser.c
--- postgresql-8.2.3/src/bin/scripts/createuser.c       2006-10-04 02:30:06
+0200
+++ postgresql-8.2.3-pro/src/bin/scripts/createuser.c   2007-02-22 14:19:43
+0100
@@ -86,6 +86,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "createuser", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:WeqdDsSaArRiIlLc:PEN",
                                                        long_options,
&optindex)) != -1)
        {
diff -pur postgresql-8.2.3/src/bin/scripts/dropdb.c
postgresql-8.2.3-pro/src/bin/scripts/dropdb.c
--- postgresql-8.2.3/src/bin/scripts/dropdb.c   2006-09-22 20:50:41 +0200
+++ postgresql-8.2.3-pro/src/bin/scripts/dropdb.c       2007-02-22 14:19:45
+0100
@@ -55,6 +55,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "dropdb", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options,
&optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/droplang.c
postgresql-8.2.3-pro/src/bin/scripts/droplang.c
--- postgresql-8.2.3/src/bin/scripts/droplang.c 2006-05-31 13:02:42 +0200
+++ postgresql-8.2.3-pro/src/bin/scripts/droplang.c     2007-02-22 14:19:47
+0100
@@ -67,6 +67,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "droplang", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options,
&optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/dropuser.c
postgresql-8.2.3-pro/src/bin/scripts/dropuser.c
--- postgresql-8.2.3/src/bin/scripts/dropuser.c 2006-09-22 20:50:41 +0200
+++ postgresql-8.2.3-pro/src/bin/scripts/dropuser.c     2007-02-22 14:19:48
+0100
@@ -55,6 +55,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "dropuser", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options,
&optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/reindexdb.c
postgresql-8.2.3-pro/src/bin/scripts/reindexdb.c
--- postgresql-8.2.3/src/bin/scripts/reindexdb.c        2006-09-02 19:10:17
+0200
+++ postgresql-8.2.3-pro/src/bin/scripts/reindexdb.c    2007-02-22 14:19:52
+0100
@@ -70,6 +70,7 @@ main(int argc, char *argv[])
        handle_help_version_opts(argc, argv, "reindexdb", help);

        /* process command-line options */
+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:Weqd:ast:i:",
long_options, &optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/bin/scripts/vacuumdb.c
postgresql-8.2.3-pro/src/bin/scripts/vacuumdb.c
--- postgresql-8.2.3/src/bin/scripts/vacuumdb.c 2006-03-05 16:58:52 +0100
+++ postgresql-8.2.3-pro/src/bin/scripts/vacuumdb.c     2007-02-22 14:19:54
+0100
@@ -68,6 +68,7 @@ main(int argc, char *argv[])

        handle_help_version_opts(argc, argv, "vacuumdb", help);

+       optind = 1;
        while ((c = getopt_long(argc, argv, "h:p:U:Weqd:zat:fv",
long_options, &optindex)) != -1)
        {
                switch (c)
diff -pur postgresql-8.2.3/src/test/regress/pg_regress.c
postgresql-8.2.3-pro/src/test/regress/pg_regress.c
--- postgresql-8.2.3/src/test/regress/pg_regress.c      2006-10-04 02:30:14
+0200
+++ postgresql-8.2.3-pro/src/test/regress/pg_regress.c  2007-02-22 14:20:09
+0100
@@ -1351,6 +1351,7 @@ main(int argc, char *argv[])
        hostname = "localhost";
 #endif

+       optind = 1;
        while ((c = getopt_long(argc, argv, "hV", long_options,
&option_index)) != -1)
        {
                switch (c)
-->8---

Enjoy, Have FUN! H.Merijn
perl5-porter

pgsql-bugs by date:

Previous
From: "Aaron Zedonis"
Date:
Subject: BUG #3049: psql does not honor md5 in pg_hba.conf file
Next
From: "Jessica"
Date:
Subject: BUG #3044: what is correct configuration?