> > 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?
Yes, that is right. If "pg_control" exists in the directory, then we should not assume it is a config-only directory. > > --------------------------------------------------------------------------- > > [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 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html