• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/apr-util/misc/

Lines Matching refs:date

18  * apr_date.c: date parsing utility routines
23 * tested with over 50,000 randomly chosen valid date strings
24 * and several hundred variations of invalid date strings.
99 * Parses an HTTP date in one of three standard forms:
106 * or APR_DATE_BAD if this would be out of range or if the date is invalid.
110 * HTTP-date = rfc1123-date | rfc850-date | asctime-date
112 * rfc1123-date = wkday "," SP date1 SP time SP "GMT"
113 * rfc850-date = weekday "," SP date2 SP time SP "GMT"
114 * asctime-date = wkday SP date3 SP time SP 4DIGIT
145 APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date)
160 if (!date)
163 while (*date && apr_isspace(*date)) /* Find first non-whitespace char */
164 ++date;
166 if (*date == '\0')
169 if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */
172 ++date; /* Now pointing to first char after space, which should be */
174 /* start of the actual date information for all 4 formats. */
176 if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) {
178 ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100;
182 ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0');
184 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
186 monstr = date + 3;
187 timstr = date + 12;
189 else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) {
191 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
195 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
197 monstr = date + 3;
198 timstr = date + 10;
200 else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) {
202 ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100;
206 ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0');
208 if (date[4] == ' ')
211 ds.tm_mday = (date[4] - '0') * 10;
213 ds.tm_mday += (date[5] - '0');
215 monstr = date;
216 timstr = date + 7;
218 else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) {
220 ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100;
224 ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0');
226 ds.tm_mday = (date[0] - '0');
228 monstr = date + 2;
229 timstr = date + 11;
284 * Parses a string resembling an RFC 822 date. This is meant to be
319 APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date)
334 if (!date)
338 if (!apr_isdigit(date[0]))
340 while (*date && apr_isspace(*date)) /* Find first non-whitespace char */
341 ++date;
343 if (*date == '\0')
346 if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */
349 ++date; /* Now pointing to first char after space, which should be */ }
351 /* start of the actual date information for all 11 formats. */
352 if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) { /* RFC 1123 format */
353 ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100;
358 ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0');
360 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
362 monstr = date + 3;
363 timstr = date + 12;
364 gmtstr = date + 21;
368 else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) {/* RFC 850 format */
369 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
374 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
376 monstr = date + 3;
377 timstr = date + 10;
378 gmtstr = date + 19;
382 else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) {
384 ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100;
388 ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0');
390 if (date[4] == ' ')
393 ds.tm_mday = (date[4] - '0') * 10;
395 ds.tm_mday += (date[5] - '0');
397 monstr = date;
398 timstr = date + 7;
403 else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) {
405 ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100;
410 ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0');
411 ds.tm_mday = (date[0] - '0');
413 monstr = date + 2;
414 timstr = date + 11;
415 gmtstr = date + 20;
419 else if (apr_date_checkmask(date, "## @$$ ## ##:##:## *")) {
420 /* This is the old RFC 1123 date format - many many years ago, people
424 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
429 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
431 monstr = date + 3;
432 timstr = date + 10;
433 gmtstr = date + 19;
437 else if (apr_date_checkmask(date, " # @$$ ## ##:##:## *")) {
438 /* This is the old RFC 1123 date format - many many years ago, people
442 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
447 ds.tm_mday = (date[1] - '0');
449 monstr = date + 3;
450 timstr = date + 10;
451 gmtstr = date + 19;
455 else if (apr_date_checkmask(date, "# @$$ ## ##:##:## *")) {
456 /* This is the old RFC 1123 date format - many many years ago, people
460 ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0');
465 ds.tm_mday = (date[0] - '0');
467 monstr = date + 2;
468 timstr = date + 9;
469 gmtstr = date + 18;
473 else if (apr_date_checkmask(date, "## @$$ ## ##:## *")) {
475 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
480 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
482 monstr = date + 3;
483 timstr = date + 10;
488 else if (apr_date_checkmask(date, "# @$$ ## ##:## *")) {
490 ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0');
495 ds.tm_mday = (date[0] - '0');
497 monstr = date + 2;
498 timstr = date + 9;
503 else if (apr_date_checkmask(date, "## @$$ ## #:##:## *")) {
505 ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0');
510 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
512 monstr = date + 3;
513 timstr = date + 9;
514 gmtstr = date + 18;
518 else if (apr_date_checkmask(date, "# @$$ ## #:##:## *")) {
520 ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0');
525 ds.tm_mday = (date[0] - '0');
527 monstr = date + 2;
528 timstr = date + 8;
529 gmtstr = date + 17;
533 else if (apr_date_checkmask(date, " # @$$ #### ##:##:## *")) {
535 ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100;
540 ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0');
542 ds.tm_mday = (date[1] - '0');
544 monstr = date + 3;
545 timstr = date + 12;
546 gmtstr = date + 21;
550 else if (apr_date_checkmask(date, "##-@$$-#### ##:##:## *")) {
551 /* RFC 1123 with dashes instead of spaces between date/month/year
554 ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100;
558 ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0');
560 ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0');
562 monstr = date + 3;
563 timstr = date + 12;
564 gmtstr = date + 21;