From b8aeba06a224a9cd1949beb7e737ba4b51d78f06 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <sergey.lyubka@cesanta.com> Date: Sat, 31 Oct 2015 13:44:54 +0000 Subject: [PATCH] Add unit test for mg_parse_date_string PUBLISHED_FROM=aec7d5e6c6598fbc5141c40c9638cc96d288c8dc --- mongoose.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mongoose.c b/mongoose.c index df37be2f6..c71ea92d0 100644 --- a/mongoose.c +++ b/mongoose.c @@ -101,6 +101,10 @@ MG_INTERNAL size_t mg_handle_chunked(struct mg_connection *nc, struct http_message *hm, char *buf, size_t blen); +#ifndef MG_DISABLE_FILESYSTEM +MG_INTERNAL time_t mg_parse_date_string(const char *datetime); +#endif + /* Forward declarations for testing. */ extern void *(*test_malloc)(size_t); extern void *(*test_calloc)(size_t, size_t); @@ -5914,7 +5918,7 @@ static void handle_cgi(struct mg_connection *nc, const char *prog, } #endif -static int get_month_index(const char *s) { +static int mg_get_month_index(const char *s) { static const char *month_names[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; size_t i; @@ -5925,12 +5929,12 @@ static int get_month_index(const char *s) { return -1; } -static int num_leap_years(int year) { +static int mg_num_leap_years(int year) { return year / 4 - year / 100 + year / 400; } /* Parse UTC date-time string, and return the corresponding time_t value. */ -static time_t parse_date_string(const char *datetime) { +MG_INTERNAL time_t mg_parse_date_string(const char *datetime) { static const unsigned short days_before_month[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; char month_str[32]; @@ -5945,8 +5949,8 @@ static time_t parse_date_string(const char *datetime) { &hour, &minute, &second) == 6) || (sscanf(datetime, "%d-%3s-%d %d:%d:%d", &day, month_str, &year, &hour, &minute, &second) == 6)) && - year > 1970 && (month = get_month_index(month_str)) != -1) { - leap_days = num_leap_years(year) - num_leap_years(1970); + year > 1970 && (month = mg_get_month_index(month_str)) != -1) { + leap_days = mg_num_leap_years(year) - mg_num_leap_years(1970); year -= 1970; days = year * 365 + days_before_month[month] + (day - 1) + leap_days; result = days * 24 * 3600 + hour * 3600 + minute * 60 + second; @@ -5961,7 +5965,7 @@ static int mg_is_not_modified(struct http_message *hm, cs_stat_t *st) { struct mg_str *inm = mg_get_http_header(hm, "If-None-Match"); construct_etag(etag, sizeof(etag), st); return (inm != NULL && !mg_vcasecmp(inm, etag)) || - (ims != NULL && st->st_mtime <= parse_date_string(ims->p)); + (ims != NULL && st->st_mtime <= mg_parse_date_string(ims->p)); } static void mg_send_digest_auth_request(struct mg_connection *c, -- GitLab