r15400 - gnucash/trunk - Raise dependencies: GLib 2.6, Pango 1.8, GTK+ 2.6.

Andreas Köhler andi5 at cvs.gnucash.org
Sat Jan 20 10:22:10 EST 2007


Author: andi5
Date: 2007-01-20 10:21:35 -0500 (Sat, 20 Jan 2007)
New Revision: 15400
Trac: http://svn.gnucash.org/trac/changeset/15400

Removed:
   gnucash/trunk/lib/glib26/Makefile.am
   gnucash/trunk/lib/glib26/dummy.c
   gnucash/trunk/lib/glib26/gkeyfile.c
   gnucash/trunk/lib/glib26/gkeyfile.h
   gnucash/trunk/lib/glib26/gutils26.c
   gnucash/trunk/lib/glib26/gutils26.h
   gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.h
   gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.h
   gnucash/trunk/src/gtk-compat.h
Modified:
   gnucash/trunk/configure.in
   gnucash/trunk/goffice-config.h.in
   gnucash/trunk/gsf-config.h.in
   gnucash/trunk/lib/Makefile.am
   gnucash/trunk/lib/goffice-0.0.4/goffice/Makefile.am
   gnucash/trunk/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-chart.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-object.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-plot.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/utils/datetime.c
   gnucash/trunk/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/Makefile.am
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-memory.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c
   gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-utils.c
   gnucash/trunk/lib/libgsf-1.12.3/tests/test-cp-zip.c
   gnucash/trunk/src/Makefile.am
   gnucash/trunk/src/app-utils/file-utils.h
   gnucash/trunk/src/bin/gnucash-bin.c
   gnucash/trunk/src/business/business-gnome/dialog-invoice.c
   gnucash/trunk/src/core-utils/gnc-gkeyfile-utils.h
   gnucash/trunk/src/core-utils/gnc-gtk-utils.c
   gnucash/trunk/src/core-utils/gnc-gtk-utils.h
   gnucash/trunk/src/engine/gnc-filepath-utils.c
   gnucash/trunk/src/gnome-utils/dialog-account.c
   gnucash/trunk/src/gnome-utils/dialog-options.c
   gnucash/trunk/src/gnome-utils/dialog-utils.c
   gnucash/trunk/src/gnome-utils/dialog-utils.h
   gnucash/trunk/src/gnome-utils/gnc-main-window.c
   gnucash/trunk/src/gnome-utils/gnc-plugin-file-history.c
   gnucash/trunk/src/gnome-utils/gnc-plugin-page.h
   gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
   gnucash/trunk/src/gnome-utils/gnc-tree-view.c
   gnucash/trunk/src/gnome-utils/gnc-tree-view.h
   gnucash/trunk/src/gnome-utils/gnctreemodelsort.c
   gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c
   gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
   gnucash/trunk/src/gnome/gnc-plugin-page-register.c
   gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
   gnucash/trunk/src/gnome/window-reconcile.c
   gnucash/trunk/src/import-export/hbci/dialog-hbcitrans.c
   gnucash/trunk/src/register/register-gnome/gnucash-item-list.c
   gnucash/trunk/src/report/report-gnome/gnc-plugin-page-report.c
Log:
Raise dependencies: GLib 2.6, Pango 1.8, GTK+ 2.6.

Ask for GLib 2.6 and GTK+ 2.6. Let the included GOffice 0.0.4 and LibGSF
1.12.3 use their native base dependencies. Remove all #ifdefs and
compatibility code that were necessary to make GnuCash, GOffice and
LibGSF compile on an older setup (GLib 2.4, Pango 1.6, GTK+ 2.4).


Modified: gnucash/trunk/configure.in
===================================================================
--- gnucash/trunk/configure.in	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/configure.in	2007-01-20 15:21:35 UTC (rev 15400)
@@ -182,8 +182,8 @@
 ### --------------------------------------------------------------------------
 ### Glib checks..
 
-AM_PATH_GLIB_2_0(2.4.0,,AC_MSG_ERROR([
-*** GLIB >= 2.4 is required to build Gnucash; please make sure you have the
+AM_PATH_GLIB_2_0(2.6.0,,AC_MSG_ERROR([
+*** GLIB >= 2.6 is required to build Gnucash; please make sure you have the
 *** development headers installed. The latest version of GLIB is
 *** always available at ftp://ftp.gnome.org/pub/gnome/sources/glib/.]),
 	gthread gobject gmodule)
@@ -193,21 +193,6 @@
   AC_MSG_ERROR([Cannot find glib. Check config.log])
 fi
 
-AC_MSG_CHECKING(for GLIB - version >= 2.6.0)
-if $PKG_CONFIG 'glib-2.0 >= 2.6.0'
-then
-  AC_MSG_RESULT(yes)
-  AC_DEFINE(HAVE_GLIB26,1,[System has glib 2.6.0 or better])
-  HAVE_GLIB26=yes
-else
-  GLIB24_LIBS="$GLIB_LIBS"
-  GLIB_LIBS="\${top_builddir}/lib/glib26/libgncglib.la $GLIB_LIBS"
-  GLIB_CFLAGS="-I\${top_srcdir}/lib/glib26 $GLIB_CFLAGS"
-  AC_MSG_RESULT(no)
-  AC_SUBST(GLIB24_LIBS)
-fi
-AM_CONDITIONAL(HAVE_GLIB26, test "x$HAVE_GLIB26" = "xyes" )
-
 AC_MSG_CHECKING(for GLIB - version >= 2.9.0)
 if $PKG_CONFIG 'glib-2.0 >= 2.9.0'
 then
@@ -1014,7 +999,7 @@
     fi
     GNOME_COMPILE_WARNINGS
 
-    PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4)
+    PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6)
     AS_SCRUB_INCLUDE(GTK_CFLAGS)
     AC_SUBST(GTK_CFLAGS)
     AC_SUBST(GTK_LIBS)
@@ -1115,18 +1100,6 @@
 ### Only test this if we're building the GUI
 if test x${gnc_build_gui} = xtrue ;
 then
-  AC_MSG_CHECKING(for GTK - version >= 2.6.0)
-  if $PKG_CONFIG 'gtk+-2.0 >= 2.6.0'
-  then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_GTK26,1,[System has gtk 2.6.0 or better])
-    HAVE_GTK26=yes
-  else
-    AC_MSG_RESULT(no)
-  fi
-  AM_CONDITIONAL(HAVE_GTK26, test "x$HAVE_GTK26" = "xyes" )
-  
-  
   AC_MSG_CHECKING(for GTK - version >= 2.10.0)
   if $PKG_CONFIG 'gtk+-2.0 >= 2.10.0'
   then
@@ -1139,18 +1112,6 @@
   AM_CONDITIONAL(HAVE_GTK_2_10, test "x$HAVE_GTK_2_10" = "xyes" )
   
   
-  AC_MSG_CHECKING(for pango version >= 1.8.0)
-  if $PKG_CONFIG 'pango >= 1.8.0'
-  then
-    AC_MSG_RESULT(yes)
-    AC_DEFINE(HAVE_PANGO18,1,[System has pango 1.8.0 or better])
-    HAVE_PANGO18=yes
-  else
-    AC_MSG_RESULT(no)
-  fi
-  AM_CONDITIONAL(HAVE_PANGO18, test "x$HAVE_PANGO18" = "xyes" )
-  
-  
   dnl @@fixme 
   dnl use both PKG_CHECK_MODULES and `$PKG_CONFIG`; the first importantly sets
   dnl MUMBLE_{LIBS,CFLAGS}...
@@ -1245,8 +1206,8 @@
   ])
   dnl Modules common to libgsf and libgsf-gnome
   libgsf_reqs="
-      gobject-2.0 >= 2.4.0
-      glib-2.0 >= 2.4.0
+      gobject-2.0 >= 2.6.0
+      glib-2.0 >= 2.6.0
       libxml-2.0 >= 2.4.16
   "
   dnl Modules required for libgsf-gnome
@@ -1523,15 +1484,15 @@
   dnl *****************************
   #	libgsf-1		>= 1.12.2
   goffice_reqs="
-  	glib-2.0		>= 2.4.7
-  	gobject-2.0		>= 2.4.7
-  	gmodule-2.0		>= 2.4.7
+  	glib-2.0		>= 2.6.4
+  	gobject-2.0		>= 2.6.4
+  	gmodule-2.0		>= 2.6.4
   	libxml-2.0		>= 2.4.12
-  	pango			>= 1.6.0
-  	pangoft2		>= 1.6.0
+  	pango			>= 1.8.1
+  	pangoft2		>= 1.8.1
   "
   goffice_gtk_reqs="
-  	gtk+-2.0		>= 2.4.13
+  	gtk+-2.0		>= 2.6.0
   	libglade-2.0		>= 2.3.6
   	libgnomeprint-2.2	>= 2.8.0
   	libart-2.0		>= 2.3.11
@@ -1829,9 +1790,7 @@
   ### ------------------------------------------------------------------------
 else
   ### A bunch of am conditionals that need to be set
-  AM_CONDITIONAL(HAVE_GTK26, false )
   AM_CONDITIONAL(HAVE_GTK_2_10, false)
-  AM_CONDITIONAL(HAVE_PANGO18, false )
   AM_CONDITIONAL(HAVE_LIBGSF, false)
   AM_CONDITIONAL(HAVE_GOFFICE, false)
   AM_CONDITIONAL(WITH_LIBGSF_GNOME, false)
@@ -2091,7 +2050,6 @@
           doc/examples/Makefile
           intl-scm/Makefile
           lib/Makefile
-          lib/glib26/Makefile
           lib/guile-www/Makefile
           lib/srfi/Makefile
           lib/libc/Makefile

Modified: gnucash/trunk/goffice-config.h.in
===================================================================
--- gnucash/trunk/goffice-config.h.in	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/goffice-config.h.in	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,12 +1,5 @@
 /* goffice/goffice-config.h.in.  Generated from configure.in by autoheader.  */
 
-/* Conditionally include >2.4 pieces we use. */
-#undef HAVE_GLIB26
-#undef HAVE_GTK26
-
-/* Conditionally work around exposed-in-1.8-functionality. */
-#undef HAVE_PANGO18
-
 /* always defined to indicate that i18n is enabled */
 #undef ENABLE_NLS
 

Modified: gnucash/trunk/gsf-config.h.in
===================================================================
--- gnucash/trunk/gsf-config.h.in	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/gsf-config.h.in	2007-01-20 15:21:35 UTC (rev 15400)
@@ -9,9 +9,6 @@
 /* Define to 1 if you have the `bind_textdomain_codeset' function. */
 #undef HAVE_BIND_TEXTDOMAIN_CODESET
 
-/* Conditionally include glib-2.0 > 2.4 functionality. */
-#undef HAVE_GLIB26
-
 /* Is bzip2 available and enabled */
 #undef HAVE_BZ2
 

Modified: gnucash/trunk/lib/Makefile.am
===================================================================
--- gnucash/trunk/lib/Makefile.am	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/Makefile.am	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,5 +1,5 @@
-SUBDIRS = libc glib26 guile-www srfi
-DIST_SUBDIRS = libc glib26 guile-www srfi libgsf-1.12.3 goffice-0.0.4 libqof
+SUBDIRS = libc guile-www srfi
+DIST_SUBDIRS = libc guile-www srfi libgsf-1.12.3 goffice-0.0.4 libqof
 
 if !HAVE_GOFFICE
 if !HAVE_LIBGSF

Deleted: gnucash/trunk/lib/glib26/Makefile.am
===================================================================
--- gnucash/trunk/lib/glib26/Makefile.am	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/Makefile.am	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,16 +0,0 @@
-noinst_LTLIBRARIES = libgncglib.la
-
-DUMMYSRCS=dummy.c
-REALSRCS=gkeyfile.c gkeyfile.h gutils26.c gutils26.h
-
-if HAVE_GLIB26
-libgncglib_la_SOURCES = $(DUMMYSRCS)
-else
-libgncglib_la_SOURCES = $(REALSRCS)
-endif
-
-libgncglib_la_LIBADD = ${GLIB24_LIBS}
-
-AM_CFLAGS = ${GLIB_CFLAGS}
-
-EXTRA_DIST=$(DUMMYSRCS) $(REALSRCS)

Deleted: gnucash/trunk/lib/glib26/dummy.c
===================================================================
--- gnucash/trunk/lib/glib26/dummy.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/dummy.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,6 +0,0 @@
-void g_key_file_dumy_function (void);
-
-void
-g_key_file_dumy_function (void)
-{
-}

