Index: configure.in
===================================================================
--- configure.in	(revision 2020)
+++ configure.in	(working copy)
@@ -45,7 +45,7 @@
 AC_SUBST(BURN_LIBS)
 
 # Find the UI libraries
-PKG_CHECK_MODULES(UI, gtk+-2.0 >= 2.8  libglade-2.0  gconf-2.0  libgnomeui-2.0 >= 2.13.0  gnome-vfs-2.0 >= 2.9 gnome-vfs-module-2.0 > 2.9 gmodule-export-2.0 dbus-glib-1)
+PKG_CHECK_MODULES(UI, gtk+-2.0 >= 2.8  libglade-2.0  gconf-2.0  libgnomeui-2.0 >= 2.13.0  gio-2.0  gmodule-export-2.0 dbus-glib-1)
 AC_SUBST(UI_CFLAGS)
 AC_SUBST(UI_LIBS)
 
Index: src/sj-main.c
===================================================================
--- src/sj-main.c	(revision 2020)
+++ src/sj-main.c	(working copy)
@@ -28,6 +28,7 @@
 
 #include <glib/gi18n.h>
 #include <gdk/gdkkeysyms.h>
+#include <gio/gio.h>
 #include <gtk/gtk.h>
 #include <glade/glade.h>
 #include <gconf/gconf-client.h>
@@ -36,7 +37,6 @@
 #include <libgnome/gnome-url.h>
 #include <libgnomeui/gnome-ui-init.h>
 #include <libgnomeui/gnome-authentication-manager.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
 #include <profiles/gnome-media-profiles.h>
 #include <gst/gst.h>
 
@@ -1496,12 +1496,15 @@
   if (s != NULL) {
     g_free (s);
   } else {
+    GFile *gfile;
     char *uri;
     s = gconf_client_get_string (gconf_client, GCONF_BASEPATH, NULL);
     if (s == NULL)
       return;
-    uri = gnome_vfs_get_uri_from_local_path (s);
+    gfile = g_file_new_for_path (s);
+    uri = g_file_get_uri (gfile);
     g_free (s);
+    g_object_unref (gfile);
     gconf_client_set_string (gconf_client, GCONF_BASEURI, uri, NULL);
     g_free (uri);
   }
Index: src/sj-extracting.c
===================================================================
--- src/sj-extracting.c	(revision 2020)
+++ src/sj-extracting.c	(working copy)
@@ -28,10 +28,7 @@
 #include <limits.h>
 
 #include <glib/glist.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libgnomevfs/gnome-vfs-volume.h>
-#include <libgnomevfs/gnome-vfs-volume-monitor.h>
+#include <gio/gio.h>
 #include <gtk/gtk.h>
 
 #include "sj-error.h"
@@ -124,8 +121,8 @@
 static char*
 build_filename (const TrackDetails *track, GError **error)
 {
-  GnomeVFSURI *uri, *new; 
-  gchar *realfile, *realpath, *filename, *string;
+  GFile *uri, *new; 
+  gchar *realfile, *realpath, *filename, *string, *scheme;
   const gchar *extension;
   size_t len_extension;
   int max_realfile = INT_MAX;
@@ -133,11 +130,11 @@
 
   g_object_get (extractor, "profile", &profile, NULL);
 
-  uri = gnome_vfs_uri_new (base_uri);
+  uri = g_file_new_for_uri (base_uri);
 
   realpath = filepath_parse_pattern (path_pattern, track);
-  new = gnome_vfs_uri_append_path (uri, realpath);
-  gnome_vfs_uri_unref (uri); uri = new;
+  new = g_file_get_child (uri, realpath);
+  g_object_unref (uri); uri = new;
   g_free (realpath);
 
   extension = gm_audio_profile_get_extension (profile);
@@ -146,23 +143,27 @@
   max_realfile = NAME_MAX - len_extension;
 #endif /* NAME_MAX */
 #if defined(PATH_MAX) && PATH_MAX > 0
-  if (!strcmp (gnome_vfs_uri_get_scheme (uri), "file")) {
-    size_t len_path = strlen (gnome_vfs_uri_get_path (uri)) + 1;
+  scheme = g_file_get_uri_scheme (uri);
+  if (scheme && !strcmp (scheme, "file")) {
+    gchar *path = g_file_get_path (uri);
+    size_t len_path = strlen (path) + 1;
     max_realfile = MIN (max_realfile, PATH_MAX - len_path - len_extension);
+    g_free (path);
   }
+  g_free (scheme);
 #endif /* PATH_MAX */
   if (max_realfile <= 0) {
-    g_set_error (error, SJ_ERROR, SJ_ERROR_INTERNAL_ERROR, g_strdup (gnome_vfs_result_to_string (GNOME_VFS_ERROR_NAME_TOO_LONG)));
+    g_set_error (error, SJ_ERROR, SJ_ERROR_INTERNAL_ERROR, g_strdup (_("Name too long")));
     return NULL;
   }
   realfile = filepath_parse_pattern (file_pattern, track);
   filename = g_strdup_printf("%.*s.%s", max_realfile, realfile, extension);
-  new = gnome_vfs_uri_append_file_name (uri, filename);
-  gnome_vfs_uri_unref (uri); uri = new;
+  new = g_file_get_child (uri, filename);
+  g_object_unref (uri); uri = new;
   g_free (filename); g_free (realfile);
 
-  string = gnome_vfs_uri_to_string (uri, 0);
-  gnome_vfs_uri_unref (uri);
+  string = g_file_get_uri (uri);
+  g_object_unref (uri);
   return string;
 }
 
@@ -243,44 +244,57 @@
  * Check if a file exists, can be written to, etc.
  * Return true on continue, false on skip.
  */
-static GnomeVFSFileSize
+static goffset
 check_file_size (const char* uri)
 {
-  GnomeVFSFileInfo info;
-  GnomeVFSResult res;
+  GFile *gfile;
+  GFileInfo *gfile_info;
+  GError *error = NULL;
+  goffset size;
  
-  res = gnome_vfs_get_file_info (uri, &info, GNOME_VFS_FILE_INFO_DEFAULT);
+  gfile = g_file_new_for_uri (uri);
+  gfile_info = g_file_query_info (gfile, G_FILE_ATTRIBUTE_STANDARD_SIZE, 0,
+                                  NULL, &error);
+  g_object_unref (gfile);
 
   /* No existing file */
-  if (res == GNOME_VFS_ERROR_NOT_FOUND)
+  if (!gfile_info && error->code == G_IO_ERROR_NOT_FOUND) {
+    g_error_free (error);
     return 0;
+  }
 
   /* unexpected error condition - bad news */
-  if (res != GNOME_VFS_OK) {
+  if (!gfile_info) {
     /* TODO: display an error dialog */
-    g_warning ("Cannot get file info: %s", gnome_vfs_result_to_string (res));
+    g_warning ("Cannot get file info: %s", error->message);
+    g_error_free (error);
     return -1;
   }
 
   /* A file with that name does exist. Report the size. */
-  return info.size;
+  size = g_file_info_get_size (gfile_info);
+  g_object_unref (gfile_info);
+  return size;
 }
 
 
 static gboolean
-confirm_overwrite_existing_file (const char* uri, int *overwrite_mode, GnomeVFSFileSize info_size)
+confirm_overwrite_existing_file (const char* uri, int *overwrite_mode, goffset info_size)
 { 
   OverwriteDialogResponse ret;
   GtkWidget *dialog;
   char *filename, *size;
+  GFile *gfile;
  
-  filename = gnome_vfs_format_uri_for_display (uri);
-  size = gnome_vfs_format_file_size_for_display (info_size);
+  gfile = g_file_new_for_uri (uri);
+  filename = g_file_get_parse_name (gfile);
+  size = g_format_size_for_display (info_size);
   dialog = gtk_message_dialog_new (GTK_WINDOW (main_window), GTK_DIALOG_MODAL,
                                    GTK_MESSAGE_QUESTION,
                                    GTK_BUTTONS_NONE,
                                    _("A file called '%s' exists, size %s.\nDo you want to skip this track or overwrite it?"),
                                    filename, size);
+  g_object_unref (gfile);
   g_free (filename);
   g_free (size);
   gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Skip"), BUTTON_SKIP);
@@ -324,26 +338,31 @@
 static char*
 create_directory_for (const char* url, GError **error)
 {
-  GnomeVFSResult res;
-  GnomeVFSURI *uri, *parent;
+  gboolean res;
+  GFile *uri, *parent;
   char *string;
+  GError *io_error = NULL;
 
   g_return_val_if_fail (url != NULL, NULL);
 
-  uri = gnome_vfs_uri_new (url);
-  parent = gnome_vfs_uri_get_parent (uri);
-  gnome_vfs_uri_unref (uri);
+  uri = g_file_new_for_uri (url);
+  parent = g_file_get_parent (uri);
+  g_object_unref (uri);
 
-  res = make_directory_with_parents_for_uri (parent, 0777);
-  if (res != GNOME_VFS_OK && res != GNOME_VFS_ERROR_FILE_EXISTS) {
-    g_set_error (error, SJ_ERROR, SJ_ERROR_CD_PERMISSION_ERROR,
-                 _("Failed to create output directory: %s"),
-                 gnome_vfs_result_to_string (res));
-    return NULL;
+  res = make_directory_with_parents_for_file (parent, &io_error);
+  if (!res) {
+    if (io_error->code != G_IO_ERROR_EXISTS) {
+      g_set_error (error, SJ_ERROR, SJ_ERROR_CD_PERMISSION_ERROR,
+                   _("Failed to create output directory: %s"),
+                   io_error->message);
+      g_error_free (io_error);
+      return NULL;
+    }
+    g_error_free (io_error);
   }
 
-  string = gnome_vfs_uri_to_string (parent, 0);
-  gnome_vfs_uri_unref (parent);
+  string = g_file_get_uri (parent);
+  g_object_unref (parent);
   return string;
 }
 
@@ -382,7 +401,7 @@
     paths = g_list_append (paths, directory);
 
 
-    GnomeVFSFileSize file_size;
+    goffset file_size;
     file_size = check_file_size (file_path);
 
     /* Skip if destination file can't be accessed (unexpected error). */
@@ -831,23 +850,22 @@
 {
   /* p is the pattern iterator, i is a general purpose iterator */
   const char *p;
-  char *tmp, *str, *base_path, *filesystem_type = NULL;
+  char *tmp, *str, *filesystem_type = NULL;
   GString *s;
-  GnomeVFSVolumeMonitor *monitor;
-  GnomeVFSVolume *volume;
+  GFile *base_gfile;
+  GFileInfo *fs_info;
 
   if (pattern == NULL || pattern[0] == 0)
     return g_strdup (" ");
-    
-  if ((base_path = gnome_vfs_get_local_path_from_uri (base_uri))) {
-    monitor = gnome_vfs_get_volume_monitor ();
-    
-    if ((volume = gnome_vfs_volume_monitor_get_volume_for_path (monitor, base_path))) {
-      filesystem_type = gnome_vfs_volume_get_filesystem_type (volume);
-      gnome_vfs_volume_unref (volume);
-    }
-    g_free (base_path);
+  
+  base_gfile = g_file_new_for_uri (base_uri);
+  fs_info = g_file_query_filesystem_info (base_gfile, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
+                                          NULL, NULL);
+  if (fs_info) {
+    filesystem_type = g_file_info_get_attribute_as_string (fs_info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
+    g_object_unref (fs_info);
   }
+  g_object_unref (base_gfile);
 
   s = g_string_new (NULL);
 
Index: INSTALL
===================================================================
--- INSTALL	(revision 2020)
+++ INSTALL	(working copy)
@@ -1,13 +1,19 @@
-Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
+Installation Instructions
+*************************
 
-   This file is free documentation; the Free Software Foundation gives
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
 unlimited permission to copy, distribute and modify it.
 
 Basic Installation
 ==================
 
-   These are generic installation instructions.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
@@ -20,9 +26,9 @@
 
    It can also use an optional file (typically called `config.cache'
 and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  (Caching is
+the results of its tests to speed up reconfiguring.  Caching is
 disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
 
    If you need to do unusual things to compile the package, please try
 to figure out how `configure' could check whether to do them, and mail
@@ -32,20 +38,17 @@
 may remove or edit it.
 
    The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
 
 The simplest way to compile this package is:
 
   1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+     `./configure' to configure the package for your system.
 
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
 
   2. Type `make' to compile the package.
 
@@ -67,51 +70,49 @@
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
 
    You can give `configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
 is an example:
 
-     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
 
    *Note Defining Variables::, for more details.
 
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+own directory.  To do this, you can use GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
 source code in the directory that `configure' is in and in `..'.
 
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory.  After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
 
 Installation Names
 ==================
 
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
 you can set and what kinds of files go in them.
 
@@ -122,7 +123,7 @@
 Optional Features
 =================
 
-   Some packages pay attention to `--enable-FEATURE' options to
+Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -137,11 +138,11 @@
 Specifying the System Type
 ==========================
 
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
 `--build=TYPE' option.  TYPE can either be a short name for the system
 type, such as `sun4', or a canonical name which has the form:
 
@@ -156,7 +157,7 @@
 need to know the machine type.
 
    If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
+use the option `--target=TYPE' to select the type of system they will
 produce code for.
 
    If you want to _use_ a cross compiler, that generates code for a
@@ -167,9 +168,9 @@
 Sharing Defaults
 ================
 
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/config.site' if it exists, then
 `PREFIX/etc/config.site' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
@@ -178,7 +179,7 @@
 Defining Variables
 ==================
 
-   Variables not defined in a site shell script can be set in the
+Variables not defined in a site shell script can be set in the
 environment passed to `configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
@@ -186,14 +187,18 @@
 
      ./configure CC=/usr/local2/bin/gcc
 
-will cause the specified gcc to be used as the C compiler (unless it is
+causes the specified `gcc' to be used as the C compiler (unless it is
 overridden in the site shell script).
 
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
 `configure' Invocation
 ======================
 
-   `configure' recognizes the following options to control how it
-operates.
+`configure' recognizes the following options to control how it operates.
 
 `--help'
 `-h'
Index: libjuicer/sj-util.c
===================================================================
--- libjuicer/sj-util.c	(revision 2020)
+++ libjuicer/sj-util.c	(working copy)
@@ -25,65 +25,69 @@
 #endif /* HAVE_CONFIG_H */
 #include "sj-util.h"
 
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libgnomevfs/gnome-vfs-ops.h>
-
 /**
  * Stolen from gnome-vfs/programs/gnomevfs-mkdir.c (v1.3)
  */
-GnomeVFSResult
-make_directory_with_parents_for_uri (GnomeVFSURI * uri, guint perm)
+gboolean
+make_directory_with_parents_for_file (GFile * uri, GError **error_out)
 {
-	GnomeVFSResult result;
-	GnomeVFSURI *parent, *work_uri;
+	gboolean result;
+	GFile *parent, *work_uri;
 	GList *list = NULL;
+	GError *error = NULL;
 
-	result = gnome_vfs_make_directory_for_uri (uri, perm);
-	if (result == GNOME_VFS_OK || result != GNOME_VFS_ERROR_NOT_FOUND)
+	result = g_file_make_directory (uri, NULL, &error);
+	if (result || error->code != G_IO_ERROR_NOT_FOUND) {
+	  if (error_out)
+	    *error_out = error;
 		return result;
+  }
 
 	work_uri = uri;
 
-	while (result == GNOME_VFS_ERROR_NOT_FOUND) {
-		parent = gnome_vfs_uri_get_parent (work_uri);
-		result = gnome_vfs_make_directory_for_uri (parent, perm);
+	while (!result && error->code == G_IO_ERROR_NOT_FOUND) {
+	  g_clear_error (&error);
+	  
+		parent = g_file_get_parent (work_uri);
+		result = g_file_make_directory (parent, NULL, &error);
 
-		if (result == GNOME_VFS_ERROR_NOT_FOUND)
+		if (!result && error->code == G_IO_ERROR_NOT_FOUND)
 			list = g_list_prepend (list, parent);
 		work_uri = parent;
 	}
 
-	if (result != GNOME_VFS_OK) {
+	if (!result) {
 		/* Clean up */
 		while (list != NULL) {
-			gnome_vfs_uri_unref ((GnomeVFSURI *) list->data);
+			g_object_unref ((GFile *) list->data);
 			list = g_list_remove (list, list->data);
 		}
 
+    if (error_out)
+      *error_out = error;
 		return result;
 	}
 
-	while (result == GNOME_VFS_OK && list != NULL) {
-		result = gnome_vfs_make_directory_for_uri
-		    ((GnomeVFSURI *) list->data, perm);
+	while (result && list != NULL) {
+		result = g_file_make_directory ((GFile *) list->data, NULL, NULL);
 
-		gnome_vfs_uri_unref ((GnomeVFSURI *) list->data);
+		g_object_unref ((GFile *) list->data);
 		list = g_list_remove (list, list->data);
 	}
 
-	result = gnome_vfs_make_directory_for_uri (uri, perm);
+	result = g_file_make_directory (uri, NULL, error_out);
 	return result;
 }
 
-GnomeVFSResult
-make_directory_with_parents (const gchar * text_uri, guint perm)
+gboolean
+make_directory_with_parents (const gchar * text_uri, GError **error)
 {
-	GnomeVFSURI *uri;
-	GnomeVFSResult result;
+	GFile *uri;
+	gboolean result;
 
-	uri = gnome_vfs_uri_new (text_uri);
-	result = make_directory_with_parents_for_uri (uri, perm);
-	gnome_vfs_uri_unref (uri);
+	uri = g_file_new_for_uri (text_uri);
+	result = make_directory_with_parents_for_file (uri, error);
+	g_object_unref (uri);
 
 	return result;
 }
@@ -225,12 +229,15 @@
 sj_get_default_music_directory (void)
 {
 	char *uri, *dir;
+	GFile *gfile;
 
 	dir = xdg_user_dir_lookup ("MUSIC");
 	if (dir == NULL) {
-		return gnome_vfs_get_uri_from_local_path (g_get_home_dir ());
+	  dir = g_strdup (g_get_home_dir ());
 	}
-	uri = gnome_vfs_get_uri_from_local_path (dir);
+	gfile = g_file_new_for_path (dir);
+	uri = g_file_get_uri (gfile);
+	g_object_unref (gfile);
 	g_free (dir);
 	return uri;
 }
Index: libjuicer/sj-util.h
===================================================================
--- libjuicer/sj-util.h	(revision 2020)
+++ libjuicer/sj-util.h	(working copy)
@@ -24,12 +24,11 @@
 #define SJ_UTIL_H
 
 #include <sys/types.h>
+#include <gio/gio.h>
 #include <gtk/gtkfilechooser.h>
-#include <libgnomevfs/gnome-vfs-uri.h>
-#include <libgnomevfs/gnome-vfs-result.h>
 
-GnomeVFSResult make_directory_with_parents_for_uri (GnomeVFSURI * uri, guint perm);
-GnomeVFSResult make_directory_with_parents (const gchar * text_uri, guint perm);
+gboolean make_directory_with_parents_for_file (GFile * uri, GError **error);
+gboolean make_directory_with_parents (const gchar * text_uri, GError **error);
 
 void g_list_deep_free (GList *l, GFunc free_func);
 
