if (env_wait != NULL)
wait_seconds = atoi(env_wait);
- /*
- * 'Action' can be before or after args so loop over both. Some
- * getopt_long() implementations will reorder argv[] to place all flags
- * first (GNU?), but we don't rely on it. Our /port version doesn't do
- * that.
- */
- optind = 1;
-
/* process command-line options */
- while (optind < argc)
+ while ((c = getopt_long(argc, argv, "cD:e:l:m:N:o:p:P:sS:t:U:wW",
+ long_options, &option_index)) != -1)
{
- while ((c = getopt_long(argc, argv, "cD:e:l:m:N:o:p:P:sS:t:U:wW",
- long_options, &option_index)) != -1)
+ switch (c)
{
- switch (c)
- {
- case 'D':
- {
- char *pgdata_D;
-
- pgdata_D = pg_strdup(optarg);
- canonicalize_path(pgdata_D);
- setenv("PGDATA", pgdata_D, 1);
-
- /*
- * We could pass PGDATA just in an environment
- * variable but we do -D too for clearer postmaster
- * 'ps' display
- */
- pgdata_opt = psprintf("-D \"%s\" ", pgdata_D);
- free(pgdata_D);
- break;
- }
- case 'e':
- event_source = pg_strdup(optarg);
- break;
- case 'l':
- log_file = pg_strdup(optarg);
- break;
- case 'm':
- set_mode(optarg);
- break;
- case 'N':
- register_servicename = pg_strdup(optarg);
- break;
- case 'o':
- /* append option? */
- if (!post_opts)
- post_opts = pg_strdup(optarg);
- else
- {
- char *old_post_opts = post_opts;
-
- post_opts = psprintf("%s %s", old_post_opts, optarg);
- free(old_post_opts);
- }
- break;
- case 'p':
- exec_path = pg_strdup(optarg);
- break;
- case 'P':
- register_password = pg_strdup(optarg);
- break;
- case 's':
- silent_mode = true;
+ case 'D':
+ {
+ char *pgdata_D;
+
+ pgdata_D = pg_strdup(optarg);
+ canonicalize_path(pgdata_D);
+ setenv("PGDATA", pgdata_D, 1);
+
+ /*
+ * We could pass PGDATA just in an environment variable
+ * but we do -D too for clearer postmaster 'ps' display
+ */
+ pgdata_opt = psprintf("-D \"%s\" ", pgdata_D);
+ free(pgdata_D);
break;
- case 'S':
+ }
+ case 'e':
+ event_source = pg_strdup(optarg);
+ break;
+ case 'l':
+ log_file = pg_strdup(optarg);
+ break;
+ case 'm':
+ set_mode(optarg);
+ break;
+ case 'N':
+ register_servicename = pg_strdup(optarg);
+ break;
+ case 'o':
+ /* append option? */
+ if (!post_opts)
+ post_opts = pg_strdup(optarg);
+ else
+ {
+ char *old_post_opts = post_opts;
+
+ post_opts = psprintf("%s %s", old_post_opts, optarg);
+ free(old_post_opts);
+ }
+ break;
+ case 'p':
+ exec_path = pg_strdup(optarg);
+ break;
+ case 'P':
+ register_password = pg_strdup(optarg);
+ break;
+ case 's':
+ silent_mode = true;
+ break;
+ case 'S':
#ifdef WIN32
- set_starttype(optarg);
+ set_starttype(optarg);
#else
- write_stderr(_("%s: -S option not supported on this platform\n"),
- progname);
- exit(1);
+ write_stderr(_("%s: -S option not supported on this platform\n"),
+ progname);
+ exit(1);
#endif
- break;
- case 't':
- wait_seconds = atoi(optarg);
- wait_seconds_arg = true;
- break;
- case 'U':
- if (strchr(optarg, '\\'))
- register_username = pg_strdup(optarg);
- else
- /* Prepend .\ for local accounts */
- register_username = psprintf(".\\%s", optarg);
- break;
- case 'w':
- do_wait = true;
- break;
- case 'W':
- do_wait = false;
- break;
- case 'c':
- allow_core_files = true;
- break;
- default:
- /* getopt_long already issued a suitable error message */
- do_advice();
- exit(1);
- }
+ break;
+ case 't':
+ wait_seconds = atoi(optarg);
+ wait_seconds_arg = true;
+ break;
+ case 'U':
+ if (strchr(optarg, '\\'))
+ register_username = pg_strdup(optarg);
+ else
+ /* Prepend .\ for local accounts */
+ register_username = psprintf(".\\%s", optarg);
+ break;
+ case 'w':
+ do_wait = true;
+ break;
+ case 'W':
+ do_wait = false;
+ break;
+ case 'c':
+ allow_core_files = true;
+ break;
+ default:
+ /* getopt_long already issued a suitable error message */
+ do_advice();
+ exit(1);
}
+ }
- /* Process an action */
- if (optind < argc)
+ /* Process an action */
+ if (optind < argc)
+ {
+ if (strcmp(argv[optind], "init") == 0
+ || strcmp(argv[optind], "initdb") == 0)
+ ctl_command = INIT_COMMAND;
+ else if (strcmp(argv[optind], "start") == 0)
+ ctl_command = START_COMMAND;
+ else if (strcmp(argv[optind], "stop") == 0)
+ ctl_command = STOP_COMMAND;
+ else if (strcmp(argv[optind], "restart") == 0)
+ ctl_command = RESTART_COMMAND;
+ else if (strcmp(argv[optind], "reload") == 0)
+ ctl_command = RELOAD_COMMAND;
+ else if (strcmp(argv[optind], "status") == 0)
+ ctl_command = STATUS_COMMAND;
+ else if (strcmp(argv[optind], "promote") == 0)
+ ctl_command = PROMOTE_COMMAND;
+ else if (strcmp(argv[optind], "logrotate") == 0)
+ ctl_command = LOGROTATE_COMMAND;
+ else if (strcmp(argv[optind], "kill") == 0)
{
- if (ctl_command != NO_COMMAND)
+ if (argc - optind < 3)
{
- write_stderr(_("%s: too many command-line arguments (first is \"%s\")\n"), progname, argv[optind]);
+ write_stderr(_("%s: missing arguments for kill mode\n"), progname);
do_advice();
exit(1);
}
-
- if (strcmp(argv[optind], "init") == 0
- || strcmp(argv[optind], "initdb") == 0)
- ctl_command = INIT_COMMAND;
- else if (strcmp(argv[optind], "start") == 0)
- ctl_command = START_COMMAND;
- else if (strcmp(argv[optind], "stop") == 0)
- ctl_command = STOP_COMMAND;
- else if (strcmp(argv[optind], "restart") == 0)
- ctl_command = RESTART_COMMAND;
- else if (strcmp(argv[optind], "reload") == 0)
- ctl_command = RELOAD_COMMAND;
- else if (strcmp(argv[optind], "status") == 0)
- ctl_command = STATUS_COMMAND;
- else if (strcmp(argv[optind], "promote") == 0)
- ctl_command = PROMOTE_COMMAND;
- else if (strcmp(argv[optind], "logrotate") == 0)
- ctl_command = LOGROTATE_COMMAND;
- else if (strcmp(argv[optind], "kill") == 0)
- {
- if (argc - optind < 3)
- {
- write_stderr(_("%s: missing arguments for kill mode\n"), progname);
- do_advice();
- exit(1);
- }
- ctl_command = KILL_COMMAND;
- set_sig(argv[++optind]);
- killproc = atol(argv[++optind]);
- }
+ ctl_command = KILL_COMMAND;
+ set_sig(argv[++optind]);
+ killproc = atol(argv[++optind]);
+ }
#ifdef WIN32
- else if (strcmp(argv[optind], "register") == 0)
- ctl_command = REGISTER_COMMAND;
- else if (strcmp(argv[optind], "unregister") == 0)
- ctl_command = UNREGISTER_COMMAND;
- else if (strcmp(argv[optind], "runservice") == 0)
- ctl_command = RUN_AS_SERVICE_COMMAND;
+ else if (strcmp(argv[optind], "register") == 0)
+ ctl_command = REGISTER_COMMAND;
+ else if (strcmp(argv[optind], "unregister") == 0)
+ ctl_command = UNREGISTER_COMMAND;
+ else if (strcmp(argv[optind], "runservice") == 0)
+ ctl_command = RUN_AS_SERVICE_COMMAND;
#endif
- else
- {
- write_stderr(_("%s: unrecognized operation mode \"%s\"\n"), progname, argv[optind]);
- do_advice();
- exit(1);
- }
- optind++;
+ else
+ {
+ write_stderr(_("%s: unrecognized operation mode \"%s\"\n"), progname, argv[optind]);
+ do_advice();
+ exit(1);
}
+ optind++;
+ }
+
+ if (optind < argc)
+ {
+ write_stderr(_("%s: too many command-line arguments (first is \"%s\")\n"), progname, argv[optind]);
+ do_advice();
+ exit(1);
}
if (ctl_command == NO_COMMAND)