From 889f03812916b146ae504c0fad5afdc7bf2e8a2a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 26 Jan 2005 19:24:03 +0000 Subject: [PATCH] Use SHGetFolderPath instead of SHGetSpecialFolderPath to find the APPDATA directory on Windows. Magnus Hagander --- src/Makefile.global.in | 7 ++++--- src/bin/psql/win32.mak | 2 +- src/interfaces/ecpg/ecpglib/Makefile | 7 ++++++- src/interfaces/libpq/Makefile | 4 ++-- src/interfaces/libpq/fe-connect.c | 6 +++--- src/interfaces/libpq/win32.mak | 2 +- src/port/path.c | 6 +++--- 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 1dd5aa03a7..e2814752e7 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.208 2004/12/19 02:16:18 momjian Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.209 2005/01/26 19:23:59 tgl Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -384,9 +384,10 @@ override LDFLAGS := -L$(top_builddir)/src/port $(LDFLAGS) endif endif -# to make ws2_32.lib the last library +# to make ws2_32.lib the last library, and always link with shfolder, +# so SHGetFolderName isn't picked up from shell32.dll ifeq ($(PORTNAME),win32) -LIBS += -lws2_32 +LIBS += -lws2_32 -lshfolder endif # Not really standard libc functions, used by the backend. diff --git a/src/bin/psql/win32.mak b/src/bin/psql/win32.mak index 64dd1ff312..74df49a05c 100644 --- a/src/bin/psql/win32.mak +++ b/src/bin/psql/win32.mak @@ -79,7 +79,7 @@ CPP_SBRS=. LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + advapi32.lib shfolder.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\ /pdb:"$(OUTDIR)\psql.pdb" /machine:I386 $(LOPT) /out:"$(OUTDIR)\psql.exe" LINK32_OBJS= \ diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile index 9badaed6ce..c28503c135 100644 --- a/src/interfaces/ecpg/ecpglib/Makefile +++ b/src/interfaces/ecpg/ecpglib/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.30 2005/01/18 05:00:17 momjian Exp $ +# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.31 2005/01/26 19:24:01 tgl Exp $ # #------------------------------------------------------------------------- @@ -30,6 +30,11 @@ OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \ SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) \ $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS) +ifeq ($(PORTNAME), win32) +# Link to shfolder.dll instead of shell32.dll +SHLIB_LINK += -lshfolder +endif + all: all-lib # Shared library stuff diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile index da014ca07a..1867fbd9cb 100644 --- a/src/interfaces/libpq/Makefile +++ b/src/interfaces/libpq/Makefile @@ -5,7 +5,7 @@ # Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.127 2005/01/18 05:00:30 momjian Exp $ +# $PostgreSQL: pgsql/src/interfaces/libpq/Makefile,v 1.128 2005/01/26 19:24:02 tgl Exp $ # #------------------------------------------------------------------------- @@ -55,7 +55,7 @@ endif # matter.) SHLIB_LINK += $(filter -lcrypt -ldes -lkrb -lcom_err -lcrypto -lk5crypto -lkrb5 -lssl -lsocket -lnsl -lresolv -lintl, $(LIBS)) $(PTHREAD_LIBS) ifeq ($(PORTNAME), win32) -SHLIB_LINK += -lwsock32 -lws2_32 -lshell32 $(filter -leay32 -lssleay32, $(LIBS)) +SHLIB_LINK += -lshfolder -lwsock32 -lws2_32 $(filter -leay32 -lssleay32, $(LIBS)) endif diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 52f0fe32ac..8a6731c2c3 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.301 2005/01/14 00:25:56 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.302 2005/01/26 19:24:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -38,7 +38,7 @@ #ifdef _WIN32_IE #undef _WIN32_IE #endif -#define _WIN32_IE 0x0400 +#define _WIN32_IE 0x0500 #ifdef near #undef near #endif @@ -3296,7 +3296,7 @@ pqGetHomeDirectory(char *buf, int bufsize) char tmppath[MAX_PATH]; ZeroMemory(tmppath, sizeof(tmppath)); - if (!SHGetSpecialFolderPath(NULL, tmppath, CSIDL_APPDATA, FALSE)) + if (SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, tmppath) != S_OK) return false; snprintf(buf, bufsize, "%s/postgresql", tmppath); return true; diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak index 25a30f3487..0377f43b54 100644 --- a/src/interfaces/libpq/win32.mak +++ b/src/interfaces/libpq/win32.mak @@ -138,7 +138,7 @@ LIB32_OBJS= \ RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res" LINK32=link.exe -LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib $(SSL_LIBS) \ +LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shfolder.lib wsock32.lib $(SSL_LIBS) \ /nologo /subsystem:windows /dll $(LOPT) /incremental:no\ /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\$(OUTFILENAME).dll"\ /implib:"$(OUTDIR)\$(OUTFILENAME)dll.lib" /def:$(OUTFILENAME)dll.def diff --git a/src/port/path.c b/src/port/path.c index 2abe6e45e7..4736973ed1 100644 --- a/src/port/path.c +++ b/src/port/path.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/path.c,v 1.50 2005/01/10 00:19:51 tgl Exp $ + * $PostgreSQL: pgsql/src/port/path.c,v 1.51 2005/01/26 19:24:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -21,7 +21,7 @@ #ifdef _WIN32_IE #undef _WIN32_IE #endif -#define _WIN32_IE 0x0400 +#define _WIN32_IE 0x0500 #ifdef near #undef near #endif @@ -476,7 +476,7 @@ get_home_path(char *ret_path) char tmppath[MAX_PATH]; ZeroMemory(tmppath, sizeof(tmppath)); - if (!SHGetSpecialFolderPath(NULL, tmppath, CSIDL_APPDATA, FALSE)) + if (SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, tmppath) != S_OK) return false; snprintf(ret_path, MAXPGPATH, "%s/postgresql", tmppath); return true;