Tomas Bzatek 3134cdc
From 67069c464a2cb827a2afe2b7886e79707c7149e2 Mon Sep 17 00:00:00 2001
Tomas Bzatek 3134cdc
From: Christian Kellner <gicmo@gnome.org>
Tomas Bzatek 3134cdc
Date: Fri, 16 Oct 2009 10:34:02 +0000
Tomas Bzatek 3134cdc
Subject: [HTTP] Use soup's (2.26) header parsing function
Tomas Bzatek 3134cdc
Tomas Bzatek 3134cdc
Libsoup has (since 2.26) specific functions for parsing various
Tomas Bzatek 3134cdc
well-known http headers, including Content-Type and Content-Length.
Tomas Bzatek 3134cdc
Bump the soup requirement accordingly. Based on a patch rom Robert
Tomas Bzatek 3134cdc
Ancell <robert.ancell@gmail.com>
Tomas Bzatek 3134cdc
---
Tomas Bzatek 3134cdc
diff --git a/configure.ac b/configure.ac
Tomas Bzatek 3134cdc
index a2c9932..5069d73 100644
Tomas Bzatek 3134cdc
--- a/configure.ac
Tomas Bzatek 3134cdc
+++ b/configure.ac
Tomas Bzatek 3134cdc
@@ -121,7 +121,7 @@ HTTP_CFLAGS=
Tomas Bzatek 3134cdc
 HTTP_LIBS=
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
 if test "x$enable_http" != "xno"; then
Tomas Bzatek 3134cdc
-  PKG_CHECK_EXISTS(libsoup-gnome-2.4 >= 2.25.1, msg_http=yes)
Tomas Bzatek 3134cdc
+  PKG_CHECK_EXISTS(libsoup-gnome-2.4 >= 2.26.0, msg_http=yes)
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
   if test "x$msg_http" = "xyes"; then
Tomas Bzatek 3134cdc
     PKG_CHECK_MODULES(HTTP, libsoup-gnome-2.4 libxml-2.0)
Tomas Bzatek 3134cdc
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
Tomas Bzatek 3134cdc
index 23d1f97..ee531d1 100644
Tomas Bzatek 3134cdc
--- a/daemon/gvfsbackendhttp.c
Tomas Bzatek 3134cdc
+++ b/daemon/gvfsbackendhttp.c
Tomas Bzatek 3134cdc
@@ -549,40 +549,24 @@ file_info_from_message (SoupMessage *msg,
Tomas Bzatek 3134cdc
   if (basename != NULL &&
Tomas Bzatek 3134cdc
       g_file_attribute_matcher_matches (matcher,
Tomas Bzatek 3134cdc
                                         G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME))
Tomas Bzatek 3134cdc
-    {
Tomas Bzatek 3134cdc
-      ed_name = gvfs_file_info_populate_names_as_local (info, basename);
Tomas Bzatek 3134cdc
-    }
Tomas Bzatek 3134cdc
+    ed_name = gvfs_file_info_populate_names_as_local (info, basename);
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
   if (ed_name != NULL &&
Tomas Bzatek 3134cdc
       g_file_attribute_matcher_matches (matcher,
Tomas Bzatek 3134cdc
                                         G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME))
Tomas Bzatek 3134cdc
-    {
Tomas Bzatek 3134cdc
-      g_file_info_set_edit_name (info, ed_name);
Tomas Bzatek 3134cdc
-    }
Tomas Bzatek 3134cdc
+    g_file_info_set_edit_name (info, ed_name);
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
   g_free (basename);
Tomas Bzatek 3134cdc
   g_free (ed_name);
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
-  text = soup_message_headers_get (msg->response_headers,
Tomas Bzatek 3134cdc
-                                   "Content-Length");
Tomas Bzatek 3134cdc
-  if (text)
Tomas Bzatek 3134cdc
-    {
Tomas Bzatek 3134cdc
-      guint64 size = g_ascii_strtoull (text, NULL, 10);
Tomas Bzatek 3134cdc
-      g_file_info_set_size (info, size);
Tomas Bzatek 3134cdc
-    }
Tomas Bzatek 3134cdc
-
Tomas Bzatek 3134cdc
+  if (soup_message_headers_get_encoding(msg->response_headers) == SOUP_ENCODING_CONTENT_LENGTH)
Tomas Bzatek 3134cdc
+    g_file_info_set_size (info, soup_message_headers_get_content_length (msg->response_headers));
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
-  text = soup_message_headers_get (msg->response_headers,
Tomas Bzatek 3134cdc
-                                   "Content-Type");
Tomas Bzatek 3134cdc
+  text = soup_message_headers_get_content_type (msg->response_headers, NULL);
Tomas Bzatek 3134cdc
   if (text)
Tomas Bzatek 3134cdc
     {
Tomas Bzatek 3134cdc
-      char *p = strchr (text, ';');
Tomas Bzatek 3134cdc
-      char *tmp = NULL;
Tomas Bzatek 3134cdc
       GIcon *icon;
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
-      if (p != NULL)
Tomas Bzatek 3134cdc
-        text = tmp = g_strndup (text, p - text);
Tomas Bzatek 3134cdc
-
Tomas Bzatek 3134cdc
       g_file_info_set_file_type (info, G_FILE_TYPE_REGULAR);
Tomas Bzatek 3134cdc
       g_file_info_set_content_type (info, text);
Tomas Bzatek 3134cdc
       g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE, text);
Tomas Bzatek 3134cdc
@@ -590,9 +574,6 @@ file_info_from_message (SoupMessage *msg,
Tomas Bzatek 3134cdc
       icon = g_content_type_get_icon (text);
Tomas Bzatek 3134cdc
       g_file_info_set_icon (info, icon);
Tomas Bzatek 3134cdc
       g_object_unref (icon);
Tomas Bzatek 3134cdc
-
Tomas Bzatek 3134cdc
-      g_free (tmp);
Tomas Bzatek 3134cdc
-
Tomas Bzatek 3134cdc
     }
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
 
Tomas Bzatek 3134cdc
--
Tomas Bzatek 3134cdc
cgit v0.8.2