From db921be319906bed877eabb02c266c7b3a788a03 Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Tue, 7 Jul 1998 17:59:32 +0000
Subject: [PATCH] From: "Dr. Michael Meskes" <meskes@online-club.de>

+ Thu Jul  2 20:30:14 CEST 1998
+
+       - Changed new style db name to allow connection types "tcp" and
+         "unix" only
+
+ Tue Jul  7 15:14:14 CEST 1998
+
+       - Fixed some bugs in preproc.y
+       - Set version to 2.3.4
---
 src/interfaces/ecpg/ChangeLog         | 10 ++++++++++
 src/interfaces/ecpg/lib/ecpglib.c     |  2 ++
 src/interfaces/ecpg/preproc/Makefile  |  2 +-
 src/interfaces/ecpg/preproc/preproc.y | 16 ++++++++++++++--
 src/interfaces/ecpg/preproc/type.c    |  4 ++++
 src/interfaces/ecpg/test/test2.pgc    |  2 +-
 6 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index bef6e29787b..8131d499f67 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -248,3 +248,13 @@ Wed Jun  3 13:38:57 CEST 1998
 	  CREATE RULE
 	- Set library version to 2.3
 	- Set version to 2.3.3
+
+Thu Jul  2 20:30:14 CEST 1998
+
+	- Changed new style db name to allow connection types "tcp" and
+	  "unix" only
+
+Tue Jul  7 15:14:14 CEST 1998
+
+	- Fixed some bugs in preproc.y
+	- Set version to 2.3.4
diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c
index 8e4f8cdd25a..ecbd2354617 100644
--- a/src/interfaces/ecpg/lib/ecpglib.c
+++ b/src/interfaces/ecpg/lib/ecpglib.c
@@ -895,7 +895,9 @@ ECPGdisconnect(int lineno, const char *connection_name)
 			return false;
 		}
 		else
+		{
 			ECPGfinish(con);
+		}
 	}
 	
 	return true;
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index e90d0731c46..da392d20546 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -3,7 +3,7 @@ include $(SRCDIR)/Makefile.global
 
 MAJOR_VERSION=2
 MINOR_VERSION=3
-PATCHLEVEL=3
+PATCHLEVEL=4
 
 CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
 	-DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 9a7b348f619..6f320b06d50 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -4032,12 +4032,24 @@ connection_target: database_name opt_server opt_port
 		}
         |  db_prefix server opt_port '/' database_name opt_options
                 {
-		  /* new style: esql:postgresql://server[:port][/dbname] */
+		  /* new style: <tcp|unix>:postgresql://server[:port][/dbname] */
                   if (strncmp($2, "://", 3) != 0)
 		  {
 		    sprintf(errortext, "parse error at or near '%s'", $2);
 		    yyerror(errortext);
 		  }
+
+		  if (strncmp($1, "unix", 4) == 0 && strncmp($2, "localhost", 9) != 0)
+		  {
+		    sprintf(errortext, "unix domain sockets only work on 'localhost'");
+                    yyerror(errortext);
+		  }
+
+		  if (strncmp($1, "unix", 4) != 0 && strncmp($1, "tcp", 3) != 0)
+		  {
+		    sprintf(errortext, "only protocols 'tcp' and 'unix' are supported");
+                    yyerror(errortext);
+		  }
 	
 		  $$ = make4_str(make5_str(make1_str("\""), $1, $2, $3, make1_str("/")), $5, $6, make1_str("\""));
 		}
@@ -4061,7 +4073,7 @@ db_prefix: ident cvariable
 		    yyerror(errortext);	
 		  }
 
-		  if (strcmp($1, "esql") != 0 && strcmp($1, "ecpg") != 0 && strcmp($1, "sql") != 0 && strcmp($1, "isql") != 0 && strcmp($1, "proc") != 0)
+		  if (strcmp($1, "tcp") != 0 && strcmp($1, "unix") != 0)
 		  {
 		    sprintf(errortext, "Illegal connection type %s", $1);
 		    yyerror(errortext);
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 7f4041de3b5..dd395c80eb9 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -291,7 +291,9 @@ ECPGdump_a_struct(FILE *o, const char *name, const char * ind_name, long arrsiz,
 		offset = obuf;
 	}
 	else
+	{
 		offset = offsetarg;
+	}
 
 	sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
 	prefix = pbuf;
@@ -347,7 +349,9 @@ ECPGfree_type(struct ECPGtype * typ)
 			free(typ->u.members);
 		}
 		else
+		{
 			abort();
+		}
 	}
 	free(typ);
 }
diff --git a/src/interfaces/ecpg/test/test2.pgc b/src/interfaces/ecpg/test/test2.pgc
index 324a63b941b..bfad1a9493b 100644
--- a/src/interfaces/ecpg/test/test2.pgc
+++ b/src/interfaces/ecpg/test/test2.pgc
@@ -26,7 +26,7 @@ exec sql end declare section;
                 ECPGdebug(1, dbgs);
 
 	strcpy(msg, "connect");
-	exec sql connect to mm;
+	exec sql connect to tcp:postgresql://localhost:5432/mm;
 
 	strcpy(msg, "create");
 	exec sql create table meskes(name char(8), born integer, age smallint, married char(8));
-- 
GitLab