@@ -594,20 +594,27 @@ process_psqlrc(char *argv0)
594594static void
595595process_psqlrc_file (char * filename )
596596{
597- char * psqlrc ;
597+ char * psqlrc_minor , * psqlrc_major ;
598598
599599#if defined(WIN32 ) && (!defined(__MINGW32__ ))
600600#define R_OK 4
601601#endif
602602
603- psqlrc = pg_malloc (strlen (filename ) + 1 + strlen (PG_VERSION ) + 1 );
604- sprintf (psqlrc , "%s-%s" , filename , PG_VERSION );
603+ psqlrc_minor = pg_malloc (strlen (filename ) + 1 + strlen (PG_VERSION ) + 1 );
604+ sprintf (psqlrc_minor , "%s-%s" , filename , PG_VERSION );
605+ psqlrc_major = pg_malloc (strlen (filename ) + 1 + strlen (PG_MAJORVERSION ) + 1 );
606+ sprintf (psqlrc_major , "%s-%s" , filename , PG_MAJORVERSION );
605607
606- if (access (psqlrc , R_OK ) == 0 )
607- (void ) process_file (psqlrc , false, false);
608+ /* check for minor version first, then major, then no version */
609+ if (access (psqlrc_minor , R_OK ) == 0 )
610+ (void ) process_file (psqlrc_minor , false, false);
611+ else if (access (psqlrc_major , R_OK ) == 0 )
612+ (void ) process_file (psqlrc_major , false, false);
608613 else if (access (filename , R_OK ) == 0 )
609614 (void ) process_file (filename , false, false);
610- free (psqlrc );
615+
616+ free (psqlrc_minor );
617+ free (psqlrc_major );
611618}
612619
613620
0 commit comments