diff options
author | Vincent Sanders <vince@kyllikki.org> | 2014-05-15 01:18:52 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2014-05-15 01:18:52 +0100 |
commit | ef00272e2ffb8ffcf03e740f74691fecb682060d (patch) | |
tree | d1ba29cf118a7f4c905762813d3985131fbacd34 /content/llcache.c | |
parent | a4be7f7d1abe5b75d3dacfbf00adf3bd937bc4c1 (diff) | |
download | netsurf-ef00272e2ffb8ffcf03e740f74691fecb682060d.tar.gz netsurf-ef00272e2ffb8ffcf03e740f74691fecb682060d.tar.bz2 |
add helpers for time_t reading/writing
Diffstat (limited to 'content/llcache.c')
-rw-r--r-- | content/llcache.c | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/content/llcache.c b/content/llcache.c index 5137b2240..8c1cc3df6 100644 --- a/content/llcache.c +++ b/content/llcache.c @@ -35,7 +35,6 @@ #include <stdlib.h> #include <string.h> -#include <time.h> #include <curl/curl.h> #include "utils/config.h" @@ -45,6 +44,7 @@ #include "utils/messages.h" #include "utils/nsurl.h" #include "utils/utils.h" +#include "utils/time.h" #include "desktop/gui_factory.h" #include "content/fetch.h" @@ -1105,7 +1105,6 @@ llcache_serialise_metadata(llcache_object *object, char *op; unsigned int hloop; int use; - struct tm *ltm; allocsize = 10 + 1; /* object length */ @@ -1133,22 +1132,30 @@ llcache_serialise_metadata(llcache_object *object, datasize = allocsize; /* the url, used for checking for collisions */ - use = snprintf(op, datasize, "%s%c", nsurl_access(object->url), 0); - if (use > datasize) + use = snprintf(op, datasize, "%s", nsurl_access(object->url)); + if (use < 0) { + goto operror; + } + use++; /* does not count the null */ + if (use > datasize) { goto overflow; + } op += use; datasize -= use; /* object size */ - use = snprintf(op, datasize, "%zu%c", object->source_len, 0); + use = snprintf(op, datasize, "%zu", object->source_len); + if (use < 0) { + goto operror; + } + use++; /* does not count the null */ if (use > datasize) goto overflow; op += use; datasize -= use; /* Time of request */ - ltm = localtime(&object->cache.req_time); - use = strftime(op, datasize, "%s", ltm); + use = nsc_sntimet(op, datasize, &object->cache.req_time); if (use == 0) goto overflow; use++; /* does not count the null */ @@ -1156,8 +1163,7 @@ llcache_serialise_metadata(llcache_object *object, datasize -= use; /* Time of response */ - ltm = localtime(&object->cache.res_time); - use = strftime(op, datasize, "%s", ltm); + use = nsc_sntimet(op, datasize, &object->cache.res_time); if (use == 0) goto overflow; use++; /* does not count the null */ @@ -1165,8 +1171,7 @@ llcache_serialise_metadata(llcache_object *object, datasize -= use; /* Time of completion */ - ltm = localtime(&object->cache.fin_time); - use = strftime(op, datasize, "%s", ltm); + use = nsc_sntimet(op, datasize, &object->cache.fin_time); if (use == 0) goto overflow; use++; /* does not count the null */ @@ -1174,7 +1179,11 @@ llcache_serialise_metadata(llcache_object *object, datasize -= use; /* number of headers */ - use = snprintf(op, datasize, "%zu%c", object->num_headers, 0); + use = snprintf(op, datasize, "%zu", object->num_headers); + if (use < 0) { + goto operror; + } + use++; /* does not count the null */ if (use > datasize) goto overflow; op += use; @@ -1183,10 +1192,13 @@ llcache_serialise_metadata(llcache_object *object, /* headers */ for (hloop = 0 ; hloop < object->num_headers ; hloop++) { use = snprintf(op, datasize, - "%s:%s%c", + "%s:%s", object->headers[hloop].name, - object->headers[hloop].value, - 0); + object->headers[hloop].value); + if (use < 0) { + goto operror; + } + use++; /* does not count the null */ if (use > datasize) goto overflow; op += use; @@ -1205,6 +1217,12 @@ overflow: LOG(("Overflowed metadata buffer")); free(data); return NSERROR_INVALID; + +operror: + /* output error */ + LOG(("Output error")); + free(data); + return NSERROR_INVALID; } /** @@ -1223,7 +1241,6 @@ llcache_process_metadata(llcache_object *object) int lnsize; size_t num_headers; size_t hloop; - struct tm ltm; enum backing_store_flags flags = BACKING_STORE_META; LOG(("Retriving metadata")); @@ -1290,31 +1307,24 @@ llcache_process_metadata(llcache_object *object) ln += lnsize + 1; lnsize = strlen(ln); - if ((lnsize < 1) || - (strptime(ln, "%s", <m) == NULL)) + if (nsc_snptimet(ln, lnsize, &object->cache.req_time) != NSERROR_OK) goto format_error; - object->cache.req_time = mktime(<m); /* metadata line 4 is the time of response */ line = 4; ln += lnsize + 1; lnsize = strlen(ln); - if ((lnsize < 1) || - (strptime(ln, "%s", <m) == NULL)) + if (nsc_snptimet(ln, lnsize, &object->cache.res_time) != NSERROR_OK) goto format_error; - object->cache.res_time = mktime(<m); /* metadata line 5 is the time of request completion */ line = 5; ln += lnsize + 1; lnsize = strlen(ln); - if ((lnsize < 1) || - (strptime(ln, "%s", <m) == NULL)) + if (nsc_snptimet(ln, lnsize, &object->cache.fin_time) != NSERROR_OK) goto format_error; - object->cache.fin_time = mktime(<m); - /* metadata line 6 is the number of headers */ line = 6; |