aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2004-03-09 05:06:45 +0000
committerBruce Momjian <bruce@momjian.us>2004-03-09 05:06:45 +0000
commiteeec31774ab4e1a0fc1211daa58557ec1d693f2d (patch)
treee89d782bb81adc5cf31e7f8b7480c5dd3e1e3318 /src
parent943eae92fb7d8c8078a73063429c8c06599b3556 (diff)
downloadpostgresql-eeec31774ab4e1a0fc1211daa58557ec1d693f2d.tar.gz
postgresql-eeec31774ab4e1a0fc1211daa58557ec1d693f2d.zip
Determines the PKGLIBDIR equivalent under win32. Requires pgsql lib and
bin directories to be packaged under the same root directory (eg. <some path>/pgsql/bin and <some path>/pgsql/lib) for the win32 port, which does not appear to be an onerous restriction. Claudio Natoli
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/fmgr/dfmgr.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c
index 676eb96647a..60d982b9458 100644
--- a/src/backend/utils/fmgr/dfmgr.c
+++ b/src/backend/utils/fmgr/dfmgr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.70 2004/02/17 03:35:57 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.71 2004/03/09 05:06:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -343,6 +343,9 @@ substitute_libpath_macro(const char *name)
{
size_t macroname_len;
char *replacement = NULL;
+#ifdef WIN32
+ char basename[MAXPGPATH];
+#endif
AssertArg(name != NULL);
@@ -356,7 +359,26 @@ substitute_libpath_macro(const char *name)
#endif
if (strncmp(name, "$libdir", macroname_len) == 0)
+#ifndef WIN32
replacement = PKGLIBDIR;
+#else
+ {
+ char *p;
+ if (GetModuleFileName(NULL,basename,MAXPGPATH) == 0)
+ ereport(FATAL,
+ (errmsg("GetModuleFileName failed (%i)",(int)GetLastError())));
+
+ canonicalize_path(basename);
+ if ((p = last_path_separator(basename)) == NULL)
+ ereport(FATAL,
+ (errmsg("unexpected failure in determining PKGLIBDIR (%s)",basename)));
+ else
+ *p = '\0';
+
+ strcat(basename,"/../lib");
+ replacement = basename;
+ }
+#endif
else
ereport(ERROR,
(errcode(ERRCODE_INVALID_NAME),