From 3a81a1a4623b2d56f25443e57ae243e13a44cad2 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Fri, 3 Mar 2000 09:56:03 +0000
Subject: [PATCH] *** empty log message ***

---
 doc/src/sgml/ecpg.sgml                |  2 +-
 src/interfaces/ecpg/ChangeLog         |  4 +++
 src/interfaces/ecpg/preproc/pgc.l     | 45 +++++++++++----------------
 src/interfaces/ecpg/preproc/preproc.y |  3 +-
 4 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 4b0eed30cf5..7f0f785d4b6 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -2,7 +2,7 @@
 <DocInfo>
 <AuthorGroup>
 <Author>
-<FirstName>Linux</FirstName>
+<FirstName>Linus</FirstName>
 <Surname>Tolke</Surname>
 </Author>
 <Author>
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 846aa8a158a..a7882c20a1e 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -848,5 +848,9 @@ Thu Mar  2 17:42:16 CET 2000
 
 	- Print error message if an indicator array is given for input
 	  variables.
+
+Fri Mar  3 10:47:06 CET 2000
+
+	- Fixed handling of double quote in C code.
 	- Set library version to 3.1.0.
 	- Set ecpg version to 2.7.0.
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index fcb033787c5..ec265dded16 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.51 2000/02/22 19:57:10 meskes Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.52 2000/03/03 09:56:03 meskes Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ static int		literalalloc;	/* current allocated buffer size */
 #define startlit()  (literalbuf[0] = '\0', literallen = 0)
 static void addlit(char *ytext, int yleng);
 
-int before_comment;
+int state_before;
 
 struct _yy_buffer { YY_BUFFER_STATE 	buffer;
 		    long		lineno;
@@ -268,12 +268,12 @@ cppline			{space}*#(.*\\{line_end})*.*
 {xcline}		{ ECHO; }
 
 {xcstart}		{
-				before_comment = YYSTATE;
+				state_before = YYSTATE;
 				ECHO;
 	 			BEGIN(xc);
 			}
 
-<xc>{xcstop}	{ ECHO; BEGIN(before_comment); }
+<xc>{xcstop}	{ ECHO; BEGIN(state_before); }
 
 <xc>{xcinside}	{ ECHO; }
 
@@ -303,7 +303,7 @@ cppline			{space}*#(.*\\{line_end})*.*
 					BEGIN(xh);
 					startlit();
 				}
-<xh>{xhstop}	{
+<xh>{xhstop}			{
 					char* endptr;
 
 					BEGIN(SQL);
@@ -314,45 +314,36 @@ cppline			{space}*#(.*\\{line_end})*.*
 					return ICONST;
 				}
 
-<SQL>{xqstart}		{
+{xqstart}			{
+					state_before == YYSTATE;
 					BEGIN(xq);
 					startlit();
 				}
-<xq>{xqstop}	{
-					BEGIN(SQL);
+<xq>{xqstop}			{
+					BEGIN(state_before);
 					yylval.str = mm_strdup(literalbuf);
 					return SCONST;
 				}
 <xq>{xqdouble}	|
 <xq>{xqinside}	|
-<xq>{xqliteral} {
+<xq>{xqliteral} 		{
 					addlit(yytext, yyleng);
 				}
-<xq>{xqcat}		{		/* ignore */
+<xq>{xqcat}			{
+					/* ignore */
 				}
 
-<SQL>{xdstart}		{
+{xdstart}			{
+					state_before = YYSTATE;
 					BEGIN(xd);
 					startlit();
 				}
-<xd>{xdstop}	{
-					BEGIN(SQL);
-					yylval.str = mm_strdup(literalbuf);
-					return CSTRING;
-				}
-<xd>{xdinside}	{
-					addlit(yytext, yyleng);
-				}
-{xdstart}		{
-					BEGIN(xdc);
-					startlit();
-				}
-<xdc>{xdstop}	{
-					BEGIN(C);
+<xd>{xdstop}			{
+					BEGIN(state_before);
 					yylval.str = mm_strdup(literalbuf);
 					return CSTRING;
 				}
-<xdc>{xdcinside}	{
+<xd>{xdinside}			{
 					addlit(yytext, yyleng);
 				}
 <SQL>{typecast}			{ 	return TYPECAST; }
@@ -365,7 +356,7 @@ cppline			{space}*#(.*\\{line_end})*.*
 					 BEGIN C;
 				  return yytext[0];
 				}
-<SQL>{operator}		{
+<SQL>{operator}			{
 					if (strcmp((char*)yytext,"!=") == 0)
 						yylval.str = mm_strdup("<>"); /* compatability */
 					else
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index d3abd002286..88591f831bc 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -5086,6 +5086,7 @@ c_anything:  IDENT 	{ $$ = $1; }
 	| CSTRING	{ $$ = make3_str(make_str("\""), $1, make_str("\"")); }
 	| Iconst	{ $$ = $1; }
 	| Fconst	{ $$ = $1; }
+	| Sconst	{ $$ = $1; }
 	| '*'		{ $$ = make_str("*"); }
 	| '+'		{ $$ = make_str("+"); }
 	| '-'		{ $$ = make_str("-"); }
@@ -5112,8 +5113,6 @@ c_anything:  IDENT 	{ $$ = $1; }
 	| VARCHAR	{ $$ = make_str("varchar"); }
         | '['		{ $$ = make_str("["); }
 	| ']'		{ $$ = make_str("]"); }
-/*        | '('		{ $$ = make_str("("); }
-	| ')'		{ $$ = make_str(")"); }*/
 	| '='		{ $$ = make_str("="); }
 
 blockstart : '{' {
-- 
GitLab