From 62636a3d4bc63f293744215939ca644ca3d53a95 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 2 Nov 2002 02:00:35 +0000
Subject: [PATCH] Re-add Win32 missing files, I think.

---
 src/utils/Makefile  |  18 ++++++++
 src/utils/dllinit.c | 108 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 126 insertions(+)

diff --git a/src/utils/Makefile b/src/utils/Makefile
index e69de29bb2d..adc04aaf241 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 e69de29bb2d..e30a76a5f25 100644
--- a/src/utils/dllinit.c
+++ b/src/utils/dllinit.c
@@ -0,0 +1,108 @@
+#include <cygwin/version.h>
+#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 <cygwin32/cygwin_dll.h> 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 <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <stdio.h>
+
+BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason,
+		LPVOID reserved /* Not used. */ );
+
+#ifdef __CYGWIN__
+
+#include <cygwin/cygwin_dll.h>
+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 */
-- 
GitLab