Index: grecord/src/gsr-window.c
===================================================================
--- grecord/src/gsr-window.c	(revision 3803)
+++ grecord/src/gsr-window.c	(working copy)
@@ -39,7 +39,7 @@
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include <libgnome/gnome-help.h>
-#include <libgnomevfs/gnome-vfs.h>
+#include <gio/gio.h>
 #include <gconf/gconf-client.h>
 #include <gst/gst.h>
 #include <gst/interfaces/mixer.h>
@@ -656,7 +656,7 @@
 	GSRWindowPrivate *priv;
         GMAudioProfile *profile;
 	char *tmp, *src, *name;
-	GnomeVFSURI *src_uri, *dst_uri;
+	GFile *src_gfile, *dst_gfile;
 
 	priv = window->priv;
 
@@ -675,17 +675,14 @@
 
 	tmp = g_filename_to_uri (name, NULL, NULL);
 	src = g_filename_to_uri (priv->record_filename, NULL, NULL);
-	src_uri = gnome_vfs_uri_new (src);
-	dst_uri = gnome_vfs_uri_new (tmp);
+	src_gfile = g_file_new_for_uri (src);
+	dst_gfile = g_file_new_for_uri (tmp);
 	g_free (src);
-	if (src_uri && dst_uri) {
-		GnomeVFSResult result;
-		result = gnome_vfs_xfer_uri (src_uri, dst_uri,
-			GNOME_VFS_XFER_DEFAULT,
-			GNOME_VFS_XFER_ERROR_MODE_ABORT,
-			GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE,
-			NULL, NULL);
-		if (result == GNOME_VFS_OK) {
+	if (src_gfile && dst_gfile) {
+        GError *error = NULL;
+		g_file_copy (src_gfile, dst_gfile, G_FILE_COPY_OVERWRITE,
+                     NULL, NULL, NULL, &error);
+		if (error == NULL) {
 			g_object_set (G_OBJECT (window), "location", name, NULL);
 			priv->dirty = FALSE;
 			window->priv->saved = TRUE;
@@ -694,11 +691,11 @@
 			}
 		} else {
 			show_error_dialog (GTK_WINDOW (window), NULL,
-			                   _("Could not save the file \"%s\""),
-			                   gnome_vfs_result_to_string (result));
+			                   _("Could not save the file \"%s\":\n\n%s"),
+			                   name, error->message);
 		}
-		gnome_vfs_uri_unref (src_uri);
-		gnome_vfs_uri_unref (dst_uri);
+		g_object_unref (src_gfile);
+		g_object_unref (dst_gfile);
 	} else {
 		show_error_dialog (GTK_WINDOW (window), NULL,
 			           _("Could not save the file \"%s\""), name);
@@ -928,6 +925,19 @@
 	GtkWidget *bitrate;
 };
 
+static gchar*
+format_file_size_for_display(guint64 file_size)
+{
+    gchar *units[6] = { "B", "KiB", "MiB", "GiB", "TiB", "PiB" };
+    guint num_divisions = 0;
+    gdouble result = 0.0;
+
+    result = (double)file_size;
+    for(num_divisions = 0; (num_divisions < 6) && result >= 1024; num_divisions++)
+        result = (gdouble)result / 1024;
+    return g_strdup_printf("%.1f %s", result, units[num_divisions]);
+}
+
 static void
 fill_in_information (GSRWindow *window,
 		     struct _file_props *fp)
@@ -958,7 +968,7 @@
 		gchar *human;
 
 		file_size = (guint64) buf.st_size;
-		human = gnome_vfs_format_file_size_for_display (file_size);
+		human = format_file_size_for_display (file_size);
 
 		text = g_strdup_printf (ngettext ("%s (%llu byte)", "%s (%llu bytes)", 
 		                        file_size), human, file_size);
Index: configure.in
===================================================================
--- configure.in	(revision 3803)
+++ configure.in	(working copy)
@@ -158,7 +158,7 @@
 PKG_CHECK_MODULES(GSR, \
   gstreamer-$GST_MAJORMINOR >= $GST_REQ \
   gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQ \
-  gtk+-2.0 >= 2.6.0 libgnomeui-2.0 >= 1.102.0 gnome-vfs-2.0,
+  gtk+-2.0 >= 2.6.0 libgnomeui-2.0 >= 1.102.0 gio-2.0,
   HAVE_GST=yes,
   [
     HAVE_GST=no
