add printf data sender
diff --git a/libtelnet.c b/libtelnet.c
index cf786a9..8ac3a31 100644
--- a/libtelnet.c
+++ b/libtelnet.c
@@ -855,3 +855,20 @@
_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 @@
/* 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) */