// Writes PROPFIND properties for a collection element static void print_props(struct mg_connection *conn, const char* uri, struct file *filep) { char mtime[64]; gmt_time_string(mtime, sizeof(mtime), &filep->modification_time); conn->num_bytes_sent += mg_printf(conn, "<d:response>" "<d:href>%s</d:href>" "<d:propstat>" "<d:prop>" "<d:resourcetype>%s</d:resourcetype>" "<d:getcontentlength>%" INT64_FMT "</d:getcontentlength>" "<d:getlastmodified>%s</d:getlastmodified>" "</d:prop>" "<d:status>HTTP/1.1 200 OK</d:status>" "</d:propstat>" "</d:response>\n", uri, filep->is_directory ? "<d:collection/>" : "", filep->size, mtime); }
END_TEST START_TEST(test_parse_date_string) { #if !defined(NO_CACHING) time_t now = time(0); struct tm *tm = gmtime(&now); char date[64] = {0}; unsigned long i; ck_assert_uint_eq((unsigned long)parse_date_string("1/Jan/1970 00:01:02"), 62ul); ck_assert_uint_eq((unsigned long)parse_date_string("1 Jan 1970 00:02:03"), 123ul); ck_assert_uint_eq((unsigned long)parse_date_string("1-Jan-1970 00:03:04"), 184ul); ck_assert_uint_eq((unsigned long)parse_date_string( "Xyz, 1 Jan 1970 00:04:05"), 245ul); gmt_time_string(date, sizeof(date), &now); ck_assert_uint_eq((uintmax_t)parse_date_string(date), (uintmax_t)now); sprintf(date, "%02u %s %04u %02u:%02u:%02u", tm->tm_mday, month_names[tm->tm_mon], tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); ck_assert_uint_eq((uintmax_t)parse_date_string(date), (uintmax_t)now); gmt_time_string(date, 1, NULL); ck_assert_str_eq(date, ""); gmt_time_string(date, 6, NULL); ck_assert_str_eq(date, "Thu, "); /* part of "Thu, 01 Jan 1970 00:00:00 GMT" */ gmt_time_string(date, sizeof(date), NULL); ck_assert_str_eq(date, "Thu, 01 Jan 1970 00:00:00 GMT"); for (i = 2ul; i < 0x8000000ul; i += i / 2) { now = (time_t)i; gmt_time_string(date, sizeof(date), &now); ck_assert_uint_eq((uintmax_t)parse_date_string(date), (uintmax_t)now); tm = gmtime(&now); sprintf(date, "%02u-%s-%04u %02u:%02u:%02u", tm->tm_mday, month_names[tm->tm_mon], tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); ck_assert_uint_eq((uintmax_t)parse_date_string(date), (uintmax_t)now); } #endif }