summaryrefslogtreecommitdiff
path: root/daemon/gvfsjobenumerate.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@src.gnome.org>2007-09-13 14:48:29 +0000
committerAlexander Larsson <alexl@src.gnome.org>2007-09-13 14:48:29 +0000
commita5b854635081f328c017bd9382dec8e72beed39c (patch)
treec026af5fcf480874680d7367fdc9d2df7c9d7693 /daemon/gvfsjobenumerate.c
parentb4614bcb1e025990f994bcbec1cb8225c79c68c2 (diff)
downloadgvfs-a5b854635081f328c017bd9382dec8e72beed39c.tar.gz
Pass preallocated infos and attribute masks to backends. Use auto-masking.
Original git commit by Alexander Larsson <alexl@redhat.com> at 1187866884 +0200 svn path=/trunk/; revision=769
Diffstat (limited to 'daemon/gvfsjobenumerate.c')
-rw-r--r--daemon/gvfsjobenumerate.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/daemon/gvfsjobenumerate.c b/daemon/gvfsjobenumerate.c
index b29d9fd1..a2e6bf07 100644
--- a/daemon/gvfsjobenumerate.c
+++ b/daemon/gvfsjobenumerate.c
@@ -29,7 +29,7 @@ g_vfs_job_enumerate_finalize (GObject *object)
job = G_VFS_JOB_ENUMERATE (object);
g_free (job->filename);
- g_free (job->attributes);
+ g_file_attribute_matcher_unref (job->attribute_matcher);
g_free (job->object_path);
if (G_OBJECT_CLASS (g_vfs_job_enumerate_parent_class)->finalize)
@@ -95,7 +95,7 @@ g_vfs_job_enumerate_new (DBusConnection *connection,
job->object_path = g_strdup (obj_path);
job->filename = g_strndup (path_data, path_len);
job->backend = backend;
- job->attributes = g_strdup (attributes);
+ job->attribute_matcher = g_file_attribute_matcher_new (attributes);
job->flags = flags;
return G_VFS_JOB (job);
@@ -108,6 +108,7 @@ g_vfs_job_enumerate_add_info (GVfsJobEnumerate *job,
DBusMessage *message, *orig_message;
DBusMessageIter iter, array_iter;
int num;
+ GFileInfo *info;
restart:
@@ -130,8 +131,13 @@ g_vfs_job_enumerate_add_info (GVfsJobEnumerate *job,
num = 0;
while (infos != NULL)
{
+ info = infos->data;
+
+ g_file_info_set_attribute_mask (info, job->attribute_matcher);
+
_g_dbus_append_file_info (&array_iter,
- infos->data);
+ info);
+
infos = infos->next;
if (++num > 100)
break;
@@ -186,7 +192,7 @@ run (GVfsJob *job)
class->enumerate (op_job->backend,
op_job,
op_job->filename,
- op_job->attributes,
+ op_job->attribute_matcher,
op_job->flags);
}
@@ -202,7 +208,7 @@ try (GVfsJob *job)
return class->try_enumerate (op_job->backend,
op_job,
op_job->filename,
- op_job->attributes,
+ op_job->attribute_matcher,
op_job->flags);
}