- Changed INFORMIX mode symbol definition yet again because the old way didn't work on NetBSD. Hopefully this one does.
- Changed the way symbols are defined in C in INFORMIX mode.
+Sun, 17 Feb 2008 18:45:39 +0100
+
+ - Removed duplicate include of ecpgtype.h.
+ - Changed INFORMIX mode symbol definition yet again because the old
+ way didn't work on NetBSD.
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/datetime.h,v 1.15 2008/02/15 11:20:21 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/datetime.h,v 1.16 2008/02/17 18:14:29 meskes Exp $ */
#ifndef _ECPG_DATETIME_H
#define _ECPG_DATETIME_H
#include <ecpg_informix.h>
-/* brought in by ecpg_informix.h nowadays
- * typedef timestamp dtime_t;
- * typedef interval intrvl_t; */
+#ifndef _ECPGLIB_H /* source created by ecpg which defines these symbols */
+typedef timestamp dtime_t;
+typedef interval intrvl_t;
+#endif /* ndef _ECPGLIB_H */
#endif /* ndef _ECPG_DATETIME_H */
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/decimal.h,v 1.17 2008/02/15 11:20:21 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/decimal.h,v 1.18 2008/02/17 18:14:29 meskes Exp $ */
#ifndef _ECPG_DECIMAL_H
#define _ECPG_DECIMAL_H
#include <ecpg_informix.h>
-/* brought in by ecpg_informix.h nowadays
- * typedef decimal dec_t; */
+#ifndef _ECPGLIB_H /* source created by ecpg which defines this symbol */
+typedef decimal dec_t;
+#endif /* ndef _ECPGLIB_H */
#endif /* ndef _ECPG_DECIMAL_H */
/*
* This file contains stuff needed to be as compatible to Informix as possible.
- * $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.21 2008/02/15 11:20:21 meskes Exp $
+ * $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.22 2008/02/17 18:14:29 meskes Exp $
*/
#ifndef _ECPG_INFORMIX_H
#define _ECPG_INFORMIX_H
extern int intoasc(interval *, char *);
extern int dtcvfmtasc(char *, char *, timestamp *);
-/* we also define Informix datatypes here */
-typedef timestamp dtime_t;
-typedef interval intrvl_t;
-typedef decimal dec_t;
-
#ifdef __cplusplus
}
#endif
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.103 2007/12/21 14:33:20 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.104 2008/02/17 18:14:29 meskes Exp $ */
/* New main for ecpg, the PostgreSQL embedded SQL precompiler. */
/* (C) Michael Meskes <meskes@postgresql.org> Feb 5th, 1998 */
if (header_mode == false)
{
- fprintf(yyout, "/* These include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
+ fprintf(yyout, "/* These include files are added by the preprocessor */\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
/* add some compatibility headers */
if (INFORMIX_MODE)
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.162 2008/02/15 11:20:21 meskes Exp $
+ * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.163 2008/02/17 18:14:29 meskes Exp $
*
*-------------------------------------------------------------------------
*/
static void parse_include (void);
static bool ecpg_isspace(char ch);
static bool isdefine(void);
+static bool isinformixdefine(void);
char *token_start;
int state_before;
<C>{identifier} {
const ScanKeyword *keyword;
- if (!isdefine())
+ /* Informix uses SQL defines only in SQL space */
+ /* however, some defines have to be taken care of for compatibility */
+ if ((!INFORMIX_MODE || !isinformixdefine()) && !isdefine())
{
keyword = ScanCKeywordLookup(yytext);
if (keyword != NULL)
return false;
}
+static bool isinformixdefine(void)
+{
+ const char *new = NULL;
+
+ if (strcmp(yytext, "dec_t") == 0)
+ new = "decimal";
+ else if (strcmp(yytext, "intrvl_t") == 0)
+ new = "interval";
+ else if (strcmp(yytext, "dtime_t") == 0)
+ new = "timestamp";
+
+ if (new)
+ {
+ struct _yy_buffer *yb;
+
+ yb = mm_alloc(sizeof(struct _yy_buffer));
+
+ yb->buffer = YY_CURRENT_BUFFER;
+ yb->lineno = yylineno;
+ yb->filename = mm_strdup(input_filename);
+ yb->next = yy_buffer;
+ yy_buffer = yb;
+
+ yy_scan_string(new);
+ return true;
+ }
+
+ return false;
+}
+
/*
* Called before any actual parsing is done
*/
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* Processed by ecpg (regression mode) */
/* These include files are added by the preprocessor */
-#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>