aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/initdb/initdb.c7
-rw-r--r--src/bin/scripts/clusterdb.c26
-rw-r--r--src/bin/scripts/createlang.c14
-rw-r--r--src/bin/scripts/droplang.c14
-rw-r--r--src/bin/scripts/reindexdb.c25
-rw-r--r--src/bin/scripts/vacuumdb.c27
6 files changed, 75 insertions, 38 deletions
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 87a9c95430e..303b0cf7560 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -2760,8 +2760,11 @@ main(int argc, char *argv[])
}
- /* Non-option argument specifies data directory */
- if (optind < argc)
+ /*
+ * Non-option argument specifies data directory
+ * as long as it wasn't already specified with -D / --pgdata
+ */
+ if (optind < argc && strlen(pg_data) == 0)
{
pg_data = xstrdup(argv[optind]);
optind++;
diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c
index b01f91c1d6e..0f711e870b3 100644
--- a/src/bin/scripts/clusterdb.c
+++ b/src/bin/scripts/clusterdb.c
@@ -112,18 +112,22 @@ main(int argc, char *argv[])
}
}
- switch (argc - optind)
+ /*
+ * Non-option argument specifies database name
+ * as long as it wasn't already specified with -d / --dbname
+ */
+ if (optind < argc && dbname == NULL)
{
- case 0:
- break;
- case 1:
- dbname = argv[optind];
- break;
- default:
- fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
- progname, argv[optind + 1]);
- fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
- exit(1);
+ dbname = argv[optind];
+ optind++;
+ }
+
+ if (optind < argc)
+ {
+ fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+ progname, argv[optind + 1]);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
}
setup_cancel_handler();
diff --git a/src/bin/scripts/createlang.c b/src/bin/scripts/createlang.c
index c8b927c6758..cc671a49767 100644
--- a/src/bin/scripts/createlang.c
+++ b/src/bin/scripts/createlang.c
@@ -91,14 +91,24 @@ main(int argc, char *argv[])
}
}
+ /*
+ * We set dbname from positional arguments if it is not
+ * already set by option arguments -d. If not doing
+ * listlangs, positional dbname must follow positional
+ * langname.
+ */
+
if (argc - optind > 0)
{
if (listlangs)
- dbname = argv[optind++];
+ {
+ if (dbname == NULL)
+ dbname = argv[optind++];
+ }
else
{
langname = argv[optind++];
- if (argc - optind > 0)
+ if (argc - optind > 0 && dbname == NULL)
dbname = argv[optind++];
}
}
diff --git a/src/bin/scripts/droplang.c b/src/bin/scripts/droplang.c
index 66bc9664a5f..47ec37f5e95 100644
--- a/src/bin/scripts/droplang.c
+++ b/src/bin/scripts/droplang.c
@@ -90,14 +90,24 @@ main(int argc, char *argv[])
}
}
+ /*
+ * We set dbname from positional arguments if it is not
+ * already set by option arguments -d. If not doing
+ * listlangs, positional dbname must follow positional
+ * langname.
+ */
+
if (argc - optind > 0)
{
if (listlangs)
- dbname = argv[optind++];
+ {
+ if (dbname == NULL)
+ dbname = argv[optind++];
+ }
else
{
langname = argv[optind++];
- if (argc - optind > 0)
+ if (argc - optind > 0 && dbname == NULL)
dbname = argv[optind++];
}
}
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c
index 54b478db60c..614a6885a0b 100644
--- a/src/bin/scripts/reindexdb.c
+++ b/src/bin/scripts/reindexdb.c
@@ -122,17 +122,22 @@ main(int argc, char *argv[])
}
}
- switch (argc - optind)
+ /*
+ * Non-option argument specifies database name
+ * as long as it wasn't already specified with -d / --dbname
+ */
+ if (optind < argc && dbname == NULL)
{
- case 0:
- break;
- case 1:
- dbname = argv[optind];
- break;
- default:
- fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), progname, argv[optind + 1]);
- fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
- exit(1);
+ dbname = argv[optind];
+ optind++;
+ }
+
+ if (optind < argc)
+ {
+ fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+ progname, argv[optind + 1]);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
}
setup_cancel_handler();
diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c
index 1698c5f630b..fe303ad8853 100644
--- a/src/bin/scripts/vacuumdb.c
+++ b/src/bin/scripts/vacuumdb.c
@@ -135,18 +135,23 @@ main(int argc, char *argv[])
}
}
- switch (argc - optind)
+
+ /*
+ * Non-option argument specifies database name
+ * as long as it wasn't already specified with -d / --dbname
+ */
+ if (optind < argc && dbname == NULL)
{
- case 0:
- break;
- case 1:
- dbname = argv[optind];
- break;
- default:
- fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
- progname, argv[optind + 1]);
- fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
- exit(1);
+ dbname = argv[optind];
+ optind++;
+ }
+
+ if (optind < argc)
+ {
+ fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+ progname, argv[optind + 1]);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+ exit(1);
}
if (analyze_only)