summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--5.patch576
-rw-r--r--php-pecl-xdiff.spec39
2 files changed, 597 insertions, 18 deletions
diff --git a/5.patch b/5.patch
new file mode 100644
index 0000000..c7c84ea
--- /dev/null
+++ b/5.patch
@@ -0,0 +1,576 @@
+From b9aec331034f90998e31c60166b5caf758896584 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Wed, 30 Sep 2020 16:45:14 +0200
+Subject: [PATCH] fix compatibility with PHP 8.0.0RC1 - add arginfo to all
+ functions - clean TSRMLS-* macros usage
+
+---
+ xdiff.c | 239 ++++++++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 153 insertions(+), 86 deletions(-)
+
+diff --git a/xdiff.c b/xdiff.c
+index 0756c5a..357db09 100644
+--- a/xdiff.c
++++ b/xdiff.c
+@@ -37,32 +37,101 @@ struct string_buffer {
+ unsigned long size;
+ };
+
+- ZEND_BEGIN_ARG_INFO(xdiff_arg_force_ref, 0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(1)
+- ZEND_END_ARG_INFO()
+-
+-static int load_mm_file(const char *filepath, mmfile_t *dest TSRMLS_DC);
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_diff, 0, 0, 2)
++ ZEND_ARG_INFO(0, str1)
++ ZEND_ARG_INFO(0, str2)
++ ZEND_ARG_INFO(0, context)
++ ZEND_ARG_INFO(0, minimal)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_diff, 0, 0, 3)
++ ZEND_ARG_INFO(0, file1)
++ ZEND_ARG_INFO(0, file2)
++ ZEND_ARG_INFO(0, dest)
++ ZEND_ARG_INFO(0, context)
++ ZEND_ARG_INFO(0, minimal)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_bdiff, 0, 0, 2)
++ ZEND_ARG_INFO(0, str1)
++ ZEND_ARG_INFO(0, str2)
++ZEND_END_ARG_INFO()
++
++#define arginfo_xdiff_string_rabdiff arginfo_xdiff_string_bdiff
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_bdiff, 0, 0, 3)
++ ZEND_ARG_INFO(0, file1)
++ ZEND_ARG_INFO(0, file2)
++ ZEND_ARG_INFO(0, dest)
++ZEND_END_ARG_INFO()
++
++#define arginfo_xdiff_file_rabdiff arginfo_xdiff_file_bdiff
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_bdiff_size, 0, 0, 1)
++ ZEND_ARG_INFO(0, filepath)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_bdiff_size, 0, 0, 1)
++ ZEND_ARG_INFO(0, patch)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_patch, 0, 0, 3)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_INFO(0, patch)
++ ZEND_ARG_INFO(0, dest)
++ ZEND_ARG_INFO(0, flags)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_patch, 0, 0, 2)
++ ZEND_ARG_INFO(0, src)
++ ZEND_ARG_INFO(0, patch)
++ ZEND_ARG_INFO(0, flags)
++ ZEND_ARG_INFO(1, error)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_bpatch, 0, 0, 3)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_INFO(0, patch)
++ ZEND_ARG_INFO(0, dest)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_bpatch, 0, 0, 2)
++ ZEND_ARG_INFO(0, src)
++ ZEND_ARG_INFO(0, patch)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_diff_file_merge3, 0, 0, 4)
++ ZEND_ARG_INFO(0, file1)
++ ZEND_ARG_INFO(0, file2)
++ ZEND_ARG_INFO(0, file3)
++ ZEND_ARG_INFO(0, dest)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_merge3, 0, 0, 3)
++ ZEND_ARG_INFO(0, str1)
++ ZEND_ARG_INFO(0, str2)
++ ZEND_ARG_INFO(0, str3)
++ ZEND_ARG_INFO(1, error)
++ZEND_END_ARG_INFO()
++
++static int load_mm_file(const char *filepath, mmfile_t *dest);
+ static int load_into_mm_file(const char *buffer, unsigned long size, mmfile_t *dest);
+ static int append_string(void *ptr, mmbuffer_t *buffer, int array_size);
+ static int append_stream(void *ptr, mmbuffer_t *buffer, int array_size);
+ static int init_string(struct string_buffer *string);
+ static void free_string(struct string_buffer *string);
+-static void invalidate_string(struct string_buffer *string);
+
+-static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal TSRMLS_DC);
++static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal);
+ static int make_diff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output, int context, int minimal);
+-static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC);
++static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output);
+ static int make_bdiff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output);
+-static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags TSRMLS_DC);
++static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags);
+ static int make_patch_str(char *file, int size1, char *patch, int size2, xdemitcb_t *output, xdemitcb_t *error, int flags);
+-static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output TSRMLS_DC);
++static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output);
+ static int make_bpatch_str(char *file, int size1, char *patch, int size2, xdemitcb_t *output);
+-static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error TSRMLS_DC);
++static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error);
+ static int make_merge3_str(char *content1, int size1, char *content2, int size2, char *content3, int size3, xdemitcb_t *output, xdemitcb_t *error);
+-static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC);
++static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output);
+ static int make_rabdiff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output);
+
+ static void *xdiff_malloc(void *foo, unsigned int size)
+@@ -89,25 +158,29 @@ static memallocator_t allocator = { NULL, xdiff_malloc, xdiff_free, xdiff_reallo
+ * Every user visible function must have an entry in xdiff_functions[].
+ */
+ zend_function_entry xdiff_functions[] = {
+- PHP_FE(xdiff_file_diff, NULL)
+- PHP_FE(xdiff_file_bdiff, NULL)
+- PHP_FE(xdiff_file_patch, NULL)
+- PHP_FE(xdiff_file_bpatch, NULL)
+- PHP_FE(xdiff_file_merge3, NULL)
+- PHP_FE(xdiff_file_rabdiff, NULL)
+- PHP_FE(xdiff_file_bdiff_size, NULL)
+- PHP_FE(xdiff_string_diff, NULL)
+- PHP_FE(xdiff_string_bdiff, NULL)
+- PHP_FE(xdiff_string_patch, xdiff_arg_force_ref)
+- PHP_FE(xdiff_string_bpatch, NULL)
+- PHP_FE(xdiff_string_merge3, xdiff_arg_force_ref)
+- PHP_FE(xdiff_string_rabdiff, NULL)
+- PHP_FE(xdiff_string_bdiff_size, NULL)
+- PHP_FALIAS(xdiff_file_diff_binary, xdiff_file_bdiff, NULL)
+- PHP_FALIAS(xdiff_file_patch_binary, xdiff_file_bpatch, NULL)
+- PHP_FALIAS(xdiff_string_diff_binary, xdiff_string_bdiff, NULL)
+- PHP_FALIAS(xdiff_string_patch_binary, xdiff_string_bpatch, NULL)
++ PHP_FE(xdiff_file_diff, arginfo_xdiff_file_diff)
++ PHP_FE(xdiff_file_bdiff, arginfo_xdiff_file_bdiff)
++ PHP_FE(xdiff_file_patch, arginfo_xdiff_file_patch)
++ PHP_FE(xdiff_file_bpatch, arginfo_xdiff_file_bpatch)
++ PHP_FE(xdiff_file_merge3, arginfo_diff_file_merge3)
++ PHP_FE(xdiff_file_rabdiff, arginfo_xdiff_file_rabdiff)
++ PHP_FE(xdiff_file_bdiff_size, arginfo_xdiff_file_bdiff_size)
++ PHP_FE(xdiff_string_diff, arginfo_xdiff_string_diff)
++ PHP_FE(xdiff_string_bdiff, arginfo_xdiff_string_bdiff)
++ PHP_FE(xdiff_string_patch, arginfo_xdiff_string_patch)
++ PHP_FE(xdiff_string_bpatch, arginfo_xdiff_string_bpatch)
++ PHP_FE(xdiff_string_merge3, arginfo_xdiff_string_merge3)
++ PHP_FE(xdiff_string_rabdiff, arginfo_xdiff_string_rabdiff)
++ PHP_FE(xdiff_string_bdiff_size, arginfo_xdiff_string_bdiff_size)
++ PHP_FALIAS(xdiff_file_diff_binary, xdiff_file_bdiff, arginfo_xdiff_file_bdiff)
++ PHP_FALIAS(xdiff_file_patch_binary, xdiff_file_bpatch, arginfo_xdiff_file_bpatch)
++ PHP_FALIAS(xdiff_string_diff_binary, xdiff_string_bdiff, arginfo_xdiff_string_bdiff)
++ PHP_FALIAS(xdiff_string_patch_binary, xdiff_string_bpatch, arginfo_xdiff_string_bpatch)
++#ifdef PHP_FE_END
++ PHP_FE_END
++#else
+ {NULL, NULL, NULL}
++#endif
+ };
+ /* }}} */
+
+@@ -172,7 +245,7 @@ PHP_FUNCTION(xdiff_string_diff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|lb", &str1, &str2, &context, &minimal) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS|lb", &str1, &str2, &context, &minimal) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -204,7 +277,7 @@ PHP_FUNCTION(xdiff_file_diff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS|lb", &filepath1, &filepath2, &dest, &context, &minimal) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS|lb", &filepath1, &filepath2, &dest, &context, &minimal) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -217,7 +290,7 @@ PHP_FUNCTION(xdiff_file_diff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_diff(filepath1->val, filepath2->val, &output, context, minimal TSRMLS_CC);
++ retval = make_diff(filepath1->val, filepath2->val, &output, context, minimal);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -230,7 +303,7 @@ PHP_FUNCTION(xdiff_file_diff)
+ }
+ /* }}} */
+
+-/* {{{ proto mixed xdiff_string_diff_binary(string str1, string str2)
++/* {{{ proto mixed xdiff_string_bdiff(string str1, string str2)
+ */
+ PHP_FUNCTION(xdiff_string_bdiff)
+ {
+@@ -239,7 +312,7 @@ PHP_FUNCTION(xdiff_string_bdiff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &str1, &str2) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &str1, &str2) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -261,7 +334,7 @@ PHP_FUNCTION(xdiff_string_bdiff)
+ }
+ /* }}} */
+
+-/* {{{ proto bool xdiff_file_diff_binary(string file1, string file2, string dest)
++/* {{{ proto bool xdiff_file_bdiff(string file1, string file2, string dest)
+ */
+ PHP_FUNCTION(xdiff_file_bdiff)
+ {
+@@ -270,7 +343,7 @@ PHP_FUNCTION(xdiff_file_bdiff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &filepath1, &filepath2, &result) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &filepath1, &filepath2, &result) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -283,7 +356,7 @@ PHP_FUNCTION(xdiff_file_bdiff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_bdiff(filepath1->val, filepath2->val, &output TSRMLS_CC);
++ retval = make_bdiff(filepath1->val, filepath2->val, &output);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -305,7 +378,7 @@ PHP_FUNCTION(xdiff_string_rabdiff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &str1, &str2) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &str1, &str2) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -336,7 +409,7 @@ PHP_FUNCTION(xdiff_file_rabdiff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &filepath1, &filepath2, &result) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &filepath1, &filepath2, &result) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -349,7 +422,7 @@ PHP_FUNCTION(xdiff_file_rabdiff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_rabdiff(filepath1->val, filepath2->val, &output TSRMLS_CC);
++ retval = make_rabdiff(filepath1->val, filepath2->val, &output);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -362,7 +435,7 @@ PHP_FUNCTION(xdiff_file_rabdiff)
+ }
+ /* }}} */
+
+-/* {{{ proto bool xdiff_file_bdiff_size(string file1, string file2, string dest)
++/* {{{ proto bool xdiff_file_bdiff_size(string filepath)
+ */
+ PHP_FUNCTION(xdiff_file_bdiff_size)
+ {
+@@ -371,13 +444,13 @@ PHP_FUNCTION(xdiff_file_bdiff_size)
+ long result;
+ mmfile_t file;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &filepath) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &filepath) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ RETVAL_FALSE;
+
+- retval = load_mm_file(filepath->val, &file TSRMLS_CC);
++ retval = load_mm_file(filepath->val, &file);
+ if (!retval)
+ goto out;
+
+@@ -394,7 +467,7 @@ PHP_FUNCTION(xdiff_file_bdiff_size)
+ }
+ /* }}} */
+
+-/* {{{ proto bool xdiff_string_bdiff_size(string file1, string file2, string dest)
++/* {{{ proto bool xdiff_string_bdiff_size(string patch)
+ */
+ PHP_FUNCTION(xdiff_string_bdiff_size)
+ {
+@@ -403,7 +476,7 @@ PHP_FUNCTION(xdiff_string_bdiff_size)
+ long result;
+ mmfile_t file;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &patch) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &patch) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -437,7 +510,7 @@ PHP_FUNCTION(xdiff_file_patch)
+ xdemitcb_t output, error_output;
+ struct string_buffer error_string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS|l", &src_path, &patch_path, &dest_path, &flags) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS|l", &src_path, &patch_path, &dest_path, &flags) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -457,7 +530,7 @@ PHP_FUNCTION(xdiff_file_patch)
+ error_output.priv= &error_string;
+ error_output.outf = append_string;
+
+- retval = make_patch(src_path->val, patch_path->val, &output, &error_output, flags TSRMLS_CC);
++ retval = make_patch(src_path->val, patch_path->val, &output, &error_output, flags);
+ if (retval < 0)
+ goto out_free_string;
+
+@@ -487,7 +560,7 @@ PHP_FUNCTION(xdiff_string_patch)
+ xdemitcb_t output, error_output;
+ struct string_buffer output_string, error_string;
+
+- if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS() TSRMLS_CC, "SS|lz", &src, &patch, &flags, &error_ref) == FAILURE) {
++ if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS(), "SS|lz", &src, &patch, &flags, &error_ref) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -530,7 +603,7 @@ PHP_FUNCTION(xdiff_string_patch)
+ }
+ /* }}} */
+
+-/* {{{ proto bool xdiff_file_patch_binary(string file, string patch, string dest)
++/* {{{ proto bool xdiff_file_bpatch(string file, string patch, string dest)
+ */
+ PHP_FUNCTION(xdiff_file_bpatch)
+ {
+@@ -539,7 +612,7 @@ PHP_FUNCTION(xdiff_file_bpatch)
+ int retval;
+ xdemitcb_t output;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &src_path, &patch_path, &dest_path) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &src_path, &patch_path, &dest_path) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -552,7 +625,7 @@ PHP_FUNCTION(xdiff_file_bpatch)
+ output.outf = append_stream;
+ output.priv = output_stream;
+
+- retval = make_bpatch(src_path->val, patch_path->val, &output TSRMLS_CC);
++ retval = make_bpatch(src_path->val, patch_path->val, &output);
+ php_stream_close(output_stream);
+
+ if (retval == 0)
+@@ -563,7 +636,7 @@ PHP_FUNCTION(xdiff_file_bpatch)
+ }
+ /* }}} */
+
+-/* {{{ proto string xdiff_string_patch_binary(string str, string patch)
++/* {{{ proto string xdiff_string_bpatch(string str, string patch)
+ */
+ PHP_FUNCTION(xdiff_string_bpatch)
+ {
+@@ -572,7 +645,7 @@ PHP_FUNCTION(xdiff_string_bpatch)
+ xdemitcb_t output;
+ struct string_buffer output_string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &src, &patch) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &src, &patch) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -608,7 +681,7 @@ PHP_FUNCTION(xdiff_file_merge3)
+ xdemitcb_t output, error_output;
+ int retval;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSSS", &file1, &file2, &file3, &dest) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSSS", &file1, &file2, &file3, &dest) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -628,7 +701,7 @@ PHP_FUNCTION(xdiff_file_merge3)
+ error_output.priv = &string;
+ error_output.outf = append_string;
+
+- retval = make_merge3(file1->val, file2->val, file3->val, &output, &error_output TSRMLS_CC);
++ retval = make_merge3(file1->val, file2->val, file3->val, &output, &error_output);
+ if (!retval)
+ goto out_free_string;
+
+@@ -657,7 +730,7 @@ PHP_FUNCTION(xdiff_string_merge3)
+ xdemitcb_t output, error_output;
+ int retval;
+
+- if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS() TSRMLS_CC, "SSS|z", &file1, &file2, &file3, &error_ref) == FAILURE) {
++ if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS(), "SSS|z", &file1, &file2, &file3, &error_ref) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -700,7 +773,7 @@ PHP_FUNCTION(xdiff_string_merge3)
+ }
+ /* }}} */
+
+-static int load_mm_file(const char *filepath, mmfile_t *dest TSRMLS_DC)
++static int load_mm_file(const char *filepath, mmfile_t *dest)
+ {
+ int retval;
+ off_t filesize;
+@@ -789,7 +862,6 @@ static int append_stream(void *ptr, mmbuffer_t *buffer, int array_size)
+ {
+ php_stream *stream = ptr;
+ unsigned int i;
+- TSRMLS_FETCH();
+
+ for (i = 0; i < array_size; i++) {
+ php_stream_write(stream, buffer[i].ptr, buffer[i].size);
+@@ -810,29 +882,24 @@ static int init_string(struct string_buffer *string)
+ return 1;
+ }
+
+-static void invalidate_string(struct string_buffer *string)
+-{
+- string->ptr = NULL;
+-}
+-
+ static void free_string(struct string_buffer *string)
+ {
+ if (string->ptr)
+ efree(string->ptr);
+ }
+
+-static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal TSRMLS_DC)
++static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal)
+ {
+ mmfile_t file1, file2;
+ xpparam_t params;
+ xdemitconf_t conf;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -885,17 +952,17 @@ static int make_diff_str(char *str1, int size1, char *str2, int size2, xdemitcb_
+ return result;
+ }
+
+-static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC)
++static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output)
+ {
+ mmfile_t file1, file2;
+ bdiffparam_t params;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -945,16 +1012,16 @@ static int make_bdiff_str(char *str1, int size1, char *str2, int size2, xdemitcb
+ return result;
+ }
+
+-static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC)
++static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output)
+ {
+ mmfile_t file1, file2;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -999,16 +1066,16 @@ static int make_rabdiff_str(char *str1, int size1, char *str2, int size2, xdemit
+ return result;
+ }
+
+-static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags TSRMLS_DC)
++static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags)
+ {
+ mmfile_t file, patch;
+ int retval, result = 0;
+
+- retval = load_mm_file(file_path, &file TSRMLS_CC);
++ retval = load_mm_file(file_path, &file);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(patch_path, &patch TSRMLS_CC);
++ retval = load_mm_file(patch_path, &patch);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -1053,16 +1120,16 @@ static int make_patch_str(char *file, int size1, char *patch, int size2, xdemitc
+ return result;
+ }
+
+-static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output TSRMLS_DC)
++static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output)
+ {
+ mmfile_t file_mm, patch_mm;
+ int retval, result = 0;
+
+- retval = load_mm_file(file_path, &file_mm TSRMLS_CC);
++ retval = load_mm_file(file_path, &file_mm);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(patch_path, &patch_mm TSRMLS_CC);
++ retval = load_mm_file(patch_path, &patch_mm);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -1107,20 +1174,20 @@ static int make_bpatch_str(char *file, int size1, char *patch, int size2, xdemit
+ return result;
+ }
+
+-static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error TSRMLS_DC)
++static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error)
+ {
+ mmfile_t file1, file2, file3;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+- retval = load_mm_file(filepath3, &file3 TSRMLS_CC);
++ retval = load_mm_file(filepath3, &file3);
+ if (!retval)
+ goto out_free_mmfile2;
+
diff --git a/php-pecl-xdiff.spec b/php-pecl-xdiff.spec
index 2d9742e..92e9d3d 100644
--- a/php-pecl-xdiff.spec
+++ b/php-pecl-xdiff.spec
@@ -1,6 +1,6 @@
# remirepo spec file for php-pecl-xdiff
#
-# Copyright (c) 2016-2019 Remi Collet
+# Copyright (c) 2016-2020 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
@@ -22,16 +22,18 @@
%global libxdiff_version 0.23
Name: %{?sub_prefix}php-pecl-%{pecl_name}
Version: 2.0.1
-Release: 7%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 8%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
Summary: File differences/patches
# libxdiff is LGPLv2+, xdiff extension is PHP
License: PHP and LGPLv2+
-URL: http://pecl.php.net/package/%{pecl_name}
-Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+URL: https://pecl.php.net/package/%{pecl_name}
+Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
# bundles the lib, as libxdiff from spot is not compatible
Source1: http://www.xmailserver.org/libxdiff-%{libxdiff_version}.tar.gz
Source2: config.m4
+Patch0: https://patch-diff.githubusercontent.com/raw/php/pecl-text-xdiff/pull/5.patch
+
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?scl_prefix}php-devel >= 7
BuildRequires: %{?scl_prefix}php-pear
@@ -50,23 +52,16 @@ Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{rele
Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release}
%endif
-%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
+%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
# Other third party repo stuff
-%if "%{php_version}" > "7.1"
-Obsoletes: php71u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php71w-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.2"
-Obsoletes: php72u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php72w-pecl-%{pecl_name} <= %{version}
-%endif
%if "%{php_version}" > "7.3"
Obsoletes: php73-pecl-%{pecl_name} <= %{version}
-Obsoletes: php73w-pecl-%{pecl_name} <= %{version}
%endif
%if "%{php_version}" > "7.4"
Obsoletes: php74-pecl-%{pecl_name} <= %{version}
-Obsoletes: php74w-pecl-%{pecl_name} <= %{version}
+%endif
+%if "%{php_version}" > "8.0"
+Obsoletes: php80-pecl-%{pecl_name} <= %{version}
%endif
%endif
@@ -100,12 +95,16 @@ sed -e 's/role="test"/role="src"/' \
%{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \
-i package.xml
+cd NTS
+%patch0 -p1 -b .pr
+
# Sanity check, really often broken
-extver=$(sed -n '/#define PHP_XDIFF_VERSION/{s/.* "//;s/".*$//;p}' NTS/php_xdiff.h)
+extver=$(sed -n '/#define PHP_XDIFF_VERSION/{s/.* "//;s/".*$//;p}' php_xdiff.h)
if test "x${extver}" != "x%{version}"; then
: Error: Upstream extension version is ${extver}, expecting %{version}.
exit 1
fi
+cd ..
cat >%{ini_name} << 'EOF'
; Enable %{pecl_name} extension module
@@ -183,7 +182,7 @@ fi
: Minimal load test for NTS extension
%{__php} -n \
-d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
- --modules | grep %{pecl_name}
+ --modules | grep '^%{pecl_name}$'
: Upstream test suite for NTS extension
cd NTS
@@ -197,7 +196,7 @@ REPORT_EXIT_STATUS=1 \
: Minimal load test for ZTS extension
%{__ztsphp} -n \
-d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \
- --modules | grep %{pecl_name}
+ --modules | grep '^%{pecl_name}$'
: Upstream test suite for ZTS extension
cd ../NTS
@@ -226,6 +225,10 @@ REPORT_EXIT_STATUS=1 \
%changelog
+* Wed Sep 30 2020 Remi Collet <remi@remirepo.net> - 2.0.1-8
+- add patch for PHP 8 from
+ https://github.com/php/pecl-text-xdiff/pull/5
+
* Tue Sep 03 2019 Remi Collet <remi@remirepo.net> - 2.0.1-7
- rebuild for 7.4.0RC1