I have applied the attached patch which adds get_home_path() which uses
USERPROFILE on Win32 and HOME on Unix.

This should fix the reported problem.

---------------------------------------------------------------------------

Andrew Dunstan wrote:
> 
> 
> Joerg Hessdoerfer wrote:
> 
> >On Thursday 12 August 2004 06:25, Tom Lane wrote:
> >  
> >
> >>"efesar (the kay)" <[EMAIL PROTECTED]> writes:
> >>    
> >>
> >>>The 8.0 version does not acknowledge env vars like PGPASSWORD and seems
> >>>to ignore the contents of the .pgpass file.
> >>>      
> >>>
> >>Hmmm.   Those are probably the same problem, since finding .pgpass
> >>depends on expanding the $HOME env var.  But I have no idea why
> >>env vars aren't working for you ...
> >>    
> >>
> >Yep. AFAIK, $HOME doesn't always exist in WIN32, but $HOMEDRIVE and $HOMEPATH 
> >(or %HOMEPATH% and %HOMEDRIVE% ;-) do. Perhaps PG needs to do some munging to 
> >build the home path from those two?
> >
> >
> >  
> >
> 
> On my XP-Pro machine the appropriate setting appears to be %USERPROFILE% 
> - %HOMEPATH% is just "\"
> 
> See here for a complete list of available environment vars:
> 
> http://www.winnetmag.com/Article/ArticleID/23873/23873.html
> 
> cheers
> 
> andrew
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/bin/psql/common.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/common.c,v
retrieving revision 1.87
diff -c -c -r1.87 common.c
*** src/bin/psql/common.c       23 May 2004 22:20:10 -0000      1.87
--- src/bin/psql/common.c       18 Aug 2004 02:48:08 -0000
***************
*** 1078,1090 ****
        if (**filename == '~')
        {
                char       *fn;
-               char       *home;
                char            oldp,
                                   *p;
                struct passwd *pw;
  
                fn = *filename;
!               home = NULL;
  
                p = fn + 1;
                while (*p != '/' && *p != '\0')
--- 1078,1090 ----
        if (**filename == '~')
        {
                char       *fn;
                char            oldp,
                                   *p;
                struct passwd *pw;
+               char            home[MAXPGPATH];
  
                fn = *filename;
!               *home = '\0';
  
                p = fn + 1;
                while (*p != '/' && *p != '\0')
***************
*** 1094,1105 ****
                *p = '\0';
  
                if (*(fn + 1) == '\0')
!                       home = getenv("HOME");
                else if ((pw = getpwnam(fn + 1)) != NULL)
!                       home = pw->pw_dir;
  
                *p = oldp;
!               if (home)
                {
                        char       *newfn;
  
--- 1094,1105 ----
                *p = '\0';
  
                if (*(fn + 1) == '\0')
!                       get_home_path(home);
                else if ((pw = getpwnam(fn + 1)) != NULL)
!                       StrNCpy(home, pw->pw_dir, MAXPGPATH);
  
                *p = oldp;
!               if (strlen(home) != 0)
                {
                        char       *newfn;
  
Index: src/bin/psql/input.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/input.c,v
retrieving revision 1.34
diff -c -c -r1.34 input.c
*** src/bin/psql/input.c        25 Jan 2004 03:07:22 -0000      1.34
--- src/bin/psql/input.c        18 Aug 2004 02:48:08 -0000
***************
*** 171,177 ****
  #ifdef USE_READLINE
        if (flags & 1)
        {
!               const char *home;
  
                useReadline = true;
                initialize_readline();
--- 171,177 ----
  #ifdef USE_READLINE
        if (flags & 1)
        {
!               char home[MAXPGPATH];
  
                useReadline = true;
                initialize_readline();
***************
*** 180,187 ****
                if (GetVariable(pset.vars, "HISTSIZE") == NULL)
                        SetVariable(pset.vars, "HISTSIZE", "500");
                using_history();
!               home = getenv("HOME");
!               if (home)
                {
                        char *psql_history;
  
--- 180,186 ----
                if (GetVariable(pset.vars, "HISTSIZE") == NULL)
                        SetVariable(pset.vars, "HISTSIZE", "500");
                using_history();
!               if (get_home_path(home))
                {
                        char *psql_history;
  
***************
*** 231,240 ****
  #ifdef USE_READLINE
        if (useHistory)
        {
!               char       *home;
  
!               home = getenv("HOME");
!               if (home)
                {
                        char    *psql_history;
                        int              hist_size;
--- 230,238 ----
  #ifdef USE_READLINE
        if (useHistory)
        {
!               char       home[MAXPGPATH];
  
!               if (get_home_path(home))
                {
                        char    *psql_history;
                        int              hist_size;
Index: src/bin/psql/startup.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/startup.c,v
retrieving revision 1.95
diff -c -c -r1.95 startup.c
*** src/bin/psql/startup.c      3 Jun 2004 00:07:37 -0000       1.95
--- src/bin/psql/startup.c      18 Aug 2004 02:48:09 -0000
***************
*** 570,577 ****
  static void
  process_psqlrc(char *argv0)
  {
-       char       *home;
        char       *psqlrc;
        char       global_file[MAXPGPATH];
        char       my_exec_path[MAXPGPATH];
        char       etc_path[MAXPGPATH];
--- 570,577 ----
  static void
  process_psqlrc(char *argv0)
  {
        char       *psqlrc;
+       char       home[MAXPGPATH];
        char       global_file[MAXPGPATH];
        char       my_exec_path[MAXPGPATH];
        char       etc_path[MAXPGPATH];
***************
*** 582,588 ****
        snprintf(global_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
        process_psqlrc_file(global_file);
  
!       if ((home = getenv("HOME")) != NULL)
        {
                psqlrc = pg_malloc(strlen(home) + 1 + strlen(PSQLRC) + 1);
                sprintf(psqlrc, "%s/%s", home, PSQLRC);
--- 582,588 ----
        snprintf(global_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC);
        process_psqlrc_file(global_file);
  
!       if (get_home_path(home))
        {
                psqlrc = pg_malloc(strlen(home) + 1 + strlen(PSQLRC) + 1);
                sprintf(psqlrc, "%s/%s", home, PSQLRC);
Index: src/include/port.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port.h,v
retrieving revision 1.53
diff -c -c -r1.53 port.h
*** src/include/port.h  17 Aug 2004 14:38:38 -0000      1.53
--- src/include/port.h  18 Aug 2004 02:48:10 -0000
***************
*** 50,55 ****
--- 50,56 ----
  extern void get_pkglib_path(const char *my_exec_path, char *ret_path);
  extern void get_locale_path(const char *my_exec_path, char *ret_path);
  extern void set_pglocale_pgservice(const char *argv0, const char *app);
+ extern bool get_home_path(char *ret_path);
  
  /*
   *    is_absolute_path
***************
*** 74,82 ****
  #endif
  
  
- 
- 
- 
  /* Portable way to find binaries */
  extern int find_my_exec(const char *argv0, char *retpath);
  extern int find_other_exec(const char *argv0, const char *target,
--- 75,80 ----
***************
*** 104,109 ****
--- 102,113 ----
  #define SYSTEMQUOTE ""
  #endif
  
+ #ifdef WIN32
+ #define HOMEDIR       "USERPROFILE"
+ #else
+ #define HOMEDIR       "HOME"
+ #endif
+ 
  /* Portable delay handling */
  extern void pg_usleep(long microsec);
  
Index: src/interfaces/libpq/fe-connect.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.280
diff -c -c -r1.280 fe-connect.c
*** src/interfaces/libpq/fe-connect.c   17 Aug 2004 04:24:23 -0000      1.280
--- src/interfaces/libpq/fe-connect.c   18 Aug 2004 02:48:16 -0000
***************
*** 3093,3099 ****
  {
        FILE       *fp;
        char       *pgpassfile;
!       char       *home;
        struct stat stat_buf;
  
  #define LINELEN NAMEDATALEN*5
--- 3093,3099 ----
  {
        FILE       *fp;
        char       *pgpassfile;
!       char       home[MAXPGPATH];
        struct stat stat_buf;
  
  #define LINELEN NAMEDATALEN*5
***************
*** 3112,3119 ****
                port = DEF_PGPORT_STR;
  
        /* Look for it in the home dir */
!       home = getenv("HOME");
!       if (!home)
                return NULL;
  
        pgpassfile = malloc(strlen(home) + 1 + strlen(PGPASSFILE) + 1);
--- 3112,3118 ----
                port = DEF_PGPORT_STR;
  
        /* Look for it in the home dir */
!       if (!get_home_path(home))
                return NULL;
  
        pgpassfile = malloc(strlen(home) + 1 + strlen(PGPASSFILE) + 1);
Index: src/port/path.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/port/path.c,v
retrieving revision 1.30
diff -c -c -r1.30 path.c
*** src/port/path.c     13 Aug 2004 14:47:23 -0000      1.30
--- src/port/path.c     18 Aug 2004 02:48:20 -0000
***************
*** 371,376 ****
--- 371,397 ----
  
  
  /*
+  *    get_include_path
+  */
+ bool
+ get_home_path(char *ret_path)
+ {
+       if (getenv(HOMEDIR) == NULL)
+       {
+               *ret_path = '\0';
+               return false;
+       }
+       else
+       {
+               StrNCpy(ret_path, getenv(HOMEDIR), MAXPGPATH);
+               canonicalize_path(ret_path);
+               return true;
+       }
+ }
+ 
+ 
+ 
+ /*
   *    make_relative - adjust path to be relative to bin/
   */
  static void
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to