]> git.street.me.uk Git - andy/viking.git/commitdiff
Fix unecessary change in string
authorGuilhem Bonnefille <guilhem.bonnefille@gmail.com>
Mon, 11 Oct 2010 21:08:57 +0000 (23:08 +0200)
committerGuilhem Bonnefille <guilhem.bonnefille@gmail.com>
Mon, 11 Oct 2010 21:08:57 +0000 (23:08 +0200)
Simply play with length.
Furthermore, this character belongs to a string owned
by other part of software.

src/curl_download.c

index d08260d8c6594c0dfa6a3a78c3425527948313cd..5d94919a0cbcd962a97488697af7a188d094d2da 100644 (file)
@@ -57,14 +57,16 @@ static size_t curl_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream
 
 static size_t curl_get_etag_func(void *ptr, size_t size, size_t nmemb, gchar **stream)
 {
 
 static size_t curl_get_etag_func(void *ptr, size_t size, size_t nmemb, gchar **stream)
 {
+#define ETAG_KEYWORD "ETag: "
+#define ETAG_LEN (sizeof(ETAG_KEYWORD)-1)
   size_t len = size*nmemb;
   size_t len = size*nmemb;
-  char *str = g_strstr_len(ptr, len, "ETag:");
+  char *str = g_strstr_len(ptr, len, ETAG_KEYWORD);
   if (str) {
   if (str) {
-    char *etag_str = str + strlen("ETag: ");
-    char *end_str = g_strstr_len(etag_str, len, "\n");
+    char *etag_str = str + ETAG_LEN;
+    char *end_str = g_strstr_len(etag_str, len - ETAG_LEN, "\r\n");
     if (etag_str && end_str) {
     if (etag_str && end_str) {
-      end_str = '\0';
-      *stream = g_strndup(etag_str, len);
+      *stream = g_strndup(etag_str, end_str - etag_str);
+      g_debug("%s: ETAG found: %s", __FUNCTION__, *stream);
     }
   }
   return nmemb;
     }
   }
   return nmemb;