From 9bb76d0b3f3e0049e2f5903544a5178f5886f4e0 Mon Sep 17 00:00:00 2001
From: Andrew Dunstan <andrew@dunslane.net>
Date: Sun, 8 Jan 2006 22:27:52 +0000
Subject: [PATCH] Rationalise perl header inclusions via a common include file,
 which also declares routines in plperl.c and spi_internal.c used in other
 files.

Along the way, also stop perl from hijacking stdio and other stuff on Windows.
---
 src/pl/plperl/SPI.xs         |  7 +-----
 src/pl/plperl/plperl.c       | 15 ++---------
 src/pl/plperl/plperl.h       | 49 ++++++++++++++++++++++++++++++++++++
 src/pl/plperl/spi_internal.c |  4 +--
 src/pl/plperl/spi_internal.h | 22 ----------------
 5 files changed, 54 insertions(+), 43 deletions(-)
 create mode 100644 src/pl/plperl/plperl.h
 delete mode 100644 src/pl/plperl/spi_internal.h

diff --git a/src/pl/plperl/SPI.xs b/src/pl/plperl/SPI.xs
index 8d14f093b72..9d3dc39c75b 100644
--- a/src/pl/plperl/SPI.xs
+++ b/src/pl/plperl/SPI.xs
@@ -4,12 +4,7 @@
 #undef _
 
 /* perl stuff */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-
-#include "spi_internal.h"
+#include "plperl.h"
 
 
 /*
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index d0a79888377..4375eb06744 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -33,7 +33,7 @@
  *	  ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.98 2005/12/29 14:28:31 adunstan Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.99 2006/01/08 22:27:52 adunstan Exp $
  *
  **********************************************************************/
 
@@ -60,18 +60,7 @@
 extern DLLIMPORT bool check_function_bodies;
 
 /* perl stuff */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-#include "spi_internal.h"
-
-/* just in case these symbols aren't provided */
-#ifndef pTHX_
-#define pTHX_
-#define pTHX void
-#endif
-
+#include "plperl.h"
 
 /**********************************************************************
  * The information we cache about loaded procedures
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
new file mode 100644
index 00000000000..c88186588c5
--- /dev/null
+++ b/src/pl/plperl/plperl.h
@@ -0,0 +1,49 @@
+/*-------------------------------------------------------------------------
+ *
+ * plperl.h
+ *    Common include file for PL/Perl files
+ *
+ * This should be included _AFTER_ postgres.h and system include files
+ *
+ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1995, Regents of the University of California
+ *
+ * $PostgreSQL: pgsql/src/pl/plperl/plperl.h,v 1.1 2006/01/08 22:27:52 adunstan Exp $
+ */
+
+#ifndef PL_PERL_H
+#define PL_PERL_H
+
+/* stop perl headers from hijacking stdio and other stuff on Windows */
+#ifdef WIN32
+#define WIN32IO_IS_STDIO
+#endif 
+
+/* required for perl API */
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include "ppport.h"
+
+/* just in case these symbols aren't provided */
+#ifndef pTHX_
+#define pTHX_
+#define pTHX void
+#endif
+
+/* routines from spi_internal.c */
+int			spi_DEBUG(void);
+int			spi_LOG(void);
+int			spi_INFO(void);
+int			spi_NOTICE(void);
+int			spi_WARNING(void);
+int			spi_ERROR(void);
+
+/* routines from plperl.c */
+HV		   *plperl_spi_exec(char *, int);
+void		plperl_return_next(SV *);
+SV		   *plperl_spi_query(char *);
+SV		   *plperl_spi_fetchrow(char *);
+
+
+#endif /* PL_PERL_H */
diff --git a/src/pl/plperl/spi_internal.c b/src/pl/plperl/spi_internal.c
index c022d7d9e57..7ca771da837 100644
--- a/src/pl/plperl/spi_internal.c
+++ b/src/pl/plperl/spi_internal.c
@@ -8,8 +8,8 @@
 /* Defined by Perl */
 #undef _
 
-#include "spi_internal.h"
-
+/* perl stuff */
+#include "plperl.h"
 
 int
 spi_DEBUG(void)
diff --git a/src/pl/plperl/spi_internal.h b/src/pl/plperl/spi_internal.h
deleted file mode 100644
index 4d2c407ee16..00000000000
--- a/src/pl/plperl/spi_internal.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "ppport.h"
-
-int			spi_DEBUG(void);
-
-int			spi_LOG(void);
-
-int			spi_INFO(void);
-
-int			spi_NOTICE(void);
-
-int			spi_WARNING(void);
-
-int			spi_ERROR(void);
-
-/* this is actually in plperl.c */
-HV		   *plperl_spi_exec(char *, int);
-void		plperl_return_next(SV *);
-SV		   *plperl_spi_query(char *);
-SV		   *plperl_spi_fetchrow(char *);
-- 
GitLab