Commit 2795592e authored by Bruce Momjian's avatar Bruce Momjian

Allow a major PG version psql .psqlrc file to be used if a minor

matching version file does not exist.  This avoids needing to rename
.psqlrc files after minor version upgrades.
parent d26e1eba
......@@ -3332,8 +3332,10 @@ PSQL_EDITOR_LINENUMBER_ARG='--line '
Both the system-wide <filename>psqlrc</filename> file and the user's
<filename>~/.psqlrc</filename> file can be made version-specific
by appending a dash and the <productname>PostgreSQL</productname>
release number, for example <filename>~/.psqlrc-&version;</filename>.
A matching version-specific file will be read in preference to a
major or minor release number, for example
<filename>~/.psqlrc-9.2</filename> or
<filename>~/.psqlrc-9.2.5</filename>. The most specific
version-matching file will be read in preference to a
non-version-specific file.
</para>
</listitem>
......
......@@ -594,20 +594,27 @@ process_psqlrc(char *argv0)
static void
process_psqlrc_file(char *filename)
{
char *psqlrc;
char *psqlrc_minor, *psqlrc_major;
#if defined(WIN32) && (!defined(__MINGW32__))
#define R_OK 4
#endif
psqlrc = pg_malloc(strlen(filename) + 1 + strlen(PG_VERSION) + 1);
sprintf(psqlrc, "%s-%s", filename, PG_VERSION);
psqlrc_minor = pg_malloc(strlen(filename) + 1 + strlen(PG_VERSION) + 1);
sprintf(psqlrc_minor, "%s-%s", filename, PG_VERSION);
psqlrc_major = pg_malloc(strlen(filename) + 1 + strlen(PG_MAJORVERSION) + 1);
sprintf(psqlrc_major, "%s-%s", filename, PG_MAJORVERSION);
if (access(psqlrc, R_OK) == 0)
(void) process_file(psqlrc, false, false);
/* check for minor version first, then major, then no version */
if (access(psqlrc_minor, R_OK) == 0)
(void) process_file(psqlrc_minor, false, false);
else if (access(psqlrc_major, R_OK) == 0)
(void) process_file(psqlrc_major, false, false);
else if (access(filename, R_OK) == 0)
(void) process_file(filename, false, false);
free(psqlrc);
free(psqlrc_minor);
free(psqlrc_major);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment