From f73319c0489e08e1277b80107729ac1f2ea8e7fd Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 7 Sep 2008 13:25:54 +0200 Subject: client: added client_printf() Based on client_puts(), client_printf() is the successor of fdprintf(). As soon as all fdprintf() callers have been rewritten to use client_printf(), we can remove fdprintf(). --- src/client.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/client.c') diff --git a/src/client.c b/src/client.c index e9cda12cb..fd0695cc3 100644 --- a/src/client.c +++ b/src/client.c @@ -797,3 +797,32 @@ void client_puts(struct client *client, const char *s) { client_write(client, s, strlen(s)); } + +void client_vprintf(struct client *client, const char *fmt, va_list args) +{ + va_list tmp; + int length; + char *buffer; + + va_copy(tmp, args); + length = vsnprintf(NULL, 0, fmt, tmp); + va_end(tmp); + + if (length <= 0) + /* wtf.. */ + return; + + buffer = xmalloc(length + 1); + vsnprintf(buffer, length + 1, fmt, args); + client_write(client, buffer, length); + free(buffer); +} + +mpd_fprintf void client_printf(struct client *client, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + client_vprintf(client, fmt, args); + va_end(args); +} -- cgit v1.2.3