chiark / gitweb /
bus-proxy: rename synthetic_reply_return_strv() to synthetic_reply_method_return_strv()
[elogind.git] / src / import / curl-util.c
index 6a6b1c00048c7f75b58c4af3fe944f7ddf90e0c6..d390cfb1f3e5f0978bfdfb075a300cae3d22dcca 100644 (file)
@@ -236,6 +236,7 @@ CurlGlue *curl_glue_unref(CurlGlue *g) {
 
         sd_event_source_unref(g->timer);
         sd_event_unref(g->event);
+        free(g);
 
         return NULL;
 }
@@ -302,7 +303,7 @@ int curl_glue_make(CURL **ret, const char *url, void *userdata) {
                 goto fail;
         }
 
-        useragent = strappenda(program_invocation_short_name, "/" PACKAGE_VERSION);
+        useragent = strjoina(program_invocation_short_name, "/" PACKAGE_VERSION);
         if (curl_easy_setopt(c, CURLOPT_USERAGENT, useragent) != CURLE_OK) {
                 r = -EIO;
                 goto fail;
@@ -415,29 +416,31 @@ int curl_header_strdup(const void *contents, size_t sz, const char *field, char
 }
 
 int curl_parse_http_time(const char *t, usec_t *ret) {
+        const char *e;
+        locale_t loc;
         struct tm tm;
         time_t v;
 
         assert(t);
         assert(ret);
 
-        RUN_WITH_LOCALE(LC_TIME, "C") {
-                const char *e;
-
-                /* RFC822 */
-                e = strptime(t, "%a, %d %b %Y %H:%M:%S %Z", &tm);
-                if (!e || *e != 0)
-                        /* RFC 850 */
-                        e = strptime(t, "%A, %d-%b-%y %H:%M:%S %Z", &tm);
-                if (!e || *e != 0)
-                        /* ANSI C */
-                        e = strptime(t, "%a %b %d %H:%M:%S %Y", &tm);
-                if (!e || *e != 0)
-                        return -EINVAL;
-
-                v = timegm(&tm);
-        }
+        loc = newlocale(LC_TIME_MASK, "C", (locale_t) 0);
+        if (loc == (locale_t) 0)
+                return -errno;
+
+        /* RFC822 */
+        e = strptime_l(t, "%a, %d %b %Y %H:%M:%S %Z", &tm, loc);
+        if (!e || *e != 0)
+                /* RFC 850 */
+                e = strptime_l(t, "%A, %d-%b-%y %H:%M:%S %Z", &tm, loc);
+        if (!e || *e != 0)
+                /* ANSI C */
+                e = strptime_l(t, "%a %b %d %H:%M:%S %Y", &tm, loc);
+        freelocale(loc);
+        if (!e || *e != 0)
+                return -EINVAL;
 
+        v = timegm(&tm);
         if (v == (time_t) -1)
                 return -EINVAL;