commit 10e08dcf71ebeb0411bdd662522802a95c792468
Author: Stephane Glondu <steph@glondu.net>
Date:   Thu Jun 11 08:29:47 2009 +0200

    Add patches for one filesystem

diff --git a/debian/changelog b/debian/changelog
index add42b3..f90730f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gnome-utils (2.26.0-1+baobab1) UNRELEASED; urgency=low
+
+  * Add patches for one filesystem
+
+ -- Stephane Glondu <steph@glondu.net>  Thu, 11 Jun 2009 08:27:55 +0200
+
 gnome-utils (2.26.0-1) unstable; urgency=low
 
   [ Josselin Mouette ]
diff --git a/debian/patches/1001-Add-one_filesystem-option-to-preference-dialog.patch b/debian/patches/1001-Add-one_filesystem-option-to-preference-dialog.patch
new file mode 100644
index 0000000..7d7c2f1
--- /dev/null
+++ b/debian/patches/1001-Add-one_filesystem-option-to-preference-dialog.patch
@@ -0,0 +1,135 @@
+From 8aa5b4f9ba02973a95d0a730b06c6c206edf1d07 Mon Sep 17 00:00:00 2001
+From: Stephane Glondu <steph@glondu.net>
+Date: Tue, 2 Sep 2008 23:12:55 +0200
+Subject: [PATCH 1/2] Add one_filesystem option to preference dialog
+
+---
+ baobab/data/baobab.glade  |   19 +++++++++++++++++++
+ baobab/src/baobab-prefs.c |   23 ++++++++++++++++++++++-
+ baobab/src/baobab.c       |    3 +++
+ baobab/src/baobab.h       |    2 ++
+ 4 files changed, 46 insertions(+), 1 deletions(-)
+
+diff --git a/baobab/data/baobab.glade b/baobab/data/baobab.glade
+index 91e9448..5a74abf 100644
+--- a/baobab/data/baobab.glade
++++ b/baobab/data/baobab.glade
+@@ -749,6 +749,25 @@
+ 	      <property name="fill">False</property>
+ 	    </packing>
+ 	  </child>
++
++	  <child>
++	    <widget class="GtkCheckButton" id="check_one_filesystem">
++	      <property name="visible">True</property>
++	      <property name="can_focus">True</property>
++	      <property name="label" translatable="yes">_Do not cross filesystem borders</property>
++	      <property name="use_underline">True</property>
++	      <property name="relief">GTK_RELIEF_NORMAL</property>
++	      <property name="focus_on_click">True</property>
++	      <property name="active">True</property>
++	      <property name="inconsistent">False</property>
++	      <property name="draw_indicator">True</property>
++	    </widget>
++	    <packing>
++	      <property name="padding">0</property>
++	      <property name="expand">False</property>
++	      <property name="fill">False</property>
++	    </packing>
++	  </child>
+ 	</widget>
+ 	<packing>
+ 	  <property name="padding">0</property>
+diff --git a/baobab/src/baobab-prefs.c b/baobab/src/baobab-prefs.c
+index 93ebac4..0ce6ad2 100644
+--- a/baobab/src/baobab-prefs.c
++++ b/baobab/src/baobab-prefs.c
+@@ -56,6 +56,8 @@ static gboolean set_model_checks (GtkTreeModel * model, GtkTreePath * path,
+ static void enable_home_cb (GtkToggleButton * togglebutton,
+ 			    gpointer user_data);
+ 
++static void enable_one_filesystem_cb (GtkToggleButton * togglebutton,
++                                      gpointer user_data);
+ 
+ void
+ props_notify (GConfClient *client,
+@@ -103,7 +105,7 @@ filechooser_response_cb (GtkDialog *dialog,
+ void
+ create_props (void)
+ {
+-	GtkWidget *dlg, *check_enablehome;
++	GtkWidget *dlg, *check_enablehome, *check_one_filesystem;
+ 	GladeXML *dlg_xml;
+ 
+ 	props_changed = FALSE;
+@@ -125,10 +127,19 @@ create_props (void)
+ 	gtk_toggle_button_set_active ((GtkToggleButton *) check_enablehome,
+ 				      baobab.bbEnableHomeMonitor);
+ 
++	check_one_filesystem = glade_xml_get_widget (dlg_xml, "check_one_filesystem");
++	gtk_toggle_button_set_active ((GtkToggleButton *) check_one_filesystem,
++				      baobab.bbEnableOneFilesystem);
++
+ 	g_signal_connect_after ((GtkToggleButton *) check_enablehome,
+ 				"toggled", G_CALLBACK (enable_home_cb),
+ 				NULL);
+ 
++	g_signal_connect_after ((GtkToggleButton *) check_one_filesystem,
++				"toggled", G_CALLBACK (enable_one_filesystem_cb),
++				NULL);
++
++
+ 	g_signal_connect (dlg, "response",
+ 		    	  G_CALLBACK (filechooser_response_cb),
+ 		    	  NULL);
+@@ -406,3 +417,13 @@ enable_home_cb (GtkToggleButton *togglebutton, gpointer user_data)
+ 			       baobab.bbEnableHomeMonitor, NULL);
+ 
+ }
++
++void
++enable_one_filesystem_cb (GtkToggleButton *togglebutton, gpointer user_data)
++{
++	baobab.bbEnableOneFilesystem = gtk_toggle_button_get_active (togglebutton);
++
++	gconf_client_set_bool (baobab.gconf_client, PROPS_ENABLE_ONE_FILESYSTEM,
++			       baobab.bbEnableOneFilesystem, NULL);
++
++}
+diff --git a/baobab/src/baobab.c b/baobab/src/baobab.c
+index de0f841..ab3885c 100644
+--- a/baobab/src/baobab.c
++++ b/baobab/src/baobab.c
+@@ -719,6 +719,9 @@ baobab_init (void)
+ 	baobab.bbEnableHomeMonitor = gconf_client_get_bool (baobab.gconf_client,
+ 							    PROPS_ENABLE_HOME_MONITOR,
+ 							    NULL);
++	baobab.bbEnableOneFilesystem = gconf_client_get_bool (baobab.gconf_client,
++                                                              PROPS_ENABLE_ONE_FILESYSTEM,
++                                                              NULL);
+ 
+ 	baobab_create_toolbar ();
+ 
+diff --git a/baobab/src/baobab.h b/baobab/src/baobab.h
+index 370a1a2..914088b 100644
+--- a/baobab/src/baobab.h
++++ b/baobab/src/baobab.h
+@@ -45,6 +45,7 @@ struct BaobabSearchOpt;
+ #define BAOBAB_SUBFLSTIPS_VISIBLE_KEY   BAOBAB_KEY_DIR "/ui/baobab_subfoldertips_visible"
+ #define PROPS_SCAN_KEY			BAOBAB_KEY_DIR "/properties/skip_scan_uri_list"
+ #define PROPS_ENABLE_HOME_MONITOR	BAOBAB_KEY_DIR "/properties/enable_home_monitor"
++#define PROPS_ENABLE_ONE_FILESYSTEM	BAOBAB_KEY_DIR "/properties/enable_one_filesystem"
+ #define SYSTEM_TOOLBAR_STYLE		"/desktop/gnome/interface/toolbar_style"
+ 
+ typedef struct _ContextMenu ContextMenu;
+@@ -76,6 +77,7 @@ struct _baobab_application {
+ 	gboolean CONTENTS_CHANGED_DELAYED;
+ 	GSList *excluded_locations;
+ 	gboolean bbEnableHomeMonitor;
++	gboolean bbEnableOneFilesystem;
+ 	gchar *label_scan;
+ 	gboolean show_allocated;
+ 	gboolean is_local;
+-- 
+1.6.3.1
+
diff --git a/debian/patches/1002-Actually-implement-the-one_filesystem-option.patch b/debian/patches/1002-Actually-implement-the-one_filesystem-option.patch
new file mode 100644
index 0000000..4297bd6
--- /dev/null
+++ b/debian/patches/1002-Actually-implement-the-one_filesystem-option.patch
@@ -0,0 +1,63 @@
+From a2722b7d04a5982f3e4b1ac9fe581940280675eb Mon Sep 17 00:00:00 2001
+From: Stephane Glondu <steph@glondu.net>
+Date: Tue, 2 Sep 2008 23:59:08 +0200
+Subject: [PATCH 2/2] Actually implement the one_filesystem option
+
+---
+ baobab/src/baobab-scan.c |   12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/baobab/src/baobab-scan.c b/baobab/src/baobab-scan.c
+index 35e88d8..c38eeef 100644
+--- a/baobab/src/baobab-scan.c
++++ b/baobab/src/baobab-scan.c
+@@ -131,6 +131,7 @@ static const char *dir_attributes = \
+ 	G_FILE_ATTRIBUTE_STANDARD_SIZE "," \
+ 	G_FILE_ATTRIBUTE_UNIX_BLOCKS "," \
+ 	G_FILE_ATTRIBUTE_UNIX_NLINK "," \
++	G_FILE_ATTRIBUTE_UNIX_DEVICE "," \
+ 	G_FILE_ATTRIBUTE_ACCESS_CAN_READ;
+ 
+ 
+@@ -168,7 +169,8 @@ loopdir (GFile *file,
+ 	 GFileInfo *info,
+ 	 guint count,
+ 	 BaobabHardLinkArray *hla,
+-	 gint current_depth)
++	 gint current_depth,
++	 dev_t device)
+ {
+ 	GList *file_list;
+ 	guint64 tempHLsize = 0;
+@@ -203,6 +205,10 @@ loopdir (GFile *file,
+ 
+ 	parse_name = g_file_get_parse_name (file);	
+ 
++	/* Skip folders outside the first filesystem */
++	if (baobab.bbEnableOneFilesystem && g_file_info_get_attribute_uint32(info, G_FILE_ATTRIBUTE_UNIX_DEVICE) != device)
++		goto exit;
++
+ 	if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_SIZE))
+ 		retloop.size = g_file_info_get_size (info);
+ 
+@@ -261,7 +267,7 @@ loopdir (GFile *file,
+ 		if (temp_type == G_FILE_TYPE_DIRECTORY) {
+ 			GFile *child_dir = g_file_get_child (file, 
+ 						g_file_info_get_name (temp_info));
+-			temp = loopdir (child_dir, temp_info, count, hla, current_depth+1);
++			temp = loopdir (child_dir, temp_info, count, hla, current_depth+1, device);
+ 			retloop.size += temp.size;
+ 			retloop.alloc_size += temp.alloc_size;
+ 			retloop.depth = ((temp.depth + 1) > retloop.depth) ? temp.depth + 1 : retloop.depth;
+@@ -360,7 +366,7 @@ baobab_scan_execute (GFile *location)
+ 	if (ftype == G_FILE_TYPE_DIRECTORY) {
+ 		hla = baobab_hardlinks_array_create ();
+ 
+-		sizes = loopdir (location, info, 0, hla, 0);
++		sizes = loopdir (location, info, 0, hla, 0, g_file_info_get_attribute_uint32(info, G_FILE_ATTRIBUTE_UNIX_DEVICE));
+ 		baobab.model_max_depth = sizes.depth;
+ 
+ 		baobab_hardlinks_array_free (hla);
+-- 
+1.6.3.1
+
