diff options
author | Ross Lagerwall <rosslagerwall@gmail.com> | 2013-11-11 18:51:47 +0200 |
---|---|---|
committer | Ross Lagerwall <rosslagerwall@gmail.com> | 2013-11-15 16:58:52 +0200 |
commit | ff870666620b48f9563d7c587b56ed06c349a96c (patch) | |
tree | b48961c97689f1594ca6c887054a544034be4e66 /daemon/gvfsbackendarchive.c | |
parent | af1e2dd22047e1f95c245a9ada11958899f20278 (diff) | |
download | gvfs-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.c | 11 |
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; } |