Deleted: gnucash/trunk/lib/glib26/gkeyfile.c
===================================================================
--- gnucash/trunk/lib/glib26/gkeyfile.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/gkeyfile.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,3286 +0,0 @@
-/* gkeyfile.c - key file parser
- *
- *  Copyright 2004  Red Hat, Inc.  
- *
- * Written by Ray Strode <rstrode at redhat.com>
- *            Matthias Clasen <mclasen at redhat.com>
- *
- * GLib is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * GLib is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GLib; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- *   Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include "gkeyfile.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <locale.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef G_OS_WIN32
-#include <io.h>
-
-#ifndef S_ISREG
-#define S_ISREG(mode) ((mode)&_S_IFREG)
-#endif
-
-#endif  /* G_OS_WIN23 */
-
-/* Start hacks to make this file compile with glib 2.4 */
-#include "gutils26.h"
-#include <glib.h>
-#define g_open(X,Y,Z) open(X,Y,Z)
-#define _(X) X
-/* End hacks to make this file compile with glib 2.4 */
-
-#if 0
-#include "gconvert.h"
-#include "gdataset.h"
-#include "gerror.h"
-#include "gfileutils.h"
-#include "ghash.h"
-#include "glibintl.h"
-#include "glist.h"
-#include "gslist.h"
-#include "gmem.h"
-#include "gmessages.h"
-#include "gstdio.h"
-#include "gstring.h"
-#include "gstrfuncs.h"
-#include "gutils.h"
-
-#include "galias.h"
-#endif
-
-typedef struct _GKeyFileGroup GKeyFileGroup;
-
-struct _GKeyFile
-{
-  GList *groups;
-
-  GKeyFileGroup *start_group;
-  GKeyFileGroup *current_group;
-
-  GString *parse_buffer; /* Holds up to one line of not-yet-parsed data */
-
-  /* Used for sizing the output buffer during serialization
-   */
-  gsize approximate_size;
-
-  gchar list_separator;
-
-  GKeyFileFlags flags;
-};
-
-typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair;
-
-struct _GKeyFileGroup
-{
-  const gchar *name;  /* NULL for above first group (which will be comments) */
-
-  GKeyFileKeyValuePair *comment; /* Special comment that is stuck to the top of a group */
-
-  GList *key_value_pairs; 
-
-  /* Used in parallel with key_value_pairs for
-   * increased lookup performance
-   */
-  GHashTable *lookup_map;
-};
-
-struct _GKeyFileKeyValuePair
-{
-  gchar *key;  /* NULL for comments */
-  gchar *value;
-};
-
-static gint                  find_file_in_data_dirs            (const gchar            *file,
-								gchar                 **output_file,
-								gchar                ***data_dirs,
-								GError                **error);
-static gboolean              g_key_file_load_from_fd           (GKeyFile               *key_file,
-								gint                    fd,
-								GKeyFileFlags           flags,
-								GError                **error);
-static GList                *g_key_file_lookup_group_node      (GKeyFile               *key_file,
-			                                        const gchar            *group_name);
-static GKeyFileGroup        *g_key_file_lookup_group           (GKeyFile               *key_file,
-								const gchar            *group_name);
-
-static GList                *g_key_file_lookup_key_value_pair_node  (GKeyFile       *key_file,
-			                                             GKeyFileGroup  *group,
-                                                                     const gchar    *key);
-static GKeyFileKeyValuePair *g_key_file_lookup_key_value_pair       (GKeyFile       *key_file,
-                                                                     GKeyFileGroup  *group,
-                                                                     const gchar    *key);
-
-static void                  g_key_file_remove_group_node          (GKeyFile      *key_file,
-							  	    GList         *group_node);
-static void                  g_key_file_remove_key_value_pair_node (GKeyFile      *key_file,
-                                                                    GKeyFileGroup *group,
-                                                                    GList         *pair_node);
-
-static void                  g_key_file_add_key                (GKeyFile               *key_file,
-								GKeyFileGroup          *group,
-								const gchar            *key,
-								const gchar            *value);
-static void                  g_key_file_add_group              (GKeyFile               *key_file,
-								const gchar            *group_name);
-static void                  g_key_file_key_value_pair_free    (GKeyFileKeyValuePair   *pair);
-static gboolean              g_key_file_line_is_comment        (const gchar            *line);
-static gboolean              g_key_file_line_is_group          (const gchar            *line);
-static gboolean              g_key_file_line_is_key_value_pair (const gchar            *line);
-static gchar                *g_key_file_parse_value_as_string  (GKeyFile               *key_file,
-								const gchar            *value,
-								GSList                **separators,
-								GError                **error);
-static gchar                *g_key_file_parse_string_as_value  (GKeyFile               *key_file,
-								const gchar            *string,
-								gboolean                escape_separator);
-static gint                  g_key_file_parse_value_as_integer (GKeyFile               *key_file,
-								const gchar            *value,
-								GError                **error);
-static gchar                *g_key_file_parse_integer_as_value (GKeyFile               *key_file,
-								gint                    value);
-static gboolean              g_key_file_parse_value_as_boolean (GKeyFile               *key_file,
-								const gchar            *value,
-								GError                **error);
-static gchar                *g_key_file_parse_boolean_as_value (GKeyFile               *key_file,
-								gboolean                value);
-static gchar                *g_key_file_parse_value_as_comment (GKeyFile               *key_file,
-                                                                const gchar            *value);
-static gchar                *g_key_file_parse_comment_as_value (GKeyFile               *key_file,
-                                                                const gchar            *comment);
-static void                  g_key_file_parse_key_value_pair   (GKeyFile               *key_file,
-								const gchar            *line,
-								gsize                   length,
-								GError                **error);
-static void                  g_key_file_parse_comment          (GKeyFile               *key_file,
-								const gchar            *line,
-								gsize                   length,
-								GError                **error);
-static void                  g_key_file_parse_group            (GKeyFile               *key_file,
-								const gchar            *line,
-								gsize                   length,
-								GError                **error);
-static gchar                *key_get_locale                    (const gchar            *key);
-static void                  g_key_file_parse_data             (GKeyFile               *key_file,
-								const gchar            *data,
-								gsize                   length,
-								GError                **error);
-static void                  g_key_file_flush_parse_buffer     (GKeyFile               *key_file,
-								GError                **error);
-
-
-GQuark
-g_key_file_error_quark (void)
-{
-  static GQuark error_quark = 0;
-
-  if (error_quark == 0)
-    error_quark = g_quark_from_static_string ("g-key-file-error-quark");
-
-  return error_quark;
-}
-
-static void
-g_key_file_init (GKeyFile *key_file)
-{  
-  key_file->current_group = g_new0 (GKeyFileGroup, 1);
-  key_file->groups = g_list_prepend (NULL, key_file->current_group);
-  key_file->start_group = NULL;
-  key_file->parse_buffer = g_string_sized_new (128);
-  key_file->approximate_size = 0;
-  key_file->list_separator = ';';
-  key_file->flags = 0;
-}
-
-static void
-g_key_file_clear (GKeyFile *key_file)
-{
-  GList *tmp, *group_node;
-
-  if (key_file->parse_buffer)
-    g_string_free (key_file->parse_buffer, TRUE);
-
-  tmp = key_file->groups;
-  while (tmp != NULL)
-    {
-      group_node = tmp;
-      tmp = tmp->next;
-      g_key_file_remove_group_node (key_file, group_node);
-    }
-
-  g_assert (key_file->groups == NULL);
-}
-
-
-/**
- * g_key_file_new:
- *
- * Creates a new empty #GKeyFile object. Use g_key_file_load_from_file(),
- * g_key_file_load_from_data() or g_key_file_load_from_data_dirs() to
- * read an existing key file.
- *
- * Return value: an empty #GKeyFile.
- *
- * Since: 2.6
- **/
-GKeyFile *
-g_key_file_new (void)
-{
-  GKeyFile *key_file;
-
-  key_file = g_new0 (GKeyFile, 1);
-  g_key_file_init (key_file);
-
-  return key_file;
-}
-
-/**
- * g_key_file_set_list_separator:
- * @key_file: a #GKeyFile 
- * @separator: the separator
- *
- * Sets the character which is used to separate
- * values in lists. Typically ';' or ',' are used
- * as separators. The default list separator is ';'.
- *
- * Since: 2.6
- */
-void
-g_key_file_set_list_separator (GKeyFile *key_file,
-			       gchar     separator)
-{
-  key_file->list_separator = separator;
-}
-
-
-/* Iterates through all the directories in *dirs trying to
- * open file.  When it successfully locates and opens a file it
- * returns the file descriptor to the open file.  It also
- * outputs the absolute path of the file in output_file and
- * leaves the unchecked directories in *dirs.
- */
-static gint
-find_file_in_data_dirs (const gchar   *file,
-                        gchar        **output_file,
-                        gchar       ***dirs,
-                        GError       **error)
-{
-  gchar **data_dirs, *data_dir, *path;
-  gint fd;
-
-  path = NULL;
-  fd = -1;
-
-  if (dirs == NULL)
-    return fd;
-
-  data_dirs = *dirs;
-
-  while (data_dirs && (data_dir = *data_dirs) && fd < 0)
-    {
-      gchar *candidate_file, *sub_dir;
-
-      candidate_file = (gchar *) file;
-      sub_dir = g_strdup ("");
-      while (candidate_file != NULL && fd < 0)
-        {
-          gchar *p;
-
-          path = g_build_filename (data_dir, sub_dir,
-                                   candidate_file, NULL);
-
-          fd = g_open (path, O_RDONLY, 0);
-
-          if (fd < 0)
-            {
-              g_free (path);
-              path = NULL;
-            }
-
-          candidate_file = strchr (candidate_file, '-');
-
-          if (candidate_file == NULL)
-            break;
-
-          candidate_file++;
-
-          g_free (sub_dir);
-          sub_dir = g_strndup (file, candidate_file - file - 1);
-
-          for (p = sub_dir; *p != '\0'; p++)
-            {
-              if (*p == '-')
-                *p = G_DIR_SEPARATOR;
-            }
-        }
-      g_free (sub_dir);
-      data_dirs++;
-    }
-
-  *dirs = data_dirs;
-
-  if (fd < 0)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_NOT_FOUND,
-                   _("Valid key file could not be "
-                     "found in data dirs")); 
-    }
-
-  if (output_file != NULL && fd > 0)
-    *output_file = g_strdup (path);
-
-  g_free (path);
-
-  return fd;
-}
-
-static gboolean
-g_key_file_load_from_fd (GKeyFile       *key_file,
-			 gint            fd,
-			 GKeyFileFlags   flags,
-			 GError        **error)
-{
-  GError *key_file_error = NULL;
-  gsize bytes_read;
-  struct stat stat_buf;
-  gchar read_buf[4096];
-  
-  if (fstat (fd, &stat_buf) < 0)
-    {
-      g_set_error (error, G_FILE_ERROR,
-                   g_file_error_from_errno (errno),
-                   "%s", g_strerror (errno));
-      return FALSE;
-    }
-
-  if (!S_ISREG (stat_buf.st_mode))
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_PARSE,
-                   _("Not a regular file"));
-      return FALSE;
-    }
-
-  if (stat_buf.st_size == 0)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_PARSE,
-                   _("File is empty"));
-      return FALSE;
-    }
-
-  if (key_file->approximate_size > 0)
-    {
-      g_key_file_clear (key_file);
-      g_key_file_init (key_file);
-    }
-  key_file->flags = flags;
-
-  bytes_read = 0;
-  do
-    {
-      bytes_read = read (fd, read_buf, 4096);
-
-      if (bytes_read == 0)  /* End of File */
-        break;
-
-      if (bytes_read < 0)
-        {
-          if (errno == EINTR || errno == EAGAIN)
-            continue;
-
-          g_set_error (error, G_FILE_ERROR,
-                       g_file_error_from_errno (errno),
-                       "%s", g_strerror (errno));
-          return FALSE;
-        }
-
-      g_key_file_parse_data (key_file, 
-			     read_buf, bytes_read,
-			     &key_file_error);
-    }
-  while (!key_file_error);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  g_key_file_flush_parse_buffer (key_file, &key_file_error);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-/**
- * g_key_file_load_from_file:
- * @key_file: an empty #GKeyFile struct
- * @file: the path of a filename to load, in the GLib file name encoding
- * @flags: flags from #GKeyFileFlags
- * @error: return location for a #GError, or %NULL
- *
- * Loads a key file into an empty #GKeyFile structure.
- * If the file could not be loaded then %error is set to 
- * either a #GFileError or #GKeyFileError.
- *
- * Return value: %TRUE if a key file could be loaded, %FALSE othewise
- * Since: 2.6
- **/
-gboolean
-g_key_file_load_from_file (GKeyFile       *key_file,
-			   const gchar    *file,
-			   GKeyFileFlags   flags,
-			   GError        **error)
-{
-  GError *key_file_error = NULL;
-  gint fd;
-
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (file != NULL, FALSE);
-
-  fd = g_open (file, O_RDONLY, 0);
-
-  if (fd < 0)
-    {
-      g_set_error (error, G_FILE_ERROR,
-                   g_file_error_from_errno (errno),
-                   "%s", g_strerror (errno));
-      return FALSE;
-    }
-
-  g_key_file_load_from_fd (key_file, fd, flags, &key_file_error);
-  close (fd);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-/**
- * g_key_file_load_from_data:
- * @key_file: an empty #GKeyFile struct
- * @data: key file loaded in memory.
- * @length: the length of @data in bytes
- * @flags: flags from #GKeyFileFlags
- * @error: return location for a #GError, or %NULL
- *
- * Loads a key file from memory into an empty #GKeyFile structure.  If
- * the object cannot be created then %error is set to a
- * #GKeyFileError. 
- *
- * Return value: %TRUE if a key file could be loaded, %FALSE othewise
- * Since: 2.6
- **/
-gboolean
-g_key_file_load_from_data (GKeyFile       *key_file,
-			   const gchar    *data,
-			   gsize           length,
-			   GKeyFileFlags   flags,
-			   GError        **error)
-{
-  GError *key_file_error = NULL;
-
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
-  g_return_val_if_fail (length != 0, FALSE);
-
-  if (length == (gsize)-1)
-    length = strlen (data);
-
-  if (key_file->approximate_size > 0)
-    {
-      g_key_file_clear (key_file);
-      g_key_file_init (key_file);
-    }
-  key_file->flags = flags;
-
-  g_key_file_parse_data (key_file, data, length, &key_file_error);
-  
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  g_key_file_flush_parse_buffer (key_file, &key_file_error);
-  
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-/**
- * g_key_file_load_from_data_dirs:
- * @key_file: an empty #GKeyFile struct
- * @file: a relative path to a filename to open and parse
- * @full_path: return location for a string containing the full path
- *   of the file, or %NULL
- * @flags: flags from #GKeyFileFlags 
- * @error: return location for a #GError, or %NULL
- *
- * This function looks for a key file named @file in the paths 
- * returned from g_get_user_data_dir() and g_get_system_data_dirs(), 
- * loads the file into @key_file and returns the file's full path in 
- * @full_path.  If the file could not be loaded then an %error is
- * set to either a #GFileError or #GKeyFileError.
- *
- * Return value: %TRUE if a key file could be loaded, %FALSE othewise
- * Since: 2.6
- **/
-gboolean
-g_key_file_load_from_data_dirs (GKeyFile       *key_file,
-				const gchar    *file,
-				gchar         **full_path,
-				GKeyFileFlags   flags,
-				GError        **error)
-{
-  GError *key_file_error = NULL;
-  gchar **all_data_dirs, **data_dirs;
-  const gchar * user_data_dir;
-  const gchar * const * system_data_dirs;
-  gsize i, j;
-  gchar *output_path = NULL;
-  gint fd;
-  gboolean found_file;
-  
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (!g_path_is_absolute (file), FALSE);
-
-  user_data_dir = g_get_user_data_dir ();
-  system_data_dirs = g_get_system_data_dirs ();
-  all_data_dirs = g_new0 (gchar *, g_strv_length ((gchar **)system_data_dirs) + 2);
-
-  i = 0;
-  all_data_dirs[i++] = g_strdup (user_data_dir);
-
-  j = 0;
-  while (system_data_dirs[j] != NULL)
-    all_data_dirs[i++] = g_strdup (system_data_dirs[j++]);
-
-  found_file = FALSE;
-  data_dirs = all_data_dirs;
-  while (*data_dirs != NULL && !found_file)
-    {
-      fd = find_file_in_data_dirs (file, &output_path, &data_dirs, 
-                                   &key_file_error);
-      
-      if (fd < 0)
-        {
-          if (key_file_error)
-            g_propagate_error (error, key_file_error);
-	  break;
-        }
-
-      found_file = g_key_file_load_from_fd (key_file, fd, flags,
-	                                    &key_file_error);
-      close (fd);
-      
-      if (key_file_error)
-        {
-	  g_propagate_error (error, key_file_error);
-          g_free (output_path);
-	  break;
-        }
-      
-      if (full_path)
-	*full_path = output_path;
-    }
-
-  g_strfreev (all_data_dirs);
-  return found_file;
-}
-
-/**
- * g_key_file_free:
- * @key_file: a #GKeyFile
- *
- * Frees a #GKeyFile.
- *
- * Since: 2.6
- **/
-void
-g_key_file_free (GKeyFile *key_file)
-{
-  g_return_if_fail (key_file != NULL);
-  
-  g_key_file_clear (key_file);
-  g_free (key_file);
-}
-
-/* If G_KEY_FILE_KEEP_TRANSLATIONS is not set, only returns
- * true for locales that match those in g_get_language_names().
- */
-static gboolean
-g_key_file_locale_is_interesting (GKeyFile    *key_file,
-				  const gchar *locale)
-{
-  const gchar * const * current_locales;
-  gsize i;
-
-  if (key_file->flags & G_KEY_FILE_KEEP_TRANSLATIONS)
-    return TRUE;
-
-  current_locales = g_get_language_names ();
-
-  for (i = 0; current_locales[i] != NULL; i++)
-    {
-      if (g_ascii_strcasecmp (current_locales[i], locale) == 0)
-	return TRUE;
-    }
-
-  return FALSE;
-}
-
-static void
-g_key_file_parse_line (GKeyFile     *key_file,
-		       const gchar  *line,
-		       gsize         length,
-		       GError      **error)
-{
-  GError *parse_error = NULL;
-  gchar *line_start;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (line != NULL);
-
-  line_start = (gchar *) line;
-  while (g_ascii_isspace (*line_start))
-    line_start++;
-
-  if (g_key_file_line_is_comment (line_start))
-    g_key_file_parse_comment (key_file, line, length, &parse_error);
-  else if (g_key_file_line_is_group (line_start))
-    g_key_file_parse_group (key_file, line_start,
-			    length - (line_start - line),
-			    &parse_error);
-  else if (g_key_file_line_is_key_value_pair (line_start))
-    g_key_file_parse_key_value_pair (key_file, line_start,
-				     length - (line_start - line),
-				     &parse_error);
-  else
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_PARSE,
-                   _("Key file contains line '%s' which is not "
-                     "a key-value pair, group, or comment"), line);
-      return;
-    }
-
-  if (parse_error)
-    g_propagate_error (error, parse_error);
-}
-
-static void
-g_key_file_parse_comment (GKeyFile     *key_file,
-			  const gchar  *line,
-			  gsize         length,
-			  GError      **error)
-{
-  GKeyFileKeyValuePair *pair;
-  
-  if (!(key_file->flags & G_KEY_FILE_KEEP_COMMENTS))
-    return;
-  
-  g_assert (key_file->current_group != NULL);
-
-  pair = g_new0 (GKeyFileKeyValuePair, 1);
-  
-  pair->key = NULL;
-  pair->value = g_strndup (line, length);
-  
-  key_file->current_group->key_value_pairs =
-    g_list_prepend (key_file->current_group->key_value_pairs, pair);
-}
-
-static void
-g_key_file_parse_group (GKeyFile     *key_file,
-			const gchar  *line,
-			gsize         length,
-			GError      **error)
-{
-  gchar *group_name;
-  const gchar *group_name_start, *group_name_end;
-  
-  /* advance past opening '['
-   */
-  group_name_start = line + 1;
-  group_name_end = line + length - 1;
-  
-  while (*group_name_end != ']')
-    group_name_end--;
-
-  group_name = g_strndup (group_name_start, 
-                          group_name_end - group_name_start);
-  
-  g_key_file_add_group (key_file, group_name);
-  g_free (group_name);
-}
-
-static void
-g_key_file_parse_key_value_pair (GKeyFile     *key_file,
-				 const gchar  *line,
-				 gsize         length,
-				 GError      **error)
-{
-  gchar *key, *value, *key_end, *value_start, *locale;
-  gsize key_len, value_len;
-
-  if (key_file->current_group == NULL || key_file->current_group->name == NULL)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-		   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-		   _("Key file does not start with a group"));
-      return;
-    }
-
-  key_end = value_start = strchr (line, '=');
-
-  g_assert (key_end != NULL);
-
-  key_end--;
-  value_start++;
-
-  /* Pull the key name from the line (chomping trailing whitespace)
-   */
-  while (g_ascii_isspace (*key_end))
-    key_end--;
-
-  key_len = key_end - line + 2;
-
-  g_assert (key_len <= length);
-
-  key = g_strndup (line, key_len - 1);
-
-  /* Pull the value from the line (chugging leading whitespace)
-   */
-  while (g_ascii_isspace (*value_start))
-    value_start++;
-
-  value_len = line + length - value_start + 1;
-
-  value = g_strndup (value_start, value_len);
-
-  g_assert (key_file->start_group != NULL);
-
-  if (key_file->current_group
-      && key_file->current_group->name
-      && strcmp (key_file->start_group->name,
-                 key_file->current_group->name) == 0
-      && strcmp (key, "Encoding") == 0)
-    {
-      if (g_ascii_strcasecmp (value, "UTF-8") != 0)
-        {
-          g_set_error (error, G_KEY_FILE_ERROR,
-                       G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
-                       _("Key file contains unsupported encoding '%s'"), value);
-
-          g_free (key);
-          g_free (value);
-          return;
-        }
-    }
-
-  /* Is this key a translation? If so, is it one that we care about?
-   */
-  locale = key_get_locale (key);
-
-  if (locale == NULL || g_key_file_locale_is_interesting (key_file, locale))
-    g_key_file_add_key (key_file, key_file->current_group, key, value);
-
-  g_free (locale);
-  g_free (key);
-  g_free (value);
-}
-
-static gchar *
-key_get_locale (const gchar *key)
-{
-  gchar *locale;
-
-  locale = g_strrstr (key, "[");
-
-  if (locale && strlen (locale) <= 2)
-    locale = NULL;
-
-  if (locale)
-    locale = g_strndup (locale + 1, strlen (locale) - 2);
-
-  return locale;
-}
-
-static void
-g_key_file_parse_data (GKeyFile     *key_file,
-		       const gchar  *data,
-		       gsize         length,
-		       GError      **error)
-{
-  GError *parse_error;
-  gsize i;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (data != NULL);
-
-  parse_error = NULL;
-
-  for (i = 0; i < length; i++)
-    {
-      if (data[i] == '\n')
-        {
-	  if (i > 0 && data[i - 1] == '\r')
-	    g_string_erase (key_file->parse_buffer,
-			    key_file->parse_buffer->len - 1,
-			    1);
-	    
-          /* When a newline is encountered flush the parse buffer so that the
-           * line can be parsed.  Note that completely blank lines won't show
-           * up in the parse buffer, so they get parsed directly.
-           */
-          if (key_file->parse_buffer->len > 0)
-            g_key_file_flush_parse_buffer (key_file, &parse_error);
-          else
-            g_key_file_parse_comment (key_file, "", 1, &parse_error);
-
-          if (parse_error)
-            {
-              g_propagate_error (error, parse_error);
-              return;
-            }
-        }
-      else
-        g_string_append_c (key_file->parse_buffer, data[i]);
-    }
-
-  key_file->approximate_size += length;
-}
-
-static void
-g_key_file_flush_parse_buffer (GKeyFile  *key_file,
-			       GError   **error)
-{
-  GError *file_error = NULL;
-
-  g_return_if_fail (key_file != NULL);
-
-  file_error = NULL;
-
-  if (key_file->parse_buffer->len > 0)
-    {
-      g_key_file_parse_line (key_file, key_file->parse_buffer->str,
-			     key_file->parse_buffer->len,
-			     &file_error);
-      g_string_erase (key_file->parse_buffer, 0, -1);
-
-      if (file_error)
-        {
-          g_propagate_error (error, file_error);
-          return;
-        }
-    }
-}
-
-/**
- * g_key_file_to_data:
- * @key_file: a #GKeyFile
- * @length: return location for the length of the 
- *   returned string, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * This function outputs @key_file as a string.  
- *
- * Return value: a newly allocated string holding
- *   the contents of the #GKeyFile 
- *
- * Since: 2.6
- **/
-gchar *
-g_key_file_to_data (GKeyFile  *key_file,
-		    gsize     *length,
-		    GError   **error)
-{
-  GString *data_string;
-  gchar *data;
-  GList *group_node, *key_file_node;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-
-  data_string = g_string_sized_new (2 * key_file->approximate_size);
-  
-  for (group_node = g_list_last (key_file->groups);
-       group_node != NULL;
-       group_node = group_node->prev)
-    {
-      GKeyFileGroup *group;
-
-      group = (GKeyFileGroup *) group_node->data;
-
-      if (group->comment != NULL)
-        g_string_append_printf (data_string, "%s\n", group->comment->value);
-      if (group->name != NULL)
-        g_string_append_printf (data_string, "[%s]\n", group->name);
-
-      for (key_file_node = g_list_last (group->key_value_pairs);
-           key_file_node != NULL;
-           key_file_node = key_file_node->prev)
-        {
-          GKeyFileKeyValuePair *pair;
-
-          pair = (GKeyFileKeyValuePair *) key_file_node->data;
-
-          if (pair->key != NULL)
-            g_string_append_printf (data_string, "%s=%s\n", pair->key, pair->value);
-          else
-            g_string_append_printf (data_string, "%s\n", pair->value);
-        }
-    }
-
-  if (length)
-    *length = data_string->len;
-
-  data = data_string->str;
-
-  g_string_free (data_string, FALSE);
-
-  return data;
-}
-
-/**
- * g_key_file_get_keys:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @length: return location for the number of keys returned, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Returns all keys for the group name @group_name.  The array of
- * returned keys will be %NULL-terminated, so @length may
- * optionally be %NULL. In the event that the @group_name cannot
- * be found, %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
- *
- * Return value: a newly-allocated %NULL-terminated array of
- * strings. Use g_strfreev() to free it.
- *
- * Since: 2.6
- **/
-gchar **
-g_key_file_get_keys (GKeyFile     *key_file,
-		     const gchar  *group_name,
-		     gsize        *length,
-		     GError      **error)
-{
-  GKeyFileGroup *group;
-  GList *tmp;
-  gchar **keys;
-  gsize i, num_keys;
-  
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  
-  group = g_key_file_lookup_group (key_file, group_name);
-  
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-      return NULL;
-    }
-
-  num_keys = g_list_length (group->key_value_pairs);
-  
-  keys = (gchar **) g_new0 (gchar **, num_keys + 1);
-
-  tmp = group->key_value_pairs;
-  for (i = 1; i <= num_keys; i++)
-    {
-      GKeyFileKeyValuePair *pair;
-
-      pair = (GKeyFileKeyValuePair *) tmp->data;
-      keys[num_keys - i] = g_strdup (pair->key);
-
-      tmp = tmp->next;
-    }
-  keys[num_keys] = NULL;
-
-  if (length)
-    *length = num_keys;
-
-  return keys;
-}
-
-/**
- * g_key_file_get_start_group:
- * @key_file: a #GKeyFile
- *
- * Returns the name of the start group of the file. 
- *
- * Return value: The start group of the key file.
- *
- * Since: 2.6
- **/
-gchar *
-g_key_file_get_start_group (GKeyFile *key_file)
-{
-  g_return_val_if_fail (key_file != NULL, NULL);
-
-  if (key_file->start_group)
-    return g_strdup (key_file->start_group->name);
-
-  return NULL;
-}
-
-/**
- * g_key_file_get_groups:
- * @key_file: a #GKeyFile
- * @length: return location for the number of returned groups, or %NULL
- *
- * Returns all groups in the key file loaded with @key_file.  The
- * array of returned groups will be %NULL-terminated, so @length may
- * optionally be %NULL.
- *
- * Return value: a newly-allocated %NULL-terminated array of strings. 
- *   Use g_strfreev() to free it.
- * Since: 2.6
- **/
-gchar **
-g_key_file_get_groups (GKeyFile *key_file,
-		       gsize    *length)
-{
-  GList *group_node;
-  gchar **groups;
-  gsize i, num_groups;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-
-  num_groups = g_list_length (key_file->groups);
-
-  g_assert (num_groups > 0);
-
-  /* Only need num_groups instead of num_groups + 1
-   * because the first group of the file (last in the
-   * list) is always the comment group at the top,
-   * which we skip
-   */
-  groups = (gchar **) g_new0 (gchar **, num_groups);
-
-  group_node = g_list_last (key_file->groups);
-  
-  g_assert (((GKeyFileGroup *) group_node->data)->name == NULL);
-
-  i = 0;
-  for (group_node = group_node->prev;
-       group_node != NULL;
-       group_node = group_node->prev)
-    {
-      GKeyFileGroup *group;
-
-      group = (GKeyFileGroup *) group_node->data;
-
-      g_assert (group->name != NULL);
-
-      groups[i++] = g_strdup (group->name);
-    }
-  groups[i] = NULL;
-
-  if (length)
-    *length = i;
-
-  return groups;
-}
-
-/**
- * g_key_file_get_value:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @error: return location for a #GError, or %NULL
- *
- * Returns the value associated with @key under @group_name.  
- *
- * In the event the key cannot be found, %NULL is returned and 
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the 
- * event that the @group_name cannot be found, %NULL is returned 
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
- *
- * Return value: a newly allocated string or %NULL if the specified 
- * key cannot be found.
- *
- * Since: 2.6
- **/
-gchar *
-g_key_file_get_value (GKeyFile     *key_file,
-		      const gchar  *group_name,
-		      const gchar  *key,
-		      GError      **error)
-{
-  GKeyFileGroup *group;
-  GKeyFileKeyValuePair *pair;
-  gchar *value = NULL;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-  
-  group = g_key_file_lookup_group (key_file, group_name);
-
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-      return NULL;
-    }
-
-  pair = g_key_file_lookup_key_value_pair (key_file, group, key);
-
-  if (pair)
-    value = g_strdup (pair->value);
-  else
-    g_set_error (error, G_KEY_FILE_ERROR,
-                 G_KEY_FILE_ERROR_KEY_NOT_FOUND,
-                 _("Key file does not have key '%s'"), key);
-
-  return value;
-}
-
-/**
- * g_key_file_set_value:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @value: a string
- *
- * Associates a new value with @key under @group_name.  If @key
- * cannot be found then it is created. If @group_name cannot be
- * found then it is created.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_value (GKeyFile    *key_file,
-		      const gchar *group_name,
-		      const gchar *key,
-		      const gchar *value)
-{
-  GKeyFileGroup *group;
-  GKeyFileKeyValuePair *pair;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (value != NULL);
-
-  group = g_key_file_lookup_group (key_file, group_name);
-
-  if (!group)
-    {
-      g_key_file_add_group (key_file, group_name);
-      group = (GKeyFileGroup *) key_file->groups->data;
-
-      g_key_file_add_key (key_file, group, key, value);
-    }
-  else
-    {
-      pair = g_key_file_lookup_key_value_pair (key_file, group, key);
-
-      if (!pair)
-        g_key_file_add_key (key_file, group, key, value);
-      else
-        {
-          g_free (pair->value);
-          pair->value = g_strdup (value);
-        }
-    }
-}
-
-/**
- * g_key_file_get_string:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @error: return location for a #GError, or %NULL
- *
- * Returns the value associated with @key under @group_name.  
- *
- * In the event the key cannot be found, %NULL is returned and 
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the 
- * event that the @group_name cannot be found, %NULL is returned 
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
- *
- * Return value: a newly allocated string or %NULL if the specified 
- * key cannot be found.
- *
- * Since: 2.6
- **/
-gchar *
-g_key_file_get_string (GKeyFile     *key_file,
-		       const gchar  *group_name,
-		       const gchar  *key,
-		       GError      **error)
-{
-  gchar *value, *string_value;
-  GError *key_file_error;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  key_file_error = NULL;
-
-  value = g_key_file_get_value (key_file, group_name, key, &key_file_error);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return NULL;
-    }
-
-  if (!g_utf8_validate (value, -1, NULL))
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
-                   _("Key file contains key '%s' with value '%s' "
-                     "which is not UTF-8"), key, value);
-      g_free (value);
-      return NULL;
-    }
-
-  string_value = g_key_file_parse_value_as_string (key_file, value, NULL,
-						   &key_file_error);
-  g_free (value);
-
-  if (key_file_error)
-    {
-      if (g_error_matches (key_file_error,
-                           G_KEY_FILE_ERROR,
-                           G_KEY_FILE_ERROR_INVALID_VALUE))
-        {
-          g_set_error (error, G_KEY_FILE_ERROR,
-                       G_KEY_FILE_ERROR_INVALID_VALUE,
-                       _("Key file contains key '%s' "
-                         "which has value that cannot be interpreted."),
-                       key);
-          g_error_free (key_file_error);
-        }
-      else
-        g_propagate_error (error, key_file_error);
-    }
-
-  return string_value;
-}
-
-/**
- * g_key_file_set_string:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @string: a string
- *
- * Associates a new string value with @key under @group_name.  If
- * @key cannot be found then it is created.  If @group_name
- * cannot be found then it is created.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_string (GKeyFile    *key_file,
-		       const gchar *group_name,
-		       const gchar *key,
-		       const gchar *string)
-{
-  gchar *value;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (string != NULL);
-
-  value = g_key_file_parse_string_as_value (key_file, string, FALSE);
-  g_key_file_set_value (key_file, group_name, key, value);
-  g_free (value);
-}
-
-/**
- * g_key_file_get_string_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @length: return location for the number of returned strings, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Returns the values associated with @key under @group_name.
- *
- * In the event the key cannot be found, %NULL is returned and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the
- * event that the @group_name cannot be found, %NULL is returned
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
- *
- * Return value: a %NULL-terminated string array or %NULL if the specified 
- *   key cannot be found. The array should be freed with g_strfreev().
- *
- * Since: 2.6
- **/
-gchar **
-g_key_file_get_string_list (GKeyFile     *key_file,
-			    const gchar  *group_name,
-			    const gchar  *key,
-			    gsize        *length,
-			    GError      **error)
-{
-  GError *key_file_error = NULL;
-  gchar *value, *string_value, **values;
-  gint i, len;
-  GSList *p, *pieces = NULL;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  value = g_key_file_get_value (key_file, group_name, key, &key_file_error);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return NULL;
-    }
-
-  if (!g_utf8_validate (value, -1, NULL))
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
-                   _("Key file contains key '%s' with value '%s' "
-                     "which is not UTF-8"), key, value);
-      g_free (value);
-      return NULL;
-    }
-
-  string_value = g_key_file_parse_value_as_string (key_file, value, &pieces, &key_file_error);
-  g_free (value);
-  g_free (string_value);
-
-  if (key_file_error)
-    {
-      if (g_error_matches (key_file_error,
-                           G_KEY_FILE_ERROR,
-                           G_KEY_FILE_ERROR_INVALID_VALUE))
-        {
-          g_set_error (error, G_KEY_FILE_ERROR,
-                       G_KEY_FILE_ERROR_INVALID_VALUE,
-                       _("Key file contains key '%s' "
-                         "which has value that cannot be interpreted."),
-                       key);
-          g_error_free (key_file_error);
-        }
-      else
-        g_propagate_error (error, key_file_error);
-    }
-
-  len = g_slist_length (pieces);
-  values = g_new0 (gchar *, len + 1); 
-  for (p = pieces, i = 0; p; p = p->next)
-    values[i++] = p->data;
-  values[len] = NULL;
-
-  g_slist_free (pieces);
-
-  if (length)
-    *length = len;
-
-  return values;
-}
-
-/**
- * g_key_file_set_string_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @list: an array of locale string values
- * @length: number of locale string values in @list
- *
- * Associates a list of string values for @key under @group_name.
- * If @key cannot be found then it is created.  If @group_name 
- * cannot be found then it is created.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_string_list (GKeyFile            *key_file,
-			    const gchar         *group_name,
-			    const gchar         *key,
-			    const gchar * const  list[],
-			    gsize                length)
-{
-  GString *value_list;
-  gsize i;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (list != NULL);
-
-  value_list = g_string_sized_new (length * 128);
-  for (i = 0; list[i] != NULL && i < length; i++)
-    {
-      gchar *value;
-
-      value = g_key_file_parse_string_as_value (key_file, list[i], TRUE);
-      g_string_append (value_list, value);
-      g_string_append_c (value_list, key_file->list_separator);
-
-      g_free (value);
-    }
-
-  g_key_file_set_value (key_file, group_name, key, value_list->str);
-  g_string_free (value_list, TRUE);
-}
-
-/**
- * g_key_file_set_locale_string:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @locale: a locale
- * @string: a string
- *
- * Associates a string value for @key and @locale under
- * @group_name.  If the translation for @key cannot be found 
- * then it is created.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_locale_string (GKeyFile     *key_file,
-			      const gchar  *group_name,
-			      const gchar  *key,
-			      const gchar  *locale,
-			      const gchar  *string)
-{
-  gchar *full_key, *value;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (locale != NULL);
-  g_return_if_fail (string != NULL);
-
-  value = g_key_file_parse_string_as_value (key_file, string, FALSE);
-  full_key = g_strdup_printf ("%s[%s]", key, locale);
-  g_key_file_set_value (key_file, group_name, full_key, value);
-  g_free (full_key);
-  g_free (value);
-}
-
-extern GSList *_g_compute_locale_variants (const gchar *locale);
-
-/**
- * g_key_file_get_locale_string:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @locale: a locale or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Returns the value associated with @key under @group_name
- * translated in the given @locale if available.  If @locale is
- * %NULL then the current locale is assumed. 
- *
- * If @key cannot be found then %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated
- * with @key cannot be interpreted or no suitable translation can
- * be found then the untranslated value is returned.
- *
- * Return value: a newly allocated string or %NULL if the specified key 
- *  cannot be found.
- * 
- * Since: 2.6
- **/
-gchar *
-g_key_file_get_locale_string (GKeyFile     *key_file,
-			      const gchar  *group_name,
-			      const gchar  *key,
-			      const gchar  *locale,
-			      GError      **error)
-{
-  gchar *candidate_key, *translated_value;
-  GError *key_file_error;
-  gchar **languages;
-  gboolean free_languages = FALSE;
-  gint i;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  candidate_key = NULL;
-  translated_value = NULL;
-  key_file_error = NULL;
-
-  if (locale)
-    {
-      GSList *l, *list;
-
-      list = _g_compute_locale_variants (locale);
-
-      languages = g_new0 (gchar *, g_slist_length (list) + 1);
-      for (l = list, i = 0; l; l = l->next, i++)
-	languages[i] = l->data;
-      languages[i] = NULL;
-
-      g_slist_free (list);
-      free_languages = TRUE;
-    }
-  else
-    {
-      languages = (gchar **) g_get_language_names ();
-      free_languages = FALSE;
-    }
-  
-  for (i = 0; languages[i]; i++)
-    {
-      candidate_key = g_strdup_printf ("%s[%s]", key, languages[i]);
-      
-      translated_value = g_key_file_get_string (key_file,
-						group_name,
-						candidate_key, NULL);
-      g_free (candidate_key);
-
-      if (translated_value && g_utf8_validate (translated_value, -1, NULL))
-	break;
-
-      g_free (translated_value);
-      translated_value = NULL;
-   }
-
-  /* Fallback to untranslated key
-   */
-  if (!translated_value)
-    {
-      translated_value = g_key_file_get_string (key_file, group_name, key,
-						&key_file_error);
-      
-      if (!translated_value)
-        g_propagate_error (error, key_file_error);
-    }
-
-  if (free_languages)
-    g_strfreev (languages);
-
-  return translated_value;
-}
-
-/** 
- * g_key_file_get_locale_string_list: 
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @locale: a locale
- * @length: return location for the number of returned strings or %NULL
- * @error: return location for a #GError or %NULL
- *
- * Returns the values associated with @key under @group_name
- * translated in the given @locale if available.  If @locale is
- * %NULL then the current locale is assumed. 
-
- * If @key cannot be found then %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated
- * with @key cannot be interpreted or no suitable translations
- * can be found then the untranslated values are returned.
- * The returned array is %NULL-terminated, so @length may optionally be %NULL.
- *
- * Return value: a newly allocated %NULL-terminated string array
- *   or %NULL if the key isn't found. The string array should be freed
- *   with g_strfreev().
- *
- * Since: 2.6
- **/
-gchar **
-g_key_file_get_locale_string_list (GKeyFile     *key_file,
-				   const gchar  *group_name,
-				   const gchar  *key,
-				   const gchar  *locale,
-				   gsize        *length,
-				   GError      **error)
-{
-  GError *key_file_error;
-  gchar **values, *value;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  key_file_error = NULL;
-
-  value = g_key_file_get_locale_string (key_file, group_name, 
-					key, locale,
-					&key_file_error);
-  
-  if (key_file_error)
-    g_propagate_error (error, key_file_error);
-  
-  if (!value)
-    return NULL;
-
-  if (value[strlen (value) - 1] == ';')
-    value[strlen (value) - 1] = '\0';
-
-  values = g_strsplit (value, ";", 0);
-
-  g_free (value);
-
-  if (length)
-    *length = g_strv_length (values);
-
-  return values;
-}
-
-/**
- * g_key_file_set_locale_string_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @locale: a locale
- * @list: a %NULL-terminated array of locale string values
- * @length: the length of @list
- *
- * Associates a list of string values for @key and @locale under
- * @group_name.  If the translation for @key cannot be found then
- * it is created. 
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_locale_string_list (GKeyFile            *key_file,
-				   const gchar         *group_name,
-				   const gchar         *key,
-				   const gchar         *locale,
-				   const gchar * const  list[],
-				   gsize                length)
-{
-  GString *value_list;
-  gchar *full_key;
-  gsize i;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (locale != NULL);
-  g_return_if_fail (length != 0);
-
-  value_list = g_string_sized_new (length * 128);
-  for (i = 0; list[i] != NULL && i < length; i++)
-    {
-      gchar *value;
-      
-      value = g_key_file_parse_string_as_value (key_file, list[i], TRUE);
-      
-      g_string_append (value_list, value);
-      g_string_append_c (value_list, ';');
-
-      g_free (value);
-    }
-
-  full_key = g_strdup_printf ("%s[%s]", key, locale);
-  g_key_file_set_value (key_file, group_name, full_key, value_list->str);
-  g_free (full_key);
-  g_string_free (value_list, TRUE);
-}
-
-/**
- * g_key_file_get_boolean:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @error: return location for a #GError
- *
- * Returns the value associated with @key under @group_name as a
- * boolean. 
- *
- * If @key cannot be found then the return value is undefined and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
- * the value associated with @key cannot be interpreted as a boolean
- * then the return value is also undefined and @error is set to
- * #G_KEY_FILE_ERROR_INVALID_VALUE.
- *
- * Return value: the value associated with the key as a boolean
- * Since: 2.6
- **/
-gboolean
-g_key_file_get_boolean (GKeyFile     *key_file,
-			const gchar  *group_name,
-			const gchar  *key,
-			GError      **error)
-{
-  GError *key_file_error = NULL;
-  gchar *value;
-  gboolean bool_value;
-
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (group_name != NULL, FALSE);
-  g_return_val_if_fail (key != NULL, FALSE);
-
-  value = g_key_file_get_value (key_file, group_name, key, &key_file_error);
-
-  if (!value)
-    {
-      g_propagate_error (error, key_file_error);
-      return FALSE;
-    }
-
-  bool_value = g_key_file_parse_value_as_boolean (key_file, value,
-						  &key_file_error);
-  g_free (value);
-
-  if (key_file_error)
-    {
-      if (g_error_matches (key_file_error,
-                           G_KEY_FILE_ERROR,
-                           G_KEY_FILE_ERROR_INVALID_VALUE))
-        {
-          g_set_error (error, G_KEY_FILE_ERROR,
-                       G_KEY_FILE_ERROR_INVALID_VALUE,
-                       _("Key file contains key '%s' "
-                         "which has value that cannot be interpreted."),
-                       key);
-          g_error_free (key_file_error);
-        }
-      else
-        g_propagate_error (error, key_file_error);
-    }
-
-  return bool_value;
-}
-
-/**
- * g_key_file_set_boolean:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @value: %TRUE or %FALSE
- *
- * Associates a new boolean value with @key under @group_name.
- * If @key cannot be found then it is created. 
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_boolean (GKeyFile    *key_file,
-			const gchar *group_name,
-			const gchar *key,
-			gboolean     value)
-{
-  gchar *result;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-
-  result = g_key_file_parse_boolean_as_value (key_file, value);
-  g_key_file_set_value (key_file, group_name, key, result);
-  g_free (result);
-}
-
-/**
- * g_key_file_get_boolean_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @length: the number of booleans returned
- * @error: return location for a #GError
- *
- * Returns the values associated with @key under @group_name as
- * booleans. If @group_name is %NULL, the start_group is used.
- *
- * If @key cannot be found then the return value is undefined and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
- * the values associated with @key cannot be interpreted as booleans
- * then the return value is also undefined and @error is set to
- * #G_KEY_FILE_ERROR_INVALID_VALUE.
- *
- * Return value: the values associated with the key as a boolean
- * 
- * Since: 2.6
- **/
-gboolean *
-g_key_file_get_boolean_list (GKeyFile     *key_file,
-			     const gchar  *group_name,
-			     const gchar  *key,
-			     gsize        *length,
-			     GError      **error)
-{
-  GError *key_file_error;
-  gchar **values;
-  gboolean *bool_values;
-  gsize i, num_bools;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  key_file_error = NULL;
-
-  values = g_key_file_get_string_list (key_file, group_name, key,
-				       &num_bools, &key_file_error);
-
-  if (key_file_error)
-    g_propagate_error (error, key_file_error);
-
-  if (!values)
-    return NULL;
-
-  bool_values = g_new0 (gboolean, num_bools);
-
-  for (i = 0; i < num_bools; i++)
-    {
-      bool_values[i] = g_key_file_parse_value_as_boolean (key_file,
-							  values[i],
-							  &key_file_error);
-
-      if (key_file_error)
-        {
-          g_propagate_error (error, key_file_error);
-          g_strfreev (values);
-          g_free (bool_values);
-
-          return NULL;
-        }
-    }
-  g_strfreev (values);
-
-  if (length)
-    *length = num_bools;
-
-  return bool_values;
-}
-
-/**
- * g_key_file_set_boolean_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @list: an array of boolean values
- * @length: length of @list
- *
- * Associates a list of boolean values with @key under
- * @group_name.  If @key cannot be found then it is created.
- * If @group_name is %NULL, the start_group is used.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_boolean_list (GKeyFile    *key_file,
-			     const gchar *group_name,
-			     const gchar *key,
-			     gboolean     list[],
-			     gsize        length)
-{
-  GString *value_list;
-  gsize i;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (list != NULL);
-
-  value_list = g_string_sized_new (length * 8);
-  for (i = 0; i < length; i++)
-    {
-      gchar *value;
-
-      value = g_key_file_parse_boolean_as_value (key_file, list[i]);
-
-      g_string_append (value_list, value);
-      g_string_append_c (value_list, key_file->list_separator);
-
-      g_free (value);
-    }
-
-  g_key_file_set_value (key_file, group_name, key, value_list->str);
-  g_string_free (value_list, TRUE);
-}
-
-/**
- * g_key_file_get_integer:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @error: return location for a #GError
- *
- * Returns the value associated with @key under @group_name as an
- * integer. If @group_name is %NULL, the start_group is used.
- *
- * If @key cannot be found then the return value is undefined and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
- * the value associated with @key cannot be interpreted as an integer
- * then the return value is also undefined and @error is set to
- * #G_KEY_FILE_ERROR_INVALID_VALUE.
- *
- * Return value: the value associated with the key as an integer.
- *
- * Since: 2.6
- **/
-gint
-g_key_file_get_integer (GKeyFile     *key_file,
-			const gchar  *group_name,
-			const gchar  *key,
-			GError      **error)
-{
-  GError *key_file_error;
-  gchar *value;
-  gint int_value;
-
-  g_return_val_if_fail (key_file != NULL, -1);
-  g_return_val_if_fail (group_name != NULL, -1);
-  g_return_val_if_fail (key != NULL, -1);
-
-  key_file_error = NULL;
-
-  value = g_key_file_get_value (key_file, group_name, key, &key_file_error);
-
-  if (key_file_error)
-    {
-      g_propagate_error (error, key_file_error);
-      return 0;
-    }
-
-  int_value = g_key_file_parse_value_as_integer (key_file, value,
-						 &key_file_error);
-  g_free (value);
-
-  if (key_file_error)
-    {
-      if (g_error_matches (key_file_error,
-                           G_KEY_FILE_ERROR,
-                           G_KEY_FILE_ERROR_INVALID_VALUE))
-        {
-          g_set_error (error, G_KEY_FILE_ERROR,
-                       G_KEY_FILE_ERROR_INVALID_VALUE,
-                       _("Key file contains key '%s' in group '%s' "
-                         "which has value that cannot be interpreted."), key, 
-                       group_name);
-          g_error_free (key_file_error);
-        }
-      else
-        g_propagate_error (error, key_file_error);
-    }
-
-  return int_value;
-}
-
-/**
- * g_key_file_set_integer:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @value: an integer value
- *
- * Associates a new integer value with @key under @group_name.
- * If @key cannot be found then it is created. 
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_integer (GKeyFile    *key_file,
-			const gchar *group_name,
-			const gchar *key,
-			gint         value)
-{
-  gchar *result;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-
-  result = g_key_file_parse_integer_as_value (key_file, value);
-  g_key_file_set_value (key_file, group_name, key, result);
-  g_free (result);
-}
-
-/**
- * g_key_file_get_integer_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @length: the number of integers returned
- * @error: return location for a #GError
- *
- * Returns the values associated with @key under @group_name as
- * integers. If @group_name is %NULL, the start group is used.
- *
- * If @key cannot be found then the return value is undefined and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
- * the values associated with @key cannot be interpreted as integers
- * then the return value is also undefined and @error is set to
- * #G_KEY_FILE_ERROR_INVALID_VALUE.
- *
- * Return value: the values associated with the key as a integer
- *
- * Since: 2.6
- **/
-gint *
-g_key_file_get_integer_list (GKeyFile     *key_file,
-			     const gchar  *group_name,
-			     const gchar  *key,
-			     gsize        *length,
-			     GError      **error)
-{
-  GError *key_file_error = NULL;
-  gchar **values;
-  gint *int_values;
-  gsize i, num_ints;
-
-  g_return_val_if_fail (key_file != NULL, NULL);
-  g_return_val_if_fail (group_name != NULL, NULL);
-  g_return_val_if_fail (key != NULL, NULL);
-
-  values = g_key_file_get_string_list (key_file, group_name, key,
-				       &num_ints, &key_file_error);
-
-  if (key_file_error)
-    g_propagate_error (error, key_file_error);
-
-  if (!values)
-    return NULL;
-
-  int_values = g_new0 (gint, num_ints);
-
-  for (i = 0; i < num_ints; i++)
-    {
-      int_values[i] = g_key_file_parse_value_as_integer (key_file,
-							 values[i],
-							 &key_file_error);
-
-      if (key_file_error)
-        {
-          g_propagate_error (error, key_file_error);
-          g_strfreev (values);
-          g_free (int_values);
-
-          return NULL;
-        }
-    }
-  g_strfreev (values);
-
-  if (length)
-    *length = num_ints;
-
-  return int_values;
-}
-
-/**
- * g_key_file_set_integer_list:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key
- * @list: an array of integer values
- * @length: number of integer values in @list
- *
- * Associates a list of integer values with @key under
- * @group_name.  If @key cannot be found then it is created.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_integer_list (GKeyFile     *key_file,
-			     const gchar  *group_name,
-			     const gchar  *key,
-			     gint          list[],
-			     gsize         length)
-{
-  GString *values;
-  gsize i;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-  g_return_if_fail (list != NULL);
-
-  values = g_string_sized_new (length * 16);
-  for (i = 0; i < length; i++)
-    {
-      gchar *value;
-
-      value = g_key_file_parse_integer_as_value (key_file, list[i]);
-
-      g_string_append (values, value);
-      g_string_append_c (values, ';');
-
-      g_free (value);
-    }
-
-  g_key_file_set_value (key_file, group_name, key, values->str);
-  g_string_free (values, TRUE);
-}
-
-static void
-g_key_file_set_key_comment (GKeyFile             *key_file,
-                            const gchar          *group_name,
-                            const gchar          *key,
-                            const gchar          *comment,
-                            GError              **error)
-{
-  GKeyFileGroup *group;
-  GKeyFileKeyValuePair *pair;
-  GList *key_node, *comment_node, *tmp;
-  
-  group = g_key_file_lookup_group (key_file, group_name);
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-
-      return;
-    }
-
-  /* First find the key the comments are supposed to be
-   * associated with
-   */
-  key_node = g_key_file_lookup_key_value_pair_node (key_file, group, key);
-
-  if (key_node == NULL)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_KEY_NOT_FOUND,
-                   _("Key file does not have key '%s' in group '%s'"),
-                   key, group->name);
-      return;
-    }
-
-  /* Then find all the comments already associated with the
-   * key and free them
-   */
-  tmp = key_node->next;
-  while (tmp != NULL)
-    {
-      GKeyFileKeyValuePair *pair;
-
-      pair = (GKeyFileKeyValuePair *) tmp->data;
-
-      if (pair->key != NULL)
-        break;
-
-      comment_node = tmp;
-      tmp = tmp->next;
-      g_key_file_remove_key_value_pair_node (key_file, group,
-                                             comment_node); 
-    }
-
-  if (comment == NULL)
-    return;
-
-  /* Now we can add our new comment
-   */
-  pair = g_new0 (GKeyFileKeyValuePair, 1);
-  
-  pair->key = NULL;
-  pair->value = g_key_file_parse_comment_as_value (key_file, comment);
-  
-  key_node = g_list_insert (key_node, pair, 1);
-}
-
-static void
-g_key_file_set_group_comment (GKeyFile             *key_file,
-                              const gchar          *group_name,
-                              const gchar          *comment,
-                              GError              **error)
-{
-  GKeyFileGroup *group;
-  
-  group = g_key_file_lookup_group (key_file, group_name);
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-
-      return;
-    }
-
-  /* First remove any existing comment
-   */
-  if (group->comment)
-    {
-      g_key_file_key_value_pair_free (group->comment);
-      group->comment = NULL;
-    }
-
-  if (comment == NULL)
-    return;
-
-  /* Now we can add our new comment
-   */
-  group->comment = g_new0 (GKeyFileKeyValuePair, 1);
-  
-  group->comment->key = NULL;
-  group->comment->value = g_key_file_parse_comment_as_value (key_file, comment);
-}
-
-static void
-g_key_file_set_top_comment (GKeyFile             *key_file,
-                            const gchar          *comment,
-                            GError              **error)
-{
-  GList *group_node;
-  GKeyFileGroup *group;
-  GKeyFileKeyValuePair *pair;
-
-  /* The last group in the list should be the top (comments only)
-   * group in the file
-   */
-  g_assert (key_file->groups != NULL);
-  group_node = g_list_last (key_file->groups);
-  group = (GKeyFileGroup *) group_node->data;
-  g_assert (group->name == NULL);
-
-  /* Note all keys must be comments at the top of
-   * the file, so we can just free it all.
-   */
-  if (group->key_value_pairs != NULL)
-    {
-      g_list_foreach (group->key_value_pairs, 
-                      (GFunc) g_key_file_key_value_pair_free, 
-                      NULL);
-      g_list_free (group->key_value_pairs);
-      group->key_value_pairs = NULL;
-    }
-
-  if (comment == NULL)
-     return;
-
-  pair = g_new0 (GKeyFileKeyValuePair, 1);
-  
-  pair->key = NULL;
-  pair->value = g_key_file_parse_comment_as_value (key_file, comment);
-  
-  group->key_value_pairs =
-    g_list_prepend (group->key_value_pairs, pair);
-}
-
-/**
- * g_key_file_set_comment:
- * @key_file: a #GKeyFile
- * @group_name: a group name, or %NULL
- * @key: a key
- * @comment: a comment
- * @error: return location for a #GError
- *
- * Places a comment above @key from @group_name.
- * @group_name. If @key is %NULL then @comment will
- * be written above @group_name.  If both @key
- * and @group_name are NULL, then @comment will
- * be written above the first group in the file.
- *
- * Since: 2.6
- **/
-void
-g_key_file_set_comment (GKeyFile             *key_file,
-                        const gchar          *group_name,
-                        const gchar          *key,
-                        const gchar          *comment,
-                        GError              **error)
-{
-  g_return_if_fail (key_file != NULL);
-
-  if (group_name != NULL && key != NULL)
-    g_key_file_set_key_comment (key_file, group_name, key, comment, error);
-  else if (group_name != NULL)
-    g_key_file_set_group_comment (key_file, group_name, comment, error);
-  else
-    g_key_file_set_top_comment (key_file, comment, error);
-
-  if (comment != NULL)
-    key_file->approximate_size += strlen (comment);
-}
-
-static gchar *
-g_key_file_get_key_comment (GKeyFile             *key_file,
-                            const gchar          *group_name,
-                            const gchar          *key,
-                            GError              **error)
-{
-  GKeyFileGroup *group;
-  GList *key_node, *tmp;
-  GString *string;
-  gchar *comment;
-
-  group = g_key_file_lookup_group (key_file, group_name);
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-
-      return NULL;
-    }
-
-  /* First find the key the comments are supposed to be
-   * associated with
-   */
-  key_node = g_key_file_lookup_key_value_pair_node (key_file, group, key);
-
-  if (key_node == NULL)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_KEY_NOT_FOUND,
-                   _("Key file does not have key '%s' in group '%s'"),
-                   key, group->name);
-      return NULL;
-    }
-
-  string = NULL;
-
-  /* Then find all the comments already associated with the
-   * key and concatentate them.
-   */
-  tmp = key_node->next;
-  while (tmp != NULL)
-    {
-      GKeyFileKeyValuePair *pair;
-
-      pair = (GKeyFileKeyValuePair *) tmp->data;
-
-      if (pair->key != NULL)
-        break;
-      
-      if (string == NULL)
-        string = g_string_sized_new (512);
-
-      comment = g_key_file_parse_value_as_comment (key_file, pair->value);
-      g_string_append (string, comment);
-      g_free (comment);
-
-      tmp = tmp->next;
-    }
-
-  if (string != NULL)
-    {
-      comment = string->str;
-      g_string_free (string, FALSE);
-    }
-  else
-    comment = NULL;
-
-  return comment;
-}
-
-static gchar *
-g_key_file_get_group_comment (GKeyFile             *key_file,
-                              const gchar          *group_name,
-                              GError              **error)
-{
-  GKeyFileGroup *group;
-  
-  group = g_key_file_lookup_group (key_file, group_name);
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-
-      return NULL;
-    }
-
-  if (group->comment)
-    return g_strdup (group->comment->value);
-
-  return NULL;
-}
-
-static gchar *
-g_key_file_get_top_comment (GKeyFile             *key_file,
-                            GError              **error)
-{
-  GList *group_node, *tmp;
-  GKeyFileGroup *group;
-  GString *string;
-  gchar *comment;
-
-  /* The last group in the list should be the top (comments only)
-   * group in the file
-   */
-  g_assert (key_file->groups != NULL);
-  group_node = g_list_last (key_file->groups);
-  group = (GKeyFileGroup *) group_node->data;
-  g_assert (group->name == NULL);
-
-  string = NULL;
-
-  /* Then find all the comments already associated with the
-   * key and concatentate them.
-   */
-  tmp = group->key_value_pairs;
-  while (tmp != NULL)
-    {
-      GKeyFileKeyValuePair *pair;
-
-      pair = (GKeyFileKeyValuePair *) tmp->data;
-
-      if (pair->key != NULL)
-        break;
-      
-      if (string == NULL)
-        string = g_string_sized_new (512);
-
-      comment = g_key_file_parse_value_as_comment (key_file, pair->value);
-      g_string_append (string, comment);
-      g_free (comment);
-
-      tmp = tmp->next;
-    }
-
-  if (string != NULL)
-    {
-      comment = string->str;
-      g_string_free (string, FALSE);
-    }
-  else
-    comment = NULL;
-
-  return comment;
-}
-
-/**
- * g_key_file_get_comment:
- * @key_file: a #GKeyFile
- * @group_name: a group name, or %NULL
- * @key: a key
- * @error: return location for a #GError
- *
- * Retreives a comment above @key from @group_name.
- * @group_name. If @key is %NULL then @comment will
- * be read from above @group_name.  If both @key
- * and @group_name are NULL, then @comment will
- * be read from above the first group in the file.
- *
- * Since: 2.6
- * Returns: a comment that should be freed with g_free()
- **/
-gchar * 
-g_key_file_get_comment (GKeyFile             *key_file,
-                        const gchar          *group_name,
-                        const gchar          *key,
-                        GError              **error)
-{
-  g_return_val_if_fail (key_file != NULL, NULL);
-
-  if (group_name != NULL && key != NULL)
-    return g_key_file_get_key_comment (key_file, group_name, key, error);
-  else if (group_name != NULL)
-    return g_key_file_get_group_comment (key_file, group_name, error);
-  else
-    return g_key_file_get_top_comment (key_file, error);
-}
-
-/**
- * g_key_file_remove_comment:
- * @key_file: a #GKeyFile
- * @group_name: a group name, or %NULL
- * @key: a key
- * @error: return location for a #GError
- *
- * Removes a comment above @key from @group_name.
- * @group_name. If @key is %NULL then @comment will
- * be written above @group_name.  If both @key
- * and @group_name are NULL, then @comment will
- * be written above the first group in the file.
- *
- * Since: 2.6
- **/
-
-void
-g_key_file_remove_comment (GKeyFile             *key_file,
-                           const gchar          *group_name,
-                           const gchar          *key,
-                           GError              **error)
-{
-  g_return_if_fail (key_file != NULL);
-
-  if (group_name != NULL && key != NULL)
-    g_key_file_set_key_comment (key_file, group_name, key, NULL, error);
-  else if (group_name != NULL)
-    g_key_file_set_group_comment (key_file, group_name, NULL, error);
-  else
-    g_key_file_set_top_comment (key_file, NULL, error);
-}
-
-/**
- * g_key_file_has_group:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- *
- * Looks whether the key file has the group @group_name.
- *
- * Return value: %TRUE if @group_name is a part of @key_file, %FALSE
- * otherwise.
- * Since: 2.6
- **/
-gboolean
-g_key_file_has_group (GKeyFile    *key_file,
-		      const gchar *group_name)
-{
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (group_name != NULL, FALSE);
-
-  return g_key_file_lookup_group_node (key_file, group_name) != NULL;
-}
-
-/**
- * g_key_file_has_key:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key name
- * @error: return location for a #GError
- *
- * Looks whether the key file has the key @key in the group
- * @group_name. 
- *
- * Return value: %TRUE if @key is a part of @group_name, %FALSE
- * otherwise.
- *
- * Since: 2.6
- **/
-gboolean
-g_key_file_has_key (GKeyFile     *key_file,
-		    const gchar  *group_name,
-		    const gchar  *key,
-		    GError      **error)
-{
-  GKeyFileKeyValuePair *pair;
-  GKeyFileGroup *group;
-
-  g_return_val_if_fail (key_file != NULL, FALSE);
-  g_return_val_if_fail (group_name != NULL, FALSE);
-  g_return_val_if_fail (key != NULL, FALSE);
-
-  group = g_key_file_lookup_group (key_file, group_name);
-
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-
-      return FALSE;
-    }
-
-  pair = g_key_file_lookup_key_value_pair (key_file, group, key);
-
-  return pair != NULL;
-}
-
-static void
-g_key_file_add_group (GKeyFile    *key_file,
-		      const gchar *group_name)
-{
-  GKeyFileGroup *group;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (g_key_file_lookup_group_node (key_file, group_name) == NULL);
-
-  group = g_new0 (GKeyFileGroup, 1);
-  group->name = g_strdup (group_name);
-  group->lookup_map = g_hash_table_new (g_str_hash, g_str_equal);
-  key_file->groups = g_list_prepend (key_file->groups, group);
-  key_file->approximate_size += strlen (group_name) + 3;
-  key_file->current_group = group;
-
-  if (key_file->start_group == NULL)
-    key_file->start_group = group;
-}
-
-static void
-g_key_file_key_value_pair_free (GKeyFileKeyValuePair *pair)
-{
-  if (pair != NULL)
-    {
-      g_free (pair->key);
-      g_free (pair->value);
-      g_free (pair);
-    }
-}
-
-/* Be careful not to call this function on a node with data in the
- * lookup map without removing it from the lookup map, first.
- *
- * Some current cases where this warning is not a concern are
- * when:
- *   - the node being removed is a comment node
- *   - the entire lookup map is getting destroyed soon after
- *     anyway.
- */ 
-static void
-g_key_file_remove_key_value_pair_node (GKeyFile      *key_file,
-                                       GKeyFileGroup *group,
-			               GList         *pair_node)
-{
-
-  GKeyFileKeyValuePair *pair;
-
-  pair = (GKeyFileKeyValuePair *) pair_node->data;
-
-  group->key_value_pairs = g_list_remove_link (group->key_value_pairs, pair_node);
-
-  if (pair->key != NULL)
-    key_file->approximate_size -= strlen (pair->key) + 1;
-
-  g_assert (pair->value != NULL);
-  key_file->approximate_size -= strlen (pair->value);
-
-  g_key_file_key_value_pair_free (pair);
-
-  g_list_free_1 (pair_node);
-}
-
-static void
-g_key_file_remove_group_node (GKeyFile *key_file,
-			      GList    *group_node)
-{
-  GKeyFileGroup *group;
-  GList *tmp;
-
-  group = (GKeyFileGroup *) group_node->data;
-
-  /* If the current group gets deleted make the current group the last
-   * added group.
-   */
-  if (key_file->current_group == group)
-    {
-      /* groups should always contain at least the top comment group,
-       * unless g_key_file_clear has been called
-       */
-      if (key_file->groups)
-        key_file->current_group = (GKeyFileGroup *) key_file->groups->data;
-      else
-        key_file->current_group = NULL;
-    }
-
-  /* If the start group gets deleted make the start group the first
-   * added group.
-   */
-  if (key_file->start_group == group)
-    {
-      tmp = g_list_last (key_file->groups);
-      while (tmp != NULL)
-	{
-	  if (tmp != group_node &&
-	      ((GKeyFileGroup *) tmp->data)->name != NULL)
-	    break;
-
-	  tmp = tmp->prev;
-	}
-
-      if (tmp)
-        key_file->start_group = (GKeyFileGroup *) tmp->data;
-      else
-        key_file->start_group = NULL;
-    }
-
-  key_file->groups = g_list_remove_link (key_file->groups, group_node);
-
-  if (group->name != NULL)
-    key_file->approximate_size -= strlen (group->name) + 3;
-
-  tmp = group->key_value_pairs;
-  while (tmp != NULL)
-    {
-      GList *pair_node;
-
-      pair_node = tmp;
-      tmp = tmp->next;
-      g_key_file_remove_key_value_pair_node (key_file, group, pair_node);
-    }
-
-  g_assert (group->key_value_pairs == NULL);
-
-  if (group->lookup_map)
-    {
-      g_hash_table_destroy (group->lookup_map);
-      group->lookup_map = NULL;
-    }
-
-  g_free ((gchar *) group->name);
-  g_free (group);
-  g_list_free_1 (group_node);
-}
-
-/**
- * g_key_file_remove_group:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @error: return location for a #GError or %NULL
- *
- * Removes the specified group, @group_name, 
- * from the key file. 
- *
- * Since: 2.6
- **/
-void
-g_key_file_remove_group (GKeyFile     *key_file,
-			 const gchar  *group_name,
-			 GError      **error)
-{
-  GList *group_node;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-
-  group_node = g_key_file_lookup_group_node (key_file, group_name);
-
-  if (!group_node)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-		   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-		   _("Key file does not have group '%s'"),
-		   group_name);
-      return;
-    }
-
-    g_key_file_remove_group_node (key_file, group_node);
-}
-
-static void
-g_key_file_add_key (GKeyFile      *key_file,
-		    GKeyFileGroup *group,
-		    const gchar   *key,
-		    const gchar   *value)
-{
-  GKeyFileKeyValuePair *pair;
-
-  pair = g_new0 (GKeyFileKeyValuePair, 1);
-
-  pair->key = g_strdup (key);
-  pair->value = g_strdup (value);
-
-  g_hash_table_replace (group->lookup_map, pair->key, pair);
-  group->key_value_pairs = g_list_prepend (group->key_value_pairs, pair);
-  key_file->approximate_size += strlen (key) + strlen (value) + 2;
-}
-
-/**
- * g_key_file_remove_key:
- * @key_file: a #GKeyFile
- * @group_name: a group name
- * @key: a key name to remove
- * @error: return location for a #GError or %NULL
- *
- * Removes @key in @group_name from the key file. 
- *
- * Since: 2.6
- **/
-void
-g_key_file_remove_key (GKeyFile     *key_file,
-		       const gchar  *group_name,
-		       const gchar  *key,
-		       GError      **error)
-{
-  GKeyFileGroup *group;
-  GKeyFileKeyValuePair *pair;
-
-  g_return_if_fail (key_file != NULL);
-  g_return_if_fail (group_name != NULL);
-  g_return_if_fail (key != NULL);
-
-  pair = NULL;
-
-  group = g_key_file_lookup_group (key_file, group_name);
-  if (!group)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-                   _("Key file does not have group '%s'"),
-                   group_name ? group_name : "(null)");
-      return;
-    }
-
-  pair = g_key_file_lookup_key_value_pair (key_file, group, key);
-
-  if (!pair)
-    {
-      g_set_error (error, G_KEY_FILE_ERROR,
-                   G_KEY_FILE_ERROR_KEY_NOT_FOUND,
-                   _("Key file does not have key '%s' in group '%s'"),
-		   key, group->name);
-      return;
-    }
-
-  key_file->approximate_size -= strlen (pair->key) + strlen (pair->value) + 2;
-
-  group->key_value_pairs = g_list_remove (group->key_value_pairs, pair);
-  g_hash_table_remove (group->lookup_map, pair->key);  
-  g_key_file_key_value_pair_free (pair);
-}
-
-static GList *
-g_key_file_lookup_group_node (GKeyFile    *key_file,
-			      const gchar *group_name)
-{
-  GKeyFileGroup *group;
-  GList *tmp;
-
-  group = NULL;
-  for (tmp = key_file->groups; tmp != NULL; tmp = tmp->next)
-    {
-      group = (GKeyFileGroup *) tmp->data;
-
-      if (group && group->name && strcmp (group->name, group_name) == 0)
-        break;
-
-      group = NULL;
-    }
-
-  return tmp;
-}
-
-static GKeyFileGroup *
-g_key_file_lookup_group (GKeyFile    *key_file,
-			 const gchar *group_name)
-{
-  GList *group_node;
-
-  group_node = g_key_file_lookup_group_node (key_file, group_name);
-
-  if (group_node != NULL)
-    return (GKeyFileGroup *) group_node->data; 
-
-  return NULL;
-}
-
-static GList *
-g_key_file_lookup_key_value_pair_node (GKeyFile       *key_file,
-			               GKeyFileGroup  *group,
-                                       const gchar    *key)
-{
-  GList *key_node;
-
-  for (key_node = group->key_value_pairs;
-       key_node != NULL;
-       key_node = key_node->next)
-    {
-      GKeyFileKeyValuePair *pair;
-
-      pair = (GKeyFileKeyValuePair *) key_node->data; 
-
-      if (pair->key && strcmp (pair->key, key) == 0)
-        break;
-    }
-
-  return key_node;
-}
-
-static GKeyFileKeyValuePair *
-g_key_file_lookup_key_value_pair (GKeyFile      *key_file,
-				  GKeyFileGroup *group,
-				  const gchar   *key)
-{
-  return (GKeyFileKeyValuePair *) g_hash_table_lookup (group->lookup_map, key);
-}
-
-/* Lines starting with # or consisting entirely of whitespace are merely
- * recorded, not parsed. This function assumes all leading whitespace
- * has been stripped.
- */
-static gboolean
-g_key_file_line_is_comment (const gchar *line)
-{
-  return (*line == '#' || *line == '\0' || *line == '\n');
-}
-
-/* A group in a key file is made up of a starting '[' followed by one
- * or more letters making up the group name followed by ']'.
- */
-static gboolean
-g_key_file_line_is_group (const gchar *line)
-{
-  gchar *p;
-
-  p = (gchar *) line;
-  if (*p != '[')
-    return FALSE;
-
-  p = g_utf8_next_char (p);
-
-  if (!*p)
-    return FALSE;
-
-  p = g_utf8_next_char (p);
-
-  /* Group name must be non-empty
-   */
-  if (*p == ']')
-    return FALSE;
-
-  while (*p && *p != ']')
-    p = g_utf8_next_char (p);
-
-  if (!*p)
-    return FALSE;
-
-  return TRUE;
-}
-
-static gboolean
-g_key_file_line_is_key_value_pair (const gchar *line)
-{
-  gchar *p;
-
-  p = (gchar *) g_utf8_strchr (line, -1, '=');
-
-  if (!p)
-    return FALSE;
-
-  /* Key must be non-empty
-   */
-  if (*p == line[0])
-    return FALSE;
-
-  return TRUE;
-}
-
-static gchar *
-g_key_file_parse_value_as_string (GKeyFile     *key_file,
-				  const gchar  *value,
-				  GSList      **pieces,
-				  GError      **error)
-{
-  gchar *string_value, *p, *q0, *q;
-
-  string_value = g_new0 (gchar, strlen (value) + 1);
-
-  p = (gchar *) value;
-  q0 = q = string_value;
-  while (*p)
-    {
-      if (*p == '\\')
-        {
-          p++;
-
-          switch (*p)
-            {
-            case 's':
-              *q = ' ';
-              break;
-
-            case 'n':
-              *q = '\n';
-              break;
-
-            case 't':
-              *q = '\t';
-              break;
-
-            case 'r':
-              *q = '\r';
-              break;
-
-            case '\\':
-              *q = '\\';
-              break;
-
-	    case '\0':
-	      g_set_error (error, G_KEY_FILE_ERROR,
-			   G_KEY_FILE_ERROR_INVALID_VALUE,
-			   _("Key file contains escape character "
-			     "at end of line"));
-	      break;
-
-            default:
-	      if (pieces && *p == key_file->list_separator)
-		*q = key_file->list_separator;
-	      else
-		{
-		  *q++ = '\\';
-		  *q = *p;
-		  
-		  if (*error == NULL)
-		    {
-		      gchar sequence[3];
-		      
-		      sequence[0] = '\\';
-		      sequence[1] = *p;
-		      sequence[2] = '\0';
-		      
-		      g_set_error (error, G_KEY_FILE_ERROR,
-				   G_KEY_FILE_ERROR_INVALID_VALUE,
-				   _("Key file contains invalid escape "
-				     "sequence '%s'"), sequence);
-		    }
-		}
-              break;
-            }
-        }
-      else
-	{
-	  *q = *p;
-	  if (pieces && (*p == key_file->list_separator))
-	    {
-	      *pieces = g_slist_prepend (*pieces, g_strndup (q0, q - q0));
-	      q0 = q + 1; 
-	    }
-	}
-
-      if (*p == '\0')
-	break;
-
-      q++;
-      p++;
-    }
-
-  *q = '\0';
-  if (pieces)
-  {
-    if (q0 < q)
-      *pieces = g_slist_prepend (*pieces, g_strndup (q0, q - q0));
-    *pieces = g_slist_reverse (*pieces);
-  }
-
-  return string_value;
-}
-
-static gchar *
-g_key_file_parse_string_as_value (GKeyFile    *key_file,
-				  const gchar *string,
-				  gboolean     escape_separator)
-{
-  gchar *value, *p, *q;
-  gsize length;
-  gboolean parsing_leading_space;
-
-  length = strlen (string) + 1;
-
-  /* Worst case would be that every character needs to be escaped.
-   * In other words every character turns to two characters
-   */
-  value = g_new0 (gchar, 2 * length);
-
-  p = (gchar *) string;
-  q = value;
-  parsing_leading_space = TRUE;
-  while (p < (string + length - 1))
-    {
-      gchar escaped_character[3] = { '\\', 0, 0 };
-
-      switch (*p)
-        {
-        case ' ':
-          if (parsing_leading_space)
-            {
-              escaped_character[1] = 's';
-              strcpy (q, escaped_character);
-              q += 2;
-            }
-          else
-            {
-	      *q = *p;
-	      q++;
-            }
-          break;
-        case '\t':
-          if (parsing_leading_space)
-            {
-              escaped_character[1] = 't';
-              strcpy (q, escaped_character);
-              q += 2;
-            }
-          else
-            {
-	      *q = *p;
-	      q++;
-            }
-          break;
-        case '\n':
-          escaped_character[1] = 'n';
-          strcpy (q, escaped_character);
-          q += 2;
-          break;
-        case '\r':
-          escaped_character[1] = 'r';
-          strcpy (q, escaped_character);
-          q += 2;
-          break;
-        case '\\':
-          escaped_character[1] = '\\';
-          strcpy (q, escaped_character);
-          q += 2;
-          parsing_leading_space = FALSE;
-          break;
-        default:
-	  if (escape_separator && *p == key_file->list_separator)
-	    {
-	      escaped_character[1] = key_file->list_separator;
-	      strcpy (q, escaped_character);
-	      q += 2;
-              parsing_leading_space = TRUE;
-	    }
-	  else 
-	    {
-	      *q = *p;
-	      q++;
-              parsing_leading_space = FALSE;
-	    }
-          break;
-        }
-      p++;
-    }
-  *q = '\0';
-
-  return value;
-}
-
-static gint
-g_key_file_parse_value_as_integer (GKeyFile     *key_file,
-				   const gchar  *value,
-				   GError      **error)
-{
-  gchar *end_of_valid_int;
-  gint int_value = 0;
-
-  int_value = strtol (value, &end_of_valid_int, 10);
-
-  if (*end_of_valid_int != '\0')
-    g_set_error (error, G_KEY_FILE_ERROR,
-		 G_KEY_FILE_ERROR_INVALID_VALUE,
-		 _("Value '%s' cannot be interpreted as a number."), value);
-
-  return int_value;
-}
-
-static gchar *
-g_key_file_parse_integer_as_value (GKeyFile *key_file,
-				   gint      value)
-
-{
-  return g_strdup_printf ("%d", value);
-}
-
-static gboolean
-g_key_file_parse_value_as_boolean (GKeyFile     *key_file,
-				   const gchar  *value,
-				   GError      **error)
-{
-  if (value)
-    {
-      if (strcmp (value, "true") == 0 || strcmp (value, "1") == 0)
-        return TRUE;
-      else if (strcmp (value, "false") == 0 || strcmp (value, "0") == 0)
-        return FALSE;
-    }
-
-  g_set_error (error, G_KEY_FILE_ERROR,
-               G_KEY_FILE_ERROR_INVALID_VALUE,
-               _("Value '%s' cannot be interpreted as a boolean."), value);
-
-  return FALSE;
-}
-
-static gchar *
-g_key_file_parse_boolean_as_value (GKeyFile *key_file,
-				   gboolean  value)
-{
-  if (value)
-    return g_strdup ("true");
-  else
-    return g_strdup ("false");
-}
-
-static gchar *
-g_key_file_parse_value_as_comment (GKeyFile    *key_file,
-                                   const gchar *value)
-{
-  GString *string;
-  gchar **lines, *comment;
-  gsize i;
-
-  string = g_string_sized_new (512);
-
-  lines = g_strsplit (value, "\n", 0);
-
-  for (i = 0; lines[i] != NULL; i++)
-    {
-        if (lines[i][0] != '#')
-           g_string_append_printf (string, "%s\n", lines[i]);
-        else 
-           g_string_append_printf (string, "%s\n", lines[i] + 1);
-    }
-  g_strfreev (lines);
-
-  comment = string->str;
-
-  g_string_free (string, FALSE);
-
-  return comment;
-}
-
-static gchar *
-g_key_file_parse_comment_as_value (GKeyFile      *key_file,
-                                   const gchar   *comment)
-{
-  GString *string;
-  gchar **lines, *value;
-  gsize i;
-
-  string = g_string_sized_new (512);
-
-  lines = g_strsplit (comment, "\n", 0);
-
-  for (i = 0; lines[i] != NULL; i++)
-    g_string_append_printf (string, "#%s%s", lines[i], 
-                            lines[i + 1] == NULL? "" : "\n");
-  g_strfreev (lines);
-
-  value = string->str;
-
-  g_string_free (string, FALSE);
-
-  return value;
-}
-
-/* Start hacks to make this file compile with glib 2.4 */
-#if 0
-#define __G_KEY_FILE_C__
-#include "galiasdef.c"
-#endif
-/* End hacks to make this file compile with glib 2.4 */

