summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorHans Petter Jansson <hpj@novell.com>2009-01-13 20:23:55 +0000
committerHans Petter <hansp@src.gnome.org>2009-01-13 20:23:55 +0000
commit908d6cc06558de0845d3c382a290ec25d65d2b2c (patch)
tree8cca4851ed273eac6086f82345b005d2a110119c /client
parentaa4569e08c364963ac881bd0f63a3a6915929afd (diff)
downloadgvfs-908d6cc06558de0845d3c382a290ec25d65d2b2c.tar.gz
Get only the attributes we require. This speeds up directory listings in
2009-01-13 Hans Petter Jansson <hpj@novell.com> * client/gvfsfusedaemon.c (getattr_for_file) (vfs_open) (vfs_create) (vfs_rmdir) (vfs_access): Get only the attributes we require. This speeds up directory listings in particular, since we don't need to probe individual files to determine their MIME types. svn path=/trunk/; revision=2168
Diffstat (limited to 'client')
-rw-r--r--client/gvfsfusedaemon.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/client/gvfsfusedaemon.c b/client/gvfsfusedaemon.c
index b61e96c2..af7d5a57 100644
--- a/client/gvfsfusedaemon.c
+++ b/client/gvfsfusedaemon.c
@@ -751,7 +751,18 @@ getattr_for_file (GFile *file, struct stat *sbuf)
GError *error = NULL;
gint result = 0;
- file_info = g_file_query_info (file, "*", 0, NULL, &error);
+ file_info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK ","
+ G_FILE_ATTRIBUTE_STANDARD_SIZE ","
+ G_FILE_ATTRIBUTE_UNIX_MODE ","
+ G_FILE_ATTRIBUTE_TIME_CHANGED ","
+ G_FILE_ATTRIBUTE_TIME_MODIFIED ","
+ G_FILE_ATTRIBUTE_TIME_ACCESS ","
+ G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE ","
+ G_FILE_ATTRIBUTE_UNIX_BLOCKS,
+ 0, NULL, &error);
if (file_info)
{
@@ -962,7 +973,7 @@ vfs_open (const gchar *path, struct fuse_file_info *fi)
GFileInfo *file_info;
GError *error = NULL;
- file_info = g_file_query_info (file, "*", 0, NULL, &error);
+ file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE, 0, NULL, &error);
if (file_info)
{
@@ -1046,7 +1057,7 @@ vfs_create (const gchar *path, mode_t mode, struct fuse_file_info *fi)
GFileInfo *file_info;
GError *error = NULL;
- file_info = g_file_query_info (file, "*", 0, NULL, &error);
+ file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE, 0, NULL, &error);
if (file_info)
{
@@ -1687,7 +1698,7 @@ vfs_rmdir (const gchar *path)
{
GFileInfo *file_info;
- file_info = g_file_query_info (file, "*", 0, NULL, &error);
+ file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE, 0, NULL, &error);
if (file_info)
{
if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY)
@@ -1903,7 +1914,11 @@ vfs_access (const gchar *path, gint mode)
{
GFileInfo *file_info;
- file_info = g_file_query_info (file, "*", 0, NULL, &error);
+ file_info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_ACCESS_CAN_READ ","
+ G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE ","
+ G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE ",",
+ 0, NULL, &error);
if (file_info)
{
if ((mode & R_OK && (g_file_info_has_attribute (file_info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ) &&