I am working on integrating this patch now. What is the logic if checkConfigDir(). It seems incompleted or wrong.
Your code had: + if(S_ISREG(stat_buf.st_mode)) /* It's a regular file, so assume it's an explict */ + { + return TRUE; + } + else if(S_ISDIR(stat_buf.st_mode)) /* It's a directory, is it a config or system dir */ + { + snprintf(path, sizeof(path), "%s/global/pg_control", checkdir); + /* If this is not found, then, hey it wasn't going to work as a data dir either. */ + if(stat(path, &stat_buf) == -1) + return TRUE; + } + return FALSE; The last stat() seems to say that if the directory has no global/pg_control, then it is good a a config-only directory, and if not it is a data directory. Is that right? --------------------------------------------------------------------------- [EMAIL PROTECTED] wrote: > This patch incorporates a number of changes suggested by the group. The > purpose of this patch is to move postgresql to a position where all > configuration options are specified in one place. The postgresql.conf file > could completely document a postgresql environment. > > > It adds this functionality: > > The "-D' option will work as it always has if it is set to a standard > postgresql database cluster directory. If it is set to a "postgresql.conf" > file, it will use that file for configuration. If it is set to a directory > which is not a cluster directory, i.e. "/somepath/etc" it will look for > pg_hba.conf, pg_ident.conf, and postgresql.conf there. > > For postgresql to work only with a configuration file, some options have > been added: > > include = '/etc/postgres/debug.conf' > pgdata = '/vol01/postgres' > hba_conf = '/etc/postgres/pg_hba_conf' > ident_conf = '/etc/postgres/pg_ident.conf' > runtime_pidfile = '/var/run/postgresql.conf' > tablespace = '/somevol/somepath' > > "include" allows files with configuration parameters to be included. > > "pgdata" (used to be data_dir in old patch) tells PostgreSQL where it's > database cluster directory is located. > > "hba_conf" tells PostgreSQL where to find pg_hba.conf file. > > "ident_conf" tells PostgreSQL where to find pg_ident.conf. > > "runtime_pidfile" tells postgres to write it's PID to a file that would be > used by external applications. It is *NOT* the pid file which postgresql > uses. > > "tablespace" allows postgresql to use alternate locations without > environment variables. Using SIGHUP, tablespaces are reloaded. This allows > you to add tablespaces to a running PostgreSQL process. (I know this has a > limited lifetime, but it may make "CREATE DATABASE ... WITH LOCATION" a > little bit more sane in the meantime. [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster