2009-01-23 Erwann Chenede - <[email protected]> gnome-2-24 NEVADA_108
authorerwannc
Sun, 25 Jan 2009 16:59:02 +0000
branchgnome-2-24
changeset 14180 ca1f2330e1df
parent 14179 8390ffbee9e8
child 14181 0ce86b1ddfa8
2009-01-23 Erwann Chenede - <[email protected]> * patches/nautilus-13-zfs-snapshot.diff: fix for 6765588
ChangeLog
patches/nautilus-13-zfs-snapshot.diff
--- a/ChangeLog	Sun Jan 25 09:56:07 2009 +0000
+++ b/ChangeLog	Sun Jan 25 16:59:02 2009 +0000
@@ -1,3 +1,7 @@
+2009-01-23 Erwann Chenede - <[email protected]>
+
+	* patches/nautilus-13-zfs-snapshot.diff: fix for 6765588
+
 2009-01-23  Laszlo (Laca) Peter  <[email protected]>
 
 	* SUNWPython.spec: add patch cflags.diff, fixes 6792612
--- a/patches/nautilus-13-zfs-snapshot.diff	Sun Jan 25 09:56:07 2009 +0000
+++ b/patches/nautilus-13-zfs-snapshot.diff	Sun Jan 25 16:59:02 2009 +0000
@@ -1,6 +1,6 @@
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/configure.in ../nautilus-compiled/configure.in
---- nautilus-2.24.2/configure.in	2008-10-20 14:09:22.000000000 +0200
-+++ ../nautilus-compiled/configure.in	2009-01-09 22:17:26.178287791 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/configure.in nautilus-2.24.2/configure.in
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/configure.in	2008-10-20 14:09:22.000000000 +0200
++++ nautilus-2.24.2/configure.in	2009-01-23 22:36:12.616536282 +0100
 @@ -327,6 +327,22 @@ if test "x$enable_beagle" != "xno"; then
          AC_SUBST(BEAGLE_CFLAGS)
  	AC_SUBST(BEAGLE_LIBS)
@@ -24,9 +24,9 @@
  
  dnl ==========================================================================
  
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/icons/Makefile.am ../nautilus-compiled/icons/Makefile.am
---- nautilus-2.24.2/icons/Makefile.am	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/icons/Makefile.am	2009-01-09 22:17:26.223512191 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/icons/Makefile.am nautilus-2.24.2/icons/Makefile.am
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/icons/Makefile.am	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/icons/Makefile.am	2009-01-23 22:36:10.586685500 +0100
 @@ -12,6 +12,10 @@ icon_DATA =\
  	knob.png \
  	note-indicator.png \
@@ -38,9 +38,9 @@
  	$(NULL)
  
  EXTRA_DIST = $(icon_DATA)
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/Makefile.am ../nautilus-compiled/libnautilus-private/Makefile.am
---- nautilus-2.24.2/libnautilus-private/Makefile.am	2009-01-09 22:51:35.158329443 +0100
-+++ ../nautilus-compiled/libnautilus-private/Makefile.am	2009-01-09 22:17:26.121267787 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/Makefile.am nautilus-2.24.2/libnautilus-private/Makefile.am
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/Makefile.am	2009-01-23 22:38:49.620637861 +0100
++++ nautilus-2.24.2/libnautilus-private/Makefile.am	2009-01-23 22:36:11.639751348 +0100
 @@ -32,6 +32,7 @@ libnautilus_private_la_LIBADD =		\
  	$(TRACKER_LIBS)			\
  	$(top_builddir)/libnautilus-extension/libnautilus-extension.la \
@@ -81,9 +81,9 @@
  
      <schema>
        <key>/schemas/desktop/gnome/file_views/show_hidden_files</key>
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c ../nautilus-compiled/libnautilus-private/nautilus-column-utilities.c
---- nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c	2009-01-09 22:51:35.158723520 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-column-utilities.c	2009-01-09 22:17:26.127367836 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c	2009-01-23 22:38:49.621050437 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-column-utilities.c	2009-01-23 22:36:11.726383584 +0100
 @@ -122,6 +122,13 @@ get_builtin_columns (void)
  					       "description", _("The SELinux security context of the file."),
  					       NULL));
