summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2023-06-06 12:20:50 +0200
committerRemi Collet <remi@php.net>2023-06-06 12:20:50 +0200
commitc7966277d9caa9c893bf872258b0db5c84a46726 (patch)
treebad270b8301064e3b54b7ad5fbe6356984214e52
parente8bab270c618f4cb7f12c6eb4d6a1937348bd473 (diff)
add upstream patches for PHP 8.3
-rw-r--r--mailparse-php83.patch106
-rw-r--r--php-pecl-mailparse.spec13
2 files changed, 116 insertions, 3 deletions
diff --git a/mailparse-php83.patch b/mailparse-php83.patch
new file mode 100644
index 0000000..06c8443
--- /dev/null
+++ b/mailparse-php83.patch
@@ -0,0 +1,106 @@
+From a0d99d637281753f62a28842aad716352dc0e5a3 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Tue, 30 May 2023 15:22:05 +0200
+Subject: [PATCH] drop usage of removed mbfl APIs in PHP 8.3
+
+---
+ mailparse.c | 19 ++++++++++---------
+ package.xml | 2 +-
+ php_mailparse_mime.c | 7 +++++--
+ 3 files changed, 16 insertions(+), 12 deletions(-)
+
+diff --git a/mailparse.c b/mailparse.c
+index dde0f18..315bfee 100644
+--- a/mailparse.c
++++ b/mailparse.c
+@@ -942,17 +942,15 @@ PHP_FUNCTION(mailparse_determine_best_xfer_encoding)
+ else if (++linelen > 200)
+ longline = 1;
+ }
+- if (longline)
++ if (longline) {
+ bestenc = mbfl_no_encoding_qprint;
++ }
+ php_stream_rewind(stream);
+
+- name = (char *)mbfl_no2preferred_mime_name(bestenc);
+- if (name)
+- {
++ name = mbfl_encoding_preferred_mime_name(mbfl_no2encoding(bestenc));
++ if (name) {
+ RETVAL_STRING(name);
+- }
+- else
+- {
++ } else {
+ RETVAL_FALSE;
+ }
+ }
+@@ -980,6 +978,7 @@ PHP_FUNCTION(mailparse_stream_encode)
+ char *buf;
+ size_t len;
+ size_t bufsize = 2048;
++ const mbfl_encoding *encoding;
+ enum mbfl_no_encoding enc;
+ mbfl_convert_filter *conv = NULL;
+
+@@ -997,8 +996,10 @@ PHP_FUNCTION(mailparse_stream_encode)
+ php_stream_from_zval(srcstream, srcfile);
+ php_stream_from_zval(deststream, destfile);
+
+- enc = mbfl_name2no_encoding(ZSTR_VAL(encod));
+- if (enc == mbfl_no_encoding_invalid) {
++ encoding = mbfl_name2encoding(ZSTR_VAL(encod));
++ if (encoding) {
++ enc = encoding->no_encoding;
++ } else {
+ zend_error(E_WARNING, "%s(): unknown encoding \"%s\"",
+ get_active_function_name(),
+ ZSTR_VAL(encod)
+diff --git a/php_mailparse_mime.c b/php_mailparse_mime.c
+index fdf5862..49934f1 100644
+--- a/php_mailparse_mime.c
++++ b/php_mailparse_mime.c
+@@ -913,11 +913,14 @@ static int filter_into_work_buffer(int c, void *dat)
+
+ PHP_MAILPARSE_API void php_mimepart_decoder_prepare(php_mimepart *part, int do_decode, php_mimepart_extract_func_t decoder, void *ptr)
+ {
++ const mbfl_encoding *encoding;
+ enum mbfl_no_encoding from = mbfl_no_encoding_8bit;
+
+ if (do_decode && part->content_transfer_encoding) {
+- from = mbfl_name2no_encoding(part->content_transfer_encoding);
+- if (from == mbfl_no_encoding_invalid) {
++ encoding = mbfl_name2encoding(part->content_transfer_encoding);
++ if (encoding) {
++ from = encoding->no_encoding;
++ } else {
+ if (strcasecmp("binary", part->content_transfer_encoding) != 0) {
+ zend_error(E_WARNING, "%s(): mbstring doesn't know how to decode %s transfer encoding!",
+ get_active_function_name(),
+From 59e040beacaa93626343bd440c4172bbc4aaef03 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Tue, 30 May 2023 15:39:31 +0200
+Subject: [PATCH] fix regression for PHP < 8.1
+
+---
+ mailparse.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/mailparse.c b/mailparse.c
+index 315bfee..0f177ce 100644
+--- a/mailparse.c
++++ b/mailparse.c
+@@ -947,7 +947,11 @@ PHP_FUNCTION(mailparse_determine_best_xfer_encoding)
+ }
+ php_stream_rewind(stream);
+
+- name = mbfl_encoding_preferred_mime_name(mbfl_no2encoding(bestenc));
++#if PHP_VERSION_ID < 80100
++ name = (char *)mbfl_no2preferred_mime_name(bestenc);
++#else
++ name = (char *)mbfl_encoding_preferred_mime_name(mbfl_no2encoding(bestenc));
++#endif
+ if (name) {
+ RETVAL_STRING(name);
+ } else {
diff --git a/php-pecl-mailparse.spec b/php-pecl-mailparse.spec
index 9cb3b1b..ad6d566 100644
--- a/php-pecl-mailparse.spec
+++ b/php-pecl-mailparse.spec
@@ -3,7 +3,7 @@
#
# Fedora spec file for php-pecl-mailparse
#
-# Copyright (c) 2008-2022 Remi Collet
+# Copyright (c) 2008-2023 Remi Collet
# Copyright (c) 2004-2007 Matthias Saou
#
# License: MIT
@@ -26,11 +26,13 @@
Summary: PHP PECL package for parsing and working with email messages
Name: %{?scl_prefix}php-pecl-mailparse
Version: 3.1.4
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
-License: PHP
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+License: PHP-3.01
URL: https://pecl.php.net/package/mailparse
Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+Patch0: %{pecl_name}-php83.patch
+
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?scl_prefix}php-devel >= 7.3
@@ -71,6 +73,8 @@ sed -e 's/role="test"/role="src"/' \
-i package.xml
cd NTS
+%patch -P0 -p1 -b.php83
+
extver=$(sed -n '/#define PHP_MAILPARSE_VERSION/{s/.* "//;s/".*$//;p}' php_mailparse.h)
if test "x${extver}" != "x%{version}"; then
: Error: Upstream version is ${extver}, expecting %{version}.
@@ -200,6 +204,9 @@ fi
%changelog
+* Tue Jun 6 2023 Remi Collet <remi@remirepo.net> - 3.1.4-2
+- add upstream patches for PHP 8.3
+
* Thu Sep 15 2022 Remi Collet <remi@remirepo.net> - 3.1.4-1
- update to 3.1.4