PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ escape_copy_string()

char * escape_copy_string ( char *  str)

Escape input string suitable for COPY.

If no characters require escaping, simply return the input pointer. Otherwise return a new allocated string.

Definition at line 119 of file shp2pgsql-core.c.

120{
121 /*
122 * Escape the following characters by adding a preceding backslash
123 * tab, backslash, cr, lf
124 *
125 * 1. find # of escaped characters
126 * 2. make new string
127 *
128 */
129
130 char *result;
131 char *ptr, *optr;
132 int toescape = 0;
133 size_t size;
134
135 ptr = str;
136
137 /* Count how many characters we need to escape so we know the size of the string we need to return */
138 while (*ptr)
139 {
140 if (*ptr == '\t' || *ptr == '\\' || *ptr == '\n' || *ptr == '\r')
141 toescape++;
142
143 ptr++;
144 }
145
146 /* If we don't have to escape anything, simply return the input pointer */
147 if (toescape == 0)
148 return str;
149
150 size = ptr - str + toescape + 1;
151 result = calloc(1, size);
152 optr = result;
153 ptr = str;
154
155 while (*ptr)
156 {
157 if ( *ptr == '\t' || *ptr == '\\' || *ptr == '\n' || *ptr == '\r' )
158 *optr++ = '\\';
159
160 *optr++ = *ptr++;
161 }
162
163 *optr = '\0';
164
165 return result;
166}
#define str(s)

References str.

Referenced by ShpLoaderGenerateSQLRowStatement().

Here is the caller graph for this function: