| 2174 | } |
| 2175 | |
| 2176 | AP_DECLARE(int) ap_vrprintf(request_rec *r, const char *fmt, va_list va) |
| 2177 | { |
| 2178 | int written; |
| 2179 | struct ap_vrprintf_data vd; |
| 2180 | char vrprintf_buf[AP_IOBUFSIZE]; |
| 2181 | |
| 2182 | vd.vbuff.curpos = vrprintf_buf; |
| 2183 | vd.vbuff.endpos = vrprintf_buf + AP_IOBUFSIZE; |
| 2184 | vd.r = r; |
| 2185 | vd.buff = vrprintf_buf; |
| 2186 | |
| 2187 | if (r->connection->aborted) |
| 2188 | return -1; |
| 2189 | |
| 2190 | written = apr_vformatter(r_flush, &vd.vbuff, fmt, va); |
| 2191 | |
| 2192 | if (written != -1) { |
| 2193 | int n = vd.vbuff.curpos - vrprintf_buf; |
| 2194 | |
| 2195 | /* last call to buffer_output, to finish clearing the buffer */ |
| 2196 | if (buffer_output(r, vrprintf_buf, n) != APR_SUCCESS) |
| 2197 | return -1; |
| 2198 | |
| 2199 | written += n; |
| 2200 | } |
| 2201 | |
| 2202 | return written; |
| 2203 | } |
| 2204 | |
| 2205 | AP_DECLARE_NONSTD(int) ap_rprintf(request_rec *r, const char *fmt, ...) |
| 2206 | { |
no test coverage detected