diff options
author | Bruce Momjian <bruce@momjian.us> | 2004-03-09 05:06:45 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2004-03-09 05:06:45 +0000 |
commit | eeec31774ab4e1a0fc1211daa58557ec1d693f2d (patch) | |
tree | e89d782bb81adc5cf31e7f8b7480c5dd3e1e3318 /src | |
parent | 943eae92fb7d8c8078a73063429c8c06599b3556 (diff) | |
download | postgresql-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.c | 24 |
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), |