Преглед на файлове

Test alternate code for parse_date_string (see #250)

bel преди 9 години
родител
ревизия
ae2d676156
променени са 1 файла, в които са добавени 13 реда и са изтрити 4 реда
  1. 13 4
      src/civetweb.c

+ 13 - 4
src/civetweb.c

@@ -4750,15 +4750,24 @@ parse_date_string(const char *datetime)
 			alt_result = mktime(&tm);
 			if (alt_result > 0) {
 				struct tm *lt = gmtime(&alt_result);
+				signed int delta_mon =
+				    (lt->tm_mon - tm.tm_mon) + 12 * (lt->tm_year - tm.tm_year);
 				time_t delta;
-				if (lt->tm_mday == tm.tm_mday) {
+
+				if (delta_mon != 0) {
+					/* No need to consider different length of months */
 					delta = (lt->tm_sec - tm.tm_sec)
 					        + 60 * (lt->tm_min - tm.tm_min)
-					        + 60 * 60 * (lt->tm_hour - tm.tm_hour);
+					        + 60 * 60 * (lt->tm_hour - tm.tm_hour)
+					        + 24 * 60 * 60 * (lt->tm_mday - tm.tm_mday);
 				} else {
-					/* TODO */
-					delta = 0;
+					/* Get clock time and add or subtract a day */
+					delta = (lt->tm_sec - tm.tm_sec)
+					        + 60 * (lt->tm_min - tm.tm_min)
+					        + 60 * 60 * (lt->tm_hour - tm.tm_hour)
+					        + (delta_mon * 24 * 60 * 60);
 				}
+
 				alt_result -= delta;
 			}