From 5072438c00513116dba4227fa69e7c753b8f18b0 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 11 Oct 2013 10:19:18 +0200 Subject: php-pecl-quickhash: 1.0.0 - New package --- Makefile | 4 + php-pecl-quickhash.spec | 181 ++++++++++++++ quickhash-pr4.patch | 625 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 810 insertions(+) create mode 100644 Makefile create mode 100644 php-pecl-quickhash.spec create mode 100644 quickhash-pr4.patch diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13af741 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../../common/Makefile + diff --git a/php-pecl-quickhash.spec b/php-pecl-quickhash.spec new file mode 100644 index 0000000..c53cb45 --- /dev/null +++ b/php-pecl-quickhash.spec @@ -0,0 +1,181 @@ +# spec file for php-pecl-quickhash +# +# Copyright (c) 2013 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/3.0/ +# +# Please, preserve the changelog entries +# +%{!?php_inidir: %{expand: %%global php_inidir %{_sysconfdir}/php.d}} +%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}} + +%global with_zts 0%{?__ztsphp:1} +%global pecl_name quickhash + +Summary: Set of specific strongly-typed classes for sets and hashing +Name: php-pecl-%{pecl_name} +Version: 1.0.0 +Release: 1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} +License: PHP +Group: Development/Languages +URL: http://pecl.php.net/package/%{pecl_name} +Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz + +# https://github.com/derickr/quickhash/pull/4 +Patch0: %{pecl_name}-pr4.patch + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: php-devel +BuildRequires: php-pear + +Requires(post): %{__pecl} +Requires(postun): %{__pecl} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} + +Provides: php-%{pecl_name} = %{version} +Provides: php-%{pecl_name}%{?_isa} = %{version} +Provides: php-pecl(%{pecl_name}) = %{version} +Provides: php-pecl(%{pecl_name})%{?_isa} = %{version} + +# Filter shared private +%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} +%{?filter_setup} + + +%description +This extension contains four classes for managing: an integer set, an integer +hash, integer to string hash and a string to integer hash. The main features +are low memory consumption and fast serialization and deserialization of +the sets and hashes. + +Documentation: http://php.net/quickhash + + +%prep +%setup -q -c +mv %{pecl_name}-%{version} NTS + +cd NTS +%patch0 -p1 + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_QUICKHASH_VERSION/{s/.* "//;s/".*$//;p}' php_quickhash.h) +if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then + : Error: Upstream extension version is ${extver}, expecting %{version}%{?prever:-%{prever}}. + exit 1 +fi +cd .. + +%if %{with_zts} +# Duplicate source tree for NTS / ZTS build +cp -pr NTS ZTS +%endif + +# Create configuration file +cat > %{pecl_name}.ini << 'EOF' +; Enable %{pecl_name} extension module +extension=%{pecl_name}.so +EOF + + +%build +cd NTS +%{_bindir}/phpize +%configure \ + --with-libdir=%{_lib} \ + --with-php-config=%{_bindir}/php-config + +make %{?_smp_mflags} + +%if %{with_zts} +cd ../ZTS +%{_bindir}/zts-phpize +%configure \ + --with-libdir=%{_lib} \ + --with-php-config=%{_bindir}/zts-php-config + +make %{?_smp_mflags} +%endif + + +%install +rm -rf %{buildroot} + +make -C NTS install INSTALL_ROOT=%{buildroot} + +# install config file +install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_inidir}/%{pecl_name}.ini + +# Install XML package description +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + +%if %{with_zts} +make -C ZTS install INSTALL_ROOT=%{buildroot} + +install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_ztsinidir}/%{pecl_name}.ini +%endif + + +%post +%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : + + +%postun +if [ $1 -eq 0 ] ; then + %{pecl_uninstall} %{pecl_name} >/dev/null || : +fi + + +%check +: Minimal load test for NTS extension +cd NTS +%{_bindir}/php --no-php-ini \ + --define extension=modules/%{pecl_name}.so \ + --modules | grep %{pecl_name} + +: Upstream test suite for NTS extension +TEST_PHP_EXECUTABLE=%{_bindir}/php \ +TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{_bindir}/php -n run-tests.php + + +%if %{with_zts} +: Minimal load test for ZTS extension +cd ../ZTS +%{__ztsphp} --no-php-ini \ + --define extension=modules/%{pecl_name}.so \ + --modules | grep %{pecl_name} + +: Upstream test suite for ZTS extension +TEST_PHP_EXECUTABLE=%{__ztsphp} \ +TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__ztsphp} -n run-tests.php +%endif + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%doc NTS/{LICENSE,CREDITS} +%{pecl_xmldir}/%{name}.xml +%config(noreplace) %{php_inidir}/%{pecl_name}.ini +%{php_extdir}/%{pecl_name}.so + +%if %{with_zts} +%config(noreplace) %{php_ztsinidir}/%{pecl_name}.ini +%{php_ztsextdir}/%{pecl_name}.so +%endif + + +%changelog +* Fri Oct 11 2013 Remi Collet - 1.0.0-1 +- initial package, version 1.0.0 (stable) +- open https://github.com/derickr/quickhash/pull/4 diff --git a/quickhash-pr4.patch b/quickhash-pr4.patch new file mode 100644 index 0000000..447122f --- /dev/null +++ b/quickhash-pr4.patch @@ -0,0 +1,625 @@ +From ea1f197b7e5d96fc09f02bb7fc382e28b3c4fc86 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Thu, 10 Oct 2013 15:36:12 +0200 +Subject: [PATCH 1/5] Fix iterator for PHP 5.5 + +--- + qh_iterator.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/qh_iterator.c b/qh_iterator.c +index c11d62d..ae6d9b5 100644 +--- a/qh_iterator.c ++++ b/qh_iterator.c +@@ -84,6 +84,18 @@ static void qh_intset_it_current_data(zend_object_iterator *iter, zval ***data T + *data = &iterator->current_value; + } + ++#if ZEND_MODULE_API_NO >= 20121212 ++static void qh_intset_it_current_key(zend_object_iterator *iter, zval *key TSRMLS_DC) ++{ ++ qh_intset_it *iterator = (qh_intset_it *)iter; ++ qhi *hash = (qhi* ) iterator->intern.data; ++ ++ if (hash->key_type == QHI_KEY_TYPE_STRING) { ++ ZVAL_STRING(key, estrndup(hash->keys.values + iterator->iterator.key, strlen(hash->keys.values + iterator->iterator.key)), 0); ++ } else { ++ ZVAL_LONG(key, iterator->iterator.key); ++ } ++#else + static int qh_intset_it_current_key(zend_object_iterator *iter, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) + { + qh_intset_it *iterator = (qh_intset_it *)iter; +@@ -97,6 +109,7 @@ static int qh_intset_it_current_key(zend_object_iterator *iter, char **str_key, + *int_key = iterator->iterator.key; + return HASH_KEY_IS_LONG; + } ++#endif + } + + static void qh_intset_it_move_forward(zend_object_iterator *iter TSRMLS_DC) +-- +1.8.4 + + +From c8493e199fb05f8b0bf85d51548ff37c69956ceb Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Thu, 10 Oct 2013 16:19:05 +0200 +Subject: [PATCH 4/5] fix deprecated warnings php_set_error_handling + +--- + qh_inthash.c | 16 ++++++++-------- + qh_intset.c | 20 ++++++++++---------- + qh_intstringhash.c | 20 ++++++++++---------- + qh_stringinthash.c | 20 ++++++++++---------- + quickhash.h | 7 +++++++ + 5 files changed, 45 insertions(+), 38 deletions(-) + +diff --git a/qh_inthash.c b/qh_inthash.c +index 6c01343..b2eea41 100644 +--- a/qh_inthash.c ++++ b/qh_inthash.c +@@ -301,7 +301,7 @@ static uint32_t qh_inthash_initialize_from_file(php_qh_inthash_obj *obj, php_str + long size = 0, flags = 0; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &filename, &filename_len, &size, &flags) == FAILURE) { + return; + } +@@ -316,7 +316,7 @@ static uint32_t qh_inthash_initialize_from_file(php_qh_inthash_obj *obj, php_str + qh_inthash_initialize_from_file(zend_object_store_get_object(return_value TSRMLS_CC), stream, size, flags TSRMLS_CC); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -340,7 +340,7 @@ int qh_inthash_save_to_file(php_stream *stream, php_qh_inthash_obj *obj) + php_qh_inthash_obj *inthash_obj; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, qh_ce_inthash, &filename, &filename_len) == FAILURE) { + return; + } +@@ -356,7 +356,7 @@ int qh_inthash_save_to_file(php_stream *stream, php_qh_inthash_obj *obj) + qh_inthash_save_to_file(stream, inthash_obj); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -407,14 +407,14 @@ static uint32_t qh_inthash_initialize_from_string(php_qh_inthash_obj *obj, char + int contents_len; + long size = 0, flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &contents, &contents_len, &size, &flags) == FAILURE) { + return; + } + + qh_instantiate(qh_ce_inthash, return_value TSRMLS_CC); + qh_inthash_initialize_from_string(zend_object_store_get_object(return_value TSRMLS_CC), contents, contents_len, size, flags TSRMLS_CC); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -440,7 +440,7 @@ char *qh_inthash_save_to_string(uint32_t *string_len, php_qh_inthash_obj *obj) + char *string; + uint32_t string_len; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, qh_ce_inthash) == FAILURE) { + return; + } +@@ -448,7 +448,7 @@ char *qh_inthash_save_to_string(uint32_t *string_len, php_qh_inthash_obj *obj) + inthash_obj = (php_qh_inthash_obj *) zend_object_store_get_object(object TSRMLS_CC); + + string = qh_inthash_save_to_string(&string_len, inthash_obj); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + RETURN_STRINGL(string, string_len, 0); + } + /* }}} */ +diff --git a/qh_intset.c b/qh_intset.c +index 6d22a1b..43200b8 100644 +--- a/qh_intset.c ++++ b/qh_intset.c +@@ -186,13 +186,13 @@ static int qh_intset_initialize(php_qh_intset_obj *obj, long size, long flags TS + long size; + long flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &size, &flags) == SUCCESS) { + if (!qh_intset_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), size, flags TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize set."); + } + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -297,7 +297,7 @@ static uint32_t qh_intset_initialize_from_file(php_qh_intset_obj *obj, php_strea + long size = 0, flags = 0; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &filename, &filename_len, &size, &flags) == FAILURE) { + return; + } +@@ -312,7 +312,7 @@ static uint32_t qh_intset_initialize_from_file(php_qh_intset_obj *obj, php_strea + qh_intset_initialize_from_file(zend_object_store_get_object(return_value TSRMLS_CC), stream, size, flags TSRMLS_CC); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -336,7 +336,7 @@ int qh_intset_save_to_file(php_stream *stream, php_qh_intset_obj *obj) + php_qh_intset_obj *intset_obj; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, qh_ce_intset, &filename, &filename_len) == FAILURE) { + return; + } +@@ -352,7 +352,7 @@ int qh_intset_save_to_file(php_stream *stream, php_qh_intset_obj *obj) + qh_intset_save_to_file(stream, intset_obj); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -394,14 +394,14 @@ static uint32_t qh_intset_initialize_from_string(php_qh_intset_obj *obj, char *c + int contents_len; + long size = 0, flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &contents, &contents_len, &size, &flags) == FAILURE) { + return; + } + + qh_instantiate(qh_ce_intset, return_value TSRMLS_CC); + qh_intset_initialize_from_string(zend_object_store_get_object(return_value TSRMLS_CC), contents, contents_len, size, flags TSRMLS_CC); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -427,7 +427,7 @@ char *qh_intset_save_to_string(uint32_t *string_len, php_qh_intset_obj *obj) + char *string; + uint32_t string_len; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, qh_ce_intset) == FAILURE) { + return; + } +@@ -435,7 +435,7 @@ char *qh_intset_save_to_string(uint32_t *string_len, php_qh_intset_obj *obj) + intset_obj = (php_qh_intset_obj *) zend_object_store_get_object(object TSRMLS_CC); + + string = qh_intset_save_to_string(&string_len, intset_obj); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + RETURN_STRINGL(string, string_len, 0); + } + /* }}} */ +diff --git a/qh_intstringhash.c b/qh_intstringhash.c +index e74fe8d..77d21f8 100644 +--- a/qh_intstringhash.c ++++ b/qh_intstringhash.c +@@ -203,13 +203,13 @@ static int qh_intstringhash_initialize(php_qh_intset_obj *obj, long size, long f + long size; + long flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &size, &flags) == SUCCESS) { + if (!qh_intstringhash_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), size, flags TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize hash."); + } + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -323,7 +323,7 @@ static uint32_t qh_intstringhash_initialize_from_file(php_qh_intstringhash_obj * + long size = 0, flags = 0; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &filename, &filename_len, &size, &flags) == FAILURE) { + return; + } +@@ -338,7 +338,7 @@ static uint32_t qh_intstringhash_initialize_from_file(php_qh_intstringhash_obj * + qh_intstringhash_initialize_from_file(zend_object_store_get_object(return_value TSRMLS_CC), stream, size, flags TSRMLS_CC); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -362,7 +362,7 @@ int qh_intstringhash_save_to_file(php_stream *stream, php_qh_intstringhash_obj * + php_qh_intstringhash_obj *intstringhash_obj; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, qh_ce_intstringhash, &filename, &filename_len) == FAILURE) { + return; + } +@@ -378,7 +378,7 @@ int qh_intstringhash_save_to_file(php_stream *stream, php_qh_intstringhash_obj * + qh_intstringhash_save_to_file(stream, intstringhash_obj); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -431,14 +431,14 @@ static uint32_t qh_intstringhash_initialize_from_string(php_qh_intstringhash_obj + int contents_len; + long size = 0, flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &contents, &contents_len, &size, &flags) == FAILURE) { + return; + } + + qh_instantiate(qh_ce_intstringhash, return_value TSRMLS_CC); + qh_intstringhash_initialize_from_string(zend_object_store_get_object(return_value TSRMLS_CC), contents, contents_len, size, flags TSRMLS_CC); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -464,7 +464,7 @@ char *qh_intstringhash_save_to_string(uint32_t *string_len, php_qh_intstringhash + char *string; + uint32_t string_len; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, qh_ce_intstringhash) == FAILURE) { + return; + } +@@ -472,7 +472,7 @@ char *qh_intstringhash_save_to_string(uint32_t *string_len, php_qh_intstringhash + intstringhash_obj = (php_qh_intstringhash_obj *) zend_object_store_get_object(object TSRMLS_CC); + + string = qh_intstringhash_save_to_string(&string_len, intstringhash_obj); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + RETURN_STRINGL(string, string_len, 0); + } + /* }}} */ +diff --git a/qh_stringinthash.c b/qh_stringinthash.c +index c8e2794..8c667a1 100644 +--- a/qh_stringinthash.c ++++ b/qh_stringinthash.c +@@ -203,13 +203,13 @@ static int qh_stringinthash_initialize(php_qh_intset_obj *obj, long size, long f + long size; + long flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &size, &flags) == SUCCESS) { + if (!qh_stringinthash_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), size, flags TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize hash."); + } + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -382,7 +382,7 @@ static uint32_t qh_stringinthash_initialize_from_file(php_qh_stringinthash_obj * + long size = 0, flags = 0; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &filename, &filename_len, &size, &flags) == FAILURE) { + return; + } +@@ -397,7 +397,7 @@ static uint32_t qh_stringinthash_initialize_from_file(php_qh_stringinthash_obj * + qh_stringinthash_initialize_from_file(zend_object_store_get_object(return_value TSRMLS_CC), stream, size, flags TSRMLS_CC); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -421,7 +421,7 @@ int qh_stringinthash_save_to_file(php_stream *stream, php_qh_stringinthash_obj * + php_qh_stringinthash_obj *stringinthash_obj; + php_stream *stream; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, qh_ce_stringinthash, &filename, &filename_len) == FAILURE) { + return; + } +@@ -437,7 +437,7 @@ int qh_stringinthash_save_to_file(php_stream *stream, php_qh_stringinthash_obj * + qh_stringinthash_save_to_file(stream, stringinthash_obj); + php_stream_close(stream); + } +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -488,14 +488,14 @@ static uint32_t qh_stringinthash_initialize_from_string(php_qh_stringinthash_obj + int contents_len; + long size = 0, flags = 0; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &contents, &contents_len, &size, &flags) == FAILURE) { + return; + } + + qh_instantiate(qh_ce_stringinthash, return_value TSRMLS_CC); + qh_stringinthash_initialize_from_string(zend_object_store_get_object(return_value TSRMLS_CC), contents, contents_len, size, flags TSRMLS_CC); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + } + /* }}} */ + +@@ -521,7 +521,7 @@ char *qh_stringinthash_save_to_string(uint32_t *string_len, php_qh_stringinthash + char *string; + uint32_t string_len; + +- php_set_error_handling(EH_THROW, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_THROW, NULL); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &object, qh_ce_stringinthash) == FAILURE) { + return; + } +@@ -529,7 +529,7 @@ char *qh_stringinthash_save_to_string(uint32_t *string_len, php_qh_stringinthash + stringinthash_obj = (php_qh_stringinthash_obj *) zend_object_store_get_object(object TSRMLS_CC); + + string = qh_stringinthash_save_to_string(&string_len, stringinthash_obj); +- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); ++ QH_SET_ERROR_HANDLING(EH_NORMAL, NULL); + RETURN_STRINGL(string, string_len, 0); + } + /* }}} */ +diff --git a/quickhash.h b/quickhash.h +index 5dcf6b5..8b1bbce 100644 +--- a/quickhash.h ++++ b/quickhash.h +@@ -46,6 +46,13 @@ + #define QH_HASHER_JENKINS2 0x0400 + #define QH_HASHER_MASK 0xFF00 + ++#if PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 3 ++/* php_std_error_handling() is deprecated */ ++#define QH_SET_ERROR_HANDLING(type, handler) zend_replace_error_handling(type, handler, NULL TSRMLS_CC) ++#else ++#define QH_SET_ERROR_HANDLING(type, handler) php_set_error_handling(type, handler TSRMLS_CC) ++#endif ++ + typedef struct _php_qh_string_context { + char *string; + uint32_t string_len; +-- +1.8.4 + + +From b9ca8d077261be8e5e43ab9622cde31aa19749f6 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Thu, 10 Oct 2013 16:24:46 +0200 +Subject: [PATCH 5/5] fix remaining build warnings (gcc 4.8) + +--- + qh_inthash.c | 2 ++ + qh_intset.c | 2 ++ + qh_intstringhash.c | 2 ++ + qh_stringinthash.c | 8 ++++---- + 4 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/qh_inthash.c b/qh_inthash.c +index b2eea41..d86f608 100644 +--- a/qh_inthash.c ++++ b/qh_inthash.c +@@ -135,7 +135,9 @@ static inline zend_object_value qh_object_new_inthash_ex(zend_class_entry *class + { + php_qh_inthash_obj *intern; + zend_object_value retval; ++#if PHP_MINOR_VERSION <= 3 + zval *tmp; ++#endif + + intern = emalloc(sizeof(php_qh_inthash_obj)); + memset(intern, 0, sizeof(php_qh_inthash_obj)); +diff --git a/qh_intset.c b/qh_intset.c +index 43200b8..09c9b9e 100644 +--- a/qh_intset.c ++++ b/qh_intset.c +@@ -122,7 +122,9 @@ static inline zend_object_value qh_object_new_intset_ex(zend_class_entry *class_ + { + php_qh_intset_obj *intern; + zend_object_value retval; ++#if PHP_MINOR_VERSION <= 3 + zval *tmp; ++#endif + + intern = emalloc(sizeof(php_qh_intset_obj)); + memset(intern, 0, sizeof(php_qh_intset_obj)); +diff --git a/qh_intstringhash.c b/qh_intstringhash.c +index 77d21f8..a4dd396 100644 +--- a/qh_intstringhash.c ++++ b/qh_intstringhash.c +@@ -138,7 +138,9 @@ static inline zend_object_value qh_object_new_intstringhash_ex(zend_class_entry + { + php_qh_intstringhash_obj *intern; + zend_object_value retval; ++#if PHP_MINOR_VERSION <= 3 + zval *tmp; ++#endif + + intern = emalloc(sizeof(php_qh_intstringhash_obj)); + memset(intern, 0, sizeof(php_qh_intstringhash_obj)); +diff --git a/qh_stringinthash.c b/qh_stringinthash.c +index 8c667a1..84a8752 100644 +--- a/qh_stringinthash.c ++++ b/qh_stringinthash.c +@@ -138,7 +138,9 @@ static inline zend_object_value qh_object_new_stringinthash_ex(zend_class_entry + { + php_qh_stringinthash_obj *intern; + zend_object_value retval; ++#if PHP_MINOR_VERSION <= 3 + zval *tmp; ++#endif + + intern = emalloc(sizeof(php_qh_stringinthash_obj)); + memset(intern, 0, sizeof(php_qh_stringinthash_obj)); +@@ -446,15 +448,13 @@ static int qh_stringinthash_string_validator(char *string, long length, uint32_t + { + uint32_t *int_buffer = (uint32_t*) string; + uint32_t hash_size; +- uint32_t string_store_size; +- uint32_t bucket_list_size; + + if (string[0] != 'Q' || string[1] != 'H' || string[2] != 0x21) { + return 0; + } + hash_size = int_buffer[1]; +- string_store_size = int_buffer[2]; +- bucket_list_size = int_buffer[3]; ++ /* string_store_size = int_buffer[2]; */ ++ /* bucket_list_size = int_buffer[3]; */ + + *nr_of_elements = hash_size; + +-- +1.8.4 + +From 2bf2475576cf272517c5a89888eb7b55f44670bf Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Fri, 11 Oct 2013 09:21:55 +0200 +Subject: [PATCH] Fix ZTS build + +--- + qh_inthash.c | 1 + + qh_intstringhash.c | 1 + + qh_stringinthash.c | 1 + + quickhash.c | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/qh_inthash.c b/qh_inthash.c +index d86f608..b5545fc 100644 +--- a/qh_inthash.c ++++ b/qh_inthash.c +@@ -256,6 +256,7 @@ static int qh_inthash_stream_validator(php_stream_statbuf finfo, php_stream *str + { + char key_buffer[4]; + uint32_t hash_size; ++ TSRMLS_FETCH(); + + if (php_stream_read(stream, key_buffer, 4) != 4) { + return 0; +diff --git a/qh_intstringhash.c b/qh_intstringhash.c +index a4dd396..ff8ccf1 100644 +--- a/qh_intstringhash.c ++++ b/qh_intstringhash.c +@@ -275,6 +275,7 @@ static int qh_intstringhash_stream_validator(php_stream_statbuf finfo, php_strea + char key_buffer[4]; + uint32_t hash_size; + uint32_t string_store_size; ++ TSRMLS_FETCH(); + + if (php_stream_read(stream, key_buffer, 4) != 4) { + return 0; +diff --git a/qh_stringinthash.c b/qh_stringinthash.c +index 84a8752..d7154b6 100644 +--- a/qh_stringinthash.c ++++ b/qh_stringinthash.c +@@ -335,6 +335,7 @@ static int qh_stringinthash_stream_validator(php_stream_statbuf finfo, php_strea + uint32_t hash_size; + uint32_t string_store_size; + uint32_t bucket_list_size; ++ TSRMLS_FETCH(); + + if (php_stream_read(stream, key_buffer, 4) != 4) { + return 0; +diff --git a/quickhash.c b/quickhash.c +index ff60a4b..8608b54 100644 +--- a/quickhash.c ++++ b/quickhash.c +@@ -209,6 +209,7 @@ int32_t php_qh_get_size_from_stream(void *context) + { + php_qh_stream_context *ctxt = (php_qh_stream_context*) context; + php_stream_statbuf finfo; ++ TSRMLS_FETCH(); + + // obtain the filesize + if (php_stream_stat(ctxt->stream, &finfo) == 0) { +-- +1.8.4 + +From c53c10025179bf96c05b3a20b14942ae6f5fd548 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Fri, 11 Oct 2013 09:31:38 +0200 +Subject: [PATCH] macrozify VERSION (common practice) + report it in phpinfo() + +--- + php_quickhash.h | 2 ++ + quickhash.c | 3 ++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/php_quickhash.h b/php_quickhash.h +index 958c0e8..b81f862 100644 +--- a/php_quickhash.h ++++ b/php_quickhash.h +@@ -29,6 +29,8 @@ + #include "TSRM.h" + #endif + ++#define PHP_QUICKHASH_VERSION "1.0.0" ++ + PHP_MINIT_FUNCTION(quickhash); + PHP_MSHUTDOWN_FUNCTION(quickhash); + PHP_RINIT_FUNCTION(quickhash); +diff --git a/quickhash.c b/quickhash.c +index 8608b54..1acaf13 100644 +--- a/quickhash.c ++++ b/quickhash.c +@@ -52,7 +52,7 @@ + PHP_RSHUTDOWN(quickhash), + PHP_MINFO(quickhash), + #if ZEND_MODULE_API_NO >= 20010901 +- "1.0.0", ++ PHP_QUICKHASH_VERSION, + #endif + STANDARD_MODULE_PROPERTIES + }; +@@ -347,5 +347,6 @@ int php_qh_prepare_string(qhi **hash, qho *options, char *string, long length, l + { + php_info_print_table_start(); + php_info_print_table_header(2, "quickhash support", "enabled"); ++ php_info_print_table_row(2, "quickhash version", PHP_QUICKHASH_VERSION); + php_info_print_table_end(); + } +-- +1.8.4 + -- cgit