summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2004-04-22 01:53:37 +0000
committerBruce Momjian2004-04-22 01:53:37 +0000
commitbe6bbcef5678c67f7f1f48972d126233ff64ac48 (patch)
tree228d7b613838a613d0c8e940a74eb3d5c4ed9039
parent490684190182a6938514cbc2eafbf163a91f6d81 (diff)
Add global psql config file, psql.rc.sample.
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml19
-rw-r--r--src/bin/psql/Makefile5
-rw-r--r--src/bin/psql/psql.rc.sample7
-rw-r--r--src/bin/psql/startup.c54
4 files changed, 55 insertions, 30 deletions
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 99c0dbd95e8..9779789bef2 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.112 2004/04/21 00:34:18 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.113 2004/04/22 01:53:17 momjian Exp $
PostgreSQL documentation
-->
@@ -440,7 +440,8 @@ PostgreSQL documentation
<term><option>--no-psqlrc</></term>
<listitem>
<para>
- Do not read the start-up file <filename>~/.psqlrc</filename>.
+ Do not read the start-up file <filename>/psql.rc</filename> or
+ <filename>~/.psqlrc</filename>.
</para>
</listitem>
</varlistentry>
@@ -1859,8 +1860,9 @@ bar
<para>
The autocommit-on mode is <productname>PostgreSQL</>'s traditional
behavior, but autocommit-off is closer to the SQL spec. If you
- prefer autocommit-off, you may wish to set it in
- your <filename>.psqlrc</filename> file.
+ prefer autocommit-off, you may wish to set it in the system-wide
+ <filename>psql.rc</filename> or your
+ <filename>.psqlrc</filename> file.
</para>
</note>
</listitem>
@@ -2488,9 +2490,12 @@ $endif
<listitem>
<para>
Before starting up, <application>psql</application> attempts to
- read and execute commands from the file
- <filename>$HOME/.psqlrc</filename>. It could be used to set up
- the client or the server to taste (using the <command>\set
+ read and execute commands from the the system-wide
+ <filename>psql.rc</filename> file and the
+ <filename>$HOME/.psqlrc</filename> file in the user's home
+ directory. See <filename><replaceable>PREFIX</>/share/psql.rc.sample</>
+ for information on setting up the system-wide file. It could be used
+ to set up the client or the server to taste (using the <command>\set
</command> and <command>SET</command> commands).
</para>
</listitem>
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index efbffe48596..a29f18e88e6 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.40 2004/03/09 19:47:05 petere Exp $
+# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.41 2004/04/22 01:53:37 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -15,7 +15,7 @@ include $(top_builddir)/src/Makefile.global
REFDOCDIR= $(top_srcdir)/doc/src/sgml/ref
-override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -DFRONTEND
+override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -DFRONTEND -DSYSCONFDIR='"$(sysconfdir)"'
OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \
startup.o prompt.o variables.o large_obj.o print.o describe.o \
@@ -50,6 +50,7 @@ distprep: $(srcdir)/sql_help.h $(srcdir)/psqlscan.c
install: all installdirs
$(INSTALL_PROGRAM) psql$(X) $(DESTDIR)$(bindir)/psql$(X)
+ $(INSTALL_DATA) $(srcdir)/psql.rc.sample $(DESTDIR)$(datadir)/psql.rc.sample
installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir)
diff --git a/src/bin/psql/psql.rc.sample b/src/bin/psql/psql.rc.sample
new file mode 100644
index 00000000000..ff23bfa5282
--- /dev/null
+++ b/src/bin/psql/psql.rc.sample
@@ -0,0 +1,7 @@
+--
+-- psql configuration file
+--
+-- This file is read before the .psqlrc file in the user's home directory.
+--
+-- Copy this to your sysconf directory (typically /usr/local/pgsql/etc) and
+-- rename it psql.rc.
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 3d321b79921..aeb7c13fbda 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.88 2004/04/19 17:42:58 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.89 2004/04/22 01:53:37 momjian Exp $
*/
#include "postgres_fe.h"
@@ -44,7 +44,8 @@ int optreset;
*/
PsqlSettings pset;
-#define PSQLRC ".psqlrc"
+#define PSQLRC ".psqlrc"
+#define SYSPSQLRC "psql.rc"
/*
* Structures to pass information between the option parsing routine
@@ -74,6 +75,7 @@ struct adhoc_opts
static void parse_psql_options(int argc, char *argv[],
struct adhoc_opts * options);
static void process_psqlrc(void);
+static void process_psqlrc_file(char *filename);
static void showVersion(void);
#ifdef USE_SSL
@@ -562,6 +564,9 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
}
+#ifndef SYSCONFDIR
+#error "You must compile this file with SYSCONFDIR defined."
+#endif
/*
@@ -570,32 +575,39 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
static void
process_psqlrc(void)
{
- char *psqlrc;
+ char *globalFile = SYSCONFDIR "/" SYSPSQLRC;
char *home;
+ char *psqlrc;
+
+ process_psqlrc_file(globalFile);
+
+ if ((home = getenv("HOME")) != NULL)
+ {
+ psqlrc = pg_malloc(strlen(home) + 1 + strlen(PSQLRC) + 1);
+ sprintf(psqlrc, "%s/%s", home, PSQLRC);
+ process_psqlrc_file(psqlrc);
+ }
+}
+
+
+
+static void
+process_psqlrc_file(char *filename)
+{
+ char *psqlrc;
#if defined(WIN32) && (!defined(__MINGW32__))
#define R_OK 4
#endif
- /* Look for one in the home dir */
- home = getenv("HOME");
-
- if (home)
- {
- psqlrc = pg_malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
- strlen(PG_VERSION) + 1);
- sprintf(psqlrc, "%s/%s-%s", home, PSQLRC, PG_VERSION);
+ psqlrc = pg_malloc(strlen(filename) + 1 + strlen(PG_VERSION) + 1);
+ sprintf(psqlrc, "%s-%s", filename, PG_VERSION);
- if (access(psqlrc, R_OK) == 0)
- process_file(psqlrc);
- else
- {
- sprintf(psqlrc, "%s/%s", home, PSQLRC);
- if (access(psqlrc, R_OK) == 0)
- process_file(psqlrc);
- }
- free(psqlrc);
- }
+ if (access(psqlrc, R_OK) == 0)
+ process_file(psqlrc);
+ else if (access(filename, R_OK) == 0)
+ process_file(filename);
+ free(psqlrc);
}