ZEND_API int zend_multibyte_set_functions(const zend_multibyte_functions *functions) { zend_multibyte_encoding_utf32be = functions->encoding_fetcher("UTF-32BE"); if (!zend_multibyte_encoding_utf32be) { return FAILURE; } zend_multibyte_encoding_utf32le = functions->encoding_fetcher("UTF-32LE"); if (!zend_multibyte_encoding_utf32le) { return FAILURE; } zend_multibyte_encoding_utf16be = functions->encoding_fetcher("UTF-16BE"); if (!zend_multibyte_encoding_utf16be) { return FAILURE; } zend_multibyte_encoding_utf16le = functions->encoding_fetcher("UTF-16LE"); if (!zend_multibyte_encoding_utf16le) { return FAILURE; } zend_multibyte_encoding_utf8 = functions->encoding_fetcher("UTF-8"); if (!zend_multibyte_encoding_utf8) { return FAILURE; } multibyte_functions_dummy = multibyte_functions; multibyte_functions = *functions; /* As zend_multibyte_set_functions() gets called after ini settings were * populated, we need to reinitialize script_encoding here. */ { const char *value = zend_ini_string("zend.script_encoding", sizeof("zend.script_encoding") - 1, 0); zend_multibyte_set_script_encoding_by_string(value, strlen(value)); } return SUCCESS; }
static ZEND_INI_MH(OnUpdateScriptEncoding) /* {{{ */ { if (!CG(multibyte)) { return FAILURE; } if (!zend_multibyte_get_functions()) { return SUCCESS; } return zend_multibyte_set_script_encoding_by_string(new_value ? ZSTR_VAL(new_value) : NULL, new_value ? ZSTR_LEN(new_value) : 0); }
static ZEND_INI_MH(OnUpdateScriptEncoding) /* {{{ */ { if (!CG(multibyte)) { return FAILURE; } if (!zend_multibyte_get_functions(TSRMLS_C)) { return SUCCESS; } return zend_multibyte_set_script_encoding_by_string(new_value->val, new_value->len TSRMLS_CC); }