From 7f7fb4e64c225e5f2a4ce99cc4d2eefc951139fd Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Sun, 10 Mar 2002 12:09:54 +0000 Subject: [PATCH] Fixed two bugs in define command in pgc.l --- src/interfaces/ecpg/ChangeLog | 4 ++++ src/interfaces/ecpg/preproc/pgc.l | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 946d932394..06e465ff9c 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 15e79c9196..41874ef54a 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})*.* <> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated hexadecimal integer"); } -{xqstart} { +{xqstart} { state_before = YYSTATE; BEGIN(xq); startlit(); @@ -412,7 +412,7 @@ cppline {space}*#(.*\\{space})*.* addlit(yytext, yyleng); } <> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated quoted identifier"); } -{xdstart} { +{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); } -[^";"] { +[^;] { addlit(yytext, yyleng); } -[^";"]+";" { /* got the include file name */ +[^;]+";" { /* 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(); } } %%