diff options
author | Max Kellermann <max@duempel.org> | 2013-10-19 16:58:45 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-10-19 17:24:21 +0200 |
commit | 5dc4cbdf82191bc29afc414ac10204bd17275d69 (patch) | |
tree | 76ad2e5c60de0e3f504a84cd1d6cff912153adbf /src/ClientWrite.cxx | |
parent | 1434e5a22e82b4176c24c536a91eefa183b78516 (diff) | |
download | mpd-5dc4cbdf82191bc29afc414ac10204bd17275d69.tar.gz mpd-5dc4cbdf82191bc29afc414ac10204bd17275d69.tar.xz mpd-5dc4cbdf82191bc29afc414ac10204bd17275d69.zip |
util/FormatString: new library to replace g_strdup_printf()
Diffstat (limited to '')
-rw-r--r-- | src/ClientWrite.cxx | 35 |
1 files changed, 4 insertions, 31 deletions
diff --git a/src/ClientWrite.cxx b/src/ClientWrite.cxx index ebed5f570..547f72bb5 100644 --- a/src/ClientWrite.cxx +++ b/src/ClientWrite.cxx @@ -19,11 +19,9 @@ #include "config.h" #include "ClientInternal.hxx" - -#include <glib.h> +#include "util/FormatString.hxx" #include <string.h> -#include <stdio.h> /** * Write a block of data to the client. @@ -47,34 +45,9 @@ client_puts(Client *client, const char *s) void client_vprintf(Client *client, const char *fmt, va_list args) { -#ifndef WIN32 - va_list tmp; - int length; - - va_copy(tmp, args); - length = vsnprintf(NULL, 0, fmt, tmp); - va_end(tmp); - - if (length <= 0) - /* wtf.. */ - return; - - char *buffer = (char *)g_malloc(length + 1); - vsnprintf(buffer, length + 1, fmt, args); - client_write(client, buffer, length); - g_free(buffer); -#else - /* On mingw32, snprintf() expects a 64 bit integer instead of - a "long int" for "%li". This is not consistent with our - expectation, so we're using plain sprintf() here, hoping - the static buffer is large enough. Sorry for this hack, - but WIN32 development is so painful, I'm not in the mood to - do it properly now. */ - - static char buffer[4096]; - vsprintf(buffer, fmt, args); - client_write(client, buffer, strlen(buffer)); -#endif + char *p = FormatNewV(fmt, args); + client_write(client, p, strlen(p)); + delete[] p; } void |