summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorChristian Kellner <gicmo@gnome.org>2009-10-16 12:34:02 +0200
committerChristian Kellner <gicmo@gnome.org>2009-10-16 12:39:53 +0200
commit67069c464a2cb827a2afe2b7886e79707c7149e2 (patch)
tree3b558f22c9c4ea58f713082c7d785040ca34f2b9 /daemon
parent47a6cb95996df5538bab4b9b07cdd8f944c0b24b (diff)
downloadgvfs-67069c464a2cb827a2afe2b7886e79707c7149e2.tar.gz
[HTTP] Use soup's (2.26) header parsing function
Libsoup has (since 2.26) specific functions for parsing various well-known http headers, including Content-Type and Content-Length. Bump the soup requirement accordingly. Based on a patch rom Robert Ancell <robert.ancell@gmail.com>
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsbackendhttp.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
index 23d1f975..ee531d14 100644
--- a/daemon/gvfsbackendhttp.c
+++ b/daemon/gvfsbackendhttp.c
@@ -549,40 +549,24 @@ file_info_from_message (SoupMessage *msg,
if (basename != NULL &&
g_file_attribute_matcher_matches (matcher,
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME))
- {
- ed_name = gvfs_file_info_populate_names_as_local (info, basename);
- }
+ ed_name = gvfs_file_info_populate_names_as_local (info, basename);
if (ed_name != NULL &&
g_file_attribute_matcher_matches (matcher,
G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME))
- {
- g_file_info_set_edit_name (info, ed_name);
- }
+ g_file_info_set_edit_name (info, ed_name);
g_free (basename);
g_free (ed_name);
- text = soup_message_headers_get (msg->response_headers,
- "Content-Length");
- if (text)
- {
- guint64 size = g_ascii_strtoull (text, NULL, 10);
- g_file_info_set_size (info, size);
- }
-
+ if (soup_message_headers_get_encoding(msg->response_headers) == SOUP_ENCODING_CONTENT_LENGTH)
+ g_file_info_set_size (info, soup_message_headers_get_content_length (msg->response_headers));
- text = soup_message_headers_get (msg->response_headers,
- "Content-Type");
+ text = soup_message_headers_get_content_type (msg->response_headers, NULL);
if (text)
{
- char *p = strchr (text, ';');
- char *tmp = NULL;
GIcon *icon;
- if (p != NULL)
- text = tmp = g_strndup (text, p - text);
-
g_file_info_set_file_type (info, G_FILE_TYPE_REGULAR);
g_file_info_set_content_type (info, text);
g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE, text);
@@ -590,9 +574,6 @@ file_info_from_message (SoupMessage *msg,
icon = g_content_type_get_icon (text);
g_file_info_set_icon (info, icon);
g_object_unref (icon);
-
- g_free (tmp);
-
}