Path separator - Mailing list pgsql-hackers
From | Magnus Hagander |
---|---|
Subject | Path separator |
Date | |
Msg-id | 49C0BDC5.4010002@hagander.net Whole thread Raw |
Responses |
Re: Path separator
Re: Path separator |
List | pgsql-hackers |
I've seen a couple of reports that the new SSL error messages on windows look strange with paths the wrong way. For example: root certificate file "C:\Documents and Settings\<SNIP>\Application Data/postgresql/root.crt" does not exist. The issue being the mix of forward and backwards slashes. Attached patch should fix this. Is this worth doing? Comments? //Magnus diff --git a/src/include/port.h b/src/include/port.h index 0557dd2..951f5ac 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -100,6 +100,12 @@ extern BOOL AddUserToDacl(HANDLE hProcess); #define DEVTTY "/dev/tty" #endif +#if defined(WIN32) || defined(__CYGWIN__) +#define PATH_SEPARATOR "\\" +#else +#define PATH_SEPARATOR "/" +#endif + /* * Win32 needs double quotes at the beginning and end of system() * strings. If not, it gets confused with multiple quoted strings. diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 0833603..9f46c99 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -3964,7 +3964,7 @@ pqGetHomeDirectory(char *buf, int bufsize) ZeroMemory(tmppath, sizeof(tmppath)); if (SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, tmppath) != S_OK) return false; - snprintf(buf, bufsize, "%s/postgresql", tmppath); + snprintf(buf, bufsize, "%s\\postgresql", tmppath); return true; #endif } diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index 7c229c3..1b14f90 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -578,7 +578,7 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey) if (conn->sslcert) strncpy(fnbuf, conn->sslcert, sizeof(fnbuf)); else - snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, USER_CERT_FILE); + snprintf(fnbuf, sizeof(fnbuf), "%s" PATH_SEPARATOR "%s", homedir, USER_CERT_FILE); /* * OpenSSL <= 0.9.8 lacks error stack handling, which means it's likely to @@ -693,7 +693,7 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey) else { /* No PGSSLKEY specified, load default file */ - snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, USER_KEY_FILE); + snprintf(fnbuf, sizeof(fnbuf), "%s" PATH_SEPARATOR "%s", homedir, USER_KEY_FILE); } if (fnbuf[0] != '\0') @@ -998,7 +998,7 @@ initialize_SSL(PGconn *conn) if (conn->sslrootcert) strncpy(fnbuf, conn->sslrootcert, sizeof(fnbuf)); else - snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, ROOT_CERT_FILE); + snprintf(fnbuf, sizeof(fnbuf), "%s" PATH_SEPARATOR "%s", homedir, ROOT_CERT_FILE); if (stat(fnbuf, &buf) == 0) { @@ -1020,7 +1020,7 @@ initialize_SSL(PGconn *conn) if (conn->sslcrl) strncpy(fnbuf, conn->sslcrl, sizeof(fnbuf)); else - snprintf(fnbuf, sizeof(fnbuf), "%s/%s", homedir, ROOT_CRL_FILE); + snprintf(fnbuf, sizeof(fnbuf), "%s" PATH_SEPARATOR "%s", homedir, ROOT_CRL_FILE); /* setting the flags to check against the complete CRL chain */ if (X509_STORE_load_locations(cvstore, fnbuf, NULL) == 1)
pgsql-hackers by date: