]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Add %e modifier for GError clever printing.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Mar 2015 15:26:57 +0000 (15:26 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Mar 2015 15:26:57 +0000 (15:26 +0000)
src/libutil/printf.c
src/libutil/printf.h

index 5a04dc432535fae45c4884d8549b5ff5766c7239..0cd043058f064b2b34b9be06b021de528d6736e5 100644 (file)
@@ -339,6 +339,7 @@ rspamd_vprintf_common (rspamd_printf_append_func func,
        guint width, sign, hex, humanize, bytes, frac_width, i;
        rspamd_fstring_t *v;
        GString *gs;
+       GError *err;
        gboolean bv;
 
        while (*fmt) {
@@ -462,6 +463,24 @@ rspamd_vprintf_common (rspamd_printf_append_func func,
 
                                continue;
 
+                       case 'e':
+                               err = va_arg (args, GError *);
+
+                               if (err) {
+                                       p = err->message;
+
+                                       if (p == NULL) {
+                                               p = "(NULL)";
+                                       }
+                               }
+                               else {
+                                       p = "unknown error";
+                               }
+
+                               slen = strlen (p);
+                               RSPAMD_PRINTF_APPEND (p, slen);
+                               break;
+
                        case 's':
                                p = va_arg (args, gchar *);
                                if (p == NULL) {
index 2bc421143e0f1f3c2e8f60f6efe71520d913bc35..d0db483d9d74007cf38f178a5c8268717acbff0a 100644 (file)
@@ -52,6 +52,7 @@
  *     %Z                                                  '\0'
  *     %N                                                  '\n'
  *     %c                                                  gchar
+ *     %e                          GError *
  *     %%                                                  %
  *
  */