Deleted: gnucash/trunk/lib/glib26/gkeyfile.h
===================================================================
--- gnucash/trunk/lib/glib26/gkeyfile.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/gkeyfile.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,199 +0,0 @@
-/* gkeyfile.h - desktop entry file parser
- *
- *  Copyright 2004 Red Hat, Inc.
- *
- *  Ray Strode <halfline at hawaii.rr.com>
- *
- * GLib is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * GLib is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GLib; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- *   Boston, MA 02111-1307, USA.
- */
-
-#ifndef __G_KEY_FILE_H__
-#define __G_KEY_FILE_H__
-
-#include <glib/gerror.h>
-
-/* Start hacks to make this file compile with glib 2.4 */
-#define G_GNUC_MALLOC
-/* End hacks to make this file compile with glib 2.4 */
-
-G_BEGIN_DECLS
-
-typedef enum
-{
-  G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
-  G_KEY_FILE_ERROR_PARSE,
-  G_KEY_FILE_ERROR_NOT_FOUND,
-  G_KEY_FILE_ERROR_KEY_NOT_FOUND,
-  G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
-  G_KEY_FILE_ERROR_INVALID_VALUE
-} GKeyFileError;
-
-#define G_KEY_FILE_ERROR g_key_file_error_quark()
-
-GQuark g_key_file_error_quark (void);
-
-typedef struct _GKeyFile GKeyFile;
-
-typedef enum
-{
-  G_KEY_FILE_NONE              = 0,
-  G_KEY_FILE_KEEP_COMMENTS     = 1 << 0,
-  G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
-} GKeyFileFlags;
-
-GKeyFile *g_key_file_new                    (void);
-void      g_key_file_free                   (GKeyFile             *key_file);
-void      g_key_file_set_list_separator     (GKeyFile             *key_file,
-					     gchar                 separator);
-gboolean  g_key_file_load_from_file         (GKeyFile             *key_file,
-					     const gchar          *file,
-					     GKeyFileFlags         flags,
-					     GError              **error);
-gboolean  g_key_file_load_from_data         (GKeyFile             *key_file,
-					     const gchar          *data,
-					     gsize                 length,
-					     GKeyFileFlags         flags,
-					     GError              **error);
-gboolean g_key_file_load_from_data_dirs    (GKeyFile             *key_file,
-					     const gchar          *file,
-					     gchar               **full_path,
-					     GKeyFileFlags         flags,
-					     GError              **error);
-gchar    *g_key_file_to_data                (GKeyFile             *key_file,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-gchar    *g_key_file_get_start_group        (GKeyFile             *key_file) G_GNUC_MALLOC;
-gchar   **g_key_file_get_groups             (GKeyFile             *key_file,
-					     gsize                *length) G_GNUC_MALLOC;
-gchar   **g_key_file_get_keys               (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-gboolean  g_key_file_has_group              (GKeyFile             *key_file,
-					     const gchar          *group_name);
-gboolean  g_key_file_has_key                (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error);
-gchar    *g_key_file_get_value              (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_value              (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *value);
-gchar    *g_key_file_get_string             (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_string             (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *string);
-gchar    *g_key_file_get_locale_string      (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *locale,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_locale_string      (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *locale,
-					     const gchar          *string);
-gboolean  g_key_file_get_boolean            (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error);
-void      g_key_file_set_boolean            (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gboolean              value);
-gint      g_key_file_get_integer            (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error);
-void      g_key_file_set_integer            (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gint                  value);
-gchar   **g_key_file_get_string_list        (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_string_list        (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar * const   list[],
-					     gsize                 length);
-gchar   **g_key_file_get_locale_string_list (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *locale,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_locale_string_list (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     const gchar          *locale,
-					     const gchar * const   list[],
-					     gsize                 length);
-gboolean *g_key_file_get_boolean_list       (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_boolean_list       (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gboolean              list[],
-					     gsize                 length);
-gint     *g_key_file_get_integer_list       (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gsize                *length,
-					     GError              **error) G_GNUC_MALLOC;
-void      g_key_file_set_integer_list       (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     gint                  list[],
-					     gsize                 length);
-void      g_key_file_set_comment            (GKeyFile             *key_file,
-                                             const gchar          *group_name,
-                                             const gchar          *key,
-                                             const gchar          *comment,
-                                             GError              **error);
-gchar    *g_key_file_get_comment            (GKeyFile             *key_file,
-                                             const gchar          *group_name,
-                                             const gchar          *key,
-                                             GError              **error) G_GNUC_MALLOC;
-
-void      g_key_file_remove_comment         (GKeyFile             *key_file,
-                                             const gchar          *group_name,
-                                             const gchar          *key,
-					     GError              **error);
-void      g_key_file_remove_key             (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     const gchar          *key,
-					     GError              **error);
-void      g_key_file_remove_group           (GKeyFile             *key_file,
-					     const gchar          *group_name,
-					     GError              **error);
-
-G_END_DECLS
-
-#endif /* __G_KEY_FILE_H__ */

Deleted: gnucash/trunk/lib/glib26/gutils26.c
===================================================================
--- gnucash/trunk/lib/glib26/gutils26.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/gutils26.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,1065 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1998  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-/* 
- * MT safe for the unix part, FIXME: make the win32 part MT safe as well.
- */
-
-#include "config.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <locale.h>
-#include <string.h>
-#include <errno.h>
-#ifdef HAVE_PWD_H
-#include <pwd.h>
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-/* implement gutils's inline functions
- */
-#define	G_IMPLEMENT_INLINES 1
-#define	__G_UTILS_C__
-/* Start hacks to make this file compile with glib 2.4 */
-#include <glib.h>
-#include "gutils26.h"
-/* End hacks to make this file compile with glib 2.4 */
-#if 0
-#include "glib.h"
-#include "gprintfint.h"
-#include "gthreadinit.h"
-#include "galias.h"
-#endif
-
-#ifdef G_PLATFORM_WIN32
-#  define STRICT		/* Strict typing, please */
-#  include <windows.h>
-#  undef STRICT
-#  include <lmcons.h>		/* For UNLEN */
-#endif /* G_PLATFORM_WIN32 */
-
-#ifdef G_OS_WIN32
-#  include <direct.h>
-#  include <shlobj.h>
-   /* older SDK (e.g. msvc 5.0) does not have these*/
-#  ifndef CSIDL_INTERNET_CACHE
-#    define CSIDL_INTERNET_CACHE 32
-#  endif
-#  ifndef CSIDL_COMMON_APPDATA
-#    define CSIDL_COMMON_APPDATA 35
-#  endif
-#  ifndef CSIDL_COMMON_DOCUMENTS
-#    define CSIDL_COMMON_DOCUMENTS 46
-#  endif
-#  ifndef CSIDL_PROFILE
-#    define CSIDL_PROFILE 40
-#  endif
-#endif
-
-#ifdef HAVE_CODESET
-#include <langinfo.h>
-#endif
-
-#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-#include <libintl.h>
-#endif
-
-const guint glib_major_version = GLIB_MAJOR_VERSION;
-const guint glib_minor_version = GLIB_MINOR_VERSION;
-const guint glib_micro_version = GLIB_MICRO_VERSION;
-#if 0
-const guint glib_interface_age = GLIB_INTERFACE_AGE;
-const guint glib_binary_age = GLIB_BINARY_AGE;
-#endif
-
-/**
- * glib_check_version:
- * @required_major: the required major version.
- * @required_minor: the required major version.
- * @required_micro: the required major version.
- *
- * Checks that the GLib library in use is compatible with the
- * given version. Generally you would pass in the constants
- * #GLIB_MAJOR_VERSION, #GLIB_MINOR_VERSION, #GLIB_MICRO_VERSION
- * as the three arguments to this function; that produces
- * a check that the library in use is compatible with
- * the version of GLib the application or module was compiled
- * against.
- *
- * Compatibility is defined by two things: first the version
- * of the running library is newer than the version
- * @required_major.required_minor. at required_micro. Second
- * the running library must be binary compatible with the
- * version @required_major.required_minor. at required_micro
- * (same major version.)
- *
- * Return value: %NULL if the GLib library is compatible with the
- *   given version, or a string describing the version mismatch.
- *   The returned string is owned by GLib and must not be modified
- *   or freed.
- *
- * Since: 2.6
- **/
-const gchar *
-glib_check_version (guint required_major,
-                    guint required_minor,
-                    guint required_micro)
-{
-  gint glib_effective_micro = 100 * GLIB_MINOR_VERSION + GLIB_MICRO_VERSION;
-  gint required_effective_micro = 100 * required_minor + required_micro;
-
-  if (required_major > GLIB_MAJOR_VERSION)
-    return "GLib version too old (major mismatch)";
-  if (required_major < GLIB_MAJOR_VERSION)
-    return "GLib version too new (major mismatch)";
-#if 0
-  if (required_effective_micro < glib_effective_micro - GLIB_BINARY_AGE)
-    return "GLib version too new (micro mismatch)";
-#endif
-  if (required_effective_micro > glib_effective_micro)
-    return "GLib version too old (micro mismatch)";
-  return NULL;
-}
-
-/* Based on execvp() from GNU Libc.
- * Some of this code is cut-and-pasted into gspawn.c
- */
-
-G_LOCK_DEFINE_STATIC (g_utils_global);
-
-static  gchar   *g_user_data_dir = NULL;
-static  gchar  **g_system_data_dirs = NULL;
-static  gchar   *g_user_cache_dir = NULL;
-static  gchar   *g_user_config_dir = NULL;
-static  gchar  **g_system_config_dirs = NULL;
-
-#ifdef G_OS_WIN32
-
-static gchar *
-get_special_folder (int csidl)
-{
-  union {
-    char c[MAX_PATH+1];
-    wchar_t wc[MAX_PATH+1];
-  } path;
-  HRESULT hr;
-  LPITEMIDLIST pidl = NULL;
-  BOOL b;
-  gchar *retval = NULL;
-
-  hr = SHGetSpecialFolderLocation (NULL, csidl, &pidl);
-  if (hr == S_OK)
-    {
-      if (G_WIN32_HAVE_WIDECHAR_API ())
-	{
-	  b = SHGetPathFromIDListW (pidl, path.wc);
-	  if (b)
-	    retval = g_utf16_to_utf8 (path.wc, -1, NULL, NULL, NULL);
-	}
-      else
-	{
-	  b = SHGetPathFromIDListA (pidl, path.c);
-	  if (b)
-	    retval = g_locale_to_utf8 (path.c, -1, NULL, NULL, NULL);
-	}
-      CoTaskMemFree (pidl);
-    }
-  return retval;
-}
-
-#endif
-
-G_LOCK_DEFINE_STATIC (g_prgname);
-static gchar *g_prgname = NULL;
-
-gchar*
-g_get_prgname (void)
-{
-  gchar* retval;
-
-  G_LOCK (g_prgname);
-#ifdef G_OS_WIN32
-  if (g_prgname == NULL)
-    {
-      static gboolean beenhere = FALSE;
-
-      if (!beenhere)
-	{
-	  gchar *utf8_buf = NULL;
-
-	  beenhere = TRUE;
-	  if (G_WIN32_HAVE_WIDECHAR_API ())
-	    {
-	      wchar_t buf[MAX_PATH+1];
-	      if (GetModuleFileNameW (GetModuleHandle (NULL),
-				      buf, G_N_ELEMENTS (buf)) > 0)
-		utf8_buf = g_utf16_to_utf8 (buf, -1, NULL, NULL, NULL);
-	    }
-	  else
-	    {
-	      gchar buf[MAX_PATH+1];
-	      if (GetModuleFileNameA (GetModuleHandle (NULL),
-				      buf, G_N_ELEMENTS (buf)) > 0)
-		utf8_buf = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
-	    }
-	  if (utf8_buf)
-	    {
-	      g_prgname = g_path_get_basename (utf8_buf);
-	      g_free (utf8_buf);
-	    }
-	}
-    }
-#endif
-  retval = g_prgname;
-  G_UNLOCK (g_prgname);
-
-  return retval;
-}
-
-void
-g_set_prgname (const gchar *prgname)
-{
-  G_LOCK (g_prgname);
-  g_free (g_prgname);
-  g_prgname = g_strdup (prgname);
-  G_UNLOCK (g_prgname);
-}
-
-G_LOCK_DEFINE_STATIC (g_application_name);
-static gchar *g_application_name = NULL;
-
-/**
- * g_get_application_name:
- * 
- * Gets a human-readable name for the application, as set by
- * g_set_application_name(). This name should be localized if
- * possible, and is intended for display to the user.  Contrast with
- * g_get_prgname(), which gets a non-localized name. If
- * g_set_application_name() has not been called, returns the result of
- * g_get_prgname() (which may be %NULL if g_set_prgname() has also not
- * been called).
- * 
- * Return value: human-readable application name. may return %NULL
- *
- * Since: 2.2
- **/
-G_CONST_RETURN gchar*
-g_get_application_name (void)
-{
-  gchar* retval;
-
-  G_LOCK (g_application_name);
-  retval = g_application_name;
-  G_UNLOCK (g_application_name);
-
-  if (retval == NULL)
-    return g_get_prgname ();
-  
-  return retval;
-}
-
-/**
- * g_set_application_name:
- * @application_name: localized name of the application
- *
- * Sets a human-readable name for the application. This name should be
- * localized if possible, and is intended for display to the user.
- * Contrast with g_set_prgname(), which sets a non-localized name.
- * g_set_prgname() will be called automatically by gtk_init(),
- * but g_set_application_name() will not.
- *
- * Note that for thread safety reasons, this function can only
- * be called once.
- *
- * The application name will be used in contexts such as error messages,
- * or when displaying an application's name in the task list.
- * 
- **/
-void
-g_set_application_name (const gchar *application_name)
-{
-  gboolean already_set = FALSE;
-	
-  G_LOCK (g_application_name);
-  if (g_application_name)
-    already_set = TRUE;
-  else
-    g_application_name = g_strdup (application_name);
-  G_UNLOCK (g_application_name);
-
-  if (already_set)
-    g_warning ("g_set_application() name called multiple times");
-}
-
-/**
- * g_get_user_data_dir:
- * 
- * Returns a base directory in which to access application data such
- * as icons that is customized for a particular user.  
- *
- * On Unix platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- * 
- * Return value: a string owned by GLib that must not be modified 
- *               or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_data_dir (void)
-{
-  gchar *data_dir;  
-
-  G_LOCK (g_utils_global);
-
-  if (!g_user_data_dir)
-    {
-#ifdef G_OS_WIN32
-      data_dir = get_special_folder (CSIDL_PERSONAL);
-#else
-      data_dir = (gchar *) g_getenv ("XDG_DATA_HOME");
-
-      if (data_dir && data_dir[0])
-        data_dir = g_strdup (data_dir);
-#endif
-      if (!data_dir || !data_dir[0])
-	{
-	  if (g_get_home_dir())
-	    data_dir = g_build_filename (g_get_home_dir(), ".local", 
-					 "share", NULL);
-	  else
-	    data_dir = g_build_filename (g_get_tmp_dir(), g_get_user_name(), ".local",
-					 "share", NULL);
-	}
-
-      g_user_data_dir = data_dir;
-    }
-  else
-    data_dir = g_user_data_dir;
-
-  G_UNLOCK (g_utils_global);
-
-  return data_dir;
-}
-
-/**
- * g_get_user_config_dir:
- * 
- * Returns a base directory in which to store user-specific application 
- * configuration information such as user preferences and settings. 
- *
- * On Unix platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- * 
- * Return value: a string owned by GLib that must not be modified 
- *               or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_config_dir (void)
-{
-  gchar *config_dir;  
-
-  G_LOCK (g_utils_global);
-
-  if (!g_user_config_dir)
-    {
-#ifdef G_OS_WIN32
-      config_dir = get_special_folder (CSIDL_APPDATA);
-#else
-      config_dir = (gchar *) g_getenv ("XDG_CONFIG_HOME");
-
-      if (config_dir && config_dir[0])
-	config_dir = g_strdup (config_dir);
-#endif
-      if (!config_dir || !config_dir[0])
-	{
-	  if (g_get_home_dir())
-	    config_dir = g_build_filename (g_get_home_dir(), ".config", NULL);
-	  else
-	    config_dir = g_build_filename (g_get_tmp_dir(), g_get_user_name(), ".config", NULL);
-	}
-      g_user_config_dir = config_dir;
-    }
-  else
-    config_dir = g_user_config_dir;
-
-  G_UNLOCK (g_utils_global);
-
-  return config_dir;
-}
-
-/**
- * g_get_user_cache_dir:
- * 
- * Returns a base directory in which to store non-essential, cached
- * data specific to particular user.
- *
- * On Unix platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- * 
- * Return value: a string owned by GLib that must not be modified 
- *               or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_cache_dir (void)
-{
-  gchar *cache_dir;  
-
-  G_LOCK (g_utils_global);
-
-  if (!g_user_cache_dir)
-    {
-#ifdef G_OS_WIN32
-      cache_dir = get_special_folder (CSIDL_INTERNET_CACHE); /* XXX correct? */
-#else
-      cache_dir = (gchar *) g_getenv ("XDG_CACHE_HOME");
-
-      if (cache_dir && cache_dir[0])
-          cache_dir = g_strdup (cache_dir);
-#endif
-      if (!cache_dir || !cache_dir[0])
-	{
-	  if (g_get_home_dir())
-	    cache_dir = g_build_filename (g_get_home_dir(), ".cache", NULL);
-	  else
-	    cache_dir = g_build_filename (g_get_tmp_dir(), g_get_user_name(), ".cache", NULL);
-	}
-      g_user_cache_dir = cache_dir;
-    }
-  else
-    cache_dir = g_user_cache_dir;
-
-  G_UNLOCK (g_utils_global);
-
-  return cache_dir;
-}
-
-/**
- * g_get_system_data_dirs:
- * 
- * Returns an ordered list of base directories in which to access 
- * system-wide application data.
- *
- * On Unix platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- * 
- * Return value: a %NULL-terminated array of strings owned by GLib that must 
- *               not be modified or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN * 
-g_get_system_data_dirs (void)
-{
-  gchar *data_dirs, **data_dir_vector;
-
-  G_LOCK (g_utils_global);
-
-  if (!g_system_data_dirs)
-    {
-#ifdef G_OS_WIN32
-      char *appdata = get_special_folder (CSIDL_COMMON_APPDATA);
-      char *docs = get_special_folder (CSIDL_COMMON_DOCUMENTS);
-      
-      if (appdata && docs)
-	{
-	  data_dirs = g_strconcat (appdata,
-				   G_SEARCHPATH_SEPARATOR_S,
-				   docs,
-				   NULL);
-	  g_free (appdata);
-	  g_free (docs);
-	}
-      else if (appdata)
-	data_dirs = appdata;
-      else if (docs)
-	data_dirs = docs;
-      else
-	data_dirs = NULL;
-
-      if (data_dirs)
-	{
-	  data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-	  g_free (data_dirs);
-	}
-      else
-	{
-	  /* Punt, return empty list */
-	  data_dir_vector = g_strsplit ("", G_SEARCHPATH_SEPARATOR_S, 0);
-	}
-#else
-      data_dirs = (gchar *) g_getenv ("XDG_DATA_DIRS");
-
-      if (!data_dirs || !data_dirs[0])
-          data_dirs = "/usr/local/share/:/usr/share/";
-
-      data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-#endif
-
-      g_system_data_dirs = data_dir_vector;
-    }
-  else
-    data_dir_vector = g_system_data_dirs;
-
-  G_UNLOCK (g_utils_global);
-
-  return (G_CONST_RETURN gchar * G_CONST_RETURN *) data_dir_vector;
-}
-
-/**
- * g_get_system_config_dirs:
- * 
- * Returns an ordered list of base directories in which to access 
- * system-wide configuration information.
- *
- * On Unix platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- * 
- * Return value: a %NULL-terminated array of strings owned by GLib that must 
- *               not be modified or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN *
-g_get_system_config_dirs (void)
-{
-  gchar *conf_dirs, **conf_dir_vector;
-
-  G_LOCK (g_utils_global);
-
-  if (!g_system_config_dirs)
-    {
-#ifdef G_OS_WIN32
-      conf_dirs = get_special_folder (CSIDL_COMMON_APPDATA);
-      if (conf_dirs)
-	{
-	  conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-	  g_free (conf_dirs);
-	}
-      else
-	{
-	  /* Return empty list */
-	  conf_dir_vector = g_strsplit ("", G_SEARCHPATH_SEPARATOR_S, 0);
-	}
-#else
-      conf_dirs = (gchar *) g_getenv ("XDG_CONFIG_DIRS");
-
-      if (!conf_dirs || !conf_dirs[0])
-          conf_dirs = "/etc/xdg";
-
-      conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-#endif
-
-      g_system_config_dirs = conf_dir_vector;
-    }
-  else
-    conf_dir_vector = g_system_config_dirs;
-  G_UNLOCK (g_utils_global);
-
-  return (G_CONST_RETURN gchar * G_CONST_RETURN *) conf_dir_vector;
-}
-
-static GHashTable *alias_table = NULL;
-
-/* read an alias file for the locales */
-static void
-read_aliases (gchar *file)
-{
-  FILE *fp;
-  char buf[256];
-  
-  if (!alias_table)
-    alias_table = g_hash_table_new (g_str_hash, g_str_equal);
-  fp = fopen (file,"r");
-  if (!fp)
-    return;
-  while (fgets (buf, 256, fp))
-    {
-      char *p, *q;
-
-      g_strstrip (buf);
-
-      /* Line is a comment */
-      if ((buf[0] == '#') || (buf[0] == '\0'))
-	continue;
-
-      /* Reads first column */
-      for (p = buf, q = NULL; *p; p++) {
-	if ((*p == '\t') || (*p == ' ') || (*p == ':')) {
-	  *p = '\0';
-	  q = p+1;
-	  while ((*q == '\t') || (*q == ' ')) {
-	    q++;
-	  }
-	  break;
-	}
-      }
-      /* The line only had one column */
-      if (!q || *q == '\0')
-	continue;
-      
-      /* Read second column */
-      for (p = q; *p; p++) {
-	if ((*p == '\t') || (*p == ' ')) {
-	  *p = '\0';
-	  break;
-	}
-      }
-
-      /* Add to alias table if necessary */
-      if (!g_hash_table_lookup (alias_table, buf)) {
-	g_hash_table_insert (alias_table, g_strdup (buf), g_strdup (q));
-      }
-    }
-  fclose (fp);
-}
-
-static char *
-unalias_lang (char *lang)
-{
-  char *p;
-  int i;
-
-  if (!alias_table)
-    read_aliases ("/usr/share/locale/locale.alias");
-
-  i = 0;
-  while ((p = g_hash_table_lookup (alias_table, lang)) && (strcmp (p, lang) != 0))
-    {
-      lang = p;
-      if (i++ == 30)
-        {
-          static gboolean said_before = FALSE;
-	  if (!said_before)
-            g_warning ("Too many alias levels for a locale, "
-		       "may indicate a loop");
-	  said_before = TRUE;
-	  return lang;
-	}
-    }
-  return lang;
-}
-
-/* Mask for components of locale spec. The ordering here is from
- * least significant to most significant
- */
-enum
-{
-  COMPONENT_CODESET =   1 << 0,
-  COMPONENT_TERRITORY = 1 << 1,
-  COMPONENT_MODIFIER =  1 << 2
-};
-
-/* Break an X/Open style locale specification into components
- */
-static guint
-explode_locale (const gchar *locale,
-		gchar      **language, 
-		gchar      **territory, 
-		gchar      **codeset, 
-		gchar      **modifier)
-{
-  const gchar *uscore_pos;
-  const gchar *at_pos;
-  const gchar *dot_pos;
-
-  guint mask = 0;
-
-  uscore_pos = strchr (locale, '_');
-  dot_pos = strchr (uscore_pos ? uscore_pos : locale, '.');
-  at_pos = strchr (dot_pos ? dot_pos : (uscore_pos ? uscore_pos : locale), '@');
-
-  if (at_pos)
-    {
-      mask |= COMPONENT_MODIFIER;
-      *modifier = g_strdup (at_pos);
-    }
-  else
-    at_pos = locale + strlen (locale);
-
-  if (dot_pos)
-    {
-      mask |= COMPONENT_CODESET;
-      *codeset = g_strndup (dot_pos, at_pos - dot_pos);
-    }
-  else
-    dot_pos = at_pos;
-
-  if (uscore_pos)
-    {
-      mask |= COMPONENT_TERRITORY;
-      *territory = g_strndup (uscore_pos, dot_pos - uscore_pos);
-    }
-  else
-    uscore_pos = dot_pos;
-
-  *language = g_strndup (locale, uscore_pos - locale);
-
-  return mask;
-}
-
-/*
- * Compute all interesting variants for a given locale name -
- * by stripping off different components of the value.
- *
- * For simplicity, we assume that the locale is in
- * X/Open format: language[_territory][.codeset][@modifier]
- *
- * TODO: Extend this to handle the CEN format (see the GNUlibc docs)
- *       as well. We could just copy the code from glibc wholesale
- *       but it is big, ugly, and complicated, so I'm reluctant
- *       to do so when this should handle 99% of the time...
- */
-GSList *_g_compute_locale_variants (const gchar *locale);
-GSList *
-_g_compute_locale_variants (const gchar *locale)
-{
-  GSList *retval = NULL;
-
-  gchar *language = NULL;
-  gchar *territory = NULL;
-  gchar *codeset = NULL;
-  gchar *modifier = NULL;
-
-  guint mask;
-  guint i;
-
-  g_return_val_if_fail (locale != NULL, NULL);
-
-  mask = explode_locale (locale, &language, &territory, &codeset, &modifier);
-
-  /* Iterate through all possible combinations, from least attractive
-   * to most attractive.
-   */
-  for (i = 0; i <= mask; i++)
-    if ((i & ~mask) == 0)
-      {
-	gchar *val = g_strconcat (language,
-				  (i & COMPONENT_TERRITORY) ? territory : "",
-				  (i & COMPONENT_CODESET) ? codeset : "",
-				  (i & COMPONENT_MODIFIER) ? modifier : "",
-				  NULL);
-	retval = g_slist_prepend (retval, val);
-      }
-
-  g_free (language);
-  if (mask & COMPONENT_CODESET)
-    g_free (codeset);
-  if (mask & COMPONENT_TERRITORY)
-    g_free (territory);
-  if (mask & COMPONENT_MODIFIER)
-    g_free (modifier);
-
-  return retval;
-}
-
-/* The following is (partly) taken from the gettext package.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
-
-static const gchar *
-guess_category_value (const gchar *category_name)
-{
-  const gchar *retval;
-
-  /* The highest priority value is the `LANGUAGE' environment
-     variable.  This is a GNU extension.  */
-  retval = g_getenv ("LANGUAGE");
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* `LANGUAGE' is not set.  So we have to proceed with the POSIX
-     methods of looking to `LC_ALL', `LC_xxx', and `LANG'.  On some
-     systems this can be done by the `setlocale' function itself.  */
-
-  /* Setting of LC_ALL overwrites all other.  */
-  retval = g_getenv ("LC_ALL");  
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* Next comes the name of the desired category.  */
-  retval = g_getenv (category_name);
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* Last possibility is the LANG environment variable.  */
-  retval = g_getenv ("LANG");
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-#ifdef G_PLATFORM_WIN32
-  /* g_win32_getlocale() first checks for LC_ALL, LC_MESSAGES and
-   * LANG, which we already did above. Oh well. The main point of
-   * calling g_win32_getlocale() is to get the thread's locale as used
-   * by Windows and the Microsoft C runtime (in the "English_United
-   * States" format) translated into the Unixish format.
-   */
-  retval = g_win32_getlocale ();
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-#endif  
-
-  return NULL;
-}
-
-typedef struct _GLanguageNamesCache GLanguageNamesCache;
-
-struct _GLanguageNamesCache {
-  gchar *languages;
-  gchar **language_names;
-};
-
-static void
-language_names_cache_free (gpointer data)
-{
-  GLanguageNamesCache *cache = data;
-  g_free (cache->languages);
-  g_strfreev (cache->language_names);
-  g_free (cache);
-}
-
-/**
- * g_get_language_names:
- * 
- * Computes a list of applicable locale names, which can be used to 
- * e.g. construct locale-dependent filenames or search paths. The returned 
- * list is sorted from most desirable to least desirable and always contains 
- * the default locale "C".
- *
- * For example, if LANGUAGE=de:en_US, then the returned list is
- * "de", "en_US", "en", "C".
- *
- * This function consults the environment variables <envar>LANGUAGE</envar>, 
- * <envar>LC_ALL</envar>, <envar>LC_MESSAGES</envar> and <envar>LANG</envar> 
- * to find the list of locales specified by the user.
- * 
- * Return value: a %NULL-terminated array of strings owned by GLib 
- *    that must not be modified or freed.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN * 
-g_get_language_names (void)
-{
-  static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
-  GLanguageNamesCache *cache = g_static_private_get (&cache_private);
-  const gchar *value;
-
-  if (!cache)
-    {
-      cache = g_new0 (GLanguageNamesCache, 1);
-      g_static_private_set (&cache_private, cache, language_names_cache_free);
-    }
-
-  value = guess_category_value ("LC_MESSAGES");
-  if (!value)
-    value = "C";
-
-  if (!(cache->languages && strcmp (cache->languages, value) == 0))
-    {
-      gchar **languages;
-      gchar **alist, **a;
-      GSList *list, *l;
-      gint i;
-
-      g_free (cache->languages);
-      g_strfreev (cache->language_names);
-      cache->languages = g_strdup (value);
-
-      alist = g_strsplit (value, ":", 0);
-      list = NULL;
-      for (a = alist; *a; a++)
-	{
-	  gchar *b = unalias_lang (*a);
-	  list = g_slist_concat (list, _g_compute_locale_variants (b));
-	}
-      g_strfreev (alist);
-      list = g_slist_append (list, g_strdup ("C"));
-
-      cache->language_names = languages = g_new (gchar *, g_slist_length (list) + 1);
-      for (l = list, i = 0; l; l = l->next, i++)
-	languages[i] = l->data;
-      languages[i] = NULL;
-
-      g_slist_free (list);
-    }
-
-  return (G_CONST_RETURN gchar * G_CONST_RETURN *) cache->language_names;
-}
-
-guint
-g_direct_hash (gconstpointer v)
-{
-  return GPOINTER_TO_UINT (v);
-}
-
-gboolean
-g_direct_equal (gconstpointer v1,
-		gconstpointer v2)
-{
-  return v1 == v2;
-}
-
-gboolean
-g_int_equal (gconstpointer v1,
-	     gconstpointer v2)
-{
-  return *((const gint*) v1) == *((const gint*) v2);
-}
-
-guint
-g_int_hash (gconstpointer v)
-{
-  return *(const gint*) v;
-}
-
-/**
- * g_nullify_pointer:
- * @nullify_location: the memory address of the pointer.
- * 
- * Set the pointer at the specified location to %NULL.
- **/
-void
-g_nullify_pointer (gpointer *nullify_location)
-{
-  g_return_if_fail (nullify_location != NULL);
-
-  *nullify_location = NULL;
-}
-
-#if 0
-/**
- * g_get_codeset:
- * 
- * Get the codeset for the current locale.
- * 
- * Return value: a newly allocated string containing the name
- * of the codeset. This string must be freed with g_free().
- **/
-gchar *
-g_get_codeset (void)
-{
-  const gchar *charset;
-
-  g_get_charset (&charset);
-
-  return g_strdup (charset);
-}
-
-/* This is called from g_thread_init(). It's used to
- * initialize some static data in a threadsafe way.
- */
-void
-_g_utils_thread_init (void)
-{
-  g_get_language_names ();
-}
-#endif
-
-#ifdef ENABLE_NLS
-
-#include <libintl.h>
-
-#ifdef G_PLATFORM_WIN32
-
-G_WIN32_DLLMAIN_FOR_DLL_NAME (static, dll_name)
-
-static const gchar *
-_glib_get_locale_dir (void)
-{
-  static const gchar *cache = NULL;
-  if (cache == NULL)
-    cache = g_win32_get_package_installation_subdirectory
-      (GETTEXT_PACKAGE, dll_name, "lib\\locale");
-
-  return cache;
-}
-
-#undef GLIB_LOCALE_DIR
-#define GLIB_LOCALE_DIR _glib_get_locale_dir ()
-
-#endif /* G_PLATFORM_WIN32 */
-
-#if 0
-G_CONST_RETURN gchar *
-_glib_gettext (const gchar *str)
-{
-  static gboolean _glib_gettext_initialized = FALSE;
-
-  if (!_glib_gettext_initialized)
-    {
-      bindtextdomain(GETTEXT_PACKAGE, GLIB_LOCALE_DIR);
-#    ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-      bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#    endif
-      _glib_gettext_initialized = TRUE;
-    }
-  
-  return dgettext (GETTEXT_PACKAGE, str);
-}
-#endif
-
-#endif /* ENABLE_NLS */
-
-/**
- * g_strv_length:
- * @str_array: a %NULL-terminated array of strings.
- * 
- * Returns the length of the given %NULL-terminated 
- * string array @str_array.
- * 
- * Return value: length of @str_array.
- *
- * Since: 2.6
- **/
-guint
-g_strv_length (gchar **str_array)
-{
-  guint i = 0;
-
-  g_return_val_if_fail (str_array != NULL, 0);
-
-  while (str_array[i])
-    ++i;
-
-  return i;
-}
-
-#if 0
-#define __G_UTILS_C__
-#include "galiasdef.c"
-#endif

