[packages] php5: upgrade to 5.4.5
- php.ini: remove obsolete options - drop patch 'patches/900-prevent_buildconf_force.patch' as php now supports newer autoconf versions 'buildconf --force' can be called after patching the source tree to update build system - cross compiling issue regarding libdl still present, so because of the last point the corresponding patch has to be against configure.in but configure - update timezone patches git-svn-id: svn://svn.openwrt.org/openwrt/packages@32872 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
77ce79457e
commit
42801043b2
@ -8,12 +8,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=php
|
PKG_NAME:=php
|
||||||
PKG_VERSION:=5.3.10
|
PKG_VERSION:=5.4.5
|
||||||
PKG_RELEASE:=5
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=http://www.php.net/distributions/
|
PKG_SOURCE_URL:=http://www.php.net/distributions/
|
||||||
PKG_MD5SUM:=816259e5ca7d0a7e943e56a3bb32b17f
|
PKG_MD5SUM:=ffcc7f4dcf2b79d667fe0c110e6cb724
|
||||||
|
|
||||||
PKG_FIXUP:=libtool no-autoreconf
|
PKG_FIXUP:=libtool no-autoreconf
|
||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
@ -40,7 +40,7 @@ PHP5_MODULES = \
|
|||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
CONFIG_PACKAGE_php5-cgi CONFIG_PACKAGE_php5-cli \
|
CONFIG_PACKAGE_php5-cgi CONFIG_PACKAGE_php5-cli \
|
||||||
$(patsubst %,CONFIG_PACKAGE_php5-mod-%,$(PHP5_MODULES)) \
|
$(patsubst %,CONFIG_PACKAGE_php5-mod-%,$(PHP5_MODULES)) \
|
||||||
CONFIG_PHP5_FILTER CONFIG_PHP5_LIBXML CONFIG_PHP5_SYSTEMTZDATA
|
CONFIG_PHP5_FILTER CONFIG_PHP5_LIBXML PHP5_SYSTEMTZDATA
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
include $(INCLUDE_DIR)/nls.mk
|
include $(INCLUDE_DIR)/nls.mk
|
||||||
@ -133,7 +133,6 @@ CONFIGURE_ARGS+= \
|
|||||||
\
|
\
|
||||||
--with-config-file-path=/etc \
|
--with-config-file-path=/etc \
|
||||||
--with-config-file-scan-dir=/etc/php5 \
|
--with-config-file-scan-dir=/etc/php5 \
|
||||||
--enable-magic-quotes \
|
|
||||||
--disable-short-tags \
|
--disable-short-tags \
|
||||||
\
|
\
|
||||||
--with-zlib="$(STAGING_DIR)/usr" \
|
--with-zlib="$(STAGING_DIR)/usr" \
|
||||||
@ -488,6 +487,11 @@ define Package/php5-fastcgi/install
|
|||||||
$(INSTALL_BIN) ./files/php5-fastcgi.init $(1)/etc/init.d/php5-fastcgi
|
$(INSTALL_BIN) ./files/php5-fastcgi.init $(1)/etc/init.d/php5-fastcgi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
$(call Build/Prepare/Default)
|
||||||
|
( cd $(PKG_BUILD_DIR); touch configure.in; ./buildconf --force )
|
||||||
|
endef
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
make -C $(PKG_BUILD_DIR) install INSTALL_ROOT=$(PKG_BUILD_DIR)/staging
|
make -C $(PKG_BUILD_DIR) install INSTALL_ROOT=$(PKG_BUILD_DIR)/staging
|
||||||
rm -f $(PKG_BUILD_DIR)/staging/usr/bin/php
|
rm -f $(PKG_BUILD_DIR)/staging/usr/bin/php
|
||||||
|
@ -16,14 +16,7 @@ zlib.output_compression = Off
|
|||||||
implicit_flush = Off
|
implicit_flush = Off
|
||||||
unserialize_callback_func =
|
unserialize_callback_func =
|
||||||
serialize_precision = 100
|
serialize_precision = 100
|
||||||
allow_call_time_pass_reference = On
|
|
||||||
|
|
||||||
safe_mode = Off
|
|
||||||
safe_mode_gid = Off
|
|
||||||
safe_mode_include_dir =
|
|
||||||
safe_mode_exec_dir =
|
|
||||||
safe_mode_allowed_env_vars = PHP_
|
|
||||||
safe_mode_protected_env_vars = LD_LIBRARY_PATH
|
|
||||||
;open_basedir =
|
;open_basedir =
|
||||||
disable_functions =
|
disable_functions =
|
||||||
disable_classes =
|
disable_classes =
|
||||||
|
@ -3,9 +3,8 @@ Add support for use of the system timezone database, rather
|
|||||||
than embedding a copy. Discussed upstream but was not desired.
|
than embedding a copy. Discussed upstream but was not desired.
|
||||||
|
|
||||||
History:
|
History:
|
||||||
r7: per Sean Finney's review: simpler lat/long rounding,
|
r8: fix compile error without --with-system-tzdata configured
|
||||||
use stat() not access() to check existence of timezone,
|
r7: improve check for valid timezone id to exclude directories
|
||||||
improve comments throughout.
|
|
||||||
r6: fix fd leak in r5, fix country code/BC flag use in
|
r6: fix fd leak in r5, fix country code/BC flag use in
|
||||||
timezone_identifiers_list() using system db,
|
timezone_identifiers_list() using system db,
|
||||||
fix use of PECL timezonedb to override system db,
|
fix use of PECL timezonedb to override system db,
|
||||||
@ -49,19 +48,25 @@ r1: initial revision
|
|||||||
|
|
||||||
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
||||||
# if defined(__LITTLE_ENDIAN__)
|
# if defined(__LITTLE_ENDIAN__)
|
||||||
@@ -51,6 +66,11 @@
|
@@ -51,9 +66,14 @@
|
||||||
|
|
||||||
static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
||||||
{
|
{
|
||||||
|
- /* skip ID */
|
||||||
|
- *tzf += 4;
|
||||||
|
-
|
||||||
+ if (memcmp(tzf, "TZif", 4) == 0) {
|
+ if (memcmp(tzf, "TZif", 4) == 0) {
|
||||||
+ *tzf += 20;
|
+ *tzf += 20;
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
/* skip ID */
|
+ /* skip ID */
|
||||||
*tzf += 4;
|
+ *tzf += 4;
|
||||||
|
+
|
||||||
@@ -256,7 +276,435 @@ void timelib_dump_tzinfo(timelib_tzinfo
|
/* read BC flag */
|
||||||
|
tz->bc = (**tzf == '\1');
|
||||||
|
*tzf += 1;
|
||||||
|
@@ -256,7 +276,397 @@ void timelib_dump_tzinfo(timelib_tzinfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,26 +79,25 @@ r1: initial revision
|
|||||||
+#define ZONEINFO_PREFIX "/usr/share/zoneinfo"
|
+#define ZONEINFO_PREFIX "/usr/share/zoneinfo"
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
|
+/* System timezone database pointer. */
|
||||||
|
+static const timelib_tzdb *timezonedb_system = NULL;
|
||||||
|
+
|
||||||
+/* Hash table entry for the cache of the zone.tab mapping table. */
|
+/* Hash table entry for the cache of the zone.tab mapping table. */
|
||||||
+struct location_info {
|
+struct location_info {
|
||||||
+ char code[2]; /* Country code. */
|
+ char code[2];
|
||||||
+ double latitude, longitude;
|
+ double latitude, longitude;
|
||||||
+ char name[64];
|
+ char name[64];
|
||||||
+ char *comment;
|
+ char *comment;
|
||||||
+ struct location_info *next;
|
+ struct location_info *next;
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+/* System timezone database pointer. */
|
+/* Cache of zone.tab. */
|
||||||
+static const timelib_tzdb *timezonedb_system = NULL;
|
|
||||||
+
|
|
||||||
+/* Cache of zone.tab location data. */
|
|
||||||
+static struct location_info **system_location_table;
|
+static struct location_info **system_location_table;
|
||||||
+
|
+
|
||||||
+/* Size of the zone.tab hash table; a random-ish prime big enough to
|
+/* Size of the zone.tab hash table; a random-ish prime big enough to
|
||||||
+ * prevent too many collisions. */
|
+ * prevent too many collisions. */
|
||||||
+#define LOCINFO_HASH_SIZE (1021)
|
+#define LOCINFO_HASH_SIZE (1021)
|
||||||
+
|
+
|
||||||
+/* Hash function for indexing the location_info hash table. */
|
|
||||||
+static uint32_t tz_hash(const char *str)
|
+static uint32_t tz_hash(const char *str)
|
||||||
+{
|
+{
|
||||||
+ const unsigned char *p = (const unsigned char *)str;
|
+ const unsigned char *p = (const unsigned char *)str;
|
||||||
@ -107,8 +111,8 @@ r1: initial revision
|
|||||||
+ return hash % LOCINFO_HASH_SIZE;
|
+ return hash % LOCINFO_HASH_SIZE;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* Parse an ISO-6709 co-ordinate as used in zone.tab. Returns end of
|
+/* Parse an ISO-6709 date as used in zone.tab. Returns end of the
|
||||||
+ * the parsed string on success, or NULL on parse error. On success,
|
+ * parsed string on success, or NULL on parse error. On success,
|
||||||
+ * writes the parsed number to *result. */
|
+ * writes the parsed number to *result. */
|
||||||
+static char *parse_iso6709(char *p, double *result)
|
+static char *parse_iso6709(char *p, double *result)
|
||||||
+{
|
+{
|
||||||
@ -159,7 +163,7 @@ r1: initial revision
|
|||||||
+ /* Round to five decimal place, not because it's a good idea,
|
+ /* Round to five decimal place, not because it's a good idea,
|
||||||
+ * but, because the builtin data uses rounded data, so, match
|
+ * but, because the builtin data uses rounded data, so, match
|
||||||
+ * that. */
|
+ * that. */
|
||||||
+ *result = sign * (int)(v * 100000.0 + 0.5) / 100000.0;
|
+ *result = round(v * sign * 100000.0) / 100000.0;
|
||||||
+
|
+
|
||||||
+ return p;
|
+ return p;
|
||||||
+}
|
+}
|
||||||
@ -283,8 +287,6 @@ r1: initial revision
|
|||||||
+ && strstr(ent->d_name, ".tab") == NULL;
|
+ && strstr(ent->d_name, ".tab") == NULL;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* Comparison callback for qsort(), used to alpha-sort the index
|
|
||||||
+ * array by timezone name. */
|
|
||||||
+static int sysdbcmp(const void *first, const void *second)
|
+static int sysdbcmp(const void *first, const void *second)
|
||||||
+{
|
+{
|
||||||
+ const timelib_tzdb_index_entry *alpha = first, *beta = second;
|
+ const timelib_tzdb_index_entry *alpha = first, *beta = second;
|
||||||
@ -366,9 +368,6 @@ r1: initial revision
|
|||||||
+ free(top);
|
+ free(top);
|
||||||
+ } while (dirstack_top);
|
+ } while (dirstack_top);
|
||||||
+
|
+
|
||||||
+ /* Alpha-sort the index array; shouldn't be technically necessary
|
|
||||||
+ * but some of the test cases rely on this, and, it matches the
|
|
||||||
+ * builtin database. */
|
|
||||||
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
|
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
|
||||||
+
|
+
|
||||||
+ db->index = db_index;
|
+ db->index = db_index;
|
||||||
@ -378,57 +377,23 @@ r1: initial revision
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+#define FAKE_HEADER "1234\0??\1??"
|
+#define FAKE_HEADER "1234\0??\1??"
|
||||||
+#define FAKE_BC_POS (0)
|
|
||||||
+#define FAKE_UTC_POS (7 - 4)
|
+#define FAKE_UTC_POS (7 - 4)
|
||||||
+
|
+
|
||||||
+/* Create a fake data segment for database 'sysdb'. This mocks
|
+/* Create a fake data segment for database 'sysdb'. */
|
||||||
+ * up a fake ->data segment for the given timezone database.
|
|
||||||
+ * php_date.c::timezone_identifiers_list() looks at data[pos + 4]
|
|
||||||
+ * through data[pos + 6] to compare the country code and BC flag,
|
|
||||||
+ * which are stored in the builtin data array like:
|
|
||||||
+ *
|
|
||||||
+ * (pos + 4) => BC flag
|
|
||||||
+ * (pos + 5, pos + 6) => Two chars of country code
|
|
||||||
+ *
|
|
||||||
+ * where pos is the index corresponding to the timezone name.
|
|
||||||
+ *
|
|
||||||
+ * Timezone names are classified here into three types:
|
|
||||||
+ * 1) UTC, which is special
|
|
||||||
+ * 2) "normal" zone names
|
|
||||||
+ * 3) "backwards-compat" zone names
|
|
||||||
+ *
|
|
||||||
+ * (boolean logic of the BC flag seems to be inverted, but hey)
|
|
||||||
+ *
|
|
||||||
+ * UTC is special since it has BC=\1, code = "??"
|
|
||||||
+ * "normal" zones exist in zone.tab and have the given c-code and BC=\1
|
|
||||||
+ * "backwards-compat" zones don't exist in zone.tab and have BC=\0
|
|
||||||
+ *
|
|
||||||
+ * Since UTC and the BC zones are constant, they are encoded in the
|
|
||||||
+ * FAKE_HEADER prefix, and pos pointers index into that.
|
|
||||||
+ *
|
|
||||||
+ * FAKE_HEADER is hence four random bytes, then the BC zone segment
|
|
||||||
+ * (three bytes), then the UTC zone segment (another three).
|
|
||||||
+ *
|
|
||||||
+ * For all "normal" zones, three bytes are appended to the data array;
|
|
||||||
+ * the BC flag, always 1, and the two bytes of country code.
|
|
||||||
+ */
|
|
||||||
+static void fake_data_segment(timelib_tzdb *sysdb,
|
+static void fake_data_segment(timelib_tzdb *sysdb,
|
||||||
+ struct location_info **info)
|
+ struct location_info **info)
|
||||||
+{
|
+{
|
||||||
+ size_t n;
|
+ size_t n;
|
||||||
+ char *data, *p;
|
+ char *data, *p;
|
||||||
+
|
+
|
||||||
+ /* Worst case maximum is 3 bytes per zone, plus the header. */
|
+ data = malloc(3 * sysdb->index_size + 7);
|
||||||
+ data = malloc((3 * sysdb->index_size) + sizeof(FAKE_HEADER) - 1);
|
|
||||||
+
|
+
|
||||||
+ /* Append the fake header, p then = next byte */
|
|
||||||
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
|
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
|
||||||
+
|
+
|
||||||
+ for (n = 0; n < sysdb->index_size; n++) {
|
+ for (n = 0; n < sysdb->index_size; n++) {
|
||||||
+ const struct location_info *li;
|
+ const struct location_info *li;
|
||||||
+ timelib_tzdb_index_entry *ent;
|
+ timelib_tzdb_index_entry *ent;
|
||||||
+
|
+
|
||||||
+ /* Lost const'ness since we're modifying the pos pointer. */
|
|
||||||
+ ent = (timelib_tzdb_index_entry *)&sysdb->index[n];
|
+ ent = (timelib_tzdb_index_entry *)&sysdb->index[n];
|
||||||
+
|
+
|
||||||
+ /* Lookup the timezone name in the hash table. */
|
+ /* Lookup the timezone name in the hash table. */
|
||||||
@ -439,11 +404,11 @@ r1: initial revision
|
|||||||
+
|
+
|
||||||
+ li = find_zone_info(info, ent->id);
|
+ li = find_zone_info(info, ent->id);
|
||||||
+ if (li) {
|
+ if (li) {
|
||||||
+ /* If found, append the BC byte and the country code; set
|
+ /* If found, append the BC byte and the
|
||||||
+ * the position index for the timezone to point to
|
+ * country code; set the position for this
|
||||||
+ * this. */
|
+ * section of timezone data. */
|
||||||
+ ent->pos = (p - data) - 4;
|
+ ent->pos = (p - data) - 4;
|
||||||
+ *p++ = '\x01';
|
+ *p++ = '\1';
|
||||||
+ *p++ = li->code[0];
|
+ *p++ = li->code[0];
|
||||||
+ *p++ = li->code[1];
|
+ *p++ = li->code[1];
|
||||||
+ }
|
+ }
|
||||||
@ -454,12 +419,15 @@ r1: initial revision
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* Store the fake data array */
|
|
||||||
+ sysdb->data = (unsigned char *)data;
|
+ sysdb->data = (unsigned char *)data;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* Evaluates to true if given timezone name is valid. */
|
+/* Returns true if the passed-in stat structure describes a
|
||||||
+#define is_valid_tz_name(tz_) (tz_[0] && strstr(tz_, "..") == NULL)
|
+ * probably-valid timezone file. */
|
||||||
|
+static int is_valid_tzfile(const struct stat *st)
|
||||||
|
+{
|
||||||
|
+ return S_ISREG(st->st_mode) && st->st_size > 20;
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+/* Return the mmap()ed tzfile if found, else NULL. On success, the
|
+/* Return the mmap()ed tzfile if found, else NULL. On success, the
|
||||||
+ * length of the mapped data is placed in *length. */
|
+ * length of the mapped data is placed in *length. */
|
||||||
@ -470,7 +438,7 @@ r1: initial revision
|
|||||||
+ char *p;
|
+ char *p;
|
||||||
+ int fd;
|
+ int fd;
|
||||||
+
|
+
|
||||||
+ if (!is_valid_tz_name(timezone)) {
|
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -479,7 +447,7 @@ r1: initial revision
|
|||||||
+ fd = open(fname, O_RDONLY);
|
+ fd = open(fname, O_RDONLY);
|
||||||
+ if (fd == -1) {
|
+ if (fd == -1) {
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ } else if (fstat(fd, &st) != 0 || st.st_size < 21) {
|
+ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st)) {
|
||||||
+ close(fd);
|
+ close(fd);
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ }
|
+ }
|
||||||
@ -490,28 +458,21 @@ r1: initial revision
|
|||||||
+
|
+
|
||||||
+ return p != MAP_FAILED ? p : NULL;
|
+ return p != MAP_FAILED ? p : NULL;
|
||||||
+}
|
+}
|
||||||
|
+
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+/* seek_to_tz_position() for a builtin/external database. */
|
+static int inmem_seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
|
||||||
+static int inmem_seek_to_tz_position(const unsigned char **tzf,
|
|
||||||
+ char *timezone, const timelib_tzdb *tzdb)
|
|
||||||
{
|
{
|
||||||
int left = 0, right = tzdb->index_size - 1;
|
int left = 0, right = tzdb->index_size - 1;
|
||||||
#ifdef HAVE_SETLOCALE
|
#ifdef HAVE_SETLOCALE
|
||||||
@@ -295,36 +743,131 @@ static int seek_to_tz_position(const uns
|
@@ -295,36 +705,125 @@ static int seek_to_tz_position(const uns
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
+/* Modified seek_to_tz_position wrapper which handles the system
|
|
||||||
+ * database and the builtin/external databases in the same way.
|
|
||||||
+ * Returns zero on failure on non-zero on success. On success, (*map,
|
|
||||||
+ * *maplen) is an mmap'ed region if *map is non-NULL, and must be
|
|
||||||
+ * munmaped after use. */
|
|
||||||
+static int seek_to_tz_position(const unsigned char **tzf, char *timezone,
|
+static int seek_to_tz_position(const unsigned char **tzf, char *timezone,
|
||||||
+ char **map, size_t *maplen,
|
+ char **map, size_t *maplen,
|
||||||
+ const timelib_tzdb *tzdb)
|
+ const timelib_tzdb *tzdb)
|
||||||
+{
|
+{
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA
|
|
||||||
+ if (tzdb == timezonedb_system) {
|
+ if (tzdb == timezonedb_system) {
|
||||||
+ char *orig;
|
+ char *orig;
|
||||||
+
|
+
|
||||||
@ -525,9 +486,7 @@ r1: initial revision
|
|||||||
+
|
+
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+ }
|
+ }
|
||||||
+ else
|
+ else {
|
||||||
+#endif
|
|
||||||
+ {
|
|
||||||
+ return inmem_seek_to_tz_position(tzf, timezone, tzdb);
|
+ return inmem_seek_to_tz_position(tzf, timezone, tzdb);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
@ -546,6 +505,7 @@ r1: initial revision
|
|||||||
+ timezonedb_system = tmp;
|
+ timezonedb_system = tmp;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+
|
||||||
+ return timezonedb_system;
|
+ return timezonedb_system;
|
||||||
+#else
|
+#else
|
||||||
return &timezonedb_builtin;
|
return &timezonedb_builtin;
|
||||||
@ -573,13 +533,13 @@ r1: initial revision
|
|||||||
+ char fname[PATH_MAX];
|
+ char fname[PATH_MAX];
|
||||||
+ struct stat st;
|
+ struct stat st;
|
||||||
+
|
+
|
||||||
+ if (!is_valid_tz_name(timezone)) {
|
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
|
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
|
||||||
+
|
+
|
||||||
+ return stat(fname, &st) == 0 && S_ISREG(st.st_mode);
|
+ return stat(fname, &st) == 0 && is_valid_tzfile(&st);
|
||||||
+ }
|
+ }
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
@ -609,6 +569,7 @@ r1: initial revision
|
|||||||
+
|
+
|
||||||
+ /* TZif-style - grok the location info from the system database,
|
+ /* TZif-style - grok the location info from the system database,
|
||||||
+ * if possible. */
|
+ * if possible. */
|
||||||
|
+
|
||||||
+ if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
|
+ if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
|
||||||
+ tmp->location.comments = strdup(li->comment);
|
+ tmp->location.comments = strdup(li->comment);
|
||||||
+ strncpy(tmp->location.country_code, li->code, 2);
|
+ strncpy(tmp->location.country_code, li->code, 2);
|
||||||
|
@ -5,60 +5,15 @@ Description: Silence warnings about using the default system timezone info
|
|||||||
set the timezone explicitly), though with our use of the system timezonedb
|
set the timezone explicitly), though with our use of the system timezonedb
|
||||||
patch, we actually feel quite comfortable using the default timezone info.
|
patch, we actually feel quite comfortable using the default timezone info.
|
||||||
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=571762
|
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=571762
|
||||||
--- a/ext/date/php_date.c
|
|
||||||
+++ b/ext/date/php_date.c
|
|
||||||
@@ -886,7 +886,7 @@ static char* guess_timezone(const timeli
|
|
||||||
tzid = "UTC";
|
|
||||||
}
|
|
||||||
|
|
||||||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, DATE_TZ_ERRMSG "We selected '%s' for '%s/%.1f/%s' instead", tzid, ta ? ta->tm_zone : "Unknown", ta ? (float) (ta->tm_gmtoff / 3600) : 0, ta ? (ta->tm_isdst ? "DST" : "no DST") : "Unknown");
|
|
||||||
+ // php_error_docref(NULL TSRMLS_CC, E_WARNING, DATE_TZ_ERRMSG "We selected '%s' for '%s/%.1f/%s' instead", tzid, ta ? ta->tm_zone : "Unknown", ta ? (float) (ta->tm_gmtoff / 3600) : 0, ta ? (ta->tm_isdst ? "DST" : "no DST") : "Unknown");
|
|
||||||
return tzid;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
--- a/ext/date/tests/date_default_timezone_get-1.phpt
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,16 +0,0 @@
|
|
||||||
---TEST--
|
|
||||||
-date_default_timezone_get() function [1]
|
|
||||||
---INI--
|
|
||||||
-date.timezone=
|
|
||||||
---FILE--
|
|
||||||
-<?php
|
|
||||||
- putenv('TZ=');
|
|
||||||
- echo date_default_timezone_get(), "\n";
|
|
||||||
- echo date('e'), "\n";
|
|
||||||
-?>
|
|
||||||
---EXPECTF--
|
|
||||||
-Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 3
|
|
||||||
-UTC
|
|
||||||
-
|
|
||||||
-Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-1.php on line 4
|
|
||||||
-UTC
|
|
||||||
--- a/ext/date/tests/date_default_timezone_get-2.phpt
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,12 +0,0 @@
|
|
||||||
---TEST--
|
|
||||||
-date_default_timezone_get() function [2]
|
|
||||||
---INI--
|
|
||||||
-date.timezone=
|
|
||||||
---FILE--
|
|
||||||
-<?php
|
|
||||||
- putenv('TZ=');
|
|
||||||
- echo date_default_timezone_get(), "\n";
|
|
||||||
-?>
|
|
||||||
---EXPECTF--
|
|
||||||
-Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_get-2.php on line 3
|
|
||||||
-UTC
|
|
||||||
--- a/ext/date/tests/date_default_timezone_set-1.phpt
|
--- a/ext/date/tests/date_default_timezone_set-1.phpt
|
||||||
+++ b/ext/date/tests/date_default_timezone_set-1.phpt
|
+++ b/ext/date/tests/date_default_timezone_set-1.phpt
|
||||||
@@ -22,9 +22,6 @@ date.timezone=
|
@@ -22,9 +22,6 @@ date.timezone=
|
||||||
echo date(DATE_ISO8601, $date4), "\n";
|
echo date(DATE_ISO8601, $date4), "\n";
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
-Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 3
|
-Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in %sdate_default_timezone_set-1.php on line 3
|
||||||
-
|
-
|
||||||
-Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in %sdate_default_timezone_set-1.php on line 4
|
-Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in %sdate_default_timezone_set-1.php on line 4
|
||||||
America/Indiana/Knox
|
America/Indiana/Knox
|
||||||
2005-01-12T03:00:00-0500
|
2005-01-12T03:00:00-0500
|
||||||
2005-07-12T03:00:00-0500
|
2005-07-12T03:00:00-0500
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,14 @@
|
|||||||
--- a/configure
|
--- a/configure.in
|
||||||
+++ b/configure
|
+++ b/configure.in
|
||||||
@@ -16357,7 +16357,7 @@ fi
|
@@ -453,7 +453,10 @@ PHP_CHECK_FUNC(gethostname, nsl)
|
||||||
ac_libs=$LIBS
|
PHP_CHECK_FUNC(gethostbyaddr, nsl)
|
||||||
LIBS="$LIBS -ldl"
|
PHP_CHECK_FUNC(yp_get_default_domain, nsl)
|
||||||
if test "$cross_compiling" = yes; then
|
|
||||||
- found=no
|
-PHP_CHECK_FUNC(dlopen, dl)
|
||||||
+ found=$found
|
+PHP_ADD_LIBRARY(dl)
|
||||||
else
|
+PHP_DEF_HAVE(dlopen)
|
||||||
cat > conftest.$ac_ext <<EOF
|
+PHP_DEF_HAVE(libdl)
|
||||||
#line 16364 "configure"
|
+ac_cv_func_dlopen=yes
|
||||||
|
if test "$ac_cv_func_dlopen" = "yes"; then
|
||||||
|
AC_DEFINE(HAVE_LIBDL, 1, [ ])
|
||||||
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user