Commit f73319c0 authored by Max Kellermann's avatar Max Kellermann

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().
parent 33aec0d6
...@@ -797,3 +797,32 @@ void client_puts(struct client *client, const char *s) ...@@ -797,3 +797,32 @@ void client_puts(struct client *client, const char *s)
{ {
client_write(client, s, strlen(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);
}
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#define INTERFACE_H #define INTERFACE_H
#include "os_compat.h" #include "os_compat.h"
#include "gcc.h"
struct client; struct client;
...@@ -49,6 +50,16 @@ void client_write(struct client *client, const char *data, size_t length); ...@@ -49,6 +50,16 @@ void client_write(struct client *client, const char *data, size_t length);
*/ */
void client_puts(struct client *client, const char *s); void client_puts(struct client *client, const char *s);
/**
* Write a printf-like formatted string to the client.
*/
void client_vprintf(struct client *client, const char *fmt, va_list args);
/**
* Write a printf-like formatted string to the client.
*/
mpd_fprintf void client_printf(struct client *client, const char *fmt, ...);
int client_print(int fd, const char *buffer, size_t len); int client_print(int fd, const char *buffer, size_t len);
#endif #endif
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