]> Pileus Git - ~andy/git/commitdiff
http_request: factor out curlinfo_strbuf
authorJeff King <peff@peff.net>
Sat, 28 Sep 2013 08:31:11 +0000 (04:31 -0400)
committerJonathan Nieder <jrnieder@gmail.com>
Mon, 30 Sep 2013 20:04:45 +0000 (13:04 -0700)
When we retrieve the content-type of an http response, curl
gives us a pointer to internal storage, which we then copy
into a strbuf. Let's factor out the get-and-copy routine,
which can be used for getting other curl info.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
http.c

diff --git a/http.c b/http.c
index 9b1015881a97637d00aa262fb63dfd0cee3d561f..202468a9807bbbddec6474ed2518e3b13c4f8098 100644 (file)
--- a/http.c
+++ b/http.c
@@ -820,6 +820,18 @@ int handle_curl_result(struct slot_results *results)
        }
 }
 
+static CURLcode curlinfo_strbuf(CURL *curl, CURLINFO info, struct strbuf *buf)
+{
+       char *ptr;
+       CURLcode ret;
+
+       strbuf_reset(buf);
+       ret = curl_easy_getinfo(curl, info, &ptr);
+       if (!ret && ptr)
+               strbuf_addstr(buf, ptr);
+       return ret;
+}
+
 /* http_request() targets */
 #define HTTP_REQUEST_STRBUF    0
 #define HTTP_REQUEST_FILE      1
@@ -878,13 +890,8 @@ static int http_request(const char *url, struct strbuf *type,
                ret = HTTP_START_FAILED;
        }
 
-       if (type) {
-               char *t;
-               strbuf_reset(type);
-               curl_easy_getinfo(slot->curl, CURLINFO_CONTENT_TYPE, &t);
-               if (t)
-                       strbuf_addstr(type, t);
-       }
+       if (type)
+               curlinfo_strbuf(slot->curl, CURLINFO_CONTENT_TYPE, type);
 
        curl_slist_free_all(headers);
        strbuf_release(&buf);