]> granicus.if.org Git - postgresql/commitdiff
Add --psqlrc=FILENAME parameter to psql, to process an explicitly named
authorMagnus Hagander <magnus@hagander.net>
Sat, 6 Mar 2010 15:28:09 +0000 (15:28 +0000)
committerMagnus Hagander <magnus@hagander.net>
Sat, 6 Mar 2010 15:28:09 +0000 (15:28 +0000)
file instead of ~/.psqlrc on startup.

doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/help.c
src/bin/psql/startup.c

index 039ad0e301c5eb7080579c55fd00a9984b7717c1..93b6d4c6c22b87edb225ce34f41bd00a8bb6cc9d 100644 (file)
@@ -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
 -->
 
@@ -481,6 +481,16 @@ PostgreSQL documentation
       </listitem>
     </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>
       <term><option>-1</option></term>
       <term><option>--single-transaction</option></term>
index 6b835fbd26c5be0b4e9efaab56e86f2747c0ca25..8d6350fce2d5e394e39d23b500fe0bec7c4f4fd2 100644 (file)
@@ -3,7 +3,7 @@
  *
  * 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"
 
@@ -99,6 +99,7 @@ usage(void)
        printf(_("  -v, --set=, --variable=NAME=VALUE\n"
                         "                           set psql variable NAME to VALUE\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"
                         "                           execute command file as a single transaction\n"));
        printf(_("  --help                   show this help, then exit\n"));
index c34de5cd8cbe0d73e90d041fe1567699af9fa980..6fac694cfbb1a56f50be63a6d8c0242f4e8ef0aa 100644 (file)
@@ -3,7 +3,7 @@
  *
  * 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"
 
@@ -68,11 +68,12 @@ struct adhoc_opts
        bool            no_readline;
        bool            no_psqlrc;
        bool            single_txn;
+       char       *psqlrc;
 };
 
 static void parse_psql_options(int argc, char *argv[],
                                   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 showVersion(void);
 static void EstablishVariableSpace(void);
@@ -247,8 +248,7 @@ main(int argc, char *argv[])
         */
        if (options.action == ACT_FILE)
        {
-               if (!options.no_psqlrc)
-                       process_psqlrc(argv[0]);
+               process_psqlrc(argv[0], &options);
 
                successResult = process_file(options.action_string, options.single_txn);
        }
@@ -291,8 +291,7 @@ main(int argc, char *argv[])
         */
        else
        {
-               if (!options.no_psqlrc)
-                       process_psqlrc(argv[0]);
+               process_psqlrc(argv[0], &options);
 
                connection_warnings(true);
                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'},
                {"expanded", no_argument, NULL, 'x'},
                {"no-psqlrc", no_argument, NULL, 'X'},
+               {"psqlrc", required_argument, NULL, 1},
                {"help", no_argument, NULL, '?'},
                {NULL, 0, NULL, 0}
        };
@@ -515,6 +515,9 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
                        case 'X':
                                options->no_psqlrc = true;
                                break;
+                       case 1:
+                               options->psqlrc = pg_strdup(optarg);
+                               break;
                        case '1':
                                options->single_txn = true;
                                break;
@@ -563,20 +566,27 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
  * Load .psqlrc file, if found.
  */
 static void
-process_psqlrc(char *argv0)
+process_psqlrc(char *argv0, struct adhoc_opts *options)
 {
        char            home[MAXPGPATH];
        char            rc_file[MAXPGPATH];
        char            my_exec_path[MAXPGPATH];
        char            etc_path[MAXPGPATH];
 
+       if (options->no_psqlrc)
+               return;
+
        find_my_exec(argv0, my_exec_path);
        get_etc_path(my_exec_path, etc_path);
 
        snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
        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);
                process_psqlrc_file(rc_file);