Go to the documentation of this file.
8 #include "util/strutil.h"
11 #define snprintf _snprintf
12 #define vsnprintf _vsnprintf
25 char*
dest,
size_t dest_len) {
26 const char* src_end = src + src_len;
29 for (; src < src_end; src++) {
30 if (dest_len - used < 2)
33 unsigned char c = *src;
35 case '\n':
dest[used++] =
'\\';
dest[used++] =
'n';
break;
36 case '\r':
dest[used++] =
'\\';
dest[used++] =
'r';
break;
37 case '\t':
dest[used++] =
'\\';
dest[used++] =
't';
break;
38 case '\"':
dest[used++] =
'\\';
dest[used++] =
'\"';
break;
39 case '\'':
dest[used++] =
'\\';
dest[used++] =
'\'';
break;
40 case '\\':
dest[used++] =
'\\';
dest[used++] =
'\\';
break;
45 if (c < ' ' || c >
'~') {
46 if (dest_len - used < 5)
48 snprintf(
dest + used, 5,
"\\%03o", c);
51 dest[used++] = c;
break;
56 if (dest_len - used < 1)
69 const size_t dest_len = src.
size() * 4 + 1;
70 char*
dest =
new char[dest_len];
103 va_copy(backup_ap, ap);
107 if ((
result >= 0) && (
static_cast<size_t>(
result) <
sizeof(space))) {
114 int length =
sizeof(space);
126 va_copy(backup_ap, ap);
int __cdecl vsnprintf(char *buffer, size_t count, const char *format, va_list argptr)
static void StringAppendV(std::string *dst, const char *format, va_list ap)
static size_t CEscapeString(const char *src, size_t src_len, char *dest, size_t dest_len)
std::string StringPrintf(const char *format,...)
void PrefixSuccessor(std::string *prefix)
const_pointer data() const
std::string CEscape(const StringPiece &src)
static const char prefix[]
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:23