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