summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/llcache.c2
-rw-r--r--utils/config.h8
-rw-r--r--utils/utils.c27
3 files changed, 37 insertions, 0 deletions
diff --git a/content/llcache.c b/content/llcache.c
index 653352d3f..5137b2240 100644
--- a/content/llcache.c
+++ b/content/llcache.c
@@ -38,6 +38,8 @@
#include <time.h>
#include <curl/curl.h>
+#include "utils/config.h"
+
#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/messages.h"
diff --git a/utils/config.h b/utils/config.h
index 543bafa1b..12b4b7fc0 100644
--- a/utils/config.h
+++ b/utils/config.h
@@ -38,6 +38,14 @@ char *strndup(const char *s, size_t n);
char *strcasestr(const char *haystack, const char *needle);
#endif
+#if (defined(riscos) || defined(_WIN32))
+#undef HAVE_STRPTIME
+#define strptime nsc_time_strptime
+char *nsc_time_strptime(const char *s, const char *format, struct tm *tm);
+#else
+#define HAVE_STRPTIME
+#endif
+
/* For some reason, UnixLib defines this unconditionally.
* Assume we're using UnixLib if building for RISC OS. */
#if ((defined(_GNU_SOURCE) && !defined(__APPLE__)) || defined(riscos))
diff --git a/utils/utils.c b/utils/utils.c
index c036ff2f7..9bccf2b90 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -561,3 +561,30 @@ int inet_pton(int af, const char *src, void *dst)
#endif
+
+#ifndef HAVE_STRPTIME
+
+/**
+ * naff strptime implementation for risc os and windows.
+ *
+ * @warning only supports %s format
+ */
+char *nsc_time_strptime(const char *s, const char *format, struct tm *tm)
+{
+ time_t esecs;
+ struct tm *gtm;
+ char *endptr;
+
+ if ((format[0] != '%') || (format[1] != 's')) {
+ return NULL
+ }
+
+ esecs = (time_t)strtoll(a, &endptr, 10);
+
+ gtm = gmtime(esecs);
+ *tm = *gtm;
+
+ return endptr;
+}
+
+#endif