diff options
author | Bruce Momjian <bruce@momjian.us> | 2011-10-14 20:26:28 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2011-10-14 20:27:14 -0400 |
commit | 2795592e52c88e510ae4bcbc17b305d6adc0b2b6 (patch) | |
tree | d0cef3a0098170a77ab184a0aad8ed69dc8220c9 /src | |
parent | d26e1ebaf5f8f59c27327e8fd810fa4b26431a1f (diff) | |
download | postgresql-2795592e52c88e510ae4bcbc17b305d6adc0b2b6.tar.gz postgresql-2795592e52c88e510ae4bcbc17b305d6adc0b2b6.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/startup.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 3c17eece7b8..71829eb6ec3 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -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); } |