123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- // script to upgrade PCRE. just drop the pcre-x.x.tar.xx here and run the script
- $pattern = 'pcre-*.tar.*';
- $newpcre = glob($pattern);
- if (count($newpcre) > 1) {
- echo "more than one '$pattern' file. aborting\n";
- print_r($newpcre);
- exit;
- }
- if (count($newpcre) == 0) {
- die("need one '$pattern' file. aborting.\n");
- }
- $newpcre = $newpcre[0];
- if (strpos($newpcre, 'gz')) {
- system("tar xfz $newpcre");
- } elseif (strpos($newpcre, 'bz2')) {
- system("tar xfj $newpcre");
- } else {
- die("file type not recognized: $newpcre\n");
- }
- $newpcre = substr($newpcre, 0, strpos($newpcre, '.tar'));
- $dirlen = strlen('pcrelib');
- function recurse($path)
- {
- global $newpcre, $dirlen;
- foreach (scandir($path) as $file) {
- if ($file[0] === '.' ||
- $file === 'CVS' ||
- @substr_compare($file, '.lo', -3, 3) === 0 ||
- @substr_compare($file, '.loT', -4, 4) === 0 ||
- @substr_compare($file, '.o', -2, 2) === 0) continue;
- $file = "$path/$file";
- if (is_dir($file)) {
- recurse($file);
- continue;
- }
- echo "processing $file... ";
- $newfile = $newpcre . substr($file, $dirlen);
- if (is_file($tmp = $newfile . '.generic') || is_file($tmp = $newfile . '.dist')) {
- $newfile = $tmp;
- }
- if (!is_file($newfile)) {
- die("$newfile is not available any more\n");
- }
- // maintain file mtimes so that cvs doesnt get crazy
- if (file_get_contents($newfile) !== file_get_contents($file)) {
- copy($newfile, $file);
- }
- // always include the config.h file
- $content = file_get_contents($newfile);
- //$newcontent = preg_replace('/#\s*ifdef HAVE_CONFIG_H\s*(.+)\s*#\s*endif/', '$1', $content);
- //if ($content !== $newcontent) {
- // file_put_contents($file, $newcontent);
- //}
- echo "OK\n";
- }
- }
- recurse('pcrelib');
- $dirorig = scandir('pcrelib/testdata');
- $k = array_search('CVS', $dirorig);
- if ($k !== false)
- unset($dirorig[$k]);
- $k = array_search('.svn', $dirorig);
- if ($k !== false)
- unset($dirorig[$k]);
- $dirnew = scandir("$newpcre/testdata");
- $diff = array_diff($dirorig, $dirnew);
- foreach ($diff as $file) {
- $file2 = 'pcrelib'.substr($file, strlen($newpcre));
- copy($file, $file2);
- }
- // the config.h needs special care
- $prepend_config_h = '
- #include <php_compat.h>
- #ifndef PHP_WIN32
- # include <php_config.h>
- #endif
- #undef PACKAGE_NAME
- #undef PACKAGE_VERSION
- #undef PACKAGE_TARNAME
- #undef PACKAGE_STRING
- #define SUPPORT_UCP
- #define SUPPORT_UTF8
- #if defined(__GNUC__) && __GNUC__ >= 4
- # ifdef __cplusplus
- # define PCRE_EXP_DECL extern "C" __attribute__ ((visibility("default")))
- # else
- # define PCRE_EXP_DECL extern __attribute__ ((visibility("default")))
- # endif
- # define PCRE_EXP_DEFN __attribute__ ((visibility("default")))
- # define PCRE_EXP_DATA_DEFN __attribute__ ((visibility("default")))
- #endif
- ';
- file_put_contents('pcrelib/config.h', $prepend_config_h . file_get_contents('pcrelib/config.h'));
- echo "\nThe End :-)\n\n"
- ?>
|