@@ -98,9 +98,9 @@
  	
  	return columns;
  }
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c ../nautilus-compiled/libnautilus-private/nautilus-directory-async.c
---- nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c	2009-01-09 22:51:35.138860796 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-directory-async.c	2009-01-09 22:17:26.101150255 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c	2009-01-23 22:38:49.600884917 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-directory-async.c	2009-01-23 22:36:11.646385711 +0100
 @@ -640,6 +640,10 @@ nautilus_directory_set_up_request (Reque
  	if (file_attributes & NAUTILUS_FILE_ATTRIBUTE_FILESYSTEM_INFO) {
  		request->filesystem_info = TRUE;
@@ -152,9 +152,9 @@
  
  	/* FIXME bugzilla.gnome.org 45064: implement cancelling metadata when we
  	   implement invalidating metadata */
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h ../nautilus-compiled/libnautilus-private/nautilus-directory-private.h
---- nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/libnautilus-private/nautilus-directory-private.h	2009-01-09 22:17:26.100727105 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/libnautilus-private/nautilus-directory-private.h	2009-01-23 22:36:11.641529607 +0100
 @@ -114,9 +114,14 @@ struct NautilusDirectoryDetails
  
  	LinkInfoReadState *link_info_read_state;
@@ -178,9 +178,9 @@
  } Request;
  
  NautilusDirectory *nautilus_directory_get_existing                    (GFile                     *location);
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-directory.c ../nautilus-compiled/libnautilus-private/nautilus-directory.c
---- nautilus-2.24.2/libnautilus-private/nautilus-directory.c	2009-01-09 22:51:35.139866228 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-directory.c	2009-01-09 22:17:26.106462428 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.c nautilus-2.24.2/libnautilus-private/nautilus-directory.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.c	2009-01-23 22:38:49.601904193 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-directory.c	2009-01-23 22:36:12.453860140 +0100
 @@ -38,6 +38,7 @@
  #include "nautilus-metafile.h"
  #include "nautilus-desktop-directory.h"
@@ -471,9 +471,9 @@
  gboolean
  nautilus_directory_is_in_trash (NautilusDirectory *directory)
  {
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-directory.h ../nautilus-compiled/libnautilus-private/nautilus-directory.h
---- nautilus-2.24.2/libnautilus-private/nautilus-directory.h	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/libnautilus-private/nautilus-directory.h	2009-01-09 22:17:26.122901014 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.h nautilus-2.24.2/libnautilus-private/nautilus-directory.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-directory.h	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/libnautilus-private/nautilus-directory.h	2009-01-23 22:36:11.710303836 +0100
 @@ -28,6 +28,7 @@
  #include <gtk/gtk.h>
  #include <gio/gio.h>
@@ -515,9 +515,9 @@
  
  
  #endif /* NAUTILUS_DIRECTORY_H */
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h ../nautilus-compiled/libnautilus-private/nautilus-file-attributes.h
---- nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/libnautilus-private/nautilus-file-attributes.h	2009-01-09 22:17:26.128436259 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/libnautilus-private/nautilus-file-attributes.h	2009-01-23 22:36:12.450443252 +0100
 @@ -42,6 +42,7 @@ typedef enum {
  	NAUTILUS_FILE_ATTRIBUTE_THUMBNAIL = 1 << 9,
  	NAUTILUS_FILE_ATTRIBUTE_MOUNT = 1 << 10,
@@ -526,10 +526,10 @@
  } NautilusFileAttributes;
  
  #endif /* NAUTILUS_FILE_ATTRIBUTES_H */
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-file-private.h ../nautilus-compiled/libnautilus-private/nautilus-file-private.h
---- nautilus-2.24.2/libnautilus-private/nautilus-file-private.h	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/libnautilus-private/nautilus-file-private.h	2009-01-09 22:17:26.128678358 +0100
-@@ -146,6 +146,10 @@ struct NautilusFileDetails
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-private.h nautilus-2.24.2/libnautilus-private/nautilus-file-private.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file-private.h	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/libnautilus-private/nautilus-file-private.h	2009-01-23 22:36:11.662583045 +0100
+@@ -146,6 +146,15 @@ struct NautilusFileDetails
  
  	/* Mount for mountpoint or the references GMount for a "mountable" */
  	GMount *mount;
@@ -537,22 +537,31 @@
 +	/* time slider file difference information */
 +
 +	char *restore_info;
++
++        /* snapshot directory for versions */
++
++        char *snapshot_directory;
++        GCancellable *has_snapshot_cancel;
  	
  	/* boolean fields: bitfield to save space, since there can be
             many NautilusFile objects. */
-@@ -194,6 +198,9 @@ struct NautilusFileDetails
+@@ -194,6 +203,13 @@ struct NautilusFileDetails
  	
  	eel_boolean_bit is_thumbnailing               : 1;
  
 +	eel_boolean_bit restore_info_is_up_to_date    : 1;
 +	eel_boolean_bit restore_info_in_progress      : 1;
 +
++        eel_boolean_bit has_snap_versions_is_up_to_date    : 1;
++	eel_boolean_bit has_snap_versions_in_progress      : 1;
++        eel_boolean_bit has_snap_versions                  : 1;
++
  	/* TRUE if the file is open in a spatial window */
  	eel_boolean_bit has_open_window               : 1;
  
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-file.c ../nautilus-compiled/libnautilus-private/nautilus-file.c
---- nautilus-2.24.2/libnautilus-private/nautilus-file.c	2009-01-09 22:51:35.143147343 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-file.c	2009-01-09 22:17:26.116747360 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.c nautilus-2.24.2/libnautilus-private/nautilus-file.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.c	2009-01-23 22:38:49.604932056 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-file.c	2009-01-23 22:36:11.724833444 +0100
 @@ -48,6 +48,7 @@
  #include "nautilus-vfs-file.h"
  #include "nautilus-saved-search-file.h"
@@ -579,25 +588,32 @@
  
  GType
  nautilus_file_get_type (void)
-@@ -364,6 +367,9 @@ nautilus_file_clear_info (NautilusFile *
+@@ -364,6 +367,14 @@ nautilus_file_clear_info (NautilusFile *
  
  	eel_ref_str_unref (file->details->filesystem_id);
  	file->details->filesystem_id = NULL;
 +	g_free (file->details->restore_info);
 +	file->details->restore_info = NULL;
 +	invalidate_restore_info (file);
++        g_free (file->details->snapshot_directory);
++	file->details->snapshot_directory = NULL;
++        file->details->has_snap_versions_in_progress = FALSE;
++        file->details->has_snap_versions_is_up_to_date = FALSE;
++        file->details->has_snap_versions = FALSE;
  }
  
  static NautilusFile *
-@@ -674,6 +680,7 @@ finalize (GObject *object)
+@@ -674,6 +685,9 @@ finalize (GObject *object)
  	g_free (file->details->selinux_context);
  	g_free (file->details->top_left_text);
  	g_free (file->details->custom_icon);
 +	g_free (file->details->restore_info);
++        if (file->details->snapshot_directory)
++                g_free (file->details->snapshot_directory);
  	if (file->details->activation_location) {
  		g_object_unref (file->details->activation_location);
  	}
-@@ -5442,7 +5449,9 @@ nautilus_file_get_string_attribute_q (Na
+@@ -5442,7 +5456,9 @@ nautilus_file_get_string_attribute_q (Na
  	if (attribute_q == attribute_free_space_q) {
  		return nautilus_file_get_volume_free_space (file);
  	}
@@ -608,7 +624,7 @@
  	extension_attribute = NULL;
  	
  	if (file->details->pending_extension_attributes) {
-@@ -6332,6 +6341,494 @@ nautilus_file_get_trash_original_file (N
+@@ -6332,6 +6348,616 @@ nautilus_file_get_trash_original_file (N
  
  }
  
@@ -736,7 +752,9 @@
 +}
 +
 +char *			
-+nautilus_file_get_num_snapshot_version (NautilusFile *file, GCancellable *cancel)
++nautilus_file_get_num_snapshot_version (NautilusFile *file, 
++                                        GCancellable *cancel,
++                                        gboolean stop_at_first)
 +{
 +  GList *tmp = NULL;
 +  GList *tmp2 = NULL;
@@ -746,7 +764,8 @@
 +  int version = 0;
 +  NautilusFile *parent = NULL;
 +  NautilusDirectory *dir = NULL;
-+  
++  char *snapdir = NULL;
++
 +  if (NAUTILUS_IS_FILE (file))
 +    {
 +      parent = nautilus_file_get_parent (file);
@@ -805,6 +824,11 @@
 +		  time_t* snap_time = g_new0 (time_t, 1);
 +		  *snap_time = then.st_mtim.tv_sec;
 +		  time = g_list_prepend (time, snap_time);
++                  if (stop_at_first)
++                    {
++                      snapdir = g_strdup (((ZfsDataSet *) tmp->data)->mountpoint);
++                      goto cancel;
++                    }
 +		}
 +	    }
 +
@@ -827,13 +851,20 @@
 +  g_list_free (time);
 +
 +  if (version == 0)
++    {
++      if (stop_at_first)
++        return NULL;
++      else /*SUN_BRANDING*/
++        return restore_string (g_strdup_printf (_("no other version")), cancel);
++    }
++
++  if (stop_at_first)
++    return snapdir;
++  else
 +    /* SUN_BRANDING */
-+    return restore_string (g_strdup_printf (_("no other version")), cancel);
-+
-+  /* SUN_BRANDING */
-+  return restore_string (g_strdup_printf ("%d %s",version,
-+				  version > 1 ? _("other versions") : _("other version")), 
-+			 cancel);
++    return restore_string (g_strdup_printf ("%d %s", version,
++                                            version > 1 ? _ ("other versions") : _ ("other version")),
++                           cancel);
 +}
 +
 +static gboolean worker_thread_started = FALSE;
@@ -860,11 +891,18 @@
 +
 +  /*{
 +    struct timespec ts;
-+    ts.tv_sec = 0;
-+    ts.tv_nsec = 500000000; 
++    ts.tv_sec = 1;
++    ts.tv_nsec = 0;
 +    nanosleep (&ts, NULL);
-+  }*/
-+
++  }
++
++    {
++      GFile *f = nautilus_file_get_location (file);
++      char *path = g_file_get_uri (f);
++      printf ("start restore info for %s", path);
++      g_free (path);
++      g_object_unref (f);
++    }*/
 +  if (!g_cancellable_is_cancelled (cancellable))
 +    {
 +
@@ -900,18 +938,14 @@
 +	  if (nautilus_file_is_in_snapshot (file))
 +	      result = nautilus_file_in_snapshot_get_info (file, cancellable);
 +	  else
-+	      result = nautilus_file_get_num_snapshot_version (file, cancellable);
++	      result = nautilus_file_get_num_snapshot_version (file, cancellable, FALSE);
 +	}
 +    }
 +
 +/*    {
-+      GFile *f = nautilus_file_get_location (file);
-+      char *path = g_file_get_uri (f);
-+      printf ("restore info for %s is %s\n", path, result);
-+      g_free (path);
-+      g_object_unref (f);
-+    }
-+*/
++      printf ("is %s\n", result);
++    }*/
++
 +
 +  qdata->return_data = restore_string (result, cancellable);
 +}
@@ -1091,19 +1125,123 @@
 +    }
 +}
 +
