diff options
author | Tomas Bzatek <tbzatek@redhat.com> | 2012-02-08 18:53:51 +0100 |
---|---|---|
committer | Tomas Bzatek <tbzatek@redhat.com> | 2012-02-09 14:43:48 +0100 |
commit | 99ae116200691c1dc67ea3fb74060e0d90bf482d (patch) | |
tree | 72b57b370eb247a1f051803095d590d76d73f294 | |
parent | cbee78fdf13541f01de3078244c56c84af8477c0 (diff) | |
download | gvfs-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.c | 33 |
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 |