|
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': |
|