-+
-+
-+gboolean		
++HasSnapshotResult
 +nautilus_file_has_snapshot_version (NautilusFile *file)
 +{
-+  return TRUE;
++    if (file->details->has_snap_versions_is_up_to_date)
++        return (file->details->has_snap_versions);
++    return UNKNOWN_STATE;
++}
++
++typedef struct {
++  NautilusFile              *file;
++  GCancellable              *cancel;
++  FileHasSnapshotCallback    callback;
++  gpointer		     callback_user_data;
++  char                      *snap_dir;
++} HasSnapshotAsyncData;
++
++typedef void (*HasSnapReadyCallback) (NautilusDirectory *file,
++                                      GCancellable	*cancel,
++                                      gpointer           callback_data);
++
++
++static void has_snapshot_ready_callback (GObject *source_object,
++                                         GAsyncResult *res,
++                                         gpointer user_data)
++{
++  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
++  HasSnapshotAsyncData *data = (HasSnapshotAsyncData*) user_data;
++
++  if (g_cancellable_is_cancelled (data->cancel))
++    {
++      data->file->details->has_snap_versions_in_progress = FALSE;
++      data->file->details->has_snap_versions_is_up_to_date = FALSE;
++      if (data->file->details->snapshot_directory)
++        g_free (data->file->details->snapshot_directory);
++      
++      data->file->details->has_snapshot_cancel = NULL;
++    }
++  else
++    {
++      data->file->details->has_snap_versions_in_progress = FALSE;
++      data->file->details->has_snap_versions_is_up_to_date = TRUE;
++      if (data->file->details->snapshot_directory)
++        g_free (data->file->details->snapshot_directory);
++      data->file->details->snapshot_directory = g_simple_async_result_get_op_res_gpointer (simple);
++      if (data->file->details->snapshot_directory)
++        data->file->details->has_snap_versions = TRUE;
++      else
++        data->file->details->has_snap_versions = FALSE;
++    }
++  data->callback (data->callback_user_data);
++}
++char *
++nautilus_file_get_snapshot_dir (NautilusFile *file)
++{
++  return file->details->snapshot_directory;
++}
++void nautilus_file_real_get_snapshot_version (GSimpleAsyncResult *res,
++            				      GObject            *object,
++        				      GCancellable       *cancellable)
++{
++  NautilusFile *file = NAUTILUS_FILE (object);
++  char *snap_info = nautilus_file_get_num_snapshot_version (file, cancellable, TRUE);
++
++  if (!snap_info) /* scan for .zfs directory*/
++    snap_info = ts_get_not_zfs_snapshot_dir (nautilus_file_get_location (file));
++/*
++  {
++    struct timespec ts;
++    ts.tv_sec = 4;
++    ts.tv_nsec = 0;
++    nanosleep (&ts, NULL);
++  }
++*/
++  if (snap_info)
++    g_simple_async_result_set_op_res_gpointer (res, snap_info, (GDestroyNotify) NULL);
++  else
++    g_simple_async_result_set_op_res_gpointer (res, NULL, (GDestroyNotify) NULL);
++}
++
++void nautilus_file_get_snapshot_version (NautilusFile *file,
++                                         FileHasSnapshotCallback callback,
++                                         GCancellable *cancel,
++                                         gpointer user_data)
++{
++    HasSnapshotAsyncData *data;
++    GSimpleAsyncResult *res;
++
++    if (file->details->has_snap_versions_in_progress)
++    {
++        g_cancellable_cancel(file->details->has_snapshot_cancel);
++        file->details->has_snapshot_cancel = NULL;
++        file->details->has_snap_versions_in_progress = FALSE;        
++    }
++
++    file->details->has_snapshot_cancel = cancel;
++    file->details->has_snap_versions_in_progress = TRUE;
++    file->details->has_snap_versions_is_up_to_date  = FALSE;
++
++    data = g_new0 (HasSnapshotAsyncData, 1);
++    data->file = file;
++    data->cancel = cancel;
++    data->callback = callback;
++    data->callback_user_data = user_data;
++
++    res = g_simple_async_result_new (G_OBJECT (file),
++                                     has_snapshot_ready_callback,
++                                     data,
++                                    (gpointer) nautilus_file_real_get_snapshot_version);
++    g_simple_async_result_run_in_thread (res, nautilus_file_real_get_snapshot_version,
++                                         G_PRIORITY_DEFAULT, cancel);
 +}
 +
 +
  void
  nautilus_file_mark_gone (NautilusFile *file)
  {
-@@ -6593,6 +7090,12 @@ invalidate_thumbnail (NautilusFile *file
+@@ -6593,6 +7219,12 @@ invalidate_thumbnail (NautilusFile *file
  	file->details->thumbnail_is_up_to_date = FALSE;
  }
  
@@ -1116,7 +1254,7 @@
  void
  nautilus_file_invalidate_extension_info_internal (NautilusFile *file)
  {
-@@ -6647,6 +7150,9 @@ nautilus_file_invalidate_attributes_inte
+@@ -6647,6 +7279,9 @@ nautilus_file_invalidate_attributes_inte
  	if (request.thumbnail) {
  		invalidate_thumbnail (file);
  	}
@@ -1126,7 +1264,7 @@
  
  	/* FIXME bugzilla.gnome.org 45075: implement invalidating metadata */
  }
-@@ -6727,7 +7233,8 @@ nautilus_file_get_all_attributes (void)
+@@ -6727,7 +7362,8 @@ nautilus_file_get_all_attributes (void)
  		NAUTILUS_FILE_ATTRIBUTE_LARGE_TOP_LEFT_TEXT |
  		NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO |
  		NAUTILUS_FILE_ATTRIBUTE_THUMBNAIL |
@@ -1136,7 +1274,7 @@
  }
  
  void
-@@ -7201,6 +7708,7 @@ nautilus_file_class_init (NautilusFileCl
+@@ -7201,6 +7837,7 @@ nautilus_file_class_init (NautilusFileCl
  	attribute_link_target_q = g_quark_from_static_string ("link_target");
  	attribute_volume_q = g_quark_from_static_string ("volume");
  	attribute_free_space_q = g_quark_from_static_string ("free_space");
@@ -1144,9 +1282,9 @@
  	
  	G_OBJECT_CLASS (class)->finalize = finalize;
  	G_OBJECT_CLASS (class)->constructor = nautilus_file_constructor;
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-file.h ../nautilus-compiled/libnautilus-private/nautilus-file.h
---- nautilus-2.24.2/libnautilus-private/nautilus-file.h	2008-10-06 19:22:21.000000000 +0200
-+++ ../nautilus-compiled/libnautilus-private/nautilus-file.h	2009-01-09 22:17:26.138290633 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.h nautilus-2.24.2/libnautilus-private/nautilus-file.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-file.h	2008-10-06 19:22:21.000000000 +0200
++++ nautilus-2.24.2/libnautilus-private/nautilus-file.h	2009-01-23 22:36:11.644493045 +0100
 @@ -174,6 +174,7 @@ gboolean                nautilus_file_is
  									 const char                     *mime_type);
  gboolean                nautilus_file_is_launchable                     (NautilusFile                   *file);
@@ -1155,14 +1293,29 @@
  gboolean                nautilus_file_is_mountpoint                     (NautilusFile                   *file);
  GMount *                nautilus_file_get_mount                         (NautilusFile                   *file);
  char *                  nautilus_file_get_volume_free_space             (NautilusFile                   *file);
-@@ -229,6 +230,11 @@ char *                  nautilus_file_ge
+@@ -229,6 +230,26 @@ char *                  nautilus_file_ge
  
  NautilusFile *          nautilus_file_get_trash_original_file           (NautilusFile                   *file);
  
 +char *			nautilus_file_get_num_snapshot_version		(NautilusFile			*file,
-+									 GCancellable			*cancel);
++									 GCancellable			*cancel,
++                                                                         gboolean                        stop_at_first);
 +char *			nautilus_file_get_restore_info_async		(NautilusFile			*file);
-+gboolean		nautilus_file_has_snapshot_version		(NautilusFile			*file);
++
++typedef enum {
++	NO,
++	YES,
++	UNKNOWN_STATE
++} HasSnapshotResult;
++
++HasSnapshotResult       nautilus_file_has_snapshot_version              (NautilusFile                   *file);
++char *                  nautilus_file_get_snapshot_dir                  (NautilusFile                   *file);
++typedef void (*FileHasSnapshotCallback)	(gpointer user_data);
++
++void                    nautilus_file_get_snapshot_version              (NautilusFile                   *file,
++                                                                         FileHasSnapshotCallback        callback,
++                                                                         GCancellable *cancel,
++                                                                         gpointer                       user_data);
 +
  /* Permissions. */
  gboolean                nautilus_file_can_get_permissions               (NautilusFile                   *file);
@@ -1192,10 +1345,10 @@
  
  typedef enum
  {
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-zfs.c ../nautilus-compiled/libnautilus-private/nautilus-zfs.c
---- nautilus-2.24.2/libnautilus-private/nautilus-zfs.c	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-zfs.c	2009-01-09 22:17:26.135660571 +0100
-@@ -0,0 +1,886 @@
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.c nautilus-2.24.2/libnautilus-private/nautilus-zfs.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.c	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-zfs.c	2009-01-23 22:36:11.647280942 +0100
+@@ -0,0 +1,985 @@
 +/* 
 + * Copyright (C) 2008 Sun Microsystems (Erwann Chenede)
 + *
@@ -2082,10 +2235,112 @@
 +  return monitor_data;
 +}
 +
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/libnautilus-private/nautilus-zfs.h ../nautilus-compiled/libnautilus-private/nautilus-zfs.h
---- nautilus-2.24.2/libnautilus-private/nautilus-zfs.h	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/libnautilus-private/nautilus-zfs.h	2009-01-10 00:21:01.814913727 +0100
-@@ -0,0 +1,68 @@
++char *
++ts_get_not_zfs_snapshot_dir (GFile *file)
++{
++  char tmp_path[PATH_MAX + 1];
++  gboolean found = FALSE;
++  gboolean end_path = FALSE;
++  GFile *d = g_file_get_parent(file);
++  GFile *tmp;
++  char *full_path = g_file_get_path (file);
++  char *stripped_path = g_file_get_path (d);
++  struct stat64 dir_stat64;
++
++  if (!full_path)
++     return NULL;
++
++  if (stat64 (full_path, &dir_stat64) == 0)
++    { /* check is fs is zfs if so don't try to check for nfs mounted .zfs dir*/
++      if (strcmp (dir_stat64.st_fstype, "zfs") == 0)
++        end_path = TRUE;
++    }
++
++  while (!found && !end_path)
++    {
++      g_sprintf (tmp_path, "%s/.zfs/snapshot", stripped_path);
++      if (g_file_test (tmp_path, G_FILE_TEST_IS_DIR))
++        {
++          GList *entries = get_dir_entries (tmp_path);
++          if (entries != NULL)
++            {
++              char *after_snap_path = full_path + strlen (stripped_path) + 1;
++
++              for (entries; entries; entries = entries->next)
++                {
++                  char test_path[PATH_MAX +1];
++                  g_sprintf (test_path, "%s/%s/%s", tmp_path, 
++                             entries->data,
++                             after_snap_path);
++                  if (g_file_test (test_path, G_FILE_TEST_EXISTS))
++                    {
++                      found = TRUE;
++                      break;
++                    }
++                }
++              free_dir_entries (entries);
++            }
++        }
++      tmp = d;
++      d = g_file_get_parent (tmp);
++      g_object_unref (tmp);
++      g_free (stripped_path);
++      if (d == NULL)
++        {
++          end_path = TRUE;
++        }
++      else
++        {
++          stripped_path = g_file_get_path (d);
++        }
++    }
++
++  g_free (full_path);
++
++  if (stripped_path)
++    g_free (stripped_path);
++
++  if (found)
++    return g_strdup (tmp_path);
++  else
++    return NULL;
++
++}
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.h nautilus-2.24.2/libnautilus-private/nautilus-zfs.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/libnautilus-private/nautilus-zfs.h	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/libnautilus-private/nautilus-zfs.h	2009-01-23 22:36:12.513678737 +0100
+@@ -0,0 +1,69 @@
 +/* #include <config.h> */
 +#ifndef NAUTILUS_ZFS_H
 +#define NAUTILUS_ZFS_H
