Commit b9fead4d authored by Sergey Lyubka's avatar Sergey Lyubka

Merge pull request #525 from NickCis/mg_vprintf

Adding mg_vprintf and mg_vprintf_data.
parents c6a04e17 c839a61f
...@@ -1951,13 +1951,21 @@ static void write_chunk(struct connection *conn, const char *buf, int len) { ...@@ -1951,13 +1951,21 @@ static void write_chunk(struct connection *conn, const char *buf, int len) {
} }
size_t mg_printf(struct mg_connection *conn, const char *fmt, ...) { size_t mg_printf(struct mg_connection *conn, const char *fmt, ...) {
struct connection *c = MG_CONN_2_CONN(conn);
va_list ap; va_list ap;
int ret;
va_start(ap, fmt); va_start(ap, fmt);
ns_vprintf(c->ns_conn, fmt, ap); ret = mg_vprintf(conn, fmt, ap);
va_end(ap); va_end(ap);
return ret;
}
size_t mg_vprintf(struct mg_connection *conn, const char *fmt, va_list ap) {
struct connection *c = MG_CONN_2_CONN(conn);
ns_vprintf(c->ns_conn, fmt, ap);
return c->ns_conn->send_iobuf.len; return c->ns_conn->send_iobuf.len;
} }
...@@ -2790,16 +2798,24 @@ size_t mg_send_data(struct mg_connection *c, const void *data, int data_len) { ...@@ -2790,16 +2798,24 @@ size_t mg_send_data(struct mg_connection *c, const void *data, int data_len) {
} }
size_t mg_printf_data(struct mg_connection *c, const char *fmt, ...) { size_t mg_printf_data(struct mg_connection *c, const char *fmt, ...) {
struct connection *conn = MG_CONN_2_CONN(c);
va_list ap; va_list ap;
int ret;
va_start(ap, fmt);
ret = mg_vprintf_data(c, fmt, ap);
va_end(ap);
return ret;
}
size_t mg_vprintf_data(struct mg_connection *c, const char *fmt, va_list ap) {
struct connection *conn = MG_CONN_2_CONN(c);
int len; int len;
char mem[IOBUF_SIZE], *buf = mem; char mem[IOBUF_SIZE], *buf = mem;
terminate_headers(c); terminate_headers(c);
va_start(ap, fmt);
len = ns_avprintf(&buf, sizeof(mem), fmt, ap); len = ns_avprintf(&buf, sizeof(mem), fmt, ap);
va_end(ap);
if (len >= 0) { if (len >= 0) {
write_chunk((struct connection *) conn, buf, len); write_chunk((struct connection *) conn, buf, len);
......
...@@ -104,8 +104,10 @@ void mg_send_status(struct mg_connection *, int status_code); ...@@ -104,8 +104,10 @@ void mg_send_status(struct mg_connection *, int status_code);
void mg_send_header(struct mg_connection *, const char *name, const char *val); void mg_send_header(struct mg_connection *, const char *name, const char *val);
size_t mg_send_data(struct mg_connection *, const void *data, int data_len); size_t mg_send_data(struct mg_connection *, const void *data, int data_len);
size_t mg_printf_data(struct mg_connection *, const char *format, ...); size_t mg_printf_data(struct mg_connection *, const char *format, ...);
size_t mg_vprintf_data(struct mg_connection *, const char *format, va_list ap);
size_t mg_write(struct mg_connection *, const void *buf, size_t len); size_t mg_write(struct mg_connection *, const void *buf, size_t len);
size_t mg_printf(struct mg_connection *conn, const char *fmt, ...); size_t mg_printf(struct mg_connection *conn, const char *fmt, ...);
size_t mg_vprintf(struct mg_connection *conn, const char *fmt, va_list ap);
size_t mg_websocket_write(struct mg_connection *, int opcode, size_t mg_websocket_write(struct mg_connection *, int opcode,
const char *data, size_t data_len); const char *data, size_t data_len);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment