*
*
* 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
*
}
if (userPGDATA)
- canonicalize_path(userPGDATA = strdup(userPGDATA));
+ {
+ userPGDATA = strdup(userPGDATA);
+ canonicalize_path(userPGDATA);
+ }
if (onlyConfigSpecified(userPGDATA))
{
*
* 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 $
*
*-------------------------------------------------------------------------
*/
/* 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)
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
/*
- * 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++)
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);
}