MCPcopy Create free account
hub / github.com/apache/trafficserver / ink_bvsprintf

Function ink_bvsprintf

src/tscore/ink_sprintf.cc:65–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65int
66ink_bvsprintf(char *buffer, const char *format, va_list ap)
67{
68 int d_val;
69 const char *s;
70 char *d, *p, *s_val, d_buffer[32];
71 va_list ap_local;
72
73 va_copy(ap_local, ap);
74
75 s = format;
76 d = buffer;
77
78 while (*s) {
79 /////////////////////////////
80 // handle non-% characters //
81 /////////////////////////////
82
83 if (buffer) { // if have output buffer
84 while (*s && (*s != '%')) {
85 *d++ = *s++;
86 } // really copy, else
87 } else {
88 while (*s && (*s != '%')) {
89 d++;
90 s++;
91 } // pass over string
92 }
93
94 ///////////////////////////
95 // handle NUL characters //
96 ///////////////////////////
97
98 if (*s == NUL) {
99 break; // end of string
100 }
101
102 /////////////////////////
103 // handle % characters //
104 /////////////////////////
105
106 ++s; // consume % character
107
108 switch (*s) // dispatch on flag
109 {
110 case 's': // %s pattern
111 ++s; // consume 's'
112 s_val = va_arg(ap_local, char *); // grab string argument
113 p = s_val; // temporary pointer
114 if (buffer) { // if have output buffer
115 while (*p) {
116 *d++ = *p++;
117 } // copy value
118 } else { // else
119 while (*p) {
120 d++;
121 p++;
122 } // pass over value

Callers 3

ink_bsprintfFunction · 0.85
SDK_RPRINTFunction · 0.85
getFormatMethod · 0.85

Calls

no outgoing calls

Tested by 1

SDK_RPRINTFunction · 0.68