1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Add global psql config file, psql.rc.sample.

This commit is contained in:
Bruce Momjian
2004-04-22 01:53:37 +00:00
parent 4906841901
commit be6bbcef56
4 changed files with 55 additions and 30 deletions

View File

@ -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)

View File

@ -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.

View File

@ -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");
psqlrc = pg_malloc(strlen(filename) + 1 + strlen(PG_VERSION) + 1);
sprintf(psqlrc, "%s-%s", filename, PG_VERSION);
if (home)
{
psqlrc = pg_malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
strlen(PG_VERSION) + 1);
sprintf(psqlrc, "%s/%s-%s", home, PSQLRC, 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);
}