Commit a4c71af2 authored by Bruce Momjian's avatar Bruce Momjian

Put back canonicalization of PGDATA environment variable.

parent 76e7e2e7
......@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.410 2004/07/12 18:17:13 momjian Exp $
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.411 2004/07/12 19:14:56 momjian Exp $
*
* NOTES
*
......@@ -526,7 +526,10 @@ PostmasterMain(int argc, char *argv[])
}
if (userPGDATA)
canonicalize_path(userPGDATA = strdup(userPGDATA));
{
userPGDATA = strdup(userPGDATA);
canonicalize_path(userPGDATA);
}
if (onlyConfigSpecified(userPGDATA))
{
......
......@@ -4,7 +4,7 @@
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.19 2004/07/12 18:17:13 momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.20 2004/07/12 19:15:07 momjian Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -1308,7 +1308,10 @@ main(int argc, char **argv)
/* Note we put any -D switch into the env var above */
pg_data = getenv("PGDATA");
if (pg_data)
canonicalize_path(pg_data = xstrdup(pg_data));
{
/* XXX modifies environment var in-place ... ugly ... */
canonicalize_path(pg_data);
}
if (pg_data == NULL &&
ctl_command != KILL_COMMAND && ctl_command != UNREGISTER_COMMAND)
......
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.23 2004/07/11 21:34:04 momjian Exp $
* $PostgreSQL: pgsql/src/port/path.c,v 1.24 2004/07/12 19:15:14 momjian Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -88,18 +88,17 @@ last_dir_separator(const char *filename)
/*
* make all paths look like unix, with forward slashes
* also strip any trailing slash.
*
* The Windows command processor will accept suitably quoted paths
* with forward slashes, but barfs badly with mixed forward and back
* slashes. Removing the trailing slash on a path means we never get
* ugly double slashes. Don't remove a leading slash, though.
* Make all paths look like Unix
*/
void
canonicalize_path(char *path)
{
#ifdef WIN32
/*
* The Windows command processor will accept suitably quoted paths
* with forward slashes, but barfs badly with mixed forward and back
* slashes.
*/
char *p;
for (p = path; *p; p++)
......@@ -107,8 +106,19 @@ canonicalize_path(char *path)
if (*p == '\\')
*p = '/';
}
/* In Win32, if you do:
* prog.exe "a b" "\c\d\"
* the system will pass \c\d" as argv[2].
*/
if (p > path && *(p-1) == '"')
*(p-1) = '/';
#endif
/*
* Removing the trailing slash on a path means we never get
* ugly double slashes. Don't remove a leading slash, though.
* Also, Win32 can't stat() a directory with a trailing slash.
*/
trim_trailing_separator(path);
}
......
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