diff options
author | Derick Rethans <github@derickrethans.nl> | 2017-09-04 22:45:34 +0100 |
---|---|---|
committer | Derick Rethans <github@derickrethans.nl> | 2017-09-04 22:45:34 +0100 |
commit | c0383b50399db7bd5996e87fed66be3fd7ded5d6 (patch) | |
tree | bf204021fc59e45c7fdfb6c35068d9a7d6fc5067 | |
parent | b2824629c20ef506093303ed6071276561d09bd0 (diff) | |
download | php-git-c0383b50399db7bd5996e87fed66be3fd7ded5d6.tar.gz |
Upgrade timelib to 2017.05beta9
-rw-r--r-- | ext/date/lib/interval.c | 6 | ||||
-rw-r--r-- | ext/date/lib/parse_date.c | 16 | ||||
-rw-r--r-- | ext/date/lib/parse_date.re | 14 | ||||
-rw-r--r-- | ext/date/lib/parse_iso_intervals.c | 18 | ||||
-rw-r--r-- | ext/date/lib/parse_iso_intervals.re | 16 | ||||
-rw-r--r-- | ext/date/lib/parse_tz.c | 6 | ||||
-rw-r--r-- | ext/date/lib/timelib.h | 33 | ||||
-rw-r--r-- | ext/date/lib/timelib_private.h | 4 | ||||
-rw-r--r-- | ext/date/lib/unixtime2tm.c | 41 | ||||
-rw-r--r-- | ext/date/php_date.c | 16 |
10 files changed, 80 insertions, 90 deletions
diff --git a/ext/date/lib/interval.c b/ext/date/lib/interval.c index e034392a0f..e9fa274563 100644 --- a/ext/date/lib/interval.c +++ b/ext/date/lib/interval.c @@ -100,12 +100,12 @@ timelib_time *timelib_add(timelib_time *old_time, timelib_rel_time *interval) timelib_time *t = timelib_time_clone(old_time); if (interval->have_weekday_relative || interval->have_special_relative) { - memcpy(&t->relative, interval, sizeof(struct timelib_rel_time)); + memcpy(&t->relative, interval, sizeof(timelib_rel_time)); } else { if (interval->invert) { bias = -1; } - memset(&t->relative, 0, sizeof(struct timelib_rel_time)); + memset(&t->relative, 0, sizeof(timelib_rel_time)); t->relative.y = interval->y * bias; t->relative.m = interval->m * bias; t->relative.d = interval->d * bias; @@ -141,7 +141,7 @@ timelib_time *timelib_sub(timelib_time *old_time, timelib_rel_time *interval) bias = -1; } - memset(&t->relative, 0, sizeof(struct timelib_rel_time)); + memset(&t->relative, 0, sizeof(timelib_rel_time)); t->relative.y = 0 - (interval->y * bias); t->relative.m = 0 - (interval->m * bias); t->relative.d = 0 - (interval->d * bias); diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index 710c6f20f3..bb6cf5f6e2 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 on Mon Aug 14 16:35:21 2017 */ +/* Generated by re2c 0.15.3 on Mon Sep 4 22:44:17 2017 */ #line 1 "ext/date/lib/parse_date.re" /* * The MIT License (MIT) @@ -127,18 +127,18 @@ typedef unsigned char uchar; #define YYDEBUG(s,c) #endif -typedef struct timelib_elems { +typedef struct _timelib_elems { unsigned int c; /* Number of elements */ char **v; /* Values */ } timelib_elems; -typedef struct Scanner { +typedef struct _Scanner { int fd; uchar *lim, *str, *ptr, *cur, *tok, *pos; unsigned int line, len; - struct timelib_error_container *errors; + timelib_error_container *errors; - struct timelib_time *time; + timelib_time *time; const timelib_tzdb *tzdb; } Scanner; @@ -24896,14 +24896,14 @@ yy1537: #define YYMAXFILL 33 -timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) +timelib_time* timelib_strtotime(char *s, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) { Scanner in; int t; char *e = s + len - 1; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; @@ -25023,7 +25023,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len, int allow_extra = 0; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index 033977252b..06b860ce1a 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -125,18 +125,18 @@ typedef unsigned char uchar; #define YYDEBUG(s,c) #endif -typedef struct timelib_elems { +typedef struct _timelib_elems { unsigned int c; /* Number of elements */ char **v; /* Values */ } timelib_elems; -typedef struct Scanner { +typedef struct _Scanner { int fd; uchar *lim, *str, *ptr, *cur, *tok, *pos; unsigned int line, len; - struct timelib_error_container *errors; + timelib_error_container *errors; - struct timelib_time *time; + timelib_time *time; const timelib_tzdb *tzdb; } Scanner; @@ -1790,14 +1790,14 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of /*!max:re2c */ -timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) +timelib_time* timelib_strtotime(char *s, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) { Scanner in; int t; char *e = s + len - 1; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; @@ -1917,7 +1917,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len, int allow_extra = 0; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c index de667bf8ca..689188270e 100644 --- a/ext/date/lib/parse_iso_intervals.c +++ b/ext/date/lib/parse_iso_intervals.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 on Mon Aug 14 13:00:14 2017 */ +/* Generated by re2c 0.15.3 on Mon Sep 4 22:44:07 2017 */ #line 1 "ext/date/lib/parse_iso_intervals.re" /* * The MIT License (MIT) @@ -72,16 +72,16 @@ typedef unsigned char uchar; #define YYDEBUG(s,c) #endif -typedef struct Scanner { +typedef struct _Scanner { int fd; uchar *lim, *str, *ptr, *cur, *tok, *pos; unsigned int line, len; - struct timelib_error_container *errors; + timelib_error_container *errors; - struct timelib_time *begin; - struct timelib_time *end; - struct timelib_rel_time *period; - int recurrences; + timelib_time *begin; + timelib_time *end; + timelib_rel_time *period; + int recurrences; int have_period; int have_recurrences; @@ -934,14 +934,14 @@ yy100: void timelib_strtointerval(char *s, size_t len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, - struct timelib_error_container **errors) + timelib_error_container **errors) { Scanner in; int t; char *e = s + len - 1; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; diff --git a/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re index 7a481c836d..95d8abf9ea 100644 --- a/ext/date/lib/parse_iso_intervals.re +++ b/ext/date/lib/parse_iso_intervals.re @@ -70,16 +70,16 @@ typedef unsigned char uchar; #define YYDEBUG(s,c) #endif -typedef struct Scanner { +typedef struct _Scanner { int fd; uchar *lim, *str, *ptr, *cur, *tok, *pos; unsigned int line, len; - struct timelib_error_container *errors; + timelib_error_container *errors; - struct timelib_time *begin; - struct timelib_time *end; - struct timelib_rel_time *period; - int recurrences; + timelib_time *begin; + timelib_time *end; + timelib_rel_time *period; + int recurrences; int have_period; int have_recurrences; @@ -329,14 +329,14 @@ isoweek = year4 "-"? "W" weekofyear; void timelib_strtointerval(char *s, size_t len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, - struct timelib_error_container **errors) + timelib_error_container **errors) { Scanner in; int t; char *e = s + len - 1; memset(&in, 0, sizeof(in)); - in.errors = timelib_malloc(sizeof(struct timelib_error_container)); + in.errors = timelib_malloc(sizeof(timelib_error_container)); in.errors->warning_count = 0; in.errors->warning_messages = NULL; in.errors->error_count = 0; diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c index f3e49cb469..3b68549c32 100644 --- a/ext/date/lib/parse_tz.c +++ b/ext/date/lib/parse_tz.c @@ -218,7 +218,7 @@ static int read_types(const unsigned char **tzf, timelib_tzinfo *tz) memcpy(buffer, *tzf, sizeof(unsigned char) * 6 * tz->bit32.typecnt); *tzf += sizeof(unsigned char) * 6 * tz->bit32.typecnt; - tz->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(struct ttinfo)); + tz->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(ttinfo)); if (!tz->type) { timelib_free(buffer); return TIMELIB_ERROR_CANNOT_ALLOCATE; @@ -558,8 +558,8 @@ timelib_tzinfo *timelib_tzinfo_clone(timelib_tzinfo *tz) memcpy(tmp->trans_idx, tz->trans_idx, tz->bit32.timecnt * sizeof(unsigned char)); } - tmp->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(struct ttinfo)); - memcpy(tmp->type, tz->type, tz->bit32.typecnt * sizeof(struct ttinfo)); + tmp->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(ttinfo)); + memcpy(tmp->type, tz->type, tz->bit32.typecnt * sizeof(ttinfo)); tmp->timezone_abbr = (char*) timelib_malloc(tz->bit32.charcnt); memcpy(tmp->timezone_abbr, tz->timezone_abbr, tz->bit32.charcnt); diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h index a3450f4f9a..fb2fd34dc8 100644 --- a/ext/date/lib/timelib.h +++ b/ext/date/lib/timelib.h @@ -131,10 +131,10 @@ typedef signed long long timelib_sll; # define TIMELIB_LL_CONST(n) n ## ll #endif -typedef struct ttinfo ttinfo; -typedef struct tlinfo tlinfo; +typedef struct _ttinfo ttinfo; +typedef struct _tlinfo tlinfo; -typedef struct tlocinfo +typedef struct _tlocinfo { char country_code[3]; double latitude; @@ -142,7 +142,7 @@ typedef struct tlocinfo char *comments; } tlocinfo; -typedef struct timelib_tzinfo +typedef struct _timelib_tzinfo { char *name; struct { @@ -173,7 +173,7 @@ typedef struct timelib_tzinfo tlocinfo location; } timelib_tzinfo; -typedef struct timelib_rel_time { +typedef struct _timelib_rel_time { timelib_sll y, m, d; /* Years, Months and Days */ timelib_sll h, i, s; /* Hours, mInutes and Seconds */ timelib_sll us; /* Microseconds */ @@ -193,7 +193,7 @@ typedef struct timelib_rel_time { unsigned int have_weekday_relative, have_special_relative; } timelib_rel_time; -typedef struct timelib_time_offset { +typedef struct _timelib_time_offset { int32_t offset; unsigned int leap_secs; unsigned int is_dst; @@ -201,7 +201,7 @@ typedef struct timelib_time_offset { timelib_sll transition_time; } timelib_time_offset; -typedef struct timelib_time { +typedef struct _timelib_time { timelib_sll y, m, d; /* Year, Month, Day */ timelib_sll h, i, s; /* Hour, mInute, Second */ timelib_sll us; /* Microseconds */ @@ -223,7 +223,7 @@ typedef struct timelib_time { * 2 TimeZone abbreviation */ } timelib_time; -typedef struct timelib_abbr_info { +typedef struct _timelib_abbr_info { timelib_sll utc_offset; char *abbr; int dst; @@ -269,18 +269,18 @@ typedef struct timelib_abbr_info { #define TIMELIB_ZONETYPE_ABBR 2 #define TIMELIB_ZONETYPE_ID 3 -typedef struct timelib_error_message { +typedef struct _timelib_error_message { int error_code; int position; char character; char *message; } timelib_error_message; -typedef struct timelib_error_container { - struct timelib_error_message *error_messages; - struct timelib_error_message *warning_messages; - int error_count; - int warning_count; +typedef struct _timelib_error_container { + timelib_error_message *error_messages; + timelib_error_message *warning_messages; + int error_count; + int warning_count; } timelib_error_container; typedef struct _timelib_tz_lookup_table { @@ -311,7 +311,8 @@ typedef struct _timelib_tzdb { #endif #define TIMELIB_VERSION 201705 -#define TIMELIB_ASCII_VERSION "2017.05beta7" +#define TIMELIB_EXTENDED_VERSION 20170509 +#define TIMELIB_ASCII_VERSION "2017.05beta9" #define TIMELIB_NONE 0x00 #define TIMELIB_OVERRIDE_TIME 0x01 @@ -488,7 +489,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n void timelib_strtointerval(char *s, size_t len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, - struct timelib_error_container **errors); + timelib_error_container **errors); /* From tm2unixtime.c */ diff --git a/ext/date/lib/timelib_private.h b/ext/date/lib/timelib_private.h index efc7c8029c..c6156ad857 100644 --- a/ext/date/lib/timelib_private.h +++ b/ext/date/lib/timelib_private.h @@ -115,7 +115,7 @@ m = NULL; \ } -struct ttinfo +struct _ttinfo { int32_t offset; int isdst; @@ -125,7 +125,7 @@ struct ttinfo unsigned int isgmtcnt; }; -struct tlinfo +struct _tlinfo { int32_t trans; int32_t offset; diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c index 43bfe818f5..a88b3a6f17 100644 --- a/ext/date/lib/unixtime2tm.c +++ b/ext/date/lib/unixtime2tm.c @@ -48,12 +48,17 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts) if (ts >= 0) { tmp_days = days + 1; + } else { + tmp_days = days; + } - if (tmp_days > DAYS_PER_LYEAR_PERIOD || tmp_days <= -DAYS_PER_LYEAR_PERIOD) { - cur_year += YEARS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); - tmp_days -= DAYS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); - } + if (tmp_days > DAYS_PER_LYEAR_PERIOD || tmp_days <= -DAYS_PER_LYEAR_PERIOD) { + cur_year += YEARS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); + tmp_days -= DAYS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); + } + TIMELIB_DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); + if (ts >= 0) { while (tmp_days >= DAYS_PER_LYEAR) { cur_year++; if (timelib_is_leap(cur_year)) { @@ -61,33 +66,17 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts) } else { tmp_days -= DAYS_PER_YEAR; } + TIMELIB_DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); } } else { - tmp_days = days; - - /* Guess why this might be for, it has to do with a pope ;-). It's also - * only valid for Great Brittain and it's colonies. It needs fixing for - * other locales. *sigh*, why is this crap so complex! */ - /* - if (ts <= TIMELIB_LL_CONST(-6857352000)) { - tmp_days -= 11; - } - */ - while (tmp_days <= 0) { - if (tmp_days < -1460970) { - cur_year -= 4000; - TIMELIB_DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); - tmp_days += 1460970; + cur_year--; + if (timelib_is_leap(cur_year)) { + tmp_days += DAYS_PER_LYEAR; } else { - cur_year--; - TIMELIB_DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); - if (timelib_is_leap(cur_year)) { - tmp_days += DAYS_PER_LYEAR; - } else { - tmp_days += DAYS_PER_YEAR; - } + tmp_days += DAYS_PER_YEAR; } + TIMELIB_DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); } remainder += SECS_PER_DAY; } diff --git a/ext/date/php_date.c b/ext/date/php_date.c index dd90ba3ad5..86ac49f760 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -1481,7 +1481,7 @@ PHP_FUNCTION(strtotime) { zend_string *times; int error1, error2; - struct timelib_error_container *error; + timelib_error_container *error; zend_long preset_ts = 0, ts; timelib_time *t, *now; timelib_tzinfo *tzi; @@ -3017,7 +3017,7 @@ PHP_FUNCTION(date_get_last_errors) } /* }}} */ -void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time *parsed_time, struct timelib_error_container *error) /* {{{ */ +void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time *parsed_time, timelib_error_container *error) /* {{{ */ { zval element; @@ -3097,7 +3097,7 @@ void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time * PHP_FUNCTION(date_parse) { zend_string *date; - struct timelib_error_container *error; + timelib_error_container *error; timelib_time *parsed_time; ZEND_PARSE_PARAMETERS_START(1, 1) @@ -3115,7 +3115,7 @@ PHP_FUNCTION(date_parse) PHP_FUNCTION(date_parse_from_format) { zend_string *date, *format; - struct timelib_error_container *error; + timelib_error_container *error; timelib_time *parsed_time; ZEND_PARSE_PARAMETERS_START(2, 2) @@ -3172,7 +3172,7 @@ static int php_date_modify(zval *object, char *modify, size_t modify_len) /* {{{ return 0; } - memcpy(&dateobj->time->relative, &tmp_time->relative, sizeof(struct timelib_rel_time)); + memcpy(&dateobj->time->relative, &tmp_time->relative, sizeof(timelib_rel_time)); dateobj->time->have_relative = tmp_time->have_relative; dateobj->time->sse_uptodate = 0; @@ -4096,7 +4096,7 @@ static int date_interval_initialize(timelib_rel_time **rt, /*const*/ char *forma timelib_rel_time *p = NULL; int r = 0; int retval = 0; - struct timelib_error_container *errors; + timelib_error_container *errors; timelib_strtointerval(format, format_length, &b, &e, &p, &r, &errors); @@ -4497,7 +4497,7 @@ static int date_period_initialize(timelib_time **st, timelib_time **et, timelib_ timelib_rel_time *p = NULL; int r = 0; int retval = 0; - struct timelib_error_container *errors; + timelib_error_container *errors; timelib_strtointerval(format, format_length, &b, &e, &p, &r, &errors); @@ -4723,7 +4723,7 @@ PHP_FUNCTION(timezone_identifiers_list) } tzdb = DATE_TIMEZONEDB; - table = timelib_timezone_identifiers_list(tzdb, &item_count); + table = timelib_timezone_identifiers_list((timelib_tzdb*) tzdb, &item_count); array_init(return_value); |