Deleted: gnucash/trunk/lib/glib26/gutils26.h
===================================================================
--- gnucash/trunk/lib/glib26/gutils26.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/glib26/gutils26.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,185 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#ifndef __G_UTILS_26_H__
-#define __G_UTILS_26_H__
-
-#include <glib/gtypes.h>
-#include <stdarg.h>
-
-/* Start hacks to make this file compile with glib 2.4 */
-#define G_GNUC_MALLOC
-/* End hacks to make this file compile with glib 2.4 */
-
-G_BEGIN_DECLS
-
-#ifdef G_OS_WIN32
-
-/* On native Win32, directory separator is the backslash, and search path
- * separator is the semicolon.
- */
-#define G_DIR_SEPARATOR '\\'
-#define G_DIR_SEPARATOR_S "\\"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#define G_SEARCHPATH_SEPARATOR ';'
-#define G_SEARCHPATH_SEPARATOR_S ";"
-
-#else  /* !G_OS_WIN32 */
-
-/* Unix */
-
-#define G_DIR_SEPARATOR '/'
-#define G_DIR_SEPARATOR_S "/"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
-#define G_SEARCHPATH_SEPARATOR ':'
-#define G_SEARCHPATH_SEPARATOR_S ":"
-
-#endif /* !G_OS_WIN32 */
-
-/* Retrive static string info
- */
-#ifdef G_OS_WIN32
-#define g_get_user_name g_get_user_name_utf8
-#define g_get_real_name g_get_real_name_utf8
-#define g_get_home_dir g_get_home_dir_utf8
-#define g_get_tmp_dir g_get_tmp_dir_utf8
-#endif
-
-G_CONST_RETURN gchar* g_get_user_name        (void);
-G_CONST_RETURN gchar* g_get_real_name        (void);
-G_CONST_RETURN gchar* g_get_home_dir         (void);
-G_CONST_RETURN gchar* g_get_tmp_dir          (void);
-gchar*                g_get_prgname          (void);
-void                  g_set_prgname          (const gchar *prgname);
-G_CONST_RETURN gchar* g_get_application_name (void);
-void                  g_set_application_name (const gchar *application_name);
-
-G_CONST_RETURN gchar*    g_get_user_data_dir      (void);
-G_CONST_RETURN gchar*    g_get_user_config_dir    (void);
-G_CONST_RETURN gchar*    g_get_user_cache_dir     (void);
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_system_data_dirs   (void);
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_system_config_dirs (void);
-
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
-
-/* Miscellaneous utility functions
- */
-gint                  g_snprintf           (gchar       *string,
-					    gulong       n,
-					    gchar const *format,
-					    ...) G_GNUC_PRINTF (3, 4);
-gint                  g_vsnprintf          (gchar       *string,
-					    gulong       n,
-					    gchar const *format,
-					    va_list      args);
-
-#ifndef G_DISABLE_DEPRECATED
-
-/* These two functions are deprecated and will be removed in the next
- * major release of GLib. Use g_path_get_dirname/g_path_get_basename
- * instead. Whatch out! The string returned by g_path_get_basename
- * must be g_freed, while the string returned by g_basename must not.*/
-G_CONST_RETURN gchar* g_basename           (const gchar *file_name);
-#define g_dirname g_path_get_dirname
-
-#endif /* G_DISABLE_DEPRECATED */
-
-#ifdef G_OS_WIN32
-#define g_get_current_dir g_get_current_dir_utf8
-#endif
-
-/* The returned strings are newly allocated with g_malloc() */
-gchar*                g_get_current_dir    (void);
-gchar*                g_path_get_basename  (const gchar *file_name) G_GNUC_MALLOC;
-gchar*                g_path_get_dirname   (const gchar *file_name) G_GNUC_MALLOC;
-
-/* Set the pointer at the specified location to NULL */
-void                  g_nullify_pointer    (gpointer    *nullify_location);
-
-/* Look for an executable in PATH, following execvp() rules */
-gchar*  g_find_program_in_path  (const gchar *program);
-
-
-/* Glib version.
- * we prefix variable declarations so they can
- * properly get exported in windows dlls.
- */
-GLIB_VAR const guint glib_major_version;
-GLIB_VAR const guint glib_minor_version;
-GLIB_VAR const guint glib_micro_version;
-GLIB_VAR const guint glib_interface_age;
-GLIB_VAR const guint glib_binary_age;
-
-const gchar * glib_check_version (guint required_major,
-                                  guint required_minor,
-                                  guint required_micro);
-
-#define GLIB_CHECK_VERSION(major,minor,micro)    \
-    (GLIB_MAJOR_VERSION > (major) || \
-     (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION > (minor)) || \
-     (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION == (minor) && \
-      GLIB_MICRO_VERSION >= (micro)))
-
-G_END_DECLS
-
-/*
- * On Windows, this macro defines a DllMain function that stores the
- * actual DLL name that the code being compiled will be included in.
- * STATIC should be empty or 'static'. DLL_NAME is the name of the
- * (pointer to the) char array where the DLL name will be stored. If
- * this is used, you must also include <windows.h>. If you need a more complex
- * DLL entry point function, you cannot use this.
- *
- * On non-Windows platforms, expands to nothing.
- */
-
-#ifndef G_PLATFORM_WIN32
-# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
-#else
-# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)			   \
-static char *dll_name;							   \
-									   \
-BOOL WINAPI								   \
-DllMain (HINSTANCE hinstDLL,						   \
-	 DWORD     fdwReason,						   \
-	 LPVOID    lpvReserved)						   \
-{									   \
-  char bfr[1000];							   \
-  switch (fdwReason)							   \
-    {									   \
-    case DLL_PROCESS_ATTACH:						   \
-      GetModuleFileName ((HMODULE) hinstDLL, bfr, sizeof (bfr));	   \
-      dll_name = g_path_get_basename (bfr);				   \
-      break;								   \
-    }									   \
-									   \
-  return TRUE;								   \
-}
-#endif /* G_PLATFORM_WIN32 */
-
-guint                 g_strv_length    (gchar       **str_array);
-
-#endif /* __G_UTILS_26_H__ */

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/Makefile.am
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/Makefile.am	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/Makefile.am	2007-01-20 15:21:35 UTC (rev 15400)
@@ -26,16 +26,10 @@
 libgoffice_1_la_SOURCES = 	\
 	goffice.c		\
 	goffice-priv.h
