<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>fix_purple/glib/gstdio.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -29,6 +29,9 @@ CFLAGS+=-Wall # $(EXTRA_WARNINGS)
 
 override CFLAGS+=-I. -DHAVE_LIBPURPLE
 
+# For glib &lt; 2.6 support (libpurple maniacs)
+FALLBACK_CFLAGS+=-I./fix_purple
+
 purpledir=$(DESTDIR)/$(PURPLE_PREFIX)/lib/purple-2
 
 objects = \
@@ -107,7 +110,7 @@ Q = @
 endif
 
 $(lib): $(objects)
-$(lib): CFLAGS := $(CFLAGS) $(PURPLE_CFLAGS) $(GOBJECT_CFLAGS)
+$(lib): CFLAGS := $(CFLAGS) $(PURPLE_CFLAGS) $(GOBJECT_CFLAGS) $(FALLBACK_CFLAGS)
 $(lib): LIBS := $(PURPLE_LIBS) $(GOBJECT_LIBS)
 
 %.dylib::</diff>
      <filename>Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -34,6 +34,9 @@
 #include &lt;glib/gstdio.h&gt;
 #include &lt;string.h&gt;
 
+/* libpurple stuff. */
+#include &quot;fix_purple.h&quot;
+
 /**************************************************************************
  * SLP Message
  **************************************************************************/</diff>
      <filename>cvr/slpmsg.c</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,136 @@
 #include &quot;fix_purple_win32.h&quot;
 #include &lt;connection.h&gt;
 
+/*
+ * Copyright 2004 Tor Lillqvist
+ *
+ * This code is licenced under LGPLv2+
+ */
+#if !GLIB_CHECK_VERSION(2,6,0)
+
+#define G_STDIO_NO_WRAP_ON_UNIX
+
+#include &lt;sys/types.h&gt;
+#include &lt;sys/stat.h&gt;
+#include &lt;fcntl.h&gt;
+
+#ifdef HAVE_UNISTD_H
+#include &lt;unistd.h&gt;
+#endif
+
+#ifdef G_OS_WIN32
+#include &lt;windows.h&gt;
+#include &lt;errno.h&gt;
+#include &lt;wchar.h&gt;
+#include &lt;direct.h&gt;
+#include &lt;io.h&gt;
+#endif
+
+#include &lt;glib/gstdio.h&gt;
+
+int
+g_open (const gchar *filename,
+        int flags,
+        int mode)
+{
+#ifdef G_OS_WIN32
+    wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+    int retval;
+    int save_errno;
+
+    if (wfilename == NULL)
+    {
+        errno = EINVAL;
+        return -1;
+    }
+
+    retval = _wopen (wfilename, flags, mode);
+    save_errno = errno;
+
+    g_free (wfilename);
+
+    errno = save_errno;
+    return retval;
+#else
+    return open (filename, flags, mode);
+#endif
+}
+
+int
+g_stat (const gchar *filename,
+        struct stat *buf)
+{
+#ifdef G_OS_WIN32
+    wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+    int retval;
+    int save_errno;
+    int len;
+
+    if (wfilename == NULL)
+    {
+        errno = EINVAL;
+        return -1;
+    }
+
+    len = wcslen (wfilename);
+    while (len &gt; 0 &amp;&amp; G_IS_DIR_SEPARATOR (wfilename[len-1]))
+        len--;
+    if (len &gt; 0 &amp;&amp;
+        (!g_path_is_absolute (filename) || len &gt; g_path_skip_root (filename) - filename))
+        wfilename[len] = '\0';
+
+    retval = _wstat (wfilename, (struct _stat *) buf);
+    save_errno = errno;
+
+    g_free (wfilename);
+
+    errno = save_errno;
+    return retval;
+#else
+    return stat (filename, buf);
+#endif
+}
+
+FILE *
+g_fopen (const gchar *filename,
+         const gchar *mode)
+{
+#ifdef G_OS_WIN32
+    wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+    wchar_t *wmode;
+    FILE *retval;
+    int save_errno;
+
+    if (wfilename == NULL)
+    {
+        errno = EINVAL;
+        return NULL;
+    }
+
+    wmode = g_utf8_to_utf16 (mode, -1, NULL, NULL, NULL);
+
+    if (wmode == NULL)
+    {
+        g_free (wfilename);
+        errno = EINVAL;
+        return NULL;
+    }
+
+    retval = _wfopen (wfilename, wmode);
+    save_errno = errno;
+
+    g_free (wfilename);
+    g_free (wmode);
+
+    errno = save_errno;
+    return retval;
+#else
+    return fopen (filename, mode);
+#endif
+}
+
+#endif /* !GLIB_CHECK_VERSION(2,6,0) */
+
 void
 purple_buddy_set_displayname (PurpleConnection *gc,
                               const gchar *who,</diff>
      <filename>fix_purple.c</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,16 @@ struct _PurpleConnection;
 
 #include &lt;glib.h&gt;
 
+#if !GLIB_CHECK_VERSION(2,3,1)
+
+#if GLIB_SIZEOF_LONG == 8
+#define G_GSIZE_FORMAT &quot;lu&quot;
+#else
+#define G_GSIZE_FORMAT &quot;u&quot;
+#endif
+
+#endif /* !GLIB_CHECK_VERSION(2,3,1) */
+
 void purple_buddy_set_displayname (struct _PurpleConnection *gc, const gchar *who, const gchar *value);
 void purple_buddy_set_nickname (struct _PurpleConnection *gc, const gchar *who, const gchar *value);
 </diff>
      <filename>fix_purple.h</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>30883c80ead03889f8e93096a9976d31cc1b841d</id>
    </parent>
  </parents>
  <author>
    <name>Felipe Contreras</name>
    <email>felipe.contreras@gmail.com</email>
  </author>
  <url>http://github.com/felipec/msn-pecan/commit/dc4d3bc383a9a24ee2fdb184f2ef578fe4361269</url>
  <id>dc4d3bc383a9a24ee2fdb184f2ef578fe4361269</id>
  <committed-date>2008-06-12T15:00:51-07:00</committed-date>
  <authored-date>2008-06-12T14:59:56-07:00</authored-date>
  <message>Add support for glib &lt; 2.6.

For the record; Pidgin guys are crazy.</message>
  <tree>6dee607d62c9049566b72f4279041ec8a91faf46</tree>
  <committer>
    <name>Felipe Contreras</name>
    <email>felipe.contreras@gmail.com</email>
  </committer>
</commit>