@@ -2132,6 +2387,7 @@
 +char* ts_remove_snapshot_dir		(char *str);
 +char *ts_get_snapshot_dir		(char *dir);
 +char *ts_get_zfs_filesystem		(char *dir);
++char * ts_get_not_zfs_snapshot_dir      (GFile *file);
 +gboolean ts_is_restore_column_enabled	();
 +void ts_is_restore_column_enabled_init	();
 +void print_snap_list			(char *dir, GList *snap_list);
@@ -2154,9 +2410,9 @@
 +					       gpointer		    data);
 +#endif /* NAUTILUS_ZFS_H */
 +
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/Makefile.am ../nautilus-compiled/src/Makefile.am
---- nautilus-2.24.2/src/Makefile.am	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/Makefile.am	2009-01-09 22:17:26.285813877 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/Makefile.am nautilus-2.24.2/src/Makefile.am
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/Makefile.am	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/Makefile.am	2009-01-23 22:36:10.638397062 +0100
 @@ -137,6 +137,10 @@ nautilus_SOURCES = \
  	nautilus-x-content-bar.h		\
  	nautilus-zoom-control.c			\
@@ -2168,22 +2424,23 @@
  	$(NULL)
  
  nautilus_file_management_properties_SOURCES= \
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/file-manager/fm-actions.h ../nautilus-compiled/src/file-manager/fm-actions.h
---- nautilus-2.24.2/src/file-manager/fm-actions.h	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/file-manager/fm-actions.h	2009-01-09 22:17:26.278457926 +0100
-@@ -52,6 +52,8 @@
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-actions.h nautilus-2.24.2/src/file-manager/fm-actions.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-actions.h	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/file-manager/fm-actions.h	2009-01-23 22:36:10.668828089 +0100
+@@ -52,6 +52,9 @@
  #define FM_ACTION_LOCATION_PASTE_FILES_INTO "LocationPasteFilesInto"
  #define FM_ACTION_NEW_LAUNCHER "New Launcher"
  #define FM_ACTION_RENAME "Rename"
 +#define FM_ACTION_RESTORE_TO "Restore to"