-if !HAVE_GLIB26
-  libgoffice_1_la_SOURCES += glib24_26-compat.c
-endif
 
 libgoffice_1_ladir = $(goffice_include_dir)
 noinst_HEADERS = 	\
 	goffice.h
-if !HAVE_GLIB26
-  noinst_HEADERS += glib24_26-compat.h
-endif
 
 # Depends on this Makefile, because it uses make variables.
 goffice-paths.h: Makefile

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -182,19 +182,12 @@
 make_absolute (PangoAttribute *attr, gpointer user_data)
 {
 	DrawTextContext *draw_context = user_data;
-#if HAVE_PANGO18
 	if (attr->klass->type == PANGO_ATTR_SIZE &&
 	    ! ((PangoAttrSize *) attr)->absolute) {
 		PangoAttrSize *size_attr = (PangoAttrSize *) attr;
 		size_attr->size = GO_PT_TO_UN ((long long) size_attr->size) / draw_context->renderer->priv->y_units_per_pixel;
 		size_attr->absolute = TRUE;
 	}
-#else
-	if (attr->klass->type == PANGO_ATTR_SIZE) {
-		PangoAttrInt *size_attr = (PangoAttrInt *) attr;
-		size_attr->value = GO_PT_TO_UN ((long long) size_attr->value) / draw_context->renderer->priv->y_units_per_pixel;
-	}
-#endif // HAVE_PANGO18
 	return FALSE;
 }
 

