|
4 | 4 | *
|
5 | 5 | * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
6 | 6 | *
|
7 |
| - * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.26 2004/08/2821:01:38 momjian Exp $ |
| 7 | + * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.27 2004/08/2822:04:01 momjian Exp $ |
8 | 8 | *
|
9 | 9 | *-------------------------------------------------------------------------
|
10 | 10 | */
|
@@ -67,6 +67,7 @@ static ShutdownMode shutdown_mode = SMART_MODE;
|
67 | 67 | staticintsig=SIGTERM;/* default */
|
68 | 68 | staticCtlCommandctl_command=NO_COMMAND;
|
69 | 69 | staticchar*pg_data=NULL;
|
| 70 | +staticchar*pgdata_opt=NULL; |
70 | 71 | staticchar*post_opts=NULL;
|
71 | 72 | staticconstchar*progname;
|
72 | 73 | staticchar*log_file=NULL;
|
@@ -309,19 +310,20 @@ start_postmaster(void)
|
309 | 310 | */
|
310 | 311 | if (log_file!=NULL)
|
311 | 312 | #ifndefWIN32
|
312 |
| -snprintf(cmd,MAXPGPATH,"%s\"%s\" %s < \"%s\" >> \"%s\" 2>&1 &%s", |
| 313 | +snprintf(cmd,MAXPGPATH,"%s\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &%s", |
313 | 314 | #else
|
314 |
| -snprintf(cmd,MAXPGPATH,"%sSTART /B \"\" \"%s\" %s < \"%s\" >> \"%s\" 2>&1%s", |
| 315 | +snprintf(cmd,MAXPGPATH,"%sSTART /B \"\" \"%s\" %s%s < \"%s\" >> \"%s\" 2>&1%s", |
315 | 316 | #endif
|
316 |
| -SYSTEMQUOTE,postgres_path,post_opts,DEVNULL,log_file, |
317 |
| -SYSTEMQUOTE); |
| 317 | +SYSTEMQUOTE,postgres_path,pgdata_opt,post_opts, |
| 318 | +DEVNULL,log_file,SYSTEMQUOTE); |
318 | 319 | else
|
319 | 320 | #ifndefWIN32
|
320 |
| -snprintf(cmd,MAXPGPATH,"%s\"%s\" %s < \"%s\" 2>&1 &%s", |
| 321 | +snprintf(cmd,MAXPGPATH,"%s\"%s\" %s%s < \"%s\" 2>&1 &%s", |
321 | 322 | #else
|
322 |
| -snprintf(cmd,MAXPGPATH,"%sSTART /B \"\" \"%s\" %s < \"%s\" 2>&1%s", |
| 323 | +snprintf(cmd,MAXPGPATH,"%sSTART /B \"\" \"%s\" %s%s < \"%s\" 2>&1%s", |
323 | 324 | #endif
|
324 |
| -SYSTEMQUOTE,postgres_path,post_opts,DEVNULL,SYSTEMQUOTE); |
| 325 | +SYSTEMQUOTE,postgres_path,pgdata_opt,post_opts, |
| 326 | +DEVNULL,SYSTEMQUOTE); |
325 | 327 |
|
326 | 328 | returnsystem(cmd);
|
327 | 329 | }
|
@@ -494,6 +496,10 @@ do_start(void)
|
494 | 496 | }
|
495 | 497 | }
|
496 | 498 |
|
| 499 | +/* No -D or -D already added during server start */ |
| 500 | +if (ctl_command==RESTART_COMMAND||pgdata_opt==NULL) |
| 501 | +pgdata_opt=""; |
| 502 | + |
497 | 503 | if (postgres_path==NULL)
|
498 | 504 | {
|
499 | 505 | char*postmaster_path;
|
@@ -1210,6 +1216,9 @@ main(int argc, char **argv)
|
1210 | 1216 | env_var=xmalloc(len+8);
|
1211 | 1217 | snprintf(env_var,len+8,"PGDATA=%s",optarg);
|
1212 | 1218 | putenv(env_var);
|
| 1219 | +/* Show -D for easier postmaster 'ps' identification */ |
| 1220 | +pgdata_opt=xmalloc(len+7); |
| 1221 | +snprintf(pgdata_opt,len+7,"-D \"%s\" ",optarg); |
1213 | 1222 | break;
|
1214 | 1223 | }
|
1215 | 1224 | case'l':
|
|