diff options
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), | 