++#define FM_ACTION_HAS_SNAPSHOT "View Snap"
 +#define FM_ACTION_SNAP_NOW "Snap Now"
  #define FM_ACTION_DUPLICATE "Duplicate"
  #define FM_ACTION_CREATE_LINK "Create Link"
  #define FM_ACTION_SELECT_ALL "Select All"
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/file-manager/fm-directory-view.c ../nautilus-menu/src/file-manager/fm-directory-view.c
---- nautilus-2.24.2/src/file-manager/fm-directory-view.c	2009-01-10 15:18:48.680609840 +0100
-+++ ../nautilus-menu/src/file-manager/fm-directory-view.c	2009-01-10 15:14:44.187379917 +0100
-@@ -968,6 +968,54 @@ real_trash (FMDirectoryView *view)
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-directory-view.c nautilus-2.24.2/src/file-manager/fm-directory-view.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/fm-directory-view.c	2009-01-23 22:38:49.626517597 +0100
++++ nautilus-2.24.2/src/file-manager/fm-directory-view.c	2009-01-23 22:36:10.670123633 +0100
+@@ -968,6 +968,77 @@ real_trash (FMDirectoryView *view)
  }
  
  static void
@@ -2235,10 +2492,33 @@
 +}
 +
 +static void
++action_show_snapshot_versions_callback (GtkAction *action,
++                                        gpointer callback_data)
++{
++  FMDirectoryView *view = FM_DIRECTORY_VIEW (callback_data);
++  GList *selection = fm_directory_view_get_selection_for_file_transfer (view);
++  GFile *file = nautilus_file_get_location (NAUTILUS_FILE (selection->data));
++  char *dir = nautilus_file_get_snapshot_dir (NAUTILUS_FILE (selection->data));
++  char *file_path = g_file_get_path (file);
++  char real_file_path [PATH_MAX + 1];
++  if (realpath (file_path, real_file_path))
++    {
++      char *cmd = g_strdup_printf ("/usr/lib/time-slider-version '%s' '%s'", dir,
++                                   real_file_path);
++      gdk_spawn_command_line_on_screen (gtk_widget_get_screen (GTK_WIDGET (callback_data)),
++                                        cmd, NULL);
++      g_free (cmd);
++    }
++
++  g_free (file_path);
++  g_object_unref (file);
++}
++
++static void
  action_trash_callback (GtkAction *action,
  		       gpointer callback_data)
  {
-@@ -6697,6 +6745,18 @@ static const GtkActionEntry directory_vi
+@@ -6697,6 +6768,24 @@ static const GtkActionEntry directory_vi
    /* label, accelerator */       "RenameSelectAll", "<shift>F2",
    /* tooltip */                  NULL,
                                   G_CALLBACK (action_rename_select_all_callback) },
