88 {
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"};
90 {
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
91 "Friday",
"Saturday",
"Sunday" };
93 {
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
94 "Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec" };
114 #define PARSEDATE_OK 0 115 #define PARSEDATE_FAIL -1 116 #define PARSEDATE_LATER 1 117 #define PARSEDATE_SOONER 2 207 const char *
const *what;
213 for(i = 0; i<7; i++) {
226 const char *
const *what;
230 for(i = 0; i<12; i++) {
246 const struct tzinfo *what;
250 for(i = 0; i<
sizeof(
tz)/
sizeof(tz[0]); i++) {
257 return found?what->
offset*60:-1;
260 static void skip(
const char **date)
263 while(**date && !
ISALNUM(**date))
291 static const int month_days_cumulative [12] =
292 { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
293 int month, year, leap_days;
303 year += (11 - month) / 12;
304 month = 11 - (11 - month) % 12;
306 else if(month >= 12) {
311 leap_days = year - (tm->
tm_mon <= 1);
312 leap_days = ((leap_days / 4) - (leap_days / 100) + (leap_days / 400)
313 - (1969 / 4) + (1969 / 100) - (1969 / 400));
315 return ((((time_t) (year - 1970) * 365
316 + leap_days + month_days_cumulative [month] + tm->
tm_mday - 1) * 24
344 const char *indate = date;
347 while(*date && (part < 6)) {
356 if(sscanf(date,
"%31[ABCDEFGHIJKLMNOPQRSTUVWXYZ" 357 "abcdefghijklmnopqrstuvwxyz]", buf))
367 if(!found && (monnum == -1)) {
373 if(!found && (tzoff == -1)) {
391 (3 == sscanf(date,
"%02d:%02d:%02d%n",
392 &hournum, &minnum, &secnum, &len))) {
396 else if((secnum == -1) &&
397 (2 == sscanf(date,
"%02d:%02d%n", &hournum, &minnum, &len))) {
409 lval = strtol(date, &end, 10);
411 if(errno != old_errno)
417 #if LONG_MAX != INT_MAX 418 if((lval > (
long)INT_MAX) || (lval < (
long)INT_MIN))
425 ((end - date) == 4) &&
428 ((date[-1] ==
'+' || date[-1] ==
'-'))) {
438 tzoff = (val/100 * 60 + val%100)*60;
442 tzoff = date[-1]==
'+'?-tzoff:tzoff;
445 if(((end - date) == 8) &&
452 monnum = (val%10000)/100-1;
456 if(!found && (dignext ==
DATE_MDAY) && (mdaynum == -1)) {
457 if((val > 0) && (val<32)) {
464 if(!found && (dignext ==
DATE_YEAR) && (yearnum == -1)) {
488 secnum = minnum = hournum = 0;
490 if((-1 == mdaynum) ||
496 #if SIZEOF_TIME_T < 5 499 *output = 0x7fffffff;
509 if((mdaynum > 31) || (monnum > 11) ||
510 (hournum > 23) || (minnum > 59) || (secnum > 60))
533 long delta = (long)(tzoff!=-1?tzoff:0);
535 if((delta>0) && (t > LONG_MAX - delta)) {
536 *output = 0x7fffffff;
575 tm = (
struct tm *)gmtime_r(&intime, store);
577 tm = gmtime(&intime);
const char *const Curl_wkday[]
time_t curl_getdate(const char *p, const time_t *now)
int curlx_sltosi(long slnum)
const char *const Curl_month[]
static int checkday(const char *check, size_t len)
static const struct tzinfo tz[]
#define strcasecompare(a, b)
geometry_msgs::TransformStamped t
UNITTEST_START char * output
static time_t my_timegm(struct my_tm *tm)
static int checktz(const char *check)
CURLcode Curl_gmtime(time_t intime, struct tm *store)
static int parsedate(const char *date, time_t *output)
static void skip(const char **date)
static int checkmonth(const char *check)
static const char *const weekday[]