pajoye Sat May 2 17:32:36 2009 UTC
Added files:
/php-src/ext/imap/tests imap_mutf7_to_utf8.phpt
imap_utf8_to_mutf7_basic.phpt
Modified files:
/php-src/ext/imap php_imap.c php_imap.h
Log:
- [DOC] add imap_mutf7_to_utf8 and imap_utf8_to_mutf7
http://cvs.php.net/viewvc.cgi/php-src/ext/imap/php_imap.c?r1=1.285&r2=1.286&diff_format=u
Index: php-src/ext/imap/php_imap.c
diff -u php-src/ext/imap/php_imap.c:1.285 php-src/ext/imap/php_imap.c:1.286
--- php-src/ext/imap/php_imap.c:1.285 Thu Apr 30 18:57:50 2009
+++ php-src/ext/imap/php_imap.c Sat May 2 17:32:35 2009
@@ -26,7 +26,7 @@
| PHP 4.0 updates: Zeev Suraski <[email protected]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c,v 1.285 2009/04/30 18:57:50 pajoye Exp $ */
+/* $Id: php_imap.c,v 1.286 2009/05/02 17:32:35 pajoye Exp $ */
#define IMAP41
@@ -351,6 +351,14 @@
ZEND_ARG_INFO(0, buf)
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_utf8_to_mutf7, 0, 0, 1)
+ ZEND_ARG_INFO(0, in)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_mutf7_to_utf8, 0, 0, 1)
+ ZEND_ARG_INFO(0, in)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_setflag_full, 0, 0, 3)
ZEND_ARG_INFO(0, stream_id)
ZEND_ARG_INFO(0, sequence)
@@ -509,6 +517,8 @@
PHP_FE(imap_search,
arginfo_imap_search)
PHP_FE(imap_utf7_decode,
arginfo_imap_utf7_decode)
PHP_FE(imap_utf7_encode,
arginfo_imap_utf7_encode)
+ PHP_FE(imap_utf8_to_mutf7,
arginfo_imap_utf8_to_mutf7)
+ PHP_FE(imap_mutf7_to_utf8,
arginfo_imap_mutf7_to_utf8)
PHP_FE(imap_mime_header_decode,
arginfo_imap_mime_header_decode)
PHP_FE(imap_thread,
arginfo_imap_thread)
PHP_FE(imap_timeout,
arginfo_imap_timeout)
@@ -2881,6 +2891,61 @@
#undef B64
#undef UNB64
+static void php_imap_mutf7(INTERNAL_FUNCTION_PARAMETERS, int mode)
+{
+ char *in;
+ int in_len;
+ unsigned char *out;
+
+ if (mode == 0) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &in,
&in_len, UG(utf8_conv)) == FAILURE) {
+ return;
+ }
+
+ if (in_len < 1) {
+ RETURN_EMPTY_STRING();
+ }
+
+ out = utf8_to_mutf7((unsigned char *) in);
+ } else {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &in,
&in_len) == FAILURE) {
+ return;
+ }
+
+ if (in_len < 1) {
+ RETURN_EMPTY_UNICODE();
+ }
+
+ out = utf8_from_mutf7((unsigned char *) in);
+ }
+
+ if (out == NIL) {
+ RETURN_FALSE;
+ return;
+ }
+
+ if (mode == 0) {
+ RETURN_STRING((char *)out, 1);
+ } else {
+ RETURN_UTF8_STRING(out, ZSTR_DUPLICATE);
+ }
+}
+
+/* {{{ proto string imap_utf8_to_mutf7(string in)
+ Encode a UTF-8 string to modified UTF-7 */
+PHP_FUNCTION(imap_utf8_to_mutf7)
+{
+ php_imap_mutf7(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+}
+
+/* {{{ proto string imap_mutf7_to_utf8(string in)
+ Decode a modified UTF-7 string to UTF-8 */
+PHP_FUNCTION(imap_mutf7_to_utf8)
+{
+ php_imap_mutf7(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+}
+
+
/* {{{ proto bool imap_setflag_full(resource stream_id, string sequence,
string flag [, int options])
Sets flags on messages */
PHP_FUNCTION(imap_setflag_full)
http://cvs.php.net/viewvc.cgi/php-src/ext/imap/php_imap.h?r1=1.39&r2=1.40&diff_format=u
Index: php-src/ext/imap/php_imap.h
diff -u php-src/ext/imap/php_imap.h:1.39 php-src/ext/imap/php_imap.h:1.40
--- php-src/ext/imap/php_imap.h:1.39 Tue Apr 28 08:23:32 2009
+++ php-src/ext/imap/php_imap.h Sat May 2 17:32:35 2009
@@ -27,7 +27,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.h,v 1.39 2009/04/28 08:23:32 pajoye Exp $ */
+/* $Id: php_imap.h,v 1.40 2009/05/02 17:32:35 pajoye Exp $ */
#ifndef PHP_IMAP_H
#define PHP_IMAP_H
@@ -165,6 +165,8 @@
PHP_FUNCTION(imap_utf8);
PHP_FUNCTION(imap_utf7_decode);
PHP_FUNCTION(imap_utf7_encode);
+PHP_FUNCTION(imap_utf8_to_mutf7);
+PHP_FUNCTION(imap_mutf7_to_utf8);
PHP_FUNCTION(imap_mime_header_decode);
PHP_FUNCTION(imap_thread);
PHP_FUNCTION(imap_timeout);
http://cvs.php.net/viewvc.cgi/php-src/ext/imap/tests/imap_mutf7_to_utf8.phpt?view=markup&rev=1.1
Index: php-src/ext/imap/tests/imap_mutf7_to_utf8.phpt
+++ php-src/ext/imap/tests/imap_mutf7_to_utf8.phpt
--TEST--
imap_mutf7_to_utf8
--SKIPIF--
<?php if (!extension_loaded("imap")) print "skip"; ?>
--FILE--
<?php
var_dump(imap_mutf7_to_utf8(b""));
var_dump(imap_mutf7_to_utf8(1));
var_dump(imap_mutf7_to_utf8(array(1,2)));
var_dump(imap_mutf7_to_utf8(b"t&AOQ-st"));
echo "Done\n";
?>
--EXPECTF--
unicode(0) ""
unicode(1) "1"
Warning: imap_mutf7_to_utf8() expects parameter 1 to be binary string, array
given in %s on line %d
NULL
unicode(4) "täst"
Done
http://cvs.php.net/viewvc.cgi/php-src/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt?view=markup&rev=1.1
Index: php-src/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt
+++ php-src/ext/imap/tests/imap_utf8_to_mutf7_basic.phpt
--TEST--
imap_utf8_to_mutf7
--SKIPIF--
<?php if (!extension_loaded("imap")) print "skip"; ?>
--FILE--
<?php
var_dump(imap_utf8_to_mutf7(""));
var_dump(imap_utf8_to_mutf7(1));
var_dump(imap_utf8_to_mutf7(array(1,2)));
$test = 't' . chr(228) . 'st';
var_dump(imap_utf8_to_mutf7(utf8_encode($test)));
echo "Done\n";
?>
--EXPECTF--
string(0) ""
string(1) "1"
Warning: imap_utf8_to_mutf7() expects parameter 1 to be binary string, array
given in %s on line %d
NULL
string(8) "t&AOQ-st"
Done