Provide an up to date version of g_base64_decode() for older GLib.
authorAndrej Kacian <ticho@claws-mail.org>
Thu, 13 Aug 2015 18:24:48 +0000 (20:24 +0200)
committerAndrej Kacian <ticho@claws-mail.org>
Thu, 13 Aug 2015 18:24:48 +0000 (20:24 +0200)
Patch by Jean Diraison, closes bug #3473.

src/common/utils.c
src/common/utils.h
src/unmime.c

index b753ac8..64ca25a 100644 (file)
@@ -89,6 +89,24 @@ static gboolean debug_mode = FALSE;
 static GSList *tempfiles=NULL;
 #endif
 
+#if !GLIB_CHECK_VERSION(2, 26, 0)
+guchar *g_base64_decode_wa(const gchar *text, gsize *out_len)
+{
+       guchar *ret;
+       gsize input_length;
+       gint state = 0;
+       guint save = 0;
+
+       input_length = strlen(text);
+
+       ret = g_malloc0((input_length / 4) * 3 + 1);
+
+       *out_len = g_base64_decode_step(text, input_length, ret, &state, &save);
+
+       return ret;
+}
+#endif
+
 /* Return true if we are running as root.  This function should beused
    instead of getuid () == 0.  */
 gboolean superuser_p (void)
index 3771d45..0a38d34 100644 (file)
@@ -75,6 +75,11 @@ typedef gint64 goffset;
   #define HAVE_U32_TYPEDEF
 #endif
 
+#if !GLIB_CHECK_VERSION(2, 26, 0)
+#define g_base64_decode(t,l)   g_base64_decode_wa((t),(l))
+guchar *g_base64_decode_wa(const gchar *text, gsize *out_len);
+#endif
+
 #if !GLIB_CHECK_VERSION(2, 25, 0)
 # ifdef G_OS_WIN32
        typedef _g_stat_struct GStatBuf;
index e9588e3..424bde9 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <ctype.h>
 
+#include "utils.h"
 #include "codeconv.h"
 #include "quoted-printable.h"