@@ -832,120 +832,6 @@ static PHP_INI_MH(OnUpdate_mbstring_detect_order)
832
832
}
833
833
/* }}} */
834
834
835
- static int _php_mb_ini_mbstring_http_input_set (const char * new_value , size_t new_value_length ) {
836
- const mbfl_encoding * * list ;
837
- size_t size ;
838
- if (FAILURE == php_mb_parse_encoding_list (new_value , new_value_length , & list , & size , /* persistent */ 1 , /* arg_num */ 0 , /* allow_pass_encoding */ 1 ) || size == 0 ) {
839
- return FAILURE ;
840
- }
841
- if (MBSTRG (http_input_list )) {
842
- pefree (ZEND_VOIDP (MBSTRG (http_input_list )), 1 );
843
- }
844
- MBSTRG (http_input_list ) = list ;
845
- MBSTRG (http_input_list_size ) = size ;
846
- return SUCCESS ;
847
- }
848
-
849
- /* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_input) */
850
- static PHP_INI_MH (OnUpdate_mbstring_http_input )
851
- {
852
- if (new_value ) {
853
- php_error_docref ("ref.mbstring" , E_DEPRECATED , "Use of mbstring.http_input is deprecated" );
854
- }
855
-
856
- if (!new_value || !ZSTR_VAL (new_value )) {
857
- const char * encoding = php_get_input_encoding ();
858
- MBSTRG (http_input_set ) = 0 ;
859
- _php_mb_ini_mbstring_http_input_set (encoding , strlen (encoding ));
860
- return SUCCESS ;
861
- }
862
-
863
- MBSTRG (http_input_set ) = 1 ;
864
- return _php_mb_ini_mbstring_http_input_set (ZSTR_VAL (new_value ), ZSTR_LEN (new_value ));
865
- }
866
- /* }}} */
867
-
868
- static int _php_mb_ini_mbstring_http_output_set (const char * new_value ) {
869
- const mbfl_encoding * encoding = php_mb_get_encoding_or_pass (new_value );
870
- if (!encoding ) {
871
- return FAILURE ;
872
- }
873
-
874
- MBSTRG (http_output_encoding ) = encoding ;
875
- MBSTRG (current_http_output_encoding ) = encoding ;
876
- return SUCCESS ;
877
- }
878
-
879
- /* {{{ static PHP_INI_MH(OnUpdate_mbstring_http_output) */
880
- static PHP_INI_MH (OnUpdate_mbstring_http_output )
881
- {
882
- if (new_value ) {
883
- php_error_docref ("ref.mbstring" , E_DEPRECATED , "Use of mbstring.http_output is deprecated" );
884
- }
885
-
886
- if (new_value == NULL || ZSTR_LEN (new_value ) == 0 ) {
887
- MBSTRG (http_output_set ) = 0 ;
888
- _php_mb_ini_mbstring_http_output_set (php_get_output_encoding ());
889
- return SUCCESS ;
890
- }
891
-
892
- MBSTRG (http_output_set ) = 1 ;
893
- return _php_mb_ini_mbstring_http_output_set (ZSTR_VAL (new_value ));
894
- }
895
- /* }}} */
896
-
897
- /* {{{ static _php_mb_ini_mbstring_internal_encoding_set */
898
- static int _php_mb_ini_mbstring_internal_encoding_set (const char * new_value , size_t new_value_length )
899
- {
900
- const mbfl_encoding * encoding ;
901
-
902
- if (!new_value || !new_value_length || !(encoding = mbfl_name2encoding (new_value ))) {
903
- /* falls back to UTF-8 if an unknown encoding name is given */
904
- if (new_value ) {
905
- php_error_docref ("ref.mbstring" , E_WARNING ,
906
- "Unknown encoding \"%s\" in ini setting" , new_value );
907
- }
908
- encoding = mbfl_no2encoding (mbfl_no_encoding_utf8 );
909
- }
910
- MBSTRG (internal_encoding ) = encoding ;
911
- MBSTRG (current_internal_encoding ) = encoding ;
912
- #ifdef HAVE_MBREGEX
913
- {
914
- const char * enc_name = new_value ;
915
- if (FAILURE == php_mb_regex_set_default_mbctype (enc_name )) {
916
- /* falls back to UTF-8 if an unknown encoding name is given */
917
- enc_name = "UTF-8" ;
918
- php_mb_regex_set_default_mbctype (enc_name );
919
- }
920
- php_mb_regex_set_mbctype (new_value );
921
- }
922
- #endif
923
- return SUCCESS ;
924
- }
925
- /* }}} */
926
-
927
- /* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */
928
- static PHP_INI_MH (OnUpdate_mbstring_internal_encoding )
929
- {
930
- if (new_value ) {
931
- php_error_docref ("ref.mbstring" , E_DEPRECATED , "Use of mbstring.internal_encoding is deprecated" );
932
- }
933
-
934
- if (OnUpdateString (entry , new_value , mh_arg1 , mh_arg2 , mh_arg3 , stage ) == FAILURE ) {
935
- return FAILURE ;
936
- }
937
-
938
- if (new_value && ZSTR_LEN (new_value )) {
939
- MBSTRG (internal_encoding_set ) = 1 ;
940
- return _php_mb_ini_mbstring_internal_encoding_set (ZSTR_VAL (new_value ), ZSTR_LEN (new_value ));
941
- } else {
942
- const char * encoding = php_get_internal_encoding ();
943
- MBSTRG (internal_encoding_set ) = 0 ;
944
- return _php_mb_ini_mbstring_internal_encoding_set (encoding , strlen (encoding ));
945
- }
946
- }
947
- /* }}} */
948
-
949
835
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) */
950
836
static PHP_INI_MH (OnUpdate_mbstring_substitute_character )
951
837
{
@@ -1039,9 +925,6 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes)
1039
925
PHP_INI_BEGIN ()
1040
926
PHP_INI_ENTRY ("mbstring.language" , "neutral" , PHP_INI_ALL , OnUpdate_mbstring_language )
1041
927
PHP_INI_ENTRY ("mbstring.detect_order" , NULL , PHP_INI_ALL , OnUpdate_mbstring_detect_order )
1042
- PHP_INI_ENTRY ("mbstring.http_input" , NULL , PHP_INI_ALL , OnUpdate_mbstring_http_input )
1043
- PHP_INI_ENTRY ("mbstring.http_output" , NULL , PHP_INI_ALL , OnUpdate_mbstring_http_output )
1044
- STD_PHP_INI_ENTRY ("mbstring.internal_encoding" , NULL , PHP_INI_ALL , OnUpdate_mbstring_internal_encoding , internal_encoding_name , zend_mbstring_globals , mbstring_globals )
1045
928
PHP_INI_ENTRY ("mbstring.substitute_character" , NULL , PHP_INI_ALL , OnUpdate_mbstring_substitute_character )
1046
929
1047
930
STD_PHP_INI_BOOLEAN ("mbstring.encoding_translation" , "0" ,
@@ -1066,19 +949,54 @@ PHP_INI_END()
1066
949
1067
950
static void mbstring_internal_encoding_changed_hook (void ) {
1068
951
/* One of the internal_encoding / input_encoding / output_encoding ini settings changed. */
952
+ const char * php_encoding = php_get_internal_encoding ();
953
+ const mbfl_encoding * encoding ;
954
+
1069
955
if (!MBSTRG (internal_encoding_set )) {
1070
- const char * encoding = php_get_internal_encoding ();
1071
- _php_mb_ini_mbstring_internal_encoding_set (encoding , strlen (encoding ));
956
+ if (!(encoding = mbfl_name2encoding (php_encoding ))) {
957
+ /* falls back to UTF-8 if an unknown encoding name is given */
958
+ encoding = & mbfl_encoding_utf8 ;
959
+ }
960
+ MBSTRG (internal_encoding ) = encoding ;
961
+ MBSTRG (current_internal_encoding ) = encoding ;
962
+ #if HAVE_MBREGEX
963
+ {
964
+ const char * enc_name = php_encoding ;
965
+ if (FAILURE == php_mb_regex_set_default_mbctype (enc_name )) {
966
+ /* falls back to UTF-8 if an unknown encoding name is given */
967
+ enc_name = "UTF-8" ;
968
+ php_mb_regex_set_default_mbctype (enc_name );
969
+ }
970
+ php_mb_regex_set_mbctype (enc_name );
971
+ }
972
+ #endif
1072
973
}
1073
974
1074
975
if (!MBSTRG (http_output_set )) {
1075
- const char * encoding = php_get_output_encoding ();
1076
- _php_mb_ini_mbstring_http_output_set (encoding );
976
+ php_encoding = php_get_output_encoding ();
977
+ encoding = php_mb_get_encoding_or_pass (php_encoding );
978
+ if (!encoding ) {
979
+ /* falls back to UTF-8 if an unknown encoding name is given */
980
+ encoding = & mbfl_encoding_utf8 ;
981
+ }
982
+ MBSTRG (http_output_encoding ) = encoding ;
983
+ MBSTRG (current_http_output_encoding ) = encoding ;
1077
984
}
1078
985
1079
986
if (!MBSTRG (http_input_set )) {
1080
- const char * encoding = php_get_input_encoding ();
1081
- _php_mb_ini_mbstring_http_input_set (encoding , strlen (encoding ));
987
+ php_encoding = php_get_input_encoding ();
988
+ const mbfl_encoding * * list ;
989
+ size_t size ;
990
+ if (FAILURE == php_mb_parse_encoding_list (php_encoding , strlen (php_encoding ), & list , & size ,
991
+ /* persistent */ 1 , /* arg_num */ 0 , /* allow_pass_encoding */ 1 ) || size == 0 ) {
992
+ /* on failure leave as is */
993
+ return ;
994
+ }
995
+ if (MBSTRG (http_input_list )) {
996
+ pefree (ZEND_VOIDP (MBSTRG (http_input_list )), 1 );
997
+ }
998
+ MBSTRG (http_input_list ) = list ;
999
+ MBSTRG (http_input_list_size ) = size ;
1082
1000
}
1083
1001
}
1084
1002
@@ -1090,7 +1008,7 @@ ZEND_TSRMLS_CACHE_UPDATE();
1090
1008
#endif
1091
1009
1092
1010
mbstring_globals -> language = mbfl_no_language_uni ;
1093
- mbstring_globals -> internal_encoding = NULL ;
1011
+ mbstring_globals -> internal_encoding = & mbfl_encoding_utf8 ;
1094
1012
mbstring_globals -> current_internal_encoding = mbstring_globals -> internal_encoding ;
1095
1013
mbstring_globals -> http_output_encoding = & mbfl_encoding_pass ;
1096
1014
mbstring_globals -> current_http_output_encoding = & mbfl_encoding_pass ;
0 commit comments