From 6a78d754d0bcc56e516fcc8db67149dc1031dd91 Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Thu, 20 Mar 2008 16:04:52 +0000 Subject: [PATCH] Changed statement escaping to not escape continuation line markers. Bumped precompiler patchlevel. --- src/interfaces/ecpg/ChangeLog | 10 ++++++++++ src/interfaces/ecpg/preproc/Makefile | 4 ++-- src/interfaces/ecpg/preproc/output.c | 15 +++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index b73664a4ae2..c7f569693fd 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -2322,3 +2322,13 @@ Sun, 17 Feb 2008 18:45:39 +0100 - Removed duplicate include of ecpgtype.h. - Changed INFORMIX mode symbol definition yet again because the old way didn't work on NetBSD. + +Sun, 02 Mar 2008 11:50:48 +0100 + + - Fixed bug that caused arrays of varchar to be output with incomplete + name. + +Thu, 20 Mar 2008 16:54:27 +0100 + + - Changed statement escaping to not escape continuation line markers. + - Bumped ecpg version number to 4.4.1. diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile index f6edb9cc802..8ada4929bdf 100644 --- a/src/interfaces/ecpg/preproc/Makefile +++ b/src/interfaces/ecpg/preproc/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1998-2008, PostgreSQL Global Development Group # -# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.130 2008/01/01 19:45:59 momjian Exp $ +# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.130.2.1 2008/03/20 16:04:52 meskes Exp $ # #------------------------------------------------------------------------- @@ -15,7 +15,7 @@ include $(top_builddir)/src/Makefile.global MAJOR_VERSION= 4 MINOR_VERSION= 4 -PATCHLEVEL=0 +PATCHLEVEL=1 override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \ -I$(srcdir) -DMAJOR_VERSION=$(MAJOR_VERSION) \ diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c index 74da49a0d20..e58a75212d7 100644 --- a/src/interfaces/ecpg/preproc/output.c +++ b/src/interfaces/ecpg/preproc/output.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/output.c,v 1.23 2007/11/15 21:14:45 momjian Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/output.c,v 1.23.2.1 2008/03/20 16:04:52 meskes Exp $ */ #include "postgres_fe.h" @@ -193,7 +193,18 @@ output_escaped_str(char *str, bool quoted) else if (str[i] == '\n') fputs("\\\n", yyout); else if (str[i] == '\\') - fputs("\\\\", yyout); + { + int j = i; + + /* check whether this is a continuation line + * if it is, do not output anything because newlines are escaped anyway */ + + /* accept blanks after the '\' as some other compilers do too */ + do { j++; } while (str[j] == ' ' || str[j] == '\t'); + + if ((str[j] != '\n') && (str[j] != '\r' || str[j + 1] != '\n')) /* not followed by a newline */ + fputs("\\\\", yyout); + } else if (str[i] == '\r' && str[i + 1] == '\n') { fputs("\\\r\n", yyout); -- 2.39.5