commit:     2c8393d80338e09a6ec56b28da86a0540cba92f4
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Tue Aug  9 13:25:27 2016 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Tue Aug  9 13:25:27 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c8393d8

dev-php/pecl-geoip: Revbump with unreleased upstream patches wrt bug 590850

Two patches were included in the upstream repo but never released

1.1.0-public-init.patch replaces a private API database initializer with
a public one
1.1.0-php7-support.patch adds basic PHP 7 support to the extension

Package-Manager: portage-2.3.0

 dev-php/pecl-geoip/files/1.1.0-php7-support.patch | 446 ++++++++++++++++++++++
 dev-php/pecl-geoip/files/1.1.0-public-init.patch  |  21 +
 dev-php/pecl-geoip/pecl-geoip-1.1.0-r1.ebuild     |  28 ++
 3 files changed, 495 insertions(+)

diff --git a/dev-php/pecl-geoip/files/1.1.0-php7-support.patch 
b/dev-php/pecl-geoip/files/1.1.0-php7-support.patch
new file mode 100644
index 0000000..bd50326
--- /dev/null
+++ b/dev-php/pecl-geoip/files/1.1.0-php7-support.patch
@@ -0,0 +1,446 @@
+--- 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, &region_code, &regionlen) == 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, &region, &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

diff --git a/dev-php/pecl-geoip/files/1.1.0-public-init.patch 
b/dev-php/pecl-geoip/files/1.1.0-public-init.patch
new file mode 100644
index 0000000..36c5fa6
--- /dev/null
+++ b/dev-php/pecl-geoip/files/1.1.0-public-init.patch
@@ -0,0 +1,21 @@
+--- a/geoip.c  2014/05/06 12:11:37     333484
++++ b/geoip.c  2014/05/06 12:52:25     333485
+@@ -117,7 +117,7 @@
+ #endif
+ 
+       GeoIP_setup_custom_directory(value);
+-      _GeoIP_setup_dbfilename();
++      GeoIP_db_avail(GEOIP_COUNTRY_EDITION);
+ }
+ /* }}} */
+ #endif
+@@ -168,7 +168,8 @@
+ #ifdef HAVE_CUSTOM_DIRECTORY
+       GeoIP_setup_custom_directory(GEOIP_G(custom_directory));
+ #endif
+-      _GeoIP_setup_dbfilename();
++      /* This will initialize file structure */
++      GeoIP_db_avail(GEOIP_COUNTRY_EDITION);
+       
+       /* For database type constants */
+       REGISTER_LONG_CONSTANT("GEOIP_COUNTRY_EDITION",     
GEOIP_COUNTRY_EDITION,     CONST_CS | CONST_PERSISTENT);

diff --git a/dev-php/pecl-geoip/pecl-geoip-1.1.0-r1.ebuild 
b/dev-php/pecl-geoip/pecl-geoip-1.1.0-r1.ebuild
new file mode 100644
index 0000000..8dcfd62
--- /dev/null
+++ b/dev-php/pecl-geoip/pecl-geoip-1.1.0-r1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="6"
+
+PHP_EXT_NAME="geoip"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+DOCS="README ChangeLog"
+
+USE_PHP="php7-0 php5-6 php5-5"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="~amd64 ~x86"
+
+DESCRIPTION="PHP extension to map IP address to geographic places"
+LICENSE="PHP-3"
+SLOT="0"
+IUSE=""
+
+DEPEND=">=dev-libs/geoip-1.4.0"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${PV}-public-init.patch"
+       "${FILESDIR}/${PV}-php7-support.patch" )

Reply via email to