Skip to content

Commit b3ba3f0

Browse files
committed
Remove deprecated iconv INI settings
1 parent 65934d3 commit b3ba3f0

10 files changed

+87
-266
lines changed

ext/iconv/iconv.c

Lines changed: 26 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "ext/standard/info.h"
2626
#include "main/php_output.h"
2727
#include "SAPI.h"
28-
#include "php_ini.h"
2928

3029
#include <stdlib.h>
3130
#include <errno.h>
@@ -56,9 +55,6 @@
5655
#define _php_iconv_memequal(a, b, c) \
5756
(memcmp(a, b, c) == 0)
5857

59-
ZEND_DECLARE_MODULE_GLOBALS(iconv)
60-
static PHP_GINIT_FUNCTION(iconv);
61-
6258
/* {{{ iconv_module_entry
6359
*/
6460
zend_module_entry iconv_module_entry = {
@@ -71,11 +67,7 @@ zend_module_entry iconv_module_entry = {
7167
NULL,
7268
PHP_MINFO(miconv),
7369
PHP_ICONV_VERSION,
74-
PHP_MODULE_GLOBALS(iconv),
75-
PHP_GINIT(iconv),
76-
NULL,
77-
NULL,
78-
STANDARD_MODULE_PROPERTIES_EX
70+
STANDARD_MODULE_PROPERTIES,
7971
};
8072
/* }}} */
8173

@@ -86,18 +78,6 @@ ZEND_TSRMLS_CACHE_DEFINE()
8678
ZEND_GET_MODULE(iconv)
8779
#endif
8880

89-
/* {{{ PHP_GINIT_FUNCTION */
90-
static PHP_GINIT_FUNCTION(iconv)
91-
{
92-
#if defined(COMPILE_DL_ICONV) && defined(ZTS)
93-
ZEND_TSRMLS_CACHE_UPDATE();
94-
#endif
95-
iconv_globals->input_encoding = NULL;
96-
iconv_globals->output_encoding = NULL;
97-
iconv_globals->internal_encoding = NULL;
98-
}
99-
/* }}} */
100-
10181
#if defined(HAVE_LIBICONV) && defined(ICONV_ALIASED_LIBICONV)
10282
#define iconv libiconv
10383
#endif
@@ -142,62 +122,11 @@ static const char _generic_superset_name[] = ICONV_UCS4_ENCODING;
142122
#define GENERIC_SUPERSET_NBYTES 4
143123
/* }}} */
144124

145-
146-
static PHP_INI_MH(OnUpdateInputEncoding)
147-
{
148-
if (ZSTR_LEN(new_value) >= ICONV_CSNMAXLEN) {
149-
return FAILURE;
150-
}
151-
if (stage & (PHP_INI_STAGE_ACTIVATE | PHP_INI_STAGE_RUNTIME)) {
152-
php_error_docref("ref.iconv", E_DEPRECATED, "Use of iconv.input_encoding is deprecated");
153-
}
154-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
155-
return SUCCESS;
156-
}
157-
158-
159-
static PHP_INI_MH(OnUpdateOutputEncoding)
160-
{
161-
if (ZSTR_LEN(new_value) >= ICONV_CSNMAXLEN) {
162-
return FAILURE;
163-
}
164-
if (stage & (PHP_INI_STAGE_ACTIVATE | PHP_INI_STAGE_RUNTIME)) {
165-
php_error_docref("ref.iconv", E_DEPRECATED, "Use of iconv.output_encoding is deprecated");
166-
}
167-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
168-
return SUCCESS;
169-
}
170-
171-
172-
static PHP_INI_MH(OnUpdateInternalEncoding)
173-
{
174-
if (ZSTR_LEN(new_value) >= ICONV_CSNMAXLEN) {
175-
return FAILURE;
176-
}
177-
if (stage & (PHP_INI_STAGE_ACTIVATE | PHP_INI_STAGE_RUNTIME)) {
178-
php_error_docref("ref.iconv", E_DEPRECATED, "Use of iconv.internal_encoding is deprecated");
179-
}
180-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
181-
return SUCCESS;
182-
}
183-
184-
185-
/* {{{ PHP_INI
186-
*/
187-
PHP_INI_BEGIN()
188-
STD_PHP_INI_ENTRY("iconv.input_encoding", "", PHP_INI_ALL, OnUpdateInputEncoding, input_encoding, zend_iconv_globals, iconv_globals)
189-
STD_PHP_INI_ENTRY("iconv.output_encoding", "", PHP_INI_ALL, OnUpdateOutputEncoding, output_encoding, zend_iconv_globals, iconv_globals)
190-
STD_PHP_INI_ENTRY("iconv.internal_encoding", "", PHP_INI_ALL, OnUpdateInternalEncoding, internal_encoding, zend_iconv_globals, iconv_globals)
191-
PHP_INI_END()
192-
/* }}} */
193-
194125
/* {{{ PHP_MINIT_FUNCTION */
195126
PHP_MINIT_FUNCTION(miconv)
196127
{
197128
char *version = "unknown";
198129

199-
REGISTER_INI_ENTRIES();
200-
201130
#if HAVE_LIBICONV
202131
{
203132
static char buf[16];
@@ -236,7 +165,6 @@ PHP_MINIT_FUNCTION(miconv)
236165
PHP_MSHUTDOWN_FUNCTION(miconv)
237166
{
238167
php_iconv_stream_filter_unregister_factory();
239-
UNREGISTER_INI_ENTRIES();
240168
return SUCCESS;
241169
}
242170
/* }}} */
@@ -254,33 +182,9 @@ PHP_MINFO_FUNCTION(miconv)
254182
php_info_print_table_row(2, "iconv implementation", Z_STRVAL_P(iconv_impl));
255183
php_info_print_table_row(2, "iconv library version", Z_STRVAL_P(iconv_ver));
256184
php_info_print_table_end();
257-
258-
DISPLAY_INI_ENTRIES();
259185
}
260186
/* }}} */
261187

262-
static const char *get_internal_encoding(void) {
263-
if (ICONVG(internal_encoding) && ICONVG(internal_encoding)[0]) {
264-
return ICONVG(internal_encoding);
265-
}
266-
return php_get_internal_encoding();
267-
}
268-
269-
static const char *get_input_encoding(void) {
270-
if (ICONVG(input_encoding) && ICONVG(input_encoding)[0]) {
271-
return ICONVG(input_encoding);
272-
}
273-
return php_get_input_encoding();
274-
}
275-
276-
static const char *get_output_encoding(void) {
277-
if (ICONVG(output_encoding) && ICONVG(output_encoding)[0]) {
278-
return ICONVG(output_encoding);
279-
}
280-
return php_get_output_encoding();
281-
}
282-
283-
284188
static int php_iconv_output_conflict(const char *handler_name, size_t handler_name_len)
285189
{
286190
if (php_output_get_level()) {
@@ -321,12 +225,16 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
321225

322226
if (mimetype != NULL && !(output_context->op & PHP_OUTPUT_HANDLER_CLEAN)) {
323227
size_t len;
324-
char *p = strstr(get_output_encoding(), "//");
228+
char *p = strstr(php_get_output_encoding(), "//");
325229

326230
if (p) {
327-
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, (int) (p - get_output_encoding()), get_output_encoding());
231+
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s",
232+
mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype,
233+
(int) (p - php_get_output_encoding()), php_get_output_encoding());
328234
} else {
329-
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, get_output_encoding());
235+
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%s",
236+
mimetype_len ? mimetype_len : (int) strlen(mimetype),
237+
mimetype, php_get_output_encoding());
330238
}
331239
if (content_type && SUCCESS == sapi_add_header(content_type, len, 0)) {
332240
SG(sapi_headers).send_default_content_type = 0;
@@ -338,7 +246,9 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
338246
if (output_context->in.used) {
339247
zend_string *out;
340248
output_context->out.free = 1;
341-
_php_iconv_show_error(php_iconv_string(output_context->in.data, output_context->in.used, &out, get_output_encoding(), get_internal_encoding()), get_output_encoding(), get_internal_encoding());
249+
_php_iconv_show_error(php_iconv_string(output_context->in.data, output_context->in.used, &out,
250+
php_get_output_encoding(), php_get_internal_encoding()), php_get_output_encoding(),
251+
php_get_internal_encoding());
342252
if (out) {
343253
output_context->out.data = estrndup(ZSTR_VAL(out), ZSTR_LEN(out));
344254
output_context->out.used = ZSTR_LEN(out);
@@ -1826,7 +1736,7 @@ static void _php_iconv_show_error(php_iconv_err_t err, const char *out_charset,
18261736
Returns the character count of str */
18271737
PHP_FUNCTION(iconv_strlen)
18281738
{
1829-
const char *charset = get_internal_encoding();
1739+
const char *charset = php_get_internal_encoding();
18301740
size_t charset_len = 0;
18311741
zend_string *str;
18321742

@@ -1858,7 +1768,7 @@ PHP_FUNCTION(iconv_strlen)
18581768
Returns specified part of a string */
18591769
PHP_FUNCTION(iconv_substr)
18601770
{
1861-
const char *charset = get_internal_encoding();
1771+
const char *charset = php_get_internal_encoding();
18621772
size_t charset_len = 0;
18631773
zend_string *str;
18641774
zend_long offset, length = 0;
@@ -1898,7 +1808,7 @@ PHP_FUNCTION(iconv_substr)
18981808
Finds position of first occurrence of needle within part of haystack beginning with offset */
18991809
PHP_FUNCTION(iconv_strpos)
19001810
{
1901-
const char *charset = get_internal_encoding();
1811+
const char *charset = php_get_internal_encoding();
19021812
size_t charset_len = 0, haystk_len;
19031813
zend_string *haystk;
19041814
zend_string *ndl;
@@ -1953,7 +1863,7 @@ PHP_FUNCTION(iconv_strpos)
19531863
Finds position of last occurrence of needle within part of haystack beginning with offset */
19541864
PHP_FUNCTION(iconv_strrpos)
19551865
{
1956-
const char *charset = get_internal_encoding();
1866+
const char *charset = php_get_internal_encoding();
19571867
size_t charset_len = 0;
19581868
zend_string *haystk;
19591869
zend_string *ndl;
@@ -2000,7 +1910,7 @@ PHP_FUNCTION(iconv_mime_encode)
20001910
smart_str retval = {0};
20011911
php_iconv_err_t err;
20021912

2003-
const char *in_charset = get_internal_encoding();
1913+
const char *in_charset = php_get_internal_encoding();
20041914
const char *out_charset = in_charset;
20051915
zend_long line_len = 76;
20061916
const char *lfchars = "\r\n";
@@ -2097,7 +2007,7 @@ PHP_FUNCTION(iconv_mime_encode)
20972007
PHP_FUNCTION(iconv_mime_decode)
20982008
{
20992009
zend_string *encoded_str;
2100-
const char *charset = get_internal_encoding();
2010+
const char *charset = php_get_internal_encoding();
21012011
size_t charset_len = 0;
21022012
zend_long mode = 0;
21032013

@@ -2137,7 +2047,7 @@ PHP_FUNCTION(iconv_mime_decode)
21372047
PHP_FUNCTION(iconv_mime_decode_headers)
21382048
{
21392049
zend_string *encoded_str;
2140-
const char *charset = get_internal_encoding();
2050+
const char *charset = php_get_internal_encoding();
21412051
size_t charset_len = 0;
21422052
zend_long mode = 0;
21432053
char *enc_str_tmp;
@@ -2269,8 +2179,7 @@ PHP_FUNCTION(iconv_set_encoding)
22692179
{
22702180
char *type;
22712181
zend_string *charset;
2272-
size_t type_len, retval;
2273-
zend_string *name;
2182+
size_t type_len;
22742183

22752184
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sS", &type, &type_len, &charset) == FAILURE) {
22762185
RETURN_THROWS();
@@ -2281,24 +2190,7 @@ PHP_FUNCTION(iconv_set_encoding)
22812190
RETURN_FALSE;
22822191
}
22832192

2284-
if(!strcasecmp("input_encoding", type)) {
2285-
name = zend_string_init("iconv.input_encoding", sizeof("iconv.input_encoding") - 1, 0);
2286-
} else if(!strcasecmp("output_encoding", type)) {
2287-
name = zend_string_init("iconv.output_encoding", sizeof("iconv.output_encoding") - 1, 0);
2288-
} else if(!strcasecmp("internal_encoding", type)) {
2289-
name = zend_string_init("iconv.internal_encoding", sizeof("iconv.internal_encoding") - 1, 0);
2290-
} else {
2291-
RETURN_FALSE;
2292-
}
2293-
2294-
retval = zend_alter_ini_entry(name, charset, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
2295-
zend_string_release_ex(name, 0);
2296-
2297-
if (retval == SUCCESS) {
2298-
RETURN_TRUE;
2299-
} else {
2300-
RETURN_FALSE;
2301-
}
2193+
RETURN_FALSE;
23022194
}
23032195
/* }}} */
23042196

@@ -2315,15 +2207,15 @@ PHP_FUNCTION(iconv_get_encoding)
23152207

23162208
if (!strcasecmp("all", type)) {
23172209
array_init(return_value);
2318-
add_assoc_string(return_value, "input_encoding", get_input_encoding());
2319-
add_assoc_string(return_value, "output_encoding", get_output_encoding());
2320-
add_assoc_string(return_value, "internal_encoding", get_internal_encoding());
2210+
add_assoc_string(return_value, "input_encoding", php_get_input_encoding());
2211+
add_assoc_string(return_value, "output_encoding", php_get_output_encoding());
2212+
add_assoc_string(return_value, "internal_encoding", php_get_internal_encoding());
23212213
} else if (!strcasecmp("input_encoding", type)) {
2322-
RETVAL_STRING(get_input_encoding());
2214+
RETVAL_STRING(php_get_input_encoding());
23232215
} else if (!strcasecmp("output_encoding", type)) {
2324-
RETVAL_STRING(get_output_encoding());
2216+
RETVAL_STRING(php_get_output_encoding());
23252217
} else if (!strcasecmp("internal_encoding", type)) {
2326-
RETVAL_STRING(get_internal_encoding());
2218+
RETVAL_STRING(php_get_internal_encoding());
23272219
} else {
23282220
RETURN_FALSE;
23292221
}

ext/iconv/iconv.stub.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ function iconv_mime_decode_headers(string $headers, int $mode = 0, string $chars
1818

1919
function iconv(string $in_charset, string $out_charset, string $str): string|false {}
2020

21+
/** @deprecated */
2122
function iconv_set_encoding(string $type, string $charset): bool {}
2223

24+
/** TODO Should be deprecated? */
2325
function iconv_get_encoding(string $type = 'all'): array|string|false {}

ext/iconv/iconv_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ static const zend_function_entry ext_functions[] = {
8080
ZEND_FE(iconv_mime_decode, arginfo_iconv_mime_decode)
8181
ZEND_FE(iconv_mime_decode_headers, arginfo_iconv_mime_decode_headers)
8282
ZEND_FE(iconv, arginfo_iconv)
83-
ZEND_FE(iconv_set_encoding, arginfo_iconv_set_encoding)
83+
ZEND_DEP_FE(iconv_set_encoding, arginfo_iconv_set_encoding)
8484
ZEND_FE(iconv_get_encoding, arginfo_iconv_get_encoding)
8585
ZEND_FE_END
8686
};

ext/iconv/php_iconv.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,6 @@ PHP_FUNCTION(iconv_mime_encode);
6565
PHP_FUNCTION(iconv_mime_decode);
6666
PHP_FUNCTION(iconv_mime_decode_headers);
6767

68-
ZEND_BEGIN_MODULE_GLOBALS(iconv)
69-
char *input_encoding;
70-
char *internal_encoding;
71-
char *output_encoding;
72-
ZEND_END_MODULE_GLOBALS(iconv)
73-
74-
#define ICONVG(v) ZEND_MODULE_GLOBALS_ACCESSOR(iconv, v)
75-
76-
#if defined(ZTS) && defined(COMPILE_DL_ICONV)
77-
ZEND_TSRMLS_CACHE_EXTERN()
78-
#endif
79-
8068
#ifdef HAVE_IBM_ICONV
8169
# define ICONV_ASCII_ENCODING "IBM-850"
8270
# define ICONV_UCS4_ENCODING "UCS-4"

0 commit comments

Comments
 (0)