Deleted: gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,359 +0,0 @@
-#include <goffice/glib24_26-compat.h>
-
-#include <string.h>
-
-static const guint16 days_in_year[2][14] = 
-{  /* 0, jan feb mar apr may  jun  jul  aug  sep  oct  nov  dec */
-  {  0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, 
-  {  0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
-};
-
-/* "Julian days" just means an absolute number of days, where Day 1 ==
- *   Jan 1, Year 1
- */
-static void
-g_date_update_julian (const GDate *const_d)
-{
-  GDate *d = (GDate *) const_d;
-  GDateYear year;
-  gint index;
-  
-  g_return_if_fail (d != NULL);
-  g_return_if_fail (d->dmy);
-  g_return_if_fail (!d->julian);
-  g_return_if_fail (g_date_valid_dmy (d->day, d->month, d->year));
-  
-  /* What we actually do is: multiply years * 365 days in the year,
-   *  add the number of years divided by 4, subtract the number of
-   *  years divided by 100 and add the number of years divided by 400,
-   *  which accounts for leap year stuff. Code from Steffen Beyer's
-   *  DateCalc. 
-   */
-  
-  year = d->year - 1; /* we know d->year > 0 since it's valid */
-  
-  d->julian_days = year * 365U;
-  d->julian_days += (year >>= 2); /* divide by 4 and add */
-  d->julian_days -= (year /= 25); /* divides original # years by 100 */
-  d->julian_days += year >> 2;    /* divides by 4, which divides original by 400 */
-  
-  index = g_date_is_leap_year (d->year) ? 1 : 0;
-  
-  d->julian_days += days_in_year[index][d->month] + d->day;
-  
-  g_return_if_fail (g_date_valid_julian (d->julian_days));
-  
-  d->julian = TRUE;
-}
-
-/**
- * g_date_get_iso8601_week_of_year:
- * @date: a valid #GDate
- *
- * Returns the week of the year, where weeks are interpreted according
- * to ISO 8601. 
- * 
- * Returns: ISO 8601 week number of the year.
- *
- * Since: 2.6
- **/
-guint
-g_date_get_iso8601_week_of_year (const GDate *d)
-{
-  guint j, d4, L, d1, w;
-
-  g_return_val_if_fail (g_date_valid (d), 0);
-  
-  if (!d->julian)
-    g_date_update_julian (d);
-  g_return_val_if_fail (d->julian, 0);
-
-  /* Formula taken from the Calendar FAQ; the formula was for the
-   * Julian Period which starts on 1 January 4713 BC, so we add
-   * 1,721,425 to the number of days before doing the formula. 
-   */
-  j  = d->julian_days + 1721425;
-  d4 = (j + 31741 - (j % 7)) % 146097 % 36524 % 1461;
-  L  = d4 / 1460;
-  d1 = ((d4 - L) % 365) + L;
-  w  = d1 / 7 + 1;
-
-  return w;
-}
-
-/** ------------------------------------------------------------ **/
-
-/* The following is (partly) taken from the gettext package.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
-
-static const gchar *
-guess_category_value (const gchar *category_name)
-{
-  const gchar *retval;
-
-  /* The highest priority value is the `LANGUAGE' environment
-     variable.  This is a GNU extension.  */
-  retval = g_getenv ("LANGUAGE");
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* `LANGUAGE' is not set.  So we have to proceed with the POSIX
-     methods of looking to `LC_ALL', `LC_xxx', and `LANG'.  On some
-     systems this can be done by the `setlocale' function itself.  */
-
-  /* Setting of LC_ALL overwrites all other.  */
-  retval = g_getenv ("LC_ALL");  
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* Next comes the name of the desired category.  */
-  retval = g_getenv (category_name);
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-  /* Last possibility is the LANG environment variable.  */
-  retval = g_getenv ("LANG");
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-
-#ifdef G_PLATFORM_WIN32
-  /* g_win32_getlocale() first checks for LC_ALL, LC_MESSAGES and
-   * LANG, which we already did above. Oh well. The main point of
-   * calling g_win32_getlocale() is to get the thread's locale as used
-   * by Windows and the Microsoft C runtime (in the "English_United
-   * States" format) translated into the Unixish format.
-   */
-  retval = g_win32_getlocale ();
-  if ((retval != NULL) && (retval[0] != '\0'))
-    return retval;
-#endif  
-
-  return NULL;
-}
-
-typedef struct _GLanguageNamesCache GLanguageNamesCache;
-
-struct _GLanguageNamesCache {
-  gchar *languages;
-  gchar **language_names;
-};
-
-static void
-language_names_cache_free (gpointer data)
-{
-  GLanguageNamesCache *cache = data;
-  g_free (cache->languages);
-  g_strfreev (cache->language_names);
-  g_free (cache);
-}
-
-static char *
-unalias_lang (char *lang)
-{
-  return lang;
-}
-
-/* Mask for components of locale spec. The ordering here is from
- * least significant to most significant
- */
-enum
-{
-  COMPONENT_CODESET =   1 << 0,
-  COMPONENT_TERRITORY = 1 << 1,
-  COMPONENT_MODIFIER =  1 << 2
-};
-
-/* Break an X/Open style locale specification into components
- */
-static guint
-explode_locale (const gchar *locale,
-		gchar      **language, 
-		gchar      **territory, 
-		gchar      **codeset, 
-		gchar      **modifier)
-{
-  const gchar *uscore_pos;
-  const gchar *at_pos;
-  const gchar *dot_pos;
-
-  guint mask = 0;
-
-  uscore_pos = strchr (locale, '_');
-  dot_pos = strchr (uscore_pos ? uscore_pos : locale, '.');
-  at_pos = strchr (dot_pos ? dot_pos : (uscore_pos ? uscore_pos : locale), '@');
-
-  if (at_pos)
-    {
-      mask |= COMPONENT_MODIFIER;
-      *modifier = g_strdup (at_pos);
-    }
-  else
-    at_pos = locale + strlen (locale);
-
-  if (dot_pos)
-    {
-      mask |= COMPONENT_CODESET;
-      *codeset = g_strndup (dot_pos, at_pos - dot_pos);
-    }
-  else
-    dot_pos = at_pos;
-
-  if (uscore_pos)
-    {
-      mask |= COMPONENT_TERRITORY;
-      *territory = g_strndup (uscore_pos, dot_pos - uscore_pos);
-    }
-  else
-    uscore_pos = dot_pos;
-
-  *language = g_strndup (locale, uscore_pos - locale);
-
-  return mask;
-}
-
-/*
- * Compute all interesting variants for a given locale name -
- * by stripping off different components of the value.
- *
- * For simplicity, we assume that the locale is in
- * X/Open format: language[_territory][.codeset][@modifier]
- *
- * TODO: Extend this to handle the CEN format (see the GNUlibc docs)
- *       as well. We could just copy the code from glibc wholesale
- *       but it is big, ugly, and complicated, so I'm reluctant
- *       to do so when this should handle 99% of the time...
- */
-static GSList *
-_g_compute_locale_variants (const gchar *locale)
-{
-  GSList *retval = NULL;
-
-  gchar *language;
-  gchar *territory = NULL;
-  gchar *codeset = NULL;
-  gchar *modifier = NULL;
-
-  guint mask;
-  guint i;
-
-  g_return_val_if_fail (locale != NULL, NULL);
-
-  mask = explode_locale (locale, &language, &territory, &codeset, &modifier);
-
-  /* Iterate through all possible combinations, from least attractive
-   * to most attractive.
-   */
-  for (i = 0; i <= mask; i++)
-    if ((i & ~mask) == 0)
-      {
-	gchar *val = g_strconcat (language,
-				  (i & COMPONENT_TERRITORY) ? territory : "",
-				  (i & COMPONENT_CODESET) ? codeset : "",
-				  (i & COMPONENT_MODIFIER) ? modifier : "",
-				  NULL);
-	retval = g_slist_prepend (retval, val);
-      }
-
-  g_free (language);
-  if (mask & COMPONENT_CODESET)
-    g_free (codeset);
-  if (mask & COMPONENT_TERRITORY)
-    g_free (territory);
-  if (mask & COMPONENT_MODIFIER)
-    g_free (modifier);
-
-  return retval;
-}
-
-/**
- * g_get_language_names:
- * 
- * Computes a list of applicable locale names, which can be used to 
- * e.g. construct locale-dependent filenames or search paths. The returned 
- * list is sorted from most desirable to least desirable and always contains 
- * the default locale "C".
- *
- * For example, if LANGUAGE=de:en_US, then the returned list is
- * "de", "en_US", "en", "C".
- *
- * This function consults the environment variables <envar>LANGUAGE</envar>, 
- * <envar>LC_ALL</envar>, <envar>LC_MESSAGES</envar> and <envar>LANG</envar> 
- * to find the list of locales specified by the user.
- * 
- * Return value: a %NULL-terminated array of strings owned by GLib 
- *    that must not be modified or freed.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN * 
-g_get_language_names (void)
-{
-  static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
-  GLanguageNamesCache *cache = g_static_private_get (&cache_private);
-  const gchar *value;
-
-  if (!cache)
-    {
-      cache = g_new0 (GLanguageNamesCache, 1);
-      g_static_private_set (&cache_private, cache, language_names_cache_free);
-    }
-
-  value = guess_category_value ("LC_MESSAGES");
-  if (!value)
-    value = "C";
-
-  if (!(cache->languages && strcmp (cache->languages, value) == 0))
-    {
-      gchar **languages;
-      gchar **alist, **a;
-      GSList *list, *l;
-      gint i;
-
-      g_free (cache->languages);
-      g_strfreev (cache->language_names);
-      cache->languages = g_strdup (value);
-
-      alist = g_strsplit (value, ":", 0);
-      list = NULL;
-      for (a = alist; *a; a++)
-	{
-	  gchar *b = unalias_lang (*a);
-	  list = g_slist_concat (list, _g_compute_locale_variants (b));
-	}
-      g_strfreev (alist);
-      list = g_slist_append (list, g_strdup ("C"));
-
-      cache->language_names = languages = g_new (gchar *, g_slist_length (list) + 1);
-      for (l = list, i = 0; l; l = l->next, i++)
-	languages[i] = l->data;
-      languages[i] = NULL;
-
-      g_slist_free (list);
-    }
-
-  return (G_CONST_RETURN gchar * G_CONST_RETURN *) cache->language_names;
-}
-
-/**
- * g_strv_length:
- * @str_array: a %NULL-terminated array of strings.
- * 
- * Returns the length of the given %NULL-terminated 
- * string array @str_array.
- * 
- * Return value: length of @str_array.
- *
- * Since: 2.6
- **/
-guint
-g_strv_length (gchar **str_array)
-{
-  guint i = 0;
-
-  g_return_val_if_fail (str_array != NULL, 0);
-
-  while (str_array[i])
-    ++i;
-
-  return i;
-}

Deleted: gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.h
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/glib24_26-compat.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,39 +0,0 @@
-#ifndef GLIB24_26_COMPAT_H
-#define GLIB24_26_COMPAT_H
-
-#include <glib.h>
-
-/* from glib-2.6[.6] gdate.h */
-guint        g_date_get_iso8601_week_of_year (const GDate *date);
-
-/* from glib-2.6[.6] gutils.h */
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
-
-#ifdef G_OS_WIN32
-
-/* On Win32, the canonical directory separator is the backslash, and
- * the search path separator is the semicolon. Note that also the
- * (forward) slash works as directory separator.
- */
-#define G_DIR_SEPARATOR '\\'
-#define G_DIR_SEPARATOR_S "\\"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#define G_SEARCHPATH_SEPARATOR ';'
-#define G_SEARCHPATH_SEPARATOR_S ";"
-
-#else  /* !G_OS_WIN32 */
-
-/* Unix */
-
-#define G_DIR_SEPARATOR '/'
-#define G_DIR_SEPARATOR_S "/"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
-#define G_SEARCHPATH_SEPARATOR ':'
-#define G_SEARCHPATH_SEPARATOR_S ":"
-
-#endif /* !G_OS_WIN32 */
-
-/* from glib-2.6[.6] gstrfuncs.h */
-guint                 g_strv_length    (gchar       **str_array);
-
-#endif // GLIB24_26_COMPAT_H

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-chart.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-chart.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-chart.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -41,10 +41,6 @@
 #include <gtk/gtkspinbutton.h>
 #include <gtk/gtktogglebutton.h>
 
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 const struct {
 	char const *name;
 	GogAxisSet const axis_set;

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-object.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-object.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-object.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -39,10 +39,6 @@
 #include <gtk/gtktogglebutton.h>
 #include <gtk/gtkwidget.h>
 
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 GogEditor *
 gog_editor_new (void)
 {

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-plot.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-plot.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/graph/gog-plot.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -43,10 +43,6 @@
 #include <gsf/gsf-impl-utils.h>
 #include <string.h>
 
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 #define GOG_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_PLOT_TYPE, GogPlotClass))
 
 enum {

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -48,15 +48,6 @@
 #include <unistd.h>
 #include <errno.h>
 
-#ifndef HAVE_GTK26
-// +jsled: maybe not needed due to cascading imports under gtk+-2.6?
-#include <gtk/gtkimage.h>
-#endif
-
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 #define PREVIEW_HSIZE 150
 #define PREVIEW_VSIZE 150
 

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/utils/datetime.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/utils/datetime.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/utils/datetime.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -14,10 +14,6 @@
 
 #include <math.h>
 
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 #define SECS_PER_DAY (24 * 60 * 60)
 #define HALF_SEC (0.5 / SECS_PER_DAY)
 

Modified: gnucash/trunk/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c
===================================================================
--- gnucash/trunk/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -17,10 +17,6 @@
 #include <stdlib.h>
 #include <math.h>
 
-#ifndef HAVE_GLIB26
-#include "goffice/glib24_26-compat.h"
-#endif
-
 #define CC2XML(s) ((xmlChar const *)(s))
 #define CXML2C(s) ((char const *)(s))
 

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/Makefile.am
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/Makefile.am	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/Makefile.am	2007-01-20 15:21:35 UTC (rev 15400)
@@ -70,10 +70,6 @@
 #	gsf-command-context.c	\
 #	gsf-io-context.c
 
-if !HAVE_GLIB26
-  libgsf_1_la_SOURCES += glib24_26-compat.c
-endif
-
 libgsf_1_includedir = $(includedir)/libgsf-1/gsf
 noinst_HEADERS = 	\
 	gsf.h			\
@@ -125,10 +121,6 @@
 #	gsf-command-context.h	\
 #	gsf-io-context.h
 
-if !HAVE_GLIB26
-  noinst_HEADERS += glib24_26-compat.h
-endif
-
 install-data-local: install-libtool-import-lib
 
 uninstall-local: uninstall-libtool-import-lib

Deleted: gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,204 +0,0 @@
-/** jsled, 2005-11-08: copied from glib-2.6.6 to support libgsf compilation
-    against glib-2.4.14. **/
-
-#include <gsf/glib24_26-compat.h>
-
-/* gstdio.c - wrappers for C library functions
- *
- * Copyright 2004 Tor Lillqvist
- *
- * GLib is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * GLib is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GLib; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-//#include <stdio.h>
-#include <string.h>
-//#include <stdlib.h>
-
-/** ------------------------------------------------------------ **/
-/* START gconvert.c  */
-
-#include <glib/gunicode.h>
-#include <glib/gconvert.h>
-#include <glib/gthread.h>
-
-typedef struct _GFilenameCharsetCache GFilenameCharsetCache;
-
-struct _GFilenameCharsetCache {
-  gboolean is_utf8;
-  gchar *charset;
-  gchar **filename_charsets;
-};
-
-/**
- * g_get_filename_charsets:
- * @charsets: return location for the %NULL-terminated list of encoding names
- *
- * Determines the preferred character sets used for filenames.
- * The first character set from the @charsets is the filename encoding, the
- * subsequent character sets are used when trying to generate a displayable
- * representation of a filename, see g_filename_display_name().
- *
- * On Unix, the character sets are determined by consulting the
- * environment variables <envar>G_FILENAME_ENCODING</envar> and
- * <envar>G_BROKEN_FILENAMES</envar>. On Windows, the character set
- * used in the GLib API is always UTF-8 and said environment variables
- * have no effect.
- *
- * <envar>G_FILENAME_ENCODING</envar> may be set to a comma-separated list 
- * of character set names. The special token "@locale" is taken to mean the 
- * character set for the current locale. If <envar>G_FILENAME_ENCODING</envar> 
- * is not set, but <envar>G_BROKEN_FILENAMES</envar> is, the character set of 
- * the current locale is taken as the filename encoding. If neither environment
- * variable is set, UTF-8 is taken as the filename encoding, but the character
- * set of the current locale is also put in the list of encodings.
- *
- * The returned @charsets belong to GLib and must not be freed.
- *
- * Note that on Unix, regardless of the locale character set or
- * <envar>G_FILENAME_ENCODING</envar> value, the actual file names present on a
- * system might be in any random encoding or just gibberish.
- *
- * Return value: %TRUE if the filename encoding is UTF-8.
- * 
- * Since: 2.6
- */
-static gboolean
-g_get_filename_charsets (G_CONST_RETURN gchar ***filename_charsets) 
-{
-  static const gchar *charsets[] = {
-    "UTF-8",
-    NULL
-  };
-
-#ifdef G_OS_WIN32
-  /* On Windows GLib pretends that the filename charset is UTF-8 */
-  if (filename_charsets)
-    *filename_charsets = charsets;
-
-  return TRUE;
-#else
-  gboolean result;
-
-  /* Cygwin works like before */
-  result = g_get_charset (&(charsets[0]));
-
-  if (filename_charsets)
-    *filename_charsets = charsets;
-
-  return result;
-#endif
-}
-
-static gchar *
-make_valid_utf8 (const gchar *name)
-{
-  GString *string;
-  const gchar *remainder, *invalid;
-  gint remaining_bytes, valid_bytes;
-  
-  string = NULL;
-  remainder = name;
-  remaining_bytes = strlen (name);
-  
-  while (remaining_bytes != 0) 
-    {
-      if (g_utf8_validate (remainder, remaining_bytes, &invalid)) 
-	break;
-      valid_bytes = invalid - remainder;
-    
-      if (string == NULL) 
-	string = g_string_sized_new (remaining_bytes);
-
-      g_string_append_len (string, remainder, valid_bytes);
-      g_string_append_c (string, '?');
-      
-      remaining_bytes -= valid_bytes + 1;
-      remainder = invalid + 1;
-    }
-  
-  if (string == NULL)
-    return g_strdup (name);
-  
-  g_string_append (string, remainder);
-  g_string_append (string, " (invalid encoding)");
-
-  g_assert (g_utf8_validate (string->str, -1, NULL));
-  
-  return g_string_free (string, FALSE);
-}
-
-/**
- * g_filename_display_name:
- * @filename: a pathname hopefully in the GLib file name encoding
- * 
- * Converts a filename into a valid UTF-8 string. The 
- * conversion is not necessarily reversible, so you 
- * should keep the original around and use the return
- * value of this function only for display purposes.
- * Unlike g_filename_to_utf8(), the result is guaranteed 
- * to be non-NULL even if the filename actually isn't in the GLib
- * file name encoding.
- *
- * If you know the whole pathname of the file you should use
- * g_filename_display_basename(), since that allows location-based
- * translation of filenames.
- *
- * Return value: a newly allocated string containing
- *   a rendition of the filename in valid UTF-8
- *
- * Since: 2.6
- **/
-gchar *
-g_filename_display_name (const gchar *filename)
-{
-  gint i;
-  const gchar **charsets;
-  gchar *display_name = NULL;
-  gboolean is_utf8;
- 
-  is_utf8 = g_get_filename_charsets (&charsets);
-
-  if (is_utf8)
-    {
-      if (g_utf8_validate (filename, -1, NULL))
-	display_name = g_strdup (filename);
-    }
-  
-  if (!display_name)
-    {
-      /* Try to convert from the filename charsets to UTF-8.
-       * Skip the first charset if it is UTF-8.
-       */
-      for (i = is_utf8 ? 1 : 0; charsets[i]; i++)
-	{
-	  display_name = g_convert (filename, -1, "UTF-8", charsets[i], 
-				    NULL, NULL, NULL);
-
-	  if (display_name)
-	    break;
-	}
-    }
-  
-  /* if all conversions failed, we replace invalid UTF-8
-   * by a question mark
-   */
-  if (!display_name) 
-    display_name = make_valid_utf8 (filename);
-
-  return display_name;
-}

Deleted: gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.h
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/glib24_26-compat.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,79 +0,0 @@
-/* This file has been copied from glib-2.6.6 into libgsf-1.12.3 to support
- * compilation against glib-2.4.14. -- jsled, 2005-11-08
- */
-
-#ifndef __GLIB_24_26_COMPAT_H__
-#define __GLIB_24_26_COMPAT_H__
-
-#include <glib.h>
-
-// START from gstdio.h
-/* gstdio.h - GFilename wrappers for C library functions
- *
- * Copyright 2004 Tor Lillqvist
- *
- * GLib is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * GLib is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GLib; see the file COPYING.LIB.  If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <sys/stat.h>
-
-/* Just pass on to the system functions, so there's no potential for data
- * format mismatches, especially with large file interfaces.
- */
-
-#define g_open    open
-#define g_rename  rename
-#define g_mkdir   mkdir
-#define g_stat    stat
-#define g_lstat   lstat
-#define g_unlink  unlink
-#define g_remove  remove
-#define g_rmdir   rmdir
-#define g_fopen   fopen
-#define g_freopen freopen
-
-// END from gstdio.h
-
-// START from gconvert.h
-gchar *g_filename_display_name (const gchar *filename); // G_GNUC_MALLOC;
-// END from gconvert.h
-
-/* from glib-2.6[.6] gutils.h */
-#ifdef G_OS_WIN32
-
-/* On Win32, the canonical directory separator is the backslash, and
- * the search path separator is the semicolon. Note that also the
- * (forward) slash works as directory separator.
- */
-#define G_DIR_SEPARATOR '\\'
-#define G_DIR_SEPARATOR_S "\\"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#define G_SEARCHPATH_SEPARATOR ';'
-#define G_SEARCHPATH_SEPARATOR_S ";"
-
-#else  /* !G_OS_WIN32 */
-
-/* Unix */
-
-#define G_DIR_SEPARATOR '/'
-#define G_DIR_SEPARATOR_S "/"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
-#define G_SEARCHPATH_SEPARATOR ':'
-#define G_SEARCHPATH_SEPARATOR_S ":"
-
-#endif /* !G_OS_WIN32 */
-
-#endif /* __GLIB_24_26_COMPAT_H__ */

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-memory.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-memory.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-memory.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -26,11 +26,7 @@
 #include <gsf/gsf-impl-utils.h>
 #include <gsf/gsf-utils.h>
 #include <gsf/gsf-shared-memory.h>
-#ifdef HAVE_GLIB26
 #include <glib/gstdio.h>
-#else
-#include "glib24_26-compat.h"
-#endif // HAVE_GLIB26
 
 #ifdef HAVE_MMAP
 

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -24,11 +24,7 @@
 #include <gsf/gsf-input-impl.h>
 #include <gsf/gsf-impl-utils.h>
 #include <gsf/gsf-utils.h>
-#ifdef HAVE_GLIB26
 #include <glib/gstdio.h>
-#else
-#include "glib24_26-compat.h"
-#endif // HAVE_GLIB26
 
 #include <stdio.h>
 #include <errno.h>

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -26,11 +26,7 @@
 #include <gsf/gsf-output-stdio.h>
 #include <gsf/gsf-impl-utils.h>
 #include <gsf/gsf-utils.h>
-#ifdef HAVE_GLIB26
 #include <glib/gstdio.h>
-#else
-#include "glib24_26-compat.h"
-#endif // HAVE_GLIB26
 
 #include <errno.h>
 #ifdef HAVE_UNISTD_H

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -30,10 +30,6 @@
 #include <time.h>
 #include <zlib.h>
 
-#ifndef HAVE_GLIB26
-#include <gsf/glib24_26-compat.h>
-#endif
-
 #undef G_LOG_DOMAIN
 #define G_LOG_DOMAIN "libgsf:zip"
 

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -24,11 +24,7 @@
 #include <gsf/gsf-output-impl.h>
 #include <gsf/gsf-impl-utils.h>
 #include <gsf/gsf-utils.h>
-#ifdef HAVE_GLIB26
 #include <glib/gstdio.h>
-#else
-#include "glib24_26-compat.h"
-#endif // HAVE_GLIB26
 
 #include <stdio.h>
 #include <string.h>

Modified: gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-utils.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-utils.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/gsf/gsf-utils.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -29,10 +29,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#ifndef HAVE_GLIB26
-#include <gsf/glib24_26-compat.h>
-#endif
-
 /*
  * Glib gets this wrong, really.  ARM's floating point format is a weird
  * mixture.

Modified: gnucash/trunk/lib/libgsf-1.12.3/tests/test-cp-zip.c
===================================================================
--- gnucash/trunk/lib/libgsf-1.12.3/tests/test-cp-zip.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/lib/libgsf-1.12.3/tests/test-cp-zip.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,7 +1,3 @@
-#ifndef HAVE_GLIB26
-  #include <gsf/glib24_26-compat.h>
-#endif
-
 /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * test-cp-zip.c: Test gsf-outfile-zip by cloning a file the hard way

Modified: gnucash/trunk/src/Makefile.am
===================================================================
--- gnucash/trunk/src/Makefile.am	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/Makefile.am	2007-01-20 15:21:35 UTC (rev 15400)
@@ -52,5 +52,4 @@
   gnc-test-env \
   valgrind-gnucash.supp \
   guile-mappings.h \
-  glib-compat.h \
-  gtk-compat.h
+  glib-compat.h

Modified: gnucash/trunk/src/app-utils/file-utils.h
===================================================================
--- gnucash/trunk/src/app-utils/file-utils.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/app-utils/file-utils.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -30,9 +30,6 @@
 #define GNC_FILE_UTILS_H
 
 #include <stdio.h>		/* for FILE* */
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 
 char * gncFindFile (const char * filename);
 

Modified: gnucash/trunk/src/bin/gnucash-bin.c
===================================================================
--- gnucash/trunk/src/bin/gnucash-bin.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/bin/gnucash-bin.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -197,56 +197,6 @@
     char *p;
     int debugging = 0;
     char *namespace_regexp = NULL;
-#ifndef HAVE_GTK26
-    poptContext pc;
-    int rc;
-    struct poptOption options[] = {
-        POPT_AUTOHELP
-        {"version", 'v', POPT_ARG_NONE, &gnucash_show_version, 1, 
-         _("Show GnuCash version"), NULL},
-        {"debug", '\0', POPT_ARG_NONE, &debugging, 0,
-         _("Enable debugging mode"), NULL},
-        {"loglevel", '\0', POPT_ARG_INT, &loglevel, 0,
-	 /* Translators: This is the command line option autohelp
-	    text; see popt(3) */
-         _("Set the logging level from 0 (least) to 6 (most)"), 
-	 /* Translators: Argument description for autohelp; see popt(3) */
-         _("LOGLEVEL")},
-        {"nofile", '\0', POPT_ARG_NONE, &nofile, 0,
-         _("Do not load the last file opened"), NULL},
-        {"config-path", '\0', POPT_ARG_STRING, &config_path, 0,
-         _("Set configuration path"),
-	 /* Translators: Argument description for autohelp; see popt(3) */
-	 _("CONFIGPATH")},
-        {"share-path", '\0', POPT_ARG_STRING, &share_path, 0,
-         _("Set shared data file search path"),
-	 /* Translators: Argument description for autohelp; see popt(3) */
-	 _("SHAREPATH")},
-        {"doc-path", '\0', POPT_ARG_STRING, &help_path, 0,
-         _("Set the search path for documentation files"),
-	 /* Translators: Argument description for autohelp; see popt(3) */
-	 _("DOCPATH")},
-        {"add-price-quotes", '\0', POPT_ARG_STRING, &add_quotes_file, 0,
-         _("Add price quotes to given GnuCash datafile"),
-	 /* Translators: Argument description for autohelp; see popt(3) */
-	 _("FILE")},
-        {"namespace", '\0', POPT_ARG_STRING, &namespace_regexp, 0, 
-         _("Regular expression determining which namespace commodities will be retrieved"), 
-	 /* Translators: Argument description for autohelp; see popt(3) */
-         _("REGEXP")},
-        POPT_TABLEEND
-    };
-    
-    /* Pretend that argv[0] is "gnucash" */
-    if ((p = strstr(argv[0], "-bin"))) *p = '\0';
-
-    pc = poptGetContext(NULL, *argc, (const char **)argv, options, 0);
-    poptSetOtherOptionHelp(pc, "[OPTIONS...] [datafile]");
-    
-    while ((rc = poptGetNextOpt(pc)) > 0);
-    file_to_load = poptGetArg(pc);
-    poptFreeContext(pc);
-#else
     GError *error = NULL;
     GOptionContext *context;
     GOptionEntry options[] = {
@@ -302,7 +252,6 @@
 
     if (*argc > 0)
       file_to_load = argv[1];
-#endif
 
     if (gnucash_show_version) {
         if (is_development_version)

Modified: gnucash/trunk/src/business/business-gnome/dialog-invoice.c
===================================================================
--- gnucash/trunk/src/business/business-gnome/dialog-invoice.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/business/business-gnome/dialog-invoice.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -53,10 +53,6 @@
 
 #include "gncEntryLedger.h"
 
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
-
 #include "gnc-plugin-page.h"
 #include "gnc-general-search.h"
 #include "dialog-date-close.h"

Modified: gnucash/trunk/src/core-utils/gnc-gkeyfile-utils.h
===================================================================
--- gnucash/trunk/src/core-utils/gnc-gkeyfile-utils.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/core-utils/gnc-gkeyfile-utils.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -37,11 +37,7 @@
 #ifndef GNC_GKEYFILE_UTILS_H
 #define GNC_GKEYFILE_UTILS_H
 
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 
-
 /** Open and read a key/value file from disk into memory.
  *
  *  @param file The name of the file to load.  This should be a fully

Modified: gnucash/trunk/src/core-utils/gnc-gtk-utils.c
===================================================================
--- gnucash/trunk/src/core-utils/gnc-gtk-utils.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/core-utils/gnc-gtk-utils.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -29,25 +29,6 @@
 #define CHANGED_ID "changed_id"
 
 
-#ifndef HAVE_GTK26
-/* Backwards compatability support for function introduced in gtk
- * 2.6. */
-gchar *
-gtk_combo_box_get_active_text (GtkComboBox *combo_box)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  gchar *text;
-
-  if (!gtk_combo_box_get_active_iter(combo_box, &iter))
-    return NULL;
-  model = gtk_combo_box_get_model(combo_box);
-  gtk_tree_model_get(model, &iter, 0, &text, -1);
-  return text;
-}
-#endif
-
-
 /** Find an entry in the GtkComboBoxEntry by its text value, and set
  *  the widget to that value.  This function also records the index of
  *  that text value for use when the user leaves the widget.
@@ -190,9 +171,7 @@
   model = gtk_combo_box_get_model(GTK_COMBO_BOX(cbe));
   gtk_entry_completion_set_model(completion, model);
   gtk_entry_completion_set_text_column(completion, 0);
-#ifdef HAVE_GTK26
   gtk_entry_completion_set_inline_completion(completion, TRUE);
-#endif
   gtk_entry_set_completion(entry, completion);
   g_object_unref(completion);
 }

Modified: gnucash/trunk/src/core-utils/gnc-gtk-utils.h
===================================================================
--- gnucash/trunk/src/core-utils/gnc-gtk-utils.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/core-utils/gnc-gtk-utils.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -39,16 +39,6 @@
 
 #include <gtk/gtk.h>
 
-/** @name gtk Backwards Compatability Functions
- @{ 
-*/
-#ifndef HAVE_GTK26
-gchar *gtk_combo_box_get_active_text   (GtkComboBox *combo_box);
-#endif
-
-/** @} */
-
-
 /** @name gtk Miscellaneous Functions
  @{ 
 */

Modified: gnucash/trunk/src/engine/gnc-filepath-utils.c
===================================================================
--- gnucash/trunk/src/engine/gnc-filepath-utils.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/engine/gnc-filepath-utils.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -35,11 +35,7 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
-#ifdef HAVE_GLIB26
 #include <glib/gstdio.h>
-#else
-#define g_mkdir(a,b) mkdir(a,b)
-#endif
 
 #include <stdlib.h>
 #include <stdio.h>

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -36,9 +36,6 @@
 
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 #include "gnc-plugin-page-account-tree.h"
 #include "gnc-plugin-page-register.h"
 

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-budget.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-budget.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -39,10 +39,6 @@
 #include <glade/glade.h>
 #include "gnc-date-edit.h"
 
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
-
 #include "gnc-plugin-page-register.h"
 #include "gnc-budget.h"
 

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-register.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -38,9 +38,6 @@
 #include "guile-mappings.h"
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 #include "swig-runtime.h"
 
 #include "gnc-plugin-page-register.h"
@@ -76,8 +73,6 @@
 #include "window-reconcile.h"
 #include "window-report.h"
 
-#include "gtk-compat.h"
-
 /* This static indicates the debugging module that this .o belongs to.  */
 static QofLogModule log_module = GNC_MOD_GUI;
 

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -39,9 +39,6 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glade/glade-xml.h>
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 #include "gnc-exp-parser.h"
 #include "gnc-engine.h"
 #include "Transaction.h"

Modified: gnucash/trunk/src/gnome/window-reconcile.c
===================================================================
--- gnucash/trunk/src/gnome/window-reconcile.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome/window-reconcile.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -31,7 +31,6 @@
 #include "config.h"
 
 #include <gtk/gtk.h>
-#include "gtk-compat.h"
 #include <glib/gi18n.h>
 
 #include "Scrub.h"

Modified: gnucash/trunk/src/gnome-utils/dialog-account.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-account.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/dialog-account.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -25,9 +25,6 @@
 #include "config.h"
 
 #include <gnome.h>
-#ifndef HAVE_GLIB26
-#include "gutils26.h"
-#endif
 #include <glib/gi18n.h>
 #include <math.h>
 #include <string.h>

Modified: gnucash/trunk/src/gnome-utils/dialog-options.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-options.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/dialog-options.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -23,12 +23,7 @@
 
 #include "config.h"
 
-#ifdef HAVE_GTK26 
 #include <gtk/gtk.h>
-#else
-#undef GNOME_DISABLE_DEPRECATED
-#include <gnome.h>
-#endif
 #include <gdk/gdk.h>
 #include <glib/gi18n.h>
 #include "swig-runtime.h"
@@ -221,7 +216,6 @@
   return;
 }
 
-#ifdef HAVE_GTK26
 static void
 gnc_image_option_update_preview_cb (GtkFileChooser *chooser,
 				    GNCOption *option)
@@ -269,14 +263,6 @@
     return;
   g_object_set_data_full(G_OBJECT(chooser), LAST_SELECTION, filename, g_free);
 }
-#else
-static void
-gnc_image_option_clear_selection_cb (GtkButton *button,
-				     GtkEntry *entry)
-{
-   gtk_entry_set_text(entry, "");
-}
-#endif
 
 /********************************************************************\
  * gnc_option_set_ui_value_internal                                 *
@@ -1999,9 +1985,6 @@
   GtkWidget *value;
   GtkWidget *label;
   GtkWidget *button;
-#ifndef HAVE_GTK26
-  GtkWidget *entry;
-#endif
   gchar *colon_name;
 
   ENTER("option %p(%s), name %s", option, gnc_option_name(option), name);
@@ -2015,7 +1998,6 @@
   button = gtk_button_new_with_label(_("Clear"));
   gtk_tooltips_set_tip(tooltips, button, _("Clear any selected image file."), NULL);
 
-#ifdef HAVE_GTK26
   value = gtk_file_chooser_button_new(_("Select image"),
 				      GTK_FILE_CHOOSER_ACTION_OPEN);
   gtk_tooltips_set_tip(tooltips, value, _("Select an image file."), NULL);
@@ -2031,19 +2013,7 @@
 		   G_CALLBACK(gnc_image_option_update_preview_cb), option);
   g_signal_connect_swapped(G_OBJECT (button), "clicked",
 		   G_CALLBACK(gtk_file_chooser_unselect_all), value);
-#else
-  value = gnome_pixmap_entry_new(NULL, _("Select pixmap"),
-				 FALSE);
-  gtk_tooltips_set_tip(tooltips, value, _("Select an image file."), NULL);
-  gnome_pixmap_entry_set_preview(GNOME_PIXMAP_ENTRY(value), FALSE);
 
-  entry = gnome_pixmap_entry_gtk_entry (GNOME_PIXMAP_ENTRY(value));
-  g_signal_connect(G_OBJECT (entry), "changed",
-		   G_CALLBACK(gnc_option_changed_widget_cb), option);
-  g_signal_connect(G_OBJECT (button), "clicked",
-		   G_CALLBACK(gnc_image_option_clear_selection_cb), entry);
-#endif
-    
   gnc_option_set_widget (option, value);
   gnc_option_set_ui_value(option, FALSE);
 
@@ -2490,7 +2460,6 @@
 
     if (string && *string)
     {
-#ifdef HAVE_GTK26
       gchar *test;
       DEBUG("string = %s", string);
       gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(widget), string);
@@ -2499,12 +2468,6 @@
 			     g_strdup(string), g_free);
       DEBUG("Set %s, retrieved %s", string, test);
       gnc_image_option_update_preview_cb(GTK_FILE_CHOOSER(widget), option);
-#else
-      GtkEntry *entry;
-      DEBUG("string = %s", string);
-      entry = GTK_ENTRY(gnome_pixmap_entry_gtk_entry(GNOME_PIXMAP_ENTRY(widget)));
-      gtk_entry_set_text(entry, string);
-#endif
     }
     LEAVE("FALSE");
     return FALSE;
@@ -2880,7 +2843,6 @@
 static SCM
 gnc_option_get_ui_value_pixmap (GNCOption *option, GtkWidget *widget)
 {
-#ifdef HAVE_GTK26
   gchar *string;
   SCM result;
 
@@ -2890,12 +2852,6 @@
   if (string)
     g_free(string);
   return result;
-#else
-  GnomePixmapEntry * p = GNOME_PIXMAP_ENTRY(widget);
-  char             * string = gnome_pixmap_entry_get_filename(p);
-
-  return (scm_makfrom0str(string ? string : ""));
-#endif
 }
 
 static SCM

Modified: gnucash/trunk/src/gnome-utils/dialog-utils.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-utils.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/dialog-utils.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -905,16 +905,12 @@
   GtkWidget *button;
 
   button = gtk_button_new_with_label(label);
-#ifdef HAVE_GTK26
   if (stock_id) {
     GtkWidget *image;
 
     image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
     gtk_button_set_image(GTK_BUTTON(button), image);
   }
-#else
-  gtk_button_set_use_underline(GTK_BUTTON(button), TRUE);
-#endif
   gtk_widget_show_all(button);
   gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button, response);
 }
@@ -983,61 +979,3 @@
 
     return response;
 }
-
-#ifndef HAVE_GTK26
-
-/** Find the first GtkLabel in a container. When called on a gtk2.4
- *  message dialog, there is only one label in the dialog so theis
- *  should return it. */
-static void
-find_label (GtkWidget *widget, gpointer data)
-{
-  GtkWidget **label = data;
-
-  if (*label)
-    return;
-
-  if (GTK_IS_LABEL(widget)) {
-    *label = widget;
-    return;
-  }
-
-  if (GTK_IS_CONTAINER(widget)) {
-    gtk_container_foreach(GTK_CONTAINER(widget), find_label, data);
-  }
-}
-
-/** Mimic the gtk2.6 function to add secondary information to a
- *  message dialog. */
-void
-gtk_message_dialog_format_secondary_text(GtkMessageDialog *dialog,
-					 const gchar *format,
-					 ...)
-{
-  GtkWidget *label = NULL;
-  const gchar *current;
-  gchar *primary, *secondary;
-  va_list args;
-
-  gtk_container_foreach(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),
-			find_label, &label);
-  if (!label)
-    return;
-
-  /* Get the current markup. */
-  current = gtk_label_get_label(GTK_LABEL(label));
-
-  /* Format the text to be added. */
-  va_start(args, format);
-  secondary = g_strdup_vprintf(format, args);
-  va_end(args);
-
-  /* Append the two strings, making the first one bold. */
-  primary = g_strdup_printf("<b>%s</b>\n\n%s", current, secondary);
-  gtk_label_set_markup(GTK_LABEL(label), primary);
-
-  g_free(primary);
-  g_free(secondary);
-}
-
-#endif

Modified: gnucash/trunk/src/gnome-utils/dialog-utils.h
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-utils.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/dialog-utils.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -152,11 +152,4 @@
 gint
 gnc_dialog_run(GtkDialog *dialog, const gchar *gconf_key);
 
-#ifndef HAVE_GTK26
-void
-gtk_message_dialog_format_secondary_text(GtkMessageDialog *dialog,
-					 const gchar *message_format,
-					 ...) G_GNUC_PRINTF (2, 3);
 #endif
-
-#endif

Modified: gnucash/trunk/src/gnome-utils/gnc-main-window.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-main-window.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-main-window.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -39,10 +39,6 @@
 #include <glib/gi18n.h>
 #include <libguile.h>
 #include "guile-mappings.h"
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
-#include "gtk-compat.h"
 
 #include "gnc-plugin.h"
 #include "gnc-plugin-manager.h"
@@ -3278,7 +3274,6 @@
 	gnc_gnome_help (HF_HELP, NULL);
 }
 
-#ifdef HAVE_GTK26
 /** This is a helper function to find a data file and suck it into
  *  memory.
  *
@@ -3380,49 +3375,8 @@
 	if (authors)     g_strfreev(authors);
 	g_object_unref (logo);
 }
-#else
-static void
-gnc_main_window_cmd_help_about (GtkAction *action, GncMainWindow *window)
-{
-	GtkWidget *about;
-	/* Translators: This is the "About" message. */
-	const gchar *message = _("The GnuCash personal finance manager.\n"
-				 "The GNU way to manage your money!\n"
-				 "http://www.gnucash.org/");
-	const gchar *copyright = "© 1998-2002 Linas Vepstas";
-	const gchar *authors[] = {
-		"Derek Atkins <derek at ihtfp.com>",
-		"Rob Browning <rlb at cs.utexas.edu>",
-		"Bill Gribble <grib at billgribble.com>",
-		"David Hampton <hampton at employees.org>",
-		"James LewisMoss <dres at debian.org>",
-		"Robert Graham Merkel <rgmerk at mira.net>",
-		"Dave Peticolas <dave at krondo.com>",
-		"Joshua Sled <jsled at asynchronous.org>",
-		"Christian Stimming <stimming at tuhh.de>",
-		"Linas Vepstas <linas at linas.org>",
-		NULL
-	};
-	const gchar *documenters[] = {
-		NULL
-	};
-	/* Translators: Insert your translator's credits here so that
-	   they will be shown in the "About" dialog. */
-	const gchar *translator_credits = _("translator_credits");
-	GdkPixbuf *logo;
 
-	logo = gnc_gnome_get_gdkpixbuf ("appicon.png");
 
-	about = gnome_about_new ("GnuCash", VERSION, copyright, message, authors, documenters,
-				 strcmp (translator_credits, "translator_credits") != 0 ? translator_credits : NULL,
-				 logo);
-
-	g_object_unref (logo);
-	gtk_dialog_run (GTK_DIALOG (about));
-}
-#endif
-
-
 /************************************************************
  *                                                          *
  ************************************************************/

