andrei Thu, 16 Jul 2009 22:19:09 +0000 URL: http://svn.php.net/viewvc?view=revision&revision=284206
Changed paths: U php/php-src/trunk/ext/standard/base64.c U php/php-src/trunk/ext/standard/url.c Log: Adjust base64_encode() according to PDM notes. Modified: php/php-src/trunk/ext/standard/base64.c =================================================================== --- php/php-src/trunk/ext/standard/base64.c 2009-07-16 22:08:02 UTC (rev 284205) +++ php/php-src/trunk/ext/standard/base64.c 2009-07-16 22:19:09 UTC (rev 284206) @@ -211,14 +211,36 @@ Encodes string using MIME base64 algorithm */ PHP_FUNCTION(base64_encode) { - char *str; + zstr str; unsigned char *result; int str_len, ret_length; + zend_uchar str_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &str, &str_len, &str_type) == FAILURE) { return; } - result = php_base64_encode((unsigned char*)str, str_len, &ret_length); + + if (str_type == IS_UNICODE) { + char *utf8_str = NULL; + int utf8_str_len; + UErrorCode status = U_ZERO_ERROR; + + zend_unicode_to_string_ex(UG(utf8_conv), &utf8_str, &utf8_str_len, str.u, str_len, &status); + if (U_FAILURE(status)) { + if (utf8_str) { + efree(utf8_str); + } + php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not convert argument to UTF-8"); + RETURN_FALSE; + } + + result = php_base64_encode((unsigned char*)utf8_str, utf8_str_len, &ret_length); + efree(utf8_str); + php_error_docref(NULL TSRMLS_CC, E_STRICT, "expecting binary parameter, received Unicode parameter was converted to UTF-8"); + } else { + result = php_base64_encode((unsigned char*)str.s, str_len, &ret_length); + } + if (result != NULL) { RETVAL_STRINGL((char*)result, ret_length, 0); } else { Modified: php/php-src/trunk/ext/standard/url.c =================================================================== --- php/php-src/trunk/ext/standard/url.c 2009-07-16 22:08:02 UTC (rev 284205) +++ php/php-src/trunk/ext/standard/url.c 2009-07-16 22:19:09 UTC (rev 284206) @@ -593,7 +593,7 @@ if (utf8_str) { efree(utf8_str); } - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not convert argument to UTF-8"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not convert argument to UTF-8"); RETURN_FALSE; } @@ -715,7 +715,7 @@ if (utf8_str) { efree(utf8_str); } - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not convert argument to UTF-8"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not convert argument to UTF-8"); RETURN_FALSE; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php