Add --psqlrc=FILENAME parameter to psql, to process an explicitly named
file instead of ~/.psqlrc on startup.
This commit is contained in:
parent
b8b34b7b44
commit
66c2cc2ba9
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.239 2010/02/19 14:36:45 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.240 2010/03/06 15:28:09 mha Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -481,6 +481,16 @@ PostgreSQL documentation
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--psqlrc=<replaceable class="parameter">FILENAME</></></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Read the start-up file from <replaceable class="parameter">FILENAME</>
|
||||||
|
instead of <filename>~/.psqlrc</>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>-1</option></term>
|
<term><option>-1</option></term>
|
||||||
<term><option>--single-transaction</option></term>
|
<term><option>--single-transaction</option></term>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2010, PostgreSQL Global Development Group
|
* Copyright (c) 2000-2010, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.155 2010/01/02 16:57:59 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.156 2010/03/06 15:28:09 mha Exp $
|
||||||
*/
|
*/
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
|
|
||||||
@ -99,6 +99,7 @@ usage(void)
|
|||||||
printf(_(" -v, --set=, --variable=NAME=VALUE\n"
|
printf(_(" -v, --set=, --variable=NAME=VALUE\n"
|
||||||
" set psql variable NAME to VALUE\n"));
|
" set psql variable NAME to VALUE\n"));
|
||||||
printf(_(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"));
|
printf(_(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"));
|
||||||
|
printf(_(" --psqlrc=FILENAME read startup commands from file (instead of ~/.psqlrc)\n"));
|
||||||
printf(_(" -1 (\"one\"), --single-transaction\n"
|
printf(_(" -1 (\"one\"), --single-transaction\n"
|
||||||
" execute command file as a single transaction\n"));
|
" execute command file as a single transaction\n"));
|
||||||
printf(_(" --help show this help, then exit\n"));
|
printf(_(" --help show this help, then exit\n"));
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2010, PostgreSQL Global Development Group
|
* Copyright (c) 2000-2010, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.162 2010/02/26 02:01:19 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.163 2010/03/06 15:28:09 mha Exp $
|
||||||
*/
|
*/
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
|
|
||||||
@ -68,11 +68,12 @@ struct adhoc_opts
|
|||||||
bool no_readline;
|
bool no_readline;
|
||||||
bool no_psqlrc;
|
bool no_psqlrc;
|
||||||
bool single_txn;
|
bool single_txn;
|
||||||
|
char *psqlrc;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void parse_psql_options(int argc, char *argv[],
|
static void parse_psql_options(int argc, char *argv[],
|
||||||
struct adhoc_opts * options);
|
struct adhoc_opts * options);
|
||||||
static void process_psqlrc(char *argv0);
|
static void process_psqlrc(char *argv0, struct adhoc_opts *options);
|
||||||
static void process_psqlrc_file(char *filename);
|
static void process_psqlrc_file(char *filename);
|
||||||
static void showVersion(void);
|
static void showVersion(void);
|
||||||
static void EstablishVariableSpace(void);
|
static void EstablishVariableSpace(void);
|
||||||
@ -247,8 +248,7 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
if (options.action == ACT_FILE)
|
if (options.action == ACT_FILE)
|
||||||
{
|
{
|
||||||
if (!options.no_psqlrc)
|
process_psqlrc(argv[0], &options);
|
||||||
process_psqlrc(argv[0]);
|
|
||||||
|
|
||||||
successResult = process_file(options.action_string, options.single_txn);
|
successResult = process_file(options.action_string, options.single_txn);
|
||||||
}
|
}
|
||||||
@ -291,8 +291,7 @@ main(int argc, char *argv[])
|
|||||||
*/
|
*/
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!options.no_psqlrc)
|
process_psqlrc(argv[0], &options);
|
||||||
process_psqlrc(argv[0]);
|
|
||||||
|
|
||||||
connection_warnings(true);
|
connection_warnings(true);
|
||||||
if (!pset.quiet && !pset.notty)
|
if (!pset.quiet && !pset.notty)
|
||||||
@ -355,6 +354,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
|
|||||||
{"password", no_argument, NULL, 'W'},
|
{"password", no_argument, NULL, 'W'},
|
||||||
{"expanded", no_argument, NULL, 'x'},
|
{"expanded", no_argument, NULL, 'x'},
|
||||||
{"no-psqlrc", no_argument, NULL, 'X'},
|
{"no-psqlrc", no_argument, NULL, 'X'},
|
||||||
|
{"psqlrc", required_argument, NULL, 1},
|
||||||
{"help", no_argument, NULL, '?'},
|
{"help", no_argument, NULL, '?'},
|
||||||
{NULL, 0, NULL, 0}
|
{NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
@ -515,6 +515,9 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
|
|||||||
case 'X':
|
case 'X':
|
||||||
options->no_psqlrc = true;
|
options->no_psqlrc = true;
|
||||||
break;
|
break;
|
||||||
|
case 1:
|
||||||
|
options->psqlrc = pg_strdup(optarg);
|
||||||
|
break;
|
||||||
case '1':
|
case '1':
|
||||||
options->single_txn = true;
|
options->single_txn = true;
|
||||||
break;
|
break;
|
||||||
@ -563,20 +566,27 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
|
|||||||
* Load .psqlrc file, if found.
|
* Load .psqlrc file, if found.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
process_psqlrc(char *argv0)
|
process_psqlrc(char *argv0, struct adhoc_opts *options)
|
||||||
{
|
{
|
||||||
char home[MAXPGPATH];
|
char home[MAXPGPATH];
|
||||||
char rc_file[MAXPGPATH];
|
char rc_file[MAXPGPATH];
|
||||||
char my_exec_path[MAXPGPATH];
|
char my_exec_path[MAXPGPATH];
|
||||||
char etc_path[MAXPGPATH];
|
char etc_path[MAXPGPATH];
|
||||||
|
|
||||||
|
if (options->no_psqlrc)
|
||||||
|
return;
|
||||||
|
|
||||||
find_my_exec(argv0, my_exec_path);
|
find_my_exec(argv0, my_exec_path);
|
||||||
get_etc_path(my_exec_path, etc_path);
|
get_etc_path(my_exec_path, etc_path);
|
||||||
|
|
||||||
snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
|
snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
|
||||||
process_psqlrc_file(rc_file);
|
process_psqlrc_file(rc_file);
|
||||||
|
|
||||||
if (get_home_path(home))
|
if (options->psqlrc)
|
||||||
|
{
|
||||||
|
process_psqlrc_file(options->psqlrc);
|
||||||
|
}
|
||||||
|
else if (get_home_path(home))
|
||||||
{
|
{
|
||||||
snprintf(rc_file, MAXPGPATH, "%s/%s", home, PSQLRC);
|
snprintf(rc_file, MAXPGPATH, "%s/%s", home, PSQLRC);
|
||||||
process_psqlrc_file(rc_file);
|
process_psqlrc_file(rc_file);
|
||||||
|
Loading…
Reference in New Issue
Block a user