summaryrefslogtreecommitdiff
path: root/daemon/gvfsbackendarchive.c
diff options
context:
space:
mode:
authorRoss Lagerwall <rosslagerwall@gmail.com>2013-11-11 18:51:47 +0200
committerRoss Lagerwall <rosslagerwall@gmail.com>2013-11-15 16:58:52 +0200
commitff870666620b48f9563d7c587b56ed06c349a96c (patch)
treeb48961c97689f1594ca6c887054a544034be4e66 /daemon/gvfsbackendarchive.c
parentaf1e2dd22047e1f95c245a9ada11958899f20278 (diff)
downloadgvfs-ff870666620b48f9563d7c587b56ed06c349a96c.tar.gz
archive: Set filesystem size information
Set the total size and the amount used to be the total size of the files; set the amount free to 0. https://bugzilla.gnome.org/show_bug.cgi?id=711852
Diffstat (limited to 'daemon/gvfsbackendarchive.c')
-rw-r--r--daemon/gvfsbackendarchive.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/daemon/gvfsbackendarchive.c b/daemon/gvfsbackendarchive.c
index 2461e53a..b69db2ce 100644
--- a/daemon/gvfsbackendarchive.c
+++ b/daemon/gvfsbackendarchive.c
@@ -70,6 +70,7 @@ struct _GVfsBackendArchive
GFile * file;
ArchiveFile * files; /* the tree of files */
+ gsize size;
};
G_DEFINE_TYPE (GVfsBackendArchive, g_vfs_backend_archive, G_VFS_TYPE_BACKEND)
@@ -547,7 +548,10 @@ create_file_tree (GVfsBackendArchive *ba, GVfsJob *job)
TRUE);
/* Don't set info for root */
if (file != ba->files)
- archive_file_set_info_from_entry (archive, file, entry, entry_index);
+ {
+ archive_file_set_info_from_entry (archive, file, entry, entry_index);
+ ba->size += g_file_info_get_size (file->info);
+ }
archive_read_data_skip (archive->archive);
entry_index++;
}
@@ -862,8 +866,13 @@ try_query_fs_info (GVfsBackend *backend,
GFileInfo *info,
GFileAttributeMatcher *attribute_matcher)
{
+ GVfsBackendArchive *ba = G_VFS_BACKEND_ARCHIVE (backend);
+
g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, TRUE);
g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW, G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL);
+ g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE, ba->size);
+ g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_FREE, 0);
+ g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_USED, ba->size);
g_vfs_job_succeeded (G_VFS_JOB (job));
return TRUE;
}