summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-file-utilities.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2012-08-31 15:35:55 -0400
committerWilliam Jon McCann <jmccann@redhat.com>2012-08-31 16:44:55 -0400
commit0852847e2613dbcebb4ed7f58e5b2aee3aa86a90 (patch)
treece15d8c4def624022d0c85146eb52beca4e7266f /libnautilus-private/nautilus-file-utilities.c
parentc8b27b3b8b815a993b1536336cdbc5d1089f2e7c (diff)
downloadnautilus-0852847e2613dbcebb4ed7f58e5b2aee3aa86a90.tar.gz
Don't try to close the window when a mount goes away
Go to home instead. https://bugzilla.gnome.org/show_bug.cgi?id=666985
Diffstat (limited to 'libnautilus-private/nautilus-file-utilities.c')
-rw-r--r--libnautilus-private/nautilus-file-utilities.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-file-utilities.c b/libnautilus-private/nautilus-file-utilities.c
index 35a43d66c..b526a42b7 100644
--- a/libnautilus-private/nautilus-file-utilities.c
+++ b/libnautilus-private/nautilus-file-utilities.c
@@ -882,6 +882,48 @@ nautilus_is_desktop_directory (GFile *dir)
return g_file_equal (dir, desktop_dir);
}
+GMount *
+nautilus_get_mounted_mount_for_root (GFile *location)
+{
+ GVolumeMonitor *volume_monitor;
+ GList *mounts;
+ GList *l;
+ GMount *mount;
+ GMount *result = NULL;
+ GFile *root = NULL;
+ GFile *default_location = NULL;
+
+ volume_monitor = g_volume_monitor_get ();
+ mounts = g_volume_monitor_get_mounts (volume_monitor);
+
+ for (l = mounts; l != NULL; l = l->next) {
+ mount = l->data;
+
+ if (g_mount_is_shadowed (mount)) {
+ continue;
+ }
+
+ root = g_mount_get_root (mount);
+ if (g_file_equal (location, root)) {
+ result = g_object_ref (mount);
+ break;
+ }
+
+ default_location = g_mount_get_default_location (mount);
+ if (!g_file_equal (default_location, root) &&
+ g_file_equal (location, default_location)) {
+ result = g_object_ref (mount);
+ break;
+ }
+ }
+
+ g_clear_object (&root);
+ g_clear_object (&default_location);
+ g_list_free_full (mounts, g_object_unref);
+
+ return result;
+}
+
char *
nautilus_ensure_unique_file_name (const char *directory_uri,
const char *base_name,