From 1bd5e054ed24fc755c0b28a46474ad00c6c36742 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Fri, 3 Oct 2003 10:07:28 +0000
Subject: [PATCH] Hide Informix datatypes. They are not seen by our built
 process anymore.

---
 src/interfaces/ecpg/ChangeLog               |  4 +
 src/interfaces/ecpg/compatlib/informix.c    |  5 +-
 src/interfaces/ecpg/include/Makefile        |  2 +-
 src/interfaces/ecpg/include/compatlib.h     | 82 +++++++++++++++++++++
 src/interfaces/ecpg/include/datetime.h      | 11 +--
 src/interfaces/ecpg/include/decimal.h       | 17 +----
 src/interfaces/ecpg/include/ecpg_informix.h | 44 +----------
 src/interfaces/ecpg/pgtypeslib/interval.c   |  1 -
 8 files changed, 93 insertions(+), 73 deletions(-)
 create mode 100644 src/interfaces/ecpg/include/compatlib.h

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 15b7af94c6d..e69457d673e 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1661,6 +1661,10 @@ Fri Sep 26 17:14:07 CEST 2003
 
 	- Incorrect datatype with precision argument should not create a
 	  segfault.
+	  
+Fri Oct  3 12:04:57 CEST 2003
+
+	- Hide Informix datatypes in PostgreSQL built process.
 	- Set ecpg version to 3.0.0
 	- Set ecpg library to 4.0.0
 	- Set pgtypes library to 1.0.0
diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c
index e3559a7a4a8..63f43a7ec9b 100644
--- a/src/interfaces/ecpg/compatlib/informix.c
+++ b/src/interfaces/ecpg/compatlib/informix.c
@@ -5,9 +5,10 @@
 #include <ctype.h>
 
 #include <ecpgtype.h>
-#include <ecpg_informix.h>
+#include <compatlib.h>
 #include <pgtypes_error.h>
 #include <pgtypes_date.h>
+#include <pgtypes_numeric.h>
 #include <sqltypes.h>
 
 char	   *ECPGalloc(long, int);
@@ -886,7 +887,7 @@ rtypwidth(int sqltype, int sqllen)
 }
 
 int
-dtcvfmtasc(char *inbuf, char *fmtstr, dtime_t * dtvalue)
+dtcvfmtasc(char *inbuf, char *fmtstr, timestamp * dtvalue)
 {
 	return PGTYPEStimestamp_defmt_asc(inbuf, fmtstr, dtvalue);
 }
diff --git a/src/interfaces/ecpg/include/Makefile b/src/interfaces/ecpg/include/Makefile
index 7320a76c2ea..e7462126bb6 100644
--- a/src/interfaces/ecpg/include/Makefile
+++ b/src/interfaces/ecpg/include/Makefile
@@ -5,7 +5,7 @@ include $(top_builddir)/src/Makefile.global
 install: all installdirs install-headers
 
 .PHONY: install-headers
-ecpg_headers = ecpgerrno.h ecpglib.h ecpgtype.h sqlca.h sql3types.h ecpg_informix.h pgtypes_error.h pgtypes_numeric.h pgtypes_timestamp.h pgtypes_date.h datetime.h decimal.h pgtypes_interval.h sqltypes.h
+ecpg_headers = ecpgerrno.h ecpglib.h ecpgtype.h sqlca.h sql3types.h ecpg_informix.h pgtypes_error.h pgtypes_numeric.h pgtypes_timestamp.h pgtypes_date.h datetime.h decimal.h pgtypes_interval.h sqltypes.h compatlib.h
 
 install-headers: $(ecpg_headers)
 	for i in $^; do $(INSTALL_DATA) $$i $(DESTDIR)$(includedir); done
diff --git a/src/interfaces/ecpg/include/compatlib.h b/src/interfaces/ecpg/include/compatlib.h
new file mode 100644
index 00000000000..2cb85fdf1ab
--- /dev/null
+++ b/src/interfaces/ecpg/include/compatlib.h
@@ -0,0 +1,82 @@
+#ifndef _COMPATLIB_H
+#define _COMPATLIB_H
+/*
+ * This file contains stuff needed to be as compatible to other DBMS as possible.
+ */
+
+#include <ecpglib.h>
+#include <pgtypes_date.h>
+#include <pgtypes_interval.h>
+#include <pgtypes_numeric.h>
+#include <pgtypes_timestamp.h>
+
+/* The following stuff is for Informix compatibility */
+
+#define SQLNOTFOUND 100
+
+#define ECPG_INFORMIX_NUM_OVERFLOW	-1200
+#define ECPG_INFORMIX_NUM_UNDERFLOW	-1201
+#define ECPG_INFORMIX_DIVIDE_ZERO	-1202
+#define ECPG_INFORMIX_BAD_YEAR		-1204
+#define ECPG_INFORMIX_BAD_MONTH		-1205
+#define ECPG_INFORMIX_BAD_DAY		-1206
+#define ECPG_INFORMIX_ENOSHORTDATE	-1209
+#define ECPG_INFORMIX_DATE_CONVERT	-1210
+#define ECPG_INFORMIX_OUT_OF_MEMORY	-1211
+#define ECPG_INFORMIX_ENOTDMY		-1212
+#define ECPG_INFORMIX_BAD_NUMERIC	-1213
+#define ECPG_INFORMIX_BAD_EXPONENT	-1216
+#define ECPG_INFORMIX_BAD_DATE		-1218
+#define ECPG_INFORMIX_EXTRA_CHARS	-1264
+
+extern int	rdatestr(date, char *);
+extern void 	rtoday(date *);
+extern int	rjulmdy(date, short *);
+extern int	rdefmtdate(date *, char *, char *);
+extern int	rfmtdate(date, char *, char *);
+extern int	rmdyjul(short *, date *);
+extern int	rstrdate(char *, date *);
+extern int	rdayofweek(date);
+
+extern int	rfmtlong(long, char *, char *);
+extern int	rgetmsg(int, char *, int);
+extern int	risnull(int, char *);
+extern int	rsetnull(int, char *);
+extern int	rtypalign(int, int);
+extern int	rtypmsize(int, int);
+extern int	rtypwidth(int, int);
+extern void 	rupshift(char *);
+
+extern int	byleng(char *, int);
+extern void ldchar(char *, int, char *);
+
+extern void ECPG_informix_set_var(int, void *, int);
+extern void *ECPG_informix_get_var(int);
+
+/* Informix defines these in decimal.h */
+int	decadd(decimal *, decimal *, decimal *);
+int	deccmp(decimal *, decimal *);
+void	deccopy(decimal *, decimal *);
+int	deccvasc(char *, int, decimal *);
+int	deccvdbl(double, decimal *);
+int	deccvint(int, decimal *);
+int	deccvlong(long, decimal *);
+int	decdiv(decimal *, decimal *, decimal *);
+int	decmul(decimal *, decimal *, decimal *);
+int	decsub(decimal *, decimal *, decimal *);
+int	dectoasc(decimal *, char *, int, int);
+int	dectodbl(decimal *, double *);
+int	dectoint(decimal *, int *);
+int	dectolong(decimal *, long *);
+
+/* Informix defines these in datetime.h */
+
+extern void	dtcurrent(timestamp *);
+extern int  	dtcvasc(char *, timestamp *);
+extern int  	dtsub(timestamp *, timestamp *, interval *);
+extern int	dttoasc(timestamp *, char *);
+extern int	dttofmtasc(timestamp *, char *, int, char *);
+extern int	intoasc(interval *, char *);
+extern int	dtcvfmtasc(char *, char *, timestamp *);
+
+#endif /* ndef _COMPATLIB_H */
diff --git a/src/interfaces/ecpg/include/datetime.h b/src/interfaces/ecpg/include/datetime.h
index c40398da0f4..dd5824a4668 100644
--- a/src/interfaces/ecpg/include/datetime.h
+++ b/src/interfaces/ecpg/include/datetime.h
@@ -1,18 +1,9 @@
 #ifndef _ECPG_DATETIME_H
 #define _ECPG_DATETIME_H
 
-#include <pgtypes_timestamp.h>
-#include <pgtypes_interval.h>
+#include <compatlib.h>
 
 typedef timestamp dtime_t;
 typedef interval intrvl_t;
 
-extern void dtcurrent(dtime_t *);
-extern int	dtcvasc(char *, dtime_t *);
-extern int	dtsub(dtime_t *, dtime_t *, intrvl_t *);
-extern int	dttoasc(dtime_t *, char *);
-extern int	dttofmtasc(dtime_t *, char *, int, char *);
-extern int	intoasc(intrvl_t *, char *);
-extern int	dtcvfmtasc(char *, char *, dtime_t *);
-
 #endif /* ndef _ECPG_DATETIME_H */
