]> source.dussan.org Git - rspamd.git/commitdiff
Add printing to rspamd_fstring_t.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 6 Oct 2015 16:11:56 +0000 (17:11 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 6 Oct 2015 16:11:56 +0000 (17:11 +0100)
src/libutil/printf.c
src/libutil/printf.h

index 9204060b2a0bb332e5787451a38e227459aa037d..345682f2879bc784b3b06ade0d9625de449d140d 100644 (file)
@@ -219,6 +219,18 @@ rspamd_printf_append_gstring (const gchar *buf, glong buflen, gpointer ud)
        return buflen;
 }
 
+static glong
+rspamd_printf_append_fstring (const gchar *buf, glong buflen, gpointer ud)
+{
+       rspamd_fstring_t **dst = ud;
+
+       if (buflen > 0) {
+               *dst = rspamd_fstring_append (*dst, buf, buflen);
+       }
+
+       return buflen;
+}
+
 glong
 rspamd_fprintf (FILE *f, const gchar *fmt, ...)
 {
@@ -307,6 +319,25 @@ rspamd_vprintf_gstring (GString *s, const gchar *fmt, va_list args)
        return rspamd_vprintf_common (rspamd_printf_append_gstring, s, fmt, args);
 }
 
+glong
+rspamd_printf_fstring (rspamd_fstring_t **s, const gchar *fmt, ...)
+{
+       va_list args;
+       glong r;
+
+       va_start (args, fmt);
+       r = rspamd_vprintf_fstring (s, fmt, args);
+       va_end (args);
+
+       return r;
+}
+
+glong
+rspamd_vprintf_fstring (rspamd_fstring_t **s, const gchar *fmt, va_list args)
+{
+       return rspamd_vprintf_common (rspamd_printf_append_fstring, s, fmt, args);
+}
+
 #define RSPAMD_PRINTF_APPEND(buf, len)                                         \
        do {                                                                       \
                RSPAMD_PRINTF_APPEND_BUF(buf, len);                                    \
index 8cd699212d019dd9d8dcbc87d9b7145fe13c1dff..ea73cf0a0f4665c23c888200574420c4ca370457 100644 (file)
@@ -26,6 +26,7 @@
 #define PRINTF_H_
 
 #include "config.h"
+#include "fstring.h"
 
 /*
  * supported formats:
@@ -78,6 +79,9 @@ gchar * rspamd_vsnprintf (gchar *buf, glong max, const gchar *fmt,
 glong rspamd_printf_gstring (GString *s, const gchar *fmt, ...);
 glong rspamd_vprintf_gstring (GString *s, const gchar *fmt, va_list args);
 
+glong rspamd_printf_fstring (rspamd_fstring_t **s, const gchar *fmt, ...);
+glong rspamd_vprintf_fstring (rspamd_fstring_t **s, const gchar *fmt, va_list args);
+
 glong rspamd_vprintf_common (rspamd_printf_append_func func,
        gpointer apd,
        const gchar *fmt,