mirror of https://github.com/postgres/postgres
For code-reuse in upcoming functionality in pg_basebackup. Zoltan Boszormenyipull/3/head
parent
fc8745070a
commit
940d136661
@ -0,0 +1,36 @@ |
||||
#include "c.h" |
||||
|
||||
/*
|
||||
* Escape (by doubling) any single quotes or backslashes in given string |
||||
* |
||||
* Note: this is used to process postgresql.conf entries and to quote |
||||
* string literals in pg_basebackup for creating recovery.conf. |
||||
* Since postgresql.conf strings are defined to treat backslashes as escapes, |
||||
* we have to double backslashes here. |
||||
* |
||||
* Since this function is only used for parsing or creating configuration |
||||
* files, we do not care about encoding considerations. |
||||
* |
||||
* Returns a malloced() string that it's the responsibility of the caller |
||||
* to free. |
||||
*/ |
||||
char * |
||||
escape_single_quotes_ascii(const char *src) |
||||
{ |
||||
int len = strlen(src), |
||||
i, |
||||
j; |
||||
char *result = malloc(len * 2 + 1); |
||||
|
||||
if (!result) |
||||
return NULL; |
||||
|
||||
for (i = 0, j = 0; i < len; i++) |
||||
{ |
||||
if (SQL_STR_DOUBLE(src[i], true)) |
||||
result[j++] = src[i]; |
||||
result[j++] = src[i]; |
||||
} |
||||
result[j] = '\0'; |
||||
return result; |
||||
} |
||||
Loading…
Reference in new issue