diff --git a/src/interfaces/ecpg/include/decimal.h b/src/interfaces/ecpg/include/decimal.h
index eff42c22ca3..96901927cdd 100644
--- a/src/interfaces/ecpg/include/decimal.h
+++ b/src/interfaces/ecpg/include/decimal.h
@@ -1,23 +1,8 @@
 #ifndef _ECPG_DECIMAL_H
 #define _ECPG_DECIMAL_H
 
-#include <pgtypes_numeric.h>
+#include <compatlib.h>
 
 typedef decimal dec_t;
 
-int			decadd(dec_t *, dec_t *, dec_t *);
-int			deccmp(dec_t *, dec_t *);
-void		deccopy(dec_t *, dec_t *);
-int			deccvasc(char *, int, dec_t *);
-int			deccvdbl(double, dec_t *);
-int			deccvint(int, dec_t *);
-int			deccvlong(long, dec_t *);
-int			decdiv(dec_t *, dec_t *, dec_t *);
-int			decmul(dec_t *, dec_t *, dec_t *);
-int			decsub(dec_t *, dec_t *, dec_t *);
-int			dectoasc(dec_t *, char *, int, int);
-int			dectodbl(dec_t *, double *);
-int			dectoint(dec_t *, int *);
-int			dectolong(dec_t *, long *);
-
 #endif /* ndef _ECPG_DECIMAL_H */
diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h
index 102db4bc16d..7f8ee28adf2 100644
--- a/src/interfaces/ecpg/include/ecpg_informix.h
+++ b/src/interfaces/ecpg/include/ecpg_informix.h
@@ -6,48 +6,6 @@
 
 #include <decimal.h>
 #include <datetime.h>
-#include <ecpglib.h>
-#include <pgtypes_date.h>
-
-#define SQLNOTFOUND 100
-
-#define ECPG_INFORMIX_NUM_OVERFLOW	-1200
-#define ECPG_INFORMIX_NUM_UNDERFLOW	-1201
-#define ECPG_INFORMIX_DIVIDE_ZERO	-1202
-#define ECPG_INFORMIX_BAD_YEAR		-1204
-#define ECPG_INFORMIX_BAD_MONTH		-1205
-#define ECPG_INFORMIX_BAD_DAY		-1206
-#define ECPG_INFORMIX_ENOSHORTDATE	-1209
-#define ECPG_INFORMIX_DATE_CONVERT	-1210
-#define ECPG_INFORMIX_OUT_OF_MEMORY	-1211
-#define ECPG_INFORMIX_ENOTDMY		-1212
-#define ECPG_INFORMIX_BAD_NUMERIC	-1213
-#define ECPG_INFORMIX_BAD_EXPONENT	-1216
-#define ECPG_INFORMIX_BAD_DATE		-1218
-#define ECPG_INFORMIX_EXTRA_CHARS	-1264
-
-extern int	rdatestr(date, char *);
-extern void 	rtoday(date *);
-extern int	rjulmdy(date, short *);
-extern int	rdefmtdate(date *, char *, char *);
-extern int	rfmtdate(date, char *, char *);
-extern int	rmdyjul(short *, date *);
-extern int	rstrdate(char *, date *);
-extern int	rdayofweek(date);
-
-extern int	rfmtlong(long, char *, char *);
-extern int	rgetmsg(int, char *, int);
-extern int	risnull(int, char *);
-extern int	rsetnull(int, char *);
-extern int	rtypalign(int, int);
-extern int	rtypmsize(int, int);
-extern int	rtypwidth(int, int);
-extern void 	rupshift(char *);
-
-extern int	byleng(char *, int);
-extern void ldchar(char *, int, char *);
-
-extern void ECPG_informix_set_var(int, void *, int);
-extern void *ECPG_informix_get_var(int);
+#include <compatlib.h>
 
 #endif /* ndef _ECPG_INFORMIX_H */
diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c
index cbf60606966..c49cd0e9979 100644
--- a/src/interfaces/ecpg/pgtypeslib/interval.c
+++ b/src/interfaces/ecpg/pgtypeslib/interval.c
@@ -10,7 +10,6 @@
 #include "dt.h"
 #include "pgtypes_error.h"
 #include "pgtypes_interval.h"
-#include "datetime.h"
 
 /* TrimTrailingZeros()
  * ... resulting from printing numbers with full precision.
-- 
GitLab