Commit:    11b4f3becd371dae9f76ec18d2197edf53130db7
Author:    Felipe Pena <felipe...@gmail.com>         Thu, 24 May 2012 13:42:47 
-0300
Parents:   f1969d4b4ce0ebd82b2582104bb99de4b5ac824e
Branches:  PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=11b4f3becd371dae9f76ec18d2197edf53130db7

Log:
- Fixed magic file regex support

Changed paths:
  M  ext/fileinfo/libmagic/softmagic.c
  M  ext/fileinfo/tests/finfo_file_002.phpt
  A  ext/fileinfo/tests/finfo_file_regex.phpt
  A  ext/fileinfo/tests/resources/test.awk


Diff:
diff --git a/ext/fileinfo/libmagic/softmagic.c 
b/ext/fileinfo/libmagic/softmagic.c
index 648f641..f9c2836 100644
--- a/ext/fileinfo/libmagic/softmagic.c
+++ b/ext/fileinfo/libmagic/softmagic.c
@@ -1654,29 +1654,6 @@ convert_libmagic_pattern(zval *pattern, int options)
                
                for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
                        switch (Z_STRVAL_P(pattern)[i]) {
-                               case '?':
-                                       t[j] = '.';
-                                       break;
-                               case '*':
-                                       t[j++] = '.';
-                                       t[j] = '*';
-                                       break;
-                               case '.':
-                                       t[j++] = '\\';
-                                       t[j] = '.';
-                                       break;
-                               case '\\':
-                                       t[j++] = '\\';
-                                       t[j] = '\\';
-                                       break;
-                               case '(':
-                                       t[j++] = '\\';
-                                       t[j] = '(';
-                                       break;
-                               case ')':
-                                       t[j++] = '\\';
-                                       t[j] = ')';
-                                       break;
                                case '~':
                                        t[j++] = '\\';
                                        t[j] = '~';
@@ -1873,7 +1850,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
                
                convert_libmagic_pattern(pattern, options);
                
-               l = 0;
+               l = v = 0;
 #if (PHP_MAJOR_VERSION < 6)
                if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), 
Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
 #else
diff --git a/ext/fileinfo/tests/finfo_file_002.phpt 
b/ext/fileinfo/tests/finfo_file_002.phpt
index 9ed19a9..3593233 100644
--- a/ext/fileinfo/tests/finfo_file_002.phpt
+++ b/ext/fileinfo/tests/finfo_file_002.phpt
@@ -18,9 +18,11 @@ ksort($results);
 var_dump($results);
 ?>
 --EXPECTF--
-array(6) {
+array(7) {
   ["%s/resources/dir.zip"]=>
   string(15) "application/zip"
+  ["%s/resources/test.awk"]=>
+  string(10) "text/plain"
   ["%s/resources/test.bmp"]=>
   string(14) "image/x-ms-bmp"
   ["%s/resources/test.gif"]=>
diff --git a/ext/fileinfo/tests/finfo_file_regex.phpt 
b/ext/fileinfo/tests/finfo_file_regex.phpt
new file mode 100644
index 0000000..c1cc36f
--- /dev/null
+++ b/ext/fileinfo/tests/finfo_file_regex.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test finfo_file() function : regex rules
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+/**
+ * Works with the unix file command:
+ * $ file -m magic resources/test.awk
+ * resources/test.awk: awk script, ASCII text
+ */
+$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
+$finfo = finfo_open( FILEINFO_MIME, $magicFile );
+
+echo "*** Testing finfo_file() : regex rules ***\n";
+
+// Calling finfo_file() with all possible arguments
+$file = __DIR__ . '/resources/test.awk';
+var_dump( finfo_file( $finfo, $file ) );
+var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing finfo_file() : regex rules ***
+string(28) "text/plain; charset=us-ascii"
+string(22) "awk script, ASCII text"
+===DONE===
diff --git a/ext/fileinfo/tests/resources/test.awk 
b/ext/fileinfo/tests/resources/test.awk
new file mode 100644
index 0000000..e000d50
--- /dev/null
+++ b/ext/fileinfo/tests/resources/test.awk
@@ -0,0 +1 @@
+BEGIN { print "START" }


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to