@@ -2248,6 +2528,12 @@
 +  /* SUN_BRANDING */
 +  /* tooltip */                  N_("Move each selected item to the Desktop"),
 +                                 G_CALLBACK (action_restore_to_desktop_callback) },
++  /* name, stock id */         { "View Snap", NULL,
++  /* SUN_BRANDING */
++  /* label, accelerator */       N_("View versions"), NULL,
++  /* SUN_BRANDING */
++  /* tooltip */                  N_("View the versions of this file available in ZFS snapshots"),
++                                 G_CALLBACK (action_show_snapshot_versions_callback) },
 +  /* name, stock id */         { "Snap Now", NULL,
 +  /* SUN_BRANDING */
 +  /* label, accelerator */       N_("Snapshot now"), NULL,
@@ -2257,7 +2543,49 @@
    /* name, stock id */         { "Trash", NULL,
    /* label, accelerator */       N_("Mo_ve to Trash"), NULL,
    /* tooltip */                  N_("Move each selected item to the Trash"),
-@@ -8028,6 +8088,31 @@ real_update_menus (FMDirectoryView *view
+@@ -7723,6 +7812,41 @@ can_delete_all (GList *files)
+ 	return TRUE;
+ }
+ 
++typedef struct {
++  NautilusFile              *file;
++  GCancellable              *cancel;
++  GtkAction                 *action;
++} HasSnapshotData;
++
++static void
++has_snapshot_ready_callback (gpointer user_data)
++{
++  GValue name = {0,};
++  HasSnapshotData *data = (HasSnapshotData*) user_data;
++  HasSnapshotResult result = nautilus_file_has_snapshot_version (data->file);
++
++  switch (result)
++    {
++    case UNKNOWN_STATE:
++    case NO:
++      gtk_action_set_sensitive (data->action, FALSE);
++      g_value_init (&name, G_TYPE_STRING);
++      /* SUN_BRANDING */
++      g_value_set_static_string (&name, _("No versions"));
++      g_object_set_property (G_OBJECT (data->action), "label", &name);
++      break;
++    case YES:
++      gtk_action_set_sensitive (data->action, TRUE);
++      g_value_init (&name, G_TYPE_STRING);
++      /* SUN_BRANDING */
++      g_value_set_static_string (&name, _("Explore versions"));
++      g_object_set_property (G_OBJECT (data->action), "label", &name);
++      break;
++    }
++  g_free (data);
++ }
++
++
+ static void
+ real_update_menus (FMDirectoryView *view)
+ {
+@@ -8028,6 +8152,79 @@ real_update_menus (FMDirectoryView *view
  					      FM_ACTION_COPY);
  	gtk_action_set_sensitive (action, can_copy_files);
  
@@ -2285,32 +2613,82 @@
 +	else
 +	  gtk_action_set_visible (action, FALSE);
 +
++	action = gtk_action_group_get_action (view->details->dir_action_group,
++					      FM_ACTION_HAS_SNAPSHOT);
++
++  if (selection_count == 1)
++    {
++      GValue name = { 0, };
++      int result = nautilus_file_has_snapshot_version (NAUTILUS_FILE (selection->data));
++
++      switch (result)
++        {
++        case NO:
++          gtk_action_set_visible (action, FALSE);
++          break;
++        case YES:
++          gtk_action_set_visible (action, TRUE);
++          gtk_action_set_sensitive (action, TRUE);
++          g_value_init (&name,G_TYPE_STRING);
++          /* SUN_BRANDING */
++          g_value_set_static_string (&name, _("Explore versions"));
++          g_object_set_property (G_OBJECT (action), "label", &name);
++          break;
++        case UNKNOWN_STATE:
++          gtk_action_set_visible (action, TRUE);
++          gtk_action_set_sensitive (action, FALSE);
++          g_value_init (&name,G_TYPE_STRING);
++          /* SUN_BRANDING */
++          g_value_set_static_string (&name, _("Scanning for versions"));
++          g_object_set_property (G_OBJECT (action), "label", &name);
++          break;
++        }
++
++
++      if (result == UNKNOWN_STATE)
++        {
++          HasSnapshotData *data = g_new0 (HasSnapshotData, 1);
++          data->action = action;
++          data->file = NAUTILUS_FILE (selection->data);
++          data->cancel = g_cancellable_new ();
++          nautilus_file_get_snapshot_version (NAUTILUS_FILE (selection->data),
++                                              has_snapshot_ready_callback,
++                                              data->cancel,
++                                              data);
++        }
++    }
++  else
++    gtk_action_set_visible (action, FALSE);
++
++
 +
  	real_update_paste_menu (view, selection, selection_count);
  
  	action = gtk_action_group_get_action (view->details->dir_action_group,
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml ../nautilus-compiled/src/file-manager/nautilus-directory-view-ui.xml
---- nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/file-manager/nautilus-directory-view-ui.xml	2009-01-09 22:17:26.275117848 +0100
-@@ -64,6 +64,8 @@
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/file-manager/nautilus-directory-view-ui.xml	2009-01-23 22:36:10.677724357 +0100
+@@ -64,6 +64,9 @@
  			<menuitem name="Duplicate" action="Duplicate"/>
  			<menuitem name="Create Link" action="Create Link"/>
  			<menuitem name="Rename" action="Rename"/>
 +			<menuitem name="Restore to" action="Restore to"/>
 +			<menuitem name="Snapshot now" action="Snap Now"/>
++			<menuitem name="Scanning...." action="View Snap"/>
  		</placeholder>
  		<placeholder name="Dangerous File Items Placeholder">
  			<menuitem name="Trash" action="Trash"/>
-@@ -147,6 +149,8 @@
+@@ -147,6 +150,9 @@
  	<placeholder name="File Actions">
  		<menuitem name="Create Link" action="Create Link"/>
  		<menuitem name="Rename" action="Rename"/>
 +		<menuitem name="Restore to" action="Restore to"/>
 +		<menuitem name="Snapshot now" action="Snap Now"/>
++		<menuitem name="Scanning...." action="View Snap"/>
  	</placeholder>
  	<separator name="Dangerous separator"/>
  	<placeholder name="Dangerous File Actions">
-@@ -184,6 +188,7 @@
+@@ -184,6 +190,7 @@
  	</placeholder>
  	<separator name="Location After Clipboard Separator"/>
  	<placeholder name="Dangerous File Actions">
@@ -2318,9 +2696,9 @@
  		<menuitem name="Trash" action="LocationTrash"/>
  		<menuitem name="Delete" action="LocationDelete"/>
  		<menuitem name="Restore From Trash" action="LocationRestoreFromTrash"/>
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-actions.h ../nautilus-compiled/src/nautilus-actions.h
---- nautilus-2.24.2/src/nautilus-actions.h	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-actions.h	2009-01-09 22:17:26.279992727 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-actions.h nautilus-2.24.2/src/nautilus-actions.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-actions.h	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-actions.h	2009-01-23 22:36:10.788601269 +0100
 @@ -28,6 +28,7 @@
  
  #define NAUTILUS_ACTION_STOP "Stop"
@@ -2329,9 +2707,9 @@
  #define NAUTILUS_ACTION_BACK "Back"
  #define NAUTILUS_ACTION_UP "Up"
  #define NAUTILUS_ACTION_UP_ACCEL "UpAccel"
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-file-management-properties.c ../nautilus-compiled/src/nautilus-file-management-properties.c
---- nautilus-2.24.2/src/nautilus-file-management-properties.c	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-file-management-properties.c	2009-01-09 22:17:26.257505227 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.c nautilus-2.24.2/src/nautilus-file-management-properties.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.c	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-file-management-properties.c	2009-01-23 22:36:10.640141631 +0100
 @@ -73,6 +73,7 @@
  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TREE_VIEW_FOLDERS_WIDGET "treeview_folders_checkbutton"
  #define NAUTILUS_FILE_MANAGEMENT_PROPERTIES_MEDIA_AUTOMOUNT_OPEN "media_automount_open_checkbutton"
@@ -2350,9 +2728,9 @@
  
  	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
  							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_DEFAULT_VIEW_WIDGET,
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-file-management-properties.glade ../nautilus-compiled/src/nautilus-file-management-properties.glade
---- nautilus-2.24.2/src/nautilus-file-management-properties.glade	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-file-management-properties.glade	2009-01-09 22:17:26.250712915 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.glade nautilus-2.24.2/src/nautilus-file-management-properties.glade
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-file-management-properties.glade	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-file-management-properties.glade	2009-01-23 22:36:10.778222728 +0100
 @@ -1,2041 +1,1167 @@
 -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
 -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
@@ -7061,9 +7439,9 @@
  	<separator/>
  	<toolitem name="Home" action="Home"/>
  	<toolitem name="Computer" action="Go to Computer"/>
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-navigation-window.c ../nautilus-compiled/src/nautilus-navigation-window.c
---- nautilus-2.24.2/src/nautilus-navigation-window.c	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-navigation-window.c	2009-01-09 22:17:26.249224744 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-navigation-window.c nautilus-2.24.2/src/nautilus-navigation-window.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-navigation-window.c	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-navigation-window.c	2009-01-23 22:36:10.837101983 +0100
 @@ -43,6 +43,7 @@
  #include "nautilus-notebook.h"
  #include "nautilus-window-manage-views.h"
@@ -7207,9 +7585,9 @@
  	nautilus_navigation_window_save_geometry (NAUTILUS_NAVIGATION_WINDOW (window));
  }
  
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-navigation-window.h ../nautilus-compiled/src/nautilus-navigation-window.h
---- nautilus-2.24.2/src/nautilus-navigation-window.h	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-navigation-window.h	2009-01-09 22:17:26.285083000 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-navigation-window.h nautilus-2.24.2/src/nautilus-navigation-window.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-navigation-window.h	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-navigation-window.h	2009-01-23 22:36:10.635806576 +0100
 @@ -63,6 +63,7 @@ struct _NautilusNavigationWindow {
  	GtkWidget *path_bar;
          GtkWidget *search_bar;
@@ -7240,9 +7618,9 @@
  void     nautilus_navigation_window_hide_toolbar         (NautilusNavigationWindow *window);
  void     nautilus_navigation_window_show_toolbar         (NautilusNavigationWindow *window);
  gboolean nautilus_navigation_window_toolbar_showing      (NautilusNavigationWindow *window);
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-shell-ui.xml ../nautilus-compiled/src/nautilus-shell-ui.xml
---- nautilus-2.24.2/src/nautilus-shell-ui.xml	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-shell-ui.xml	2009-01-09 22:17:26.281999789 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-shell-ui.xml nautilus-2.24.2/src/nautilus-shell-ui.xml
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-shell-ui.xml	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-shell-ui.xml	2009-01-23 22:36:10.627270300 +0100
 @@ -41,6 +41,7 @@
  	<menu action="View">
  		<menuitem name="Stop" action="Stop"/>
@@ -7251,9 +7629,9 @@
  		<separator/>
  		<placeholder name="Show Hide Placeholder"/>
  		<separator/>
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window-manage-views.c ../nautilus-compiled/src/nautilus-window-manage-views.c
---- nautilus-2.24.2/src/nautilus-window-manage-views.c	2009-01-09 22:51:35.169572103 +0100
-+++ ../nautilus-compiled/src/nautilus-window-manage-views.c	2009-01-09 22:17:26.245105122 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-manage-views.c nautilus-2.24.2/src/nautilus-window-manage-views.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-manage-views.c	2009-01-23 22:38:49.631982300 +0100
++++ nautilus-2.24.2/src/nautilus-window-manage-views.c	2009-01-23 22:36:10.834880609 +0100
 @@ -40,6 +40,7 @@
  #include "nautilus-trash-bar.h"
  #include "nautilus-x-content-bar.h"
@@ -7481,9 +7859,9 @@
    /* name, stock id */         { "Show Hidden Files", NULL,
    /* label, accelerator */       N_("Show _Hidden Files"), "<control>H",
    /* tooltip */                  N_("Toggle the display of hidden files in the current window"),
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window-slot.c ../nautilus-compiled/src/nautilus-window-slot.c
---- nautilus-2.24.2/src/nautilus-window-slot.c	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-window-slot.c	2009-01-09 22:17:26.279886767 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-slot.c nautilus-2.24.2/src/nautilus-window-slot.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-slot.c	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-window-slot.c	2009-01-23 22:36:10.639197394 +0100
 @@ -612,6 +612,13 @@ nautilus_window_slot_dispose (GObject *o
  		slot->new_content_view = NULL;
  	}
@@ -7498,9 +7876,9 @@
  	slot->window = NULL;
  
  	g_free (slot->title);
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window-slot.h ../nautilus-compiled/src/nautilus-window-slot.h
---- nautilus-2.24.2/src/nautilus-window-slot.h	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-window-slot.h	2009-01-09 22:17:26.240932682 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-slot.h nautilus-2.24.2/src/nautilus-window-slot.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-slot.h	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-window-slot.h	2009-01-23 22:36:10.795391130 +0100
 @@ -107,6 +107,7 @@ struct NautilusWindowSlot {
  	gboolean tried_mount;
  
@@ -7509,9 +7887,9 @@
  };
  
  GType   nautilus_window_slot_get_type (void);
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window-toolbars.c ../nautilus-compiled/src/nautilus-window-toolbars.c
---- nautilus-2.24.2/src/nautilus-window-toolbars.c	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-window-toolbars.c	2009-01-09 22:17:26.247453875 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-toolbars.c nautilus-2.24.2/src/nautilus-window-toolbars.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window-toolbars.c	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-window-toolbars.c	2009-01-23 22:36:10.627962731 +0100
 @@ -60,17 +60,37 @@ void
  nautilus_navigation_window_set_throbber_active (NautilusNavigationWindow *window, 
  						gboolean allow)
@@ -7555,9 +7933,9 @@
  }
  
  static void
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window.c ../nautilus-compiled/src/nautilus-window.c
---- nautilus-2.24.2/src/nautilus-window.c	2009-01-09 22:51:35.154290747 +0100
-+++ ../nautilus-compiled/src/nautilus-window.c	2009-01-09 22:17:26.284471079 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window.c nautilus-2.24.2/src/nautilus-window.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window.c	2009-01-23 22:38:49.616563765 +0100
++++ nautilus-2.24.2/src/nautilus-window.c	2009-01-23 22:36:10.789736136 +0100
 @@ -153,7 +153,7 @@ nautilus_window_init (NautilusWindow *wi
  	/* Set initial window title */
  	gtk_window_set_title (GTK_WINDOW (window), _("Nautilus"));
@@ -7643,9 +8021,9 @@
  }
  
  void
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-window.h ../nautilus-compiled/src/nautilus-window.h
---- nautilus-2.24.2/src/nautilus-window.h	2008-10-06 19:22:18.000000000 +0200
-+++ ../nautilus-compiled/src/nautilus-window.h	2009-01-09 22:17:26.248849112 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window.h nautilus-2.24.2/src/nautilus-window.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-window.h	2008-10-06 19:22:18.000000000 +0200
++++ nautilus-2.24.2/src/nautilus-window.h	2009-01-23 22:36:10.641377886 +0100
 @@ -145,7 +145,8 @@ void             nautilus_window_launch_
  void             nautilus_window_display_error        (NautilusWindow    *window,
                                                         const char        *error_msg);
@@ -7656,9 +8034,9 @@
  void             nautilus_window_allow_reload         (NautilusWindow    *window,
                                                         gboolean           allow);
  void             nautilus_window_allow_up             (NautilusWindow    *window, 
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-zfs-bar.c ../nautilus-compiled/src/nautilus-zfs-bar.c
---- nautilus-2.24.2/src/nautilus-zfs-bar.c	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/src/nautilus-zfs-bar.c	2009-01-09 22:17:26.250083366 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-zfs-bar.c nautilus-2.24.2/src/nautilus-zfs-bar.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-zfs-bar.c	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/src/nautilus-zfs-bar.c	2009-01-23 22:36:10.769076522 +0100
 @@ -0,0 +1,1026 @@
 +/* 
 + * Copyright (C) 2008 Sun Microsystems (Erwann Chenede)
@@ -8686,9 +9064,9 @@
 +
 +	return GTK_WIDGET (bar);
 +}
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/nautilus-zfs-bar.h ../nautilus-compiled/src/nautilus-zfs-bar.h
---- nautilus-2.24.2/src/nautilus-zfs-bar.h	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/src/nautilus-zfs-bar.h	2009-01-09 22:17:26.285289640 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-zfs-bar.h nautilus-2.24.2/src/nautilus-zfs-bar.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/nautilus-zfs-bar.h	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/src/nautilus-zfs-bar.h	2009-01-23 22:36:10.794475033 +0100
 @@ -0,0 +1,57 @@
 +#ifndef __NAUTILUS_ZFS_BAR_H
 +#define __NAUTILUS_ZFS_BAR_H
@@ -8747,9 +9125,9 @@
 +
 +
 +#endif /* __NAUTILUS_ZFS_BAR_H */
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/timescale.c ../nautilus-compiled/src/timescale.c
---- nautilus-2.24.2/src/timescale.c	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/src/timescale.c	2009-01-09 22:17:26.234772473 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/timescale.c nautilus-2.24.2/src/timescale.c
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/timescale.c	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/src/timescale.c	2009-01-23 22:36:10.788704478 +0100
 @@ -0,0 +1,224 @@
 +/* 
 + * Copyright (C) 2008 Sun Microsystems (Erwann Chenede)
@@ -8975,9 +9353,9 @@
 +  widget_class->expose_event = gtk_timescale_expose;
 +}
 +
-diff -x '*.out' -x '*.*~' -x '*.orig' -x '*.rej' -rupN nautilus-2.24.2/src/timescale.h ../nautilus-compiled/src/timescale.h
---- nautilus-2.24.2/src/timescale.h	1970-01-01 01:00:00.000000000 +0100
-+++ ../nautilus-compiled/src/timescale.h	2009-01-09 22:17:26.282472393 +0100
+diff -Nrup SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/timescale.h nautilus-2.24.2/src/timescale.h
+--- SUNWgnome-file-mgr-2.24.2/nautilus-2.24.2/src/timescale.h	1970-01-01 01:00:00.000000000 +0100
++++ nautilus-2.24.2/src/timescale.h	2009-01-23 22:36:10.602979355 +0100
 @@ -0,0 +1,43 @@
 +#ifndef __GTK_TIMESCALE_H__
 +#define __GTK_TIMESCALE_H__