From c5b29841828abd82fe66b3ce3da97a5ca672a772 Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Sat, 24 Oct 2009 00:58:04 +0000 Subject: [PATCH] Patch to handle tab and CR better, from dfuhriman. (#203) git-svn-id: http://svn.osgeo.org/postgis/branches/1.3@4678 b70326c6-7e19-0410-871a-916f4a2858ee --- loader/shp2pgsql.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/loader/shp2pgsql.c b/loader/shp2pgsql.c index c7f88f94e..7dcd865dd 100644 --- a/loader/shp2pgsql.c +++ b/loader/shp2pgsql.c @@ -185,6 +185,7 @@ make_good_string(char *str) while (*ptr) { if ( *ptr == '\t' || *ptr == '\\' ) toescape++; + if ( *ptr == '\r' || *ptr == '\n') toescape+=2; ptr++; } @@ -197,8 +198,29 @@ make_good_string(char *str) optr=result; ptr=str; while (*ptr) { - if ( *ptr == '\t' || *ptr == '\\' ) *optr++='\\'; - *optr++=*ptr++; + switch(*ptr) { + case('\t'): + *optr++='\\'; + *optr++=*ptr++; + break; + case('\\'): + *optr++='\\'; + *optr++=*ptr++; + break; + case('\r'): + *optr++='\\'; + *optr++='r'; + *optr=*ptr++; + break; + case('\n'): + *optr++='\\'; + *optr++='n'; + *optr=*ptr++; + break; + default: + *optr++=*ptr++; + continue; + } } *optr='\0'; -- 2.50.1