chiark / gitweb /
import: add a new "pull-gpt" verb for downloading GPT disk images from the internet
[elogind.git] / src / import / curl-util.c
index eaaebaef42fc98166389f711cbb273d3bd73cb20..78a58a8a6df6bad89311ae37a34c104d9e9242df 100644 (file)
@@ -413,3 +413,34 @@ int curl_header_strdup(const void *contents, size_t sz, const char *field, char
         *value = s;
         return 1;
 }
+
+int curl_parse_http_time(const char *t, time_t *ret) {
+        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);
+        }
+
+        if (v == (time_t) -1)
+                return -EINVAL;
+
+        *ret = v;
+        return 0;
+}