src/printf.c

changeset 1285
7acbaa74fbd0
parent 1065
6eb7b54975ee
equal deleted inserted replaced
1284:b2103354baed 1285:7acbaa74fbd0
130 } 130 }
131 va_end(ap2); 131 va_end(ap2);
132 return s; 132 return s;
133 } 133 }
134 134
135 int cx_sprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, ... ) { 135 int cx_sprintf_a(
136 const CxAllocator *alloc,
137 char **str,
138 size_t *len,
139 const char *fmt,
140 ...
141 ) {
136 va_list ap; 142 va_list ap;
137 va_start(ap, fmt); 143 va_start(ap, fmt);
138 int ret = cx_vsprintf_a(alloc, str, len, fmt, ap); 144 int ret = cx_vsprintf_a(alloc, str, len, fmt, ap);
139 va_end(ap); 145 va_end(ap);
140 return ret; 146 return ret;
141 } 147 }
142 148
143 int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap) { 149 int cx_vsprintf_a(
150 const CxAllocator *alloc,
151 char **str,
152 size_t *len,
153 const char *fmt,
154 va_list ap
155 ) {
144 va_list ap2; 156 va_list ap2;
145 va_copy(ap2, ap); 157 va_copy(ap2, ap);
146 int ret = vsnprintf(*str, *len, fmt, ap); 158 int ret = vsnprintf(*str, *len, fmt, ap);
147 if ((unsigned) ret >= *len) { 159 if ((unsigned) ret >= *len) {
148 unsigned newlen = ret + 1; 160 unsigned newlen = ret + 1;
160 } 172 }
161 va_end(ap2); 173 va_end(ap2);
162 return ret; 174 return ret;
163 } 175 }
164 176
165 int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ... ) { 177 int cx_sprintf_sa(
178 const CxAllocator *alloc,
179 char *buf,
180 size_t *len,
181 char **str,
182 const char *fmt,
183 ...
184 ) {
166 va_list ap; 185 va_list ap;
167 va_start(ap, fmt); 186 va_start(ap, fmt);
168 int ret = cx_vsprintf_sa(alloc, buf, len, str, fmt, ap); 187 int ret = cx_vsprintf_sa(alloc, buf, len, str, fmt, ap);
169 va_end(ap); 188 va_end(ap);
170 return ret; 189 return ret;
171 } 190 }
172 191
173 int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap) { 192 int cx_vsprintf_sa(
193 const CxAllocator *alloc,
194 char *buf,
195 size_t *len,
196 char **str,
197 const char *fmt,
198 va_list ap
199 ) {
174 va_list ap2; 200 va_list ap2;
175 va_copy(ap2, ap); 201 va_copy(ap2, ap);
176 int ret = vsnprintf(buf, *len, fmt, ap); 202 int ret = vsnprintf(buf, *len, fmt, ap);
177 *str = buf; 203 *str = buf;
178 if ((unsigned) ret >= *len) { 204 if ((unsigned) ret >= *len) {

mercurial