+++ /dev/null
---- a/geoip.c 2015/02/15 15:08:09 335947
-+++ b/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
-@@ -251,7 +259,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;
-@@ -270,7 +278,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;
-@@ -283,7 +291,11 @@
- }
-
- if (NULL != GeoIPDBFileName[edition])
-+#if PHP_MAJOR_VERSION >= 7
-+ RETURN_STRING(GeoIPDBFileName[edition]);
-+#else
- RETURN_STRING(GeoIPDBFileName[edition], 1);
-+#endif
- }
- /* }}} */
-
-@@ -298,16 +310,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);
-@@ -322,7 +349,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;
-@@ -347,12 +374,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) \
- { \
-@@ -380,6 +440,7 @@
- RETURN_STRING((char*)return_code, 1); \
- \
- }
-+#endif
- #include "geoip.def"
- #undef GEOIPDEF
- /* }}} */
-@@ -391,7 +452,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;
-@@ -409,7 +474,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
- }
- /* }}} */
-
-@@ -420,7 +489,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;
-@@ -438,7 +511,11 @@
- if (org == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETVAL_STRING(org);
-+#else
- RETVAL_STRING(org, 1);
-+#endif
- free(org);
- }
- /* }}} */
-@@ -450,7 +527,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;
-@@ -468,7 +549,11 @@
- if (org == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETVAL_STRING(org);
-+#else
- RETVAL_STRING(org, 1);
-+#endif
- free(org);
- }
- /* }}} */
-@@ -480,7 +565,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;
-@@ -498,7 +587,11 @@
- if (org == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETVAL_STRING(org);
-+#else
- RETVAL_STRING(org, 1);
-+#endif
- free(org);
- }
- /* }}} */
-@@ -511,7 +604,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;
-@@ -529,7 +626,11 @@
- if (org == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETVAL_STRING(org);
-+#else
- RETVAL_STRING(org, 1);
-+#endif
- free(org);
- }
- /* }}} */
-@@ -541,7 +642,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) {
-@@ -567,15 +672,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
-@@ -595,7 +712,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) {
-@@ -621,7 +742,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) {
-@@ -647,9 +772,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);
- }
- /* }}} */
-@@ -661,7 +791,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;
-@@ -679,7 +813,11 @@
- if (isp == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETVAL_STRING(isp);
-+#else
- RETVAL_STRING(isp, 1);
-+#endif
- free(isp);
- }
-
-@@ -691,7 +829,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;
-@@ -706,7 +848,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
-@@ -719,7 +865,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;
-@@ -734,7 +884,11 @@
- if (timezone == NULL) {
- RETURN_FALSE;
- }
-+#if PHP_MAJOR_VERSION >= 7
-+ RETURN_STRING((char*)timezone);
-+#else
- RETURN_STRING((char*)timezone, 1);
-+#endif
- }
- /* }}} */
- #endif
-@@ -745,7 +899,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;
---- a/php_geoip.h 2015/02/15 15:08:09 335947
-+++ b/php_geoip.h 2015/02/15 17:56:49 335948
-@@ -26,6 +26,10 @@
-
- #define PHP_GEOIP_VERSION "1.1.1-dev"
-
-+#if PHP_MAJOR_VERSION < 7
-+typedef long zend_long;
-+#endif
-+
- #ifdef PHP_WIN32
- #define PHP_GEOIP_API __declspec(dllexport)
- #else