diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c index 772618f3d0..baae74251d 100644 --- a/gtk/gtkfilesystem.c +++ b/gtk/gtkfilesystem.c @@ -921,3 +921,34 @@ _gtk_file_has_native_path (GFile *file) return has_native_path; } + +static const gchar * const remote_types[] = { + "sftp", + "webdav", + "ftp", + "nfs", + "cifs", + NULL +}; + +gboolean +_gtk_file_consider_as_remote (GFile *file) +{ + GFileInfo *info; + gboolean is_remote; + + info = g_file_query_filesystem_info (file, "filesystem::type", NULL, NULL); + if (info) + { + const gchar *type; + + type = g_file_info_get_attribute_string (info, "filesystem::type"); + is_remote = g_strv_contains (remote_types, type); + + g_object_unref (info); + } + else + is_remote = FALSE; + + return is_remote; +} diff --git a/gtk/gtkfilesystem.h b/gtk/gtkfilesystem.h index ebc796e19d..70bd3eaaf1 100644 --- a/gtk/gtkfilesystem.h +++ b/gtk/gtkfilesystem.h @@ -118,6 +118,8 @@ gboolean _gtk_file_info_consider_as_directory (GFileInfo *info); /* GFile helper functions */ gboolean _gtk_file_has_native_path (GFile *file); +gboolean _gtk_file_consider_as_remote (GFile *file); + G_END_DECLS #endif /* __GTK_FILE_SYSTEM_H__ */