Modified: gnucash/trunk/src/gnome-utils/gnc-plugin-file-history.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-plugin-file-history.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-plugin-file-history.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -34,7 +34,6 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
-#include "gtk-compat.h"
 #include <string.h>
 
 #include "gnc-gkeyfile-utils.h"

Modified: gnucash/trunk/src/gnome-utils/gnc-plugin-page.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-plugin-page.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-plugin-page.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -50,11 +50,7 @@
 #define GNC_PLUGIN_PAGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GNC_PLUGIN_PAGE, GncPluginPageClass))
 
 /* typedefs & structures */
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 
-
 /** The instance data structure for a content plugin. */
 typedef struct GncPluginPage {
 	GObject gobject;		/**< The parent object data. */

Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -28,10 +28,6 @@
 #include <glib/gi18n.h>
 #include <string.h>
 
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
-
 #include "gnc-tree-view.h"
 #include "gnc-tree-model-account.h"
 #include "gnc-tree-model-account-types.h"

Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1918,7 +1918,6 @@
   return column;
 }
 
-#if HAVE_GTK26
 GtkTreeViewColumn *
 gnc_tree_view_add_combo_column (GncTreeView *view,
                                 const gchar *column_title,
@@ -1976,7 +1975,6 @@
   gnc_tree_view_append_column (view, column);
   return column;
 }
