From 491dc124bfd63652b9f0ae32d27804980c4b3705 Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Mon, 10 May 2004 13:46:06 +0000 Subject: [PATCH] - Argh, just another bug in adjust_informix. - Added "extern C" flags for C++ compiler. Hopefully I got that one right. --- src/interfaces/ecpg/ChangeLog | 5 +++++ src/interfaces/ecpg/include/ecpg_informix.h | 11 ++++++++++- src/interfaces/ecpg/include/pgtypes_date.h | 8 ++++++++ src/interfaces/ecpg/include/pgtypes_interval.h | 9 +++++++++ src/interfaces/ecpg/include/pgtypes_numeric.h | 9 +++++++++ src/interfaces/ecpg/include/pgtypes_timestamp.h | 9 +++++++++ src/interfaces/ecpg/preproc/preproc.y | 4 ++-- 7 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 2a79f6048a..7226149853 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -1790,6 +1790,11 @@ Fri May 7 15:34:05 CEST 2004 - Added portability file to pgtypeslib. - Fixed bug that reversed string length in typedefs. - Added additional test case. + +Mon May 10 15:38:58 CEST 2004 + + - Argh, just another bug in adjust_informix. + - Added "extern C" flags for C++ compiler. - Set pgtypes library version to 1.2. - Set ecpg version to 3.2.0. - Set compat library version to 1.2. diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h index ccf4dd1123..2a17202010 100644 --- a/src/interfaces/ecpg/include/ecpg_informix.h +++ b/src/interfaces/ecpg/include/ecpg_informix.h @@ -1,7 +1,7 @@ /* * This file contains stuff needed to be as compatible to Informix as possible. * - * $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.14 2003/12/18 18:55:09 petere Exp $ + * $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.15 2004/05/10 13:46:06 meskes Exp $ */ #ifndef _ECPG_INFORMIX_H #define _ECPG_INFORMIX_H @@ -29,6 +29,11 @@ #define ECPG_INFORMIX_BAD_DATE -1218 #define ECPG_INFORMIX_EXTRA_CHARS -1264 +#ifdef __cplusplus +extern "C" +{ +#endif + extern int rdatestr(date, char *); extern void rtoday(date *); extern int rjulmdy(date, short *); @@ -78,4 +83,8 @@ extern int dttofmtasc(timestamp *, char *, int, char *); extern int intoasc(interval *, char *); extern int dtcvfmtasc(char *, char *, timestamp *); +#ifdef __cplusplus +} +#endif + #endif /* ndef _ECPG_INFORMIX_H */ diff --git a/src/interfaces/ecpg/include/pgtypes_date.h b/src/interfaces/ecpg/include/pgtypes_date.h index 863b2593d9..0e30823d2f 100644 --- a/src/interfaces/ecpg/include/pgtypes_date.h +++ b/src/interfaces/ecpg/include/pgtypes_date.h @@ -4,6 +4,10 @@ #include typedef long date; +#ifdef __cplusplus +extern "C" +{ +#endif extern date PGTYPESdate_from_asc(char *, char **); extern char *PGTYPESdate_to_asc(date); @@ -15,4 +19,8 @@ extern void PGTYPESdate_today(date *); extern int PGTYPESdate_defmt_asc(date *, char *, char *); extern int PGTYPESdate_fmt_asc(date, char *, char *); +#ifdef __cplusplus +} +#endif + #endif /* PGTYPES_DATETIME */ diff --git a/src/interfaces/ecpg/include/pgtypes_interval.h b/src/interfaces/ecpg/include/pgtypes_interval.h index 98b29bcd80..c963b1b89e 100644 --- a/src/interfaces/ecpg/include/pgtypes_interval.h +++ b/src/interfaces/ecpg/include/pgtypes_interval.h @@ -14,8 +14,17 @@ typedef struct * alignment */ } interval; +#ifdef __cplusplus +extern "C" +{ +#endif + extern interval *PGTYPESinterval_from_asc(char *, char **); extern char *PGTYPESinterval_to_asc(interval *); extern int PGTYPESinterval_copy(interval *, interval *); +#ifdef __cplusplus +} +#endif + #endif /* PGTYPES_INTERVAL */ diff --git a/src/interfaces/ecpg/include/pgtypes_numeric.h b/src/interfaces/ecpg/include/pgtypes_numeric.h index db4d02c200..951f7dfc0e 100644 --- a/src/interfaces/ecpg/include/pgtypes_numeric.h +++ b/src/interfaces/ecpg/include/pgtypes_numeric.h @@ -37,6 +37,11 @@ typedef struct NumericDigit digits[DECSIZE]; /* decimal digits */ } decimal; +#ifdef __cplusplus +extern "C" +{ +#endif + numeric *PGTYPESnumeric_new(void); void PGTYPESnumeric_free(numeric *); numeric *PGTYPESnumeric_from_asc(char *, char **); @@ -56,4 +61,8 @@ int PGTYPESnumeric_to_long(numeric *, long *); int PGTYPESnumeric_to_decimal(numeric *, decimal *); int PGTYPESnumeric_from_decimal(decimal *, numeric *); +#ifdef __cplusplus +} +#endif + #endif /* PGTYPES_NUMERIC */ diff --git a/src/interfaces/ecpg/include/pgtypes_timestamp.h b/src/interfaces/ecpg/include/pgtypes_timestamp.h index f4a4b0ba3c..3b93a43e5a 100644 --- a/src/interfaces/ecpg/include/pgtypes_timestamp.h +++ b/src/interfaces/ecpg/include/pgtypes_timestamp.h @@ -12,6 +12,11 @@ typedef double timestamp; typedef double TimestampTz; #endif +#ifdef __cplusplus +extern "C" +{ +#endif + extern timestamp PGTYPEStimestamp_from_asc(char *, char **); extern char *PGTYPEStimestamp_to_asc(timestamp); extern int PGTYPEStimestamp_sub(timestamp *, timestamp *, interval *); @@ -19,4 +24,8 @@ extern int PGTYPEStimestamp_fmt_asc(timestamp *, char *, int, char *); extern void PGTYPEStimestamp_current(timestamp *); extern int PGTYPEStimestamp_defmt_asc(char *, char *, timestamp *); +#ifdef __cplusplus +} +#endif + #endif /* PGTYPES_TIMESTAMP */ diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index b8642f2b91..572c0fca64 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.281 2004/05/07 13:42:49 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.282 2004/05/10 13:46:06 meskes Exp $ */ /* Copyright comment */ %{ @@ -209,7 +209,7 @@ adjust_informix(struct arguments *list) original_var = ptr->variable->name; sprintf(temp, "%d))", ecpg_informix_var); - if (atoi(ptr->variable->type->size) > 1) + if ((ptr->variable->type->type != ECPGt_char && ptr->variable->type->type != ECPGt_unsigned_char) && atoi(ptr->variable->type->size) > 1) { ptr->variable = new_variable(cat_str(4, make_str("("), mm_strdup(ECPGtype_name(ptr->variable->type->u.element->type)), make_str(" *)(ECPG_informix_get_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, make_str("1")), ptr->variable->type->size), 0); sprintf(temp, "%d, (", ecpg_informix_var++); -- GitLab