summaryrefslogtreecommitdiff
path: root/src/bin/scripts/reindexdb.c
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2012-04-17 18:36:59 -0400
committerAndrew Dunstan <andrew@dunslane.net>2012-04-17 18:36:59 -0400
commit095527a7019718f4c1f5206b2ac634d11903366d (patch)
tree083bf3d1363081a6269fbb2e32b00a885f00bc18 /src/bin/scripts/reindexdb.c
parent8d444c90d87115934874d07e61f1c080b282aa6e (diff)
Don't override arguments set via options with positional arguments.
A number of utility programs were rather careless about paremeters that can be set via both an option argument and a positional argument. This leads to results which can violate the Principal Of Least Astonishment. These changes refuse to use positional arguments to override settings that have been made via positional arguments. The changes are backpatched to all live branches.
Diffstat (limited to 'src/bin/scripts/reindexdb.c')
-rw-r--r--src/bin/scripts/reindexdb.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c
index 3651707981c..4e0d9ba0a07 100644
--- a/src/bin/scripts/reindexdb.c
+++ b/src/bin/scripts/reindexdb.c
@@ -116,17 +116,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();