-#endif
 
 GtkCellRenderer *
 gnc_tree_view_column_get_renderer(GtkTreeViewColumn *column)

Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -188,7 +188,7 @@
 			       gint model_data_column,
 			       gint model_visibility_column,
 			       GtkTreeIterCompareFunc column_sort_fn);
-#if HAVE_GTK26
+
 /** This function adds a new combobox column to a GncTreeView base
  *  view.  The parameters it takes in common with
  *  gnc_tree_view_add_text_column() behave the same as there.  In
@@ -206,7 +206,6 @@
                                 GtkTreeModel *combo_tree_model,
                                 gint combo_model_text_column,
                                 GtkTreeIterCompareFunc column_sort_fn);
-#endif
 
 /** This function adds a new numeric column to a GncTreeView base
  *  view.  It takes all the parameters necessary to hook a

Modified: gnucash/trunk/src/gnome-utils/gnctreemodelsort.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnctreemodelsort.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gnome-utils/gnctreemodelsort.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -58,7 +58,6 @@
 #include "gtk/gtktreednd.h"      //CAS: path changed
 //#include "gtk/gtkalias.h"      //CAS: header commented
 #include <glib/gi18n.h> //CAS: header added
-#include "gtk-compat.h" //CAS: header added
 #define P_(x) _(x)      //CAS: macro added
 
 typedef struct _SortElt SortElt;

Deleted: gnucash/trunk/src/gtk-compat.h
===================================================================
--- gnucash/trunk/src/gtk-compat.h	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/gtk-compat.h	2007-01-20 15:21:35 UTC (rev 15400)
@@ -1,29 +0,0 @@
-/*
- * gtk-compat.h - GTK version compatability mappings
- * Copyright (C) 2006, David Hampton <hampton at employees.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#ifndef HAVE_GTK26
-#define	gtk_action_set_sensitive(action, xxx) \
-    g_object_set((action), "sensitive", (xxx), NULL)
-#define	gtk_action_set_visible(action, xxx) \
-    g_object_set((action), "visible", (xxx), NULL)
-
-#define GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID -2
-#endif
-

Modified: gnucash/trunk/src/import-export/hbci/dialog-hbcitrans.c
===================================================================
--- gnucash/trunk/src/import-export/hbci/dialog-hbcitrans.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/import-export/hbci/dialog-hbcitrans.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -43,7 +43,6 @@
 #endif
 #include <iconv.h>
 
-#include "gtk-compat.h"
 #include "dialog-utils.h"
 #include "gnc-glib-utils.h"
 #include "gnc-ui.h"

Modified: gnucash/trunk/src/register/register-gnome/gnucash-item-list.c
===================================================================
--- gnucash/trunk/src/register/register-gnome/gnucash-item-list.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/register/register-gnome/gnucash-item-list.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -35,7 +35,6 @@
 #include "gnc-engine.h"
 #include "gnucash-item-list.h"
 #include "gnucash-scrolled-window.h"
-#include "gtk-compat.h"
 
 /* Item list signals */
 enum {

Modified: gnucash/trunk/src/report/report-gnome/gnc-plugin-page-report.c
===================================================================
--- gnucash/trunk/src/report/report-gnome/gnc-plugin-page-report.c	2007-01-19 23:45:45 UTC (rev 15399)
+++ gnucash/trunk/src/report/report-gnome/gnc-plugin-page-report.c	2007-01-20 15:21:35 UTC (rev 15400)
@@ -41,10 +41,6 @@
 
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
-#include "gtk-compat.h"
-#ifndef HAVE_GLIB26
-#include "gkeyfile.h"
-#endif
 #include <libguile.h>
 #include <sys/stat.h>
 #include <errno.h>



More information about the gnucash-changes mailing list