The win32 port backend will require the functionality provided by

canonicalize_path. Patch moves it from initdb.c to port/path.c.

Claudio Natoli
This commit is contained in:
Bruce Momjian 2004-03-09 04:49:02 +00:00
parent 96ef6682e3
commit f0f4e82f45
3 changed files with 30 additions and 29 deletions

View File

@ -43,7 +43,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
* Portions taken from FreeBSD.
*
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.22 2004/02/02 00:11:31 momjian Exp $
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.23 2004/03/09 04:49:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -151,7 +151,6 @@ char *pgpath;
/* forward declare all our functions */
static bool rmtree(char *, bool);
static void exit_nicely(void);
static void canonicalize_path(char *);
#ifdef WIN32
static char *expanded_path(char *);
#else
@ -288,31 +287,6 @@ rmtree(char *path, bool rmtopdir)
}
/*
* 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.
*/
static void
canonicalize_path(char *path)
{
char *p;
for (p = path; *p; p++)
{
#ifdef WIN32
if (*p == '\\')
*p = '/';
#endif
}
if (p > path+1 && *--p == '/')
*p = '\0';
}
/*
* make a copy of the array of lines, with token replaced by replacement
* the first time it occurs on each line.

View File

@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/port.h,v 1.20 2004/02/25 19:41:23 momjian Exp $
* $PostgreSQL: pgsql/src/include/port.h,v 1.21 2004/03/09 04:49:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -21,6 +21,7 @@
extern bool is_absolute_path(const char *filename);
extern char *first_path_separator(const char *filename);
extern char *last_path_separator(const char *filename);
extern void canonicalize_path(char *path);
extern char *get_progname(char *argv0);
/* Portable delay handling */

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.4 2003/11/29 19:52:13 pgsql Exp $
* $PostgreSQL: pgsql/src/port/path.c,v 1.5 2004/03/09 04:49:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -84,6 +84,32 @@ last_path_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.
*/
void
canonicalize_path(char *path)
{
char *p;
for (p = path; *p; p++)
{
#ifdef WIN32
if (*p == '\\')
*p = '/';
#endif
}
if (p > path+1 && *--p == '/')
*p = '\0';
}
/*
* Extracts the actual name of the program as called.
*/