andrei Wed Oct 25 17:28:21 2006 UTC
Modified files:
/php-src/ext/standard file.c
Log:
Unicode support for fnmatch().
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.464&r2=1.465&diff_format=u
Index: php-src/ext/standard/file.c
diff -u php-src/ext/standard/file.c:1.464 php-src/ext/standard/file.c:1.465
--- php-src/ext/standard/file.c:1.464 Fri Oct 13 01:44:42 2006
+++ php-src/ext/standard/file.c Wed Oct 25 17:28:20 2006
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.464 2006/10/13 01:44:42 iliaa Exp $ */
+/* $Id: file.c,v 1.465 2006/10/25 17:28:20 andrei Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -2562,22 +2562,36 @@
/* }}} */
#ifdef HAVE_FNMATCH
-/* {{{ proto bool fnmatch(string pattern, string filename [, int flags])
+/* {{{ proto bool fnmatch(string pattern, string filename [, int flags]) U
Match filename against pattern */
PHP_FUNCTION(fnmatch)
{
- char *pattern, *filename;
+ zstr pattern, filename;
int pattern_len, filename_len;
+ char *pattern_utf8, *filename_utf8;
+ int pattern_utf8_len, filename_utf8_len;
+ zend_uchar type;
long flags = 0;
+ UErrorCode status = U_ZERO_ERROR;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l",
- &pattern,
&pattern_len,
- &filename,
&filename_len,
- &flags)
- == FAILURE)
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "TT|l", &pattern,
+ &pattern_len, &type,
&filename, &filename_len, &type, &flags) == FAILURE) {
return;
+ }
+
+ if (type == IS_UNICODE) {
+ zend_unicode_to_string_ex(UG(utf8_conv), &pattern_utf8,
&pattern_utf8_len, pattern.u, pattern_len, &status);
+ zend_unicode_to_string_ex(UG(utf8_conv), &filename_utf8,
&filename_utf8_len, filename.u, filename_len, &status);
+ pattern.s = pattern_utf8;
+ filename.s = filename_utf8;
+ }
+
+ RETVAL_BOOL( ! fnmatch( pattern.s, filename.s, flags ));
- RETURN_BOOL( ! fnmatch( pattern, filename, flags ));
+ if (type == IS_UNICODE) {
+ efree(pattern_utf8);
+ efree(filename_utf8);
+ }
}
/* }}} */
#endif
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php