summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2012-02-08 18:53:51 +0100
committerTomas Bzatek <tbzatek@redhat.com>2012-02-09 14:43:48 +0100
commit99ae116200691c1dc67ea3fb74060e0d90bf482d (patch)
tree72b57b370eb247a1f051803095d590d76d73f294
parentcbee78fdf13541f01de3078244c56c84af8477c0 (diff)
downloadgvfs-99ae116200691c1dc67ea3fb74060e0d90bf482d.tar.gz
dav: Fix free space reporting
Based on patch by Gareth Bult https://bugzilla.gnome.org/show_bug.cgi?id=669258
-rw-r--r--daemon/gvfsbackenddav.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index 74103113..4f1d8e09 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -1089,6 +1089,12 @@ ms_response_to_fs_info (MsResponse *response,
xmlNodePtr node;
guint status;
const char *text;
+ guint64 bytes_avail;
+ guint64 bytes_used;
+ gboolean have_bytes_avail;
+ gboolean have_bytes_used;
+
+ have_bytes_avail = have_bytes_used = FALSE;
ms_response_get_propstat_iter (response, &iter);
while (xml_node_iter_next (&iter))
@@ -1109,28 +1115,31 @@ ms_response_to_fs_info (MsResponse *response,
if (node_has_name (node, "quota-available-bytes"))
{
- guint64 size;
-
- if (! string_to_uint64 (text, &size))
+ if (! string_to_uint64 (text, &bytes_avail))
continue;
- g_file_info_set_attribute_uint64 (info,
- G_FILE_ATTRIBUTE_FILESYSTEM_SIZE,
- size);
+ have_bytes_avail = TRUE;
}
else if (node_has_name (node, "quota-used-bytes"))
{
- guint64 size;
-
- if (! string_to_uint64 (text, &size))
+ if (! string_to_uint64 (text, &bytes_used))
continue;
- g_file_info_set_attribute_uint64 (info,
- G_FILE_ATTRIBUTE_FILESYSTEM_FREE,
- size);
+ have_bytes_used = TRUE;
}
}
}
+
+ if (have_bytes_avail)
+ {
+ g_file_info_set_attribute_uint64 (info,
+ G_FILE_ATTRIBUTE_FILESYSTEM_FREE,
+ bytes_avail);
+ if (have_bytes_used)
+ g_file_info_set_attribute_uint64 (info,
+ G_FILE_ATTRIBUTE_FILESYSTEM_SIZE,
+ bytes_avail + bytes_used);
+ }
}
static GFileType