From: Rui Hirokawa Date: Tue, 9 Jan 2001 15:11:23 +0000 (+0000) Subject: added iconv extension. X-Git-Tag: php-4.0.5RC1~652 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0afcb03de3816d745ba79c5e27bbe3d7998106eb;p=php added iconv extension. --- diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 90f425b958..4ed1a2d8cf 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -194,11 +194,6 @@ function_entry basic_functions[] = { PHP_NAMED_FE(printf, PHP_FN(user_printf), NULL) PHP_FE(sscanf, third_and_rest_force_ref) PHP_FE(fscanf, third_and_rest_force_ref) -#ifdef HAVE_ICONV - PHP_FE(iconv, NULL) - PHP_FE(ob_iconv_handler, NULL) - PHP_FE(iconv_set_encoding, NULL) -#endif PHP_FE(parse_url, NULL) PHP_FE(urlencode, NULL) PHP_FE(urldecode, NULL) @@ -602,38 +597,9 @@ static PHP_INI_MH(OnUpdateSafeModeAllowedEnvVars) return SUCCESS; } -#ifdef HAVE_ICONV -static PHP_INI_MH(OnUpdateIconvOutputEncoding) -{ - BLS_FETCH(); - - if (BG(iconv_output_encoding)) { - free(BG(iconv_output_encoding)); - } - BG(iconv_output_encoding) = zend_strndup(new_value, new_value_length); - return SUCCESS; -} - -static PHP_INI_MH(OnUpdateIconvInternalEncoding) -{ - BLS_FETCH(); - - if (BG(iconv_internal_encoding)) { - free(BG(iconv_internal_encoding)); - } - BG(iconv_internal_encoding) = zend_strndup(new_value, new_value_length); - return SUCCESS; -} - -#endif - PHP_INI_BEGIN() PHP_INI_ENTRY_EX("safe_mode_protected_env_vars", SAFE_MODE_PROTECTED_ENV_VARS, PHP_INI_SYSTEM, OnUpdateSafeModeProtectedEnvVars, NULL) PHP_INI_ENTRY_EX("safe_mode_allowed_env_vars", SAFE_MODE_ALLOWED_ENV_VARS, PHP_INI_SYSTEM, OnUpdateSafeModeAllowedEnvVars, NULL) -#ifdef HAVE_ICONV - PHP_INI_ENTRY_EX("iconv.output_encoding", ICONV_OUTPUT_ENCODING, PHP_INI_SYSTEM, OnUpdateIconvOutputEncoding, NULL) - PHP_INI_ENTRY_EX("iconv.internal_encoding", ICONV_INTERNAL_ENCODING, PHP_INI_SYSTEM, OnUpdateIconvInternalEncoding, NULL) -#endif STD_PHP_INI_ENTRY("session.use_trans_sid", "1", PHP_INI_ALL, OnUpdateBool, use_trans_sid, php_basic_globals, basic_globals) PHP_INI_END() diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index fa403f2a96..5fb9d6fdeb 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -157,11 +157,6 @@ typedef struct { HashTable sm_protected_env_vars; char *sm_allowed_env_vars; - -#ifdef HAVE_ICONV - char *iconv_internal_encoding; - char *iconv_output_encoding; -#endif /* pageinfo.c */ long page_uid; @@ -227,7 +222,4 @@ typedef struct { #define SAFE_MODE_PROTECTED_ENV_VARS "LD_LIBRARY_PATH" #define SAFE_MODE_ALLOWED_ENV_VARS "PHP_" -#define ICONV_OUTPUT_ENCODING "ISO-8859-1" -#define ICONV_INTERNAL_ENCODING "ISO-8859-1" - #endif /* BASIC_FUNCTIONS_H */ diff --git a/ext/standard/config.m4 b/ext/standard/config.m4 index 0e61522999..9752ba0d42 100644 --- a/ext/standard/config.m4 +++ b/ext/standard/config.m4 @@ -162,13 +162,4 @@ AC_ARG_WITH(system-regex, fi ]) -AC_CHECK_LIB(c, iconv_open, [ - AC_DEFINE(HAVE_ICONV, 1, [ ]) -], [ - AC_CHECK_LIB(iconv, iconv_open, [ - EXTRA_LIBS="$EXTRA_LIBS -liconv" - AC_DEFINE(HAVE_ICONV, 1, [ ]) - ]) -]) - PHP_EXTENSION(standard) diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index ce6fce4a82..d4d89c8778 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -78,9 +78,6 @@ PHP_FUNCTION(strnatcasecmp); PHP_FUNCTION(substr_count); PHP_FUNCTION(str_pad); PHP_FUNCTION(sscanf); -PHP_FUNCTION(iconv); -PHP_FUNCTION(ob_iconv_handler); -PHP_FUNCTION(iconv_set_encoding); #define strnatcmp(a, b) \ strnatcmp_ex(a, strlen(a), b, strlen(b), 0) diff --git a/ext/standard/string.c b/ext/standard/string.c index f562c09eff..c354e4482c 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -30,10 +30,6 @@ #ifdef HAVE_LOCALE_H # include #endif -#ifdef HAVE_ICONV -# include -# include "SAPI.h" -#endif #include "scanf.h" #include "zend_API.h" #include "zend_execute.h" @@ -72,7 +68,6 @@ void register_string_constants(INIT_FUNC_ARGS) } int php_tag_find(char *tag, int len, char *set); -int php_iconv_string(char *, char **, char *, char *); /* this is read-only, so it's ok */ static char hexconvtab[] = "0123456789abcdef"; @@ -3004,128 +2999,6 @@ PHP_FUNCTION(sscanf) } /* }}} */ -#ifdef HAVE_ICONV - -int php_iconv_string(char *in_p, char **out, char *in_charset, char *out_charset) { - unsigned int in_size, out_size; - char *out_buffer, *out_p; - iconv_t cd; - size_t result; - typedef unsigned int ucs4_t; - - in_size = strlen(in_p) * sizeof(char) + 1; - out_size = strlen(in_p) * sizeof(ucs4_t) + 1; - - out_buffer = (char *) emalloc(out_size); - *out = out_buffer; - out_p = out_buffer; - - cd = iconv_open(out_charset, in_charset); - - if (cd == (iconv_t)(-1)) { - php_error(E_WARNING, "iconv: cannot convert from `%s' to `%s'", - in_charset, out_charset); - efree(out_buffer); - return -1; - } - - result = iconv(cd, (const char **) &in_p, &in_size, (char **) - &out_p, &out_size); - - if (result == (size_t)(-1)) { - sprintf(out_buffer, "???") ; - return -1; - } - - iconv_close(cd); - - return SUCCESS; -} - -/* {{{ proto string iconv(string in_charset, string out_charset, string str) - Returns str converted to the out_charset character set. -*/ -PHP_FUNCTION(iconv) -{ - zval **in_charset, **out_charset, **in_buffer; - unsigned int in_size, out_size; - char *out_buffer, *in_p, *out_p; - size_t result; - typedef unsigned int ucs4_t; - - if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &in_charset, &out_charset, &in_buffer) == FAILURE) { - WRONG_PARAM_COUNT; - } - - convert_to_string_ex(in_charset); - convert_to_string_ex(out_charset); - convert_to_string_ex(in_buffer); - - if (php_iconv_string(Z_STRVAL_PP(in_buffer), &out_buffer, - Z_STRVAL_PP(in_charset), Z_STRVAL_PP(out_charset)) == SUCCESS) { - RETVAL_STRING(out_buffer, 0); - } else { - RETURN_FALSE; - } -} - -/* {{{ proto string ob_iconv_handler(string contents) - Returns str in output buffer converted to the iconv.output_encoding - character set. -*/ -PHP_FUNCTION(ob_iconv_handler) -{ - int coding; - char *out_buffer; - zval **zv_string; - BLS_FETCH(); - - if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &zv_string)==FAILURE) { - ZEND_WRONG_PARAM_COUNT(); - } - - if (php_iconv_string(Z_STRVAL_PP(zv_string), &out_buffer, - BG(iconv_internal_encoding), - BG(iconv_output_encoding))==SUCCESS) { - RETVAL_STRING(out_buffer, 0); - } else { - zval_dtor(return_value); - *return_value = **zv_string; - zval_copy_ctor(return_value); - } - -} - -/* {{{ proto bool iconv_set_encoding(string int_charset, string out_charset) - set internal encoding and output encoding for ob_iconv_handler(). -*/ -PHP_FUNCTION(iconv_set_encoding) -{ - zval **int_charset, **out_charset; - BLS_FETCH(); - - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &int_charset, &out_charset) == FAILURE) { - WRONG_PARAM_COUNT; - } - - convert_to_string_ex(int_charset); - convert_to_string_ex(out_charset); - - if (BG(iconv_internal_encoding)) { - free(BG(iconv_internal_encoding)); - } - BG(iconv_internal_encoding) = estrndup(Z_STRVAL_PP(int_charset), Z_STRLEN_PP(int_charset)); - - if (BG(iconv_output_encoding)) { - free(BG(iconv_output_encoding)); - } - BG(iconv_output_encoding) = estrndup(Z_STRVAL_PP(out_charset),Z_STRLEN_PP(out_charset)); - - RETURN_TRUE; -} - -#endif - /* * Local variables: * tab-width: 4