summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2003-05-02 14:43:25 +0000
committerMichael Meskes2003-05-02 14:43:25 +0000
commitf7d836212a33cfcc77c0d32272bd3ce116dc95ad (patch)
treefd4c6ed6e0b05c294acfcfca81c31dc4b78ed6da
parent9e9d8d54e32e3ce9fa839b9b23192bc698eca5d0 (diff)
Fixed double definition of ecpg_compat_mode.
-rw-r--r--src/interfaces/ecpg/ecpglib/connect.c33
-rw-r--r--src/interfaces/ecpg/include/ecpglib.h1
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.c4
-rw-r--r--src/interfaces/ecpg/preproc/preproc.y7
4 files changed, 24 insertions, 21 deletions
diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index ee5ed471185..99c94a10bbf 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.3 2003/04/08 12:34:25 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.4 2003/05/02 14:43:25 meskes Exp $ */
#include "postgres_fe.h"
@@ -11,8 +11,6 @@
static struct connection *all_connections = NULL,
*actual_connection = NULL;
-extern enum COMPAT_MODE ecpg_compat_mode;
-
struct connection *
ECPGget_connection(const char *connection_name)
{
@@ -261,6 +259,20 @@ ECPGnoticeProcessor(void *arg, const char *message)
/* this contains some quick hacks, needs to be cleaned up, but it works */
bool
+ECPGconnect_informix(int lineno, const char *name, const char *user, const char *passwd, const char *connection_name, int autocommit)
+{
+ char *informix_name = (char *)name, *envname;
+
+ /* Informix uses an environment variable DBPATH that overrides
+ * the connection parameters given here */
+ envname = getenv("DBPATH");
+ if (envname)
+ informix_name = envname;
+ return (ECPGconnect(lineno, informix_name, user, passwd, connection_name, autocommit));
+}
+
+/* this contains some quick hacks, needs to be cleaned up, but it works */
+bool
ECPGconnect(int lineno, const char *name, const char *user, const char *passwd, const char *connection_name, int autocommit)
{
struct connection *this;
@@ -269,26 +281,13 @@ ECPGconnect(int lineno, const char *name, const char *user, const char *passwd,
*tmp,
*port = NULL,
*realname = NULL,
- *options = NULL,
- *envname;
+ *options = NULL;
ECPGinit_sqlca();
if ((this = (struct connection *) ECPGalloc(sizeof(struct connection), lineno)) == NULL)
return false;
- if (ecpg_compat_mode == ECPG_COMPAT_INFORMIX)
- {
- /* Informix uses an environment variable DBPATH that overrides
- * the connection parameters given here */
- envname = getenv("DBPATH");
- if (envname)
- {
- free(dbname);
- dbname=strdup(envname);
- }
- }
-
if (dbname == NULL && connection_name == NULL)
connection_name = "DEFAULT";
diff --git a/src/interfaces/ecpg/include/ecpglib.h b/src/interfaces/ecpg/include/ecpglib.h
index b4700deaff7..195a464dd91 100644
--- a/src/interfaces/ecpg/include/ecpglib.h
+++ b/src/interfaces/ecpg/include/ecpglib.h
@@ -42,6 +42,7 @@ void ECPGdebug(int, FILE *);
bool ECPGstatus(int, const char *);
bool ECPGsetcommit(int, const char *, const char *);
bool ECPGsetconn(int, const char *);
+bool ECPGconnect_informix(int, const char *, const char *, const char *, const char *, int);
bool ECPGconnect(int, const char *, const char *, const char *, const char *, int);
bool ECPGdo(int, const char *, char *,...);
bool ECPGtrans(int, const char *, const char *);
diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c
index 2634eeee9c6..cd9f319fb54 100644
--- a/src/interfaces/ecpg/preproc/ecpg.c
+++ b/src/interfaces/ecpg/preproc/ecpg.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.67 2003/05/01 17:16:57 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.68 2003/05/02 14:43:25 meskes Exp $ */
/* New main for ecpg, the PostgreSQL embedded SQL precompiler. */
/* (C) Michael Meskes <[email protected]> Feb 5th, 1998 */
@@ -339,7 +339,7 @@ main(int argc, char *const argv[])
lex_init();
/* we need several includes */
- fprintf(yyout, "/* Processed by ecpg (%d.%d.%d) */\n/* These four include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n#line 1 \"%s\"\nenum COMPAT_MODE ecpg_compat_mode=%d;\n", MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL, input_filename, compat);
+ fprintf(yyout, "/* Processed by ecpg (%d.%d.%d) */\n/* These four include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n#line 1 \"%s\"\n", MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL, input_filename);
/* add some compatibility headers */
if (compat == ECPG_COMPAT_INFORMIX)
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 3b474a40e75..1448d3757c6 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.215 2003/03/27 14:29:17 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.216 2003/05/02 14:43:25 meskes Exp $ */
/* Copyright comment */
%{
@@ -528,7 +528,10 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "no at option for connect statement.\n");
- fprintf(yyout, "{ ECPGconnect(__LINE__, %s, %d); ", $1, autocommit);
+ if (compat == ECPG_COMPAT_INFORMIX)
+ fprintf(yyout, "{ ECPGconnect_informix(__LINE__, %s, %d); ", $1, autocommit);
+ else
+ fprintf(yyout, "{ ECPGconnect(__LINE__, %s, %d); ", $1, autocommit);
reset_variables();
whenever_action(2);
free($1);