aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/ChangeLog4
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l19
2 files changed, 16 insertions, 7 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 946d932394d..06e465ff9cf 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1221,6 +1221,10 @@ Wed Jan 23 17:35:23 CET 2002
Wed Mar 6 10:40:28 CET 2002
- Synced preproc.y with gram.y.
+
+Sun Mar 10 13:08:22 CET 2002
+
+ - Fixed two bugs in define command in lexer.
- Set ecpg version to 2.10.0.
- Set library version to 3.4.0.
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 15e79c91961..41874ef54a1 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.86 2002/03/06 06:10:36 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.87 2002/03/10 12:09:54 meskes Exp $
*
*-------------------------------------------------------------------------
*/
@@ -352,7 +352,7 @@ cppline {space}*#(.*\\{space})*.*
<xh><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated hexadecimal integer"); }
-{xqstart} {
+<C,SQL>{xqstart} {
state_before = YYSTATE;
BEGIN(xq);
startlit();
@@ -412,7 +412,7 @@ cppline {space}*#(.*\\{space})*.*
addlit(yytext, yyleng);
}
<xd,xdc><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated quoted identifier"); }
-{xdstart} {
+<C,SQL>{xdstart} {
state_before = YYSTATE;
BEGIN(xdc);
startlit();
@@ -789,7 +789,6 @@ cppline {space}*#(.*\\{space})*.*
/* initial definition */
this->old = old;
- /* this->new = mm_strdup(scanstr(literalbuf));*/
this->new = mm_strdup(literalbuf);
this->next = defines;
defines = this;
@@ -797,11 +796,11 @@ cppline {space}*#(.*\\{space})*.*
BEGIN(C);
}
-<def>[^";"] {
+<def>[^;] {
addlit(yytext, yyleng);
}
-<incl>[^";"]+";" { /* got the include file name */
+<incl>[^;]+";" { /* got the include file name */
struct _yy_buffer *yb;
struct _include_path *ip;
char inc_file[MAXPGPATH];
@@ -870,6 +869,7 @@ cppline {space}*#(.*\\{space})*.*
else
{
struct _yy_buffer *yb = yy_buffer;
+ int i;
if (yyin != NULL)
fclose(yyin);
@@ -878,13 +878,18 @@ cppline {space}*#(.*\\{space})*.*
yy_switch_to_buffer(yy_buffer->buffer);
yylineno = yy_buffer->lineno;
+
+ /* We have to output the filename only if we change files here */
+ i = strcmp(input_filename, yy_buffer->filename);
free(input_filename);
input_filename = yy_buffer->filename;
yy_buffer = yy_buffer->next;
free(yb);
- output_line_number();
+
+ if (i != 0)
+ output_line_number();
}
}
%%