From d58f49f03af0015ef2e0df608b78c6aff9fb45b0 Mon Sep 17 00:00:00 2001 From: Sean Middleditch Date: Mon, 16 Mar 2009 12:49:35 -0400 Subject: [PATCH] add printf data sender --- libtelnet.c | 17 +++++++++++++++++ libtelnet.h | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/libtelnet.c b/libtelnet.c index cf786a9..8ac3a31 100644 --- a/libtelnet.c +++ b/libtelnet.c @@ -855,3 +855,20 @@ void libtelnet_begin_compress2(libtelnet_t *telnet) { _event(telnet, LIBTELNET_EV_COMPRESS, 1, 0, 0, 0); #endif /* HAVE_ZLIB */ } + +/* send formatted data through libtelnet_send_data */ +int libtelnet_send_printf(libtelnet_t *telnet, const char *fmt, ...) { + char buffer[4096]; + va_list va; + int rs; + + /* format */ + va_start(va, fmt); + rs = vsnprintf(buffer, sizeof(buffer), fmt, va); + va_end(va); + + /* send */ + libtelnet_send_data(telnet, (unsigned char *)buffer, rs); + + return rs; +} diff --git a/libtelnet.h b/libtelnet.h index e27dc3e..1e6f837 100644 --- a/libtelnet.h +++ b/libtelnet.h @@ -228,4 +228,13 @@ extern void libtelnet_send_subnegotiation(libtelnet_t *telnet, /* begin sending compressed data (server only) */ extern void libtelnet_begin_compress2(libtelnet_t *telnet); +/* send formatted data (through libtelnet_send_data) */ +#ifdef __GNUC__ +# define LIBTELNET_GNU_PRINTF(f,a) __attribute__((printf(f, a))) +#else +# define LIBTELNET_GNU_PRINTF(f,a) +#endif + +extern int libtelnet_send_printf(libtelnet_t *telnet, const char *fmt, ...); + #endif /* !defined(LIBTELNET_INCLUDE) */