--- pecl/geoip/trunk/geoip.c 2015/02/15 15:08:09 335947
+++ pecl/geoip/trunk/geoip.c 2015/02/15 17:56:49 335948
@@ -129,11 +129,19 @@
{
if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) {
GEOIP_G(set_runtime_custom_directory) = 1;
+#if PHP_MAJOR_VERSION >= 7
+ geoip_change_custom_directory(new_value->val);
+#else
geoip_change_custom_directory(new_value);
+#endif
return SUCCESS;
}
+#if PHP_MAJOR_VERSION >= 7
+ return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
+#else
return OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
+#endif
}
/* }}} */
#endif
@@ -250,7 +258,7 @@
/* {{{ proto boolean geoip_db_avail( [ int database ] ) */
PHP_FUNCTION(geoip_db_avail)
{
- long edition;
+ zend_long edition;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &edition) == FAILURE) {
return;
@@ -269,7 +277,7 @@
/* {{{ proto string geoip_db_filename( [ int database ] ) */
PHP_FUNCTION(geoip_db_filename)
{
- long edition;
+ zend_long edition;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &edition) == FAILURE) {
return;
@@ -282,7 +290,11 @@
}
if (NULL != GeoIPDBFileName[edition])
+#if PHP_MAJOR_VERSION >= 7
+ RETURN_STRING(GeoIPDBFileName[edition]);
+#else
RETURN_STRING(GeoIPDBFileName[edition], 1);
+#endif
}
/* }}} */
@@ -297,16 +309,31 @@
{
if (NULL != GeoIPDBDescription[i])
{
+#if PHP_MAJOR_VERSION >= 7
+ zval real_row;
+ zval *row = &real_row;
+
+ array_init(row);
+#else
zval *row;
ALLOC_INIT_ZVAL(row);
array_init(row);
+#endif
add_assoc_bool(row, "available", GeoIP_db_avail(i));
if (GeoIPDBDescription[i]) {
+#if PHP_MAJOR_VERSION >= 7
+ add_assoc_string(row, "description", (char *)GeoIPDBDescription[i]);
+#else
add_assoc_string(row, "description", (char *)GeoIPDBDescription[i], 1);
+#endif
}
if (GeoIPDBFileName[i]) {
+#if PHP_MAJOR_VERSION >= 7
+ add_assoc_string(row, "filename", GeoIPDBFileName[i]);
+#else
add_assoc_string(row, "filename", GeoIPDBFileName[i], 1);
+#endif
}
add_index_zval(return_value, i, row);
@@ -321,7 +348,7 @@
{
GeoIP * gi;
char * db_info;
- long edition = GEOIP_COUNTRY_EDITION;
+ zend_long edition = GEOIP_COUNTRY_EDITION;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &edition) == FAILURE) {
return;
@@ -346,12 +373,45 @@
db_info = GeoIP_database_info(gi);
GeoIP_delete(gi);
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(db_info);
+#else
RETVAL_STRING(db_info, 1);
+#endif
free(db_info);
}
/* }}} */
/* {{{ */
+#if PHP_MAJOR_VERSION >= 7
+#define GEOIPDEF(php_func, c_func, db_type) \
+ PHP_FUNCTION(php_func) \
+ { \
+ GeoIP * gi; \
+ char * hostname = NULL; \
+ const char * return_code; \
+ size_t arglen; \
+ \
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) { \
+ return; \
+ } \
+ \
+ if (GeoIP_db_avail(db_type)) { \
+ gi = GeoIP_open_type(db_type, GEOIP_STANDARD); \
+ } else { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Required database not available at %s.", GeoIPDBFileName[db_type]); \
+ return; \
+ } \
+ \
+ return_code = c_func(gi, hostname); \
+ GeoIP_delete(gi); \
+ if (return_code == NULL) { \
+ RETURN_FALSE; \
+ } \
+ RETURN_STRING((char*)return_code); \
+ \
+ }
+#else
#define GEOIPDEF(php_func, c_func, db_type) \
PHP_FUNCTION(php_func) \
{ \
@@ -379,6 +439,7 @@
RETURN_STRING((char*)return_code, 1); \
\
}
+#endif
#include "geoip.def"
#undef GEOIPDEF
/* }}} */
@@ -390,7 +451,11 @@
GeoIP * gi;
char * hostname = NULL;
int id;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -408,7 +473,11 @@
if (id == 0) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETURN_STRING((char *)GeoIP_country_continent[id]);
+#else
RETURN_STRING((char *)GeoIP_country_continent[id], 1);
+#endif
}
/* }}} */
@@ -419,7 +488,11 @@
GeoIP * gi;
char * hostname = NULL;
char * org;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -437,7 +510,11 @@
if (org == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(org);
+#else
RETVAL_STRING(org, 1);
+#endif
free(org);
}
/* }}} */
@@ -449,7 +526,11 @@
GeoIP * gi;
char * hostname = NULL;
char * org;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -467,7 +548,11 @@
if (org == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(org);
+#else
RETVAL_STRING(org, 1);
+#endif
free(org);
}
/* }}} */
@@ -479,7 +564,11 @@
GeoIP * gi;
char * hostname = NULL;
char * org;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -497,7 +586,11 @@
if (org == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(org);
+#else
RETVAL_STRING(org, 1);
+#endif
free(org);
}
/* }}} */
@@ -510,7 +603,11 @@
GeoIP * gi;
char * hostname = NULL;
char * org;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -528,7 +625,11 @@
if (org == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(org);
+#else
RETVAL_STRING(org, 1);
+#endif
free(org);
}
/* }}} */
@@ -540,7 +641,11 @@
{
GeoIP * gi;
char * hostname = NULL;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
GeoIPRecord * gir;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
@@ -566,15 +671,27 @@
}
array_init(return_value);
-#if LIBGEOIP_VERSION >= 1004003
+#if PHP_MAJOR_VERSION >= 7
+# if LIBGEOIP_VERSION >= 1004003
+ add_assoc_string(return_value, "continent_code", (gir->continent_code == NULL) ? "" : gir->continent_code);
+# endif
+ add_assoc_string(return_value, "country_code", (gir->country_code == NULL) ? "" : gir->country_code);
+ add_assoc_string(return_value, "country_code3", (gir->country_code3 == NULL) ? "" : gir->country_code3);
+ add_assoc_string(return_value, "country_name", (gir->country_name == NULL) ? "" : gir->country_name);
+ add_assoc_string(return_value, "region", (gir->region == NULL) ? "" : gir->region);
+ add_assoc_string(return_value, "city", (gir->city == NULL) ? "" : gir->city);
+ add_assoc_string(return_value, "postal_code", (gir->postal_code == NULL) ? "" : gir->postal_code);
+#else
+# if LIBGEOIP_VERSION >= 1004003
add_assoc_string(return_value, "continent_code", (gir->continent_code == NULL) ? "" : gir->continent_code, 1);
-#endif
+# endif
add_assoc_string(return_value, "country_code", (gir->country_code == NULL) ? "" : gir->country_code, 1);
add_assoc_string(return_value, "country_code3", (gir->country_code3 == NULL) ? "" : gir->country_code3, 1);
add_assoc_string(return_value, "country_name", (gir->country_name == NULL) ? "" : gir->country_name, 1);
add_assoc_string(return_value, "region", (gir->region == NULL) ? "" : gir->region, 1);
add_assoc_string(return_value, "city", (gir->city == NULL) ? "" : gir->city, 1);
add_assoc_string(return_value, "postal_code", (gir->postal_code == NULL) ? "" : gir->postal_code, 1);
+#endif
add_assoc_double(return_value, "latitude", gir->latitude);
add_assoc_double(return_value, "longitude", gir->longitude);
#if LIBGEOIP_VERSION >= 1004005
@@ -594,7 +711,11 @@
{
GeoIP * gi;
char * hostname = NULL;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
int netspeed;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
@@ -620,7 +741,11 @@
{
GeoIP * gi;
char * hostname = NULL;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
GeoIPRegion * region;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
@@ -646,9 +771,14 @@
}
array_init(return_value);
+#if PHP_MAJOR_VERSION >= 7
+ add_assoc_string(return_value, "country_code", region->country_code);
+ add_assoc_string(return_value, "region", region->region);
+#else
add_assoc_string(return_value, "country_code", region->country_code, 1);
add_assoc_string(return_value, "region", region->region, 1);
-
+#endif
+
GeoIPRegion_delete(region);
}
/* }}} */
@@ -660,7 +790,11 @@
GeoIP * gi;
char * hostname = NULL;
char * isp;
+#if PHP_MAJOR_VERSION >= 7
+ size_t arglen;
+#else
int arglen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hostname, &arglen) == FAILURE) {
return;
@@ -678,7 +812,11 @@
if (isp == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETVAL_STRING(isp);
+#else
RETVAL_STRING(isp, 1);
+#endif
free(isp);
}
@@ -690,7 +828,11 @@
char * country_code = NULL;
char * region_code = NULL;
const char * region_name;
+#if PHP_MAJOR_VERSION >= 7
+ size_t countrylen, regionlen;
+#else
int countrylen, regionlen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &country_code, &countrylen, ®ion_code, ®ionlen) == FAILURE) {
return;
@@ -705,7 +847,11 @@
if (region_name == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETURN_STRING((char*)region_name);
+#else
RETURN_STRING((char*)region_name, 1);
+#endif
}
/* }}} */
#endif
@@ -718,7 +864,11 @@
char * country = NULL;
char * region = NULL;
const char * timezone;
+#if PHP_MAJOR_VERSION >= 7
+ size_t countrylen, arg2len;
+#else
int countrylen, arg2len;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &country, &countrylen, ®ion, &arg2len) == FAILURE) {
return;
@@ -733,7 +883,11 @@
if (timezone == NULL) {
RETURN_FALSE;
}
+#if PHP_MAJOR_VERSION >= 7
+ RETURN_STRING((char*)timezone);
+#else
RETURN_STRING((char*)timezone, 1);
+#endif
}
/* }}} */
#endif
@@ -744,7 +898,11 @@
PHP_FUNCTION(geoip_setup_custom_directory)
{
char * dir = NULL;
+#if PHP_MAJOR_VERSION >= 7
+ size_t dirlen;
+#else
int dirlen;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dir, &dirlen) == FAILURE) {
return;
--- pecl/geoip/trunk/php_geoip.h 2015/02/15 15:08:09 335947
+++ pecl/geoip/trunk/php_geoip.h 2015/02/15 17:56:49 335948
@@ -26,6 +26,10 @@
#define PHP_GEOIP_VERSION "1.1.0"
+#if PHP_MAJOR_VERSION < 7
+typedef long zend_long;
+#endif
+
#ifdef PHP_WIN32
#define PHP_GEOIP_API __declspec(dllexport)
#else