diff options
Diffstat (limited to 'main')
| -rw-r--r-- | main/main.c | 41 | ||||
| -rw-r--r-- | main/php.h | 5 |
2 files changed, 46 insertions, 0 deletions
diff --git a/main/main.c b/main/main.c index 5eb34b7fa4..f021f22af5 100644 --- a/main/main.c +++ b/main/main.c @@ -578,12 +578,44 @@ static PHP_INI_DISP(display_errors_mode) } /* }}} */ +PHPAPI const char *php_get_internal_encoding() { + if (PG(internal_encoding) && PG(internal_encoding)[0]) { + return PG(internal_encoding); + } else if (SG(default_charset)) { + return SG(default_charset); + } + return ""; +} + +PHPAPI const char *php_get_input_encoding() { + if (PG(input_encoding) && PG(input_encoding)[0]) { + return PG(input_encoding); + } else if (SG(default_charset)) { + return SG(default_charset); + } + return ""; +} + +PHPAPI const char *php_get_output_encoding() { + if (PG(output_encoding) && PG(output_encoding)[0]) { + return PG(output_encoding); + } else if (SG(default_charset)) { + return SG(default_charset); + } + return ""; +} + +PHPAPI void (*php_internal_encoding_changed)(void) = NULL; + /* {{{ PHP_INI_MH */ static PHP_INI_MH(OnUpdateDefaultCharset) { if (new_value) { OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); + if (php_internal_encoding_changed) { + php_internal_encoding_changed(); + } #ifdef PHP_WIN32 php_win32_cp_do_update(ZSTR_VAL(new_value)); #endif @@ -598,6 +630,9 @@ static PHP_INI_MH(OnUpdateInternalEncoding) { if (new_value) { OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); + if (php_internal_encoding_changed) { + php_internal_encoding_changed(); + } #ifdef PHP_WIN32 php_win32_cp_do_update(ZSTR_VAL(new_value)); #endif @@ -612,6 +647,9 @@ static PHP_INI_MH(OnUpdateInputEncoding) { if (new_value) { OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); + if (php_internal_encoding_changed) { + php_internal_encoding_changed(); + } #ifdef PHP_WIN32 php_win32_cp_do_update(NULL); #endif @@ -626,6 +664,9 @@ static PHP_INI_MH(OnUpdateOutputEncoding) { if (new_value) { OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); + if (php_internal_encoding_changed) { + php_internal_encoding_changed(); + } #ifdef PHP_WIN32 php_win32_cp_do_update(NULL); #endif diff --git a/main/php.h b/main/php.h index 48b4633879..be9917922a 100644 --- a/main/php.h +++ b/main/php.h @@ -371,6 +371,11 @@ PHPAPI int php_mergesort(void *base, size_t nmemb, size_t size, int (*cmp)(const PHPAPI void php_register_pre_request_shutdown(void (*func)(void *), void *userdata); PHPAPI void php_com_initialize(void); PHPAPI char *php_get_current_user(void); + +PHPAPI const char *php_get_internal_encoding(void); +PHPAPI const char *php_get_input_encoding(void); +PHPAPI const char *php_get_output_encoding(void); +PHPAPI extern void (*php_internal_encoding_changed)(void); END_EXTERN_C() /* PHP-named Zend macro wrappers */ |
