From: Bruce Momjian Date: Sat, 2 Nov 2002 02:00:35 +0000 (+0000) Subject: Re-add Win32 missing files, I think. X-Git-Tag: REL9_0_0~16383 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=62636a3d4bc63f293744215939ca644ca3d53a95;p=pg-rex%2Fsyncrep.git Re-add Win32 missing files, I think. --- diff --git a/src/utils/Makefile b/src/utils/Makefile index e69de29bb2..adc04aaf24 100644 --- a/src/utils/Makefile +++ b/src/utils/Makefile @@ -0,0 +1,18 @@ +#------------------------------------------------------------------------- +# +# Makefile for utils +# +# $Header: /cvsroot/pgsql/src/utils/Attic/Makefile,v 1.19 2002/11/02 02:00:35 momjian Exp $ +# +# dllinit.o is only built on Win32 platform. +# +#------------------------------------------------------------------------- + +subdir = src/utils +top_builddir = ../.. +include $(top_builddir)/src/Makefile.global + +all: + +clean distclean maintainer-clean: + rm -f dllinit.o diff --git a/src/utils/dllinit.c b/src/utils/dllinit.c index e69de29bb2..e30a76a5f2 100644 --- a/src/utils/dllinit.c +++ b/src/utils/dllinit.c @@ -0,0 +1,108 @@ +#include +#if CYGWIN_VERSION_DLL_MAJOR < 1001 + +/* dllinit.c -- Portable DLL initialization. + Copyright (C) 1998 Free Software Foundation, Inc. + Contributed by Mumit Khan (khan@xraylith.wisc.edu). + + I've used DllMain as the DLL "main" since that's the most common + usage. MSVC and Mingw32 both default to DllMain as the standard + callback from the linker entry point. Cygwin32 b19+ uses essentially + the same, albeit slightly differently implemented, scheme. Please + see DECLARE_CYGWIN_DLL macro in for more + info on how Cygwin32 uses the callback function. + + The real entry point is typically always defined by the runtime + library, and usually never overridden by (casual) user. What you can + override however is the callback routine that the entry point calls, + and this file provides such a callback function, DllMain. + + Mingw32: The default entry point for mingw32 is DllMainCRTStartup + which is defined in libmingw32.a This in turn calls DllMain which is + defined here. If not defined, there is a stub in libmingw32.a which + does nothing. + + Cygwin32: The default entry point for cygwin32 b19 or newer is + __cygwin32_dll_entry which is defined in libcygwin.a. This in turn + calls the routine you supply to the DECLARE_CYGWIN_DLL (see below) + and, for this example, I've chose DllMain to be consistent with all + the other platforms. + + MSVC: MSVC runtime calls DllMain, just like Mingw32. + + Summary: If you need to do anything special in DllMain, just add it + here. Otherwise, the default setup should be just fine for 99%+ of + the time. I strongly suggest that you *not* change the entry point, + but rather change DllMain as appropriate. + + */ + + +#define WIN32_LEAN_AND_MEAN +#include +#undef WIN32_LEAN_AND_MEAN +#include + +BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, + LPVOID reserved /* Not used. */ ); + +#ifdef __CYGWIN__ + +#include +DECLARE_CYGWIN_DLL(DllMain); +/* save hInstance from DllMain */ +HINSTANCE __hDllInstance_base; +#endif /* __CYGWIN__ */ + +struct _reent *_impure_ptr; + +extern struct _reent *__imp_reent_data; + +/* + *---------------------------------------------------------------------- + * + * DllMain + * + * This routine is called by the Mingw32, Cygwin32 or VC++ C run + * time library init code, or the Borland DllEntryPoint routine. It + * is responsible for initializing various dynamically loaded + * libraries. + * + * Results: + * TRUE on sucess, FALSE on failure. + * + * Side effects: + * + *---------------------------------------------------------------------- + */ +BOOL APIENTRY +DllMain( + HINSTANCE hInst /* Library instance handle. */ , + DWORD reason /* Reason this function is being called. */ , + LPVOID reserved /* Not used. */ ) +{ + +#ifdef __CYGWIN__ + __hDllInstance_base = hInst; +#endif /* __CYGWIN__ */ + + _impure_ptr = __imp_reent_data; + + switch (reason) + { + case DLL_PROCESS_ATTACH: + break; + + case DLL_PROCESS_DETACH: + break; + + case DLL_THREAD_ATTACH: + break; + + case DLL_THREAD_DETACH: + break; + } + return TRUE; +} + +#endif /* CYGWIN_VERSION_DLL_MAJOR < 1001 */