PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
stringinfo_mb.h File Reference
#include "lib/stringinfo.h"
Include dependency graph for stringinfo_mb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void appendStringInfoStringQuoted (StringInfo str, const char *s, int maxlen)
 

Function Documentation

◆ appendStringInfoStringQuoted()

void appendStringInfoStringQuoted ( StringInfo  str,
const char *  s,
int  maxlen 
)

Definition at line 34 of file stringinfo_mb.c.

35{
36 char *copy = NULL;
37 const char *chunk_search_start,
38 *chunk_copy_start,
39 *chunk_end;
40 int slen;
41 bool ellipsis;
42
43 Assert(str != NULL);
44
45 slen = strlen(s);
46 if (maxlen >= 0 && maxlen < slen)
47 {
48 int finallen = pg_mbcliplen(s, slen, maxlen);
49
50 copy = pnstrdup(s, finallen);
51 chunk_search_start = copy;
52 chunk_copy_start = copy;
53
54 ellipsis = true;
55 }
56 else
57 {
58 chunk_search_start = s;
59 chunk_copy_start = s;
60
61 ellipsis = false;
62 }
63
65
66 while ((chunk_end = strchr(chunk_search_start, '\'')) != NULL)
67 {
68 /* copy including the found delimiting ' */
70 chunk_copy_start,
71 chunk_end - chunk_copy_start + 1);
72
73 /* in order to double it, include this ' into the next chunk as well */
74 chunk_copy_start = chunk_end;
75 chunk_search_start = chunk_end + 1;
76 }
77
78 /* copy the last chunk and terminate */
79 if (ellipsis)
80 appendStringInfo(str, "%s...'", chunk_copy_start);
81 else
82 appendStringInfo(str, "%s'", chunk_copy_start);
83
84 if (copy)
85 pfree(copy);
86}
#define Assert(condition)
Definition: c.h:812
const char * str
int pg_mbcliplen(const char *mbstr, int len, int limit)
Definition: mbutils.c:1083
void pfree(void *pointer)
Definition: mcxt.c:1521
char * pnstrdup(const char *in, Size len)
Definition: mcxt.c:1707
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:94
void appendBinaryStringInfoNT(StringInfo str, const void *data, int datalen)
Definition: stringinfo.c:256
#define appendStringInfoCharMacro(str, ch)
Definition: stringinfo.h:204

References appendBinaryStringInfoNT(), appendStringInfo(), appendStringInfoCharMacro, Assert, pfree(), pg_mbcliplen(), pnstrdup(), and str.

Referenced by bind_param_error_callback(), BuildParamLogString(), format_expr_params(), and format_preparedparamsdata().