From 47130bb86ff82df6ba9ec83597ffeacabc1d888a Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Wed, 8 May 2013 12:58:16 +0000 Subject: [PATCH] - PHP_5_4 branch from PLD --- bug-52078-fileinode.patch | 370 + bug-52448.patch | 8 + bug-test-pcntl-55479.patch | 35 + dep-tests.sh | 58 + embed.patch | 12 + extension-shared-optional-dep.patch | 11 + fix-test-run.patch | 62 + mcrypt-libs.patch | 19 + mysqlnd-shared.patch | 23 + pcre-shared.patch | 110 + php-apache.ini | 15 + php-both-apxs.patch | 15 + php-branch.sh | 25 + php-buff_ovf.patch | 16 + php-build_modules.patch | 9 + php-builddir.patch | 24 + php-cgi-fcgi.ini | 50 + php-cli.ini | 27 + php-config-dir.patch | 27 + php-config-file-scan-dir.patch | 155 + php-curl-limit-speed.patch | 30 + php-db.patch | 26 + php-dba-link.patch | 11 + php-fcgi-error_log-no-newlines.patch | 16 + php-fcgi-graceful.patch | 77 + php-filter-shared.patch | 14 + php-fpm-config.patch | 55 + php-fpm-shared.patch | 21 + php-fpm.init | 109 + php-fpm.logrotate | 11 + php-gd_imagerotate_enable.patch | 173 + php-imap-annotations.patch | 305 + php-imap-myrights.patch | 92 + php-include_path.patch | 11 + php-ini.patch | 211 + php-krb5-ac.patch | 11 + php-libpq_fs_h_path.patch | 12 + php-libtool.patch | 31 + php-link-libs.patch | 35 + php-m4-divert.patch | 79 + php-m4.patch | 11 + php-mail.patch | 84 + php-mod_php.conf | 22 + php-mysql-charsetphpini.patch | 76 + php-mysql-nowarning.patch | 22 + php-mysqli-charsetphpini.patch | 52 + php-no_pear_install.patch | 11 + php-nohttpd.patch | 15 + php-oracle-instantclient.patch | 63 + php-pdo_mysql-charsetphpini.patch | 66 + php-pear.patch | 42 + php-pldlogo.patch | 176 + php-readline.patch | 11 + php-sapi-ini-file.patch | 79 + php-sh.patch | 13 + php-shared.patch | 73 + php-silent-session-cleanup.patch | 10 + php-stupidapache_version.patch | 18 + php-systzdata.patch | 619 + php-tds.patch | 11 + php-threads-acfix.patch | 38 + php-uint32_t.patch | 11 + php-use-prog_sendmail.patch | 15 + php-zlib-for-getimagesize.patch | 42 + php-zlib.patch | 15 + php.spec | 3263 ++++ php_browscap.ini | 24778 +++++++++++++++++++++++++ skip-tests.sh | 172 + spl-shared.patch | 86 + suhosin.patch | 5684 ++++++ system-libzip.patch | 497 + 71 files changed, 38476 insertions(+) create mode 100644 bug-52078-fileinode.patch create mode 100644 bug-52448.patch create mode 100644 bug-test-pcntl-55479.patch create mode 100644 dep-tests.sh create mode 100644 embed.patch create mode 100644 extension-shared-optional-dep.patch create mode 100644 fix-test-run.patch create mode 100644 mcrypt-libs.patch create mode 100644 mysqlnd-shared.patch create mode 100644 pcre-shared.patch create mode 100644 php-apache.ini create mode 100644 php-both-apxs.patch create mode 100644 php-branch.sh create mode 100644 php-buff_ovf.patch create mode 100644 php-build_modules.patch create mode 100644 php-builddir.patch create mode 100644 php-cgi-fcgi.ini create mode 100644 php-cli.ini create mode 100644 php-config-dir.patch create mode 100644 php-config-file-scan-dir.patch create mode 100644 php-curl-limit-speed.patch create mode 100644 php-db.patch create mode 100644 php-dba-link.patch create mode 100644 php-fcgi-error_log-no-newlines.patch create mode 100644 php-fcgi-graceful.patch create mode 100644 php-filter-shared.patch create mode 100644 php-fpm-config.patch create mode 100644 php-fpm-shared.patch create mode 100644 php-fpm.init create mode 100644 php-fpm.logrotate create mode 100644 php-gd_imagerotate_enable.patch create mode 100644 php-imap-annotations.patch create mode 100644 php-imap-myrights.patch create mode 100644 php-include_path.patch create mode 100644 php-ini.patch create mode 100644 php-krb5-ac.patch create mode 100644 php-libpq_fs_h_path.patch create mode 100644 php-libtool.patch create mode 100644 php-link-libs.patch create mode 100644 php-m4-divert.patch create mode 100644 php-m4.patch create mode 100644 php-mail.patch create mode 100644 php-mod_php.conf create mode 100644 php-mysql-charsetphpini.patch create mode 100644 php-mysql-nowarning.patch create mode 100644 php-mysqli-charsetphpini.patch create mode 100644 php-no_pear_install.patch create mode 100644 php-nohttpd.patch create mode 100644 php-oracle-instantclient.patch create mode 100644 php-pdo_mysql-charsetphpini.patch create mode 100644 php-pear.patch create mode 100644 php-pldlogo.patch create mode 100644 php-readline.patch create mode 100644 php-sapi-ini-file.patch create mode 100644 php-sh.patch create mode 100644 php-shared.patch create mode 100644 php-silent-session-cleanup.patch create mode 100644 php-stupidapache_version.patch create mode 100644 php-systzdata.patch create mode 100644 php-tds.patch create mode 100644 php-threads-acfix.patch create mode 100644 php-uint32_t.patch create mode 100644 php-use-prog_sendmail.patch create mode 100644 php-zlib-for-getimagesize.patch create mode 100644 php-zlib.patch create mode 100644 php.spec create mode 100644 php_browscap.ini create mode 100644 skip-tests.sh create mode 100644 spl-shared.patch create mode 100644 suhosin.patch create mode 100644 system-libzip.patch diff --git a/bug-52078-fileinode.patch b/bug-52078-fileinode.patch new file mode 100644 index 0000000..0fd0163 --- /dev/null +++ b/bug-52078-fileinode.patch @@ -0,0 +1,370 @@ +--- php-5.3.3/ext/standard/tests/file/fileinode_basic.phpt~ 2007-11-05 19:43:21.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/fileinode_basic.phpt 2010-07-26 19:31:43.613553760 +0300 +@@ -28,9 +28,9 @@ + ?> + --EXPECTF-- + *** Testing fileinode() with file, directory *** +-%d +-%d +-%d +-%d ++%i ++%i ++%i ++%i + + *** Done *** +--- php-5.3.3/ext/standard/tests/file/fileinode_variation.phpt~ 2007-11-05 19:43:21.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/fileinode_variation.phpt 2010-07-26 19:34:01.610414378 +0300 +@@ -89,24 +89,24 @@ + --EXPECTF-- + *** Testing fileinode() with files, links and directories *** + -- Testing with files -- +-%d +-%d ++%i ++%i + -- Testing with links: hard link -- +-%d +-%d ++%i ++%i + -- Testing with links: soft link -- +-%d +-%d ++%i ++%i + -- Testing after copying a file -- +-%d +-%d ++%i ++%i + -- Testing after renaming the file -- +-%d +-%d ++%i ++%i + -- Testing with directories -- +-%d +-%d ++%i ++%i + -- Testing with binary input -- +-%d +-%d ++%i ++%i + *** Done *** +--- php-5.3.3/ext/standard/tests/file/fileinode_variation1.phpt~ 2008-11-26 12:10:19.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/fileinode_variation1.phpt 2010-07-26 19:35:31.216291870 +0300 +@@ -42,7 +42,7 @@ + + --EXPECTF-- + *** Testing fileinode() with links *** +-int(%d) +-int(%d) ++int(%i) ++int(%i) + + *** Done *** +--- php-5.3.3/ext/standard/tests/file/filestat.phpt~ 2006-11-15 19:27:03.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/filestat.phpt 2010-07-26 19:37:10.367060798 +0300 +@@ -30,17 +30,17 @@ + echo "Done\n"; + ?> + --EXPECTF-- ++int(%i) + int(%d) + int(%d) + int(%d) + int(%d) ++int(%i) + int(%d) + int(%d) + int(%d) + int(%d) +-int(%d) +-int(%d) +-int(%d) ++int(%i) + int(%d) + int(%d) + int(%d) +--- php-5.3.3/ext/standard/tests/file/lstat_stat_variation18.phpt~ 2010-07-26 19:43:12.000000000 +0300 ++++ php-5.3.3/ext/standard/tests/file/lstat_stat_variation18.phpt 2010-07-26 19:43:14.470984630 +0300 +@@ -66,7 +66,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -92,7 +92,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -122,7 +122,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -148,7 +148,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +--- php-5.3.3/ext/standard/tests/file/lstat_stat_variation19.phpt~ 2007-11-05 19:43:21.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/lstat_stat_variation19.phpt 2010-07-26 19:44:58.320079730 +0300 +@@ -67,7 +67,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -93,7 +93,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -121,7 +121,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -147,7 +147,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -177,7 +177,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -203,7 +203,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -231,7 +231,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -257,7 +257,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +--- php-5.3.3/ext/standard/tests/file/lstat_stat_variation20.phpt~ 2007-07-26 16:38:24.000000000 +0300 ++++ php-5.3.3/ext/standard/tests/file/lstat_stat_variation20.phpt 2010-07-26 19:46:33.907004377 +0300 +@@ -69,7 +69,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -95,7 +95,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -125,7 +125,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -151,7 +151,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -179,7 +179,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -205,7 +205,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +@@ -233,7 +233,7 @@ + [0]=> + int(%d) + [1]=> +- int(%d) ++ int(%i) + [2]=> + int(%d) + [3]=> +@@ -259,7 +259,7 @@ + ["dev"]=> + int(%d) + ["ino"]=> +- int(%d) ++ int(%i) + ["mode"]=> + int(%d) + ["nlink"]=> +--- php-5.3.3/ext/standard/tests/file/tempnam_variation1.phpt~ 2008-11-26 12:10:19.000000000 +0200 ++++ php-5.3.3/ext/standard/tests/file/tempnam_variation1.phpt 2010-07-26 20:24:46.505943227 +0300 +@@ -66,51 +66,51 @@ + -- Iteration 1 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 2 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 3 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 4 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 5 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 6 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 7 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 8 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 9 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + -- Iteration 10 -- + File name is => %s%etempnam_variation1.tmp%s + File permissions are => 100600 +-File inode is => %d ++File inode is => %i + File created in => directory specified + *** Done *** +--- php-5.3.3/tests/security/open_basedir_fileinode.phpt~ 2008-05-09 11:39:44.000000000 +0300 ++++ php-5.3.3/tests/security/open_basedir_fileinode.phpt 2010-07-27 22:51:29.603089549 +0300 +@@ -46,10 +46,10 @@ + + Warning: fileinode(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d + bool(false) +-int(%d) +-int(%d) +-int(%d) +-int(%d) +-int(%d) ++int(%i) ++int(%i) ++int(%i) ++int(%i) ++int(%i) + *** Finished testing open_basedir configuration [fileinode] *** + +--- php-5.3.3/ext/spl/tests/SplFileInfo_getInode_basic.phpt~ 2010-08-04 16:25:21.000000000 +0300 ++++ php-5.3.3/ext/spl/tests/SplFileInfo_getInode_basic.phpt 2010-08-04 16:28:32.722932851 +0300 +@@ -11,6 +11,7 @@ + --SKIPIF-- + 32bit platform only (inodes overflow there)"); + ?> + --FILE-- + + --EXPECT-- + == Testing curl_error with a fake URL == +-Error: Couldn't resolve host 'fakeURL' ++Error: Could not resolve host: fakeURL (Domain name not found) diff --git a/bug-test-pcntl-55479.patch b/bug-test-pcntl-55479.patch new file mode 100644 index 0000000..8f20b23 --- /dev/null +++ b/bug-test-pcntl-55479.patch @@ -0,0 +1,35 @@ +need to setup extension dir to current build instead of defaulting to system +defaults (which may be different php version) +also use preprocessed PHP.INI from test framework + +--- php-5.4.0alpha3/ext/pcntl/tests/pcntl_exec.phpt 2011-06-24 22:18:06.000000000 +0300 ++++ php-5.4.0alpha3/ext/pcntl/tests/pcntl_exec.phpt 2011-08-22 09:36:01.105334996 +0300 +@@ -8,7 +8,10 @@ + --FILE-- + + --EXPECT-- +--- php-5.4.0alpha3/ext/pcntl/tests/pcntl_exec_2.phpt~ 2011-06-24 22:18:06.000000000 +0300 ++++ php-5.4.0alpha3/ext/pcntl/tests/pcntl_exec_2.phpt 2011-08-22 19:57:12.780576314 +0300 +@@ -14,7 +14,13 @@ + exit; + } + echo "ok\n"; +-pcntl_exec(getenv("TEST_PHP_EXECUTABLE"), array(__FILE__), array( ++ ++$php = getenv("TEST_PHP_EXECUTABLE"); ++$extension_dir = ini_get("extension_dir"); ++$inipath = php_ini_loaded_file(); ++$args = array("-n", "-d$extension_dir", "-c$inipath", __FILE__); ++ ++pcntl_exec($php, $args, array( + b"PCNTL_EXEC_TEST_IS_CHILD" => b"1", + b"FOO" => b"BAR", + 1 => b"long") diff --git a/dep-tests.sh b/dep-tests.sh new file mode 100644 index 0000000..3ee6a4f --- /dev/null +++ b/dep-tests.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# inter-dependencies checker. + +with_mysqlnd=mysqlnd + +dep_spl="pcre simplexml" +dep_session="spl $dep_spl" +dep_filter='pcre' +dep_eaccelerator='session' +dep_mysql="$with_mysqlnd" +dep_mysqli="$dep_spl spl $with_mysqlnd" +dep_pdo="$dep_spl spl" +dep_pdo_sqlite="$dep_pdo pdo" +dep_pdo_pgsql="$dep_pdo pdo" +dep_pdo_oci="$dep_pdo pdo" +dep_pdo_odbc="$dep_pdo pdo" +dep_pdo_firebird="$dep_pdo pdo" +dep_pdo_dblib="$dep_pdo pdo" +dep_pdo_mysql="$dep_pdo pdo $with_mysqlnd" +dep_simplexml="$dep_spl spl" +dep_imap="pcre" +dep_phar="$dep_spl spl" +dep_sqlite="$dep_pdo pdo" +dep_fileinfo="pcre" +dep_wddx='xml' +dep_xmlreader='dom' +dep_xmlrpc='xml' +dep_xsl='dom' +dep_snmp="$dep_spl spl snmp" + +php=${PHP:-$(php-config --php-binary)} +ext_dir=${EXTENSION_DIR:-$(php-config --extension-dir)} +conf_dir=${CONFIG_DIR:-$(php-config --sysconfdir)/conf.d $(php-config --sysconfdir)/cli.d} +tmpini=$(mktemp) + +# poldek --sn ac-ready -u php-* +for ext in $ext_dir/*.so; do + [ -f $ext ] || continue + ext=${ext##*/}; ext=${ext%.so} + + deps=$(eval echo \$dep_$ext) + # add ext itself, if already not in list (spl case) + [[ $deps = *\ $ext\ * ]] || deps="$deps $ext" + + echo -n "$ext (deps: ${deps# })..." + + grep -rlE '^extension=('$(echo "${deps# }" | tr ' ' '|')').so$' $conf_dir | LC_CTYPE=C LC_ALL= sort | xargs cat > $tmpini + $php -n -d extension_dir=$ext_dir -c $tmpini -r "exit(extension_loaded('${ext}') ? 0 : 1);" + rc=$? + if [ $rc = 0 ]; then + echo OK + else + echo FAIL + echo "Failed config was:" + cat $tmpini + fi +done +rm -f $t diff --git a/embed.patch b/embed.patch new file mode 100644 index 0000000..44276de --- /dev/null +++ b/embed.patch @@ -0,0 +1,12 @@ +--- php-5.2.4/sapi/embed/config.m4.embed ++++ php-5.2.4/sapi/embed/config.m4 +@@ -12,7 +12,8 @@ if test "$PHP_EMBED" != "no"; then + case "$PHP_EMBED" in + yes|shared) + PHP_EMBED_TYPE=shared +- INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(prefix)/lib" ++ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -release \$(PHP_VERSION)" ++ INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(libdir)" + ;; + static) + PHP_EMBED_TYPE=static diff --git a/extension-shared-optional-dep.patch b/extension-shared-optional-dep.patch new file mode 100644 index 0000000..be4597f --- /dev/null +++ b/extension-shared-optional-dep.patch @@ -0,0 +1,11 @@ +--- php-5.2.11/acinclude.m4~ 2009-09-21 22:31:13.000000000 +0300 ++++ php-5.2.11/acinclude.m4 2009-09-21 22:32:11.001106977 +0300 +@@ -1019,7 +1019,7 @@ + is_it_shared=$[PHP_]translit($2,a-z_-,A-Z__)[_SHARED] + is_it_enabled=$[PHP_]translit($2,a-z_-,A-Z__) + if test "$am_i_shared" = "no" && test "$is_it_shared" = "yes" ; then +- AC_MSG_ERROR([ ++ AC_MSG_WARN([ + You've configured extension $1 to build statically, but it + depends on extension $2, which you've configured to build shared. + You either need to build $1 shared or build $2 statically for the diff --git a/fix-test-run.patch b/fix-test-run.patch new file mode 100644 index 0000000..33d072c --- /dev/null +++ b/fix-test-run.patch @@ -0,0 +1,62 @@ +--- php-5.4.0alpha2/configure.in~ 2011-08-07 12:43:31.000000000 +0300 ++++ php-5.4.0alpha2/configure.in 2011-08-07 12:44:11.495394662 +0300 +@@ -1271,6 +1271,11 @@ + ;; + esac + ++# shift so that pcre, spl, ... are loaded first ++PHP_MODULES=$(echo "$PHP_MODULES" | sed -e 's,\(.*\)\(\$(phplibdir)/xml.la \),\2\1,') ++PHP_MODULES=$(echo "$PHP_MODULES" | sed -e 's,\(.*\)\(\$(phplibdir)/spl.la \),\2\1,') ++PHP_MODULES=$(echo "$PHP_MODULES" | sed -e 's,\(.*\)\(\$(phplibdir)/pcre.la \),\2\1,') ++ + PHP_SUBST_OLD(PHP_INSTALLED_SAPIS) + + PHP_SUBST(PHP_EXECUTABLE) +--- php-5.3.4/Makefile.global~ 2010-12-12 23:08:32.000000000 +0200 ++++ php-5.3.4/Makefile.global 2010-12-12 23:09:31.246644108 +0200 +@@ -77,7 +77,8 @@ + done; \ + fi + +-PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' ++PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d 'safe_mode=0' ++PHP_TEST_SHARED_SYSTEM_EXTENSIONS = pcre + PHP_TEST_SHARED_EXTENSIONS = ` \ + if test "x$(PHP_MODULES)" != "x"; then \ + for i in $(PHP_MODULES)""; do \ +@@ -88,6 +89,12 @@ + for i in $(PHP_ZEND_EX)""; do \ + . $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \ + done; \ ++ fi; \ ++ if test "x$(PHP_TEST_SHARED_SYSTEM_EXTENSIONS)" != "x"; then \ ++ for i in $(PHP_TEST_SHARED_SYSTEM_EXTENSIONS)""; do \ ++ dlname=$$i.$(SHLIB_DL_SUFFIX_NAME); \ ++ $(top_srcdir)/build/shtool echo -n -- " -d extension=$(EXTENSION_DIR)/$$dlname"; \ ++ done; \ + fi` + PHP_DEPRECATED_DIRECTIVES_REGEX = '^(define_syslog_variables|register_(globals|long_arrays)?|safe_mode|magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*=' + +@@ -114,7 +114,10 @@ + TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ + TEST_PHP_SRCDIR=$(top_srcdir) \ + CC="$(CC)" \ +- $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ ++ $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini \ ++ -d extension_dir=$(top_builddir)/modules/ -d 'extension=$(EXTENSION_DIR)/pcre.$(SHLIB_DL_SUFFIX_NAME)' \ ++ $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini \ ++ -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(RUN_TESTS_SETTINGS) $(TESTS); \ + rm $(top_builddir)/tmp-php.ini; \ + else \ + echo "ERROR: Cannot run tests without CLI sapi."; \ +--- php-5.3.2/Makefile.global 2010-03-16 16:31:36.972576955 +0200 ++++ php-5.3.2/Makefile.global 2010-03-16 16:31:36.972576955 +0200 +@@ -296,7 +296,7 @@ + fi + + PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d 'safe_mode=0' +-PHP_TEST_SHARED_SYSTEM_EXTENSIONS = pcre ++PHP_TEST_SHARED_SYSTEM_EXTENSIONS = + PHP_TEST_SHARED_EXTENSIONS = ` \ + if test "x$(PHP_MODULES)" != "x"; then \ + for i in $(PHP_MODULES)""; do \ diff --git a/mcrypt-libs.patch b/mcrypt-libs.patch new file mode 100644 index 0000000..2bc029c --- /dev/null +++ b/mcrypt-libs.patch @@ -0,0 +1,19 @@ +--- php-5.3.6/ext/mcrypt/config.m4~ 2010-01-15 23:02:20.000000000 +0200 ++++ php-5.3.6/ext/mcrypt/config.m4 2011-04-09 16:18:07.634572726 +0300 +@@ -36,7 +36,6 @@ + + PHP_CHECK_LIBRARY(mcrypt, mcrypt_module_open, + [ +- PHP_ADD_LIBRARY(ltdl,, MCRYPT_SHARED_LIBADD) + AC_DEFINE(HAVE_LIBMCRYPT,1,[ ]) + ],[ + PHP_CHECK_LIBRARY(mcrypt, mcrypt_module_open, +@@ -48,7 +47,7 @@ + -L$MCRYPT_DIR/$PHP_LIBDIR + ]) + ],[ +- -L$MCRYPT_DIR/$PHP_LIBDIR -lltdl ++ -L$MCRYPT_DIR/$PHP_LIBDIR + ]) + + PHP_ADD_LIBRARY_WITH_PATH(mcrypt, $MCRYPT_DIR/$PHP_LIBDIR, MCRYPT_SHARED_LIBADD) diff --git a/mysqlnd-shared.patch b/mysqlnd-shared.patch new file mode 100644 index 0000000..43eceb6 --- /dev/null +++ b/mysqlnd-shared.patch @@ -0,0 +1,23 @@ +--- php-5.4.0alpha2/ext/mysqlnd/config9.m4~ 2011-03-23 19:14:28.000000000 +0200 ++++ php-5.4.0alpha2/ext/mysqlnd/config9.m4 2011-08-07 12:45:42.205921715 +0300 +@@ -28,7 +28,7 @@ + AC_DEFINE([MYSQLND_SSL_SUPPORTED], 1, [Enable SSL support]) + + mysqlnd_sources="$mysqlnd_base_sources $mysqlnd_ps_sources" +- PHP_NEW_EXTENSION(mysqlnd, $mysqlnd_sources, no) ++ PHP_NEW_EXTENSION(mysqlnd, $mysqlnd_sources, yes) + PHP_ADD_BUILD_DIR([ext/mysqlnd], 1) + PHP_INSTALL_HEADERS([ext/mysqlnd/]) + fi +--- php-5.3.2/ext/mysqlnd/php_mysqlnd.c~ 2010-01-20 19:09:28.000000000 +0200 ++++ php-5.3.2/ext/mysqlnd/php_mysqlnd.c 2010-04-14 09:18:30.725599897 +0300 +@@ -273,6 +273,9 @@ + }; + /* }}} */ + ++#ifdef COMPILE_DL_MYSQLND ++ZEND_GET_MODULE(mysqlnd) ++#endif + + /* + * Local variables: diff --git a/pcre-shared.patch b/pcre-shared.patch new file mode 100644 index 0000000..6bb1a70 --- /dev/null +++ b/pcre-shared.patch @@ -0,0 +1,110 @@ +--- php-5.3.1/ext/pcre/config0.m4 2009-11-30 22:09:24.385647500 +0000 ++++ php-5.3.24/ext/pcre/config0.m4 2013-04-17 13:37:52.761509001 +0300 +@@ -11,7 +11,7 @@ + + if test "$PHP_PCRE_REGEX" != "yes" && test "$PHP_PCRE_REGEX" != "no"; then + AC_MSG_CHECKING([for PCRE headers location]) +- for i in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/include $PHP_PCRE_REGEX/include/pcre $PHP_PCRE_REGEX/local/include; do ++ for i in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/include $PHP_PCRE_REGEX/include/pcre $PHP_PCRE_REGEX/local/include /usr/include; do + test -f $i/pcre.h && PCRE_INCDIR=$i + done + +@@ -21,7 +21,7 @@ + AC_MSG_RESULT([$PCRE_INCDIR]) + + AC_MSG_CHECKING([for PCRE library location]) +- for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/$PHP_LIBDIR; do ++ for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/$PHP_LIBDIR /usr/$PHP_LIBDIR; do + test -f $j/libpcre.a || test -f $j/libpcre.$SHLIB_SUFFIX_NAME && PCRE_LIBDIR=$j + done + +@@ -43,12 +43,14 @@ + AC_MSG_ERROR([The PCRE extension requires PCRE library version >= 6.6]) + fi + +- PHP_ADD_LIBRARY_WITH_PATH(pcre, $PCRE_LIBDIR) ++ PHP_ADD_LIBRARY_WITH_PATH(pcre, $PCRE_LIBDIR, PCRE_SHARED_LIBADD) + + AC_DEFINE(HAVE_PCRE, 1, [ ]) + PHP_ADD_INCLUDE($PCRE_INCDIR) +- PHP_NEW_EXTENSION(pcre, php_pcre.c, no) ++ PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared) ++ PHP_SUBST(PCRE_SHARED_LIBADD) + PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h]) ++ EXTRA_LIBS="$EXTRA_LIBS -lpcre" + else + AC_MSG_CHECKING([for PCRE library to use]) + AC_MSG_RESULT([bundled]) +--- php-5.3.1/ext/pcre/php_pcre.h 2009-11-30 20:59:04.046581246 +0200 ++++ php-5.3.1.pcre/ext/pcre/php_pcre.h 2009-11-30 21:38:06.435493243 +0000 +@@ -34,7 +34,12 @@ + #endif + + PHPAPI char *php_pcre_replace(char *regex, int regex_len, char *subject, int subject_len, zval *replace_val, int is_callable_replace, int *result_len, int limit, int *replace_count TSRMLS_DC); ++#if COMPILE_DL_PCRE ++#define pcre_get_compiled_regex pcre_get_compiled_regex_p ++extern PHPAPI pcre* (*pcre_get_compiled_regex)(char *regex, pcre_extra **extra, int *options TSRMLS_DC); ++#else + PHPAPI pcre* pcre_get_compiled_regex(char *regex, pcre_extra **extra, int *options TSRMLS_DC); ++#endif + PHPAPI pcre* pcre_get_compiled_regex_ex(char *regex, pcre_extra **extra, int *preg_options, int *coptions TSRMLS_DC); + + extern zend_module_entry pcre_module_entry; +--- php-5.3.1/ext/pcre/php_pcre.c 2009-11-30 21:10:01.370473754 +0200 ++++ php-5.3.1.pcre/ext/pcre/php_pcre.c 2009-11-30 21:38:01.759684456 +0000 +@@ -27,6 +27,11 @@ + + #if HAVE_PCRE || HAVE_BUNDLED_PCRE + ++#if COMPILE_DL_PCRE ++#undef pcre_get_compiled_regex ++PHPAPI pcre* pcre_get_compiled_regex(char *regex, pcre_extra **extra, int *preg_options TSRMLS_DC); ++#endif ++ + #include "ext/standard/php_string.h" + + #define PREG_PATTERN_ORDER 1 +@@ -153,6 +158,10 @@ + REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("PCRE_VERSION", (char *)pcre_version(), CONST_CS | CONST_PERSISTENT); + ++#if COMPILE_DL_PCRE ++ pcre_get_compiled_regex_p = pcre_get_compiled_regex; ++#endif ++ + return SUCCESS; + } + /* }}} */ +@@ -429,6 +438,7 @@ + } + /* }}} */ + ++ + /* {{{ pcre_get_compiled_regex + */ + PHPAPI pcre* pcre_get_compiled_regex(char *regex, pcre_extra **extra, int *preg_options TSRMLS_DC) +--- php-5.3.1/ext/standard/browscap.c 2009-06-06 02:40:49.000000000 +0000 ++++ php-5.3.1.pcre/ext/standard/browscap.c 2009-11-30 21:33:00.775241138 +0000 +@@ -31,6 +31,11 @@ + static zval *current_section; + static char *current_section_name; + ++#if COMPILE_DL_PCRE ++// will be visible in here ++PHPAPI pcre* (*pcre_get_compiled_regex_p)(char *regex, pcre_extra **extra, int *options TSRMLS_DC); ++#endif ++ + #define DEFAULT_SECTION_NAME "Default Browser Capability Settings" + + /* OBJECTS_FIXME: This whole extension needs going through. The use of objects looks pretty broken here */ +--- php-5.3.2/sapi/cli/tests/018.phpt~ 2008-03-17 16:05:39.000000000 +0200 ++++ php-5.3.2/sapi/cli/tests/018.phpt 2010-03-16 20:41:11.341251246 +0200 +@@ -20,8 +20,6 @@ + --EXPECTF-- + [PHP Modules] + %a +-pcre +-%a + + [Zend Modules] + %aDone diff --git a/php-apache.ini b/php-apache.ini new file mode 100644 index 0000000..3b335f6 --- /dev/null +++ b/php-apache.ini @@ -0,0 +1,15 @@ +; php-apache.ini - configuration used only for apache SAPI +; +; Please note that, unlikely in original php distributions, this file +; is read AFTER (not instead of) reading global /etc/php/php.ini. +; +; It allows you to control global settings for all SAPIs in one place +; and override some settings in SAPI-specific files without need of +; copying whole large php.ini. + +[Session] +session.save_path = /var/run/php + ; argument passed to save_handler + ; in the case of files, this is the + ; path where data files are stored + diff --git a/php-both-apxs.patch b/php-both-apxs.patch new file mode 100644 index 0000000..8e7bd89 --- /dev/null +++ b/php-both-apxs.patch @@ -0,0 +1,15 @@ +--- php-5.2.4/Makefile.global~ 2007-08-31 19:35:54.000000000 +0300 ++++ php-5.2.4/Makefile.global 2007-08-31 19:40:18.287528480 +0300 +@@ -21,6 +21,12 @@ + $(LIBTOOL) --mode=link $(CC) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(phptempdir)/libphp_common.la $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ + -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 + ++$(LIBTOOL_SAPI): libphp_common.la $(PHP_SAPI_OBJS) ++ $(LIBTOOL) --mode=link $(CC) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(phptempdir)/libphp_common.la $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ ++ -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 ++ ++libtool-sapi: $(LIBTOOL_SAPI) ++ + libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so + diff --git a/php-branch.sh b/php-branch.sh new file mode 100644 index 0000000..d9f5fbd --- /dev/null +++ b/php-branch.sh @@ -0,0 +1,25 @@ +#!/bin/sh +set -e +svn=http://svn.php.net/repository/php/php-src +tag=php_5_3_2 +branch=PHP_5_3 +out=php-branch.diff + +d=$- +filter() { + set -$d + # remove revno's for smaller diffs + sed -e 's,^\([-+]\{3\} .*\)\t(revision [0-9]\+)$,\1,' +} + +old=$svn/tags/$tag +new=$svn/branches/$branch +echo >&2 "Running diff: $old -> $new" +LC_ALL=C svn diff --old=$old --new=$new | filter > $out.tmp + +if cmp -s $out{,.tmp}; then + echo >&2 "No new diffs..." + rm -f $out.tmp + exit 0 +fi +mv -f $out{.tmp,} diff --git a/php-buff_ovf.patch b/php-buff_ovf.patch new file mode 100644 index 0000000..0b9c006 --- /dev/null +++ b/php-buff_ovf.patch @@ -0,0 +1,16 @@ +diff -ur php-5.3.6-orig//ext/sockets/sockets.c php-5.3.6//ext/sockets/sockets.c +--- php-5.3.6-orig//ext/sockets/sockets.c 2011-01-01 03:19:59.000000000 +0100 ++++ php-5.3.6//ext/sockets/sockets.c 2011-05-24 07:09:54.592779164 +0200 +@@ -1333,6 +1333,11 @@ + break; + + case AF_UNIX: ++ if (addr_len >= sizeof(s_un.sun_path)) { ++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Path too long", php_sock->type); ++ RETURN_FALSE; ++ } ++ + memset(&s_un, 0, sizeof(struct sockaddr_un)); + + s_un.sun_family = AF_UNIX; +Tylko w php-5.3.6//ext/sockets: sockets.c~ diff --git a/php-build_modules.patch b/php-build_modules.patch new file mode 100644 index 0000000..cf222ec --- /dev/null +++ b/php-build_modules.patch @@ -0,0 +1,9 @@ +diff -Naur php-4.1.2.orig/ext/skeleton/create_stubs php-4.1.2/ext/skeleton/create_stubs +--- php-4.1.2.orig/ext/skeleton/create_stubs Fri May 31 11:50:08 2002 ++++ php-4.1.2/ext/skeleton/create_stubs Fri May 31 11:52:00 2002 +@@ -1,4 +1,4 @@ +-#!/usr/bin/awk -f ++#!/bin/awk -f + + function gobble(s, x) + { diff --git a/php-builddir.patch b/php-builddir.patch new file mode 100644 index 0000000..783dc2b --- /dev/null +++ b/php-builddir.patch @@ -0,0 +1,24 @@ +diff -urbB php-5.0.5.org/scripts/Makefile.frag php-5.0.5/scripts/Makefile.frag +--- php-5.0.5.org/scripts/Makefile.frag 2005-09-10 21:29:04.884122000 +0200 ++++ php-5.0.5/scripts/Makefile.frag 2005-09-10 21:30:09.333324848 +0200 +@@ -4,7 +4,7 @@ + # + + phpincludedir = $(includedir)/php +-phpbuilddir = $(libdir)/build ++phpbuilddir = $(libdir)/php/build + + BUILD_FILES = \ + scripts/phpize.m4 \ +diff -urbB php-5.0.5.org/scripts/phpize.in php-5.0.5/scripts/phpize.in +--- php-5.0.5.org/scripts/phpize.in 2005-06-15 19:19:41.000000000 +0200 ++++ php-5.0.5/scripts/phpize.in 2005-09-10 21:51:45.523274024 +0200 +@@ -3,7 +3,7 @@ + # Variable declaration + prefix='@prefix@' + exec_prefix="`eval echo @exec_prefix@`" +-phpdir="`eval echo @libdir@`/build" ++phpdir="`eval echo @libdir@`/php/build" + includedir="`eval echo @includedir@`/php" + builddir="`pwd`" + diff --git a/php-cgi-fcgi.ini b/php-cgi-fcgi.ini new file mode 100644 index 0000000..809c7d3 --- /dev/null +++ b/php-cgi-fcgi.ini @@ -0,0 +1,50 @@ +; php-cgi-fcgi.ini - configuration used only for cgi-fcgi SAPI +; +; Please note that, unlikely in original php distributions, this file +; is read AFTER (not instead of) reading global /etc/php/php.ini. +; +; It allows you to control global settings for all SAPIs in one place +; and override some settings in SAPI-specific files without need of +; copying whole large php.ini. + +[PHP] +; Disable logging through FastCGI connection +; See http://bugs.php.net/bug.php?id=28074 +; fastcgi.logging = 0 + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. +; cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; cgi.redirect_status_env = ; + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +cgi.fix_pathinfo=1 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If it's set 0 PHP sends Status: header that +; is supported by Apache. When this option is set to 1 PHP will send +; RFC2616 compliant header. +; Default is zero. +;cgi.rfc2616_headers = 0 + +[Session] +session.save_path = /tmp ; argument passed to save_handler + ; in the case of files, this is the + ; path where data files are stored + diff --git a/php-cli.ini b/php-cli.ini new file mode 100644 index 0000000..65e02e5 --- /dev/null +++ b/php-cli.ini @@ -0,0 +1,27 @@ +; php-cli.ini - configuration used only for cli SAPI +; +; Please note that, unlikely in original php distributions, this file +; is read AFTER (not instead of) reading global /etc/php/php.ini. +; +; It allows you to control global settings for all SAPIs in one place +; and override some settings in SAPI-specific files without need of +; copying whole large php.ini. + +[PHP] +; This combination (display_errors=off; log_errors=on; error_log ="") allows +; fatal errors go to STDERR only. We set these separately here, that we won't +; be affected by global php.ini +display_errors = Off +log_errors = On + +; Disable error logging, in case it was enabled in global php.ini +error_log = "" + +; Whether or not to enable the dl() function. +; http://php.net/enable-dl +enable_dl = On + +[Session] +; argument passed to save_handler in the case of files, this is the +; path where data files are stored. +session.save_path = /tmp diff --git a/php-config-dir.patch b/php-config-dir.patch new file mode 100644 index 0000000..b6abad5 --- /dev/null +++ b/php-config-dir.patch @@ -0,0 +1,27 @@ +--- php-5.2.0/scripts/php-config.in 2006-12-14 01:11:33.348180526 +0200 ++++ php-5.2.4/scripts/php-config.in 2007-08-31 19:43:04.061307670 +0300 +@@ -2,6 +2,7 @@ + + prefix="@prefix@" + exec_prefix="@exec_prefix@" ++sysconfdir='@sysconfdir@' + version="@PHP_VERSION@" + version_id="@PHP_VERSION_ID@" + includedir="@includedir@/php" +@@ -53,6 +54,8 @@ + echo $extension_dir;; + --include-dir) + echo $include_dir;; ++--sysconfdir) ++ echo $sysconfdir;; + --php-binary) + echo $php_binary;; + --php-sapis) +@@ -72,6 +75,7 @@ + --ldflags [$ldflags] + --libs [$libs] + --extension-dir [$extension_dir] ++ --sysconfdir [$sysconfdir] + --include-dir [$include_dir] + --php-binary [$php_binary] + --php-sapis [$php_sapis] diff --git a/php-config-file-scan-dir.patch b/php-config-file-scan-dir.patch new file mode 100644 index 0000000..a01906e --- /dev/null +++ b/php-config-file-scan-dir.patch @@ -0,0 +1,155 @@ +--- php-5.4.0RC3/main/php_ini.c~ 2011-12-10 03:26:15.000000000 +0200 ++++ php-5.4.0RC3/main/php_ini.c 2011-12-10 03:26:54.901295707 +0200 +@@ -376,6 +376,7 @@ + char *open_basedir; + int free_ini_search_path = 0; + zend_file_handle fh; ++ static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 }; + + if (zend_hash_init(&configuration_hash, 0, NULL, (dtor_func_t) config_zval_dtor, 1) == FAILURE) { + return FAILURE; +@@ -398,7 +399,6 @@ + int search_path_size; + char *default_location; + char *env_location; +- static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 }; + #ifdef PHP_WIN32 + char *reg_location; + char phprc_path[MAXPATHLEN]; +@@ -608,72 +608,86 @@ + + /* Scan and parse any .ini files found in scan path if path not empty. */ + if (!sapi_module.php_ini_ignore && php_ini_scanned_path_len) { +- struct dirent **namelist; + int ndir, i; + struct stat sb; + char ini_file[MAXPATHLEN]; +- char *p; ++ char *p, *last, *path_copy, *ini_path = NULL; + zend_file_handle fh2; + zend_llist scanned_ini_list; + zend_llist_element *element; + int l, total_l = 0; + +- if ((ndir = php_scandir(php_ini_scanned_path, &namelist, 0, php_alphasort)) > 0) { +- zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); +- memset(&fh2, 0, sizeof(fh2)); +- +- for (i = 0; i < ndir; i++) { +- +- /* check for any file with .ini extension */ +- if (!(p = strrchr(namelist[i]->d_name, '.')) || (p && strcmp(p, ".ini"))) { +- free(namelist[i]); +- continue; +- } +- /* Reset active ini section */ +- RESET_ACTIVE_INI_HASH(); +- +- if (IS_SLASH(php_ini_scanned_path[php_ini_scanned_path_len - 1])) { +- snprintf(ini_file, MAXPATHLEN, "%s%s", php_ini_scanned_path, namelist[i]->d_name); +- } else { +- snprintf(ini_file, MAXPATHLEN, "%s%c%s", php_ini_scanned_path, DEFAULT_SLASH, namelist[i]->d_name); +- } +- if (VCWD_STAT(ini_file, &sb) == 0) { +- if (S_ISREG(sb.st_mode)) { +- if ((fh2.handle.fp = VCWD_FOPEN(ini_file, "r"))) { +- fh2.filename = ini_file; +- fh2.type = ZEND_HANDLE_FP; +- +- if (zend_parse_ini_file(&fh2, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash TSRMLS_CC) == SUCCESS) { +- /* Here, add it to the list of ini files read */ +- l = strlen(ini_file); +- total_l += l + 2; +- p = estrndup(ini_file, l); +- zend_llist_add_element(&scanned_ini_list, &p); ++ /* List of found ini files */ ++ zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); ++ ++ /* Split by paths_separator and load ini-files from all paths */ ++ path_copy = estrdup(php_ini_scanned_path); ++ ini_path = php_strtok_r(path_copy, paths_separator, &last); ++ ++ while (ini_path != NULL) { ++ struct dirent **namelist; ++ int ini_path_len = strlen(ini_path); ++ ++ if ((ndir = php_scandir(ini_path, &namelist, 0, php_alphasort)) > 0) { ++ memset(&fh2, 0, sizeof(fh2)); ++ ++ for (i = 0; i < ndir; i++) { ++ /* check for any file with .ini extension */ ++ if (!(p = strrchr(namelist[i]->d_name, '.')) || (p && strcmp(p, ".ini"))) { ++ free(namelist[i]); ++ continue; ++ } ++ /* Reset active ini section */ ++ RESET_ACTIVE_INI_HASH(); ++ ++ if (IS_SLASH(ini_path[ini_path_len - 1])) { ++ snprintf(ini_file, MAXPATHLEN, "%s%s", ini_path, namelist[i]->d_name); ++ } else { ++ snprintf(ini_file, MAXPATHLEN, "%s%c%s", ini_path, DEFAULT_SLASH, namelist[i]->d_name); ++ } ++ if (VCWD_STAT(ini_file, &sb) == 0) { ++ if (S_ISREG(sb.st_mode)) { ++ if ((fh2.handle.fp = VCWD_FOPEN(ini_file, "r"))) { ++ fh2.filename = ini_file; ++ fh2.type = ZEND_HANDLE_FP; ++ ++ /* Reset active ini section */ ++ RESET_ACTIVE_INI_HASH(); ++ ++ if (zend_parse_ini_file(&fh2, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash TSRMLS_CC) == SUCCESS) { ++ /* Here, add it to the list of ini files read */ ++ l = strlen(ini_file); ++ total_l += l + 2; ++ p = estrndup(ini_file, l); ++ zend_llist_add_element(&scanned_ini_list, &p); ++ } + } + } + } ++ free(namelist[i]); + } +- free(namelist[i]); ++ free(namelist); + } +- free(namelist); +- +- if (total_l) { +- int php_ini_scanned_files_len = (php_ini_scanned_files) ? strlen(php_ini_scanned_files) + 1 : 0; +- php_ini_scanned_files = (char *) realloc(php_ini_scanned_files, php_ini_scanned_files_len + total_l + 1); +- if (!php_ini_scanned_files_len) { +- *php_ini_scanned_files = '\0'; +- } +- total_l += php_ini_scanned_files_len; +- for (element = scanned_ini_list.head; element; element = element->next) { +- if (php_ini_scanned_files_len) { +- strlcat(php_ini_scanned_files, ",\n", total_l); +- } +- strlcat(php_ini_scanned_files, *(char **)element->data, total_l); +- strlcat(php_ini_scanned_files, element->next ? ",\n" : "\n", total_l); ++ ini_path = php_strtok_r(NULL, paths_separator, &last); ++ } ++ ++ if (total_l) { ++ int php_ini_scanned_files_len = (php_ini_scanned_files) ? strlen(php_ini_scanned_files) + 1 : 0; ++ php_ini_scanned_files = (char *) realloc(php_ini_scanned_files, php_ini_scanned_files_len + total_l + 1); ++ if (!php_ini_scanned_files_len) { ++ *php_ini_scanned_files = '\0'; ++ } ++ total_l += php_ini_scanned_files_len; ++ for (element = scanned_ini_list.head; element; element = element->next) { ++ if (php_ini_scanned_files_len) { ++ strlcat(php_ini_scanned_files, ",\n", total_l); + } ++ strlcat(php_ini_scanned_files, *(char **)element->data, total_l); ++ strlcat(php_ini_scanned_files, element->next ? ",\n" : "\n", total_l); + } +- zend_llist_destroy(&scanned_ini_list); + } ++ efree(path_copy); ++ zend_llist_destroy(&scanned_ini_list); + } else { + /* Make sure an empty php_ini_scanned_path ends up as NULL */ + php_ini_scanned_path = NULL; diff --git a/php-curl-limit-speed.patch b/php-curl-limit-speed.patch new file mode 100644 index 0000000..8348dd4 --- /dev/null +++ b/php-curl-limit-speed.patch @@ -0,0 +1,30 @@ +--- php-5.2.5.orig/ext/curl/interface.c 2008-03-26 17:05:19.000000000 +0100 ++++ php-5.2.5/ext/curl/interface.c 2008-03-26 17:09:05.000000000 +0100 +@@ -462,6 +462,14 @@ + REGISTER_CURL_CONSTANT(CURLOPT_TCP_NODELAY); + #endif + REGISTER_CURL_CONSTANT(CURLOPT_HTTP200ALIASES); ++ ++/* Added constants to support limiting the transfer speed in PHP */ ++/* Fixed by Tijnema (admin@tijnema.info) */ ++#if LIBCURL_VERSION_NUM > 0x070fff /* CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE are available since curl 7.16.0 */ ++ REGISTER_CURL_CONSTANT(CURLOPT_MAX_SEND_SPEED_LARGE); ++ REGISTER_CURL_CONSTANT(CURLOPT_MAX_RECV_SPEED_LARGE); ++#endif ++ + REGISTER_CURL_CONSTANT(CURL_TIMECOND_IFMODSINCE); + REGISTER_CURL_CONSTANT(CURL_TIMECOND_IFUNMODSINCE); + REGISTER_CURL_CONSTANT(CURL_TIMECOND_LASTMOD); +@@ -1288,6 +1296,12 @@ + #if LIBCURL_VERSION_NUM > 0x070b01 /* CURLOPT_TCP_NODELAY is available since curl 7.11.2 */ + case CURLOPT_TCP_NODELAY: + #endif ++/* Added case options to support limiting the transfer speed in PHP */ ++/* Fixed by Tijnema (admin@tijnema.info) */ ++#if LIBCURL_VERSION_NUM > 0x070fff /* CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE are available since curl 7.16.0 */ ++ case CURLOPT_MAX_SEND_SPEED_LARGE: ++ case CURLOPT_MAX_RECV_SPEED_LARGE: ++#endif + convert_to_long_ex(zvalue); + error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue)); + break; diff --git a/php-db.patch b/php-db.patch new file mode 100644 index 0000000..07032ec --- /dev/null +++ b/php-db.patch @@ -0,0 +1,26 @@ +--- php-5.3.16/ext/dba/config.m4.orig 2012-09-06 11:15:09.743002303 +0200 ++++ php-5.3.16/ext/dba/config.m4 2012-09-06 11:28:12.192974701 +0200 +@@ -287,6 +287,14 @@ + THIS_PREFIX=$i + THIS_INCLUDE=$i/db4/db.h + break ++ elif test -f "$i/include/db5.3/db.h"; then ++ THIS_PREFIX=$i ++ THIS_INCLUDE=$i/include/db5.3/db.h ++ break ++ elif test -f "$i/include/db5.2/db.h"; then ++ THIS_PREFIX=$i ++ THIS_INCLUDE=$i/include/db5.2/db.h ++ break + elif test -f "$i/include/db5.1/db.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/db5.1/db.h +@@ -329,7 +337,7 @@ + break + fi + done +- PHP_DBA_DB_CHECK(4, db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) ++ PHP_DBA_DB_CHECK(4, db-5.3 db-5.2 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) + fi + PHP_DBA_STD_RESULT(db4,Berkeley DB4) + diff --git a/php-dba-link.patch b/php-dba-link.patch new file mode 100644 index 0000000..125e9dc --- /dev/null +++ b/php-dba-link.patch @@ -0,0 +1,11 @@ +--- php-5.2.3/ext/dba/config.m4~ 2007-06-01 10:47:16.524748906 +0300 ++++ php-5.2.3/ext/dba/config.m4 2007-06-01 10:51:16.450167741 +0300 +@@ -186,6 +186,8 @@ + #endif + ],[ + THIS_LIBS=$LIB ++ LDFLAGS=$old_LDFLAGS ++ LIBS=$old_LIBS + lib_found=1 + ]) + ]) diff --git a/php-fcgi-error_log-no-newlines.patch b/php-fcgi-error_log-no-newlines.patch new file mode 100644 index 0000000..e35648e --- /dev/null +++ b/php-fcgi-error_log-no-newlines.patch @@ -0,0 +1,16 @@ +--- ./sapi/cgi/cgi_main.c~ 2007-08-09 02:51:57.000000000 +0300 ++++ ./sapi/cgi/cgi_main.c 2007-09-05 20:54:19.390089070 +0300 +@@ -558,12 +558,7 @@ + request = (fcgi_request*) SG(server_context); + if (request) { + int len = strlen(message); +- char *buf = malloc(len+2); +- +- memcpy(buf, message, len); +- memcpy(buf + len, "\n", sizeof("\n")); +- fcgi_write(request, FCGI_STDERR, buf, len+1); +- free(buf); ++ fcgi_write(request, FCGI_STDERR, message, len); + } else { + fprintf(stderr, "%s\n", message); + } diff --git a/php-fcgi-graceful.patch b/php-fcgi-graceful.patch new file mode 100644 index 0000000..26f86f3 --- /dev/null +++ b/php-fcgi-graceful.patch @@ -0,0 +1,77 @@ +Related links: + +http://bugs.php.net/bug.php?id=43224 this patch + +http://bugs.php.net/bug.php?id=41593 +http://bugs.php.net/bug.php?id=36158 +http://php-fpm.anight.org/ + +test script too: +\n"; +$i = 0; +while ($i < 35) { + echo (++$i), "
\n"; + flush(); + sleep(1); +} +echo "end!
\n"; +?> + +--- php-5.4.0alpha2/sapi/cgi/cgi_main.c~ 2011-08-05 13:26:14.000000000 +0300 ++++ php-5.4.0alpha2/sapi/cgi/cgi_main.c 2011-08-05 13:57:17.564708456 +0300 +@@ -101,6 +101,9 @@ + */ + static int parent = 1; + ++/* Socket we are listening on incoming connections */ ++static int fcgi_fd = 0; ++ + /** + * Process group + */ +@@ -1221,6 +1224,21 @@ + exit(0); + } + ++/** ++ * Graceful shutdown. Close listening sockets. ++ */ ++void fastcgi_graceful_shutdown(int signal) ++{ ++#ifdef DEBUG_FASTCGI ++ fprintf(stderr, "FastCGI graceful shutdown, pid %d\n", getpid()); ++#endif ++ ++ /* Close the listening socket so new processes can reuse the same port */ ++ closesocket(fcgi_fd); ++ fcgi_fd = 0; ++} ++ ++ + PHP_INI_BEGIN() + STD_PHP_INI_ENTRY("cgi.rfc2616_headers", "0", PHP_INI_ALL, OnUpdateBool, rfc2616_headers, php_cgi_globals_struct, php_cgi_globals) + STD_PHP_INI_ENTRY("cgi.nph", "0", PHP_INI_ALL, OnUpdateBool, nph, php_cgi_globals_struct, php_cgi_globals) +@@ -1764,7 +1764,6 @@ + int requests = 0; + int fastcgi; + char *bindpath = NULL; +- int fcgi_fd = 0; + fcgi_request *request = NULL; + int repeats = 1; + int benchmark = 0; +@@ -1579,9 +1596,13 @@ + parent = 0; + + /* don't catch our signals */ +- sigaction(SIGTERM, &old_term, 0); + sigaction(SIGQUIT, &old_quit, 0); + sigaction(SIGINT, &old_int, 0); ++ ++ /* call graceful shutdown handler for SIGTERM */ ++ act.sa_flags = 0; ++ act.sa_handler = fastcgi_graceful_shutdown; ++ sigaction(SIGTERM, &act, &old_term); + break; + case -1: + perror("php (pre-forking)"); diff --git a/php-filter-shared.patch b/php-filter-shared.patch new file mode 100644 index 0000000..3983c3f --- /dev/null +++ b/php-filter-shared.patch @@ -0,0 +1,14 @@ +--- php-5.2.0/ext/filter/config.m4~ 2006-01-14 17:04:12.000000000 +0200 ++++ php-5.2.0/ext/filter/config.m4 2006-11-20 00:06:09.272529853 +0200 +@@ -10,10 +10,7 @@ + if test "$PHP_FILTER" != "no"; then + + dnl Check if configure is the PHP core configure +- if test -n "$PHP_VERSION"; then +- dnl This extension can not be build as shared when in PHP core +- ext_shared=no +- else ++ if test -z "$PHP_VERSION"; then + dnl This is PECL build, check if bundled PCRE library is used + old_CPPFLAGS=$CPPFLAGS + CPPFLAGS=$INCLUDES diff --git a/php-fpm-config.patch b/php-fpm-config.patch new file mode 100644 index 0000000..03a9a7b --- /dev/null +++ b/php-fpm-config.patch @@ -0,0 +1,55 @@ +--- php-5.4.7/sapi/fpm/php-fpm.conf.in 2012-10-05 22:16:44.895998479 +0300 ++++ php-5.3.17/sapi/fpm/php-fpm.conf.in 2012-10-12 12:35:47.601602945 +0300 +@@ -12,7 +12,7 @@ + ; Relative path can also be used. They will be prefixed by: + ; - the global prefix if it's been set (-p arguement) + ; - @prefix@ otherwise +-;include=etc/fpm.d/*.conf ++;include=/etc/php/fpm.d/*.conf + + ;;;;;;;;;;;;;;;;;; + ; Global Options ; +@@ -22,14 +22,14 @@ + ; Pid file + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: none +-;pid = run/php-fpm.pid ++pid = /var/run/@processname@.pid + + ; Error log file + ; If it's set to "syslog", log is sent to syslogd instead of being written + ; in a local file. + ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@ + ; Default Value: log/php-fpm.log +-;error_log = log/php-fpm.log ++error_log = /var/log/php/@processname@.log + + ; syslog_facility is used to specify what type of program is logging the + ; message. This lets syslogd specify that messages from different facilities +@@ -93,7 +93,7 @@ + ; specific port; + ; '/path/to/unix/socket' - to listen on a unix socket. + ; Note: This value is mandatory. +-listen = 127.0.0.1:9000 ++listen = /var/run/php/@processname@.sock + + ; Set listen(2) backlog. A value of '-1' means unlimited. + ; Default Value: 128 (-1 on FreeBSD and OpenBSD) +@@ -105,7 +105,7 @@ + ; must be separated by a comma. If this value is left blank, connections will be + ; accepted from any ip address. + ; Default Value: any +-;listen.allowed_clients = 127.0.0.1 ++listen.allowed_clients = 127.0.0.1 + + ; Set permissions for unix socket, if one is used. In Linux, read/write + ; permissions must be set in order to allow connections from a web server. Many +@@ -277,7 +277,7 @@ + ; the current environment. + ; Default Value: clean env + ;env[HOSTNAME] = $HOSTNAME +-;env[PATH] = /usr/local/bin:/usr/bin:/bin ++env[PATH] = $PATH + ;env[TMP] = /tmp + ;env[TMPDIR] = /tmp + ;env[TEMP] = /tmp diff --git a/php-fpm-shared.patch b/php-fpm-shared.patch new file mode 100644 index 0000000..d137526 --- /dev/null +++ b/php-fpm-shared.patch @@ -0,0 +1,21 @@ +--- php-5.4.0alpha2/sapi/fpm/config.m4~ 2011-06-26 18:48:11.000000000 +0300 ++++ php-5.4.0alpha2/sapi/fpm/config.m4 2011-08-07 11:46:26.970876686 +0300 +@@ -458,7 +458,7 @@ + BUILD_FPM="\$(CC) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(NATIVE_RPATHS) \$(PHP_GLOBAL_OBJS:.lo=.o) \$(PHP_BINARY_OBJS:.lo=.o) \$(PHP_FPM_OBJS:.lo=.o) \$(PHP_FRAMEWORKS) \$(EXTRA_LIBS) \$(FPM_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" + ;; + *) +- BUILD_FPM="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_FPM_OBJS) \$(EXTRA_LIBS) \$(FPM_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" ++ BUILD_FPM="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) libphp_common.la \$(PHP_BINARY_OBJS) \$(PHP_FPM_OBJS) \$(EXTRA_LIBS) \$(SAPI_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" + ;; + esac + +--- php-5.4.0alpha2/sapi/fpm/Makefile.frag~ 2011-07-02 19:10:18.000000000 +0300 ++++ php-5.4.0alpha2/sapi/fpm/Makefile.frag 2011-08-07 11:47:41.737422848 +0300 +@@ -1,6 +1,6 @@ + fpm: $(SAPI_FPM_PATH) + +-$(SAPI_FPM_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_FPM_OBJS) ++$(SAPI_FPM_PATH): libphp_common.la $(PHP_BINARY_OBJS) $(PHP_FPM_OBJS) $(SAPI_EXTRA_DEPS) + $(BUILD_FPM) + + install-fpm: $(SAPI_FPM_PATH) diff --git a/php-fpm.init b/php-fpm.init new file mode 100644 index 0000000..020fc78 --- /dev/null +++ b/php-fpm.init @@ -0,0 +1,109 @@ +#!/bin/sh +# +# @processname@ PHP FastCGI Process Manager +# +# chkconfig: 345 80 30 +# +# description: PHP FastCGI Process Manager +# +# processname: @processname@ +# config: /etc/php/php-fpm.conf +# pidfile: /var/run/@processname@.pid +# + +# Source function library +. /etc/rc.d/init.d/functions + +# Get network config +. /etc/sysconfig/network + +configfile=/etc/php/php-fpm.conf +lockfile=/var/lock/subsys/@processname@ +pidfile=$(sed -ne 's,^pid\s*=\s*\(.*\),\1,p' $configfile) +pidfile=${pidfile:-/var/run/@processname@.pid} + +start() { + # Check if the service is already running? + if [ -f $lockfile ]; then + msg_already_running "PHP FastCGI Process Manager (@processname@)" + return + fi + + msg_starting "PHP FastCGI Process Manager (@processname@)" + daemon --pidfile $pidfile /usr/sbin/@processname@ --fpm-config $configfile + RETVAL=$? + [ $RETVAL -eq 0 ] && touch $lockfile +} + +stop() { + if [ ! -f $lockfile ]; then + msg_not_running "PHP FastCGI Process Manager (@processname@)" + return + fi + + # Stop daemons. + msg_stopping "PHP FastCGI Process Manager (@processname@)" + # always gracefully shut down @processname@ + /sbin/start-stop-daemon -q --stop -s QUIT --retry QUIT/600/TERM/10 --pidfile $pidfile + [ "$?" -eq 0 ] && ok || fail + rm -f $lockfile +} + +reload() { + local sig=${1:-HUP} + local retnr=${2:-7} + if [ ! -f $lockfile ]; then + msg_not_running "PHP FastCGI Process Manager (@processname@)" + RETVAL=$retnr + return + fi + + msg_reloading "PHP FastCGI Process Manager (@processname@)" + killproc --pidfile $pidfile @processname@ -$sig + RETVAL=$? +} + +condrestart() { + if [ ! -f $lockfile ]; then + msg_not_running "PHP FastCGI Process Manager (@processname@)" + RETVAL=$1 + return + fi + + stop + start +} + +RETVAL=0 +# See how we were called. +case "$1" in + start) + start + ;; + stop|quit) + stop + ;; + restart) + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload USR2 7 + ;; + flush-logs|logrotate) + reload USR1 0 + ;; + status) + status --pidfile $pidfile @processname@ + RETVAL=$? + ;; + *) + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|flush-logs|status}" + exit 3 + ;; +esac + +exit $RETVAL diff --git a/php-fpm.logrotate b/php-fpm.logrotate new file mode 100644 index 0000000..3e4c230 --- /dev/null +++ b/php-fpm.logrotate @@ -0,0 +1,11 @@ +/var/log/php/@processname@.log +{ + su root http + notifempty + missingok + create 600 root root + sharedscripts + postrotate + /sbin/service @processname@ flush-logs > /dev/null + endscript +} diff --git a/php-gd_imagerotate_enable.patch b/php-gd_imagerotate_enable.patch new file mode 100644 index 0000000..6d1e74c --- /dev/null +++ b/php-gd_imagerotate_enable.patch @@ -0,0 +1,173 @@ +diff -ur php5.3-200812262130/ext/gd/config.m4 mod/ext/gd/config.m4 +--- php5.3-200812262130/ext/gd/config.m4 2008-07-18 04:34:20.000000000 +0200 ++++ mod/ext/gd/config.m4 2008-12-27 01:12:23.000000000 +0100 +@@ -255,6 +255,7 @@ + PHP_CHECK_LIBRARY(gd, gdFreeFontCache, [AC_DEFINE(HAVE_GD_FREEFONTCACHE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) + PHP_CHECK_LIBRARY(gd, gdFontCacheMutexSetup, [AC_DEFINE(HAVE_GD_FONTMUTEX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) + PHP_CHECK_LIBRARY(gd, gdNewDynamicCtxEx, [AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) ++ PHP_CHECK_LIBRARY(gd, gdImageRotate, [AC_DEFINE(HAVE_GD_ROTATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) + ]) + + dnl +@@ -308,6 +309,7 @@ + AC_DEFINE(HAVE_GD_FONTMUTEX, 1, [ ]) + AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ]) + AC_DEFINE(HAVE_GD_GIF_CTX, 1, [ ]) ++ AC_DEFINE(HAVE_GD_ROTATE, 1, [ ]) + + dnl Make sure the libgd/ is first in the include path + GDLIB_CFLAGS="-DHAVE_LIBPNG" +diff -ur php5.3-200812262130/ext/gd/gd.c mod/ext/gd/gd.c +--- php5.3-200812262130/ext/gd/gd.c 2008-12-12 14:35:20.000000000 +0100 ++++ mod/ext/gd/gd.c 2008-12-27 01:18:43.000000000 +0100 +@@ -296,7 +296,7 @@ + ZEND_END_ARG_INFO() + #endif + +-#ifdef HAVE_GD_BUNDLED ++#ifdef HAVE_GD_ROTATE + ZEND_BEGIN_ARG_INFO_EX(arginfo_imagerotate, 0, 0, 3) + ZEND_ARG_INFO(0, im) + ZEND_ARG_INFO(0, angle) +@@ -927,9 +927,12 @@ + PHP_FE(imagegrabscreen, arginfo_imagegrabscreen) + #endif + ++#ifdef HAVE_GD_ROTATE ++ PHP_FE(imagerotate, arginfo_imagerotate) ++#endif ++ + #ifdef HAVE_GD_BUNDLED +- PHP_FE(imagerotate, arginfo_imagerotate) +- PHP_FE(imageantialias, arginfo_imageantialias) ++ PHP_FE(imageantialias, arginfo_imageantialias) + #endif + + #if HAVE_GD_IMAGESETTILE +@@ -1079,7 +1082,7 @@ + PHP_INI_ENTRY("gd.jpeg_ignore_warning", "0", PHP_INI_ALL, NULL) + PHP_INI_END() + /* }}} */ +- ++ + /* {{{ php_free_gd_image + */ + static void php_free_gd_image(zend_rsrc_list_entry *rsrc TSRMLS_DC) +@@ -1140,7 +1143,7 @@ + #endif + + REGISTER_INI_ENTRIES(); +- ++ + REGISTER_LONG_CONSTANT("IMG_GIF", 1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPG", 2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPEG", 2, CONST_CS | CONST_PERSISTENT); +@@ -1168,11 +1171,14 @@ + #ifdef GD2_FMT_COMPRESSED + REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT); + #endif +-#if HAVE_GD_BUNDLED ++#if HAVE_GD_ROTATE + REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT); ++#endif ++ ++#if HAVE_GD_BUNDLED + REGISTER_LONG_CONSTANT("GD_BUNDLED", 1, CONST_CS | CONST_PERSISTENT); + + /* Section Filters */ +@@ -1760,7 +1766,7 @@ + long cx, cy, w, h, ST, E, col, style; + gdImagePtr im; + int e, st; +- ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllllll", &IM, &cx, &cy, &w, &h, &ST, &E, &col, &style) == FAILURE) { + return; + } +@@ -2008,7 +2014,7 @@ + if ( handle == 0 ) { + goto clean; + } +- pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); ++ pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); + + if ( pPrintWindow ) { + pPrintWindow(window, memDC, (UINT) client_area); +@@ -2105,7 +2111,7 @@ + /* }}} */ + #endif /* PHP_WIN32 */ + +-#ifdef HAVE_GD_BUNDLED ++#ifdef HAVE_GD_ROTATE + /* {{{ proto resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent]) + Rotate an image using a custom angle */ + PHP_FUNCTION(imagerotate) +@@ -3362,7 +3368,7 @@ + { + zval *IM; + gdImagePtr im; +- ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &IM) == FAILURE) { + return; + } +@@ -3946,7 +3952,7 @@ + if (zend_hash_get_current_data_ex(HASH_OF(EXT), (void **) &item, &pos) == FAILURE) { + continue; + } +- ++ + if (strcmp("linespacing", key) == 0) { + convert_to_double_ex(item); + strex.flags |= gdFTEX_LINESPACE; +@@ -3972,7 +3978,7 @@ + #endif + + PHP_GD_CHECK_OPEN_BASEDIR((char *)fontname, "Invalid font filename"); +- ++ + #ifdef USE_GD_IMGSTRTTF + # if HAVE_GD_STRINGFTEX + if (extended) { +@@ -4373,11 +4379,11 @@ + if (argc != 3 && argc != 6) { + ZEND_WRONG_PARAM_COUNT(); + } +- ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "srl|lld", &str, &str_len, &fnt, &sz, &sp, &wd, &angle) == FAILURE) { + return; + } +- ++ + if (argc == 6) { + space = sp; + add_width = wd; +@@ -4562,7 +4568,7 @@ + #ifdef HAVE_GD_JPG + long ignore_warning; + #endif +- ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sslll", &f_org, &f_org_len, &f_dest, &f_dest_len, &height, &width, &threshold) == FAILURE) { + return; + } +diff -ur php5.3-200812262130/ext/gd/php_gd.h mod/ext/gd/php_gd.h +--- php5.3-200812262130/ext/gd/php_gd.h 2008-07-18 04:34:20.000000000 +0200 ++++ mod/ext/gd/php_gd.h 2008-12-27 01:20:04.000000000 +0100 +@@ -119,8 +119,11 @@ + PHP_FUNCTION(imagegrabscreen); + #endif + +-#ifdef HAVE_GD_BUNDLED ++#ifdef HAVE_GD_ROTATE + PHP_FUNCTION(imagerotate); ++#endif ++ ++#ifdef HAVE_GD_BUNDLED + PHP_FUNCTION(imageantialias); + #endif + diff --git a/php-imap-annotations.patch b/php-imap-annotations.patch new file mode 100644 index 0000000..d94dcbd --- /dev/null +++ b/php-imap-annotations.patch @@ -0,0 +1,305 @@ +Provides get/set ANNOTATIONS support to PHP. [Version: 5.2.6] + +diff -r 76412c484360 ext/imap/php_imap.c +--- a/ext/imap/php_imap.c Wed Dec 23 22:18:41 2009 +0100 ++++ b/ext/imap/php_imap.c Wed Dec 23 22:46:34 2009 +0100 +@@ -161,6 +161,22 @@ + ZEND_ARG_INFO(0, mailbox) + ZEND_END_ARG_INFO() + #endif ++#if defined(HAVE_IMAP2005) ++ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_setannotation, 0, 0, 5) ++ ZEND_ARG_INFO(0, stream_id) ++ ZEND_ARG_INFO(0, mailbox) ++ ZEND_ARG_INFO(0, entry) ++ ZEND_ARG_INFO(0, attr) ++ ZEND_ARG_INFO(0, value) ++ZEND_END_ARG_INFO() ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_getannotation, 0, 0, 4) ++ ZEND_ARG_INFO(0, stream_id) ++ ZEND_ARG_INFO(0, mailbox) ++ ZEND_ARG_INFO(0, entry) ++ ZEND_ARG_INFO(0, attr) ++ZEND_END_ARG_INFO() ++#endif + + ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_expunge, 0, 0, 1) + ZEND_ARG_INFO(0, stream_id) +@@ -402,6 +418,11 @@ + ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_status, 0, 0, 3) + ZEND_ARG_INFO(0, stream_id) + ZEND_ARG_INFO(0, mailbox) ++ ZEND_ARG_INFO(0, options) ++ZEND_END_ARG_INFO() ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_status_current, 0, 0, 2) ++ ZEND_ARG_INFO(0, stream_id) + ZEND_ARG_INFO(0, options) + ZEND_END_ARG_INFO() + +@@ -504,6 +525,7 @@ + PHP_FE(imap_binary, arginfo_imap_binary) + PHP_FE(imap_utf8, arginfo_imap_utf8) + PHP_FE(imap_status, arginfo_imap_status) ++ PHP_FE(imap_status_current, arginfo_imap_status_current) + PHP_FE(imap_mailboxmsginfo, arginfo_imap_mailboxmsginfo) + PHP_FE(imap_setflag_full, arginfo_imap_setflag_full) + PHP_FE(imap_clearflag_full, arginfo_imap_clearflag_full) +@@ -534,6 +556,10 @@ + PHP_FE(imap_setacl, arginfo_imap_setacl) + PHP_FE(imap_getacl, arginfo_imap_getacl) + #endif ++#if defined(HAVE_IMAP2005) ++ PHP_FE(imap_setannotation, arginfo_imap_setannotation) ++ PHP_FE(imap_getannotation, arginfo_imap_getannotation) ++#endif + + PHP_FE(imap_mail, arginfo_imap_mail) + +@@ -795,6 +821,30 @@ + /* }}} */ + #endif + ++#if defined(HAVE_IMAP2005) ++/* {{{ mail_getannotation ++ * ++ * Mail GET_ANNOTATION callback ++ * Called via the mail_parameter function in c-client:src/c-client/mail.c ++ */ ++void mail_getannotation(MAILSTREAM *stream, ANNOTATION *alist) ++{ ++ ANNOTATION_VALUES *cur; ++ ++ TSRMLS_FETCH(); ++ ++ /* walk through the ANNOTATION_VALUES */ ++ ++ for(cur = alist->values; cur; cur = cur->next) { ++ if (cur->value) ++ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, cur->value, strlen(cur->value), 1); ++ else ++ add_assoc_stringl(IMAPG(imap_annotation_list), cur->attr, "", 0, 1); ++ } ++} ++/* }}} */ ++#endif ++ + /* {{{ PHP_GINIT_FUNCTION + */ + static PHP_GINIT_FUNCTION(imap) +@@ -820,6 +870,7 @@ + #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) + imap_globals->quota_return = NIL; + imap_globals->imap_acl_list = NIL; ++ imap_globals->imap_annotation_list = NIL; + #endif + imap_globals->gets_stream = NIL; + } +@@ -1475,7 +1526,119 @@ + } + /* }}} */ + #endif /* HAVE_IMAP2000 || HAVE_IMAP2001 */ +- ++ ++#if defined(HAVE_IMAP2005) ++ ++/* {{{ proto bool imap_setannotation(resource stream_id, string mailbox, string entry, string attr, string value) ++ Sets an annotation for a given mailbox */ ++PHP_FUNCTION(imap_setannotation) ++{ ++ zval **streamind, **mailbox, **entry, **attr, **value; ++ pils *imap_le_struct; ++ long ret; ++ ++ // TODO: Use zend_parse_parameters here ++ if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &streamind, &mailbox, &entry, &attr, &value) == FAILURE) { ++ ZEND_WRONG_PARAM_COUNT(); ++ } ++ ++ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); ++ ++ convert_to_string_ex(mailbox); ++ convert_to_string_ex(entry); ++ convert_to_string_ex(attr); ++ convert_to_string_ex(value); ++ ++ // create annotation object ++ ANNOTATION *annotation = mail_newannotation(); ++ if (!annotation) ++ RETURN_FALSE; ++ annotation->values = mail_newannotationvalue(); ++ if (!annotation->values) { ++ mail_free_annotation(&annotation); ++ RETURN_FALSE; ++ } ++ ++ // fill in annotation values ++ annotation->mbox = Z_STRVAL_PP(mailbox); ++ annotation->entry = Z_STRVAL_PP(entry); ++ annotation->values->attr = Z_STRVAL_PP(attr); ++ annotation->values->value = Z_STRVAL_PP(value); ++ ++ ret = imap_setannotation(imap_le_struct->imap_stream, annotation); ++ ++ // make sure mail_free_annotation doesn't free our variables ++ annotation->mbox = NULL; ++ annotation->entry = NULL; ++ annotation->values->attr = NULL; ++ annotation->values->value = NULL; ++ mail_free_annotation(&annotation); ++ ++ RETURN_BOOL(ret); ++} ++/* }}} */ ++ ++/* {{{ proto array imap_getannotation(resource stream_id, string mailbox, string entry, string attr) ++ Gets the ACL for a given mailbox */ ++PHP_FUNCTION(imap_getannotation) ++{ ++ zval **streamind, **mailbox, **entry, **attr; ++ pils *imap_le_struct; ++ long ret; ++ ++ if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &streamind, &mailbox, &entry, &attr) == FAILURE) { ++ ZEND_WRONG_PARAM_COUNT(); ++ } ++ ++ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); ++ ++ convert_to_string_ex(mailbox); ++ convert_to_string_ex(entry); ++ convert_to_string_ex(attr); ++ ++ /* initializing the special array for the return values */ ++ if (array_init(return_value) == FAILURE) { ++ RETURN_FALSE; ++ } ++ ++ // fillup calling parameters ++ STRINGLIST *entries = mail_newstringlist(); ++ if (!entries) ++ RETURN_FALSE; ++ ++ STRINGLIST *cur = entries; ++ cur->text.data = (unsigned char *)cpystr(Z_STRVAL_PP(entry)); ++ cur->text.size = Z_STRLEN_PP(entry); ++ cur->next = NIL; ++ ++ STRINGLIST *attributes = mail_newstringlist(); ++ if (!attributes) ++ RETURN_FALSE; ++ cur = attributes; ++ cur->text.data = (unsigned char *)cpystr (Z_STRVAL_PP(attr)); ++ cur->text.size = Z_STRLEN_PP(attr); ++ cur->next = NIL; ++ ++ IMAPG(imap_annotation_list) = return_value; ++ ++ /* set the callback for the GET_ANNOTATION function */ ++ mail_parameters(NIL, SET_ANNOTATION, (void *) mail_getannotation); ++ ret = imap_getannotation(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox), entries, attributes); ++ ++ mail_free_stringlist(&entries); ++ mail_free_stringlist(&attributes); ++ ++ if (!ret) { ++ zval_dtor(return_value); ++ RETURN_FALSE; ++ } ++ ++ IMAPG(imap_annotation_list) = NIL; ++} ++/* }}} */ ++ ++#endif /* HAVE_IMAP2005 */ ++ + /* {{{ proto bool imap_expunge(resource stream_id) + Permanently delete all messages marked for deletion */ + PHP_FUNCTION(imap_expunge) +@@ -3118,6 +3281,42 @@ + } + /* }}} */ + ++/* {{{ proto object imap_status_current(resource stream_id, int options) ++ Get (cached) status info from current mailbox */ ++PHP_FUNCTION(imap_status_current) ++{ ++ zval **streamind, **pflags; ++ pils *imap_le_struct; ++ long flags = 0L; ++ ++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, &pflags) == FAILURE) { ++ ZEND_WRONG_PARAM_COUNT(); ++ } ++ ++ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); ++ ++ convert_to_long_ex(pflags); ++ flags = Z_LVAL_PP(pflags); ++ ++ if (object_init(return_value) == FAILURE) { ++ RETURN_FALSE; ++ } ++ ++ if (flags & SA_MESSAGES) { ++ add_property_long(return_value, "messages", imap_le_struct->imap_stream->nmsgs); ++ } ++ if (flags & SA_RECENT) { ++ add_property_long(return_value, "recent", imap_le_struct->imap_stream->recent); ++ } ++ if (flags & SA_UIDNEXT) { ++ add_property_long(return_value, "uidnext", imap_le_struct->imap_stream->uid_last+1); ++ } ++ if (flags & SA_UIDVALIDITY) { ++ add_property_long(return_value, "uidvalidity", imap_le_struct->imap_stream->uid_validity); ++ } ++} ++/* }}} */ ++ + /* {{{ proto object imap_status(resource stream_id, string mailbox, int options) + Get status info from a mailbox */ + PHP_FUNCTION(imap_status) +diff -r 76412c484360 ext/imap/php_imap.h +--- a/ext/imap/php_imap.h Wed Dec 23 22:18:41 2009 +0100 ++++ b/ext/imap/php_imap.h Wed Dec 23 22:46:34 2009 +0100 +@@ -153,6 +153,7 @@ + PHP_FUNCTION(imap_lsub_full); + PHP_FUNCTION(imap_create); + PHP_FUNCTION(imap_rename); ++PHP_FUNCTION(imap_status_current); + PHP_FUNCTION(imap_status); + PHP_FUNCTION(imap_bodystruct); + PHP_FUNCTION(imap_fetch_overview); +@@ -173,6 +174,9 @@ + PHP_FUNCTION(imap_thread); + PHP_FUNCTION(imap_timeout); + ++// TODO: Needs fixing in configure in ++#define HAVE_IMAP2005 1 ++ + #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) + PHP_FUNCTION(imap_get_quota); + PHP_FUNCTION(imap_get_quotaroot); +@@ -180,7 +184,10 @@ + PHP_FUNCTION(imap_setacl); + PHP_FUNCTION(imap_getacl); + #endif +- ++#if defined(HAVE_IMAP2005) ++PHP_FUNCTION(imap_setannotation); ++PHP_FUNCTION(imap_getannotation); ++#endif + + ZEND_BEGIN_MODULE_GLOBALS(imap) + char *imap_user; +@@ -211,6 +218,9 @@ + zval **quota_return; + zval *imap_acl_list; + #endif ++#if defined(HAVE_IMAP2005) ++ zval *imap_annotation_list; ++#endif + /* php_stream for php_mail_gets() */ + php_stream *gets_stream; + ZEND_END_MODULE_GLOBALS(imap) diff --git a/php-imap-myrights.patch b/php-imap-myrights.patch new file mode 100644 index 0000000..ddadbd3 --- /dev/null +++ b/php-imap-myrights.patch @@ -0,0 +1,92 @@ +diff -r 5daa8cce8706 ext/imap/php_imap.c +--- a/ext/imap/php_imap.c Wed Dec 23 22:46:34 2009 +0100 ++++ b/ext/imap/php_imap.c Wed Dec 23 22:49:02 2009 +0100 +@@ -157,6 +157,11 @@ + ZEND_END_ARG_INFO() + + ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_getacl, 0, 0, 2) ++ ZEND_ARG_INFO(0, stream_id) ++ ZEND_ARG_INFO(0, mailbox) ++ZEND_END_ARG_INFO() ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_imap_myrights, 0, 0, 2) + ZEND_ARG_INFO(0, stream_id) + ZEND_ARG_INFO(0, mailbox) + ZEND_END_ARG_INFO() +@@ -555,6 +560,7 @@ + PHP_FE(imap_set_quota, arginfo_imap_set_quota) + PHP_FE(imap_setacl, arginfo_imap_setacl) + PHP_FE(imap_getacl, arginfo_imap_getacl) ++ PHP_FE(imap_myrights, arginfo_imap_myrights) + #endif + #if defined(HAVE_IMAP2005) + PHP_FE(imap_setannotation, arginfo_imap_setannotation) +@@ -817,6 +823,20 @@ + for(; alist; alist = alist->next) { + add_assoc_stringl(IMAPG(imap_acl_list), alist->identifier, alist->rights, strlen(alist->rights), 1); + } ++} ++/* }}} */ ++ ++/* {{{ mail_myrights ++ * ++ * Mail MYRIGHTS callback ++ * Called via the mail_parameter function in c-client:src/c-client/mail.c ++ */ ++void mail_myrights(MAILSTREAM *stream, char *mailbox, char *rights) ++{ ++ TSRMLS_FETCH(); ++ ++ ZVAL_STRING(IMAPG(imap_acl_list), rights, 1) ++ + } + /* }}} */ + #endif +@@ -1525,6 +1545,36 @@ + IMAPG(imap_acl_list) = NIL; + } + /* }}} */ ++ ++/* {{{ proto string imap_myrights(resource stream_id, string mailbox) ++ Gets my rights (ACL) for a given mailbox */ ++PHP_FUNCTION(imap_myrights) ++{ ++ zval **streamind, **mailbox; ++ pils *imap_le_struct; ++ ++ if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind, &mailbox) == FAILURE) { ++ ZEND_WRONG_PARAM_COUNT(); ++ } ++ ++ ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); ++ ++ convert_to_string_ex(mailbox); ++ ++ IMAPG(imap_acl_list) = return_value; ++ ++ /* set the callback for the GET_ACL function */ ++ mail_parameters(NIL, SET_MYRIGHTS, (void *) mail_myrights); ++ if(!imap_myrights(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox))) { ++ php_error(E_WARNING, "c-client imap_myrights failed"); ++ zval_dtor(return_value); ++ RETURN_FALSE; ++ } ++ ++ IMAPG(imap_acl_list) = NIL; ++} ++/* }}} */ ++ + #endif /* HAVE_IMAP2000 || HAVE_IMAP2001 */ + + #if defined(HAVE_IMAP2005) +diff -r 5daa8cce8706 ext/imap/php_imap.h +--- a/ext/imap/php_imap.h Wed Dec 23 22:46:34 2009 +0100 ++++ b/ext/imap/php_imap.h Wed Dec 23 22:49:02 2009 +0100 +@@ -183,6 +183,7 @@ + PHP_FUNCTION(imap_set_quota); + PHP_FUNCTION(imap_setacl); + PHP_FUNCTION(imap_getacl); ++PHP_FUNCTION(imap_myrights); + #endif + #if defined(HAVE_IMAP2005) + PHP_FUNCTION(imap_setannotation); diff --git a/php-include_path.patch b/php-include_path.patch new file mode 100644 index 0000000..a1c3afe --- /dev/null +++ b/php-include_path.patch @@ -0,0 +1,11 @@ +--- php-5.2.0/configure.in.includedir ++++ php-5.2.0/configure.in +@@ -1101,7 +1101,7 @@ + EXPANDED_DATADIR=$datadir + EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` + EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` +-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR ++INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:${EXPANDED_DATADIR}/php + + exec_prefix=$old_exec_prefix + libdir=$old_libdir diff --git a/php-ini.patch b/php-ini.patch new file mode 100644 index 0000000..c651cf6 --- /dev/null +++ b/php-ini.patch @@ -0,0 +1,211 @@ +--- php-5.4.5/php.ini~ 2012-07-20 12:22:18.000000000 +0300 ++++ php-5.4.5/php.ini 2012-07-20 12:32:16.646206310 +0300 +@@ -82,6 +82,20 @@ + ; much more verbose when it comes to errors. We recommending using the + ; development version only in development environments as errors shown to + ; application users can inadvertently leak otherwise secure information. ++; ++; This is the default settings file for new PHP installations from ++; PLD Linux Distribution. ++; ++; It's based mainly on php.ini-production, but with some changes made with ++; security in mind (see below, consult also http://php.net/manual/en/security.php). ++; ++; Please note, that in PLD installations /etc/php/php.ini file ++; contains global settings for all SAPIs (cgi, cli, apache...), ++; and after reading this file, SAPI-specific file (/etc/php/php-cgi-fcgi.ini, ++; /etc/php/php-cli.ini, /etc/php/php-apache.ini...) is INCLUDED ++; (so you don't have to duplicate whole large file to override only ++; few options) ++ + + ;;;;;;;;;;;;;;;;;;; + ; Quick Reference ; +@@ -223,7 +237,7 @@ + ; Development Value: Off + ; Production Value: Off + ; http://php.net/short-open-tag +-short_open_tag = Off ++short_open_tag = On + + ; Allow ASP-style <% %> tags. + ; http://php.net/asp-tags +@@ -372,7 +372,7 @@ + ; threat in any way, but it makes it possible to determine whether you use PHP + ; on your server or not. + ; http://php.net/expose-php +-expose_php = On ++expose_php = Off + + ;;;;;;;;;;;;;;;;;;; + ; Resource Limits ; +@@ -725,7 +725,7 @@ + + ; Directory in which the loadable extensions (modules) reside. + ; http://php.net/extension-dir +-; extension_dir = "./" ++;extension_dir = "/usr/lib/php" + ; On windows: + ; extension_dir = "ext" + +@@ -735,53 +735,6 @@ + ; http://php.net/enable-dl + enable_dl = Off + +-; cgi.force_redirect is necessary to provide security running PHP as a CGI under +-; most web servers. Left undefined, PHP turns this on by default. You can +-; turn it off here AT YOUR OWN RISK +-; **You CAN safely turn this off for IIS, in fact, you MUST.** +-; http://php.net/cgi.force-redirect +-;cgi.force_redirect = 1 +- +-; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +-; every request. PHP's default behavior is to disable this feature. +-;cgi.nph = 1 +- +-; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +-; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +-; will look for to know it is OK to continue execution. Setting this variable MAY +-; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +-; http://php.net/cgi.redirect-status-env +-;cgi.redirect_status_env = +- +-; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +-; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +-; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +-; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +-; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +-; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +-; http://php.net/cgi.fix-pathinfo +-;cgi.fix_pathinfo=1 +- +-; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate +-; security tokens of the calling client. This allows IIS to define the +-; security context that the request runs under. mod_fastcgi under Apache +-; does not currently support this feature (03/17/2002) +-; Set to 1 if running under IIS. Default is zero. +-; http://php.net/fastcgi.impersonate +-;fastcgi.impersonate = 1 +- +-; Disable logging through FastCGI connection. PHP's default behavior is to enable +-; this feature. +-;fastcgi.logging = 0 +- +-; cgi.rfc2616_headers configuration option tells PHP what type of headers to +-; use when sending HTTP response code. If it's set 0 PHP sends Status: header that +-; is supported by Apache. When this option is set to 1 PHP will send +-; RFC2616 compliant header. +-; Default is zero. +-; http://php.net/cgi.rfc2616-headers +-;cgi.rfc2616_headers = 0 +- + ;;;;;;;;;;;;;;;; + ; File Uploads ; + ;;;;;;;;;;;;;;;; +@@ -859,52 +812,9 @@ + ; If you only provide the name of the extension, PHP will look for it in its + ; default extension directory. + ; +-; Windows Extensions +-; Note that ODBC support is built in, so no dll is needed for it. +-; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) +-; extension folders as well as the separate PECL DLL download (PHP 5). +-; Be sure to appropriately set the extension_dir directive. +-; +-;extension=php_bz2.dll +-;extension=php_curl.dll +-;extension=php_fileinfo.dll +-;extension=php_gd2.dll +-;extension=php_gettext.dll +-;extension=php_gmp.dll +-;extension=php_intl.dll +-;extension=php_imap.dll +-;extension=php_interbase.dll +-;extension=php_ldap.dll +-;extension=php_mbstring.dll +-;extension=php_exif.dll ; Must be after mbstring as it depends on it +-;extension=php_mysql.dll +-;extension=php_mysqli.dll +-;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client +-;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client +-;extension=php_openssl.dll +-;extension=php_pdo_firebird.dll +-;extension=php_pdo_mysql.dll +-;extension=php_pdo_oci.dll +-;extension=php_pdo_odbc.dll +-;extension=php_pdo_pgsql.dll +-;extension=php_pdo_sqlite.dll +-;extension=php_pgsql.dll +-;extension=php_pspell.dll +-;extension=php_shmop.dll +- +-; The MIBS data available in the PHP distribution must be installed. +-; See http://www.php.net/manual/en/snmp.installation.php +-;extension=php_snmp.dll +- +-;extension=php_soap.dll +-;extension=php_sockets.dll +-;extension=php_sqlite3.dll +-;extension=php_sybase_ct.dll +-;extension=php_tidy.dll +-;extension=php_xmlrpc.dll +-;extension=php_xsl.dll +-;extension=php_zip.dll +- ++; Ideally in PLD Linux you should install appropriate php- or ++; php-pecl- package. ++; + ;;;;;;;;;;;;;;;;;;; + ; Module Settings ; + ;;;;;;;;;;;;;;;;;;; +@@ -938,9 +848,9 @@ + ;filter.default_flags = + + [iconv] +-;iconv.input_encoding = ISO-8859-1 +-;iconv.internal_encoding = ISO-8859-1 +-;iconv.output_encoding = ISO-8859-1 ++iconv.input_encoding = UTF-8 ++iconv.internal_encoding = UTF-8 ++iconv.output_encoding = UTF-8 + + [intl] + ;intl.default_locale = +@@ -1152,6 +1062,9 @@ + ; http://php.net/mysql.connect-timeout + mysql.connect_timeout = 60 + ++; The name of the character set to use as the default character set. ++;mysql.connect_charset=utf8 ++ + ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and + ; SQL-Errors will be displayed. + ; http://php.net/mysql.trace-mode +@@ -1191,6 +1104,9 @@ + ; http://php.net/mysqli.default-socket + mysqli.default_socket = + ++; The name of the character set to use as the default character set. ++;mysqli.connect_charset=utf8 ++ + ; Default host for mysql_connect() (doesn't apply in safe mode). + ; http://php.net/mysqli.default-host + mysqli.default_host = +@@ -1357,7 +1273,7 @@ + + [browscap] + ; http://php.net/browscap +-;browscap = extra/browscap.ini ++browscap = /etc/php/browscap.ini + + [Session] + ; Handler used to store/retrieve data. +@@ -1822,7 +1738,7 @@ + + ; Sets the directory name where SOAP extension will put cache files. + ; http://php.net/soap.wsdl-cache-dir +-soap.wsdl_cache_dir="/tmp" ++soap.wsdl_cache_dir="/var/cache/php" + + ; (time to live) Sets the number of second while cached file will be used + ; instead of original one. diff --git a/php-krb5-ac.patch b/php-krb5-ac.patch new file mode 100644 index 0000000..c7bddd1 --- /dev/null +++ b/php-krb5-ac.patch @@ -0,0 +1,11 @@ +--- php-5.3.3/acinclude.m4.orig 2010-10-19 21:38:42.000000000 +0200 ++++ php-5.3.3/acinclude.m4 2010-10-19 22:53:11.792893220 +0200 +@@ -2252,7 +2252,7 @@ + KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi` + KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi` + +- if test -n "$KERBEROS_LIBS" && test -n "$KERBEROS_CFLAGS"; then ++ if test -n "$KERBEROS_LIBS" || test -n "$KERBEROS_CFLAGS"; then + found_kerberos=yes + PHP_EVAL_LIBLINE($KERBEROS_LIBS, $1) + PHP_EVAL_INCLINE($KERBEROS_CFLAGS) diff --git a/php-libpq_fs_h_path.patch b/php-libpq_fs_h_path.patch new file mode 100644 index 0000000..df29656 --- /dev/null +++ b/php-libpq_fs_h_path.patch @@ -0,0 +1,12 @@ +diff -urN php5.3-200803022130/ext/pgsql/php_pgsql.h mod/ext/pgsql/php_pgsql.h +--- php5.3-200803022130/ext/pgsql/php_pgsql.h 2008-01-30 11:31:48.000000000 +0000 ++++ mod/ext/pgsql/php_pgsql.h 2008-03-02 22:27:42.292062316 +0000 +@@ -41,7 +41,7 @@ + #define PHP_PGSQL_API __declspec(dllimport) + #endif + #else +-#include ++#include + # if defined(__GNUC__) && __GNUC__ >= 4 + # define PHP_PGSQL_API __attribute__ ((visibility("default"))) + # else diff --git a/php-libtool.patch b/php-libtool.patch new file mode 100644 index 0000000..f9713d8 --- /dev/null +++ b/php-libtool.patch @@ -0,0 +1,31 @@ +--- php-5.4.6/scripts/phpize.in~ 2012-08-23 03:02:42.000000000 +0300 ++++ php-5.4.6/scripts/phpize.in 2012-08-23 10:16:37.011306948 +0300 +@@ -6,10 +6,16 @@ + exec_prefix="`eval echo @exec_prefix@`" + phpdir="`eval echo @libdir@`/php/build" + includedir="`eval echo @includedir@`/php" ++aclocaldir="$prefix/share/aclocal" + builddir="`pwd`" + SED="@SED@" + +-FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool libtool.m4" ++FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool" ++if [ -f "$aclocaldir/ltsugar.m4" ]; then ++ LIBTOOL_FILES="libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4" ++else ++ LIBTOOL_FILES="libtool.m4" ++fi + FILES="acinclude.m4 Makefile.global config.sub config.guess ltmain.sh run-tests*.php" + CLEAN_FILES="$FILES *.o *.lo *.la .deps .libs/ build/ include/ modules/ install-sh \ + mkinstalldirs missing config.nice config.sub config.guess configure configure.in \ +@@ -145,8 +151,9 @@ phpize_copy_files() + test -d build || mkdir build + + (cd "$phpdir" && cp $FILES_BUILD "$builddir"/build) ++ (cd "$aclocaldir" && cp $LIBTOOL_FILES "$builddir"/build) + (cd "$phpdir" && cp $FILES "$builddir") +- (cd "$builddir" && cat acinclude.m4 ./build/libtool.m4 > aclocal.m4) ++ (cd "$builddir/build" && cat ../acinclude.m4 $LIBTOOL_FILES > ../aclocal.m4) + } + + phpize_replace_prefix() diff --git a/php-link-libs.patch b/php-link-libs.patch new file mode 100644 index 0000000..23a7acc --- /dev/null +++ b/php-link-libs.patch @@ -0,0 +1,35 @@ +--- php-4.3.0/configure.in.orig Fri Dec 27 05:07:18 2002 ++++ php-4.3.0/configure.in Thu Jan 2 20:34:43 2003 +@@ -288,7 +288,6 @@ + PHP_CHECK_FUNC(htonl, socket) + PHP_CHECK_FUNC(gethostname, nsl) + PHP_CHECK_FUNC(gethostbyaddr, nsl) +-PHP_CHECK_FUNC(yp_get_default_domain, nsl) + + PHP_CHECK_FUNC(dlopen, dl) + if test "$ac_cv_func_dlopen" = "yes"; then +--- php-5.2.0/acinclude.m4.orig 2006-12-22 21:52:13.766461055 +0100 ++++ php-5.2.0/acinclude.m4 2006-12-22 21:52:37.159794165 +0100 +@@ -1740,18 +1740,18 @@ + dnl Wrapper for AC_CHECK_LIB + dnl + AC_DEFUN([PHP_CHECK_LIBRARY], [ +- save_old_LDFLAGS=$LDFLAGS ++ save_old_LIBS=$LIBS + ac_stuff="$5" + + save_ext_shared=$ext_shared + ext_shared=yes +- PHP_EVAL_LIBLINE([$]ac_stuff, LDFLAGS) ++ PHP_EVAL_LIBLINE([$]ac_stuff, LIBS) + AC_CHECK_LIB([$1],[$2],[ +- LDFLAGS=$save_old_LDFLAGS ++ LIBS=$save_old_LIBS + ext_shared=$save_ext_shared + $3 + ],[ +- LDFLAGS=$save_old_LDFLAGS ++ LIBS=$save_old_LIBS + ext_shared=$save_ext_shared + unset ac_cv_lib_$1[]_$2 + $4 diff --git a/php-m4-divert.patch b/php-m4-divert.patch new file mode 100644 index 0000000..f4e5bb5 --- /dev/null +++ b/php-m4-divert.patch @@ -0,0 +1,79 @@ +diff -ur php-5.3.0.org/configure.in php-5.3.0/configure.in +--- php-5.3.0.org/configure.in 2009-06-26 17:44:18.000000000 +0200 ++++ php-5.3.0/configure.in 2009-08-18 12:45:19.126841759 +0200 +@@ -1,7 +1,7 @@ + ## $Id$ -*- autoconf -*- + dnl ## Process this file with autoconf to produce a configure script. + +-divert(1) ++divert(1001) + + dnl ## Diversion 1 is the autoconf + automake setup phase. We also + dnl ## set the PHP version, deal with platform-specific compile +@@ -308,7 +308,7 @@ + sinclude(TSRM/tsrm.m4) + + +-divert(2) ++divert(1002) + + dnl ## Diversion 2 is where we set PHP-specific options and come up + dnl ## with reasonable default values for them. We check for pthreads here +@@ -347,7 +347,7 @@ + PTHREADS_FLAGS + fi + +-divert(3) ++divert(1003) + + dnl ## In diversion 3 we check for compile-time options to the PHP + dnl ## core and how to deal with different system dependencies. +@@ -702,7 +702,7 @@ + PHP_CRYPT_R_STYLE + fi + +-divert(4) ++divert(1004) + + dnl ## In diversion 4 we check user-configurable general settings. + +@@ -943,7 +943,7 @@ + AC_MSG_RESULT([using system default]) + fi + +-divert(5) ++divert(1005) + + dnl ## In diversion 5 we check which extensions should be compiled. + dnl ## All of these are normally in the extension directories. +diff -ur php-5.3.0.org/ext/standard/config.m4 php-5.3.0/ext/standard/config.m4 +--- php-5.3.0.org/ext/standard/config.m4 2009-01-12 00:37:16.000000000 +0100 ++++ php-5.3.0/ext/standard/config.m4 2009-08-18 12:45:19.130174674 +0200 +@@ -1,6 +1,6 @@ + dnl $Id$ -*- autoconf -*- + +-divert(3)dnl ++divert(1003)dnl + + dnl + dnl Check if flush should be called explicitly after buffered io +@@ -220,7 +220,7 @@ + AC_CHECK_FUNCS(getcwd getwd asinh acosh atanh log1p hypot glob strfmon nice fpclass isinf isnan) + AC_FUNC_FNMATCH + +-divert(5)dnl ++divert(1005)dnl + + dnl + dnl Check if there is a support means of creating a new process +diff -ur php-5.3.0.org/scripts/phpize.m4 php-5.3.0/scripts/phpize.m4 +--- php-5.3.0.org/scripts/phpize.m4 2009-06-02 21:54:03.000000000 +0200 ++++ php-5.3.0/scripts/phpize.m4 2009-08-18 12:45:19.126841759 +0200 +@@ -1,6 +1,6 @@ + dnl This file becomes configure.in for self-contained extensions. + +-divert(1) ++divert(1001) + + AC_PREREQ(2.13) + AC_INIT(config.m4) diff --git a/php-m4.patch b/php-m4.patch new file mode 100644 index 0000000..e7981a4 --- /dev/null +++ b/php-m4.patch @@ -0,0 +1,11 @@ +--- php-5.3.7/build/buildcheck.sh~ 2011-05-18 21:55:34.000000000 +0200 ++++ php-5.3.7/build/buildcheck.sh 2011-08-20 18:28:38.223862911 +0200 +@@ -51,7 +51,7 @@ + echo " On Debian/Ubuntu both autoconf2.13 and autoconf2.59 packages exist." + echo " Install autoconf2.13 and set the PHP_AUTOCONF env var to " + echo " autoconf2.13 and try again." +- exit 1 ++ echo " CONTINUING ANYWAY." + else + echo "buildconf: autoconf version $ac_version (ok)" + fi diff --git a/php-mail.patch b/php-mail.patch new file mode 100644 index 0000000..272b2f9 --- /dev/null +++ b/php-mail.patch @@ -0,0 +1,84 @@ +--- php-5.2.0/ext/standard/mail.c 2006-12-01 14:20:27.881416250 +0100 ++++ php-5.2.4/ext/standard/mail.c 2007-08-31 19:25:50.777713042 +0300 +@@ -21,6 +21,8 @@ + #include + #include + #include ++#include ++#include + #include "php.h" + #include "ext/standard/info.h" + +@@ -35,6 +37,8 @@ + #include "php_ini.h" + #include "safe_mode.h" + #include "exec.h" ++#include "zend_operators.h" ++#include "zend_globals.h" + + #ifdef PHP_WIN32 + #include "win32/sendmail.h" +@@ -107,6 +111,18 @@ + return; + } + ++ /* search for To: and Subject: headers which should be specified in proper mail() parameters, not in additional headers */ ++ if (headers != NULL) { ++ if (strncasecmp(headers, "to:", sizeof("to:") - 1) == 0 || strcasestr(headers, "\nto:")) { ++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "To: headers aren't allowed in the additional_headers parameter. Use $to parameter for that. Mail not sent."); ++ RETURN_FALSE; ++ } ++ if (strncasecmp(headers, "subject:", sizeof("subject:") - 1) == 0 || strcasestr(headers, "\nsubject:")) { ++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Subject: headers aren't allowed in the additional_headers parameter. Use $subject parameter for that. Mail not sent."); ++ RETURN_FALSE; ++ } ++ } ++ + if (to_len > 0) { + to_r = estrndup(to, to_len); + for (; to_len; to_len--) { +@@ -231,8 +247,42 @@ + return 0; + } + #endif +- fprintf(sendmail, "To: %s\n", to); +- fprintf(sendmail, "Subject: %s\n", subject); ++ TSRMLS_FETCH(); ++ ++ if ((to != NULL) && (strlen(to)!=0)) { ++ fprintf(sendmail, "To: %s\n", to); ++ } ++ if ((subject != NULL) && (strlen(subject)!=0)) { ++ fprintf(sendmail, "Subject: %s\n", subject); ++ } ++ ++ if (PG(http_globals)[TRACK_VARS_SERVER]) { ++ zval **remote_addr, **server_name, **server_port, ++ **script_name, **http_user_agent; ++ ++ if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &remote_addr)==SUCCESS) { ++ convert_to_string_ex(remote_addr); ++ fprintf(sendmail, "HTTP-Posting-Client: %s\n", Z_STRVAL_PP(remote_addr)); ++ } ++ if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "SERVER_NAME", sizeof("SERVER_NAME"), (void **) &server_name)==SUCCESS) { ++ convert_to_string_ex(server_name); ++ fprintf(sendmail, "HTTP-Posting-URI: %s", Z_STRVAL_PP(server_name)); ++ if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "SERVER_PORT", sizeof("SERVER_PORT"), (void **) &server_port)==SUCCESS) { ++ convert_to_string_ex(server_port); ++ fprintf(sendmail, ":%s", Z_STRVAL_PP(server_port)); ++ } ++ if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &script_name)==SUCCESS) { ++ convert_to_string_ex(script_name); ++ fprintf(sendmail, "%s", Z_STRVAL_PP(script_name)); ++ } ++ fprintf(sendmail, "\n"); ++ } ++ if (zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "HTTP_USER_AGENT", sizeof("HTTP_USER_AGENT"), (void **) &http_user_agent)==SUCCESS) { ++ convert_to_string_ex(http_user_agent); ++ fprintf(sendmail, "HTTP-Posting-User-Agent: %s\n", Z_STRVAL_PP(http_user_agent)); ++ } ++ } ++ + if (hdr != NULL) { + fprintf(sendmail, "%s\n", hdr); + } diff --git a/php-mod_php.conf b/php-mod_php.conf new file mode 100644 index 0000000..9a9f298 --- /dev/null +++ b/php-mod_php.conf @@ -0,0 +1,22 @@ +LoadModule php5_module modules/libphp5.so + + + + AddType application/x-httpd-php .php + + + AddType application/x-httpd-php .php3 + + + AddType application/x-httpd-php .php4 + + + AddType application/x-httpd-php .php5 + + + AddType application/x-httpd-php .inc + + + AddType application/x-httpd-php .phtml + + diff --git a/php-mysql-charsetphpini.patch b/php-mysql-charsetphpini.patch new file mode 100644 index 0000000..d3a2a64 --- /dev/null +++ b/php-mysql-charsetphpini.patch @@ -0,0 +1,76 @@ +--- php-5.2.5_p20080206.orig/ext/mysql/php_mysql.c 2008-02-06 14:22:57.652600900 +0100 ++++ php-5.2.5_p20080206/ext/mysql/php_mysql.c 2008-02-06 14:24:40.216655403 +0100 +@@ -360,6 +360,7 @@ + PHP_INI_ENTRY("mysql.default_port", NULL, PHP_INI_ALL, OnMySQLPort) + STD_PHP_INI_ENTRY("mysql.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysql_globals, mysql_globals) + STD_PHP_INI_ENTRY("mysql.connect_timeout", "60", PHP_INI_ALL, OnUpdateLong, connect_timeout, zend_mysql_globals, mysql_globals) ++ STD_PHP_INI_ENTRY("mysql.connect_charset", NULL, PHP_INI_ALL, OnUpdateString, connect_charset, zend_mysql_globals, mysql_globals) + STD_PHP_INI_BOOLEAN("mysql.trace_mode", "0", PHP_INI_ALL, OnUpdateLong, trace_mode, zend_mysql_globals, mysql_globals) + PHP_INI_END() + /* }}} */ +@@ -376,6 +377,7 @@ + mysql_globals->connect_errno = 0; + mysql_globals->connect_error = NULL; + mysql_globals->connect_timeout = 0; ++ mysql_globals->connect_charset = NULL; + mysql_globals->trace_mode = 0; + mysql_globals->result_allocated = 0; + } +@@ -515,6 +517,7 @@ + { + char *user=NULL, *passwd=NULL, *host_and_port=NULL, *socket=NULL, *tmp=NULL, *host=NULL; + int user_len, passwd_len, host_len; ++ char *connect_charset=NULL; + char *hashed_details=NULL; + int hashed_details_length, port = MYSQL_PORT; + int client_flags = 0; +@@ -527,6 +530,7 @@ + + + connect_timeout = MySG(connect_timeout); ++ connect_charset = MySG(connect_charset); + + socket = MySG(default_socket); + +--- php-5.3.1/ext/mysql/php_mysql.c~ 2010-02-20 00:51:52.000000000 +0200 ++++ php-5.3.1/ext/mysql/php_mysql.c 2010-02-20 00:55:43.475653264 +0200 +@@ -777,6 +777,10 @@ + if (connect_timeout != -1) { + mysql_options(mysql->conn, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&connect_timeout); + } ++ ++ if (connect_charset != NULL) ++ mysql_options(mysql->conn, MYSQL_SET_CHARSET_NAME, connect_charset); ++ + #ifndef MYSQL_USE_MYSQLND + if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL) + #else +@@ -826,6 +830,8 @@ + #endif + if (mysql_ping(mysql->conn)) { + if (mysql_errno(mysql->conn) == 2006) { ++ if (connect_charset != NULL) ++ mysql_options(mysql->conn, MYSQL_SET_CHARSET_NAME, connect_charset); + #ifndef MYSQL_USE_MYSQLND + if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL) + #else +@@ -898,6 +904,9 @@ + if (connect_timeout != -1) + mysql_options(mysql->conn, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&connect_timeout); + ++ if (connect_charset != NULL) ++ mysql_options(mysql->conn, MYSQL_SET_CHARSET_NAME, connect_charset); ++ + #ifndef MYSQL_USE_MYSQLND + if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL) + #else +--- php-5.2.5_p20080206.orig/ext/mysql/php_mysql_structs.h 2008-02-06 14:22:57.510605687 +0100 ++++ php-5.2.5_p20080206/ext/mysql/php_mysql_structs.h 2008-02-06 14:23:27.764590355 +0100 +@@ -103,6 +103,7 @@ + long default_port; + char *default_host, *default_user, *default_password; + char *default_socket; ++ char *connect_charset; + char *connect_error; + long connect_errno; + long connect_timeout; diff --git a/php-mysql-nowarning.patch b/php-mysql-nowarning.patch new file mode 100644 index 0000000..ee6e11c --- /dev/null +++ b/php-mysql-nowarning.patch @@ -0,0 +1,22 @@ +--- php-5.3.6/ext/mysql/php_mysql.c~ 2011-04-13 20:47:29.263652096 +0200 ++++ php-5.3.6/ext/mysql/php_mysql.c 2011-04-13 20:48:30.206453191 +0200 +@@ -706,7 +706,7 @@ + + #if !defined(MYSQL_USE_MYSQLND) + if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) { +- php_error_docref(NULL TSRMLS_CC, E_WARNING, ++ php_error_docref(NULL TSRMLS_CC, E_NOTICE, + "Headers and client library minor version mismatch. Headers:%d Library:%ld", + MYSQL_VERSION_ID, mysql_get_client_version()); + } +--- php-5.3.6/ext/mysqli/mysqli_nonapi.c~ 2011-04-13 20:47:29.273652556 +0200 ++++ php-5.3.6/ext/mysqli/mysqli_nonapi.c 2011-04-13 20:48:41.070285840 +0200 +@@ -75,7 +75,7 @@ + + #if !defined(MYSQL_USE_MYSQLND) + if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) { +- php_error_docref(NULL TSRMLS_CC, E_WARNING, ++ php_error_docref(NULL TSRMLS_CC, E_NOTICE, + "Headers and client library minor version mismatch. Headers:%d Library:%ld", + MYSQL_VERSION_ID, mysql_get_client_version()); + } diff --git a/php-mysqli-charsetphpini.patch b/php-mysqli-charsetphpini.patch new file mode 100644 index 0000000..895a1a7 --- /dev/null +++ b/php-mysqli-charsetphpini.patch @@ -0,0 +1,52 @@ +--- php-5.3.1/ext/mysqli/mysqli.c~ 2010-02-20 00:58:34.000000000 +0200 ++++ php-5.3.1/ext/mysqli/mysqli.c 2010-02-20 01:00:22.459111311 +0200 +@@ -602,6 +602,7 @@ + #else + STD_PHP_INI_ENTRY("mysqli.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysqli_globals, mysqli_globals) + #endif ++ STD_PHP_INI_ENTRY("mysqli.connect_charset", NULL, PHP_INI_ALL, OnUpdateString, connect_charset, zend_mysqli_globals, mysqli_globals) + STD_PHP_INI_BOOLEAN("mysqli.reconnect", "0", PHP_INI_SYSTEM, OnUpdateLong, reconnect, zend_mysqli_globals, mysqli_globals) + STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysqli_globals, mysqli_globals) + #ifdef MYSQLI_USE_MYSQLND +@@ -475,6 +476,7 @@ + mysqli_globals->default_user = NULL; + mysqli_globals->default_pw = NULL; + mysqli_globals->default_socket = NULL; ++ mysqli_globals->connect_charset = NULL; + mysqli_globals->reconnect = 0; + mysqli_globals->report_mode = 0; + mysqli_globals->report_ht = 0; +--- php-5.3.4/ext/mysqli/mysqli_nonapi.c~ 2010-12-12 23:07:03.000000000 +0200 ++++ php-5.3.4/ext/mysqli/mysqli_nonapi.c 2010-12-12 23:07:36.497424912 +0200 +@@ -61,7 +61,7 @@ + MY_MYSQL *mysql = NULL; + MYSQLI_RESOURCE *mysqli_resource = NULL; + zval *object = getThis(); +- char *hostname = NULL, *username=NULL, *passwd=NULL, *dbname=NULL, *socket=NULL; ++ char *hostname = NULL, *username=NULL, *passwd=NULL, *dbname=NULL, *socket=NULL, *connect_charset=NULL; + int hostname_len = 0, username_len = 0, passwd_len = 0, dbname_len = 0, socket_len = 0; + zend_bool persistent = FALSE; + long port = 0, flags = 0; +@@ -241,6 +241,12 @@ + } + #endif + ++ connect_charset = MyG(connect_charset); ++ ++ if (connect_charset != NULL) { ++ mysql_options(mysql->mysql, MYSQL_SET_CHARSET_NAME, connect_charset); ++ } ++ + #if !defined(MYSQLI_USE_MYSQLND) + if (mysql_real_connect(mysql->mysql, hostname, username, passwd, dbname, port, socket, CLIENT_MULTI_RESULTS) == NULL) + #else +--- php-5.3.1/ext/mysqli/php_mysqli_structs.h~ 2009-10-14 16:51:25.000000000 +0300 ++++ php-5.3.1/ext/mysqli/php_mysqli_structs.h 2010-02-20 01:04:56.512214846 +0200 +@@ -358,6 +358,7 @@ + char *default_user; + char *default_socket; + char *default_pw; ++ char *connect_charset; + long reconnect; + long allow_local_infile; + long strict; diff --git a/php-no_pear_install.patch b/php-no_pear_install.patch new file mode 100644 index 0000000..f31c4a5 --- /dev/null +++ b/php-no_pear_install.patch @@ -0,0 +1,11 @@ +--- php-5.4.0alpha2/configure.in~ 2011-08-01 12:23:18.000000000 +0300 ++++ php-5.4.0alpha2/configure.in 2011-08-01 12:24:20.209743190 +0300 +@@ -1429,7 +1429,7 @@ + fi; + + all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_ZEND_EX) \$(PHP_BINARIES) $pharcmd" +-install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install" ++install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $pharcmd_install" + + PHP_SUBST(all_targets) + PHP_SUBST(install_targets) diff --git a/php-nohttpd.patch b/php-nohttpd.patch new file mode 100644 index 0000000..dcaafc4 --- /dev/null +++ b/php-nohttpd.patch @@ -0,0 +1,15 @@ +diff -urBb php-5.1.0RC1.org/sapi/apache2handler/config.m4 php-5.1.0RC1/sapi/apache2handler/config.m4 +--- php-5.1.0RC1.org/sapi/apache2handler/config.m4 2005-08-05 10:14:54.000000000 +0200 ++++ php-5.1.0RC1/sapi/apache2handler/config.m4 2005-08-25 15:09:38.486655320 +0200 +@@ -58,9 +58,9 @@ + + # Test that we're trying to configure with apache 2.x + PHP_AP_EXTRACT_VERSION($APXS_HTTPD) +- if test "$APACHE_VERSION" -le 2000000; then ++ if test "$APACHE_VERSION" -gt 0 -a "$APACHE_VERSION" -le 2000000; then + AC_MSG_ERROR([You have enabled Apache 2 support while your server is Apache 1.3. Please use the appropiate switch --with-apxs (without the 2)]) +- elif test "$APACHE_VERSION" -lt 2000044; then ++ elif test "$APACHE_VERSION" -gt 0 -a "$APACHE_VERSION" -lt 2000044; then + AC_MSG_ERROR([Please note that Apache version >= 2.0.44 is required]) + fi + diff --git a/php-oracle-instantclient.patch b/php-oracle-instantclient.patch new file mode 100644 index 0000000..d7b7617 --- /dev/null +++ b/php-oracle-instantclient.patch @@ -0,0 +1,63 @@ +--- php-5.3.3/ext/oci8/config.m4.orig 2010-06-25 23:18:09.000000000 +0200 ++++ php-5.3.3/ext/oci8/config.m4 2010-09-10 19:37:23.484315002 +0200 +@@ -304,6 +304,9 @@ + + AC_MSG_CHECKING([Oracle Instant Client SDK header directory]) + ++ dnl Header directory for Instant Client SDK PLD RPM install ++ OCISDKPLDINC=$PHP_OCI8_INSTANT_CLIENT/../include/oracle/client ++ + dnl Header directory for Instant Client SDK RPM install + OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_SED -e 's!^/usr/lib/oracle/\(.*\)/client\('${PHP_OCI8_IC_LIBDIR_SUFFIX}'\)*/lib[/]*$!/usr/include/oracle/\1/client\2!'` + +@@ -313,7 +316,11 @@ + dnl Header directory for manual installation + OCISDKMANINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_SED -e 's!\(.*\)/lib[/]*$!\1/include!'` + +- if test -f "$OCISDKRPMINC/oci.h"; then ++ if test -f "$OCISDKPLDINC/oci.h"; then ++ AC_MSG_RESULT($OCISDKPLDINC) ++ PHP_ADD_INCLUDE($OCISDKPLDINC) ++ OCI8INCDIR=$OCISDKPLDINC ++ elif test -f "$OCISDKRPMINC/oci.h"; then + AC_MSG_RESULT($OCISDKRPMINC) + PHP_ADD_INCLUDE($OCISDKRPMINC) + OCI8INCDIR=$OCISDKRPMINC +--- php-5.4.0alpha2/ext/pdo_oci/config.m4~ 2011-08-07 12:46:31.000000000 +0300 ++++ php-5.4.0alpha2/ext/pdo_oci/config.m4 2011-08-07 12:48:24.712839499 +0300 +@@ -6,8 +6,10 @@ + AC_DEFUN([AC_PDO_OCI_VERSION],[ + AC_MSG_CHECKING([Oracle version]) + for OCI_VER in $SUPPORTED_LIB_VERS; do +- if test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.$OCI_VER; then ++ if test -f $1/lib/libclntsh.$SHLIB_SUFFIX_NAME.$OCI_VER; then + PDO_OCI_VERSION="$OCI_VER" ++ elif test -f $1/libclntsh.$SHLIB_SUFFIX_NAME.$OCI_VER; then ++ PDO_OCI_VERSION="$OCI_VER" + fi + done + if test -z "$PDO_OCI_VERSION"; then +@@ -103,6 +103,9 @@ + elif test -f $PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include/oci.h ; then + PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include) + AC_MSG_RESULT($PDO_OCI_IC_PREFIX/$PDO_OCI_CLIENT_DIR/include) ++ elif test -f $PDO_OCI_IC_PREFIX/../include/oracle/client/oci.h ; then ++ PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/../include/oracle/client) ++ AC_MSG_RESULT($PDO_OCI_IC_PREFIX/../include/oracle/client) + else + AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your Instant Client install]) + fi +@@ -103,7 +103,12 @@ + else + AC_MSG_ERROR([I'm too dumb to figure out where the libraries are in your Instant Client install]) + fi +- PDO_OCI_VERSION="`echo $PDO_OCI_IC_VERS | cut -d. -f1-2`" ++ __PDO_OCI_VERSION="`echo $PDO_OCI_IC_VERS | cut -d. -f1-2`" ++ if test -n "$__PDO_OCI_VERSION" ; then ++ PDO_OCI_VERSION=$__PDO_OCI_VERSION ++ else ++ AC_PDO_OCI_VERSION($PDO_OCI_IC_PREFIX) ++ fi + else + AC_PDO_OCI_CHECK_LIB_DIR($PDO_OCI_DIR) + diff --git a/php-pdo_mysql-charsetphpini.patch b/php-pdo_mysql-charsetphpini.patch new file mode 100644 index 0000000..36a7c95 --- /dev/null +++ b/php-pdo_mysql-charsetphpini.patch @@ -0,0 +1,66 @@ +This is damn ugly patch if you need to update it, see PHP_5_2 branch version to +understand what this patch is supposed to do as in 5.3 the ini section is +enabled only if mysqlnd driver is enabled which makes the contexts really +small. + +--- php-5.3.1/ext/pdo_mysql/mysql_driver.c~ 2010-02-20 01:08:04.000000000 +0200 ++++ php-5.3.1/ext/pdo_mysql/mysql_driver.c 2010-02-20 01:08:52.982186037 +0200 +@@ -436,6 +436,7 @@ + pdo_mysql_db_handle *H; + int i, ret = 0; + char *host = NULL, *unix_socket = NULL; ++ char *connect_charset = NULL; + unsigned int port = 3306; + char *dbname; + struct pdo_data_src_parser vars[] = { +@@ -731,6 +731,12 @@ + password_len = strlen(dbh->password); + } + ++ connect_charset = PDO_MYSQL_G(connect_charset); ++ ++ if (connect_charset != NULL) { ++ mysql_options(H->server, MYSQL_SET_CHARSET_NAME, connect_charset); ++ } ++ + if (mysqlnd_connect(H->server, host, dbh->username, dbh->password, password_len, dbname, dbname_len, + port, unix_socket, connect_opts, PDO_MYSQL_G(mysqlnd_thd_zval_cache) TSRMLS_CC) == NULL) { + #else +--- php-5.3.3/ext/pdo_mysql/pdo_mysql.c~ 2010-07-24 19:23:14.000000000 +0300 ++++ php-5.3.3/ext/pdo_mysql/pdo_mysql.c 2010-07-24 19:24:48.363581841 +0300 +@@ -56,6 +56,7 @@ + #if PDO_DBG_ENABLED + STD_PHP_INI_ENTRY("pdo_mysql.debug", NULL, PHP_INI_SYSTEM, OnUpdateString, debug, zend_pdo_mysql_globals, pdo_mysql_globals) + #endif ++ STD_PHP_INI_ENTRY("pdo_mysql.connect_charset", NULL, PHP_INI_ALL, OnUpdateString, connect_charset, zend_pdo_mysql_globals, pdo_mysql_globals) + PHP_INI_END() + /* }}} */ + +@@ -89,9 +90,7 @@ + static PHP_MSHUTDOWN_FUNCTION(pdo_mysql) + { + php_pdo_unregister_driver(&pdo_mysql_driver); +-#if PDO_USE_MYSQLND + UNREGISTER_INI_ENTRIES(); +-#endif + + return SUCCESS; + } +@@ -161,6 +161,7 @@ + pdo_mysql_globals->debug = NULL; /* The actual string */ + pdo_mysql_globals->dbg = NULL; /* The DBG object*/ + #endif ++ pdo_mysql_globals->connect_charset = NULL; + } + /* }}} */ + +--- php-5.3.2RC3/ext/pdo_mysql/php_pdo_mysql_int.h~ 2010-02-04 11:37:38.000000000 +0200 ++++ php-5.3.2RC3/ext/pdo_mysql/php_pdo_mysql_int.h 2010-02-26 19:11:47.484055898 +0200 +@@ -69,6 +69,7 @@ + char *debug; /* The actual string */ + MYSQLND_DEBUG *dbg; /* The DBG object */ + #endif ++ char *connect_charset; + #if defined(PHP_WIN32) && !PDO_DBG_ENABLED + /* dummy member so we get at least one member in the struct + * and avoids build errors. diff --git a/php-pear.patch b/php-pear.patch new file mode 100644 index 0000000..400359d --- /dev/null +++ b/php-pear.patch @@ -0,0 +1,42 @@ +--- php-5.3.1/configure.in~ 2010-02-19 23:26:13.000000000 +0200 ++++ php-5.3.1/configure.in 2010-02-19 23:27:58.273207305 +0200 +@@ -934,11 +934,6 @@ + with_pear=no + fi + +-# If CLI is disabled -> disable PEAR +-if test "$PHP_CLI" = "no"; then +- with_pear=no +-fi +- + PHP_ARG_WITH(pear, [whether to install PEAR], + [ --with-pear=DIR Install PEAR in DIR [PREFIX/lib/php] + --without-pear Do not install PEAR], DEFAULT, yes) +@@ -1023,11 +1023,11 @@ + dnl + dnl PEAR dependancies + dnl +- if test "$PHP_XML" = "no"; then +- pear_error_msg="$pear_error_msg +- PEAR requires XML to be enabled. Add --enable-xml to the configure line. (or --without-pear)" +- fi +- ++dnl if test "$PHP_XML" = "no"; then ++dnl pear_error_msg="$pear_error_msg ++dnl PEAR requires XML to be enabled. Add --enable-xml to the configure line. (or --without-pear)" ++dnl fi ++dnl + dnl + dnl if test "$PHP_XMLRPC" = "no"; then + dnl pear_error_msg="$pear_error_msg +--- php-5.2.6/sapi/cli/config.m4~ 2008-11-16 18:35:31.000000000 +0200 ++++ php-5.2.6/sapi/cli/config.m4 2008-11-20 19:04:12.585061299 +0200 +@@ -4,7 +4,7 @@ + + PHP_ARG_ENABLE(cli,, + [ --disable-cli Disable building CLI version of PHP +- (this forces --without-pear)], yes, no) ++ ], yes, no) + + AC_MSG_CHECKING(for CLI build) + if test "$PHP_CLI" != "no"; then diff --git a/php-pldlogo.patch b/php-pldlogo.patch new file mode 100644 index 0000000..2b67aac --- /dev/null +++ b/php-pldlogo.patch @@ -0,0 +1,176 @@ +--- php-4.3.3RC3/ext/standard/info.c.orig 2003-06-19 18:43:41.000000000 +0200 ++++ php-4.3.3RC3/ext/standard/info.c 2003-08-16 21:37:18.705836072 +0200 +@@ -518,6 +518,21 @@ + PUTS(!sapi_module.phpinfo_as_text?"
":"\n"); + PUTS(zend_version); + php_info_print_box_end(); ++ /* PLD Linux */ ++ php_info_print_box_start(0); ++ if (expose_php && !sapi_module.phpinfo_as_text) { ++ PUTS("\"PLD\n"); ++ } ++ PUTS("This server is using PLD Linux."); ++ if (!sapi_module.phpinfo_as_text) ++ PUTS("
More information at http://www.pld-linux.org/.
\n"); ++ else ++ PUTS("\nMore information at http://www.pld-linux.org/.\n"); ++ php_info_print_box_end(); + efree(php_uname); + } + +diff -urN php-4.2.1RC2.org/ext/standard/info.h php-4.2.1RC2/ext/standard/info.h +--- php-4.2.1RC2.org/ext/standard/info.h Sat May 11 20:49:24 2002 ++++ php-4.2.1RC2/ext/standard/info.h Sat May 11 20:49:40 2002 +@@ -54,6 +54,7 @@ + #define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42" + #define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42" + #define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000" ++#define PLD_LOGO_GUID "PHPE9568F40-D428-11d2-A769-00AA001ACF42" + + PHP_FUNCTION(phpversion); + PHP_FUNCTION(phpinfo); +--- php-4.3.0.org/main/logos.h Sat May 11 20:49:24 2002 ++++ php-4.3.0/main/logos.h Sat May 11 20:50:32 2002 +@@ -1503,1 +1503,127 @@ + 249, 249, 207, 233, 5, 4, 0, 59 }; ++ ++ ++unsigned char pld_logo[] = { ++ 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, ++ 0, 13, 73, 72, 68, 82, 0, 0, 0, 80, ++ 0, 0, 0, 50, 8, 3, 0, 0, 0, 252, ++ 243, 172, 206, 0, 0, 2, 46, 80, 76, 84, ++ 69, 192, 192, 192, 0, 0, 99, 0, 0, 97, ++ 0, 0, 96, 0, 0, 95, 0, 0, 94, 0, ++ 0, 93, 0, 0, 91, 2, 2, 98, 6, 6, ++ 102, 6, 6, 101, 11, 11, 101, 14, 14, 111, ++ 15, 15, 103, 16, 16, 107, 21, 21, 111, 26, ++ 26, 111, 27, 27, 112, 28, 28, 115, 27, 27, ++ 109, 29, 29, 114, 30, 30, 114, 31, 31, 115, ++ 34, 34, 119, 36, 36, 120, 35, 35, 117, 36, ++ 36, 119, 36, 36, 117, 38, 38, 120, 40, 40, ++ 121, 42, 42, 123, 42, 42, 122, 41, 41, 118, ++ 42, 42, 120, 44, 44, 125, 47, 47, 128, 46, ++ 46, 120, 49, 49, 124, 53, 53, 130, 55, 55, ++ 133, 59, 59, 133, 63, 63, 138, 61, 61, 134, ++ 60, 60, 131, 58, 58, 125, 64, 64, 137, 63, ++ 63, 135, 60, 60, 129, 61, 61, 129, 65, 65, ++ 135, 67, 67, 138, 64, 64, 131, 69, 69, 140, ++ 71, 71, 141, 70, 70, 139, 70, 70, 137, 70, ++ 70, 136, 71, 71, 137, 68, 68, 131, 76, 76, ++ 142, 79, 79, 146, 78, 78, 143, 79, 79, 144, ++ 79, 79, 143, 74, 74, 134, 74, 74, 133, 83, ++ 83, 147, 89, 89, 154, 82, 82, 141, 90, 90, ++ 154, 90, 90, 153, 88, 88, 150, 91, 91, 153, ++ 90, 90, 151, 93, 93, 152, 98, 98, 159, 96, ++ 96, 156, 91, 91, 148, 96, 96, 155, 94, 94, ++ 152, 88, 88, 142, 89, 89, 143, 100, 100, 160, ++ 93, 93, 147, 103, 103, 162, 101, 101, 159, 92, ++ 92, 144, 96, 96, 149, 106, 106, 164, 98, 98, ++ 152, 96, 96, 148, 108, 108, 165, 106, 106, 162, ++ 101, 101, 154, 102, 102, 155, 103, 103, 156, 111, ++ 111, 167, 103, 103, 155, 112, 112, 167, 104, 104, ++ 155, 112, 112, 164, 116, 116, 168, 109, 109, 156, ++ 118, 118, 168, 127, 127, 177, 125, 125, 174, 125, ++ 125, 173, 111, 111, 154, 127, 127, 175, 124, 124, ++ 171, 128, 128, 176, 137, 137, 184, 137, 137, 183, ++ 128, 128, 171, 125, 125, 166, 140, 140, 185, 126, ++ 126, 167, 137, 137, 180, 143, 143, 185, 141, 141, ++ 183, 146, 146, 188, 144, 144, 185, 148, 148, 189, ++ 138, 138, 175, 137, 137, 174, 148, 148, 187, 149, ++ 149, 185, 158, 158, 195, 157, 157, 193, 153, 153, ++ 187, 164, 164, 199, 166, 166, 201, 165, 165, 200, ++ 156, 156, 188, 155, 155, 187, 160, 160, 192, 171, ++ 171, 204, 169, 169, 202, 170, 170, 202, 177, 177, ++ 209, 158, 158, 187, 174, 174, 205, 166, 166, 195, ++ 173, 173, 203, 173, 173, 202, 169, 169, 197, 167, ++ 167, 194, 168, 168, 194, 184, 184, 212, 173, 173, ++ 198, 187, 187, 213, 185, 185, 210, 183, 183, 208, ++ 189, 189, 214, 194, 194, 218, 189, 189, 213, 184, ++ 184, 207, 183, 183, 206, 195, 195, 218, 199, 199, ++ 222, 200, 200, 222, 196, 196, 217, 198, 198, 218, ++ 194, 194, 214, 188, 188, 207, 204, 204, 224, 197, ++ 197, 215, 209, 209, 227, 208, 208, 226, 207, 207, ++ 225, 206, 206, 224, 205, 205, 223, 208, 208, 225, ++ 205, 205, 222, 196, 196, 212, 211, 211, 227, 206, ++ 206, 222, 213, 213, 229, 209, 209, 224, 216, 216, ++ 231, 212, 212, 227, 202, 202, 216, 219, 219, 233, ++ 217, 217, 231, 204, 204, 217, 226, 226, 235, 152, ++ 38, 201, 129, 0, 0, 0, 1, 116, 82, 78, ++ 83, 0, 64, 230, 216, 102, 0, 0, 0, 1, ++ 98, 75, 71, 68, 185, 58, 184, 22, 96, 0, ++ 0, 2, 57, 73, 68, 65, 84, 120, 218, 99, ++ 96, 24, 156, 32, 195, 207, 92, 180, 159, 138, ++ 230, 21, 123, 173, 101, 8, 148, 164, 158, 121, ++ 249, 210, 64, 98, 134, 10, 245, 12, 228, 9, ++ 3, 18, 157, 217, 212, 51, 16, 236, 217, 164, ++ 30, 170, 153, 167, 92, 2, 36, 58, 100, 168, ++ 102, 158, 115, 20, 136, 204, 76, 161, 150, 121, ++ 221, 198, 32, 114, 150, 236, 60, 106, 25, 40, ++ 54, 29, 68, 26, 53, 80, 203, 60, 241, 62, ++ 16, 25, 212, 70, 45, 243, 52, 107, 64, 100, ++ 179, 22, 181, 204, 155, 239, 2, 166, 148, 106, ++ 169, 101, 160, 4, 152, 76, 42, 164, 150, 121, ++ 222, 213, 96, 202, 140, 90, 230, 109, 115, 7, ++ 83, 174, 147, 168, 101, 96, 197, 22, 16, 57, ++ 197, 2, 72, 180, 80, 197, 192, 157, 96, 82, ++ 61, 145, 129, 97, 38, 187, 19, 181, 92, 201, ++ 16, 193, 217, 10, 36, 125, 217, 52, 168, 100, ++ 222, 10, 249, 180, 34, 16, 29, 206, 42, 69, ++ 29, 3, 155, 96, 229, 106, 48, 155, 53, 85, ++ 12, 12, 113, 128, 177, 84, 89, 230, 82, 195, ++ 192, 232, 0, 24, 107, 29, 179, 28, 53, 12, ++ 76, 48, 128, 51, 35, 89, 167, 82, 193, 192, ++ 82, 94, 4, 155, 195, 146, 10, 6, 78, 96, ++ 222, 1, 103, 219, 50, 81, 195, 207, 76, 241, ++ 112, 230, 68, 150, 201, 84, 48, 208, 159, 101, ++ 25, 156, 205, 149, 76, 13, 39, 10, 240, 65, ++ 25, 11, 54, 120, 10, 18, 171, 137, 17, 78, ++ 96, 130, 173, 220, 252, 43, 193, 140, 133, 113, ++ 237, 28, 32, 101, 64, 64, 145, 129, 12, 12, ++ 142, 58, 149, 27, 65, 180, 97, 163, 16, 84, ++ 25, 65, 19, 241, 27, 8, 4, 75, 64, 68, ++ 110, 172, 30, 220, 64, 176, 51, 17, 8, 76, ++ 65, 25, 112, 63, 48, 194, 20, 97, 49, 122, ++ 209, 108, 32, 177, 88, 209, 30, 102, 32, 212, ++ 84, 168, 129, 16, 2, 137, 135, 112, 33, 92, ++ 4, 13, 212, 167, 130, 72, 17, 109, 152, 189, ++ 48, 3, 161, 16, 46, 132, 144, 35, 96, 96, ++ 153, 9, 136, 180, 211, 71, 87, 11, 119, 24, ++ 3, 134, 57, 248, 13, 172, 50, 5, 145, 233, ++ 10, 240, 240, 96, 100, 100, 68, 210, 11, 115, ++ 24, 52, 104, 81, 194, 16, 123, 228, 116, 197, ++ 128, 200, 114, 97, 130, 233, 5, 103, 148, 163, ++ 129, 222, 80, 16, 57, 221, 138, 90, 230, 49, ++ 172, 206, 2, 83, 53, 100, 185, 16, 27, 88, ++ 227, 6, 166, 230, 64, 67, 134, 17, 150, 228, ++ 144, 248, 48, 247, 48, 34, 83, 56, 193, 52, ++ 31, 48, 181, 137, 1, 158, 118, 145, 12, 68, ++ 209, 79, 68, 190, 4, 129, 149, 57, 168, 78, ++ 64, 55, 16, 97, 14, 146, 11, 225, 110, 71, ++ 214, 2, 149, 223, 236, 65, 158, 129, 12, 8, ++ 67, 144, 19, 20, 3, 195, 246, 60, 178, 12, ++ 100, 192, 105, 224, 230, 2, 36, 3, 209, 35, ++ 133, 120, 3, 17, 202, 150, 235, 46, 69, 15, ++ 117, 202, 92, 184, 202, 6, 191, 129, 24, 177, ++ 140, 97, 32, 35, 170, 129, 12, 106, 29, 152, ++ 6, 50, 50, 162, 196, 37, 138, 48, 186, 79, ++ 81, 5, 25, 24, 214, 215, 17, 149, 186, 200, ++ 0, 0, 218, 35, 72, 230, 144, 1, 81, 42, ++ 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, ++ 96, 130 }; +diff -urN php-4.2.1RC2.org/main/php_logos.c php-4.2.1RC2/main/php_logos.c +--- php-4.2.1RC2.org/main/php_logos.c Sat May 11 20:49:24 2002 ++++ php-4.2.1RC2/main/php_logos.c Sat May 11 20:51:05 2002 +@@ -56,6 +56,7 @@ + php_register_info_logo(PHP_LOGO_GUID , "image/gif", php_logo , sizeof(php_logo)); + php_register_info_logo(PHP_EGG_LOGO_GUID, "image/gif", php_egg_logo, sizeof(php_egg_logo)); + php_register_info_logo(ZEND_LOGO_GUID , "image/gif", zend_logo , sizeof(zend_logo)); ++ php_register_info_logo(PLD_LOGO_GUID , "image/png", pld_logo , sizeof(pld_logo)); + + return SUCCESS; + } diff --git a/php-readline.patch b/php-readline.patch new file mode 100644 index 0000000..01a0578 --- /dev/null +++ b/php-readline.patch @@ -0,0 +1,11 @@ +--- php-5.4.0alpha2/sapi/cli/config.m4~ 2011-08-05 12:59:18.000000000 +0300 ++++ php-5.4.0alpha2/sapi/cli/config.m4 2011-08-05 13:23:40.356628679 +0300 +@@ -31,7 +31,7 @@ + BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -Lnetware -lphp5lib -o \$(SAPI_CLI_PATH)" + ;; + *) +- BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) libphp_common.la \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CLI_PATH)" ++ BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) libphp_common.la \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) \$(READLINE_SHARED_LIBADD) -o \$(SAPI_CLI_PATH)" + ;; + esac + diff --git a/php-sapi-ini-file.patch b/php-sapi-ini-file.patch new file mode 100644 index 0000000..7ceb984 --- /dev/null +++ b/php-sapi-ini-file.patch @@ -0,0 +1,79 @@ +--- php-5.4.0RC3/main/php_ini.c~ 2011-12-10 03:35:27.000000000 +0200 ++++ php-5.4.0RC3/main/php_ini.c 2011-12-10 03:36:08.930154336 +0200 +@@ -358,6 +358,11 @@ + } + /* }}} */ + ++static int php_csort(const struct dirent **a, const struct dirent **b) ++{ ++ return strcmp((*a)->d_name,(*b)->d_name); ++} ++ + /* {{{ php_init_config + */ + int php_init_config(TSRMLS_D) +@@ -480,6 +485,24 @@ + } + } + } ++ /* Search (global) php.ini file in search path */ ++ if (!fh.handle.fp) { ++ fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC); ++ if (fh.handle.fp) { ++ fh.filename = php_ini_opened_path; ++ //PG(safe_mode) = safe_mode_state; ++ PG(open_basedir) = open_basedir; ++ fh.type = ZEND_HANDLE_FP; ++ zend_parse_ini_file(&fh, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash TSRMLS_CC); ++ //safe_mode_state = PG(safe_mode); ++ open_basedir = PG(open_basedir); ++ //PG(safe_mode) = 0; ++ PG(open_basedir) = NULL; ++ fh.handle.fp = NULL; ++ efree(php_ini_opened_path); ++ fh.filename = php_ini_opened_path = NULL; ++ } ++ } + + /* Otherwise search for php-%sapi-module-name%.ini file in search path */ + if (!fh.handle.fp) { +@@ -492,14 +515,6 @@ + fh.filename = php_ini_opened_path; + } + } +- +- /* If still no ini file found, search for php.ini file in search path */ +- if (!fh.handle.fp) { +- fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC); +- if (fh.handle.fp) { +- fh.filename = php_ini_opened_path; +- } +- } + } + + if (free_ini_search_path) { +@@ -627,12 +627,14 @@ + zend_llist scanned_ini_list; + zend_llist_element *element; + int l, total_l = 0; ++ const char *fmt = "%s:" PHP_CONFIG_FILE_PATH "/%s.d"; + + /* List of found ini files */ + zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); + + /* Split by paths_separator and load ini-files from all paths */ +- path_copy = estrdup(php_ini_scanned_path); ++ path_copy = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name)); ++ sprintf(path_copy, fmt, php_ini_scanned_path, sapi_module.name); + ini_path = php_strtok_r(path_copy, paths_separator, &last); + + while (ini_path != NULL) { +@@ -636,7 +653,7 @@ + struct dirent **namelist; + int ini_path_len = strlen(ini_path); + +- if ((ndir = php_scandir(ini_path, &namelist, 0, php_alphasort)) > 0) { ++ if ((ndir = php_scandir(ini_path, &namelist, 0, php_csort)) > 0) { + memset(&fh2, 0, sizeof(fh2)); + + for (i = 0; i < ndir; i++) { diff --git a/php-sh.patch b/php-sh.patch new file mode 100644 index 0000000..e2c6770 --- /dev/null +++ b/php-sh.patch @@ -0,0 +1,13 @@ +--- php-5.1.6/acinclude.m4.orig 2006-11-21 10:43:13.179505000 +0100 ++++ php-5.1.6/acinclude.m4 2006-11-21 10:55:32.479505000 +0100 +@@ -68,8 +68,8 @@ + changequote({,}) + ep_dir="`echo $1|$SED 's%/*[^/][^/]*/*$%%'`" + changequote([,]) +- ep_realdir="`(cd \"$ep_dir\" && pwd)`" +- $2="$ep_realdir/`basename \"$1\"`" ++ ep_realdir="$(cd "$ep_dir" && pwd)" ++ $2="$ep_realdir/$(basename "$1")" + fi + ]) + diff --git a/php-shared.patch b/php-shared.patch new file mode 100644 index 0000000..2aaa1d5 --- /dev/null +++ b/php-shared.patch @@ -0,0 +1,73 @@ +--- php-5.2.4/Makefile.global~ 2007-08-31 19:13:58.000000000 +0300 ++++ php-5.2.4/Makefile.global 2007-08-31 19:19:33.799017413 +0300 +@@ -13,8 +13,12 @@ + + build-modules: $(PHP_MODULES) + +-libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) +- $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ ++libphp_common.la: $(PHP_GLOBAL_OBJS) ++ $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) -avoid-version $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ -release $(PHP_VERSION) ++ -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 ++ ++libphp$(PHP_MAJOR_VERSION).la: libphp_common.la $(PHP_SAPI_OBJS) ++ $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(phptempdir)/libphp_common.la $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ + -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 + + libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) +@@ -25,10 +29,10 @@ + install-sapi: $(OVERALL_TARGET) + @echo "Installing PHP SAPI module: $(PHP_SAPI)" + -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) +- -@if test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \ ++ -@if test ! -r $(phptempdir)/libphp_common.$(SHLIB_DL_SUFFIX_NAME); then \ + for i in 0.0.0 0.0 0; do \ +- if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \ +- $(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \ ++ if test -r $(phptempdir)/libphp_common.$(SHLIB_DL_SUFFIX_NAME).$$i; then \ ++ $(LN_S) $(phptempdir)/libphp_common.$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp_common.$(SHLIB_DL_SUFFIX_NAME); \ + break; \ + fi; \ + done; \ +--- php-5.4.0alpha2/sapi/cgi/config9.m4~ 2010-11-14 01:13:07.000000000 +0200 ++++ php-5.4.0alpha2/sapi/cgi/config9.m4 2011-08-01 10:28:47.495056372 +0300 +@@ -64,7 +64,7 @@ + BUILD_CGI="\$(CC) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(NATIVE_RPATHS) \$(PHP_GLOBAL_OBJS:.lo=.o) \$(PHP_BINARY_OBJS:.lo=.o) \$(PHP_CGI_OBJS:.lo=.o) \$(PHP_FRAMEWORKS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CGI_PATH)" + ;; + *) +- BUILD_CGI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_CGI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CGI_PATH)" ++ BUILD_CGI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) libphp_common.la \$(PHP_BINARY_OBJS) \$(PHP_CGI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CGI_PATH)" + ;; + esac + +--- php-5.4.0alpha2/sapi/cgi/Makefile.frag~ 2010-11-14 01:13:07.000000000 +0200 ++++ php-5.4.0alpha2/sapi/cgi/Makefile.frag 2011-08-01 12:21:29.155180914 +0300 +@@ -1,6 +1,6 @@ + cgi: $(SAPI_CGI_PATH) + +-$(SAPI_CGI_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_CGI_OBJS) ++$(SAPI_CGI_PATH): libphp_common.la $(PHP_BINARY_OBJS) $(PHP_CGI_OBJS) + $(BUILD_CGI) + + install-cgi: $(SAPI_CGI_PATH) +--- php-5.4.0alpha2/sapi/cli/config.m4~ 2011-06-20 23:27:39.000000000 +0300 ++++ php-5.4.0alpha2/sapi/cli/config.m4 2011-08-01 10:34:01.072624745 +0300 +@@ -31,7 +31,7 @@ + BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -Lnetware -lphp5lib -o \$(SAPI_CLI_PATH)" + ;; + *) +- BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CLI_PATH)" ++ BUILD_CLI="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) libphp_common.la \$(PHP_BINARY_OBJS) \$(PHP_CLI_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_CLI_PATH)" + ;; + esac + +--- php-5.4.0alpha2/sapi/cli/Makefile.frag~ 2011-01-24 00:40:35.000000000 +0200 ++++ php-5.4.0alpha2/sapi/cli/Makefile.frag 2011-08-01 12:22:28.627926487 +0300 +@@ -1,6 +1,6 @@ + cli: $(SAPI_CLI_PATH) + +-$(SAPI_CLI_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_CLI_OBJS) ++$(SAPI_CLI_PATH): libphp_common.la $(PHP_BINARY_OBJS) $(PHP_CLI_OBJS) + $(BUILD_CLI) + + install-cli: $(SAPI_CLI_PATH) diff --git a/php-silent-session-cleanup.patch b/php-silent-session-cleanup.patch new file mode 100644 index 0000000..5833736 --- /dev/null +++ b/php-silent-session-cleanup.patch @@ -0,0 +1,10 @@ +--- php-5.3.0/ext/session/mod_files.c~ 2009-05-18 18:10:09.000000000 +0200 ++++ php-5.3.0/ext/session/mod_files.c 2009-08-07 08:41:53.029357590 +0200 +@@ -217,7 +217,6 @@ + + dir = opendir(dirname); + if (!dir) { +- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "ps_files_cleanup_dir: opendir(%s) failed: %s (%d)", dirname, strerror(errno), errno); + return (0); + } + diff --git a/php-stupidapache_version.patch b/php-stupidapache_version.patch new file mode 100644 index 0000000..100ec4f --- /dev/null +++ b/php-stupidapache_version.patch @@ -0,0 +1,18 @@ +--- php-5.4.0alpha2/acinclude.m4 2011-08-07 21:13:21.581133944 +0300 ++++ php-5.4.0alpha2/acinclude.m4 2011-08-07 21:10:21.766717150 +0300 +@@ -2607,7 +2609,14 @@ + dnl version for apache1/2. + dnl + AC_DEFUN([PHP_AP_EXTRACT_VERSION],[ +- ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'` ++ PHP_ARG_WITH(apache-version, Set Apache version, ++ [ --with-apache-version=VERSION Set Apache version instead of detecting from httpd binary]) ++ ++ if test "$with_apache_version" != "no"; then ++ ac_output="foo bar baz $with_apache_version" ++ else ++ ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'` ++ fi + ac_IFS=$IFS + IFS="- /. + " diff --git a/php-systzdata.patch b/php-systzdata.patch new file mode 100644 index 0000000..f841e9b --- /dev/null +++ b/php-systzdata.patch @@ -0,0 +1,619 @@ +Add support for use of the system timezone database, rather +than embedding a copy. Discussed upstream but was not desired. + +History: +r9: fix another compile error without --with-system-tzdata configured (Michael Heimpold) +r8: fix compile error without --with-system-tzdata configured +r7: improve check for valid timezone id to exclude directories +r6: fix fd leak in r5, fix country code/BC flag use in + timezone_identifiers_list() using system db, + fix use of PECL timezonedb to override system db, +r5: reverts addition of "System/Localtime" fake tzname. + updated for 5.3.0, parses zone.tab to pick up mapping between + timezone name, country code and long/lat coords +r4: added "System/Localtime" tzname which uses /etc/localtime +r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert) +r2: add filesystem trawl to set up name alias index +r1: initial revision + +--- a/ext/date/lib/parse_tz.c ++++ b/ext/date/lib/parse_tz.c +@@ -24,6 +24,16 @@ + + #include "timelib.h" + ++#ifdef HAVE_SYSTEM_TZDATA ++#include ++#include ++#include ++#include ++#include ++ ++#include "php_scandir.h" ++#endif ++ + #include + + #ifdef HAVE_LOCALE_H +@@ -35,7 +45,12 @@ + #else + #include + #endif ++ ++#ifndef HAVE_SYSTEM_TZDATA + #include "timezonedb.h" ++#endif ++ ++#include + + #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__)) + # if defined(__LITTLE_ENDIAN__) +@@ -55,9 +70,14 @@ + + static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz) + { +- /* skip ID */ +- *tzf += 4; +- ++ if (memcmp(tzf, "TZif", 4) == 0) { ++ *tzf += 20; ++ return; ++ } ++ ++ /* skip ID */ ++ *tzf += 4; ++ + /* read BC flag */ + tz->bc = (**tzf == '\1'); + *tzf += 1; +@@ -260,7 +280,397 @@ void timelib_dump_tzinfo(timelib_tzinfo + } + } + +-static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb) ++#ifdef HAVE_SYSTEM_TZDATA ++ ++#ifdef HAVE_SYSTEM_TZDATA_PREFIX ++#define ZONEINFO_PREFIX HAVE_SYSTEM_TZDATA_PREFIX ++#else ++#define ZONEINFO_PREFIX "/usr/share/zoneinfo" ++#endif ++ ++/* System timezone database pointer. */ ++static const timelib_tzdb *timezonedb_system = NULL; ++ ++/* Hash table entry for the cache of the zone.tab mapping table. */ ++struct location_info { ++ char code[2]; ++ double latitude, longitude; ++ char name[64]; ++ char *comment; ++ struct location_info *next; ++}; ++ ++/* Cache of zone.tab. */ ++static struct location_info **system_location_table; ++ ++/* Size of the zone.tab hash table; a random-ish prime big enough to ++ * prevent too many collisions. */ ++#define LOCINFO_HASH_SIZE (1021) ++ ++static uint32_t tz_hash(const char *str) ++{ ++ const unsigned char *p = (const unsigned char *)str; ++ uint32_t hash = 5381; ++ int c; ++ ++ while ((c = *p++) != '\0') { ++ hash = (hash << 5) ^ hash ^ c; ++ } ++ ++ return hash % LOCINFO_HASH_SIZE; ++} ++ ++/* Parse an ISO-6709 date as used in zone.tab. Returns end of the ++ * parsed string on success, or NULL on parse error. On success, ++ * writes the parsed number to *result. */ ++static char *parse_iso6709(char *p, double *result) ++{ ++ double v, sign; ++ char *pend; ++ size_t len; ++ ++ if (*p == '+') ++ sign = 1.0; ++ else if (*p == '-') ++ sign = -1.0; ++ else ++ return NULL; ++ ++ p++; ++ for (pend = p; *pend >= '0' && *pend <= '9'; pend++) ++ ;; ++ ++ /* Annoying encoding used by zone.tab has no decimal point, so use ++ * the length to determine the format: ++ * ++ * 4 = DDMM ++ * 5 = DDDMM ++ * 6 = DDMMSS ++ * 7 = DDDMMSS ++ */ ++ len = pend - p; ++ if (len < 4 || len > 7) { ++ return NULL; ++ } ++ ++ /* p => [D]DD */ ++ v = (p[0] - '0') * 10.0 + (p[1] - '0'); ++ p += 2; ++ if (len == 5 || len == 7) ++ v = v * 10.0 + (*p++ - '0'); ++ /* p => MM[SS] */ ++ v += (10.0 * (p[0] - '0') ++ + p[1] - '0') / 60.0; ++ p += 2; ++ /* p => [SS] */ ++ if (len > 5) { ++ v += (10.0 * (p[0] - '0') ++ + p[1] - '0') / 3600.0; ++ p += 2; ++ } ++ ++ /* Round to five decimal place, not because it's a good idea, ++ * but, because the builtin data uses rounded data, so, match ++ * that. */ ++ *result = round(v * sign * 100000.0) / 100000.0; ++ ++ return p; ++} ++ ++/* This function parses the zone.tab file to build up the mapping of ++ * timezone to country code and geographic location, and returns a ++ * hash table. The hash table is indexed by the function: ++ * ++ * tz_hash(timezone-name) ++ */ ++static struct location_info **create_location_table(void) ++{ ++ struct location_info **li, *i; ++ char zone_tab[PATH_MAX]; ++ char line[512]; ++ FILE *fp; ++ ++ strncpy(zone_tab, ZONEINFO_PREFIX "/zone.tab", sizeof zone_tab); ++ ++ fp = fopen(zone_tab, "r"); ++ if (!fp) { ++ return NULL; ++ } ++ ++ li = calloc(LOCINFO_HASH_SIZE, sizeof *li); ++ ++ while (fgets(line, sizeof line, fp)) { ++ char *p = line, *code, *name, *comment; ++ uint32_t hash; ++ double latitude, longitude; ++ ++ while (isspace(*p)) ++ p++; ++ ++ if (*p == '#' || *p == '\0' || *p == '\n') ++ continue; ++ ++ if (!isalpha(p[0]) || !isalpha(p[1]) || p[2] != '\t') ++ continue; ++ ++ /* code => AA */ ++ code = p; ++ p[2] = 0; ++ p += 3; ++ ++ /* coords => [+-][D]DDMM[SS][+-][D]DDMM[SS] */ ++ p = parse_iso6709(p, &latitude); ++ if (!p) { ++ continue; ++ } ++ p = parse_iso6709(p, &longitude); ++ if (!p) { ++ continue; ++ } ++ ++ if (!p || *p != '\t') { ++ continue; ++ } ++ ++ /* name = string */ ++ name = ++p; ++ while (*p != '\t' && *p && *p != '\n') ++ p++; ++ ++ *p++ = '\0'; ++ ++ /* comment = string */ ++ comment = p; ++ while (*p != '\t' && *p && *p != '\n') ++ p++; ++ ++ if (*p == '\n' || *p == '\t') ++ *p = '\0'; ++ ++ hash = tz_hash(name); ++ i = malloc(sizeof *i); ++ memcpy(i->code, code, 2); ++ strncpy(i->name, name, sizeof i->name); ++ i->comment = strdup(comment); ++ i->longitude = longitude; ++ i->latitude = latitude; ++ i->next = li[hash]; ++ li[hash] = i; ++ /* printf("%s [%u, %f, %f]\n", name, hash, latitude, longitude); */ ++ } ++ ++ fclose(fp); ++ ++ return li; ++} ++ ++/* Return location info from hash table, using given timezone name. ++ * Returns NULL if the name could not be found. */ ++const struct location_info *find_zone_info(struct location_info **li, ++ const char *name) ++{ ++ uint32_t hash = tz_hash(name); ++ const struct location_info *l; ++ ++ if (!li) { ++ return NULL; ++ } ++ ++ for (l = li[hash]; l; l = l->next) { ++ if (strcasecmp(l->name, name) == 0) ++ return l; ++ } ++ ++ return NULL; ++} ++ ++/* Filter out some non-tzdata files and the posix/right databases, if ++ * present. */ ++static int index_filter(const struct dirent *ent) ++{ ++ return strcmp(ent->d_name, ".") != 0 ++ && strcmp(ent->d_name, "..") != 0 ++ && strcmp(ent->d_name, "posix") != 0 ++ && strcmp(ent->d_name, "posixrules") != 0 ++ && strcmp(ent->d_name, "right") != 0 ++ && strstr(ent->d_name, ".tab") == NULL; ++} ++ ++static int sysdbcmp(const void *first, const void *second) ++{ ++ const timelib_tzdb_index_entry *alpha = first, *beta = second; ++ ++ return strcmp(alpha->id, beta->id); ++} ++ ++ ++/* Create the zone identifier index by trawling the filesystem. */ ++static void create_zone_index(timelib_tzdb *db) ++{ ++ size_t dirstack_size, dirstack_top; ++ size_t index_size, index_next; ++ timelib_tzdb_index_entry *db_index; ++ char **dirstack; ++ ++ /* LIFO stack to hold directory entries to scan; each slot is a ++ * directory name relative to the zoneinfo prefix. */ ++ dirstack_size = 32; ++ dirstack = malloc(dirstack_size * sizeof *dirstack); ++ dirstack_top = 1; ++ dirstack[0] = strdup(""); ++ ++ /* Index array. */ ++ index_size = 64; ++ db_index = malloc(index_size * sizeof *db_index); ++ index_next = 0; ++ ++ do { ++ struct dirent **ents; ++ char name[PATH_MAX], *top; ++ int count; ++ ++ /* Pop the top stack entry, and iterate through its contents. */ ++ top = dirstack[--dirstack_top]; ++ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s", top); ++ ++ count = php_scandir(name, &ents, index_filter, php_alphasort); ++ ++ while (count > 0) { ++ struct stat st; ++ const char *leaf = ents[count - 1]->d_name; ++ ++ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s", ++ top, leaf); ++ ++ if (strlen(name) && stat(name, &st) == 0) { ++ /* Name, relative to the zoneinfo prefix. */ ++ const char *root = top; ++ ++ if (root[0] == '/') root++; ++ ++ snprintf(name, sizeof name, "%s%s%s", root, ++ *root ? "/": "", leaf); ++ ++ if (S_ISDIR(st.st_mode)) { ++ if (dirstack_top == dirstack_size) { ++ dirstack_size *= 2; ++ dirstack = realloc(dirstack, ++ dirstack_size * sizeof *dirstack); ++ } ++ dirstack[dirstack_top++] = strdup(name); ++ } ++ else { ++ if (index_next == index_size) { ++ index_size *= 2; ++ db_index = realloc(db_index, ++ index_size * sizeof *db_index); ++ } ++ ++ db_index[index_next++].id = strdup(name); ++ } ++ } ++ ++ free(ents[--count]); ++ } ++ ++ if (count != -1) free(ents); ++ free(top); ++ } while (dirstack_top); ++ ++ qsort(db_index, index_next, sizeof *db_index, sysdbcmp); ++ ++ db->index = db_index; ++ db->index_size = index_next; ++ ++ free(dirstack); ++} ++ ++#define FAKE_HEADER "1234\0??\1??" ++#define FAKE_UTC_POS (7 - 4) ++ ++/* Create a fake data segment for database 'sysdb'. */ ++static void fake_data_segment(timelib_tzdb *sysdb, ++ struct location_info **info) ++{ ++ size_t n; ++ char *data, *p; ++ ++ data = malloc(3 * sysdb->index_size + 7); ++ ++ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1); ++ ++ for (n = 0; n < sysdb->index_size; n++) { ++ const struct location_info *li; ++ timelib_tzdb_index_entry *ent; ++ ++ ent = (timelib_tzdb_index_entry *)&sysdb->index[n]; ++ ++ /* Lookup the timezone name in the hash table. */ ++ if (strcmp(ent->id, "UTC") == 0) { ++ ent->pos = FAKE_UTC_POS; ++ continue; ++ } ++ ++ li = find_zone_info(info, ent->id); ++ if (li) { ++ /* If found, append the BC byte and the ++ * country code; set the position for this ++ * section of timezone data. */ ++ ent->pos = (p - data) - 4; ++ *p++ = '\1'; ++ *p++ = li->code[0]; ++ *p++ = li->code[1]; ++ } ++ else { ++ /* If not found, the timezone data can ++ * point at the header. */ ++ ent->pos = 0; ++ } ++ } ++ ++ sysdb->data = (unsigned char *)data; ++} ++ ++/* Returns true if the passed-in stat structure describes a ++ * probably-valid timezone file. */ ++static int is_valid_tzfile(const struct stat *st) ++{ ++ return S_ISREG(st->st_mode) && st->st_size > 20; ++} ++ ++/* Return the mmap()ed tzfile if found, else NULL. On success, the ++ * length of the mapped data is placed in *length. */ ++static char *map_tzfile(const char *timezone, size_t *length) ++{ ++ char fname[PATH_MAX]; ++ struct stat st; ++ char *p; ++ int fd; ++ ++ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { ++ return NULL; ++ } ++ ++ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone); ++ ++ fd = open(fname, O_RDONLY); ++ if (fd == -1) { ++ return NULL; ++ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st)) { ++ close(fd); ++ return NULL; ++ } ++ ++ *length = st.st_size; ++ p = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); ++ close(fd); ++ ++ return p != MAP_FAILED ? p : NULL; ++} ++ ++#endif ++ ++static int inmem_seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb) + { + int left = 0, right = tzdb->index_size - 1; + #ifdef HAVE_SETLOCALE +@@ -299,36 +709,128 @@ static int seek_to_tz_position(const uns + return 0; + } + ++static int seek_to_tz_position(const unsigned char **tzf, char *timezone, ++ char **map, size_t *maplen, ++ const timelib_tzdb *tzdb) ++{ ++#ifdef HAVE_SYSTEM_TZDATA ++ if (tzdb == timezonedb_system) { ++ char *orig; ++ ++ orig = map_tzfile(timezone, maplen); ++ if (orig == NULL) { ++ return 0; ++ } ++ ++ (*tzf) = (unsigned char *)orig ; ++ *map = orig; ++ ++ return 1; ++ } ++ else ++#endif ++ { ++ return inmem_seek_to_tz_position(tzf, timezone, tzdb); ++ } ++} ++ + const timelib_tzdb *timelib_builtin_db(void) + { ++#ifdef HAVE_SYSTEM_TZDATA ++ if (timezonedb_system == NULL) { ++ timelib_tzdb *tmp = malloc(sizeof *tmp); ++ ++ tmp->version = "0.system"; ++ tmp->data = NULL; ++ create_zone_index(tmp); ++ system_location_table = create_location_table(); ++ fake_data_segment(tmp, system_location_table); ++ timezonedb_system = tmp; ++ } ++ ++ ++ return timezonedb_system; ++#else + return &timezonedb_builtin; ++#endif + } + + const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count) + { ++#ifdef HAVE_SYSTEM_TZDATA ++ *count = timezonedb_system->index_size; ++ return timezonedb_system->index; ++#else + *count = sizeof(timezonedb_idx_builtin) / sizeof(*timezonedb_idx_builtin); + return timezonedb_idx_builtin; ++#endif + } + + int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb) + { + const unsigned char *tzf; +- return (seek_to_tz_position(&tzf, timezone, tzdb)); ++ ++#ifdef HAVE_SYSTEM_TZDATA ++ if (tzdb == timezonedb_system) { ++ char fname[PATH_MAX]; ++ struct stat st; ++ ++ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) { ++ return 0; ++ } ++ ++ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone); ++ ++ return stat(fname, &st) == 0 && is_valid_tzfile(&st); ++ } ++#endif ++ ++ return (inmem_seek_to_tz_position(&tzf, timezone, tzdb)); + } + + timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb) + { + const unsigned char *tzf; ++ char *memmap = NULL; ++ size_t maplen; + timelib_tzinfo *tmp; + +- if (seek_to_tz_position(&tzf, timezone, tzdb)) { ++ if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) { + tmp = timelib_tzinfo_ctor(timezone); + + read_preamble(&tzf, tmp); + read_header(&tzf, tmp); + read_transistions(&tzf, tmp); + read_types(&tzf, tmp); +- read_location(&tzf, tmp); ++ ++#ifdef HAVE_SYSTEM_TZDATA ++ if (memmap) { ++ const struct location_info *li; ++ ++ /* TZif-style - grok the location info from the system database, ++ * if possible. */ ++ ++ if ((li = find_zone_info(system_location_table, timezone)) != NULL) { ++ tmp->location.comments = strdup(li->comment); ++ strncpy(tmp->location.country_code, li->code, 2); ++ tmp->location.longitude = li->longitude; ++ tmp->location.latitude = li->latitude; ++ tmp->bc = 1; ++ } ++ else { ++ strcpy(tmp->location.country_code, "??"); ++ tmp->bc = 0; ++ tmp->location.comments = strdup(""); ++ } ++ ++ /* Now done with the mmap segment - discard it. */ ++ munmap(memmap, maplen); ++ } else ++#endif ++ { ++ /* PHP-style - use the embedded info. */ ++ read_location(&tzf, tmp); ++ } + } else { + tmp = NULL; + } +--- a/ext/date/lib/timelib.m4 ++++ b/ext/date/lib/timelib.m4 +@@ -78,3 +78,17 @@ stdlib.h + + dnl Check for strtoll, atoll + AC_CHECK_FUNCS(strtoll atoll strftime) ++ ++PHP_ARG_WITH(system-tzdata, for use of system timezone data, ++[ --with-system-tzdata[=DIR] to specify use of system timezone data], ++no, no) ++ ++if test "$PHP_SYSTEM_TZDATA" != "no"; then ++ AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used]) ++ ++ if test "$PHP_SYSTEM_TZDATA" != "yes"; then ++ AC_DEFINE_UNQUOTED(HAVE_SYSTEM_TZDATA_PREFIX, "$PHP_SYSTEM_TZDATA", ++ [Define for location of system timezone data]) ++ fi ++fi ++ diff --git a/php-tds.patch b/php-tds.patch new file mode 100644 index 0000000..ef036a7 --- /dev/null +++ b/php-tds.patch @@ -0,0 +1,11 @@ +--- php-5.3.3/ext/sybase_ct/config.m4~ 2010-07-07 13:15:24.000000000 +0300 ++++ php-5.3.3/ext/sybase_ct/config.m4 2010-07-24 19:21:13.897144810 +0300 +@@ -31,7 +31,7 @@ + fi + + PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD) +- if test -f $SYBASE_CT_INCDIR/tds.h || test -f $SYBASE_CT_INCDIR/tds_sysdep_public.h; then ++ if test -f $SYBASE_CT_INCDIR/tds.h || test -f $SYBASE_CT_INCDIR/tds_sysdep_public.h || test -f $SYBASE_CT_INCDIR/sybdb.h; then + PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD) + SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lct" + elif test -f $SYBASE_CT_INCDIR/libsybct64; then diff --git a/php-threads-acfix.patch b/php-threads-acfix.patch new file mode 100644 index 0000000..2245eac --- /dev/null +++ b/php-threads-acfix.patch @@ -0,0 +1,38 @@ +diff -burN php-5.0.4RC1.orig/TSRM/threads.m4 php-5.0.4RC1/TSRM/threads.m4 +--- php-5.0.4RC1.orig/TSRM/threads.m4 2005-03-15 18:02:27.630294512 +0100 ++++ php-5.0.4RC1/TSRM/threads.m4 2005-03-15 18:07:05.301082136 +0100 +@@ -116,7 +116,6 @@ + else + save_CFLAGS=$CFLAGS + save_LIBS=$LIBS +- PTHREADS_ASSIGN_VARS + PTHREADS_CHECK_COMPILE + LIBS=$save_LIBS + CFLAGS=$save_CFLAGS +@@ -134,9 +133,10 @@ + break + fi + done ++ pthreads_working= + fi +-fi + ]) ++fi + + AC_CACHE_CHECK(for pthreads_lib, ac_cv_pthreads_lib,[ + ac_cv_pthreads_lib= +@@ -163,6 +163,7 @@ + dnl + dnl + AC_DEFUN([PTHREADS_ASSIGN_VARS],[ ++if test "$pthreads_assign_done" != "yes" ; then + if test -n "$ac_cv_pthreads_lib"; then + LIBS="$LIBS -l$ac_cv_pthreads_lib" + fi +@@ -170,4 +171,6 @@ + if test -n "$ac_cv_pthreads_cflags"; then + CFLAGS="$CFLAGS $ac_cv_pthreads_cflags" + fi ++pthreads_assign_done="yes" ++fi + ])dnl diff --git a/php-uint32_t.patch b/php-uint32_t.patch new file mode 100644 index 0000000..5e9ba01 --- /dev/null +++ b/php-uint32_t.patch @@ -0,0 +1,11 @@ +diff -ur php5.3-200903291030/Zend/zend_strtod.c mod/Zend/zend_strtod.c +--- php5.3-200903291030/Zend/zend_strtod.c 2009-03-18 12:36:20.000000000 +0100 ++++ mod/Zend/zend_strtod.c 2009-03-29 18:34:10.000000000 +0200 +@@ -93,6 +93,7 @@ + + #include + #include ++#include + + #ifdef ZTS + #include diff --git a/php-use-prog_sendmail.patch b/php-use-prog_sendmail.patch new file mode 100644 index 0000000..5f4af4e --- /dev/null +++ b/php-use-prog_sendmail.patch @@ -0,0 +1,15 @@ +--- php-5.2.6/acinclude.m4~ 2008-10-15 13:44:25.000000000 +0300 ++++ php-5.2.6/acinclude.m4 2008-10-15 13:55:05.359850285 +0300 +@@ -2037,8 +2037,10 @@ + dnl Search for the sendmail binary + dnl + AC_DEFUN([PHP_PROG_SENDMAIL], [ +- PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib +- AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH) ++ if test -z "$PROG_SENDMAIL"; then ++ PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib ++ AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH) ++ fi + PHP_SUBST(PROG_SENDMAIL) + ]) + diff --git a/php-zlib-for-getimagesize.patch b/php-zlib-for-getimagesize.patch new file mode 100644 index 0000000..9a2bc9d --- /dev/null +++ b/php-zlib-for-getimagesize.patch @@ -0,0 +1,42 @@ +make compressed .swf parsing possible, +link core php with -lz for getimagesize() +see also http://bugs.php.net/bug.php?id=29611 + +--- php-4.4.1/ext/standard/image.c 2005-07-27 14:22:36.000000000 +0300 ++++ /tmp/image.c 2006-01-06 19:14:00.000000000 +0200 +@@ -31,7 +31,7 @@ + #endif + #include "php_image.h" + +-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) ++#if HAVE_ZLIB + #include "zlib.h" + #endif + +@@ -80,7 +80,7 @@ + REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_CS | CONST_PERSISTENT); +-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) ++#if HAVE_ZLIB + REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_CS | CONST_PERSISTENT); + #endif + REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_CS | CONST_PERSISTENT); +@@ -184,7 +184,7 @@ + } + /* }}} */ + +-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) ++#if HAVE_ZLIB + /* {{{ php_handle_swc + */ + static struct gfxinfo *php_handle_swc(php_stream * stream TSRMLS_DC) +@@ -1267,7 +1290,7 @@ + result = php_handle_swf(stream TSRMLS_CC); + break; + case IMAGE_FILETYPE_SWC: +-#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) ++#if HAVE_ZLIB + result = php_handle_swc(stream TSRMLS_CC); + #else + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "The image is a compressed SWF file, but you do not have a static version of the zlib extension enabled."); diff --git a/php-zlib.patch b/php-zlib.patch new file mode 100644 index 0000000..1ee4b30 --- /dev/null +++ b/php-zlib.patch @@ -0,0 +1,15 @@ +diff -burN php-5.0.0b3/ext/zlib/zlib.c php-5.0.0b3-zlib/ext/zlib/zlib.c +--- php-5.0.0b3/ext/zlib/zlib.c 2003-09-26 10:09:53.000000000 +0200 ++++ php-5.0.0b3-zlib/ext/zlib/zlib.c 2003-12-27 00:40:53.000000000 +0100 +@@ -979,6 +979,11 @@ + + if (ZLIBG(output_handler) && strlen(ZLIBG(output_handler))) { + php_start_ob_buffer_named(ZLIBG(output_handler), 0, 1 TSRMLS_CC); ++ if (sapi_add_header("Content-Encoding: gzip", sizeof("Content-Encoding: gzip") - 1 , 1)!=FAILURE) { ++ if (sapi_add_header("Vary: Accept-Encoding", sizeof("Vary: Accept-Encoding") - 1, 1)==FAILURE) { ++ SG(sapi_headers).send_default_content_type = 0; ++ } ++ } + } + return SUCCESS; + } diff --git a/php.spec b/php.spec new file mode 100644 index 0000000..77f7746 --- /dev/null +++ b/php.spec @@ -0,0 +1,3263 @@ +# TODO 5.4: +# - do not remove PatchX: definitions until merged to HEAD, needed for tracking their state +# - check php-sapi-ini-file.patch for safe mode removal +# - update imap annotations patch (needs api porting) +# - update imap myrights patch (needs api porting) +# --with-libmbfl=DIR MBSTRING: Use external libmbfl. DIR is the libmbfl base install directory BUNDLED +# --with-onig=DIR MBSTRING: Use external oniguruma. DIR is the oniguruma install prefix. +# - uses libvpx for webp support, should use libwebp-devel instead? +# NOTE: mysqlnd does not support ssl or compression (see FAQ at http://dev.mysql.com/downloads/connector/php-mysqlnd/) +# UNPACKAGED EXTENSION NOTES: +# - com_dotnet is Win32-only +# TODO: +# - fileinfo extension bundles magic db in library: data_file.c (dump of magic.mgc) is 14M +# - 2.3M fileinfo.so php54-fileinfo-5.4.6-0.15.x86_64 +# - 2.3M fileinfo.so php-fileinfo-5.3.16-1.x86_64 +# - 13K fileinfo.so php-pecl-fileinfo-1.0.4-8.amd64 +# - ttyname_r() misdetected http://bugs.php.net/bug.php?id=48820 +# - wddx: restore session support (not compiled in due DL extension check) +# - deal with modules removed from php and not moved to PECL, still not obsoleted anywhere +# - removed from php 5.0 (currently in php4): +# db [pecl-svn], hyperwave [pecl-svn], java [pecl-svn], mcal [pecl-svn], qtdom [pecl-svn] +# - removed from php 5.1: +# oracle [pecl-svn] +# - removed from php 5.2: +# filepro [pecl-svn], hwapi [pecl-svn] +# - make additional headers and checking added by mail patch configurable +# - modularize standard (output from pure php -m)? +# - lib64 patch obsolete by $PHP_LIBDIR ? +# - WARNING: Phar: sha256/sha512 signature support disabled if ext/hash is +# built shared, also PHAR_HAVE_OPENSSL is false if openssl is built shared. +# make it runtime dep and add Suggests (or php warning messages) +# - some mods should be shared: +#$ php -m +# [PHP Modules] +#+Core +# date +#+ereg +# libxml +# Reflection +# +# Conditional build: +%bcond_with interbase_inst # use InterBase install., not Firebird (BR: proprietary libs) +%bcond_with oci8 # with Oracle oci8 extension module (BR: proprietary libs) +%bcond_with instantclient # build Oracle oci8 extension module against oracle-instantclient package +%bcond_with system_gd # with system gd (we prefer internal since it enables few more features) +%bcond_with system_libzip # with system libzip (reported broken currently) +%bcond_without curl # without CURL extension module +%bcond_without enchant # without Enchant extension module +%bcond_without filter # without filter extension module +%bcond_without imap # without IMAP extension module +%bcond_without interbase # without InterBase extension module +%bcond_without intl # without Intl extension module +%bcond_without kerberos5 # without Kerberos5 support +%bcond_without litespeed # build litespeed module +%bcond_without ldap # without LDAP extension module +%bcond_without mhash # without mhash extension (supported by hash extension) +%bcond_without mm # without mm support for session storage +%bcond_without mssql # without MS SQL extension module +# don't turn it on by default; see TODO item for mysqlnd in this spec +%bcond_with mysqlnd # with mysqlnd support in mysql related extensions +%bcond_without mysqli # without mysqli support (Requires mysql > 4.1) +%bcond_without odbc # without ODBC extension module +%bcond_without openssl # without OpenSSL support and OpenSSL extension (module) +%bcond_without pcre # without PCRE extension module +%bcond_without pdo_sqlite # without PDO SQLite extension module +%bcond_without pgsql # without PostgreSQL extension module +%bcond_without phar # without phar extension module +%bcond_without pspell # without pspell extension module +%bcond_without recode # without recode extension module +%bcond_without snmp # without SNMP extension module +%bcond_without sqlite2 # without SQLite extension module +%bcond_without sqlite3 # without SQLite3 extension module +%bcond_without sybase_ct # without Sybase-CT extension module +%bcond_without tidy # without Tidy extension module +%bcond_without webp # Without WebP support in GD extension (imagecreatefromwebp) +%bcond_without wddx # without WDDX extension module +%bcond_without xmlrpc # without XML-RPC extension module +%bcond_without apache1 # disable building Apache 1.3.x SAPI +%bcond_without apache2 # disable building Apache 2.x SAPI +%bcond_with zts # Zend Thread Safety +%bcond_without cgi # disable CGI/FCGI SAPI +%bcond_without fpm # disable FPM +%bcond_with embed # disable Embedded API +%bcond_without suhosin # with suhosin patch +%bcond_with tests # default off; test process very often hangs on builders, approx run time 45m; perform "make test" +%bcond_with gcov # Enable Code coverage reporting +%bcond_with type_hints # experimental support for strict typing/casting + +%define apxs1 /usr/sbin/apxs1 +%define apxs2 /usr/sbin/apxs + +# disable all sapis +%if %{with gcov} +%undefine with_apache1 +%undefine with_apache2 +%undefine with_cgi +%undefine with_litespeed +%endif + +# mm is not thread safe +%if %{with zts} +%undefine with_mm +%endif + +%ifnarch %{ix86} %{x8664} sparc sparcv9 alpha +# ppc disabled (broken on th-ppc) +%undefine with_interbase +%endif + +%ifnarch %{ix86} %{x8664} +# unsupported, see sapi/cgi/fpm/fpm_atomic.h +%undefine with_fpm +%endif + +%if 0 +%if %{without apache1} && %{without apache2} +ERROR: You need to select at least one Apache SAPI to build shared modules. +%endif +%endif + +# filter depends on pcre +%if %{without pcre} +%undefine with_filter +%endif + +%define orgname php +%define php_suffix 54 + +%define rel 2 +Summary: PHP: Hypertext Preprocessor +Summary(fr.UTF-8): Le langage de script embarque-HTML PHP +Summary(pl.UTF-8): Język skryptowy PHP +Summary(pt_BR.UTF-8): A linguagem de script PHP +Summary(ru.UTF-8): PHP Версии 5 - язык препроцессирования HTML-файлов, выполняемый на сервере +Summary(uk.UTF-8): PHP Версії 5 - мова препроцесування HTML-файлів, виконувана на сервері +Name: %{orgname}%{php_suffix} +Version: 5.4.14 +Release: %{rel}%{?with_type_hints:.th}%{?with_oci8:.oci} +Epoch: 4 +License: PHP +Group: Libraries +Source0: http://www.php.net/distributions/%{orgname}-%{version}.tar.bz2 +# Source0-md5: cfdc044be2c582991a1fe0967898fa38 +Source2: %{orgname}-mod_%{orgname}.conf +Source3: %{orgname}-cgi-fcgi.ini +Source4: %{orgname}-apache.ini +Source5: %{orgname}-cli.ini +# Taken from: http://browsers.garykeith.com/downloads.asp +Source9: %{orgname}_browscap.ini +Source10: %{orgname}-fpm.init +Source11: %{orgname}-fpm.logrotate +Source12: %{orgname}-branch.sh +Source13: dep-tests.sh +Source14: skip-tests.sh +Patch0: %{orgname}-shared.patch +Patch1: %{orgname}-pldlogo.patch +Patch2: %{orgname}-mail.patch +Patch3: %{orgname}-link-libs.patch +Patch4: %{orgname}-libpq_fs_h_path.patch +Patch5: %{orgname}-filter-shared.patch +Patch6: %{orgname}-build_modules.patch +Patch7: %{orgname}-sapi-ini-file.patch +Patch8: %{orgname}-config-file-scan-dir.patch +Patch9: %{orgname}-sh.patch +Patch10: %{orgname}-ini.patch +Patch11: embed.patch +%if %{with type_hints} +Patch12: http://ilia.ws/patch/type_hint_53_v2.txt +%endif +Patch14: %{orgname}-no_pear_install.patch +#Patch15: %{orgname}-zlib.patch # no longer needed? +Patch17: %{orgname}-readline.patch +Patch18: %{orgname}-nohttpd.patch +Patch19: %{orgname}-gd_imagerotate_enable.patch +Patch20: %{orgname}-uint32_t.patch +Patch21: %{orgname}-dba-link.patch +Patch22: %{orgname}-both-apxs.patch +Patch23: %{orgname}-builddir.patch +Patch24: %{orgname}-zlib-for-getimagesize.patch +Patch25: %{orgname}-stupidapache_version.patch +Patch26: %{orgname}-pear.patch +Patch27: %{orgname}-config-dir.patch +Patch29: %{orgname}-fcgi-graceful.patch +Patch31: %{orgname}-fcgi-error_log-no-newlines.patch +#Patch32: %{orgname}-curl-limit-speed.patch # applied upstream +Patch34: %{orgname}-libtool.patch +Patch35: %{orgname}-tds.patch +Patch36: %{orgname}-mysql-charsetphpini.patch +Patch37: %{orgname}-mysqli-charsetphpini.patch +Patch38: %{orgname}-pdo_mysql-charsetphpini.patch +Patch39: %{orgname}-use-prog_sendmail.patch +Patch41: %{orgname}-fpm-config.patch +Patch42: %{orgname}-fpm-shared.patch +Patch43: %{orgname}-silent-session-cleanup.patch +Patch44: %{orgname}-include_path.patch +Patch45: %{orgname}-imap-annotations.patch +Patch46: %{orgname}-imap-myrights.patch +Patch47: suhosin.patch +#Patch49: %{orgname}-m4-divert.patch # no longer needed, upstream supports new ac +Patch50: extension-shared-optional-dep.patch +Patch51: spl-shared.patch +Patch52: pcre-shared.patch +Patch53: fix-test-run.patch +#Patch54: mysqlnd-shared.patch # shared build supported upstream +Patch55: bug-52078-fileinode.patch +#Patch57: bug-52448.patch # outdated +Patch59: %{orgname}-systzdata.patch +Patch60: %{orgname}-oracle-instantclient.patch +#Patch61: %{orgname}-krb5-ac.patch # not needed on 5.4 anymore +Patch62: mcrypt-libs.patch +Patch63: %{orgname}-mysql-nowarning.patch +#Patch64: %{orgname}-m4.patch # not needed on 5.4 branch +Patch65: system-libzip.patch +Patch66: php-db.patch +URL: http://www.php.net/ +%{?with_interbase:%{!?with_interbase_inst:BuildRequires: Firebird-devel >= 1.0.2.908-2}} +%{?with_pspell:BuildRequires: aspell-devel >= 2:0.50.0} +BuildRequires: autoconf >= 2.59 +BuildRequires: automake >= 1.4d +BuildRequires: bison +BuildRequires: bzip2-devel +%{?with_curl:BuildRequires: curl-devel >= 7.12.0} +BuildRequires: cyrus-sasl-devel +BuildRequires: db-devel >= 4.0 +BuildRequires: elfutils-devel +%{?with_enchant:BuildRequires: enchant-devel >= 1.1.3} +#BuildRequires: fcgi-devel +%{?with_kerberos5:BuildRequires: heimdal-devel} +%{?with_system_libzip:BuildRequires: libzip-devel >= 0.10.1-2} +%{!?with_mysqlnd:BuildRequires: mysql-devel} +BuildRequires: pkgconfig +BuildRequires: sed >= 4.0 +%if %{with mssql} || %{with sybase_ct} +BuildRequires: freetds-devel >= 0.82 +%endif +BuildRequires: freetype-devel >= 2.0 +%if %{with system_gd} +BuildRequires: gd-devel >= 2.0.28-4 +BuildRequires: gd-devel(imagerotate) = 5.2.0 +%endif +BuildRequires: gdbm-devel +BuildRequires: gmp-devel +%{?with_imap:BuildRequires: imap-devel >= 1:2007e-2} +%{?with_intl:BuildRequires: libicu-devel} +BuildRequires: libjpeg-devel +BuildRequires: libltdl-devel >= 1.4 +BuildRequires: libmcrypt-devel >= 2.4.4 +BuildRequires: libpng-devel >= 1.0.8 +#BuildRequires: libtiff-devel +%{?with_webp:BuildRequires: libvpx-devel} +BuildRequires: tokyocabinet-devel +%if "%{pld_release}" != "ac" +BuildRequires: libtool >= 2:2.2 +%else +BuildRequires: libtool >= 1.4.3 +%endif +#BuildRequires: libwrap-devel +BuildRequires: libxml2-devel >= 1:2.7.6-4 +BuildRequires: libxslt-devel >= 1.1.0 +%{?with_mm:BuildRequires: mm-devel >= 1.3.0} +%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0} +%if %{with openssl} || %{with ldap} +BuildRequires: openssl-devel >= 0.9.7d +%endif +%{?with_gcov:BuildRequires: lcov} +%{?with_snmp:%{?with_tests:BuildRequires: mibs-net-snmp}} +%{?with_snmp:BuildRequires: net-snmp-devel >= 5.0.7} +%{?with_instantclient:BuildRequires: oracle-instantclient-devel} +BuildRequires: pam-devel +%{?with_pcre:BuildRequires: pcre-devel >= 8.10} +BuildRequires: pkgconfig +%{?with_pgsql:BuildRequires: postgresql-backend-devel >= 7.2} +%{?with_pgsql:BuildRequires: postgresql-devel} +BuildRequires: readline-devel +%{?with_recode:BuildRequires: recode-devel >= 3.5d-3} +BuildRequires: rpm >= 4.4.9-56 +BuildRequires: rpm-build >= 4.4.0 +BuildRequires: rpmbuild(macros) >= 1.566 +%if %{with sqlite3} || %{with pdo_sqlite} +BuildRequires: sqlite3-devel >= 3.3.9 +%endif +BuildRequires: t1lib-devel +%{?with_tidy:BuildRequires: tidy-devel} +%{?with_odbc:BuildRequires: unixODBC-devel} +%{?with_xmlrpc:BuildRequires: xmlrpc-epi-devel >= 0.54.1} +BuildRequires: zlib-devel >= 1.0.9 +%if %{with apache1} +BuildRequires: apache1-devel +%endif +%if %{with apache2} +BuildRequires: apache-devel >= 2.0.52-2 +BuildRequires: apr-devel >= 1:1.0.0 +BuildRequires: apr-util-devel >= 1:1.0.0 +%endif +%if %{with fpm} +#BuildRequires: judy-devel +%endif +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%define php_sysconfdir /etc/%{name} +%define php_extensiondir %{_libdir}/%{name} +%define _sysconfdir %{php_sysconfdir} + +# must be in sync with source. extra check ensuring that it is so is done in %%build +%define php_api_version 20100412 +%define zend_module_api 20100525 +%define zend_extension_api 220100525 + +# Extension versions +%define bz2ver 1.0 +%define enchantver 1.1.0 +%define fileinfover 1.0.5 +%define hashver 1.0 +%define intlver 1.1.0 +%define jsonver 1.2.1 +%define pharver 2.0.1 +%define sqlite3ver 0.7 +%define zipver 1.11.0 + +%define zend_zts %{!?with_zts:0}%{?with_zts:1} +%define php_debug %{!?debug:0}%{?debug:1} + +%if %{with gcov} +%undefine with_ccache +%endif + +%if %{with oci8} +# ORACLE_HOME is required for oci8 ext to build +%define _preserve_env %_preserve_env_base ORACLE_HOME +%endif + +%description +PHP is an HTML-embedded scripting language. PHP attempts to make it +easy for developers to write dynamically generated web pages. PHP also +offers built-in database integration for several commercial and +non-commercial database management systems, so writing a +database-enabled web page with PHP is fairly simple. The most common +use of PHP coding is probably as a replacement for CGI scripts. The +mod_php module enables the Apache web server to understand and process +the embedded PHP language in web pages. This package contains PHP +version %{version}. + +%description -l fr.UTF-8 +PHP est un langage de script embarque dans le HTM. PHP essaye de +rendre simple aux developpeurs d'ecrire des pages web generees +dynamiquement. PHP incorpore egalement une integration avec plusieurs +systemes de gestion de bases de donnees commerciaux et +non-connerciaux, qui rent facile la creation de pages web liees avec +des bases de donnees. L'utilisation la plus commune de PHP est +probablement en remplacement de scripts CGI. Le module mod_php permet +au serveur web Apache de comprendre et de traiter le langage PHP +integre dans des pages web. Ce package contient PHP version +%{version}. + +%description -l pl.UTF-8 +PHP jest językiem skryptowym, którego polecenia umieszcza się w +plikach HTML. Jest próbą ułatwienia programistom pisania dynamicznie +generowanych stron WWW. Oferuje także wbudowaną integrację z bazami +danych dla kilku komercyjnych i niekomercyjnych systemów baz danych, +co czyni tworzenie stron korzystających z baz danych w miarę łatwym. +Najczęściej PHP jest używany prawdopodobnie jako zamiennik skryptów +CGI. Moduł mod_php pozwala serwerowi WWW Apache rozumieć i przetwarzać +język PHP osadzony w stronach. Ten pakiet zawiera PHP w wersji +%{version}. + +%description -l pt_BR.UTF-8 +PHP: Preprocessador de Hipertexto versão 4 é uma linguagem script +embutida em HTML. Muito de sua sintaxe é emprestada de C, Java e Perl, +com algumas características únicas, específicas ao PHP. O objetivo da +linguagem é permitir que desenvolvedores web escrevam páginas +dinamicamente geradas de forma rápida. + +%description -l ru.UTF-8 +PHP - это язык написания скриптов, встраиваемых в HTML-код. PHP +предлагает интерграцию с множеством СУБД, поэтому написание скриптов +для работы с базами данных относительно просто. Наиболее популярное +использование PHP - замена для CGI скриптов. + +%description -l uk.UTF-8 +PHP - це мова написання скриптів, що вбудовуються в HTML-код. PHP +пропонує інтеграцію з багатьма СУБД, тому написання скриптів для +роботи з базами даних є доволі простим. Найбільш популярне +використання PHP - заміна для CGI скриптів. + +%package -n apache1-mod_%{name} +Summary: PHP DSO module for Apache 1.3.x +Summary(pl.UTF-8): Moduł DSO (Dynamic Shared Object) PHP dla Apache 1.3.x +Group: Development/Languages/PHP +Requires(triggerpostun): sed >= 4.0 +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: apache1(EAPI) >= 1.3.33-2 +Requires: apache1-mod_mime +Provides: webserver(php) = %{version} +Obsoletes: apache-mod_php < 1:4.1.1 +Obsoletes: phpfi + +%description -n apache1-mod_%{name} +PHP as DSO module for Apache 1.3.x. + +%description -n apache1-mod_%{name} -l pl.UTF-8 +PHP jako moduł DSO (Dynamic Shared Object) dla Apache 1.3.x. + +%package -n apache-mod_%{name} +Summary: PHP DSO module for Apache 2.x +Summary(pl.UTF-8): Moduł DSO (Dynamic Shared Object) PHP dla Apache 2.x +Group: Development/Languages/PHP +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: apache(modules-api) = %{apache_modules_api} +Requires: apache-mod_mime +Provides: webserver(php) = %{version} +Obsoletes: phpfi + +%description -n apache-mod_%{name} +PHP as DSO module for Apache 2.x. + +%description -n apache-mod_%{name} -l pl.UTF-8 +PHP jako moduł DSO (Dynamic Shared Object) dla Apache 2.x. + +%package litespeed +Summary: PHP for litespeed HTTP server +Summary(pl.UTF-8): PHP dla serwera HTTP litespeed +Group: Development/Languages/PHP +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: webserver(php) = %{version} + +%description litespeed +PHP for litespeed HTTP server. + +%description litespeed -l pl.UTF-8 +PHP dla serwera HTTP litespeed. + +%package cgi +Summary: PHP as CGI/FastCGI program +Summary(pl.UTF-8): PHP jako program CGI/FastCGI +Group: Development/Languages/PHP +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: %{name}-fcgi = %{epoch}:%{version}-%{release} +Provides: php(cgi) +Provides: php(fcgi) +Provides: webserver(php) = %{version} +Obsoletes: php-fcgi < 4:5.3.0 +%if "%{pld_release}" != "ac" +Conflicts: logrotate < 3.8.0 +%endif + +%description cgi +PHP as CGI or FastCGI program. + +%description cgi -l pl.UTF-8 +PHP jako program CGI lub FastCGI. + +%package cli +Summary: PHP as CLI interpreter +Summary(pl.UTF-8): PHP jako interpreter działający z linii poleceń +Group: Development/Languages/PHP +Requires: %{name}-common = %{epoch}:%{version}-%{release} + +%description cli +PHP as CLI interpreter. + +%description cli -l pl.UTF-8 +PHP jako interpreter działający z linii poleceń. + +%package embedded +Summary: PHP library for embedding in applications +Summary(pl.UTF-8): Biblioteka PHP do osadzania w aplikacjach +Group: Libraries +Requires: %{name}-common = %{epoch}:%{version}-%{release} + +%description embedded +The php-embedded package contains a library which can be embedded into +applications to provide PHP scripting language support. + +%description embedded -l pl.UTF-8 +Ten pakiet zawiera bibliotekę, którą można osadzać w aplikacjach w +celu obsługi PHP jako języka skryptowego. + +%package program +Summary: /usr/bin/php symlink +Summary(pl.UTF-8): Dowiązanie symboliczne /usr/bin/php +Group: Development/Languages/PHP +Requires: %{name}-cli = %{epoch}:%{version}-%{release} +Obsoletes: /usr/bin/php + +%description program +Package providing /usr/bin/php symlink to PHP CLI. + +%description program -l pl.UTF-8 +Pakiet dostarczający dowiązanie symboliczne /usr/bin/php do PHP CLI. + +%package fpm +Summary: PHP FastCGI Process Manager +Summary(pl.UTF-8): PHP FastCGI Process Manager - zarządca procesów FastCGI +Group: Development/Languages/PHP +URL: http://www.php-fpm.org/ +Requires(post,preun): /sbin/chkconfig +Requires(postun): /usr/sbin/userdel +Requires(pre): /bin/id +Requires(pre): /usr/sbin/useradd +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: rc-scripts +Provides: user(http) +Provides: webserver(php) = %{version} + +%description fpm +PHP FastCGI Process Manager. + +%description fpm -l pl.UTF-8 +PHP FastCGI Process Manager - zarządca procesów FastCGI. + +%package common +Summary: Common files needed by both Apache modules and CGI/CLI SAPIs +Summary(pl.UTF-8): Wspólne pliki dla modułu Apache'a i programu CGI +Summary(ru.UTF-8): Разделяемые библиотеки для PHP +Summary(uk.UTF-8): Бібліотеки спільного використання для PHP +Group: Libraries +Requires(post): sed >= 4.0 +# because of dlclose() bugs in glibc <= 2.3.4 causing SEGVs on exit +Requires: glibc >= 6:2.3.5 +Requires: php-dirs >= 1.4 +Requires: rpm-whiteout >= 1.28 +Requires: tzdata +Provides: %{name}(debug) = %{php_debug} +Provides: %{name}(modules_api) = %{php_api_version} +Provides: %{name}(thread-safety) = %{zend_zts} +Provides: %{name}(zend_extension_api) = %{zend_extension_api} +Provides: %{name}(zend_module_api) = %{zend_module_api} +Provides: %{name}-core +Provides: %{name}-date +Provides: %{name}-ereg +Provides: %{name}-reflection +Provides: %{name}-standard +Provides: php(core) = %{version} +Provides: php(date) +Provides: php(ereg) +Provides: php(hash) +Provides: php(libxml) +Provides: php(reflection) +Provides: php(standard) +%{!?with_mysqlnd:Obsoletes: php-mysqlnd} +%{?with_pcre:%requires_ge_to pcre pcre-devel} +Obsoletes: php-pecl-domxml +Conflicts: php4-common < 3:4.4.4-8 +Conflicts: rpm < 4.4.2-0.2 + +%description common +Common files needed by both Apache modules and CGI/CLI SAPIs. + +%description common -l pl.UTF-8 +Wspólne pliki dla modułu Apache'a i programu CGI. + +%description common -l ru.UTF-8 +Этот пакет содержит общие файлы для разных вариантов реализации PHP +(самодостаточной и в качестве модуля Apache). + +%description common -l uk.UTF-8 +Цей пакет містить спільні файли для різних варіантів реалізації PHP +(самодостатньої та в якості модуля Apache). + +%package devel +Summary: Files for PHP modules development +Summary(pl.UTF-8): Pliki do kompilacji modułów PHP +Summary(pt_BR.UTF-8): Arquivos de desenvolvimento para PHP +Summary(ru.UTF-8): Пакет разработки для построения расширений PHP +Summary(uk.UTF-8): Пакет розробки для побудови розширень PHP +Group: Development/Languages/PHP +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: autoconf >= 2.13 +Requires: automake +%if "%{pld_release}" != "ac" +Requires: libtool >= 2:2.2 +%else +Requires: libtool +%endif +%{?with_pcre:Requires: pcre-devel >= 8.10} +Requires: shtool +Obsoletes: php-devel +Obsoletes: php-pear-devel +Obsoletes: php4-devel +Obsoletes: php52-devel + +%description devel +The php-devel package lets you compile dynamic extensions to PHP. +Included here is the source for the PHP extensions. Instead of +recompiling the whole PHP binary to add support for, say, oracle, +install this package and use the new self-contained extensions +support. For more information, read the file +README.SELF-CONTAINED-EXTENSIONS. + +%description devel -l pl.UTF-8 +Ten pakiet zawiera pliki potrzebne do kompilacji modułów PHP. Zamiast +rekompilować całe PHP aby dodać obsługę np. oracle, można przy użyciu +tego pakietu skompilować samodzielne rozszerzenie. Więcej informacji o +samodzielnych rozszerzeniach można znaleźć w pliku +README.SELF-CONTAINED-EXTENSIONS. + +%description devel -l pt_BR.UTF-8 +Este pacote contém arquivos usados no desenvolvimento de programas ou +módulos PHP. + +%description devel -l ru.UTF-8 +Пакет php-devel дает возможность компилировать динамические расширения +PHP. Пакет включает исходный код этих расширений. Вместо повторной +компиляции бинарного файла PHP для добавления, например, поддержки +oracle, установите этот пакет для компилирования отдельных расширений. +Подробности - в файле README.SELF-CONTAINED-EXTENSIONS. + +%description devel -l uk.UTF-8 +Пакет php-devel дає можливість компілювати динамічні розширення PHP. +До пакету включено вихідний код для розширень. Замість повторної +компіляції бінарного файлу PHP для додання, наприклад, підтримки +oracle, встановіть цей пакет для компіляції окремих розширень. +Детальніша інформація - в файлі README.SELF-CONTAINED-EXTENSIONS. + +%package bcmath +Summary: bcmath extension module for PHP +Summary(pl.UTF-8): Moduł bcmath dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.bc.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(bcmath) + +%description bcmath +This is a dynamic shared object (DSO) for PHP that will add bc style +precision math functions support. + +%description bcmath -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z dokładnych funkcji +matematycznych takich jak w programie bc. + +%package bz2 +Summary: Bzip2 extension module for PHP +Summary(pl.UTF-8): Moduł bzip2 dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.bzip2.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(bz2) = %{bz2ver} +Provides: php(bzip2) +Provides: php-bzip2 = %{epoch}:%{version}-%{release} +Obsoletes: php-bzip2 < 4:5.2.14-3 +Obsoletes: php-pecl-bz2 < %{bz2ver} + +%description bz2 +This is a dynamic shared object (DSO) for PHP that will add bzip2 +compression support to PHP. + +%description bz2 -l pl.UTF-8 +Moduł PHP umożliwiający używanie kompresji bzip2. + +%package calendar +Summary: Calendar extension module for PHP +Summary(pl.UTF-8): Moduł funkcji kalendarza dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.calendar.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(calendar) + +%description calendar +This is a dynamic shared object (DSO) for PHP that will add calendar +support. + +%description calendar -l pl.UTF-8 +Moduł PHP dodający wsparcie dla kalendarza. + +%package ctype +Summary: ctype extension module for PHP +Summary(pl.UTF-8): Moduł ctype dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.ctype.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(ctype) + +%description ctype +This is a dynamic shared object (DSO) for PHP that will add ctype +support. + +%description ctype -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z funkcji ctype. + +%package curl +Summary: curl extension module for PHP +Summary(pl.UTF-8): Moduł curl dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.curl.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(curl) + +%description curl +This is a dynamic shared object (DSO) for PHP that will add curl +support. + +%description curl -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z biblioteki curl. + +%package dba +Summary: DBA extension module for PHP +Summary(pl.UTF-8): Moduł DBA dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.dba.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(dba) + +%description dba +This is a dynamic shared object (DSO) for PHP that will add flat-file +databases (DBA) support. + +%description dba -l pl.UTF-8 +Moduł dla PHP dodający obsługę dla baz danych opartych na plikach +(DBA). + +%package dom +Summary: DOM extension module for PHP +Summary(pl.UTF-8): Moduł DOM dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.dom.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(dom) +# it has some compatibility functions +Provides: %{name}-domxml = %{epoch}:%{version}-%{release} +Provides: php(domxml) +Obsoletes: php-domxml <= 3:4.3.8-1 + +%description dom +This is a dynamic shared object (DSO) for PHP that will add new DOM +support. + +%description dom -l pl.UTF-8 +Moduł PHP dodający nową obsługę DOM. + +%package enchant +Summary: libenchant binder +Summary(pl.UTF-8): dowiązania biblioteki libenchant +Group: Libraries +URL: http://www.php.net/manual/en/book.exif.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(enchant) = %{enchantver} +Obsoletes: php-pecl-enchant < %{enchantver} + +%description enchant +Enchant is a binder for libenchant. Libenchant provides a common API +for many spell libraries: +- aspell/pspell (intended to replace ispell) +- hspell (hebrew) +- ispell +- myspell (OpenOffice.org project, mozilla) +- uspell (primarily Yiddish, Hebrew, and Eastern European languages) A + plugin system allows to add custom spell support. + +%description enchant -l pl.UTF-8 +Enchant jest dowiązaniem do biblioteki libenchant, która udostępnia +ujednolicone API dla wielu narzędzi sprawdzających pisownię: +- aspell/pspell (w zamierzeniu ma zastąpić ispell) +- hspell (hebrajski) +- ispell +- myspell (projekt OpenOffice.org, mozilla) +- uspell (głównie Jidysz, Hebrajski oraz języki wschodnioeuropejskie) + System wtyczek pozwala na dodanie wsparcia dla kolejnych narzędzi. + +%package exif +Summary: exif extension module for PHP +Summary(pl.UTF-8): Moduł exif dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.exif.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(exif) + +%description exif +This is a dynamic shared object (DSO) for PHP that will add EXIF tags +support in image files. + +%description exif -l pl.UTF-8 +Moduł PHP dodający obsługę znaczników EXIF w plikach obrazków. + +%package fileinfo +Summary: libmagic bindings +Summary(pl.UTF-8): Wiązania do libmagic +Group: Libraries +URL: http://www.php.net/manual/en/book.fileinfo.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pcre = %{epoch}:%{version}-%{release} +Provides: php(fileinfo) = %{fileinfover} +Obsoletes: php-mime_magic +Obsoletes: php-pecl-fileinfo < %{fileinfover} + +%description fileinfo +This extension allows retrieval of information regarding vast majority +of file. This information may include dimensions, quality, length +etc... + +Additionally it can also be used to retrieve the MIME type for a +particular file and for text files proper language encoding. + +%description fileinfo -l pl.UTF-8 +To rozszerzenie pozwala na uzyskanie informacji dotyczących większości +plików. Informacje mogą zawierać wymiary, jakość, długość itp. + +Ponadto rozszerzenie można wykorzystać do odczytania typu MIME danego +pliku oraz kodowania plików tekstowych. + +%package filter +Summary: Extension for safely dealing with input parameters +Summary(pl.UTF-8): Rozszerzenie do bezpiecznej obsługi danych wejściowych +Group: Libraries +URL: http://www.php.net/manual/en/book.filter.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pcre = %{epoch}:%{version}-%{release} +Provides: php(filter) +Obsoletes: php-pecl-filter + +%description filter +We all know that you should always check input variables, but PHP does +not offer really good functionality for doing this in a safe way. The +Input Filter extension is meant to address this issue by implementing +a set of filters and mechanisms that users can use to safely access +their input data. + +%description filter -l pl.UTF-8 +Wiadomo, że trzeba zawsze sprawdzać zmienne wejściowe, ale PHP nie +oferuje naprawdę dobrej funkcjonalności do robienia tego w sposób +bezpieczny. Rozszerzenie Input Filter ma rozwiązać ten problem poprzez +zaimplementowanie zestawu filtrów i mechanizmów, których użytkownicy +mogą bezpiecznie używać do dostępu do danych. + +%package ftp +Summary: FTP extension module for PHP +Summary(pl.UTF-8): Moduł FTP dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.ftp.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(ftp) + +%description ftp +This is a dynamic shared object (DSO) for PHP that will add FTP +support. + +%description ftp -l pl.UTF-8 +Moduł PHP dodający obsługę protokołu FTP. + +%package gd +Summary: GD extension module for PHP +Summary(pl.UTF-8): Moduł GD dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.image.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +%if %{with system_gd} +Requires: gd >= 2.0.28-4 +Requires: gd(gif) +Requires: gd(imagerotate) = 5.2.0 +%endif +Provides: php(gd) + +%description gd +This is a dynamic shared object (DSO) for PHP that will add GD +support, allowing you to create and manipulate images with PHP. + +%description gd -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z biblioteki GD, pozwalającej na +tworzenie i obróbkę obrazków. + +%package gettext +Summary: gettext extension module for PHP +Summary(pl.UTF-8): Moduł gettext dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.gettext.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(gettext) + +%description gettext +This is a dynamic shared object (DSO) for PHP that will add gettext +support. + +%description gettext -l pl.UTF-8 +Moduł PHP dodający obsługę lokalizacji przez gettext. + +%package gmp +Summary: gmp extension module for PHP +Summary(pl.UTF-8): Moduł gmp dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.gmp.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(gmp) + +%description gmp +This is a dynamic shared object (DSO) for PHP that will add arbitrary +length number support with GNU MP library. + +%description gmp -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z biblioteki gmp do obliczeń na +liczbach o dowolnej długości. + +%package hash +Summary: HASH Message Digest Framework +Summary(pl.UTF-8): Szkielet do obliczania skrótów wiadomości +Group: Libraries +URL: http://www.php.net/manual/en/book.gmp.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(hash) = %{hashver} +%if %{with mhash} +Provides: php(mhash) +Provides: php-mhash = %{epoch}:%{version}-%{release} +Obsoletes: php-mhash < 4:5.3.0 +%endif +Obsoletes: php-pecl-hash < %{hashver} + +%description hash +Native implementations of common message digest algorithms using a +generic factory method. + +%description hash -l pl.UTF-8 +Natywne implementacje popularnych algorytmów obliczania skrótów +wiadomości przy użyciu wspólnego interfejsu. + +%package iconv +Summary: iconv extension module for PHP +Summary(pl.UTF-8): Moduł iconv dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.iconv.php +Requires: %{_libdir}/gconv +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: iconv +Provides: php(iconv) + +%description iconv +This is a dynamic shared object (DSO) for PHP that will add iconv +support. + +%description iconv -l pl.UTF-8 +Moduł PHP dodający obsługę iconv. + +%package imap +Summary: IMAP extension module for PHP +Summary(pl.UTF-8): Moduł IMAP dla PHP +Summary(pt_BR.UTF-8): Um módulo para aplicações PHP que usam IMAP +Group: Libraries +URL: http://www.php.net/manual/en/book.imap.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pcre = %{epoch}:%{version}-%{release} +Requires: imap-lib >= 1:2007e-2 +Provides: php(imap) + +%description imap +This is a dynamic shared object (DSO) for PHP that will add IMAP +support. + +%description imap -l pl.UTF-8 +Moduł PHP dodający obsługę skrzynek IMAP. + +%description imap -l pt_BR.UTF-8 +Um módulo para aplicações PHP que usam IMAP. + +%package interbase +Summary: InterBase/Firebird database module for PHP +Summary(pl.UTF-8): Moduł bazy danych InterBase/Firebird dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.ibase.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(interbase) +%{?with_interbase_inst:Autoreq: false} + +%description interbase +This is a dynamic shared object (DSO) for PHP that will add InterBase +and Firebird database support. + +%description interbase -l pl.UTF-8 +Moduł PHP umożliwiający dostęp do baz danych InterBase i Firebird. + +%package intl +Summary: Internationalization extension (ICU wrapper) +Summary(pl.UTF-8): Rozszerzenie do internacjonalizacji (interfejs do ICU) +Group: Libraries +URL: http://www.php.net/intl +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(intl) = %{intlver} +Obsoletes: php-pecl-intl < %{intlver} + +%description intl +Internationalization extension (further is referred as Intl) is a +wrapper for ICU library, enabling PHP programmers to perform +UCA-conformant collation and date/time/number/currency formatting in +their scripts. + +%description intl -l pl.UTF-8 +Rozszerzenie do internacjonalizacji (dalej nazywane Intl) jest +interfejsem do biblioteki ICU, pozwalającym programistom PHP na +wykonywanie w skryptach porównań zgodnych z UCA oraz formatowania +daty/czasu/walut. + +%package json +Summary: PHP C extension for JSON serialization +Summary(pl.UTF-8): Rozszerzenie C PHP dla serializacji JSON +Group: Libraries +URL: http://www.php.net/manual/en/book.json.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(json) = %{jsonver} +Obsoletes: php-pecl-json < %{jsonver} + +%description json +php-json is an extremely fast PHP C extension for JSON (JavaScript +Object Notation) serialisation. + +%description json -l pl.UTF-8 +php-json to bardzo szybkie rozszerzenie C PHP dla serializacji JSON +(JavaScript Object Notation). + +%package ldap +Summary: LDAP extension module for PHP +Summary(pl.UTF-8): Moduł LDAP dla PHP +Summary(pt_BR.UTF-8): Um módulo para aplicações PHP que usam LDAP +Group: Libraries +URL: http://www.php.net/manual/en/book.ldap.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(ldap) + +%description ldap +This is a dynamic shared object (DSO) for PHP that will add LDAP +support. + +%description ldap -l pl.UTF-8 +Moduł PHP dodający obsługę LDAP. + +%description ldap -l pt_BR.UTF-8 +Um módulo para aplicações PHP que usam LDAP. + +%package mbstring +Summary: mbstring extension module for PHP +Summary(pl.UTF-8): Moduł mbstring dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.mbstring.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(mbstring) + +%description mbstring +This is a dynamic shared object (DSO) for PHP that will add multibyte +string support. + +%description mbstring -l pl.UTF-8 +Moduł PHP dodający obsługę ciągów znaków wielobajtowych. + +%package mcrypt +Summary: mcrypt extension module for PHP +Summary(pl.UTF-8): Moduł mcrypt dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.mcrypt.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(mcrypt) + +%description mcrypt +This is a dynamic shared object (DSO) for PHP that will add mcrypt +support. + +%description mcrypt -l pl.UTF-8 +Moduł PHP dodający możliwość szyfrowania poprzez bibliotekę mcrypt. + +%package mssql +Summary: MS SQL extension module for PHP +Summary(pl.UTF-8): Moduł MS SQL dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.mssql.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(mssql) + +%description mssql +This is a dynamic shared object (DSO) for PHP that will add MS SQL +databases support through FreeTDS library. + +%description mssql -l pl.UTF-8 +Moduł PHP dodający obsługę baz danych MS SQL poprzez bibliotekę +FreeTDS. + +%package mysql +Summary: MySQL database module for PHP +Summary(pl.UTF-8): Moduł bazy danych MySQL dla PHP +Summary(pt_BR.UTF-8): Um módulo para aplicações PHP que usam bancos de dados MySQL +Group: Libraries +URL: http://www.php.net/manual/en/book.mysql.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +%{?with_mysqlnd:Requires: %{name}-mysqlnd = %{epoch}:%{version}-%{release}} +Provides: php(mysql) + +%description mysql +This is a dynamic shared object (DSO) for PHP that will add MySQL +database support. + +%description mysql -l pl.UTF-8 +Moduł PHP umożliwiający dostęp do bazy danych MySQL. + +%description mysql -l pt_BR.UTF-8 +Um módulo para aplicações PHP que usam bancos de dados MySQL. + +%package mysqli +Summary: MySQLi module for PHP +Summary(pl.UTF-8): Moduł MySQLi dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.mysqli.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +%{?with_mysqlnd:Requires: %{name}-mysqlnd = %{epoch}:%{version}-%{release}} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Provides: php(mysqli) + +%description mysqli +This is a dynamic shared object (DSO) for PHP that will add MySQLi +(Improved MySQL) support. The difference between it and mysql module +is that it provides access to functionality of MySQL 4.1 and above. + +%description mysqli -l pl.UTF-8 +Moduł PHP umożliwiający udoskonalony dostęp do bazy danych MySQL. +Różnicą między nim a modułem mysql jest dostęp do funkcjonalności +MySQL w wersji 4.1 i nowszych. + +%package mysqlnd +Summary: MySQL Native Client Driver for PHP +Summary(pl.UTF-8): Sterownik natywnego klienta MySQL dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.mysqlnd.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(mysqlnd) + +%description mysqlnd +MySQL Native Driver is a replacement for the MySQL Client Library +(libmysql). + +Because MySQL Native Driver is written as a PHP extension, it is +tightly coupled to the workings of PHP. This leads to gains in +efficiency, especially when it comes to memory usage, as the driver +uses the PHP memory management system. It also supports the PHP memory +limit. Using MySQL Native Driver leads to comparable or better +performance than using MySQL Client Library, it always ensures the +most efficient use of memory. One example of the memory efficiency is +the fact that when using the MySQL Client Library, each row is stored +in memory twice, whereas with the MySQL Native Driver each row is only +stored once in memory. + +%description mysqlnd -l pl.UTF-8 +MySQL Native Driver (natywny sterownik MySQL) to zamiennik biblioteki +klienckiej MySQL (libmysql). + +Ponieważ sterownik natywny jest napisany jako rozszerzenie PHP, jest +ściśle powiązany z pracą PHP. Daje to większą wydajność, zwłaszcza +jeśli chodzi o wykorzystanie pamięci, jako że sterownik wykorzystuje +system zarządzania pamięcią PHP; obsługuje także ograniczenie pamięci +z PHP. Niniejszy sterownik ma wydajność porównywalną lub lepszą niż +biblioteka kliencka MySQL, a pamięć zawsze wykorzystuje efektywniej. +Przykładem tego może być fakt, że w przypadku biblioteki klienckiej +każdy wiersz jest przechowywany w pamięci dwukrotnie, natomiast przy +tym sterowniku - tylko raz. + +%package oci8 +Summary: Oracle 8+ database module for PHP +Summary(pl.UTF-8): Moduł bazy danych Oracle 8+ dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.oci8.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(oci8) +AutoReq: false + +%description oci8 +This is a dynamic shared object (DSO) for PHP that will add Oracle 7, +8, 9 and 10 database support through Oracle8 Call-Interface (OCI8). + +%description oci8 -l pl.UTF-8 +Moduł PHP umożliwiający dostęp do bazy danych Oracle 7, 8, 9 i 10 +poprzez interfejs Oracle8 Call-Interface (OCI8). + +%package odbc +Summary: ODBC extension module for PHP +Summary(pl.UTF-8): Moduł ODBC dla PHP +Summary(pt_BR.UTF-8): Um módulo para aplicações PHP que usam bases de dados ODBC +Group: Libraries +URL: http://www.php.net/manual/en/book.uodbc.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: unixODBC >= 2.1.1-3 +Provides: php(odbc) + +%description odbc +This is a dynamic shared object (DSO) for PHP that will add ODBC +support. + +%description odbc -l pl.UTF-8 +Moduł PHP ze wsparciem dla ODBC. + +%description odbc -l pt_BR.UTF-8 +Um módulo para aplicações PHP que usam ODBC. + +%package openssl +Summary: OpenSSL extension module for PHP +Summary(pl.UTF-8): Moduł OpenSSL dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.openssl.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(openssl) + +%description openssl +This is a dynamic shared object (DSO) for PHP that will add OpenSSL +support. + +%description openssl -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z biblioteki OpenSSL. + +%package pcntl +Summary: Process Control extension module for PHP +Summary(pl.UTF-8): Moduł Process Control dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.pcntl.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(pcntl) + +%description pcntl +This is a dynamic shared object (DSO) for PHP that will add process +spawning and control support. It supports functions like fork(), +waitpid(), signal() etc. + +%description pcntl -l pl.UTF-8 +Moduł PHP umożliwiający tworzenie nowych procesów i kontrolę nad nimi. +Obsługuje funkcje takie jak fork(), waitpid(), signal() i podobne. + +%package pcre +Summary: PCRE extension module for PHP +Summary(pl.UTF-8): Moduł PCRE dla PHP +Group: Libraries +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(pcre) + +%description pcre +This is a dynamic shared object (DSO) for PHP that will add Perl +Compatible Regular Expression support. + +%description pcre -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z perlowych wyrażeń regularnych +(Perl Compatible Regular Expressions) + +%package pdo +Summary: PHP Data Objects (PDO) +Summary(pl.UTF-8): Obsługa PHP Data Objects (PDO) +Group: Libraries +URL: http://www.php.net/manual/en/book.pdo.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Provides: php(pdo) +Obsoletes: php-pecl-PDO + +%description pdo +This is a dynamic shared object (DSO) for PHP that will add PDO +support. + +%description pdo -l pl.UTF-8 +Moduł PHP dodający obsługę PDO (PHP Data Objects). + +%package pdo-dblib +Summary: PHP Data Objects (PDO) FreeTDS support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą FreeTDS +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-dblib.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(dblib) + +%description pdo-dblib +This is a dynamic shared object (DSO) for PHP that will add PDO +FreeTDS support. + +%description pdo-dblib -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych FreeTDS za pośrednictwem +interfejsu PDO. + +%package pdo-firebird +Summary: PHP Data Objects (PDO) Firebird support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą Firebirda +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-firebird.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-firebird) +Obsoletes: php-pecl-PDO_FIREBIRD + +%description pdo-firebird +This is a dynamic shared object (DSO) for PHP that will add PDO +Firebird support. + +%description pdo-firebird -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych Firebird za pośrednictwem +interfejsu PDO. + +%package pdo-mysql +Summary: PHP Data Objects (PDO) MySQL support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą MySQL-a +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-mysql.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +%{?with_mysqlnd:Requires: %{name}-mysqlnd = %{epoch}:%{version}-%{release}} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-mysql) +Obsoletes: php-pecl-PDO_MYSQL + +%description pdo-mysql +This is a dynamic shared object (DSO) for PHP that will add PDO MySQL +support. + +%description pdo-mysql -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych MySQL za pośrednictwem +interfejsu PDO. + +%package pdo-oci +Summary: PHP Data Objects (PDO) Oracle support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą Oracle'a +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-oci.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-oci) +Obsoletes: php-pecl-PDO_OCI + +%description pdo-oci +This is a dynamic shared object (DSO) for PHP that will add PDO Oracle +support. + +%description pdo-oci -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych Oracle za pośrednictwem +interfejsu PDO. + +%package pdo-odbc +Summary: PHP Data Objects (PDO) ODBC support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą ODBC +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-odbc.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-odbc) +Obsoletes: php-pecl-PDO_ODBC + +%description pdo-odbc +This is a dynamic shared object (DSO) for PHP that will add PDO ODBC +support. + +%description pdo-odbc -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych ODBC za pośrednictwem +interfejsu PDO. + +%package pdo-pgsql +Summary: PHP Data Objects (PDO) PostgreSQL support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą PostgreSQL-a +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-pgsql.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-pgsql) +Provides: php-pecl-PDO_PGSQL +Obsoletes: php-pecl-PDO_PGSQL < 4:5.2.1-2 + +%description pdo-pgsql +This is a dynamic shared object (DSO) for PHP that will add PDO +PostgreSQL support. + +%description pdo-pgsql -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych PostgreSQL za pośrednictwem +interfejsu PDO. + +%package pdo-sqlite +Summary: PHP Data Objects (PDO) SQLite support +Summary(pl.UTF-8): Moduł PHP Data Objects (PDO) z obsługą SQLite +Group: Libraries +URL: http://www.php.net/manual/en/ref.pdo-sqlite.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pdo = %{epoch}:%{version}-%{release} +Provides: php(pdo-sqlite) +Obsoletes: php-pecl-PDO_SQLITE + +%description pdo-sqlite +This is a dynamic shared object (DSO) for PHP that will add PDO SQLite +support. + +%description pdo-sqlite -l pl.UTF-8 +Moduł dla PHP dodający obsługę baz danych SQLite za pośrednictwem +interfejsu PDO. + +%package pgsql +Summary: PostgreSQL database module for PHP +Summary(pl.UTF-8): Moduł bazy danych PostgreSQL dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.pgsql.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(pgsql) + +%description pgsql +This is a dynamic shared object (DSO) for PHP that will add PostgreSQL +database support. + +%description pgsql -l pl.UTF-8 +Moduł PHP umożliwiający dostęp do bazy danych PostgreSQL. + +%description pgsql -l pt_BR.UTF-8 +Um módulo para aplicações PHP que usam bancos de dados postgresql. + +%package phar +Summary: phar database module for PHP +Summary(pl.UTF-8): Moduł phar dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.phar.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Suggests: %{name}-cli +# zlib is required by phar program, but as phar cli is optional should the dep be too +Suggests: %{name}-zlib +Provides: php(phar) = %{pharver} +Obsoletes: php-pecl-phar < %{pharver} +Conflicts: php-ioncube < 4.0.9 + +%description phar +This is a dynamic shared object (DSO) for PHP that will add phar +archive a support. + +%description phar -l pl.UTF-8 +Moduł PHP umożliwiający dostęp do achiwów .phar. + +%package posix +Summary: POSIX extension module for PHP +Summary(pl.UTF-8): Moduł POSIX dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.posix.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(posix) + +%description posix +This is a dynamic shared object (DSO) for PHP that will add POSIX +functions support to PHP. + +%description posix -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z funkcji POSIX. + +%package pspell +Summary: pspell extension module for PHP +Summary(pl.UTF-8): Moduł pspell dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.pspell.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(pspell) + +%description pspell +This is a dynamic shared object (DSO) for PHP that will add pspell +support to PHP. It allows to check the spelling of a word and offer +suggestions. + +%description pspell -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z pspella. Pozwala on na +sprawdzanie pisowni słowa i sugerowanie poprawek. + +%package readline +Summary: readline extension module for PHP +Summary(pl.UTF-8): Moduł readline dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.readline.php +Requires: %{name}-cli = %{epoch}:%{version}-%{release} +Provides: php(readline) + +%description readline +This PHP module adds support for readline functions (only for cli and +cgi SAPIs). + +%description readline -l pl.UTF-8 +Moduł PHP dodający obsługę funkcji readline (tylko do SAPI cli i cgi). + +%package recode +Summary: recode extension module for PHP +Summary(pl.UTF-8): Moduł recode dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.recode.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: recode >= 3.5d-3 +Provides: php(recode) + +%description recode +This is a dynamic shared object (DSO) for PHP that will add recode +support. + +%description recode -l pl.UTF-8 +Moduł PHP dodający możliwość konwersji kodowania plików (poprzez +bibliotekę recode). + +%package session +Summary: session extension module for PHP +Summary(pl.UTF-8): Moduł session dla PHP +Group: Libraries +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Suggests: %{name}-hash = %{epoch}:%{version}-%{release} +Provides: php(session) + +%description session +This is a dynamic shared object (DSO) for PHP that will add session +support. + +%description session -l pl.UTF-8 +Moduł PHP dodający obsługę sesji. + +%package shmop +Summary: Shared Memory Operations extension module for PHP +Summary(pl.UTF-8): Moduł shmop dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.shmop.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(shmop) + +%description shmop +This is a dynamic shared object (DSO) for PHP that will add Shared +Memory Operations support. + +%description shmop -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z pamięci dzielonej. + +%package simplexml +Summary: Simple XML extension module for PHP +Summary(pl.UTF-8): Moduł prostego rozszerzenia XML dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.simplexml.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Provides: php(simplexml) + +%description simplexml +This is a dynamic shared object (DSO) for PHP that will add Simple XML +support. + +%description simplexml -l pl.UTF-8 +Moduł PHP dodający obsługę prostego XML-a. + +%package snmp +Summary: SNMP extension module for PHP +Summary(pl.UTF-8): Moduł SNMP dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.snmp.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-sockets = %{epoch}:%{version}-%{release} +Requires: %{name}-spl = %{epoch}:%{version}-%{release} +Provides: php(snmp) + +%description snmp +This is a dynamic shared object (DSO) for PHP that will add SNMP +support. + +%description snmp -l pl.UTF-8 +Moduł PHP dodający obsługę SNMP. + +%package soap +Summary: soap extension module for PHP +Summary(pl.UTF-8): Moduł soap dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.soap.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(soap) + +%description soap +This is a dynamic shared object (DSO) for PHP that will add SOAP/WSDL +support. + +%description soap -l pl.UTF-8 +Moduł PHP dodający obsługę SOAP/WSDL. + +%package sockets +Summary: sockets extension module for PHP +Summary(pl.UTF-8): Moduł socket dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.sockets.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sockets) + +%description sockets +This is a dynamic shared object (DSO) for PHP that will add sockets +support. + +%description sockets -l pl.UTF-8 +Moduł PHP dodający obsługę gniazdek. + +%package spl +Summary: Standard PHP Library module for PHP +Summary(pl.UTF-8): Moduł biblioteki standardowej (Standard PHP Library) dla PHP +Group: Libraries +URL: http://php.net/manual/en/book.spl.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-pcre = %{epoch}:%{version}-%{release} +Requires: %{name}-simplexml = %{epoch}:%{version}-%{release} +Provides: php(spl) + +%description spl +This is a dynamic shared object (DSO) for PHP that will add Standard +PHP Library support. + +%description spl -l pl.UTF-8 +Moduł PHP z biblioteką standardową PHP (SPL - Standard PHP Library). + +%package sqlite3 +Summary: SQLite3 extension module for PHP +Summary(pl.UTF-8): Moduł SQLite3 dla PHP +Group: Libraries +URL: http://php.net/manual/en/book.sqlite3.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sqlite3) = %{sqlite3ver} + +%description sqlite3 +SQLite is a C library that implements an embeddable SQL database +engine. Programs that link with the SQLite library can have SQL +database access without running a separate RDBMS process. + +SQLite is not a client library used to connect to a big database +server. SQLite is the server. The SQLite library reads and writes +directly to and from the database files on disk. + +%description sqlite3 -l pl.UTF-8 +SQLite jest napisaną w C biblioteką implementującą osadzalny silnik +bazodanowy SQL. Program linkujący się z biblioteką SQLite może mieć +dostęp do bazy SQL bez potrzeby uruchamiania dodatkowego procesu +RDBMS. + +SQLite to nie klient baz danych - biblioteka nie łączy się z serwerami +baz danych. SQLite sam jest serwerem. Biblioteka SQLite czyta i +zapisuje dane bezpośrednio z/do plików baz danych znajdujących się na +dysku. + +%package sybase-ct +Summary: Sybase-CT extension module for PHP +Summary(pl.UTF-8): Moduł Sybase-CT dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.sybase.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sybase-ct) +Obsoletes: php-sybase + +%description sybase-ct +This is a dynamic shared object (DSO) for PHP that will add Sybase and +MS SQL databases support through CT-lib. + +%description sybase-ct -l pl.UTF-8 +Moduł PHP dodający obsługę baz danych Sybase oraz MS SQL poprzez +CT-lib. + +%package sysvmsg +Summary: SysV msg extension module for PHP +Summary(pl.UTF-8): Moduł SysV msg dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.sem.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sysvmsg) + +%description sysvmsg +This is a dynamic shared object (DSO) for PHP that will add SysV +message queues support. + +%description sysvmsg -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z kolejek komunikatów SysV. + +%package sysvsem +Summary: SysV sem extension module for PHP +Summary(pl.UTF-8): Moduł SysV sem dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.sem.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sysvsem) + +%description sysvsem +This is a dynamic shared object (DSO) for PHP that will add SysV +semaphores support. + +%description sysvsem -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z semaforów SysV. + +%package sysvshm +Summary: SysV shm extension module for PHP +Summary(pl.UTF-8): Moduł SysV shm dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.shmop.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(sysvshm) + +%description sysvshm +This is a dynamic shared object (DSO) for PHP that will add SysV +Shared Memory support. + +%description sysvshm -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z pamięci dzielonej SysV. + +%package tests +Summary: Contains unit test files for PHP and extensions +Summary(pl.UTF-8): Zawiera pliki testów jednostkowych dla PHP i rozszerzeń +Group: Libraries +URL: http://qa.php.net/ +Requires: %{name}-cli + +%description tests +This package contains unit tests for PHP and its extensions. + +%description tests -l pl.UTF-8 +Ten pakiet zawiera pliki testów jednostkowych dla PHP i rozszerzeń. + +%package tidy +Summary: Tidy extension module for PHP +Summary(pl.UTF-8): Moduł Tidy dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.tidy.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: tidy +Provides: php(tidy) + +%description tidy +This is a dynamic shared object (DSO) for PHP that will add Tidy +support. + +%description tidy -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z tidy. + +%package tokenizer +Summary: tokenizer extension module for PHP +Summary(pl.UTF-8): Moduł rozszerzenia tokenizer dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.tokenizer.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(tokenizer) + +%description tokenizer +This is a dynamic shared object (DSO) for PHP that will add tokenizer +support. + +%description tokenizer -l pl.UTF-8 +Moduł PHP dodający obsługę tokenizera do PHP. + +%package wddx +Summary: wddx extension module for PHP +Summary(pl.UTF-8): Moduł wddx dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.wddx.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +# - wddx doesn't require session as it's disabled at compile time: +# if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) +# see also php.spec#rev1.120.2.22 +#Requires: %{name}-session = %{epoch}:%{version}-%{release} +Requires: %{name}-xml = %{epoch}:%{version}-%{release} +Provides: php(wddx) + +%description wddx +This is a dynamic shared object (DSO) for PHP that will add wddx +support. + +%description wddx -l pl.UTF-8 +Moduł PHP umożliwiający korzystanie z wddx. + +%package xml +Summary: XML extension module for PHP +Summary(pl.UTF-8): Moduł XML dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.xml.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(xml) + +%description xml +This is a dynamic shared object (DSO) for PHP that will add XML +support. This extension lets you create XML parsers and then define +handlers for different XML events. + +%description xml -l pl.UTF-8 +Moduł PHP umożliwiający parsowanie plików XML i obsługę zdarzeń +związanych z tymi plikami. Pozwala on tworzyć analizatory XML-a i +następnie definiować procedury obsługi dla różnych zdarzeń XML. + +%package xmlreader +Summary: XML Reader extension module for PHP +Summary(pl.UTF-8): Moduł XML Reader dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.xmlreader.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Suggests: %{name}-dom = %{epoch}:%{version}-%{release} +Provides: php(xmlreader) + +%description xmlreader +This is a dynamic shared object (DSO) for PHP that will add XML Reader +support. The XMLReader extension is an XML Pull parser. The reader +acts as a cursor going forward on the document stream and stopping at +each node on the way. + +%description xmlreader -l pl.UTF-8 +Moduł PHP umożliwiający analizę plików XML w trybie Pull. Czytnik +działa jako kursor przechodzący przez strumień dokumentu i +zatrzymujący się na każdym węźle po drodze. + +%package xmlrpc +Summary: xmlrpc extension module for PHP +Summary(pl.UTF-8): Moduł xmlrpc dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.xmlrpc.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-xml = %{epoch}:%{version}-%{release} +Provides: php(xmlrpc) + +%description xmlrpc +This is a dynamic shared object (DSO) for PHP that will add XMLRPC +support. + +%description xmlrpc -l pl.UTF-8 +Moduł PHP dodający obsługę XMLRPC. + +%package xmlwriter +Summary: Fast, non-cached, forward-only means to write XML data +Summary(pl.UTF-8): Szybka, nie cachowana metoda zapisu danych w formacie XML +Group: Libraries +URL: http://www.php.net/manual/en/book.xmlwriter.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(xmlwriter) +Obsoletes: php-pecl-xmlwriter + +%description xmlwriter +This extension wraps the libxml xmlWriter API. Represents a writer +that provides a non-cached, forward-only means of generating streams +or files containing XML data. + +%description xmlwriter -l pl.UTF-8 +To rozszerzenie obudowuje API xmlWriter z libxml. Reprezentuje obsługę +zapisu dostarczającą nie cachowanych metod generowania strumieni lub +plików zawierających dane XML. + +%package xsl +Summary: xsl extension module for PHP +Summary(pl.UTF-8): Moduł xsl dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.xsl.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Requires: %{name}-dom = %{epoch}:%{version}-%{release} +Requires: libxslt >= 1.0.18 +# actually not true, functionality is similar, but API differs +Provides: php(xsl) +Obsoletes: php-xslt <= 3:4.3.8-1 + +%description xsl +This is a dynamic shared object (DSO) for PHP that will add new XSL +support (using libxslt). + +%description xsl -l pl.UTF-8 +Moduł PHP dodający nową obsługę XSLT (przy użyciu libxslt). + +%package zip +Summary: Zip management extension +Summary(pl.UTF-8): Zarządzanie archiwami zip +Group: Libraries +URL: http://www.php.net/manual/en/book.zip.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +%{?with_system_libzip:Requires: libzip >= 0.10.1-2} +Provides: php(zip) = %{zipver} +Obsoletes: php-pecl-zip < %{zipver} + +%description zip +Zip is an extension to create, modify and read zip files. + +%description zip -l pl.UTF-8 +Zip jest rozszerzeniem umożliwiającym tworzenie, modyfikację oraz +odczyt archiwów zip. + +%package zlib +Summary: Zlib extension module for PHP +Summary(pl.UTF-8): Moduł zlib dla PHP +Group: Libraries +URL: http://www.php.net/manual/en/book.zlib.php +Requires: %{name}-common = %{epoch}:%{version}-%{release} +Provides: php(zlib) + +%description zlib +This is a dynamic shared object (DSO) for PHP that will add zlib +compression support to PHP. + +%description zlib -l pl.UTF-8 +Moduł PHP umożliwiający używanie kompresji zlib. + +%prep +%setup -q -n %{orgname}-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch8 -p1 +%patch7 -p1 +%patch9 -p1 +cp -p php.ini-production php.ini +%patch10 -p1 +%if %{with type_hints} +%patch12 -p0 +%endif +%patch14 -p1 +%patch17 -p1 +%patch18 -p1 +%if %{with system_gd} +%patch19 -p1 +%endif +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch29 -p1 +%patch31 -p1 +%if "%{pld_release}" != "ac" +%patch34 -p1 +%endif +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 +%patch38 -p1 +%patch39 -p1 +%if %{with fpm} +%patch41 -p1 +%patch42 -p1 +%endif +%patch43 -p1 +%patch44 -p1 +#%patch45 -p1 # imap annotations. fixme +#%patch46 -p1 # imap myrights. fixme +%if %{with suhosin} +%patch47 -p1 +%endif +%patch50 -p1 +%patch51 -p1 +%patch52 -p1 +%patch53 -p1 +%undos ext/spl/tests/SplFileInfo_getInode_basic.phpt +%patch55 -p1 +%patch59 -p1 +%patch60 -p1 +%patch62 -p1 +%patch63 -p1 +%{?with_system_libzip:%patch65 -p1} +%patch66 -p1 + +sed -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4 + +# cleanup backups after patching +find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f + +# conflict seems to be resolved by recode patches +%{__rm} ext/recode/config9.m4 + +# remove all bundled libraries not to link with them accidentally +%{__rm} -r ext/sqlite3/libsqlite +#%{__rm} -r ext/bcmath/libbcmath +#%{__rm} -r ext/date/lib +#%{__rm} -r ext/fileinfo/libmagic +#%{__rm} -r ext/dba/libcdb +#%{__rm} -r ext/dba/libflatfile +#%{__rm} -r ext/dba/libinifile +#%{__rm} -r ext/gd/libgd +#%{__rm} -r ext/mbstring/libmbfl +#%{__rm} -r ext/mbstring/oniguruma +%{__rm} -r ext/pcre/pcrelib +#%{__rm} -r ext/soap/interop +%{__rm} -r ext/xmlrpc/libxmlrpc +#%{__rm} -r ext/zip/lib + +cp -pf Zend/LICENSE{,.Zend} +install -p %{SOURCE13} dep-tests.sh + +# breaks build +sed -i -e 's#-fvisibility=hidden##g' configure* + +# disable broken tests +# says just "Terminated" twice and fails +mv sapi/cli/tests/022.phpt{,.broken} + +# really dumb test, executable binary name is .libs/ something when building +# https://bugs.php.net/bug.php?id=54514 +mv tests/basic/bug54514.phpt{,.disable} + +# breaks whole testsuite unexpectedly: +# Fatal error: Call to undefined function gzencode() in run-tests.php on line 1714 +# probably broken as zlib is built as shared +mv ext/soap/tests/server019.phpt{,disable} +# Fatal error: Call to undefined function gzcompress() in run-tests.php on line 1728 +mv ext/soap/tests/server020.phpt{,disable} + +# runs out of memory and kills carme vserver +# PASS Bug #39438 (Fatal error: Out of memory) [Zend/tests/bug39438.phpt] +mv Zend/tests/bug39438.phpt{,.disable} + +# php-5.3.3/ext/standard/tests/file/statpage.phpt +%{__rm} ext/standard/tests/file/statpage.phpt + +# idiotic test, it will fail if somebody else makes space on disk or if disk +# space is not yet allocated (xfs). report upstream to advice bogus test is +# probably pointless. +%{__rm} ext/standard/tests/file/disk_free_space_basic.phpt + +%ifarch %{x8664} +# all pdo_sqlite, sqlite3 tests die with Aborted on carme +%{__rm} -r ext/pdo_sqlite/tests +%{__rm} -r ext/sqlite3/tests +%endif + +# skip XFAILs +# no point testing stuff that is knowingly broken +find -name '*.phpt' | xargs grep XFAIL -l | xargs rm -v + +env \ +%ifarch %{ix86} +ix86= x8664=: +%endif +%ifarch %{x8664} +ix86=: x8664= \ +%endif + sh -xe %{_sourcedir}/skip-tests.sh + +%build +API=$(awk '/#define PHP_API_VERSION/{print $3}' main/php.h) +if [ $API != %{php_api_version} ]; then + echo "Set %%define php_api_version to $API and re-run." + exit 1 +fi + +API=$(awk '/#define ZEND_MODULE_API_NO/{print $3}' Zend/zend_modules.h) +if [ $API != %{zend_module_api} ]; then + echo "Set %%define zend_module_api to $API and re-run." + exit 1 +fi + +API=$(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' Zend/zend_extensions.h) +if [ $API != %{zend_extension_api} ]; then + echo "Set %%define zend_extension_api to $API and re-run." + exit 1 +fi + +# Check for some extension version +ver=$(sed -n '/#define PHP_FILEINFO_VERSION /{s/.* "//;s/".*$//;p}' ext/fileinfo/php_fileinfo.h) +if test "$ver" != "%{fileinfover}"; then + : Error: Upstream FILEINFO version is now ${ver}, expecting %{fileinfover}. + : Update the fileinfover macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_PHAR_VERSION /{s/.* "//;s/".*$//;p}' ext/phar/php_phar.h) +if test "$ver" != "%{pharver}"; then + : Error: Upstream PHAR version is now ${ver}, expecting %{pharver}. + : Update the pharver macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_SQLITE3_VERSION/{s/.* "//;s/".*$//;p}' ext/sqlite3/php_sqlite3.h) +if test "$ver" != "%{sqlite3ver}"; then + : Error: Upstream Sqlite3 version is now ${ver}, expecting %{sqlite3ver}. + : Update the sqlite3ver macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_ZIP_VERSION_STRING /{s/.* "//;s/".*$//;p}' ext/zip/php_zip.h) +if test "$ver" != "%{zipver}"; then + : Error: Upstream ZIP version is now ${ver}, expecting %{zipver}. + : Update the zipver macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_JSON_VERSION /{s/.* "//;s/".*$//;p}' ext/json/php_json.h) +if test "$ver" != "%{jsonver}"; then + : Error: Upstream JSON version is now ${ver}, expecting %{jsonver}. + : Update the jsonver macro and rebuild. + exit 1 +fi +ver=$(sed -rne 's,.*(.+),\1,p' ext/bz2/package.xml) +if test "$ver" != "%{bz2ver}"; then + : Error: Upstream BZIP2 version is now ${ver}, expecting %{bz2ver}. + : Update the bz2ver macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_ENCHANT_VERSION /{s/.* "//;s/".*$//;p}' ext/enchant/php_enchant.h) +if test "$ver" != "%{enchantver}"; then + : Error: Upstream Enchant version is now ${ver}, expecting %{enchantver}. + : Update the enchantver macro and rebuild. + exit 1 +fi +ver=$(awk '/#define PHP_HASH_EXTVER/ {print $3}' ext/hash/php_hash.h | xargs) +if test "$ver" != "%{hashver}"; then + : Error: Upstream HASH version is now ${ver}, expecting %{hashver}. + : Update the hashver macro and rebuild. + exit 1 +fi +ver=$(sed -n '/#define PHP_INTL_VERSION /{s/.* "//;s/".*$//;p}' ext/intl/php_intl.h) +if test "$ver" != "%{intlver}"; then + : Error: Upstream Intl version is now ${ver}, expecting %{intlver}. + : Update the intlver macro and rebuild. + exit 1 +fi + +export EXTENSION_DIR="%{php_extensiondir}" +# configure once (for faster debugging purposes) +if [ ! -f _built-conf ]; then + # now remove Makefile copies + rm -f Makefile.{cgi-fcgi,fpm,cli,apxs1,apxs2,litespeed} + %{__libtoolize} + %{__aclocal} + cp -f /usr/share/automake/config.* . + ./buildconf --force + touch _built-conf +fi +export PROG_SENDMAIL="/usr/lib/sendmail" +export CPPFLAGS="-DDEBUG_FASTCGI -DHAVE_STRNDUP %{rpmcppflags} \ + -I%{_includedir}/xmlrpc-epi" + +sapis=" +cli +%if %{with cgi} +cgi-fcgi +%endif +%if %{with litespeed} +litespeed +%endif +%if %{with fpm} +fpm +%endif +%if %{with embed} +embed +%endif +%if %{with apache1} +apxs1 +%endif +%if %{with apache2} +apxs2 +%endif +" +for sapi in $sapis; do + : SAPI $sapi + # skip if already configured (for faster debugging purposes) + [ -f Makefile.$sapi ] && continue + + sapi_args='' + case $sapi in + cgi-fcgi) + sapi_args='--disable-cli' + ;; + cli) + sapi_args='--disable-cgi %{?with_gcov:--enable-gcov}' + ;; + fpm) + sapi_args='--disable-cli --enable-fpm' + ;; + embed) + sapi_args='--disable-cli --enable-embed' + ;; + apxs1) + ver=$(rpm -q --qf '%{V}' apache1-devel) + sapi_args="--disable-cli --with-apxs=%{apxs1} --with-apache-version=$ver" + ;; + apxs2) + ver=$(rpm -q --qf '%{V}' apache-devel) + sapi_args="--disable-cli --with-apxs2=%{apxs2} --with-apache-version=$ver" + ;; + litespeed) + sapi_args='--with-litespeed' + ;; + esac + + %configure \ + $sapi_args \ +%if "%{!?configure_cache:0}%{?configure_cache}" == "0" + --cache-file=config.cache \ +%endif + --with-libdir=%{_lib} \ + --with-config-file-path=%{_sysconfdir} \ + --with-config-file-scan-dir=%{_sysconfdir}/conf.d \ + --with-system-tzdata \ + --%{!?debug:dis}%{?debug:en}able-debug \ + %{?with_zts:--enable-maintainer-zts} \ + --enable-inline-optimization \ + --enable-bcmath=shared \ + --enable-calendar=shared \ + --enable-ctype=shared \ + --enable-dba=shared \ + --enable-dom=shared \ + --enable-exif=shared \ + --enable-fileinfo=shared \ + --enable-ftp=shared \ + --enable-gd-native-ttf \ + %{?with_intl:--enable-intl=shared} \ + --enable-libxml \ + --enable-mbstring=shared,all \ + --enable-mbregex \ + --enable-pcntl=shared \ + --enable-pdo=shared \ + --enable-json=shared \ + --enable-hash=shared \ + --enable-xmlwriter=shared \ +%if %{with fpm} + --with-fpm-user=http \ + --with-fpm-group=http \ +%endif +%if %{with mssql} || %{with sybase_ct} + --with-pdo-dblib=shared \ +%endif +%if %{with interbase} && %{without interbase_inst} + --with-pdo-firebird=shared,/usr \ +%endif + %{?with_mhash:--with-mhash=yes} \ + --with-mysql-sock=/var/lib/mysql/mysql.sock \ + --with-pdo-mysql=shared,%{!?with_mysqlnd:/usr}%{?with_mysqlnd:mysqlnd} \ + %{?with_oci8:--with-pdo-oci=shared%{?with_instantclient:,instantclient,%{_libdir}}} \ + %{?with_odbc:--with-pdo-odbc=shared,unixODBC,/usr} \ + %{?with_pgsql:--with-pdo-pgsql=shared} \ + %{?with_pdo_sqlite:--with-pdo-sqlite=shared,/usr} \ + %{?with_webp:--with-vpx-dir=/usr} \ + --without-libexpat-dir \ + --enable-posix=shared \ + --enable-shared \ + --enable-session=shared \ + --enable-shmop=shared \ + --enable-simplexml=shared \ + --enable-sysvmsg=shared \ + --enable-sysvsem=shared \ + --enable-sysvshm=shared \ + --enable-soap=shared \ + --enable-sockets=shared \ + --enable-tokenizer=shared \ + %{?with_wddx:--enable-wddx=shared} \ + --enable-xml=shared \ + --enable-xmlreader=shared \ + --with-bz2=shared \ + %{__with_without curl curl shared} \ + --with-db4 \ + --with-iconv=shared \ + %{?with_enchant:--with-enchant=shared,/usr} \ + --with-freetype-dir=shared \ + --with-gettext=shared \ + --with-gd=shared%{?with_system_gd:,/usr} \ + --with-gdbm \ + --with-gmp=shared \ + %{?with_imap:--with-imap=shared --with-imap-ssl} \ + %{?with_interbase:--with-interbase=shared%{!?with_interbase_inst:,/usr}} \ + --with-jpeg-dir=/usr \ + %{?with_ldap:--with-ldap=shared --with-ldap-sasl} \ + --with-mcrypt=shared \ + %{?with_mm:--with-mm} \ + %{?with_mssql:--with-mssql=shared} \ + %{?with_mysqlnd:--enable-mysqlnd=shared} \ + --with-mysql=shared,%{!?with_mysqlnd:/usr}%{?with_mysqlnd:mysqlnd} \ + %{?with_mysqli:--with-mysqli=shared,%{!?with_mysqlnd:/usr/bin/mysql_config}%{?with_mysqlnd:mysqlnd}} \ + %{?with_oci8:--with-oci8=shared%{?with_instantclient:,instantclient,%{_libdir}}} \ + %{?with_openssl:--with-openssl=shared} \ + %{?with_kerberos5:--with-kerberos} \ + --with-tcadb=/usr \ + %{__with_without pcre pcre-regex /usr} \ + %{__enable_disable filter filter shared} \ + --with-pear=%{php_pear_dir} \ + %{__with_without pgsql pgsql shared,/usr} \ + %{__enable_disable phar phar shared} \ + --with-png-dir=/usr \ + %{?with_pspell:--with-pspell=shared} \ + --with-readline=shared \ + %{?with_recode:--with-recode=shared} \ + --with-regex=system \ + %{?with_snmp:--with-snmp=shared} \ + %{?with_sybase_ct:--with-sybase-ct=shared,/usr} \ + %{!?with_pdo_sqlite:--without-pdo-sqlite} \ + %{__with_without sqlite3 sqlite3 shared,/usr} \ + --with-t1lib=shared \ + %{?with_tidy:--with-tidy=shared} \ + %{?with_odbc:--with-unixODBC=shared,/usr} \ + %{__with_without xmlrpc xmlrpc shared,/usr} \ + --with-xsl=shared \ + --with-zlib=shared \ + --with-zlib-dir=shared,/usr \ + %{?with_system_libzip:--with-libzip} \ + --enable-zip=shared,/usr \ + + # save for debug + cp -f Makefile Makefile.$sapi + cp -f main/php_config.h php_config.h.$sapi + cp -f config.log config.log.$sapi +done + +# as we build each SAPI in own make, adjust php-config.in forehead +sapis=$(%{__sed} -rne 's/^PHP_INSTALLED_SAPIS = (.+)/\1/p' Makefile.* | tr ' ' '\n' | sort -u | xargs) +%{__sed} -i -e "s,@PHP_INSTALLED_SAPIS@,$sapis," scripts/php-config.in + +# must make libphp_common first, so modules can link against it. +cp -af php_config.h.cli main/php_config.h +cp -af Makefile.cli Makefile +%{__make} libphp_common.la +%{__make} build-modules + +%if %{with apache1} +%{__make} libtool-sapi LIBTOOL_SAPI=sapi/apache/libphp5.la -f Makefile.apxs1 +%endif + +%if %{with apache2} +%{__make} libtool-sapi LIBTOOL_SAPI=sapi/apache2handler/libphp5.la -f Makefile.apxs2 +%endif + +%if %{with litespeed} +%{__make} -f Makefile.litespeed +%endif + +# CGI/FCGI +%if %{with cgi} +cp -pf php_config.h.cgi-fcgi main/php_config.h +%{__make} -f Makefile.cgi-fcgi +[ "$(echo '<", $vals, $index); exit((int )empty($vals[0]["value"]));' + +# Generate stub .ini files for each extension +rm -rf conf.d +install -d conf.d +generate_inifiles() { + for so in modules/*.so; do + mod=$(basename $so .so) + conf="$mod.ini" + # xml needs to be loaded before wddx + [ "$mod" = "wddx" ] && conf="xml_$mod.ini" + # pre needs to be loaded before SPL + [ "$mod" = "pcre" ] && conf="PCRE.ini" + # spl needs to be loaded before mysqli + [ "$mod" = "spl" ] && conf="SPL.ini" + # session needs to be loaded before php-pecl-http, php-pecl-memcache, php-pecl-session_mysql + [ "$mod" = "session" ] && conf="Session.ini" + # mysqlnd needs to be loaded before mysql,mysqli,pdo_mysqli + [ "$mod" = "mysqlnd" ] && conf="MySQLND.ini" + echo "+ $conf" + cat > conf.d/$conf <<-EOF + ; Enable $mod extension module + extension=$mod.so + EOF + done +} +generate_inifiles + +# Check that the module inner-dependencies are intact +PHP=./sapi/cli/php EXTENSION_DIR=modules CONFIG_DIR=conf.d ./dep-tests.sh > dep-tests.log +if grep -v OK dep-tests.log; then + echo >&2 "The results above were not expected" + exit 1 +fi + +%if %{with gcov} +# Use CLI SAPI +cp -pf php_config.h.cli main/php_config.h +cp -pf Makefile.cli Makefile +%{__make} lcov +# you really don't want to package result of gcov build +exit 1 +%endif + +cat <<'EOF' > run-tests.sh +#!/bin/sh +export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 +unset TZ LANG LC_ALL || : +%{__make} test \ + EXTENSION_DIR=modules \ + PHP_TEST_SHARED_SYSTEM_EXTENSIONS= \ + RUN_TESTS_SETTINGS="-q $*" +EOF +chmod +x run-tests.sh + +%if %{with tests} +# Run tests, using the CLI SAPI +cp -pf php_config.h.cli main/php_config.h +cp -pf Makefile.cli Makefile + +./run-tests.sh -w failed.log -s tests.log + +# collect failed tests into cleanup script used in prep. +sed -ne '/^FAILED TEST SUMMARY/,/^===/p' tests.log | sed -e '1,/^---/d;/^===/,$d' > tests-failed.log +sed -ne '/^via/d;/\[.*\]/{s/\t*\(.*\) \[\(.*\)\]\(.*\)/# \1\3\nmv \2{,.skip}/p}' tests-failed.log \ + >> %{_sourcedir}/skip-tests.sh + +# if on builders, dump test log +tty -q || cat tests.log + +test ! -s failed.log +%endif + +%install +rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT{%{_libdir}/{php,apache{,1}},%{_sysconfdir}/{apache,cgi}} \ + $RPM_BUILD_ROOT{%{_sbindir},%{_bindir}} \ + $RPM_BUILD_ROOT/etc/{apache/conf.d,httpd/conf.d} \ + $RPM_BUILD_ROOT%{_mandir}/man{1,8} \ + +cp -pf php_config.h.cli main/php_config.h +cp -pf Makefile.cli Makefile +%{__make} install \ + INSTALL_ROOT=$RPM_BUILD_ROOT + +# make link relative +ln -sfn phar.phar $RPM_BUILD_ROOT%{_bindir}/phar + +# version suffix +v=$(echo %{version} | cut -d. -f1-2) + +# install Apache1 DSO module +%if %{with apache1} +libtool --mode=install install -p sapi/apache/libphp5.la $RPM_BUILD_ROOT%{_libdir}/apache1 +mv $RPM_BUILD_ROOT%{_libdir}/apache1/libphp5{,-$v}.so +ln -s libphp5-$v.so $RPM_BUILD_ROOT%{_libdir}/apache1/libphp5.so +%endif + +# install Apache2 DSO module +%if %{with apache2} +libtool --mode=install install -p sapi/apache2handler/libphp5.la $RPM_BUILD_ROOT%{_libdir}/apache +mv $RPM_BUILD_ROOT%{_libdir}/apache/libphp5{,-$v}.so +ln -s libphp5-$v.so $RPM_BUILD_ROOT%{_libdir}/apache/libphp5.so +%endif + +# install litespeed sapi +%if %{with litespeed} +libtool --mode=install install -p sapi/litespeed/php $RPM_BUILD_ROOT%{_sbindir}/%{name}.litespeed +%endif + +libtool --mode=install install -p libphp_common.la $RPM_BUILD_ROOT%{_libdir} + +# install CGI/FCGI +%if %{with cgi} +# install-cgi +libtool --mode=install install -p sapi/cgi/php-cgi $RPM_BUILD_ROOT%{_bindir}/%{name}.cgi +ln -sf %{name}.cgi $RPM_BUILD_ROOT%{_bindir}/%{name}.fcgi +cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/php-cgi-fcgi.ini +%endif + +# install FCGI PM +%if %{with fpm} +install -d $RPM_BUILD_ROOT{%{_sysconfdir}/fpm.d,%{_sbindir}} +libtool --mode=install install -p sapi/fpm/php-fpm $RPM_BUILD_ROOT%{_sbindir}/%{name}-fpm +cp -p sapi/fpm/php-fpm.8 $RPM_BUILD_ROOT%{_mandir}/man8/%{name}-fpm.8 +cp -p sapi/fpm/php-fpm.conf $RPM_BUILD_ROOT%{_sysconfdir} +install -d $RPM_BUILD_ROOT/etc/rc.d/init.d +install -p %{SOURCE10} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-fpm +install -d $RPM_BUILD_ROOT/etc/logrotate.d +cp -p %{SOURCE11} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}-fpm +%if "%{pld_release}" == "ac" +%{__sed} -i -e '/su/d' $RPM_BUILD_ROOT/etc/logrotate.d/%{name}-fpm +%endif + +%{__sed} -i -e ' + s#/usr/lib/php#%{php_extensiondir}# + s#/etc/php#%{_sysconfdir}# + s#@processname@#%{name}-fpm#g +' $RPM_BUILD_ROOT{/etc/{rc.d/init.d/%{name}-fpm,logrotate.d/%{name}-fpm},%{_sysconfdir}/php-fpm.conf} +%endif + +# install Embedded API +%if %{with embed} +%{__make} -f Makefile.embed install-sapi INSTALL_ROOT=$RPM_BUILD_ROOT +# we could use install-headers from Makefile.embed, but that would reinstall all headers +install -d $RPM_BUILD_ROOT%{_includedir}/php/sapi/embed +cp -p sapi/embed/php_embed.h $RPM_BUILD_ROOT%{_includedir}/php/sapi/embed +%endif + +# install CLI +libtool --mode=install install -p sapi/cli/php $RPM_BUILD_ROOT%{_bindir}/%{name} +cp -p sapi/cli/php.1 $RPM_BUILD_ROOT%{_mandir}/man1/%{name}.1 +echo ".so %{name}.1" >$RPM_BUILD_ROOT%{_mandir}/man1/php.1 +ln -sf %{name} $RPM_BUILD_ROOT%{_bindir}/php + +cp -p php.ini $RPM_BUILD_ROOT%{_sysconfdir}/php.ini + +cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/php-cli.ini +cp -p %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/browscap.ini + +%if %{with apache1} +cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/apache/conf.d/70_mod_php.conf +cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/php-apache.ini +%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/apache1/libphp5.la +%endif + +%if %{with apache2} +cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/httpd/conf.d/70_mod_php.conf +cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/php-apache2handler.ini +%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/apache/libphp5.la +%endif + +# ensure that paths are correct for current php version and arch +grep -El '/etc/php/|/usr/lib/php/' $RPM_BUILD_ROOT%{_sysconfdir}/*.ini | xargs -r \ +%{__sed} -i -e ' + s#/usr/lib/php#%{php_extensiondir}# + s#/etc/php#%{_sysconfdir}# +' + +install -d $RPM_BUILD_ROOT%{_sysconfdir}/conf.d +cp -p conf.d/*.ini $RPM_BUILD_ROOT%{_sysconfdir}/conf.d + +# per SAPI ini directories +install -d $RPM_BUILD_ROOT%{_sysconfdir}/{cgi-fcgi,cli,apache,apache2handler}.d + +# for CLI SAPI only +mv $RPM_BUILD_ROOT%{_sysconfdir}/{conf.d/readline.ini,cli.d} + +# use system automake and {lib,sh}tool +%if "%{pld_release}" != "ac" + ln -snf /usr/share/automake/config.{guess,sub} $RPM_BUILD_ROOT%{_libdir}/php/build + for i in libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4; do + ln -snf %{_aclocaldir}/${i} $RPM_BUILD_ROOT%{_libdir}/php/build + done + ln -snf %{_datadir}/libtool/config/ltmain.sh $RPM_BUILD_ROOT%{_libdir}/php/build +%else + ln -snf %{_aclocaldir}/libtool.m4 $RPM_BUILD_ROOT%{_libdir}/php/build + ln -snf %{_datadir}/libtool/ltmain.sh $RPM_BUILD_ROOT%{_libdir}/php/build +%endif +ln -snf %{_bindir}/shtool $RPM_BUILD_ROOT%{_libdir}/php/build + +# for php-pecl-mailparse +install -d $RPM_BUILD_ROOT%{_includedir}/php/ext/mbstring +cp -p ext/mbstring/libmbfl/mbfl/*.h $RPM_BUILD_ROOT%{_includedir}/php/ext/mbstring + +# tests +install -d $RPM_BUILD_ROOT%{php_data_dir}/tests/php +install -p run-tests.php $RPM_BUILD_ROOT%{php_data_dir}/tests/php/run-tests.php +cp -a tests/* $RPM_BUILD_ROOT%{php_data_dir}/tests/php + +# fix install paths, avoid evil rpaths +sed -i -e "s|^libdir=.*|libdir='%{_libdir}'|" $RPM_BUILD_ROOT%{_libdir}/libphp_common.la +%if %{with embed} +# libphp5.la contains our buildroot in dependency_libs +sed -i -e "/dependency_libs/ s,/[^ ]*/libs/libphp_common.la,%{_libdir}/libphp_common.la," $RPM_BUILD_ROOT%{_libdir}/libphp5.la +%endif +# better solution? +sed -i -e 's|libphp_common.la|$(libdir)/libphp_common.la|' $RPM_BUILD_ROOT%{_libdir}/php/build/acinclude.m4 + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -n apache1-mod_%{name} +if [ "$1" = "1" ]; then + %service -q apache restart +fi + +%postun -n apache1-mod_%{name} +if [ "$1" = "0" ]; then + %service -q apache restart +fi + +%post -n apache-mod_%{name} +if [ "$1" = "1" ]; then + %service -q httpd restart +fi + +%postun -n apache-mod_%{name} +if [ "$1" = "0" ]; then + %service -q httpd restart +fi + +%pre fpm +%useradd -u 51 -r -s /bin/false -c "HTTP User" -g http http + +%post fpm +/sbin/chkconfig --add %{name}-fpm +%service %{name}-fpm restart + +%preun fpm +if [ "$1" = 0 ]; then + %service %{name}-fpm stop + /sbin/chkconfig --del %{name}-fpm +fi + +%postun fpm +if [ "$1" = "0" ]; then + %userremove http +fi + +%post embedded -p /sbin/ldconfig +%postun embedded -p /sbin/ldconfig + +%post common +# PHP 5.3 requires timezone being setup, try setup it from tzdata +if ! grep -q '^date.timezone[[:space:]]*=' %{_sysconfdir}/php.ini && [ -f /etc/sysconfig/timezone ]; then + TIMEZONE= + . /etc/sysconfig/timezone + if [ "$TIMEZONE" ]; then + %{__sed} -i -e "s,^;date.timezone[[:space:]]*=.*,date.timezone = $TIMEZONE," %{_sysconfdir}/php.ini + fi +fi + +%posttrans common +# minimizing apache restarts logics. we restart webserver: +# +# 1. at the end of transaction. (posttrans, feature from rpm 4.4.2) +# 2. first install of extension (post: $1 = 1) +# 2. uninstall of extension (postun: $1 == 0) +# +# the strict internal deps between extensions (and apache modules) and +# common package are very important for all this to work. + +# restart webserver at the end of transaction +[ ! -f /etc/apache/conf.d/??_mod_php.conf ] || %service -q apache restart +[ ! -f /etc/httpd/conf.d/??_mod_php.conf ] || %service -q httpd restart + +# common macros called at extension post/postun scriptlet +%define extension_scripts() \ +%post %1 \ +if [ "$1" = "1" ]; then \ + %php_webserver_restart \ +fi \ +\ +%postun %1 \ +if [ "$1" = "0" ]; then \ + %php_webserver_restart \ +fi +%{nil} + +# extension scripts defines +%extension_scripts bcmath +%extension_scripts bz2 +%extension_scripts calendar +%extension_scripts ctype +%extension_scripts curl +%extension_scripts dba +%extension_scripts dom +%extension_scripts enchant +%extension_scripts exif +%extension_scripts fileinfo +%extension_scripts filter +%extension_scripts ftp +%extension_scripts gd +%extension_scripts gettext +%extension_scripts gmp +%extension_scripts hash +%extension_scripts iconv +%extension_scripts imap +%extension_scripts interbase +%extension_scripts intl +%extension_scripts json +%extension_scripts ldap +%extension_scripts mbstring +%extension_scripts mcrypt +%extension_scripts mssql +%extension_scripts mysql +%extension_scripts mysqli +%extension_scripts mysqlnd +%extension_scripts oci8 +%extension_scripts odbc +%extension_scripts openssl +%extension_scripts pcre +%extension_scripts pdo +%extension_scripts pdo-dblib +%extension_scripts pdo-firebird +%extension_scripts pdo-oci +%extension_scripts pdo-mysql +%extension_scripts pdo-odbc +%extension_scripts pdo-pgsql +%extension_scripts pdo-sqlite +%extension_scripts pgsql +%extension_scripts phar +%extension_scripts pcntl +%extension_scripts posix +%extension_scripts pspell +%extension_scripts recode +%extension_scripts session +%extension_scripts shmop +%extension_scripts simplexml +%extension_scripts snmp +%extension_scripts soap +%extension_scripts sockets +%extension_scripts spl +%extension_scripts sqlite3 +%extension_scripts sybase-ct +%extension_scripts sysvmsg +%extension_scripts sysvsem +%extension_scripts sysvshm +%extension_scripts tidy +%extension_scripts tokenizer +%extension_scripts wddx +%extension_scripts xml +%extension_scripts xmlreader +%extension_scripts xmlrpc +%extension_scripts xmlwriter +%extension_scripts xsl +%extension_scripts zip +%extension_scripts zlib + +%if %{with apache1} +%files -n apache1-mod_%{name} +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/apache/conf.d/*_mod_php.conf +%dir %{_sysconfdir}/apache.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-apache.ini +%attr(755,root,root) %{_libdir}/apache1/libphp5.so +%attr(755,root,root) %{_libdir}/apache1/libphp5-*.*.so +%endif + +%if %{with apache2} +%files -n apache-mod_%{name} +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/httpd/conf.d/*_mod_php.conf +%dir %{_sysconfdir}/apache2handler.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-apache2handler.ini +%attr(755,root,root) %{_libdir}/apache/libphp5.so +%attr(755,root,root) %{_libdir}/apache/libphp5-*.*.so +%endif + +%if %{with litespeed} +%files litespeed +%defattr(644,root,root,755) +%attr(755,root,root) %{_sbindir}/%{name}.litespeed +%endif + +%if %{with cgi} +%files cgi +%defattr(644,root,root,755) +%dir %{_sysconfdir}/cgi-fcgi.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-cgi-fcgi.ini +%attr(755,root,root) %{_bindir}/%{name}.cgi +%attr(755,root,root) %{_bindir}/%{name}.fcgi +%endif + +%if %{with embed} +%files embedded +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libphp5-%{version}.so +%endif + +%files cli +%defattr(644,root,root,755) +%dir %{_sysconfdir}/cli.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-cli.ini +%attr(755,root,root) %{_bindir}/%{name} +%{_mandir}/man1/%{name}.1* + +%files program +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/php +%{_mandir}/man1/php.1* + +%if %{with fpm} +%files fpm +%defattr(644,root,root,755) +%doc sapi/fpm/{CREDITS,LICENSE} +%dir %{_sysconfdir}/fpm.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-fpm.conf +%attr(755,root,root) %{_sbindir}/%{name}-fpm +%{_mandir}/man8/%{name}-fpm.8* +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}-fpm +%attr(754,root,root) /etc/rc.d/init.d/%{name}-fpm +%endif + +%files common +%defattr(644,root,root,755) +%doc CREDITS EXTENSIONS LICENSE NEWS README.{PHP4-TO-PHP5-THIN-CHANGES,namespaces} UPGRADING* Zend/{LICENSE.Zend,ZEND_CHANGES} php.ini-* +%dir %{_sysconfdir} +%dir %{_sysconfdir}/conf.d +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php.ini +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/browscap.ini +%attr(755,root,root) %{_libdir}/libphp_common-*.so +%dir %{php_extensiondir} + +%doc ext/session/mod_files.sh + +%files devel +%defattr(644,root,root,755) +%doc CODING_STANDARDS README.{EXTENSIONS,EXT_SKEL,PARAMETER_PARSING_API,SELF-CONTAINED-EXTENSIONS,STREAMS,SUBMITTING_PATCH,TESTING,TESTING2,UNIX-BUILD-SYSTEM,input_filter} +%attr(755,root,root) %{_bindir}/phpize +%attr(755,root,root) %{_bindir}/php-config +%attr(755,root,root) %{_libdir}/libphp_common.so +%{_libdir}/libphp_common.la +%{_includedir}/php +%{_libdir}/php/build +%{_mandir}/man1/php-config.1* +%{_mandir}/man1/phpize.1* +%if %{with embed} +# embedded +%{_libdir}/libphp5.so +%{_libdir}/libphp5.la +%endif + +%files bcmath +%defattr(644,root,root,755) +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/bcmath.ini +%attr(755,root,root) %{php_extensiondir}/bcmath.so + +%files bz2 +%defattr(644,root,root,755) +%doc ext/bz2/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/bz2.ini +%attr(755,root,root) %{php_extensiondir}/bz2.so + +%files calendar +%defattr(644,root,root,755) +%doc ext/calendar/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/calendar.ini +%attr(755,root,root) %{php_extensiondir}/calendar.so + +%files ctype +%defattr(644,root,root,755) +%doc ext/calendar/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/ctype.ini +%attr(755,root,root) %{php_extensiondir}/ctype.so + +%if %{with curl} +%files curl +%defattr(644,root,root,755) +%doc ext/curl/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/curl.ini +%attr(755,root,root) %{php_extensiondir}/curl.so +%endif + +%files dba +%defattr(644,root,root,755) +%doc ext/dba/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/dba.ini +%attr(755,root,root) %{php_extensiondir}/dba.so + +%files dom +%defattr(644,root,root,755) +%doc ext/dom/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/dom.ini +%attr(755,root,root) %{php_extensiondir}/dom.so + +%if %{with enchant} +%files enchant +%defattr(644,root,root,755) +%doc ext/enchant/{CREDITS,docs/examples} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/enchant.ini +%attr(755,root,root) %{php_extensiondir}/enchant.so +%endif + +%files exif +%defattr(644,root,root,755) +%doc ext/exif/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/exif.ini +%attr(755,root,root) %{php_extensiondir}/exif.so + +%files fileinfo +%defattr(644,root,root,755) +%doc ext/fileinfo/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/fileinfo.ini +%attr(755,root,root) %{php_extensiondir}/fileinfo.so + +%if %{with filter} +%files filter +%defattr(644,root,root,755) +%doc ext/filter/{CREDITS,docs/*} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/filter.ini +%attr(755,root,root) %{php_extensiondir}/filter.so +%endif + +%files ftp +%defattr(644,root,root,755) +%doc ext/ftp/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/ftp.ini +%attr(755,root,root) %{php_extensiondir}/ftp.so + +%files gd +%defattr(644,root,root,755) +%doc ext/gd/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/gd.ini +%attr(755,root,root) %{php_extensiondir}/gd.so + +%files gettext +%defattr(644,root,root,755) +%doc ext/gettext/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/gettext.ini +%attr(755,root,root) %{php_extensiondir}/gettext.so + +%files gmp +%defattr(644,root,root,755) +%doc ext/gmp/{CREDITS,README,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/gmp.ini +%attr(755,root,root) %{php_extensiondir}/gmp.so + +%files hash +%defattr(644,root,root,755) +%doc ext/hash/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/hash.ini +%attr(755,root,root) %{php_extensiondir}/hash.so + +%files iconv +%defattr(644,root,root,755) +%doc ext/iconv/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/iconv.ini +%attr(755,root,root) %{php_extensiondir}/iconv.so + +%if %{with imap} +%files imap +%defattr(644,root,root,755) +%doc ext/imap/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/imap.ini +%attr(755,root,root) %{php_extensiondir}/imap.so +%endif + +%if %{with interbase} +%files interbase +%defattr(644,root,root,755) +%doc ext/interbase/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/interbase.ini +%attr(755,root,root) %{php_extensiondir}/interbase.so +%endif + +%if %{with intl} +%files intl +%defattr(644,root,root,755) +%doc ext/intl/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/intl.ini +%attr(755,root,root) %{php_extensiondir}/intl.so +%endif + +%files json +%defattr(644,root,root,755) +%doc ext/json/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/json.ini +%attr(755,root,root) %{php_extensiondir}/json.so + +%if %{with ldap} +%files ldap +%defattr(644,root,root,755) +%doc ext/ldap/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/ldap.ini +%attr(755,root,root) %{php_extensiondir}/ldap.so +%endif + +%files mbstring +%defattr(644,root,root,755) +%doc ext/mbstring/{CREDITS,README*} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mbstring.ini +%attr(755,root,root) %{php_extensiondir}/mbstring.so + +%files mcrypt +%defattr(644,root,root,755) +%doc ext/mcrypt/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mcrypt.ini +%attr(755,root,root) %{php_extensiondir}/mcrypt.so + +%if %{with mssql} +%files mssql +%defattr(644,root,root,755) +%doc ext/mssql/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mssql.ini +%attr(755,root,root) %{php_extensiondir}/mssql.so +%endif + +%files mysql +%defattr(644,root,root,755) +%doc ext/mysql/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mysql.ini +%attr(755,root,root) %{php_extensiondir}/mysql.so + +%if %{with mysqli} +%files mysqli +%defattr(644,root,root,755) +%doc ext/mysqli/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mysqli.ini +%attr(755,root,root) %{php_extensiondir}/mysqli.so +%endif + +%if %{with mysqlnd} +%files mysqlnd +%defattr(644,root,root,755) +%doc ext/mysqlnd/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/MySQLND.ini +%attr(755,root,root) %{php_extensiondir}/mysqlnd.so +%endif + +%if %{with oci8} +%files oci8 +%defattr(644,root,root,755) +%doc ext/ico8/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/oci8.ini +%attr(755,root,root) %{php_extensiondir}/oci8.so +%endif + +%if %{with odbc} +%files odbc +%defattr(644,root,root,755) +%doc ext/odbc/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/odbc.ini +%attr(755,root,root) %{php_extensiondir}/odbc.so +%endif + +%if %{with openssl} +%files openssl +%defattr(644,root,root,755) +%doc ext/openssl/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/openssl.ini +%attr(755,root,root) %{php_extensiondir}/openssl.so +%endif + +%files pcntl +%defattr(644,root,root,755) +%doc ext/pcntl/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pcntl.ini +%attr(755,root,root) %{php_extensiondir}/pcntl.so + +%if %{with pcre} +%files pcre +%defattr(644,root,root,755) +%doc ext/pcre/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/PCRE.ini +%attr(755,root,root) %{php_extensiondir}/pcre.so +%endif + +%files pdo +%defattr(644,root,root,755) +%doc ext/pdo/{CREDITS,README,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo.ini +%attr(755,root,root) %{php_extensiondir}/pdo.so + +%if %{with mssql} || %{with sybase_ct} +%files pdo-dblib +%defattr(644,root,root,755) +%doc ext/pdo_dblib/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_dblib.ini +%attr(755,root,root) %{php_extensiondir}/pdo_dblib.so +%endif + +%if %{with interbase} && !%{with interbase_inst} +%files pdo-firebird +%defattr(644,root,root,755) +%doc ext/pdo_firebird/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_firebird.ini +%attr(755,root,root) %{php_extensiondir}/pdo_firebird.so +%endif + +%files pdo-mysql +%defattr(644,root,root,755) +%doc ext/pdo_mysql/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_mysql.ini +%attr(755,root,root) %{php_extensiondir}/pdo_mysql.so + +%if %{with oci8} +%files pdo-oci +%defattr(644,root,root,755) +%doc ext/pdo_oci/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_oci.ini +%attr(755,root,root) %{php_extensiondir}/pdo_oci.so +%endif + +%if %{with odbc} +%files pdo-odbc +%defattr(644,root,root,755) +%doc ext/pdo_odbc/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_odbc.ini +%attr(755,root,root) %{php_extensiondir}/pdo_odbc.so +%endif + +%if %{with pgsql} +%files pdo-pgsql +%defattr(644,root,root,755) +%doc ext/pdo_pgsql/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_pgsql.ini +%attr(755,root,root) %{php_extensiondir}/pdo_pgsql.so +%endif + +%if %{with pdo_sqlite} +%files pdo-sqlite +%defattr(644,root,root,755) +%doc ext/pdo_sqlite/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo_sqlite.ini +%attr(755,root,root) %{php_extensiondir}/pdo_sqlite.so +%endif + +%if %{with pgsql} +%files pgsql +%defattr(644,root,root,755) +%doc ext/pgsql/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pgsql.ini +%attr(755,root,root) %{php_extensiondir}/pgsql.so +%endif + +%if %{with phar} +%files phar +%defattr(644,root,root,755) +%doc ext/phar/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/phar.ini +%attr(755,root,root) %{php_extensiondir}/phar.so +%attr(755,root,root) %{_bindir}/phar +%attr(755,root,root) %{_bindir}/phar.phar +%endif + +%files posix +%defattr(644,root,root,755) +%doc ext/posix/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/posix.ini +%attr(755,root,root) %{php_extensiondir}/posix.so + +%if %{with pspell} +%files pspell +%defattr(644,root,root,755) +%doc ext/pspell/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pspell.ini +%attr(755,root,root) %{php_extensiondir}/pspell.so +%endif + +%files readline +%defattr(644,root,root,755) +%doc ext/readline/{CREDITS,README*} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/cli.d/readline.ini +%attr(755,root,root) %{php_extensiondir}/readline.so + +%if %{with recode} +%files recode +%defattr(644,root,root,755) +%doc ext/recode/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/recode.ini +%attr(755,root,root) %{php_extensiondir}/recode.so +%endif + +%files session +%defattr(644,root,root,755) +%doc ext/session/CREDITS +%doc ext/session/mod_files.sh +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/Session.ini +%attr(755,root,root) %{php_extensiondir}/session.so + +%files shmop +%defattr(644,root,root,755) +%doc ext/shmop/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/shmop.ini +%attr(755,root,root) %{php_extensiondir}/shmop.so + +%files simplexml +%defattr(644,root,root,755) +%doc ext/simplexml/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/simplexml.ini +%attr(755,root,root) %{php_extensiondir}/simplexml.so + +%if %{with snmp} +%files snmp +%defattr(644,root,root,755) +%doc ext/snmp/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/snmp.ini +%attr(755,root,root) %{php_extensiondir}/snmp.so +%endif + +%files soap +%defattr(644,root,root,755) +%doc ext/soap/{CREDITS,TODO*} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/soap.ini +%attr(755,root,root) %{php_extensiondir}/soap.so + +%files sockets +%defattr(644,root,root,755) +%doc ext/sockets/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sockets.ini +%attr(755,root,root) %{php_extensiondir}/sockets.so + +%files spl +%defattr(644,root,root,755) +%doc ext/spl/{CREDITS,README,TODO,examples} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/SPL.ini +%attr(755,root,root) %{php_extensiondir}/spl.so + +%if %{with sqlite3} +%files sqlite3 +%defattr(644,root,root,755) +%doc ext/sqlite3/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sqlite3.ini +%attr(755,root,root) %{php_extensiondir}/sqlite3.so +%endif + +%if %{with sybase_ct} +%files sybase-ct +%defattr(644,root,root,755) +%doc ext/sybase_ct/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sybase_ct.ini +%attr(755,root,root) %{php_extensiondir}/sybase_ct.so +%endif + +%files sysvmsg +%defattr(644,root,root,755) +%doc ext/sysvmsg/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sysvmsg.ini +%attr(755,root,root) %{php_extensiondir}/sysvmsg.so + +%files sysvsem +%defattr(644,root,root,755) +%doc ext/sysvsem/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sysvsem.ini +%attr(755,root,root) %{php_extensiondir}/sysvsem.so + +%files sysvshm +%defattr(644,root,root,755) +%doc ext/sysvshm/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sysvshm.ini +%attr(755,root,root) %{php_extensiondir}/sysvshm.so + +%files tests +%defattr(644,root,root,755) +%dir %{php_data_dir}/tests +%dir %{php_data_dir}/tests/php +%{php_data_dir}/tests/php/basic +%{php_data_dir}/tests/php/classes +%{php_data_dir}/tests/php/func +%{php_data_dir}/tests/php/lang +%{php_data_dir}/tests/php/output +%{php_data_dir}/tests/php/run-test +%{php_data_dir}/tests/php/security +%{php_data_dir}/tests/php/strings +%{php_data_dir}/tests/php/quicktester.inc +%attr(755,root,root) %{php_data_dir}/tests/php/run-tests.php + +%if %{with tidy} +%files tidy +%defattr(644,root,root,755) +%doc ext/tidy/{CREDITS,README} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/tidy.ini +%attr(755,root,root) %{php_extensiondir}/tidy.so +%endif + +%files tokenizer +%defattr(644,root,root,755) +%doc ext/tokenizer/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/tokenizer.ini +%attr(755,root,root) %{php_extensiondir}/tokenizer.so + +%if %{with wddx} +%files wddx +%defattr(644,root,root,755) +%doc ext/wddx/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/*wddx.ini +%attr(755,root,root) %{php_extensiondir}/wddx.so +%endif + +%files xml +%defattr(644,root,root,755) +%doc ext/xml/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xml.ini +%attr(755,root,root) %{php_extensiondir}/xml.so + +%files xmlreader +%defattr(644,root,root,755) +%doc ext/xmlreader/{CREDITS,README,TODO,examples} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlreader.ini +%attr(755,root,root) %{php_extensiondir}/xmlreader.so + +%if %{with xmlrpc} +%files xmlrpc +%defattr(644,root,root,755) +%doc ext/xmlrpc/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlrpc.ini +%attr(755,root,root) %{php_extensiondir}/xmlrpc.so +%endif + +%files xmlwriter +%defattr(644,root,root,755) +%doc ext/xmlwriter/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlwriter.ini +%attr(755,root,root) %{php_extensiondir}/xmlwriter.so + +%files xsl +%defattr(644,root,root,755) +%doc ext/xsl/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xsl.ini +%attr(755,root,root) %{php_extensiondir}/xsl.so + +%files zip +%defattr(644,root,root,755) +%doc ext/zip/{CREDITS,TODO} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/zip.ini +%attr(755,root,root) %{php_extensiondir}/zip.so + +%files zlib +%defattr(644,root,root,755) +%doc ext/zlib/CREDITS +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/zlib.ini +%attr(755,root,root) %{php_extensiondir}/zlib.so diff --git a/php_browscap.ini b/php_browscap.ini new file mode 100644 index 0000000..006be27 --- /dev/null +++ b/php_browscap.ini @@ -0,0 +1,24778 @@ +;;; Provided courtesy of https://browsers.garykeith.com +;;; Created on Monday, July 30, 2012 at 8:00 PM UTC + +;;; Keep up with the latest goings-on with the project: +;;; Follow us on Twitter , or... +;;; Like us on Facebook , or... +;;; Collaborate on GitHub , or... +;;; Discuss on Google Groups . + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Browscap Version + +[GJK_Browscap_Version] +Version=5009 +Released=Mon, 30 Jul 2012 20:00:33 -0000 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DefaultProperties + +[DefaultProperties] +Comment="DefaultProperties" +Browser="DefaultProperties" +Version=0.0 +MajorVer=0 +MinorVer=0 +Platform="unknown" +Platform_Version="unknown" +Alpha=false +Beta=false +Win16=false +Win32=false +Win64=false +Frames=false +IFrames=false +Tables=false +Cookies=false +BackgroundSounds=false +JavaScript=false +VBScript=false +JavaApplets=false +ActiveXControls=false +isMobileDevice=false +isSyndicationReader=false +Crawler=false +CssVersion=0 +AolVersion=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ask + +[Ask] +Parent=DefaultProperties +Comment="Ask" +Browser="Ask" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[Mozilla/?.0 (compatible; Ask Jeeves/Teoma*)] +Parent=Ask +Browser="Teoma" + +[Mozilla/2.0 (compatible; Ask Jeeves)] +Parent=Ask +Browser="AskJeeves" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Baidu + +[Baidu] +Parent=DefaultProperties +Comment="Baidu" +Browser="Baidu" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[*Baiduspider*] +Parent=Baidu +Browser="BaiDu" + +[*Baiduspider-ads*] +Parent=Baidu +Browser="Baidu Business search" + +[*Baiduspider-cpro*] +Parent=Baidu +Browser="Baidu Union" + +[*Baiduspider-favo*] +Parent=Baidu +Browser="Baidu bookmark" + +[*Baiduspider-image*] +Parent=Baidu +Browser="Baidu Image search" + +[*Baiduspider-mobile*] +Parent=Baidu +Browser="Baidu Mobile search" + +[*Baiduspider-news*] +Parent=Baidu +Browser="Baidu News search" + +[*Baiduspider-video*] +Parent=Baidu +Browser="Baidu Video search" + +[AC-BaiduBot/*] +Parent=Baidu +Browser="AC-BaiduBot" + +[BaiduImageSpider*] +Parent=Baidu +Browser="BaiduImageSpider" + +[Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)] +Parent=Baidu +Browser="Baiduspider" +Version=2.0 +MajorVer=2 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google + +[Google] +Parent=DefaultProperties +Comment="Google" +Browser="Google" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[*Google Web Preview*] +Parent=Google +Browser="Google Web Preview" + +[*Googlebot-Mobile/2.*] +Parent=Google +Browser="Googlebot-Mobile" +Frames=false +IFrames=false +Tables=false + +[*Googlebot/2.1*] +Parent=Google +Browser="Googlebot" +Version=2.1 +MajorVer=2 +MinorVer=1 + +[AdsBot-Google*] +Parent=Google +Browser="AdsBot-Google" + +[AdsBot-Google-Mobile*] +Parent=Google +Browser="AdsBot-Google-Mobile" + +[AppEngine-Google*] +Parent=Google +Browser="AppEngine-Google" + +[Feedfetcher-Google*] +Parent=Google +Browser="Feedfetcher-Google" +isSyndicationReader=true + +[Feedfetcher-Google-iGoogleGadgets*] +Parent=Google +Browser="iGoogleGadgets" +isSyndicationReader=true + +[google (*Enterprise*)] +Parent=Google +Browser="Google Enterprise" + +[Google OpenSocial agent*] +Parent=Google +Browser="Google OpenSocial" + +[Google-Site-Verification*] +Parent=Google +Browser="Google-Site-Verification/1.0" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Google-Sitemaps*] +Parent=Google +Browser="Google-Sitemaps" + +[Googlebot-Image*] +Parent=Google +Browser="Googlebot-Image" + +[Googlebot-News*] +Parent=Google +Browser="Googlebot-News" + +[googlebot-urlconsole] +Parent=Google +Browser="googlebot-urlconsole" + +[Googlebot-Video*] +Parent=Google +Browser="Google-Video" + +[Googlebot/Test*] +Parent=Google +Browser="Googlebot/Test" + +[GoogleFriendConnect*] +Parent=Google +Browser="Google Friend Connect" + +[gsa-crawler*] +Parent=Google +Browser="Google Search Appliance" + +[Mediapartners-Google*] +Parent=Google +Browser="Mediapartners-Google" + +[Mozilla/5.0 (*Feedfetcher-Google*)] +Parent=Google +Browser="Google Feedfetcher" + +[Mozilla/5.0 (*Google Desktop*)] +Parent=Google +Browser="Google Desktop" + +[Mozilla/5.0 (*Google Keyword Tool*)] +Parent=Google +Browser="Google Keyword Tool" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSN + +[MSN] +Parent=DefaultProperties +Comment="MSN" +Browser="MSN" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[adidxbot/1.1 (?http://search.msn.com/msnbot.htm)] +Parent=MSN +Browser="adidxbot" + +[librabot/1.0 (*)] +Parent=MSN +Browser="librabot" + +[llssbot/1.0] +Parent=MSN +Browser="llssbot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Microsoft Bing Mobile SocialStreams Bot] +Parent=MSN +Browser="Microsoft Bing Mobile SocialStreams Bot" + +[Mozilla/5.0 (compatible; bingbot/2.*http://www.bing.com/bingbot.htm)] +Parent=MSN +Browser="BingBot" + +[Mozilla/5.0 (Danger hiptop 3.*; U; rv:1.7.*) Gecko/*] +Parent=MSN +Browser="Danger" + +[MSMOBOT/1.1*] +Parent=MSN +Browser="msnbot-mobile" +Version=1.1 +MajorVer=1 +MinorVer=1 + +[MSNBot-Academic/1.0*] +Parent=MSN +Browser="MSNBot-Academic" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[msnbot-media/1.0*] +Parent=MSN +Browser="msnbot-media" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[msnbot-media/1.1*] +Parent=MSN +Browser="msnbot-media" +Version=1.1 +MajorVer=1 +MinorVer=1 + +[MSNBot-News/1.0*] +Parent=MSN +Browser="MSNBot-News" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[MSNBot-NewsBlogs/1.0*] +Parent=MSN +Browser="MSNBot-NewsBlogs" +Version=1 +MajorVer=1 + +[msnbot-NewsBlogs/2.* (+http://search.msn.com/msnbot.htm)] +Parent=MSN +Browser="msnbot-NewsBlogs" +Version=2.0 +MajorVer=2 +MinorVer=0 + +[msnbot-products] +Parent=MSN +Browser="msnbot-products" + +[msnbot-webmaster/1.0 (*http://search.msn.com/msnbot.htm)] +Parent=MSN +Browser="msnbot-webmaster tools" + +[msnbot/1.0*] +Parent=MSN +Browser="msnbot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[msnbot/1.1*] +Parent=MSN +Browser="msnbot" +Version=1.1 +MajorVer=1 +MinorVer=1 + +[msnbot/2.0b*] +Parent=MSN +Browser="msnbot" +Version=2.0 +MajorVer=2 +MinorVer=0 +Beta=true + +[MSR-ISRCCrawler] +Parent=MSN +Browser="MSR-ISRCCrawler" + +[MSRBOT*] +Parent=MSN +Browser="MSRBOT" + +[renlifangbot/1.0 (?http://search.msn.com/msnbot.htm)] +Parent=MSN +Browser="renlifangbot" + +[T-Mobile Dash Mozilla/4.0 (*) MSNBOT-MOBILE/1.1 (*)] +Parent=MSN +Browser="msnbot-mobile" + +[Windows-Live-Social-Object-Extractor-Engine/1.0] +Parent=MSN +Browser="Windows-Live-Social-Object-Extractor-Eng" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Yahoo + +[Yahoo] +Parent=DefaultProperties +Comment="Yahoo" +Browser="Yahoo" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[Mozilla/4.0 (compatible; Y!J; for robot study*)] +Parent=Yahoo +Browser="Y!J" + +[Mozilla/5.0 (compatible; BMC/* (Y!J-AGENT))] +Parent=Yahoo +Browser="Y!J-AGENT/BMC" + +[Mozilla/5.0 (compatible; BMF/* (Y!J-AGENT))] +Parent=Yahoo +Browser="Y!J-AGENT/BMF" + +[Mozilla/5.0 (compatible; BMI/* (Y!J-AGENT; 1.0))] +Parent=Yahoo +Browser="Y!J-AGENT/BMI" + +[Mozilla/5.0 (compatible; Yahoo! DE Slurp; http://help.yahoo.com/help/us/ysearch/slurp)] +Parent=Yahoo +Browser="Yahoo! Directory Engine" + +[Mozilla/5.0 (compatible; Yahoo! SearchMonkey*)] +Parent=Yahoo +Browser="Yahoo! Search Monkey" + +[Mozilla/5.0 (compatible; Yahoo! Slurp China*;*http://misc.yahoo.com.cn/help.html)] +Parent=Yahoo +Browser="Yahoo! Slurp China" + +[Mozilla/5.0 (compatible; Yahoo! Slurp*;*http://help.yahoo.com/help/us/ysearch/slurp)] +Parent=Yahoo +Browser="Yahoo! Slurp" +Version=3.0 +MajorVer=3 +MinorVer=0 + +[Mozilla/5.0 (compatible; Yahoo! Verifier/*)] +Parent=Yahoo +Browser="Yahoo! Verifier" +Version=1.1 +MajorVer=1 +MinorVer=1 + +[Mozilla/5.0 (compatible; Yahoo!-AdCrawler;*http://help.yahoo.com/yahoo_adcrawler)] +Parent=Yahoo +Browser="Yahoo!-AdCrawler" + +[Mozilla/5.0 (compatible; YahooSeeker/M1A1-R2D2*)] +Parent=Yahoo +Browser="YahooSeeker-Mobile" + +[Mozilla/5.0 (Yahoo-MMCrawler/*; mailto:vertical-crawl-support@yahoo-inc.com)] +Parent=Yahoo +Browser="Yahoo-MMCrawler" +Version=4.0 +MajorVer=4 +MinorVer=0 + +[Mozilla/5.0 (Yahoo-Test/*)] +Parent=Yahoo +Browser="Yahoo-Test" + +[Mozilla/5.0 (YahooYSMcm*)] +Parent=Yahoo +Browser="YahooYSMcm" + +[mp3Spider cn-search-devel at yahoo-inc dot com] +Parent=Yahoo +Browser="Yahoo! Media" + +[My Browser] +Parent=Yahoo +Browser="Yahoo! My Browser" + +[Scooter*] +Parent=Yahoo +Browser="Scooter" + +[Scooter/*Y!CrawlX] +Parent=Yahoo +Browser="Scooter/3.3Y!CrawlX" +Version=3.3 +MajorVer=3 +MinorVer=3 + +[slurp] +Parent=Yahoo +Browser="slurp" + +[Y!J SearchMonkey*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRE*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRG/GSC*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRI*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRO/YFSJ*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRP/YFSBJ*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BRQ/DLCK*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-BSC*] +Parent=Yahoo +Browser="YahooFeedSeeker" +Version=1.0 +MajorVer=1 +MinorVer=0 +isSyndicationReader=true + +[Y!J-DSC*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-NSC*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-PSC*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!J-SRD*] +Parent=Yahoo +Browser="YahooFeedSeeker" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Y!J-VSC/ViSe*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[Y!OASIS*] +Parent=Yahoo +Browser="Y!OASIS" + +[Yahoo Mindset] +Parent=Yahoo +Browser="Yahoo Mindset" + +[Yahoo Pipes*] +Parent=Yahoo +Browser="Yahoo Pipes" + +[Yahoo! Mindset] +Parent=Yahoo +Browser="Yahoo! Mindset" + +[Yahoo! Slurp/Site Explorer] +Parent=Yahoo +Browser="Yahoo! Site Explorer" + +[Yahoo-Blogs*] +Parent=Yahoo +Browser="Yahoo-Blogs" + +[Yahoo-MMAudVid*] +Parent=Yahoo +Browser="Yahoo-MMAudVid" + +[Yahoo-MMCrawler*] +Parent=Yahoo +Browser="Yahoo-MMCrawler" + +[YahooExternalCache] +Parent=Yahoo +Browser="YahooExternalCache" + +[YahooFeedSeeker*] +Parent=Yahoo +Browser="YahooFeedSeeker" +isSyndicationReader=true + +[YahooSeeker*] +Parent=Yahoo +Browser="YahooSeeker" +isMobileDevice=true + +[YahooSeeker/CafeKelsa*] +Parent=Yahoo +Browser="YahooSeeker/CafeKelsa" + +[YahooVideoSearch*] +Parent=Yahoo +Browser="YahooVideoSearch" + +[YahooYSMcm*] +Parent=Yahoo +Browser="YahooYSMcm" + +[YRL_ODP_CRAWLER] +Parent=Yahoo +Browser="YRL_ODP_CRAWLER" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Yandex + +[Yandex] +Parent=DefaultProperties +Comment="Yandex" +Browser="Yandex" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[Mozilla/5.0 (compatible; YandexAddurl/*)] +Parent=Yandex +Browser="YandexAddURL" + +[Mozilla/5.0 (compatible; YandexBlogs/*)] +Parent=Yandex +Browser="YandexBlogs" + +[Mozilla/5.0 (compatible; YandexBot/*)] +Parent=Yandex +Browser="YandexBot" + +[Mozilla/5.0 (compatible; YandexBot/*; MirrorDetector*)] +Parent=Yandex +Browser="Yandex MirrorDetector" + +[Mozilla/5.0 (compatible; YandexCatalog/*)] +Parent=Yandex +Browser="YandexCatalog" + +[Mozilla/5.0 (compatible; YandexDirect/*)] +Parent=Yandex +Browser="YandexDirect-Dyatel" + +[Mozilla/5.0 (compatible; YandexFavicons/*)] +Parent=Yandex +Browser="YandexFavicons" + +[Mozilla/5.0 (compatible; YandexImageResizer/*)] +Parent=Yandex +Browser="YandexImageResizer" + +[Mozilla/5.0 (compatible; YandexImages/*)] +Parent=Yandex +Browser="YandexImages" + +[Mozilla/5.0 (compatible; YandexMedia/*)] +Parent=Yandex +Browser="YandexMedia" + +[Mozilla/5.0 (compatible; YandexMetrika/*)] +Parent=Yandex +Browser="YandexMetrika" + +[Mozilla/5.0 (compatible; YandexNews/*)] +Parent=Yandex +Browser="YandexNews" + +[Mozilla/5.0 (compatible; YandexVideo/*)] +Parent=Yandex +Browser="YandexVideo" + +[Mozilla/5.0 (compatible; YandexWebmaster/*)] +Parent=Yandex +Browser="YandexWebmaster" + +[Mozilla/5.0 (compatible; YandexZakladki/*)] +Parent=Yandex +Browser="YandexZakladki" + +[Yandex/1.01.001 (compatible; Win16; *)] +Parent=Yandex +Browser="Yandex" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Best of the Web + +[Best of the Web] +Parent=DefaultProperties +Comment="Best of the Web" +Browser="Best of the Web" +Frames=true +Tables=true +Crawler=true + +[Mozilla/4.0 (compatible; BOTW Feed Grabber; *http://botw.org)] +Parent=Best of the Web +Browser="BOTW Feed Grabber" +isSyndicationReader=true + +[Mozilla/4.0 (compatible; BOTW Spider; *http://botw.org)] +Parent=Best of the Web +Browser="BOTW Spider" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Boitho + +[Boitho] +Parent=DefaultProperties +Comment="Boitho" +Browser="Boitho" +Frames=true +Tables=true +Crawler=true + +[boitho.com-dc/*] +Parent=Boitho +Browser="boitho.com-dc" + +[boitho.com-robot/*] +Parent=Boitho +Browser="boitho.com-robot" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Convera + +[Convera] +Parent=DefaultProperties +Comment="Convera" +Browser="Convera" +Frames=true +Tables=true +Crawler=true + +[ConveraCrawler/*] +Parent=Convera +Browser="ConveraCrawler" + +[ConveraMultiMediaCrawler/0.1*] +Parent=Convera +Browser="ConveraMultiMediaCrawler" +Version=0.1 +MajorVer=0 +MinorVer=1 + +[CrawlConvera*] +Parent=Convera +Browser="CrawlConvera" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DotBot + +[DotBot] +Parent=DefaultProperties +Comment="DotBot" +Browser="DotBot" +Frames=true +Tables=true +Crawler=true + +[DotBot/* (http://www.dotnetdotcom.org/*)] +Parent=DotBot + +[Mozilla/5.0 (compatible; DotBot/*; http://www.dotnetdotcom.org/*)] +Parent=DotBot + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Entireweb + +[Entireweb] +Parent=DefaultProperties +Comment="Entireweb" +Browser="Entireweb" +Frames=true +Tables=true +Crawler=true + +[Mozilla/5.0 (compatible; Speedy Spider; http://www.entireweb.com/about/search_tech/speedy_spider/)] +Parent=Entireweb + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)] +Parent=Entireweb +Platform_Version=5.1 + +[Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)] +Parent=Entireweb + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Envolk + +[Envolk] +Parent=DefaultProperties +Comment="Envolk" +Browser="Envolk" +Frames=true +Tables=true +Crawler=true + +[envolk/* (?http://www.envolk.com/envolk*)] +Parent=Envolk + +[envolk?ITS?spider/* (?http://www.envolk.com/envolk*)] +Parent=Envolk + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Exalead + +[Exalead] +Parent=DefaultProperties +Comment="Exalead" +Browser="Exalead" +Frames=true +Tables=true +Crawler=true + +[Exabot-Images/1.0] +Parent=Exalead +Browser="Exabot-Images" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Exabot-Test/*] +Parent=Exalead +Browser="Exabot-Test" + +[Exabot/2.0] +Parent=Exalead +Browser="Exabot" +Version=2.0 +MajorVer=2 +MinorVer=0 + +[Exabot/3.0] +Parent=Exalead +Browser="Exabot" +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Liberate" + +[Exalead NG/*] +Parent=Exalead +Browser="Exalead NG" + +[Mozilla/5.0 (compatible; Exabot-Images/3.0*)] +Parent=Exalead +Browser="Exabot-Images" +Version=3.0 +MajorVer=3 +MinorVer=0 + +[Mozilla/5.0 (compatible; Exabot/3.0*)] +Parent=Exalead +Browser="Exabot/BiggerBetter" +Version=3.0 +MajorVer=3 +MinorVer=0 + +[Mozilla/5.0 (compatible; NGBot/*)] +Parent=Exalead +Browser="NGBot" + +[NG-Search/*] +Parent=Exalead +Browser="NG-Search" + +[ng/*] +Parent=Exalead +Browser="Exalead Previewer" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Facebook + +[Facebook] +Parent=DefaultProperties +Comment="Facebook" +Browser="Facebook" +Frames=true +Tables=true +Crawler=true + +[facebookexternalhit/1.1 (+http*://www.facebook.com/externalhit_uatext.php)*] +Parent=Facebook +Browser="FacebookExternalHit" +Version=1.1 +MajorVer=1 +MinorVer=1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fast/AllTheWeb + +[Fast/AllTheWeb] +Parent=DefaultProperties +Comment="Fast/AllTheWeb" +Browser="Fast/AllTheWeb" +Frames=true +Tables=true +Crawler=true + +[*FAST Enterprise Crawler*] +Parent=Fast/AllTheWeb +Browser="FAST Enterprise Crawler" + +[FAST Data Search Document Retriever/4.0*] +Parent=Fast/AllTheWeb +Browser="FAST Data Search Document Retriever" + +[FAST MetaWeb Crawler (helpdesk at fastsearch dot com)] +Parent=Fast/AllTheWeb +Browser="FAST MetaWeb Crawler" + +[Fast PartnerSite Crawler*] +Parent=Fast/AllTheWeb +Browser="FAST PartnerSite" + +[FAST-WebCrawler/*] +Parent=Fast/AllTheWeb +Browser="FAST-WebCrawler" + +[FAST-WebCrawler/*/FirstPage*] +Parent=Fast/AllTheWeb +Browser="FAST-WebCrawler/FirstPage" + +[FAST-WebCrawler/*/Fresh*] +Parent=Fast/AllTheWeb +Browser="FAST-WebCrawler/Fresh" + +[FAST-WebCrawler/*/PartnerSite*] +Parent=Fast/AllTheWeb +Browser="FAST PartnerSite" + +[FAST-WebCrawler/*?Multimedia*] +Parent=Fast/AllTheWeb +Browser="FAST-WebCrawler/Multimedia" + +[FastSearch Web Crawler for*] +Parent=Fast/AllTheWeb +Browser="FastSearch Web Crawler" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Gigabot + +[Gigabot] +Parent=DefaultProperties +Comment="Gigabot" +Browser="Gigabot" +Frames=true +Tables=true +Crawler=true + +[Gigabot*] +Parent=Gigabot + +[GigabotSiteSearch/*] +Parent=Gigabot +Browser="GigabotSiteSearch" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ilse + +[Ilse] +Parent=DefaultProperties +Comment="Ilse" +Browser="Ilse" +Frames=true +Tables=true +Crawler=true + +[IlseBot/*] +Parent=Ilse + +[INGRID/?.0*] +Parent=Ilse + +[Mozilla/3.0 (INGRID/*] +Parent=Ilse + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iVia Project + +[iVia Project] +Parent=DefaultProperties +Comment="iVia Project" +Browser="iVia Project" +Frames=true +Tables=true +Crawler=true + +[DataFountains/DMOZ Downloader*] +Parent=iVia Project +Browser="DataFountains/DMOZ Downloader" + +[DataFountains/DMOZ Feature Vector Corpus Creator*] +Parent=iVia Project +Browser="DataFountains/DMOZ Feature Vector Corpus" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Jayde Online + +[Jayde Online] +Parent=DefaultProperties +Comment="Jayde Online" +Browser="Jayde Online" +Frames=true +Tables=true +Crawler=true + +[ExactSeek Crawler/*] +Parent=Jayde Online +Browser="ExactSeek Crawler" + +[exactseek-pagereaper-* (crawler@exactseek.com)] +Parent=Jayde Online +Browser="exactseek-pagereaper" + +[exactseek.com] +Parent=Jayde Online +Browser="exactseek.com" + +[Jayde Crawler*] +Parent=Jayde Online +Browser="Jayde Crawler" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lycos + +[Lycos] +Parent=DefaultProperties +Comment="Lycos" +Browser="Lycos" +Frames=true +Tables=true +Crawler=true + +[Lycos*] +Parent=Lycos +Browser="Lycos" + +[Lycos-Proxy] +Parent=Lycos +Browser="Lycos-Proxy" + +[Lycos-Spider_(modspider)] +Parent=Lycos +Browser="Lycos-Spider_(modspider)" + +[Lycos-Spider_(T-Rex)] +Parent=Lycos +Browser="Lycos-Spider_(T-Rex)" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Snap + +[Snap] +Parent=DefaultProperties +Comment="Snap" +Browser="Snap" +Frames=true +Tables=true +Crawler=true + +[Mozilla/5.0 (SnapPreviewBot) Gecko/* Firefox/*] +Parent=Snap +Browser="SnapPreviewBot" + +[Snapbot/*] +Parent=Snap +Browser="Snapbot" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Sogou + +[Sogou] +Parent=DefaultProperties +Comment="Sogou" +Browser="Sogou" +Frames=true +Tables=true +Crawler=true + +[shaboyi spider] +Parent=Sogou +Browser="Sogou/Shaboyi Spider" + +[Sogou develop spider/*] +Parent=Sogou +Browser="Sogou Develop Spider" + +[Sogou head spider*] +Parent=Sogou +Browser="Sogou Head Spider" + +[sogou js robot(*)] +Parent=Sogou + +[Sogou Orion spider/*] +Parent=Sogou +Browser="Sogou Orion spider" + +[Sogou Pic Agent] +Parent=Sogou +Browser="Sogou/Image Crawler" + +[Sogou Pic Spider/*] +Parent=Sogou +Browser="Sogou Pic Spider" + +[Sogou Push Spider/*] +Parent=Sogou +Browser="Sogou Push Spider" + +[sogou spider] +Parent=Sogou +Browser="Sogou/Spider" + +[sogou web spider*] +Parent=Sogou +Browser="sogou web spider" + +[Sogou-Test-Spider/*] +Parent=Sogou +Browser="Sogou-Test-Spider" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; YodaoBot + +[YodaoBot] +Parent=DefaultProperties +Comment="YodaoBot" +Browser="YodaoBot" +Frames=true +Tables=true +Crawler=true + +[Mozilla/5.0 (compatible; YodaoBot/1.*)] +Parent=YodaoBot + +[Mozilla/5.0 (compatible;YodaoBot-Image/1.*)] +Parent=YodaoBot +Browser="YodaoBot-Image" + +[WAP_Browser/5.0 (compatible; YodaoBot/1.*)] +Parent=YodaoBot + +[YodaoBot/1.* (*)] +Parent=YodaoBot + +[Best Whois (http://www.bestwhois.net/)] +Parent=DNS Tools +Browser="Best Whois" + +[DNSGroup/*] +Parent=DNS Tools +Browser="DNS Group Crawler" + +[TouchStone] +Parent=Feeds Syndicators +Browser="TouchStone" +isSyndicationReader=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; General Crawlers + +[General Crawlers] +Parent=DefaultProperties +Comment="General Crawlers" +Browser="General Crawlers" +Crawler=true + +[*altervista.org*] +Parent=General Crawlers +Browser="altervista.org" + +[*naver*] +Parent=General Crawlers +Browser="NaverBot" + +[*Spinn3r*http://spinn3r.com/robot*] +Parent=General Crawlers +Browser="Spinn3r" + +[*SqwidgeBot*] +Parent=General Crawlers +Browser="SqwidgeBot" + +[A .NET Web Crawler] +Parent=General Crawlers +Browser="A .NET Web Crawler" + +[BabalooSpider/1.*] +Parent=General Crawlers +Browser="BabalooSpider" + +[BilgiBot/*] +Parent=General Crawlers +Browser="BilgiBot" + +[bitlybot/2.*] +Parent=General Crawlers +Browser="BitlyBot" + +[bot/* (bot; *bot@bot.bot)] +Parent=General Crawlers +Browser="bot" + +[cisco-IOS] +Parent=General Crawlers +Browser="cisco-IOS" + +[Covario-IDS/*] +Parent=General Crawlers +Browser="Covario-IDS/*" + +[CyberPatrol*] +Parent=General Crawlers +Browser="CyberPatrol" + +[Cynthia 1.0] +Parent=General Crawlers +Browser="Cynthia" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[cz32ts] +Parent=General Crawlers +Browser="cz32ts" + +[ddetailsbot (http://www.displaydetails.com)] +Parent=General Crawlers +Browser="ddetailsbot" + +[DomainCrawler/1.0 (info@domaincrawler.com; http://www.domaincrawler.com/domains/view/*)] +Parent=General Crawlers +Browser="DomainCrawler" + +[DomainsBotBot/1.*] +Parent=General Crawlers +Browser="DomainsBotBot" + +[DomainsDB.net MetaCrawler*] +Parent=General Crawlers +Browser="DomainsDB" + +[DomainWatcher Bot*] +Parent=General Crawlers +Browser="DomainWatcher Bot" + +[Drupal (*)] +Parent=General Crawlers +Browser="Drupal" + +[Dumbot (version *)*] +Parent=General Crawlers +Browser="Dumbfind" + +[EuripBot/*] +Parent=General Crawlers +Browser="Europe Internet Portal" + +[eventax/*] +Parent=General Crawlers +Browser="eventax" + +[FANGCrawl/*] +Parent=General Crawlers +Browser="Safe-t.net Web Filtering Service" + +[favorstarbot/*] +Parent=General Crawlers +Browser="favorstarbot" + +[FollowSite.com (*)] +Parent=General Crawlers +Browser="FollowSite" + +[Gaisbot*] +Parent=General Crawlers +Browser="Gaisbot" + +[gosospider Mozilla/5.0 (compatible; GosoSpider*)] +Parent=General Crawlers +Browser="GosoSpider" + +[Healthbot/Health_and_Longevity_Project_(HealthHaven.com) ] +Parent=General Crawlers +Browser="Healthbot" + +[hitcrawler_0.*] +Parent=General Crawlers +Browser="hitcrawler" + +[htdig/*] +Parent=General Crawlers +Browser="ht://Dig" + +[http://hilfe.acont.de/bot.html ACONTBOT] +Parent=General Crawlers +Browser="ACONTBOT" + +[http://www.yellowpages.com*] +Parent=General Crawlers +Browser="Yellow Pages" + +[HuaweiSymantecSpider/*] +Parent=General Crawlers +Browser="HuaweiSymantecSpider" + +[JetBrains*] +Parent=General Crawlers +Browser="Omea Pro" + +[JS-Kit URL Resolver, http://js-kit.com/] +Parent=General Crawlers +Browser="JS-Kit/Echo" + +[KakleBot - www.kakle.com/0.1] +Parent=General Crawlers +Browser="KakleBot" + +[KBeeBot/0.*] +Parent=General Crawlers +Browser="KBeeBot" + +[Keyword Density/*] +Parent=General Crawlers +Browser="Keyword Density" + +[LetsCrawl.com/1.0*] +Parent=General Crawlers +Browser="LetsCrawl.com" + +[Lincoln State Web Browser] +Parent=General Crawlers +Browser="Lincoln State Web Browser" + +[LinkedInBot/1.*] +Parent=General Crawlers +Browser="LinkedInBot" + +[Links4US-Crawler,*] +Parent=General Crawlers +Browser="Links4US-Crawler" + +[Lorkyll *.* -- lorkyll@444.net] +Parent=General Crawlers +Browser="Lorkyll" + +[Lsearch/sondeur] +Parent=General Crawlers +Browser="Lsearch/sondeur" + +[LucidMedia ClickSense/4.?] +Parent=General Crawlers +Browser="LucidMedia-ClickSense" + +[Made by ZmEu @ WhiteHat v0.* (www.WhiteHat.ro)] +Parent=General Crawlers +Browser="ZmEu" + +[magpie-crawler/1.*] +Parent=General Crawlers +Browser="magpie-crawler" + +[Mahalobot/1.0 (?http://www.mahalo.com/)] +Parent=General Crawlers +Browser="Mahalobot" + +[MapoftheInternet.com?(?http://MapoftheInternet.com)] +Parent=General Crawlers +Browser="MapoftheInternet" + +[Marvin v0.3] +Parent=General Crawlers +Browser="MedHunt" +Version=0.3 +MajorVer=0 +MinorVer=3 + +[masidani_bot_v0.6*] +Parent=General Crawlers +Browser="masidani_bot" + +[Metaspinner/0.01 (Metaspinner; http://www.meta-spinner.de/; support@meta-spinner.de/)] +Parent=General Crawlers +Browser="Metaspinner/0.01" +Version=0.01 +MajorVer=0 +MinorVer=01 + +[metatagsdir/*] +Parent=General Crawlers +Browser="metatagsdir" + +[Microsoft Windows Network Diagnostics] +Parent=General Crawlers +Browser="Microsoft Windows Network Diagnostics" + +[Miva (AlgoFeedback@miva.com)] +Parent=General Crawlers +Browser="Miva" + +[moget/*] +Parent=General Crawlers +Browser="Goo" + +[Mozdex/0.7*] +Parent=General Crawlers +Browser="Mozdex" + +[Mozilla/* (compatible; WebCapture*)] +Parent=General Crawlers +Browser="WebCapture" + +[Mozilla/*(*redditbot/*http://www.reddit.com/feedback*)] +Parent=General Crawlers +Browser="Reddit" + +[Mozilla/4.0 (compatible; DepSpid/*)] +Parent=General Crawlers +Browser="DepSpid" + +[Mozilla/4.0 (compatible; MSIE 4.01; Vonna.com b o t)] +Parent=General Crawlers +Browser="Vonna.com" + +[Mozilla/4.0 (compatible; MSIE 4.01; Windows95)] +Parent=General Crawlers +Browser="Generic Crawler" +Win32=true + +[Mozilla/4.0 (compatible; MyFamilyBot/*)] +Parent=General Crawlers +Browser="MyFamilyBot" + +[Mozilla/4.0 (compatible; N-Stealth)] +Parent=General Crawlers +Browser="N-Stealth" + +[Mozilla/4.0 (compatible; Scumbot/*; Linux/*)] +Parent=General Crawlers +Browser="Generic Crawler" + +[Mozilla/4.0 (compatible; Spider; Linux)] +Parent=General Crawlers +Browser="Generic Crawler" + +[Mozilla/4.0 (compatible; Win32)] +Parent=General Crawlers +Browser="Unknown Crawler" + +[Mozilla/5.0 (*http://gnomit.com/) Gecko/* Gnomit/1.0] +Parent=General Crawlers +Browser="Gnomit" + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) ADM/*] +Parent=General Crawlers +Browser="Adobe Dialog Manager" +Platform="MacOSX" + +[Mozilla/5.0 (compatible; *; http://www.80legs.com/spider.html;) Gecko/*] +Parent=General Crawlers +Browser="80Legs" + +[Mozilla/5.0 (compatible; AboutUsBot/*)] +Parent=General Crawlers +Browser="AboutUsBot" + +[Mozilla/5.0 (compatible; AdHitz; http://adhitz.com/)] +Parent=General Crawlers +Browser="AdHitz" + +[Mozilla/5.0 (compatible; aiHitBot*/*; +http://www.aihit.com/)] +Parent=General Crawlers +Browser="aiHitBot" + +[Mozilla/5.0 (compatible; BuzzRankingBot/*)] +Parent=General Crawlers +Browser="BuzzRankingBot" + +[Mozilla/5.0 (compatible; ClixSense; http://www.clixsense.com/)] +Parent=General Crawlers +Browser="ClixSense" + +[Mozilla/5.0 (compatible; Crawly/1.*; +http://*/crawler.html)] +Parent=General Crawlers +Browser="Crawly" + +[Mozilla/5.0 (compatible; Diffbot/0.1; +http://www.diffbot.com)] +Parent=General Crawlers +Browser="Diffbot" + +[Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)] +Parent=General Crawlers +Browser="Ezooms" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (compatible; FirstSearchBot/1.0; *)] +Parent=General Crawlers +Browser="FirstSearchBot" + +[mozilla/5.0 (compatible; genevabot +http://www.healthdash.com)] +Parent=General Crawlers +Browser="Healthdash" + +[Mozilla/5.0 (compatible; JadynAveBot; *http://www.jadynave.com/robot*] +Parent=General Crawlers +Browser="JadynAveBot" + +[Mozilla/5.0 (compatible; Kyluka crawl; http://www.kyluka.com/crawl.html; crawl@kyluka.com)] +Parent=General Crawlers +Browser="Kyluka" + +[Mozilla/5.0 (compatible; LegalAnalysisAgent/1.*; http://www.legalx.net)] +Parent=General Crawlers +Browser="LegalAnalysisAgent" + +[Mozilla/5.0 (compatible; MJ12bot/v1.*)] +Parent=General Crawlers +Browser="MJ12bot" + +[Mozilla/5.0 (compatible; MSIE 7.0 ?http://www.europarchive.org)] +Parent=General Crawlers +Browser="Europe Web Archive" + +[Mozilla/5.0 (compatible; MSIE 7.0; MSIE 6.0; ScanAlert; +http://www.scanalert.com/bot.jsp) Firefox/*] +Parent=General Crawlers +Browser="McAffee Scan Alert" + +[Mozilla/5.0 (compatible; Nigma.ru/*; crawler@nigma.ru)] +Parent=General Crawlers +Browser="Nigma.ru" + +[Mozilla/5.0 (compatible; Plukkie/1.?; http://www.botje.com/plukkie.htm)] +Parent=General Crawlers +Browser="Plukkie" + +[Mozilla/5.0 (compatible; SEODat/0.* http://crawler.seodat.com)] +Parent=General Crawlers +Browser="SEODat" + +[Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0;*)] +Parent=General Crawlers +Browser="Seznam screenshot-generator" + +[Mozilla/5.0 (compatible; spbot/*; +http://www.seoprofiler.com/bot/ )] +Parent=General Crawlers +Browser="SEOprofiler" + +[Mozilla/5.0 (compatible; SuchbaerBot/0.*; +http://bot.suchbaer.de/info.html)] +Parent=General Crawlers +Browser="SuchbaerBot" + +[Mozilla/5.0 (compatible; TweetedTimes Bot/1.0; +http://tweetedtimes.com)] +Parent=General Crawlers +Browser="TweetedTimes Bot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (compatible; Twingly Recon; http://www.twingly.com/)] +Parent=General Crawlers +Browser="Twingly Recon" + +[Mozilla/5.0 (compatible; unwrapbot/2.*; +http://www.unwrap.jp*)] +Parent=General Crawlers +Browser="UnWrap" + +[Mozilla/5.0 (compatible; Vermut*)] +Parent=General Crawlers +Browser="Vermut" + +[Mozilla/5.0 (compatible; Viralheat Bot/*) ] +Parent=General Crawlers +Browser="Viralheat" + +[Mozilla/5.0 (compatible; Webbot/*)] +Parent=General Crawlers +Browser="Webbot.ru" + +[n4p_bot*] +Parent=General Crawlers +Browser="n4p_bot" + +[nabot*] +Parent=General Crawlers +Browser="Nabot" + +[NetCarta_WebMapper/*] +Parent=General Crawlers +Browser="NetCarta_WebMapper" + +[Netchart Adv Crawler*] +Parent=General Crawlers +Browser="Netchart Adv Crawler" + +[NetID.com Bot*] +Parent=General Crawlers +Browser="NetID.com Bot" + +[neTVision AG andreas.heidoetting@thomson-webcast.net] +Parent=General Crawlers +Browser="neTVision" + +[NextopiaBOT*] +Parent=General Crawlers +Browser="NextopiaBOT" + +[nicebot] +Parent=General Crawlers +Browser="nicebot" + +[niXXieBot?Foster*] +Parent=General Crawlers +Browser="niXXiebot-Foster" + +[Nozilla/P.N (Just for IDS woring)] +Parent=General Crawlers +Browser="Nozilla/P.N" + +[NSO_Debugger_User/2.0] +Parent=General Crawlers +Browser="NSO_Debugger_User" + +[Nudelsalat/*] +Parent=General Crawlers +Browser="Nudelsalat" + +[NV32ts] +Parent=General Crawlers +Browser="NV32ts" + +[Ocelli/*] +Parent=General Crawlers +Browser="Ocelli" + +[OpenTaggerBot (http://www.opentagger.com/opentaggerbot.htm)] +Parent=General Crawlers +Browser="OpenTaggerBot" + +[Oracle Enterprise Search] +Parent=General Crawlers +Browser="Oracle Enterprise Search" + +[Oracle Ultra Search] +Parent=General Crawlers +Browser="Oracle Ultra Search" + +[Pajaczek/*] +Parent=General Crawlers +Browser="Pajaczek" + +[panscient.com] +Parent=General Crawlers +Browser="panscient.com" + +[Patwebbot (http://www.herz-power.de/technik.html)] +Parent=General Crawlers +Browser="Patwebbot" + +[PDFBot (crawler@pdfind.com)] +Parent=General Crawlers +Browser="PDFBot" + +[Pete-Spider/1.*] +Parent=General Crawlers +Browser="Pete-Spider" + +[PhpDig/*] +Parent=General Crawlers +Browser="PhpDig" + +[PlantyNet_WebRobot*] +Parent=General Crawlers +Browser="PlantyNet" + +[PluckItCrawler/*] +Parent=General Crawlers +Browser="PluckItCrawler" +isMobileDevice=true + +[PMAFind] +Parent=General Crawlers +Browser="PMAFind" + +[Poodle_predictor_1.0] +Parent=General Crawlers +Browser="Poodle Predictor" + +[QuickFinder Crawler] +Parent=General Crawlers +Browser="QuickFinder" + +[Radiation Retriever*] +Parent=General Crawlers +Browser="Radiation Retriever" + +[RedCarpet/*] +Parent=General Crawlers +Browser="RedCarpet" + +[RixBot (http://babelserver.org/rix)] +Parent=General Crawlers +Browser="RixBot" + +[roboobot/1.* (roboo; http://wap.roboo.com; winter.pi@roboo.com)] +Parent=General Crawlers +Browser="roboo" + +[rogerbot/* (http://www.seomoz.org, rogerbot-crawler@seomoz.org)] +Parent=General Crawlers +Browser="rogerbot" + +[Rome Client (http://tinyurl.com/64t5n) Ver: 0.*] +Parent=General Crawlers +Browser="TinyURL" + +[SBIder/*] +Parent=General Crawlers +Browser="SiteSell" + +[ScollSpider/2.*] +Parent=General Crawlers +Browser="ScollSpider" + +[Search Fst] +Parent=General Crawlers +Browser="Search Fst" + +[searchbot admin@google.com] +Parent=General Crawlers +Browser="searchbot" + +[Seeker.lookseek.com] +Parent=General Crawlers +Browser="LookSeek" + +[semanticdiscovery/*] +Parent=General Crawlers +Browser="Semantic Discovery" + +[SeznamBot/*] +Parent=General Crawlers +Browser="SeznamBot" + +[Shelob (shelob@gmx.net)] +Parent=General Crawlers +Browser="Shelob" + +[shelob v1.*] +Parent=General Crawlers +Browser="shelob" + +[ShopWiki/1.0*] +Parent=General Crawlers +Browser="ShopWiki" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[ShowXML/1.0 libwww/5.4.0] +Parent=General Crawlers +Browser="ShowXML" + +[sitecheck.internetseer.com*] +Parent=General Crawlers +Browser="Internetseer" + +[SMBot/*] +Parent=General Crawlers +Browser="SMBot" + +[sohu*] +Parent=General Crawlers +Browser="sohu-search" + +[SpankBot*] +Parent=General Crawlers +Browser="SpankBot" + +[spider (tspyyp@tom.com)] +Parent=General Crawlers +Browser="spider (tspyyp@tom.com)" + +[Sunrise/0.*] +Parent=General Crawlers +Browser="Sunrise" + +[Superpages URL Verification Engine] +Parent=General Crawlers +Browser="Superpages" + +[Surf Knight] +Parent=General Crawlers +Browser="Surf Knight" + +[SurveyBot/*] +Parent=General Crawlers +Browser="SurveyBot" + +[SynapticSearch/AI Crawler 1.?] +Parent=General Crawlers +Browser="SynapticSearch" + +[SyncMgr] +Parent=General Crawlers +Browser="SyncMgr" + +[Tagyu Agent/1.0] +Parent=General Crawlers +Browser="Tagyu" + +[Talkro Web-Shot/*] +Parent=General Crawlers +Browser="Talkro Web-Shot" + +[Tasap-image-robot/0.* (http://www.tasap.com)] +Parent=General Crawlers +Browser="Tasap-image-robot" + +[Tecomi Bot (http://www.tecomi.com/bot.htm)] +Parent=General Crawlers +Browser="Tecomi" + +[TencentTraveler*] +Parent=General Crawlers +Browser="TencentTraveler" + +[TheInformant*] +Parent=General Crawlers +Browser="TheInformant" + +[Toata dragostea*] +Parent=General Crawlers +Browser="Toata dragostea" + +[Tutorial Crawler*] +Parent=General Crawlers +Browser="Tutorial Crawler" + +[Twitterbot/*] +Parent=General Crawlers +Browser="Twitterbot" + +[UbiCrawler/*] +Parent=General Crawlers +Browser="UbiCrawler" + +[UCmore] +Parent=General Crawlers +Browser="UCmore" + +[User*Agent:*] +Parent=General Crawlers +Browser="Generic Crawler" + +[USER_AGENT] +Parent=General Crawlers +Browser="Generic Crawler" + +[VadixBot] +Parent=General Crawlers +Browser="VadixBot" + +[VengaBot/*] +Parent=General Crawlers +Browser="VengaBot" + +[Visicom Toolbar] +Parent=General Crawlers +Browser="Visicom Toolbar" + +[Visited by http://tools.geek-tools.org] +Parent=General Crawlers +Browser="geek-tools.org" + +[Webclipping.com] +Parent=General Crawlers +Browser="Webclipping.com" + +[webcollage*] +Parent=General Crawlers +Browser="WebCollage" + +[WebCrawler_1.*] +Parent=General Crawlers +Browser="WebCrawler" + +[WebFilter Robot*] +Parent=General Crawlers +Browser="WebFilter Robot" + +[WeBoX/*] +Parent=General Crawlers +Browser="WeBoX" + +[WebTrends/*] +Parent=General Crawlers +Browser="WebTrends" + +[West Wind Internet Protocols*] +Parent=General Crawlers +Browser="Versatel" + +[WhizBang] +Parent=General Crawlers +Browser="WhizBang" + +[Willow Internet Crawler by Twotrees V*] +Parent=General Crawlers +Browser="Willow Internet Crawler" + +[WIRE/* (Linux*Bot,Robot,Spider,Crawler)] +Parent=General Crawlers +Browser="WIRE" + +[www.fi crawler, contact crawler@www.fi] +Parent=General Crawlers +Browser="www.fi crawler" + +[Xerka WebBot v1.*] +Parent=General Crawlers +Browser="Xerka" + +[XML Sitemaps Generator*] +Parent=General Crawlers +Browser="XML Sitemaps Generator" + +[XSpider*] +Parent=General Crawlers +Browser="XSpider" + +[YooW!/* (?http://www.yoow.eu)] +Parent=General Crawlers +Browser="YooW!" + +[yp-crawl@attinteractive.com] +Parent=General Crawlers +Browser="YellowPages" + +[HiddenMarket-*] +Parent=General RSS +Browser="HiddenMarket" + +[FOTOCHECKER] +Parent=Image Crawlers +Browser="FOTOCHECKER" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Search Engines + +[Search Engines] +Parent=DefaultProperties +Comment="Search Engines" +Browser="Search Engines" +Crawler=true + +[*FDSE robot*] +Parent=Search Engines +Browser="FDSE Robot" + +[*Fluffy the spider*] +Parent=Search Engines +Browser="SearchHippo" + +[Abacho*] +Parent=Search Engines +Browser="Abacho" + +[ah-ha.com crawler (crawler@ah-ha.com)] +Parent=Search Engines +Browser="Ah-Ha" + +[AIBOT/*] +Parent=Search Engines +Browser="21Seek.Com" + +[ALeadSoftbot/*] +Parent=Search Engines +Browser="ALeadSoftbot" + +[Amfibibot/*] +Parent=Search Engines +Browser="Amfibi" + +[AnswerBus (http://www.answerbus.com/)] +Parent=Search Engines +Browser="AnswerBus" + +[antibot-V*] +Parent=Search Engines +Browser="antibot" + +[appie*(www.walhello.com)] +Parent=Search Engines +Browser="Walhello" + +[ASPSeek/*] +Parent=Search Engines +Browser="ASPSeek" + +[Atrax Solutions atraxbot/0.*; http://www.atraxsolutions.com/atraxbot] +Parent=Search Engines +Browser="Atrax Solutions" + +[BigCliqueBOT/*] +Parent=Search Engines +Browser="BigClique.com/BigClic.com" + +[Blaiz-Bee/*] +Parent=Search Engines +Browser="RawGrunt" + +[btbot/*] +Parent=Search Engines +Browser="Bit Torrent Search Engine" + +[Busiversebot/v1.0 (http://www.busiverse.com/bot.php)] +Parent=Search Engines +Browser="Busiversebot" + +[CatchBot/*; +http://www.catchbot.com] +Parent=Search Engines +Browser="CatchBot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[CipinetBot (http://www.cipinet.com/bot.html)] +Parent=Search Engines +Browser="CipinetBot" + +[Cogentbot/1.?*] +Parent=Search Engines +Browser="Cogentbot" + +[compatible; Mozilla 4.0; MSIE 5.5; (SqwidgeBot v1.01 - http://www.sqwidge.com/bot/)] +Parent=Search Engines +Browser="SqwidgeBot" + +[cosmos*] +Parent=Search Engines +Browser="Xyleme" + +[Deepindex] +Parent=Search Engines +Browser="Deepindex" + +[DiamondBot] +Parent=Search Engines +Browser="DiamondBot" + +[DuckDuckBot/*; (?http://duckduckgo.com/duckduckbot.html)] +Parent=Search Engines +Browser="DuckDuckBot" + +[Dumbot*] +Parent=Search Engines +Browser="Dumbot" +Version=0.2 +MajorVer=0 +MinorVer=2 +Beta=true + +[Eule?Robot*] +Parent=Search Engines +Browser="Eule-Robot" + +[Faxobot/*] +Parent=Search Engines +Browser="Faxo" + +[Filangy/*] +Parent=Search Engines +Browser="Filangy" + +[flatlandbot/*] +Parent=Search Engines +Browser="Flatland" + +[Fooky.com/ScorpionBot/ScoutOut;*] +Parent=Search Engines +Browser="ScorpionBot" + +[FyberSpider*] +Parent=Search Engines +Browser="FyberSpider" + +[Gaisbot/*] +Parent=Search Engines +Browser="Gaisbot" + +[gazz/*(gazz@nttr.co.jp)] +Parent=Search Engines +Browser="gazz" + +[geniebot*] +Parent=Search Engines +Browser="GenieKnows" + +[GOFORITBOT (?http://www.goforit.com/about/?)] +Parent=Search Engines +Browser="GoForIt" + +[GoGuidesBot/*] +Parent=Search Engines +Browser="GoGuidesBot" + +[GroschoBot/*] +Parent=Search Engines +Browser="GroschoBot" + +[GurujiBot/1.*] +Parent=Search Engines +Browser="GurujiBot" + +[HenryTheMiragoRobot*] +Parent=Search Engines +Browser="Mirago" + +[HolmesBot (http://holmes.ge)] +Parent=Search Engines +Browser="HolmesBot" + +[Hotzonu/*] +Parent=Search Engines +Browser="Hotzonu" + +[HyperEstraier/*] +Parent=Search Engines +Browser="HyperEstraier" + +[i1searchbot/*] +Parent=Search Engines +Browser="i1searchbot" + +[IIITBOT/1.*] +Parent=Search Engines +Browser="Indian Language Web Search Engine" + +[Iltrovatore-?etaccio/*] +Parent=Search Engines +Browser="Iltrovatore-Setaccio" + +[InfociousBot (?http://corp.infocious.com/tech_crawler.php)] +Parent=Search Engines +Browser="InfociousBot" + +[Infoseek SideWinder/*] +Parent=Search Engines +Browser="Infoseek" + +[iSEEKbot/*] +Parent=Search Engines +Browser="iSEEKbot" + +[Knight/0.? (Zook Knight; http://knight.zook.in/; knight@zook.in)] +Parent=Search Engines +Browser="Knight" + +[Kolinka Forum Search (www.kolinka.com)] +Parent=Search Engines +Browser="Kolinka Forum Search" + +[KRetrieve/] +Parent=Search Engines +Browser="KRetrieve" + +[LapozzBot/*] +Parent=Search Engines +Browser="LapozzBot" + +[Linguee Bot (http://www.linguee.com/bot; bot@linguee.com)] +Parent=Search Engines +Browser="Linguee Bot" + +[Linknzbot*] +Parent=Search Engines +Browser="Linknzbot" + +[LocalcomBot/*] +Parent=Search Engines +Browser="LocalcomBot" + +[Mail.Ru/1.0] +Parent=Search Engines +Browser="Mail.Ru" + +[MaSagool/*] +Parent=Search Engines +Browser="Sagoo" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[miniRank/*] +Parent=Search Engines +Browser="miniRank" + +[Mnogosearch*] +Parent=Search Engines +Browser="Mnogosearch" + +[Mozilla/0.9* no dos :) (Linux*)] +Parent=Search Engines +Browser="goliat" + +[Mozilla/4.0 (compatible; *Vagabondo/*; webcrawler at wise-guys dot nl; *)] +Parent=Search Engines +Browser="Vagabondo" + +[Mozilla/4.0 (compatible; Arachmo)] +Parent=Search Engines +Browser="Arachmo" + +[Mozilla/4.0 (compatible; http://search.thunderstone.com/texis/websearch/about.html)] +Parent=Search Engines +Browser="ThunderStone" + +[Mozilla/4.0 (compatible; MSIE *; Windows NT; Girafabot; girafabot at girafa dot com; http://www.girafa.com)] +Parent=Search Engines +Browser="Girafabot" +Win32=true + +[Mozilla/4.0(?compatible; MSIE 6.0; Qihoo *)] +Parent=Search Engines +Browser="Qihoo" + +[Mozilla/4.7 (compatible; WhizBang; http://www.whizbang.com/crawler)] +Parent=Search Engines +Browser="Inxight Software" + +[Mozilla/5.0 (*) VoilaBot*] +Parent=Search Engines +Browser="VoilaBot" + +[Mozilla/5.0 (compatible; ActiveTouristBot*; http://www.activetourist.com)] +Parent=Search Engines +Browser="ActiveTouristBot" + +[Mozilla/5.0 (compatible; AhrefsBot/*; +http://ahrefs.com/robot/)] +Parent=Search Engines +Browser="AhrefsBot" + +[Mozilla/5.0 (compatible; ayna-crawler*)] +Parent=Search Engines +Browser="ayna-crawler" + +[Mozilla/5.0 (compatible; Butterfly/1.0; *)*] +Parent=Search Engines +Browser="Butterfly" + +[Mozilla/5.0 (compatible; Charlotte/*; *)] +Parent=Search Engines +Browser="Charlotte" +Beta=true + +[Mozilla/5.0 (compatible; CXL-FatAssANT*)] +Parent=Search Engines +Browser="FatAssANT" + +[Mozilla/5.0 (compatible; DBLBot/1.0; ?http://www.dontbuylists.com/)] +Parent=Search Engines +Browser="DBLBot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (compatible; EARTHCOM.info/*)] +Parent=Search Engines +Browser="EARTHCOM" + +[Mozilla/5.0 (compatible; Lipperhey Spider; http://www.lipperhey.com/)] +Parent=Search Engines +Browser="Lipperhey Spider" + +[Mozilla/5.0 (compatible; Mail.RU/*)] +Parent=Search Engines +Browser="Mail.RU" + +[Mozilla/5.0 (compatible; MojeekBot/*; http://www.mojeek.com/bot.html)] +Parent=Search Engines +Browser="MojeekBot" + +[Mozilla/5.0 (compatible; NLCrawler/*] +Parent=Search Engines +Browser="Northern Light Web Search" + +[Mozilla/5.0 (compatible; OsO;*] +Parent=Search Engines +Browser="Octopodus" + +[Mozilla/5.0 (compatible; ParchBot/1.0;*)] +Parent=Search Engines +Browser="ParchBot" + +[Mozilla/5.0 (compatible; Pogodak.*)] +Parent=Search Engines +Browser="Pogodak" + +[Mozilla/5.0 (compatible; Quantcastbot/1.*)] +Parent=Search Engines +Browser="Quantcastbot" + +[Mozilla/5.0 (compatible; ScoutJet; +http://www.scoutjet.com/)] +Parent=Search Engines +Browser="ScoutJet" + +[Mozilla/5.0 (compatible; Scrubby/*; +http://www.scrubtheweb.com/abs/meta-check.html)] +Parent=Search Engines +Browser="Scrubby" + +[Mozilla/5.0 (compatible; YoudaoBot/1.*; http://www.youdao.com/help/webmaster/spider/*)] +Parent=Search Engines +Browser="YoudaoBot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (Twiceler*)] +Parent=Search Engines +Browser="Twiceler" + +[Mozilla/5.0 CostaCider Search*] +Parent=Search Engines +Browser="CostaCider Search" + +[Mozilla/5.0 GurujiBot/1.0 (*)] +Parent=Search Engines +Browser="GurujiBot" + +[NavissoBot] +Parent=Search Engines +Browser="NavissoBot" + +[NextGenSearchBot*(for information visit *)] +Parent=Search Engines +Browser="ZoomInfo" + +[Norbert the Spider(Burf.com)] +Parent=Search Engines +Browser="Norbert the Spider" + +[NuSearch Spider*] +Parent=Search Engines +Browser="nuSearch" + +[ObjectsSearch/*] +Parent=Search Engines +Browser="ObjectsSearch" + +[OOZBOT/0.20 ( http://www.setooz.com/oozbot.html ; agentname at setooz dot_com )] +Parent=Search Engines +Browser="Setooz" + +[OpenISearch/1.*] +Parent=Search Engines +Browser="OpenISearch (Amazon)" + +[Pagebull http://www.pagebull.com/] +Parent=Search Engines +Browser="Pagebull" + +[PEERbot*] +Parent=Search Engines +Browser="PEERbot" + +[Pompos/*] +Parent=Search Engines +Browser="Pompos" + +[Popdexter/*] +Parent=Search Engines +Browser="Popdex" + +[Qweery*] +Parent=Search Engines +Browser="QweeryBot" + +[RedCell/* (*)] +Parent=Search Engines +Browser="RedCell" + +[SaladSpoon/ShopSalad 1.* (Search Engine crawler for ShopSalad.com; *; crawler@shopsalad.com)] +Parent=Search Engines +Browser="ShopSalad" + +[Scrubby/*] +Parent=Search Engines +Browser="Scrub The Web" + +[Search-10/*] +Parent=Search Engines +Browser="Search-10" + +[search.ch*] +Parent=Search Engines +Browser="Swiss Search Engine" + +[Searchmee! Spider*] +Parent=Search Engines +Browser="Searchmee!" + +[Seekbot/*] +Parent=Search Engines +Browser="Seekbot" + +[SiteSpider] +Parent=Search Engines +Browser="SiteSpider" + +[Sosospider?(+http://help.soso.com/webspider.htm)] +Parent=Search Engines +Browser="Sosospider" + +[Spinne/*] +Parent=Search Engines +Browser="Spinne" + +[sproose/*] +Parent=Search Engines +Browser="Sproose" + +[Sqeobot/0.*] +Parent=Search Engines +Browser="Branzel" + +[SquigglebotBot/*] +Parent=Search Engines +Browser="SquigglebotBot" + +[StackRambler/*] +Parent=Search Engines +Browser="StackRambler" + +[SygolBot*] +Parent=Search Engines +Browser="SygolBot" + +[SynoBot] +Parent=Search Engines +Browser="SynoBot" + +[Szukacz/*] +Parent=Search Engines +Browser="Szukacz" + +[Tarantula/*] +Parent=Search Engines +Browser="Tarantula" + +[TerrawizBot/*] +Parent=Search Engines +Browser="TerrawizBot" + +[Tkensaku/*] +Parent=Search Engines +Browser="Tkensaku" + +[TMCrawler] +Parent=Search Engines +Browser="TMCrawler" + +[TwengaBot-Discover (http://www.twenga.fr/bot-discover.html)] +Parent=Search Engines +Browser="TwengaBot-Discover" + +[Twingly Recon] +Parent=Search Engines +Browser="Twingly Recon" + +[updated/*] +Parent=Search Engines +Browser="Updated!" + +[URL Spider Pro/*] +Parent=Search Engines +Browser="URL Spider Pro" + +[URL Spider SQL*] +Parent=Search Engines +Browser="Innerprise Enterprise Search" + +[VMBot/*] +Parent=Search Engines +Browser="VMBot" + +[voyager/2.0 (http://www.kosmix.com/html/crawler.html)] +Parent=Search Engines +Browser="Voyager" + +[wadaino.jp-crawler*] +Parent=Search Engines +Browser="wadaino.jp" + +[WebAlta Crawler/*] +Parent=Search Engines +Browser="WebAlta Crawler" + +[WebCorp/*] +Parent=Search Engines +Browser="WebCorp" + +[webcrawl.net] +Parent=Search Engines +Browser="webcrawl.net" + +[WISEbot/*] +Parent=Search Engines +Browser="WISEbot" + +[Wotbox/*] +Parent=Search Engines +Browser="Wotbox" + +[www.zatka.com] +Parent=Search Engines +Browser="Zatka" + +[WWWeasel Robot v*] +Parent=Search Engines +Browser="World Wide Weasel" + +[YadowsCrawler*] +Parent=Search Engines +Browser="YadowsCrawler" + +[YodaoBot/*] +Parent=Search Engines +Browser="YodaoBot" + +[ZeBot_www.ze.bz*] +Parent=Search Engines +Browser="ZE.bz" + +[zibber-v*] +Parent=Search Engines +Browser="Zibb" + +[ZipppBot/*] +Parent=Search Engines +Browser="ZipppBot" + +[ATA-Translation-Service] +Parent=Translators +Browser="ATA-Translation-Service" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BitTorrent Clients + +[BitTorrent Clients] +Parent=DefaultProperties +Comment="BitTorrent Clients" +Browser="" +Crawler=true + +[Azureus*] +Parent=BitTorrent Clients +Browser="Azureus" + +[BitComet/*] +Parent=BitTorrent Clients +Browser="BitComet" + +[BitTornado/*] +Parent=BitTorrent Clients +Browser="BitTornado" + +[BitTorrent/*] +Parent=BitTorrent Clients +Browser="BitTorrent" + +[BitTorrentMac/*] +Parent=BitTorrent Clients +Browser="BitTorrentMac" + +[BTSP/*] +Parent=BitTorrent Clients +Browser="BTSP" + +[Deluge*] +Parent=BitTorrent Clients +Browser="Deluge" + +[FDM*] +Parent=BitTorrent Clients +Browser="FDM" + +[KTorrent/*] +Parent=BitTorrent Clients +Browser="KTorrent" + +[libtorrent/*] +Parent=BitTorrent Clients +Browser="libtorrent" + +[MediaGet*] +Parent=BitTorrent Clients +Browser="MediaGet" + +[rtorrent/*] +Parent=BitTorrent Clients +Browser="rtorrent" + +[Transmission/*] +Parent=BitTorrent Clients +Browser="Transmission" + +[uTorrent/*] +Parent=BitTorrent Clients +Browser="uTorrent" + +[uTorrentMac/*] +Parent=BitTorrent Clients +Browser="uTorrentMac" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Hatena + +[Hatena] +Parent=DefaultProperties +Comment="Hatena" +Browser="Hatena" +Crawler=true + +[Feed::Find/*] +Parent=Hatena +Browser="Feed Find" +isSyndicationReader=true + +[Hatena Antenna/*] +Parent=Hatena +Browser="Hatena Antenna" + +[Hatena Bookmark/*] +Parent=Hatena +Browser="Hatena Bookmark" + +[Hatena RSS/*] +Parent=Hatena +Browser="Hatena RSS" +isSyndicationReader=true + +[Hatena::Crawler/*] +Parent=Hatena +Browser="Hatena Crawler" + +[HatenaScreenshot*] +Parent=Hatena +Browser="HatenaScreenshot" + +[URI::Fetch/*] +Parent=Hatena +Browser="URI::Fetch" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Internet Archive + +[Internet Archive] +Parent=DefaultProperties +Comment="Internet Archive" +Browser="Internet Archive" +Frames=true +IFrames=true +Tables=true +Crawler=true + +[*heritrix*] +Parent=Internet Archive +Browser="Heritrix" + +[ia_archiver*] +Parent=Internet Archive +Browser="Internet Archive" + +[InternetArchive/*] +Parent=Internet Archive +Browser="InternetArchive" + +[Mozilla/5.0 (compatible; archive.org_bot*)] +Parent=Internet Archive + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nutch + +[Nutch] +Parent=DefaultProperties +Comment="Nutch" +Browser="Nutch" +Frames=true +Tables=true +Crawler=true + +[*Nutch*] +Parent=Nutch + +[CazoodleBot/*] +Parent=Nutch +Browser="CazoodleBot" + +[LOOQ/0.1*] +Parent=Nutch +Browser="LOOQ" + +[Nutch/0.? (OpenX Spider)] +Parent=Nutch + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Webaroo + +[Webaroo] +Parent=DefaultProperties +Comment="Webaroo" +Browser="Webaroo" +Frames=true +Tables=true +Crawler=true + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Webaroo/*)] +Parent=Webaroo +Browser="Webaroo" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows *; *; rv:*) Gecko/* Firefox/* webaroo/*] +Parent=Webaroo +Browser="Webaroo" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Word Press + +[Word Press] +Parent=DefaultProperties +Comment="Word Press" +Browser="Word Press" +Frames=true +Tables=true +Crawler=true + +[WordPress-B-/2.*] +Parent=Word Press +Browser="WordPress-B" + +[WordPress-Do-P-/2.*] +Parent=Word Press +Browser="WordPress-Do-P" + +[BlueCoat ProxySG] +Parent=Blue Coat Systems +Browser="BlueCoat ProxySG" + +[CerberianDrtrs/*] +Parent=Blue Coat Systems +Browser="Cerberian" + +[Inne: Mozilla/4.0 (compatible; Cerberian Drtrs*)] +Parent=Blue Coat Systems +Browser="Cerberian" + +[Mozilla/4.0 (compatible; Cerberian Drtrs*)] +Parent=Blue Coat Systems +Browser="Cerberian" + +[Mozilla/4.0 (compatible; MSIE 6.0; Bluecoat DRTR)] +Parent=Blue Coat Systems +Browser="Bluecoat" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright/Plagiarism + +[Copyright/Plagiarism] +Parent=DefaultProperties +Comment="Copyright/Plagiarism" +Browser="Copyright/Plagiarism" +Crawler=true + +[BDFetch] +Parent=Copyright/Plagiarism +Browser="BDFetch" + +[copyright sheriff (*)] +Parent=Copyright/Plagiarism +Browser="copyright sheriff" + +[CopyRightCheck*] +Parent=Copyright/Plagiarism +Browser="CopyRightCheck" + +[FairAd Client*] +Parent=Copyright/Plagiarism +Browser="FairAd Client" + +[iCopyright Conductor*] +Parent=Copyright/Plagiarism +Browser="iCopyright Conductor" + +[IPiumBot laurion(dot)com] +Parent=Copyright/Plagiarism +Browser="IPiumBot" + +[IWAgent/*] +Parent=Copyright/Plagiarism +Browser="Brand Protect" + +[Mozilla/5.0 (compatible; DKIMRepBot/*)] +Parent=Copyright/Plagiarism +Browser="DKIMRepBot" + +[oBot] +Parent=Copyright/Plagiarism +Browser="oBot" + +[SlySearch/*] +Parent=Copyright/Plagiarism +Browser="SlySearch" + +[TurnitinBot/*] +Parent=Copyright/Plagiarism +Browser="TurnitinBot" + +[TutorGigBot/*] +Parent=Copyright/Plagiarism +Browser="TutorGig" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DNS Tools + +[DNS Tools] +Parent=DefaultProperties +Comment="DNS Tools" +Browser="DNS Tools" +Crawler=true + +[Domain Dossier utility*] +Parent=DNS Tools +Browser="Domain Dossier" + +[Mozilla/5.0 (compatible; DNS-Digger/*)] +Parent=DNS Tools +Browser="DNS-Digger" + +[OpenDNS Domain Crawler noc@opendns.com] +Parent=DNS Tools +Browser="OpenDNS Domain Crawler" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Download Managers + +[Download Managers] +Parent=DefaultProperties +Comment="Download Managers" +Browser="Download Managers" +Crawler=true + +[A1 Website Download/1.* (*) miggibot] +Parent=Download Managers +Browser="A1 Website Download" + +[AndroidDownloadManager] +Parent=Download Managers +Browser="Android Download Manager" + +[AutoMate5] +Parent=Download Managers +Browser="AutoMate5" + +[Beamer*] +Parent=Download Managers +Browser="Beamer" + +[BitBeamer/*] +Parent=Download Managers +Browser="BitBeamer" + +[DA *] +Parent=Download Managers +Browser="Download Accelerator" + +[Download Demon*] +Parent=Download Managers +Browser="Download Demon" + +[Download Express*] +Parent=Download Managers +Browser="Download Express" + +[Download Master*] +Parent=Download Managers +Browser="Download Master" + +[Download Ninja*] +Parent=Download Managers +Browser="Download Ninja" + +[Download Wonder*] +Parent=Download Managers +Browser="Download Wonder" + +[DownloadSession*] +Parent=Download Managers +Browser="DownloadSession" + +[EasyDL/*] +Parent=Download Managers +Browser="EasyDL" + +[FDM 1.x] +Parent=Download Managers +Browser="Free Download Manager" + +[FlashGet] +Parent=Download Managers +Browser="FlashGet" + +[FreshDownload/*] +Parent=Download Managers +Browser="FreshDownload" + +[GetRight/*] +Parent=Download Managers +Browser="GetRight" + +[GetRightPro/*] +Parent=Download Managers +Browser="GetRightPro" + +[GetSmart/*] +Parent=Download Managers +Browser="GetSmart" + +[Go!Zilla*] +Parent=Download Managers +Browser="GoZilla" + +[Gozilla/*] +Parent=Download Managers +Browser="Gozilla" + +[Internet Ninja*] +Parent=Download Managers +Browser="Internet Ninja" + +[Kontiki Client*] +Parent=Download Managers +Browser="Kontiki Client" + +[lftp/3.2.1] +Parent=Download Managers +Browser="lftp" + +[LightningDownload/*] +Parent=Download Managers +Browser="LightningDownload" + +[LMQueueBot/*] +Parent=Download Managers +Browser="LMQueueBot" + +[MetaProducts Download Express/*] +Parent=Download Managers +Browser="Download Express" + +[Mozilla/4.0 (compatible; Getleft*)] +Parent=Download Managers +Browser="Getleft" + +[Myzilla] +Parent=Download Managers +Browser="Myzilla" + +[Net Vampire/*] +Parent=Download Managers +Browser="Net Vampire" + +[Net_Vampire*] +Parent=Download Managers +Browser="Net_Vampire" + +[NetAnts*] +Parent=Download Managers +Browser="NetAnts" + +[NetPumper*] +Parent=Download Managers +Browser="NetPumper" + +[NetSucker*] +Parent=Download Managers +Browser="NetSucker" + +[NetZip Downloader*] +Parent=Download Managers +Browser="NetZip Downloader" + +[NexTools WebAgent*] +Parent=Download Managers +Browser="NexTools WebAgent" + +[Offline Downloader*] +Parent=Download Managers +Browser="Offline Downloader" + +[P3P Client] +Parent=Download Managers +Browser="P3P Client" + +[PageDown*] +Parent=Download Managers +Browser="PageDown" + +[PicaLoader*] +Parent=Download Managers +Browser="PicaLoader" + +[Prozilla*] +Parent=Download Managers +Browser="Prozilla" + +[RealDownload/*] +Parent=Download Managers +Browser="RealDownload" + +[sEasyDL/*] +Parent=Download Managers +Browser="EasyDL" + +[shareaza*] +Parent=Download Managers +Browser="shareaza" + +[SmartDownload/*] +Parent=Download Managers +Browser="SmartDownload" + +[SpeedDownload/*] +Parent=Download Managers +Browser="Speed Download" + +[Star*Downloader/*] +Parent=Download Managers +Browser="StarDownloader" + +[STEROID Download] +Parent=Download Managers +Browser="STEROID Download" + +[SuperBot/*] +Parent=Download Managers +Browser="SuperBot" + +[Vegas95/*] +Parent=Download Managers +Browser="Vegas95" + +[WebZIP*] +Parent=Download Managers +Browser="WebZIP" + +[Wget*] +Parent=Download Managers +Browser="Wget" + +[WinTools] +Parent=Download Managers +Browser="WinTools" + +[Xaldon WebSpider*] +Parent=Download Managers +Browser="Xaldon WebSpider" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; E-Mail Harvesters + +[E-Mail Harvesters] +Parent=DefaultProperties +Comment="E-Mail Harvesters" +Browser="E-Mail Harvesters" +Crawler=true + +[*E-Mail Address Extractor*] +Parent=E-Mail Harvesters +Browser="E-Mail Address Extractor" + +[*Larbin*] +Parent=E-Mail Harvesters +Browser="Larbin" + +[*www4mail/*] +Parent=E-Mail Harvesters +Browser="www4mail" + +[8484 Boston Project*] +Parent=E-Mail Harvesters +Browser="8484 Boston Project" + +[Atomic_Email] +Parent=E-Mail Harvesters +Browser="Atomic_Email" + +[Atomic_Email_Hunter/*] +Parent=E-Mail Harvesters +Browser="Atomic Email Hunter" + +[CherryPicker*/*] +Parent=E-Mail Harvesters +Browser="CherryPickerElite" + +[Chilkat/*] +Parent=E-Mail Harvesters +Browser="Chilkat" + +[ContactBot/*] +Parent=E-Mail Harvesters +Browser="ContactBot" + +[eCatch*] +Parent=E-Mail Harvesters +Browser="eCatch" + +[EmailCollector*] +Parent=E-Mail Harvesters +Browser="E-Mail Collector" + +[EMAILsearcher] +Parent=E-Mail Harvesters +Browser="EMAILsearcher" + +[EmailSiphon*] +Parent=E-Mail Harvesters +Browser="E-Mail Siphon" + +[EmailWolf*] +Parent=E-Mail Harvesters +Browser="EMailWolf" + +[Epsilon SoftWorks' MailMunky] +Parent=E-Mail Harvesters +Browser="MailMunky" + +[ExtractorPro*] +Parent=E-Mail Harvesters +Browser="ExtractorPro" + +[Franklin Locator*] +Parent=E-Mail Harvesters +Browser="Franklin Locator" + +[Missigua Locator*] +Parent=E-Mail Harvesters +Browser="Missigua Locator" + +[Mozilla/4.0 (compatible; Advanced Email Extractor*)] +Parent=E-Mail Harvesters +Browser="Advanced Email Extractor" + +[Netprospector*] +Parent=E-Mail Harvesters +Browser="Netprospector" + +[ProWebWalker*] +Parent=E-Mail Harvesters +Browser="ProWebWalker" + +[sna-0.0.*] +Parent=E-Mail Harvesters +Browser="Mike Elliott's E-Mail Harvester" + +[WebEnhancer*] +Parent=E-Mail Harvesters +Browser="WebEnhancer" + +[WebMiner*] +Parent=E-Mail Harvesters +Browser="WebMiner" + +[ZIBB Crawler (email address / WWW address)] +Parent=E-Mail Harvesters +Browser="ZIBB Crawler" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Feeds Blogs + +[Feeds Blogs] +Parent=DefaultProperties +Comment="Feeds Blogs" +Browser="Feeds Blogs" +isSyndicationReader=true +Crawler=true + +[Bloglines Title Fetch/*] +Parent=Feeds Blogs +Browser="Bloglines Title Fetch" + +[Bloglines/* (http://www.bloglines.com*)] +Parent=Feeds Blogs +Browser="BlogLines Web" + +[BlogPulse (ISSpider-3.*)] +Parent=Feeds Blogs +Browser="BlogPulse" + +[BlogPulseLive (support@blogpulse.com)] +Parent=Feeds Blogs +Browser="BlogPulseLive" + +[blogsearchbot-pumpkin-2] +Parent=Feeds Blogs +Browser="blogsearchbot-pumpkin" +isSyndicationReader=false + +[Irish Blogs Aggregator/*1.0*] +Parent=Feeds Blogs +Browser="Irish Blogs Aggregator" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[kinjabot (http://www.kinja.com; *)] +Parent=Feeds Blogs +Browser="kinjabot" + +[Net::Trackback/*] +Parent=Feeds Blogs +Browser="Net::Trackback" + +[Reblog*] +Parent=Feeds Blogs +Browser="Reblog" + +[WordPress/*] +Parent=Feeds Blogs +Browser="WordPress" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Feeds Syndicators + +[Feeds Syndicators] +Parent=DefaultProperties +Comment="Feeds Syndicators" +Browser="Feeds Syndicators" +isSyndicationReader=true +Crawler=true + +[*LinkLint*] +Parent=Feeds Syndicators +Browser="LinkLint" + +[*NetNewsWire/*] +Parent=Feeds Syndicators +Browser="NetNewsWire" + +[*NetVisualize*] +Parent=Feeds Syndicators +Browser="NetVisualize" + +[AideRSS 2.* (postrank.com)] +Parent=Feeds Syndicators +Browser="AideRSS" + +[AideRSS/2.0 (aiderss.com)] +Parent=Feeds Syndicators +Browser="AideRSS" + +[Akregator/*] +Parent=Feeds Syndicators +Browser="Akregator" + +[Apple-PubSub/*] +Parent=Feeds Syndicators +Browser="Apple-PubSub" + +[AppleSyndication/*] +Parent=Feeds Syndicators +Browser="Safari RSS" +Platform="MacOSX" + +[Cocoal.icio.us/* (*)*] +Parent=Feeds Syndicators +Browser="Cocoal.icio.us" + +[Feed43 Proxy/* (*)] +Parent=Feeds Syndicators +Browser="Feed For Free" + +[FeedBurner/*] +Parent=Feeds Syndicators +Browser="FeedBurner" + +[FeedDemon/* (*)] +Parent=Feeds Syndicators +Browser="FeedDemon" +Platform="Win32" + +[FeedDigest/* (*)] +Parent=Feeds Syndicators +Browser="FeedDigest" + +[FeedGhost/1.*] +Parent=Feeds Syndicators +Browser="FeedGhost" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[FeedOnFeeds/0.1.* ( http://minutillo.com/steve/feedonfeeds/)] +Parent=Feeds Syndicators +Browser="FeedOnFeeds" +Version=0.1 +MajorVer=0 +MinorVer=1 + +[Feedreader * (Powered by Newsbrain)] +Parent=Feeds Syndicators +Browser="Newsbrain" + +[Feedshow/* (*)] +Parent=Feeds Syndicators +Browser="Feedshow" + +[Feedster Crawler/?.0; Feedster, Inc.] +Parent=Feeds Syndicators +Browser="Feedster" + +[GreatNews/1.0] +Parent=Feeds Syndicators +Browser="GreatNews" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Gregarius/*] +Parent=Feeds Syndicators +Browser="Gregarius" + +[intraVnews/*] +Parent=Feeds Syndicators +Browser="intraVnews" + +[JetBrains Omea Reader*] +Parent=Feeds Syndicators +Browser="Omea Reader" + +[Liferea/1.* (Linux; *; http://liferea.sf.net/)] +Parent=Feeds Syndicators +Browser="Liferea" + +[livedoor FeedFetcher/0.0* (http://reader.livedoor.com/;*)] +Parent=Feeds Syndicators +Browser="FeedFetcher" +Version=0.0 +MajorVer=0 +MinorVer=0 + +[MagpieRSS/* (*)] +Parent=Feeds Syndicators +Browser="MagpieRSS" + +[Mobitype * (compatible; Mozilla/*; MSIE *.*; Windows *)] +Parent=Feeds Syndicators +Browser="Mobitype" +Platform="Win32" + +[Mozilla/5.0 (*; Rojo *; http://www.rojo.com/corporate/help/agg; *)*] +Parent=Feeds Syndicators +Browser="Rojo" + +[Mozilla/5.0 (*aggregator:TailRank; http://tailrank.com/robot)*] +Parent=Feeds Syndicators +Browser="TailRank" + +[Mozilla/5.0 (compatible; MSIE 6.0; Podtech Network; crawler_admin@podtech.net)] +Parent=Feeds Syndicators +Browser="Podtech Network" + +[Mozilla/5.0 (compatible; Newz Crawler *; http://www.newzcrawler.com/?)] +Parent=Feeds Syndicators +Browser="Newz Crawler" + +[Mozilla/5.0 (compatible; RSSMicro.com RSS/Atom Feed Robot)] +Parent=Feeds Syndicators +Browser="RSSMicro" + +[Mozilla/5.0 (compatible;*newstin.com;*)] +Parent=Feeds Syndicators +Browser="NewsTin" + +[Mozilla/5.0 (RSS Reader Panel)] +Parent=Feeds Syndicators +Browser="RSS Reader Panel" + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:FeedParser; *) Gecko/*] +Parent=Feeds Syndicators +Browser="FeedParser" + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:NewsMonster; *) Gecko/*] +Parent=Feeds Syndicators +Browser="NewsMonster" + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:Rojo; *) Gecko/*] +Parent=Feeds Syndicators +Browser="Rojo" + +[Mozilla/5.0 NewsFox/*] +Parent=Feeds Syndicators +Browser="NewsFox" + +[Netvibes (*)] +Parent=Feeds Syndicators +Browser="Netvibes" + +[NewsAlloy/* (*)] +Parent=Feeds Syndicators +Browser="NewsAlloy" + +[Omnipelagos*] +Parent=Feeds Syndicators +Browser="Omnipelagos" + +[Particls] +Parent=Feeds Syndicators +Browser="Particls" + +[Protopage/* (*)] +Parent=Feeds Syndicators +Browser="Protopage" + +[PubSub-RSS-Reader/* (*)] +Parent=Feeds Syndicators +Browser="PubSub-RSS-Reader" + +[RSS Menu/*] +Parent=Feeds Syndicators +Browser="RSS Menu" + +[RssBandit/*] +Parent=Feeds Syndicators +Browser="RssBandit" + +[RssBar/1.2*] +Parent=Feeds Syndicators +Browser="RssBar" +Version=1.2 +MajorVer=1 +MinorVer=2 + +[SharpReader/*] +Parent=Feeds Syndicators +Browser="SharpReader" + +[SimplePie/*] +Parent=Feeds Syndicators +Browser="SimplePie" + +[Strategic Board Bot (?http://www.strategicboard.com)] +Parent=Feeds Syndicators +Browser="Strategic Board Bot" + +[TargetYourNews.com bot] +Parent=Feeds Syndicators +Browser="TargetYourNews" + +[Technoratibot/*] +Parent=Feeds Syndicators +Browser="Technoratibot" + +[Tumblr/* RSS syndication ( http://www.tumblr.com/) (support@tumblr.com)] +Parent=Feeds Syndicators +Browser="Tumblr RSS syndication" + +[Windows-RSS-Platform/1.0*] +Parent=Feeds Syndicators +Browser="Windows-RSS-Platform" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true + +[Wizz RSS News Reader] +Parent=Feeds Syndicators +Browser="Wizz" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; General RSS + +[General RSS] +Parent=DefaultProperties +Comment="General RSS" +Browser="General RSS" +isSyndicationReader=true +Crawler=true + +[AideRSS/1.0 (aiderss.com); * subscribers] +Parent=General RSS +Browser="AideRSS" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[BlijbolReallySimpleAggregator/2.0*] +Parent=General RSS +Browser="BlijbolReallySimpleAggregator" + +[CC Metadata Scaper http://wiki.creativecommons.org/Metadata_Scraper] +Parent=General RSS +Browser="CC Metadata Scaper" + +[Mozilla/5.0 (compatible) GM RSS Panel] +Parent=General RSS +Browser="RSS Panel" + +[Mozilla/5.0 http://www.inclue.com; graeme@inclue.com] +Parent=General RSS +Browser="Inclue" + +[Runnk online rss reader : http://www.runnk.com/ : RSS favorites : RSS ranking : RSS aggregator*] +Parent=General RSS +Browser="Ruunk" + +[UniversalFeedParser/4.* +http://feedparser.org/] +Parent=General RSS +Browser="UniversalFeedParser" + +[Windows-RSS-Platform/2.0 (MSIE ?.0; Windows NT *.*)] +Parent=General RSS +Browser="Windows-RSS-Platform" +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform="Win32" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Validation Checkers + +[HTML Validators] +Parent=DefaultProperties +Comment="Validation Checkers" +Browser="HTML Validators" +Crawler=true + +[(HTML Validator http://www.searchengineworld.com/validator/)] +Parent=HTML Validators +Browser="Search Engine World HTML Validator" + +[FeedValidator/*] +Parent=HTML Validators +Browser="FeedValidator" + +[Search Engine World Robots.txt Validator*] +Parent=HTML Validators +Browser="Search Engine World Robots.txt Validator" + +[Weblide/*] +Parent=HTML Validators +Browser="Weblide" +Beta=true + +[WebmasterWorld StickyMail Server Header Checker*] +Parent=HTML Validators +Browser="WebmasterWorld Server Header Checker" + +[WWWC/*] +Parent=HTML Validators +Browser="WWWC" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Image Crawlers + +[Image Crawlers] +Parent=DefaultProperties +Comment="Image Crawlers" +Browser="Image Crawlers" +Crawler=true + +[*CFNetwork*] +Parent=Image Crawlers +Browser="CFNetwork" + +[*PhotoStickies/*] +Parent=Image Crawlers +Browser="PhotoStickies" + +[Camcrawler*] +Parent=Image Crawlers +Browser="Camcrawler" + +[CydralSpider/*] +Parent=Image Crawlers +Browser="Cydral Web Image Search" + +[Der gro\xdfe BilderSauger*] +Parent=Image Crawlers +Browser="Gallery Grabber" + +[Extreme Picture Finder] +Parent=Image Crawlers +Browser="Extreme Picture Finder" + +[FLATARTS_FAVICO] +Parent=Image Crawlers +Browser="FlatArts Favorites Icon Tool" + +[HTML2JPG Blackbox, http://www.html2jpg.com] +Parent=Image Crawlers +Browser="HTML2JPG" + +[IconSurf/2.*] +Parent=Image Crawlers +Browser="IconSurf" + +[Mister PIX*] +Parent=Image Crawlers +Browser="Mister PIX" + +[Mozilla/5.0 (compatible; KaloogaBot; http://www.kalooga.com/info.html?page=crawler)] +Parent=Image Crawlers +Browser="KaloogaBot" + +[Mozilla/5.0 (Macintosh; U; *Mac OS X; *) AppleWebKit/* (*) Pandora/2.*] +Parent=Image Crawlers +Browser="Pandora" + +[naoFavicon4IE*] +Parent=Image Crawlers +Browser="naoFavicon4IE" + +[pixfinder/*] +Parent=Image Crawlers +Browser="pixfinder" + +[psbot/* (?http://www.picsearch.com/bot.html)] +Parent=Image Crawlers +Browser="PicSearchBot" + +[rssImagesBot/0.1 (*http://herbert.groot.jebbink.nl/?app=rssImages)] +Parent=Image Crawlers +Browser="rssImagesBot" + +[Web Image Collector*] +Parent=Image Crawlers +Browser="Web Image Collector" + +[WebImages * (?http://herbert.groot.jebbink.nl/?app=WebImages?)] +Parent=Image Crawlers +Browser="WebImages" + +[WebPix*] +Parent=Image Crawlers +Browser="Custo" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Link Checkers + +[Link Checkers] +Parent=DefaultProperties +Comment="Link Checkers" +Browser="Link Checkers" +Crawler=true + +[!Susie (http://www.sync2it.com/susie)] +Parent=Link Checkers +Browser="!Susie" + +[*AgentName/*] +Parent=Link Checkers +Browser="AgentName" + +[*Linkman*] +Parent=Link Checkers +Browser="Linkman" + +[*LinksManager.com*] +Parent=Link Checkers +Browser="LinksManager" + +[*Powermarks/*] +Parent=Link Checkers +Browser="Powermarks" + +[*Web Link Validator*] +Parent=Link Checkers +Browser="Web Link Validator" + +[*Zeus*] +Parent=Link Checkers +Browser="Zeus" + +[ActiveBookmark *] +Parent=Link Checkers +Browser="ActiveBookmark" + +[Bookdog/*] +Parent=Link Checkers +Browser="Bookdog" + +[Bookmark Buddy*] +Parent=Link Checkers +Browser="Bookmark Buddy" + +[Bookmark Renewal Check Agent*] +Parent=Link Checkers +Browser="Bookmark Renewal Check Agent" + +[Bookmark search tool*] +Parent=Link Checkers +Browser="Bookmark search tool" + +[Bookmark-Manager] +Parent=Link Checkers +Browser="Bookmark-Manager" + +[Checkbot*] +Parent=Link Checkers +Browser="Checkbot" + +[CheckLinks/*] +Parent=Link Checkers +Browser="CheckLinks" + +[CyberSpyder Link Test/*] +Parent=Link Checkers +Browser="CyberSpyder Link Test" + +[DLC/*] +Parent=Link Checkers +Browser="DLC" + +[DocWeb Link Crawler (http://doc.php.net)] +Parent=Link Checkers +Browser="DocWeb Link Crawler" + +[FavOrg] +Parent=Link Checkers +Browser="FavOrg" + +[Favorites Sweeper v.3.*] +Parent=Link Checkers +Browser="Favorites Sweeper" + +[FindLinks/*] +Parent=Link Checkers +Browser="FindLinks" + +[Funnel Web Profiler*] +Parent=Link Checkers +Browser="Funnel Web Profiler" + +[Html Link Validator (www.lithopssoft.com)] +Parent=Link Checkers +Browser="HTML Link Validator" + +[IECheck] +Parent=Link Checkers +Browser="IECheck" + +[JCheckLinks/*] +Parent=Link Checkers +Browser="JCheckLinks" + +[JRTwine Software Check Favorites Utility] +Parent=Link Checkers +Browser="JRTwine" + +[Link Valet Online*] +Parent=Link Checkers +Browser="Link Valet" + +[LinkAlarm/*] +Parent=Link Checkers +Browser="LinkAlarm" + +[Linkbot*] +Parent=Link Checkers +Browser="Linkbot" + +[LinkChecker/*] +Parent=Link Checkers +Browser="LinkChecker" + +[LinkextractorPro*] +Parent=Link Checkers +Browser="LinkextractorPro" + +[LinkLint-checkonly/*] +Parent=Link Checkers +Browser="LinkLint" + +[LinkScan/*] +Parent=Link Checkers +Browser="LinkScan" + +[LinkSweeper/*] +Parent=Link Checkers +Browser="LinkSweeper" + +[LinkWalker*] +Parent=Link Checkers +Browser="LinkWalker" + +[MetaGer-LinkChecker] +Parent=Link Checkers +Browser="MetaGer-LinkChecker" + +[Mozilla/* (compatible; linktiger/*; *http://www.linktiger.com*)] +Parent=Link Checkers +Browser="LinkTiger" + +[Mozilla/4.0 (Compatible); URLBase*] +Parent=Link Checkers +Browser="URLBase" + +[Mozilla/4.0 (compatible; Link Utility; http://net-promoter.com)] +Parent=Link Checkers +Browser="NetPromoter Link Utility" + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Web Link Validator*] +Parent=Link Checkers +Browser="Web Link Validator" +Platform_Version=98 +Win32=true + +[Mozilla/4.0 (compatible; MSIE 7.0; Win32) Link Commander 3.0] +Parent=Link Checkers +Browser="Link Commander" +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Win32" + +[Mozilla/4.0 (compatible; smartBot/1.*; checking links; *)] +Parent=Link Checkers +Browser="smartBot" + +[Mozilla/4.0 (compatible; SuperCleaner*;*)] +Parent=Link Checkers +Browser="SuperCleaner" + +[Mozilla/5.0 gURLChecker/*] +Parent=Link Checkers +Browser="gURLChecker" + +[Newsgroupreporter LinkCheck] +Parent=Link Checkers +Browser="Newsgroupreporter LinkCheck" + +[onCHECK Linkchecker von www.scientec.de fuer www.onsinn.de] +Parent=Link Checkers +Browser="onCHECK Linkchecker" + +[online link validator (http://www.dead-links.com/)] +Parent=Link Checkers +Browser="Dead-Links.com" + +[REL Link Checker*] +Parent=Link Checkers +Browser="REL Link Checker" + +[RLinkCheker*] +Parent=Link Checkers +Browser="RLinkCheker" + +[Robozilla/*] +Parent=Link Checkers +Browser="Robozilla" + +[RPT-HTTPClient/*] +Parent=Link Checkers +Browser="RPT-HTTPClient" + +[SafariBookmarkChecker*(?http://www.coriolis.ch/)] +Parent=Link Checkers +Browser="SafariBookmarkChecker" +Platform="MacOSX" +CssVersion=2 + +[Simpy/* (Simpy; http://www.simpy.com/?ref=bot; feedback at simpy dot com)] +Parent=Link Checkers +Browser="Simpy" + +[SiteBar/*] +Parent=Link Checkers +Browser="SiteBar" + +[Susie (http://www.sync2it.com/bms/susie.php] +Parent=Link Checkers +Browser="Susie" + +[URLBase/*] +Parent=Link Checkers +Browser="URLBase" + +[VSE/*] +Parent=Link Checkers +Browser="VSE Link Tester" + +[WebTrends Link Analyzer] +Parent=Link Checkers +Browser="WebTrends Link Analyzer" + +[WorQmada/*] +Parent=Link Checkers +Browser="WorQmada" + +[Xenu* Link Sleuth*] +Parent=Link Checkers +Browser="Xenu's Link Sleuth" + +[Z-Add Link Checker*] +Parent=Link Checkers +Browser="Z-Add Link Checker" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Microsoft + +[Microsoft] +Parent=DefaultProperties +Comment="Microsoft" +Browser="Microsoft" +Crawler=true + +[Live (http://www.live.com/)] +Parent=Microsoft +Browser="Microsoft Live" +isSyndicationReader=true + +[MFC Foundation Class Library*] +Parent=Microsoft +Browser="MFC Foundation Class Library" + +[MFHttpScan] +Parent=Microsoft +Browser="MFHttpScan" + +[Microsoft BITS/*] +Parent=Microsoft +Browser="BITS" + +[Microsoft Data Access Internet Publishing Provider Cache Manager] +Parent=Microsoft +Browser="MS IPP" + +[Microsoft Data Access Internet Publishing Provider DAV*] +Parent=Microsoft +Browser="MS IPP DAV" + +[Microsoft Data Access Internet Publishing Provider Protocol Discovery] +Parent=Microsoft +Browser="MS IPPPD" + +[Microsoft Internet Explorer] +Parent=Microsoft +Browser="Fake IE" + +[Microsoft Office Existence Discovery] +Parent=Microsoft +Browser="Microsoft Office Existence Discovery" + +[Microsoft Office Protocol Discovery] +Parent=Microsoft +Browser="MS OPD" + +[Microsoft Office/* (*Picture Manager*)] +Parent=Microsoft +Browser="Microsoft Office Picture Manager" + +[Microsoft URL Control*] +Parent=Microsoft +Browser="Microsoft URL Control" + +[Microsoft Visio MSIE] +Parent=Microsoft +Browser="Microsoft Visio" + +[Microsoft-WebDAV-MiniRedir/*] +Parent=Microsoft +Browser="Microsoft-WebDAV" + +[Mozilla/5.0 (Macintosh; Intel Mac OS X) Excel/12.*] +Parent=Microsoft +Browser="Microsoft Excel" +Version=12.0 +MajorVer=12 +MinorVer=0 +Platform="MacOSX" + +[MSN Feed Manager] +Parent=Microsoft +Browser="MSN Feed Manager" +isSyndicationReader=true + +[MSProxy/*] +Parent=Microsoft +Browser="MS Proxy" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Miscellaneous Browsers + +[Miscellaneous Browsers] +Parent=DefaultProperties +Comment="Miscellaneous Browsers" +Browser="Miscellaneous Browsers" +Crawler=true + +[*Amiga*] +Parent=Miscellaneous Browsers +Browser="Amiga" +Platform="Amiga" + +[*avantbrowser*] +Parent=Miscellaneous Browsers +Browser="Avant Browser" + +[12345] +Parent=Miscellaneous Browsers +Browser="12345" + +[1st ZipCommander (Net) - http://www.zipcommander.com/] +Parent=Miscellaneous Browsers +Browser="1st ZipCommander" + +[Ace Explorer] +Parent=Miscellaneous Browsers +Browser="Ace Explorer" + +[Enigma Browser*] +Parent=Miscellaneous Browsers +Browser="Enigma Browser" + +[EVE-minibrowser/*] +Parent=Miscellaneous Browsers +Browser="EVE-minibrowser" +IFrames=false +Tables=false +BackgroundSounds=false +JavaScript=false +VBScript=false +JavaApplets=false +ActiveXControls=false +Crawler=false + +[Godzilla/* (Basic*; *; Commodore C=64; *; rv:1.*)*] +Parent=Miscellaneous Browsers +Browser="Godzilla" + +[GreenBrowser] +Parent=Miscellaneous Browsers +Browser="GreenBrowser" +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 + +[Kopiczek/* (WyderOS*; *)] +Parent=Miscellaneous Browsers +Browser="Kopiczek" +Platform="WyderOS" +IFrames=true +VBScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/* (*) - BrowseX (*)] +Parent=Miscellaneous Browsers +Browser="BrowseX" + +[Mozilla/* (Win32;*Escape?*; ?)] +Parent=Miscellaneous Browsers +Browser="Escape" +Platform="Win32" + +[Mozilla/4.0 (compatible; ibisBrowser)] +Parent=Miscellaneous Browsers +Browser="ibisBrowser" + +[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) AppleWebKit/* (*) HistoryHound/*] +Parent=Miscellaneous Browsers +Browser="HistoryHound" + +[Mozilla/5.0 (X11; U; Linux*; *) AppleWebKit/*(KHTML, like Gecko) Safari/* Epiphany/2.30.*] +Parent=Miscellaneous Browsers +Browser="Epiphany" +Version=2.30 +MajorVer=2 +MinorVer=30 +Platform="Linux" +Win16=false +Win32=false +Win64=false +IFrames=true +VBScript=true +JavaApplets=true +CssVersion=3 + +[NetRecorder*] +Parent=Miscellaneous Browsers +Browser="NetRecorder" + +[NetSurf*] +Parent=Miscellaneous Browsers +Browser="NetSurf" + +[ogeb browser , Version 1.1.0] +Parent=Miscellaneous Browsers +Browser="ogeb browser" +Version=1.1 +MajorVer=1 +MinorVer=1 + +[SCEJ PSP BROWSER 0102pspNavigator] +Parent=Miscellaneous Browsers +Browser="Wipeout Pure" + +[SlimBrowser] +Parent=Miscellaneous Browsers +Browser="SlimBrowser" + +[WWW_Browser/*] +Parent=Miscellaneous Browsers +Browser="WWW Browser" +Version=1.69 +MajorVer=1 +MinorVer=69 +Platform="Win16" +CssVersion=3 + +[*Netcraft Webserver Survey*] +Parent=Netcraft +Browser="Netcraft Webserver Survey" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Offline Browsers + +[Offline Browsers] +Parent=DefaultProperties +Comment="Offline Browsers" +Browser="Offline Browsers" +Crawler=true + +[*Check&Get*] +Parent=Offline Browsers +Browser="Check&Get" + +[*HTTrack*] +Parent=Offline Browsers +Browser="HTTrack" + +[*MSIECrawler*] +Parent=Offline Browsers +Browser="IE Offline Browser" + +[*TweakMASTER*] +Parent=Offline Browsers +Browser="TweakMASTER" + +[BackStreet Browser *] +Parent=Offline Browsers +Browser="BackStreet Browser" + +[Go-Ahead-Got-It*] +Parent=Offline Browsers +Browser="Go Ahead Got-It" + +[iGetter/*] +Parent=Offline Browsers +Browser="iGetter" + +[Teleport*] +Parent=Offline Browsers +Browser="Teleport" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Online Scanners + +[Online Scanners] +Parent=DefaultProperties +Comment="Online Scanners" +Browser="Online Scanners" + +[JoeDog/* (X11; I; Siege *)] +Parent=Online Scanners +Browser="JoeDog" + +[Morfeus Fucking Scanner] +Parent=Online Scanners +Browser="Morfeus Fucking Scanner" + +[Mozilla/4.0 (compatible; Trend Micro tmdr 1.*] +Parent=Online Scanners +Browser="Trend Micro" + +[Titanium 2005 (4.02.01)] +Parent=Online Scanners +Browser="Panda Antivirus Titanium" + +[virus_detector*] +Parent=Online Scanners +Browser="Secure Computing Corporation" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Proxy Servers + +[Proxy Servers] +Parent=DefaultProperties +Comment="Proxy Servers" +Browser="Proxy Servers" + +[*squid*] +Parent=Proxy Servers +Browser="Squid" + +[Anonymisiert*] +Parent=Proxy Servers +Browser="Anonymizied" + +[Anonymizer/*] +Parent=Proxy Servers +Browser="Anonymizer" + +[Anonymizied*] +Parent=Proxy Servers +Browser="Anonymizied" + +[Anonymous*] +Parent=Proxy Servers +Browser="Anonymous" + +[Anonymous/*] +Parent=Proxy Servers +Browser="Anonymous" + +[CE-Preload] +Parent=Proxy Servers +Browser="CE-Preload" + +[http://Anonymouse.org/*] +Parent=Proxy Servers +Browser="Anonymouse" + +[IE/6.01 (CP/M; 8-bit*)] +Parent=Proxy Servers +Browser="Squid" + +[Mozilla/* (TuringOS; Turing Machine; 0.0)] +Parent=Proxy Servers +Browser="Anonymizer" + +[Mozilla/4.0 (compatible; MSIE ?.0; SaferSurf*)] +Parent=Proxy Servers +Browser="SaferSurf" + +[Mozilla/5.0 (compatible; del.icio.us-thumbnails/*; *) KHTML/* (like Gecko)] +Parent=Proxy Servers +Browser="Yahoo!" +Crawler=true + +[Nutscrape] +Parent=Proxy Servers +Browser="Squid" + +[Nutscrape/* (CP/M; 8-bit*)] +Parent=Proxy Servers +Browser="Squid" + +[Privoxy/*] +Parent=Proxy Servers +Browser="Privoxy" + +[ProxyTester*] +Parent=Proxy Servers +Browser="ProxyTester" +Crawler=true + +[SilentSurf*] +Parent=Proxy Servers +Browser="SilentSurf" + +[SmallProxy*] +Parent=Proxy Servers +Browser="SmallProxy" + +[Space*Bison/*] +Parent=Proxy Servers +Browser="Proxomitron" + +[Sqworm/*] +Parent=Proxy Servers +Browser="Websense" + +[SurfControl] +Parent=Proxy Servers +Browser="SurfControl" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Research Projects + +[Research Projects] +Parent=DefaultProperties +Comment="Research Projects" +Browser="Research Projects" +Crawler=true + +[*research*] +Parent=Research Projects +Browser="Generic Research Crawler" + +[AcadiaUniversityWebCensusClient] +Parent=Research Projects +Browser="AcadiaUniversityWebCensusClient" + +[Amico Alpha * (*) Gecko/* AmicoAlpha/*] +Parent=Research Projects +Browser="Amico Alpha" + +[annotate_google; http://ponderer.org/*] +Parent=Research Projects +Browser="Annotate Google" + +[CMS crawler (?http://buytaert.net/crawler/)] +Parent=Research Projects + +[e-SocietyRobot(http://www.yama.info.waseda.ac.jp/~yamana/es/)] +Parent=Research Projects +Browser="e-SocietyRobot" + +[Forschungsportal/*] +Parent=Research Projects +Browser="Forschungsportal" + +[Gulper Web *] +Parent=Research Projects +Browser="Gulper Web Bot" + +[HooWWWer/*] +Parent=Research Projects +Browser="HooWWWer" + +[inetbot/* (?http://www.inetbot.com/bot.html)] +Parent=Research Projects +Browser="inetbot" + +[IRLbot/1.0 (*http://irl.cs.tamu.edu/crawler*)] +Parent=Research Projects +Browser="IRLbot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[IRLbot/2.0 (*http://irl.cs.tamu.edu/crawler*)] +Parent=Research Projects +Version=2.0 +MajorVer=2 +MinorVer=0 + +[IRLbot/3.0 (*http://irl.cs.tamu.edu/crawler*)] +Parent=Research Projects +Version=3.0 +MajorVer=3 +MinorVer=0 + +[JUST-CRAWLER(*)] +Parent=Research Projects +Browser="JUST-CRAWLER" + +[Lachesis] +Parent=Research Projects +Browser="Lachesis" + +[Mozilla/5.0 (compatible; nextthing.org/*)] +Parent=Research Projects +Browser="nextthing.org" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (compatible; Theophrastus/*)] +Parent=Research Projects +Browser="Theophrastus" + +[Mozilla/5.0 (compatible; Webscan v0.*; +http://otc.dyndns.org/webscan/)] +Parent=Research Projects +Browser="Webscan" + +[MQbot*] +Parent=Research Projects +Browser="MQbot" + +[OutfoxBot/*] +Parent=Research Projects +Browser="OutfoxBot" + +[polybot?*] +Parent=Research Projects +Browser="Polybot" + +[Shim?Crawler*] +Parent=Research Projects +Browser="Shim Crawler" + +[Steeler/*] +Parent=Research Projects +Browser="Steeler" + +[Taiga web spider] +Parent=Research Projects +Browser="Taiga" + +[Theme Spider*] +Parent=Research Projects +Browser="Theme Spider" + +[UofTDB_experiment* (leehyun@cs.toronto.edu)] +Parent=Research Projects +Browser="UofTDB Experiment" + +[USyd-NLP-Spider*] +Parent=Research Projects +Browser="USyd-NLP-Spider" + +[woriobot*] +Parent=Research Projects +Browser="woriobot" + +[wwwster/* (Beta, mailto:gue@cis.uni-muenchen.de)] +Parent=Research Projects +Browser="wwwster" +Beta=true + +[Zao-Crawler] +Parent=Research Projects +Browser="Zao-Crawler" + +[Zao/*] +Parent=Research Projects +Browser="Zao" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Rippers + +[Rippers] +Parent=DefaultProperties +Comment="Rippers" +Browser="Ripper" +Crawler=true + +[*grub*] +Parent=Rippers +Browser="grub" + +[*ickHTTP*] +Parent=Rippers +Browser="IP*Works" + +[*java*] +Parent=Rippers +Browser="Generic Java Crawler" + +[*libwww*] +Parent=Rippers +Browser="libwww" + +[*WebGrabber*] +Parent=Rippers +Browser="WebGrabber" + +[*WinHttpRequest*] +Parent=Rippers +Browser="WinHttp" + +[3D-FTP/*] +Parent=Rippers +Browser="3D-FTP" + +[3wGet/*] +Parent=Rippers +Browser="3wGet" + +[ActiveRefresh*] +Parent=Rippers +Browser="ActiveRefresh" + +[Ad Muncher*] +Parent=Rippers +Browser="Ad Muncher" + +[Artera (Version *)] +Parent=Rippers +Browser="Artera" + +[AutoHotkey] +Parent=Rippers +Browser="AutoHotkey" + +[b2w/*] +Parent=Rippers +Browser="b2w" + +[BasicHTTP/*] +Parent=Rippers +Browser="BasicHTTP" + +[BlockNote.Net] +Parent=Rippers +Browser="BlockNote.Net" + +[CAST] +Parent=Rippers +Browser="CAST" + +[CFNetwork/*] +Parent=Rippers +Browser="CFNetwork" + +[CFSCHEDULE*] +Parent=Rippers +Browser="ColdFusion Task Scheduler" + +[CobWeb/*] +Parent=Rippers +Browser="CobWeb" + +[ColdFusion*] +Parent=Rippers +Browser="ColdFusion" + +[Crawl_Application] +Parent=Rippers +Browser="Crawl_Application" + +[CTerm/*] +Parent=Rippers +Browser="CTerm" + +[curl*] +Parent=Rippers +Browser="cURL" + +[Custo*] +Parent=Rippers +Browser="Custo" + +[DataCha0s/*] +Parent=Rippers +Browser="DataCha0s" + +[DeepIndexer*] +Parent=Rippers +Browser="DeepIndexer" + +[DISCo Pump *] +Parent=Rippers +Browser="DISCo Pump" + +[eStyleSearch * (compatible; MSIE 6.0; Windows NT 5.0)] +Parent=Rippers +Browser="eStyleSearch" +Platform_Version=5.0 +Win32=true + +[ezic.com http agent *] +Parent=Rippers +Browser="Ezic.com" + +[fetch libfetch/*] +Parent=Rippers +Browser="fetch libfetch" + +[FGet*] +Parent=Rippers +Browser="FGet" + +[findfiles.net/* (Robot;test_robot@gmx-topmail.de)] +Parent=Rippers +Browser="FindFiles" + +[Flaming AttackBot*] +Parent=Rippers +Browser="Flaming AttackBot" + +[Foobot*] +Parent=Rippers +Browser="Foobot" + +[GameSpyHTTP/*] +Parent=Rippers +Browser="GameSpyHTTP" + +[gnome-vfs/*] +Parent=Rippers +Browser="gnome-vfs" + +[Harvest/*] +Parent=Rippers +Browser="Harvest" + +[hcat/*] +Parent=Rippers +Browser="hcat" + +[HLoader] +Parent=Rippers +Browser="HLoader" + +[Holmes/*] +Parent=Rippers +Browser="Holmes" + +[HTMLParser/*] +Parent=Rippers +Browser="HTMLParser" + +[http generic] +Parent=Rippers +Browser="http generic" + +[http://arachnode.net*] +Parent=Rippers +Browser="arachnode" + +[httpclient*] +Parent=Rippers +Browser="httpclient" + +[httperf/*] +Parent=Rippers +Browser="httperf" + +[HTTPFetch/*] +Parent=Rippers +Browser="HTTPFetch" + +[HTTPGrab] +Parent=Rippers +Browser="HTTPGrab" + +[HttpSession] +Parent=Rippers +Browser="HttpSession" + +[httpunit/*] +Parent=Rippers +Browser="HttpUnit" + +[ICE_GetFile] +Parent=Rippers +Browser="ICE_GetFile" + +[iexplore.exe] +Parent=Rippers +Browser="iexplore.exe" + +[Inet - Eureka App] +Parent=Rippers +Browser="Inet - Eureka App" + +[INetURL/*] +Parent=Rippers +Browser="INetURL" + +[InetURL:/*] +Parent=Rippers +Browser="InetURL" + +[Internet Exploiter/*] +Parent=Rippers +Browser="Internet Exploiter" + +[Internet Explore *] +Parent=Rippers +Browser="Fake IE" + +[Internet Explorer *] +Parent=Rippers +Browser="Fake IE" + +[IP*Works!*/*] +Parent=Rippers +Browser="IP*Works!" + +[IrssiUrlLog/*] +Parent=Rippers +Browser="IrssiUrlLog" + +[JPluck/*] +Parent=Rippers +Browser="JPluck" + +[Kapere (http://www.kapere.com)] +Parent=Rippers +Browser="Kapere" + +[LeechFTP] +Parent=Rippers +Browser="LeechFTP" + +[LeechGet*] +Parent=Rippers +Browser="LeechGet" + +[libcurl-agent/*] +Parent=Rippers +Browser="libcurl" + +[libWeb/clsHTTP*] +Parent=Rippers +Browser="libWeb/clsHTTP" + +[lwp*] +Parent=Rippers +Browser="lwp" + +[MFC_Tear_Sample] +Parent=Rippers +Browser="MFC_Tear_Sample" + +[Moozilla] +Parent=Rippers +Browser="Moozilla" + +[MovableType/*] +Parent=Rippers +Browser="MovableType Web Log" + +[Mozilla/* (compatible; OffByOne; Windows*) Webster Pro V3.*] +Parent=Rippers +Browser="OffByOne" +Version=3.0 +MajorVer=3 +MinorVer=0 + +[Mozilla/2.0 (compatible; NEWT ActiveX; Win32)] +Parent=Rippers +Browser="NEWT ActiveX" +Platform="Win32" + +[Mozilla/3.0 (compatible; Indy Library)] +Parent=Rippers +Cookies=true + +[Mozilla/4.0 (compatible; BorderManager*)] +Parent=Rippers +Browser="Novell BorderManager" + +[Mozilla/5.0 (compatible; IPCheck Server Monitor*)] +Parent=Rippers +Browser="IPCheck Server Monitor" + +[OCN-SOC/*] +Parent=Rippers +Browser="OCN-SOC" + +[Offline Explorer*] +Parent=Rippers +Browser="Offline Explorer" + +[Open Web Analytics Bot*] +Parent=Rippers +Browser="Open Web Analytics Bot" + +[OSSProxy*] +Parent=Rippers +Browser="OSSProxy" + +[Pageload*] +Parent=Rippers +Browser="PageLoad" + +[PageNest/*] +Parent=Rippers +Browser="PageNest" + +[pavuk/*] +Parent=Rippers +Browser="Pavuk" + +[PEAR HTTP_Request*] +Parent=Rippers +Browser="PEAR-PHP" + +[PHP*] +Parent=Rippers +Browser="PHP" + +[PigBlock (Windows NT 5.1; U)*] +Parent=Rippers +Browser="PigBlock" +Platform_Version=5.1 +Win32=true + +[Pockey*] +Parent=Rippers +Browser="Pockey-GetHTML" + +[POE-Component-Client-HTTP/*] +Parent=Rippers +Browser="POE-Component-Client-HTTP" + +[PycURL/*] +Parent=Rippers +Browser="PycURL" + +[Python*] +Parent=Rippers +Browser="Python" + +[RepoMonkey*] +Parent=Rippers +Browser="RepoMonkey" + +[SBL-BOT*] +Parent=Rippers +Browser="BlackWidow" + +[ScoutAbout*] +Parent=Rippers +Browser="ScoutAbout" + +[sherlock/*] +Parent=Rippers +Browser="Sherlock" + +[SiteParser/*] +Parent=Rippers +Browser="SiteParser" + +[SiteSnagger*] +Parent=Rippers +Browser="SiteSnagger" + +[SiteSucker/*] +Parent=Rippers +Browser="SiteSucker" + +[SiteWinder*] +Parent=Rippers +Browser="SiteWinder" + +[Snoopy*] +Parent=Rippers +Browser="Snoopy" + +[SOFTWING_TEAR_AGENT*] +Parent=Rippers +Browser="AspTear" + +[SuperHTTP/*] +Parent=Rippers +Browser="SuperHTTP" + +[Tcl http client package*] +Parent=Rippers +Browser="Tcl http client package" + +[Twisted PageGetter] +Parent=Rippers +Browser="Twisted PageGetter" + +[URL2File/*] +Parent=Rippers +Browser="URL2File" + +[UtilMind HTTPGet] +Parent=Rippers +Browser="UtilMind HTTPGet" + +[VCI WebViewer*] +Parent=Rippers +Browser="VCI WebViewer" + +[Web Downloader*] +Parent=Rippers +Browser="Web Downloader" + +[Web Downloader/*] +Parent=Rippers +Browser="Web Downloader" + +[Web Magnet*] +Parent=Rippers +Browser="Web Magnet" + +[WebAuto/*] +Parent=Rippers +Browser="WebAuto" + +[webbandit/*] +Parent=Rippers +Browser="webbandit" + +[WebCopier*] +Parent=Rippers +Browser="WebCopier" + +[WebDownloader*] +Parent=Rippers +Browser="WebDownloader" + +[WebFetch] +Parent=Rippers +Browser="WebFetch" + +[webfetch/*] +Parent=Rippers +Browser="WebFetch" + +[WebGatherer*] +Parent=Rippers +Browser="WebGatherer" + +[WebGet] +Parent=Rippers +Browser="WebGet" + +[WebReaper*] +Parent=Rippers +Browser="WebReaper" + +[WebRipper] +Parent=Rippers +Browser="WebRipper" + +[WebSauger*] +Parent=Rippers +Browser="WebSauger" + +[Website Downloader*] +Parent=Rippers +Browser="Website Downloader" + +[Website eXtractor*] +Parent=Rippers +Browser="Website eXtractor" + +[Website Quester] +Parent=Rippers +Browser="Website Quester" + +[WebsiteExtractor*] +Parent=Rippers +Browser="Website eXtractor" + +[WebSnatcher*] +Parent=Rippers +Browser="WebSnatcher" + +[Webster Pro*] +Parent=Rippers +Browser="Webster Pro" + +[WebStripper*] +Parent=Rippers +Browser="WebStripper" + +[WebWhacker*] +Parent=Rippers +Browser="WebWhacker" + +[WinHttp*] +Parent=Rippers +Browser="WinHttp" + +[WinScripter iNet Tools] +Parent=Rippers +Browser="WinScripter iNet Tools" + +[WWW-Mechanize/*] +Parent=Rippers +Browser="WWW-Mechanize" + +[Zend_Http_Client] +Parent=Rippers +Browser="Zend_Http_Client" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Site Monitors + +[Site Monitors] +Parent=DefaultProperties +Comment="Site Monitors" +Browser="Site Monitors" +Crawler=true + +[*EasyRider*] +Parent=Site Monitors +Browser="EasyRider" + +[*maxamine.com--robot*] +Parent=Site Monitors +Browser="maxamine.com--robot" + +[*Pingdom*] +Parent=Site Monitors +Browser="Pingdom" + +[*WebMon ?.*] +Parent=Site Monitors +Browser="WebMon" + +[Kenjin Spider*] +Parent=Site Monitors +Browser="Kenjin Spider" + +[Kevin http://*] +Parent=Site Monitors +Browser="Kevin" + +[Mozilla/4.0 (compatible; ChangeDetection/*] +Parent=Site Monitors +Browser="ChangeDetection" + +[Mozilla/4.0 (compatible; MSIE ?.0; GomezAgent ?.0; Windows NT)] +Parent=Site Monitors +Browser="Gomez Site Monitor" + +[Mozilla/5.0 (compatible; Chirp/1.0; +http://www.binarycanary.com/chirp.cfm)] +Parent=Site Monitors +Browser="BinaryCanary" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (compatible; UptimeRobot/1.0; http://www.uptimerobot.com/)] +Parent=Site Monitors +Browser="UptimeRobot" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Myst Monitor Service v*] +Parent=Site Monitors +Browser="Myst Monitor Service" + +[Net Probe] +Parent=Site Monitors +Browser="Net Probe" + +[NetMechanic*] +Parent=Site Monitors +Browser="NetMechanic" + +[NetReality*] +Parent=Site Monitors +Browser="NetReality" + +[Pingdom.com_bot_version_*_(http://www.pingdom.com/)] +Parent=Site Monitors +Browser="Pingdom" + +[Site Valet Online*] +Parent=Site Monitors +Browser="Site Valet" + +[SITECHECKER] +Parent=Site Monitors +Browser="SITECHECKER" + +[sitemonitor@dnsvr.com/*] +Parent=Site Monitors +Browser="ZoneEdit Failover Monitor" + +[UpTime Checker*] +Parent=Site Monitors +Browser="UpTime Checker" + +[URL Control*] +Parent=Site Monitors +Browser="URL Control" + +[URL_Access/*] +Parent=Site Monitors +Browser="URL_Access" + +[URLCHECK] +Parent=Site Monitors +Browser="URLCHECK" + +[URLy Warning*] +Parent=Site Monitors +Browser="URLy Warning" + +[Webcheck *] +Parent=Site Monitors +Browser="Webcheck" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[WebPatrol/*] +Parent=Site Monitors +Browser="WebPatrol" + +[websitepulse checker/*] +Parent=Site Monitors +Browser="websitepulse checker" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Social Bookmarkers + +[Social Networking] +Parent=DefaultProperties +Comment="Social Bookmarkers" +Browser="Social Bookmarkers" +Crawler=true + +[BookmarkBase(2/;http://bookmarkbase.com)] +Parent=Social Networking +Browser="BookmarkBase" + +[Cocoal.icio.us/1.0 (v43) (Mac OS X; http://www.scifihifi.com/cocoalicious)] +Parent=Social Networking +Browser="Cocoalicious" + +[Mozilla/5.0 (*) Gecko/* Firefox/2.0 OneRiot/1.0 (http://www.oneriot.com) ] +Parent=Social Networking +Browser="OneRiot" + +[Mozilla/5.0 (compatible; FriendFeedBot/0.*; +Http://friendfeed.com/about/bot)] +Parent=Social Networking +Browser="FriendFeedBot" + +[Mozilla/5.0 (compatible; Twitturls; +http://twitturls.com)] +Parent=Social Networking +Browser="Twitturls" + +[SocialSpider-Finder/0.*] +Parent=Social Networking +Browser="SocialSpider-Finder" + +[Twitturly*] +Parent=Social Networking +Browser="Twitturly" + +[WinkBot/*] +Parent=Social Networking +Browser="WinkBot" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Translators + +[Translators] +Parent=DefaultProperties +Comment="Translators" +Browser="Translators" +Frames=true +Tables=true +Crawler=true + +[Seram Server] +Parent=Translators +Browser="Seram Server" + +[TeragramWebcrawler/*] +Parent=Translators +Browser="TeragramWebcrawler" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[WebIndexer/* (Web Indexer; *)] +Parent=Translators +Browser="WorldLingo" + +[WebTrans] +Parent=Translators +Browser="WebTrans" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Version Checkers + +[Version Checkers] +Parent=DefaultProperties +Comment="Version Checkers" +Browser="Version Checkers" +Crawler=true + +[Automated Browscap.ini Updater. Gary contact me at serge@skycomp.ca with problems.] +Parent=Version Checkers +Browser="Automated Browscap Updater" + +[Automated Browscap.ini Updater. To report issues contact us at+http://www.skycomp.ca] +Parent=Version Checkers +Browser="Automated Browscap.ini Updater" + +[Browscap Mirror System/1.* (browscap.giantrealm.com)] +Parent=Version Checkers +Browser="Browscap Mirror System" + +[Browscap Mirror v1.30] +Parent=Version Checkers +Browser="Browscap Mirror" + +[Browscap updater] +Parent=Version Checkers +Browser="Browscap updater" + +[browscap updater; interval:weekly; server:rohan.doppy.nl; questions:support@doppy.nl;] +Parent=Version Checkers +Browser="browscap updater" + +[BrowscapUpdater1.0] +Parent=Version Checkers +Browser="BrowscapUpdater" + +[Browser Capabilities Project - PHP Browscap*] +Parent=Version Checkers +Browser="BCP - PHP Browscap" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Browser Capabilities Project AutoDownloader; created by Tom Kelleher Consulting, Inc. (tkelleher.com); used with special permission from Gary Joel Keith; uses Microsoft's WinHTTP component] +Parent=Version Checkers +Browser="TKC AutoDownloader" + +[Decode Framework 0.* browscap library] +Parent=Version Checkers +Browser="Decode Framework browscap library" + +[Desktop Sidebar*] +Parent=Version Checkers +Browser="Desktop Sidebar" + +[Mono Browser Capabilities Updater*] +Parent=Version Checkers +Browser="Mono Browser Capabilities Updater" + +[PHP Browser Capabilities Project/*] +Parent=Version Checkers +Browser="PHP Browser Capabilities Project" + +[UpdateBrowscap*] +Parent=Version Checkers +Browser="UpdateBrowscap" + +[WCC Browscap Updater/0.* (PHP: file_get_contents)] +Parent=Version Checkers +Browser="WCC Browscap Updater" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; W3C + +[W3C] +Parent=DefaultProperties +Comment="W3C" +Browser="W3C" +Crawler=true + +[*W3C-checklink/*] +Parent=W3C +Browser="W3C-checklink" + +[Jigsaw/* W3C_CSS_Validator*/*] +Parent=W3C +Browser="Jigsaw_W3C_CSS_Validator" + +[P3P Validator] +Parent=W3C +Browser="P3P Validator" + +[Unicorn/1.*] +Parent=W3C +Browser="W3C Unicorn" + +[W3C-mobileOK/*] +Parent=W3C +Browser="W3C-mobileOK" +Alpha=false +Beta=false +Win16=false +Win32=false +Win64=false +Frames=false +IFrames=false +Tables=false +Cookies=false +BackgroundSounds=false +JavaScript=false +VBScript=false +JavaApplets=false +ActiveXControls=false +isMobileDevice=false +isSyndicationReader=false +Crawler=true + +[W3C-mobileOK/DDC-*] +Parent=W3C +Browser="W3C-mobileOK/DDC" +isMobileDevice=true + +[W3C-WebCon/*] +Parent=W3C +Browser="W3C-WebCon" + +[W3C_Validator/*] +Parent=W3C +Browser="W3C_Validator" + +[W3CLineMode/*] +Parent=W3C +Browser="W3CLineMode" + +[W3CRobot/*] +Parent=W3C +Browser="W3CRobot" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Become + +[Become] +Parent=DefaultProperties +Comment="Become" +Browser="Become" +isSyndicationReader=true +Crawler=true + +[*BecomeBot/*] +Parent=Become +Browser="BecomeBot" + +[*BecomeBot@exava.com*] +Parent=Become +Browser="BecomeBot" + +[*Exabot@exava.com*] +Parent=Become +Browser="Exabot" + +[MonkeyCrawl/*] +Parent=Become +Browser="MonkeyCrawl" + +[Mozilla/5.0 (compatible; BecomeJPBot/2.3; *)] +Parent=Become +Browser="BecomeJPBot" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Blue Coat Systems + +[Blue Coat Systems] +Parent=DefaultProperties +Comment="Blue Coat Systems" +Browser="Blue Coat Systems" +Crawler=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FeedHub + +[FeedHub] +Parent=DefaultProperties +Comment="FeedHub" +Browser="FeedHub" +isSyndicationReader=true +Crawler=true + +[FeedHub FeedDiscovery/1.0 (http://www.feedhub.com)] +Parent=FeedHub +Browser="FeedHub FeedDiscovery" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[FeedHub FeedFetcher/1.0 (http://www.feedhub.com)] +Parent=FeedHub +Browser="FeedHub FeedFetcher" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[FeedHub MetaDataFetcher/1.0 (http://www.feedhub.com)] +Parent=FeedHub +Browser="FeedHub MetaDataFetcher" +Version=1.0 +MajorVer=1 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Internet Content Rating Association + +[Internet Content Rating Association] +Parent=DefaultProperties +Comment="Internet Content Rating Association" +Browser="" +Frames=true +Tables=true +Crawler=true + +[ICRA_label_generator/1.?] +Parent=Internet Content Rating Association +Browser="ICRA_label_generator" + +[ICRA_Semantic_spider/0.?] +Parent=Internet Content Rating Association +Browser="ICRA_Semantic_spider" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nagios + +[Nagios] +Parent=DefaultProperties +Comment="Nagios" +Browser="Nagios" +Crawler=true + +[check_http/* (nagios-plugins 1.*)] +Parent=Nagios +Version=1.0 +MajorVer=1 +MinorVer=0 + +[check_http/* (nagios-plugins 1.1.*)] +Parent=Nagios +Version=1.1 +MajorVer=1 +MinorVer=1 + +[check_http/* (nagios-plugins 1.2.*)] +Parent=Nagios +Version=1.2 +MajorVer=1 +MinorVer=2 + +[check_http/* (nagios-plugins 1.3.*)] +Parent=Nagios +Version=1.3 +MajorVer=1 +MinorVer=3 + +[check_http/* (nagios-plugins 1.4.*)] +Parent=Nagios +Version=1.4 +MajorVer=1 +MinorVer=4 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NameProtect + +[NameProtect] +Parent=DefaultProperties +Comment="NameProtect" +Browser="NameProtect" +Crawler=true + +[abot/*] +Parent=NameProtect +Browser="NameProtect" + +[NP/*] +Parent=NameProtect +Browser="NameProtect" + +[NPBot*] +Parent=NameProtect +Browser="NameProtect" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netcraft + +[Netcraft] +Parent=DefaultProperties +Comment="Netcraft" +Browser="Netcraft" +Crawler=true + +[*Netcraft Web Server Survey*] +Parent=Netcraft +Browser="Netcraft Webserver Survey" + +[Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; *info@netcraft.com)] +Parent=Netcraft +Browser="NetcraftSurveyAgent" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NewsGator + +[NewsGator] +Parent=DefaultProperties +Comment="NewsGator" +Browser="NewsGator" +isSyndicationReader=true +Crawler=true + +[MarsEdit*] +Parent=NewsGator +Browser="MarsEdit" + +[NetNewsWire*/*] +Parent=NewsGator +Browser="NetNewsWire" +Platform="MacOSX" + +[NewsFire/*] +Parent=NewsGator +Browser="NewsFire" + +[NewsGator FetchLinks extension/*] +Parent=NewsGator +Browser="NewsGator FetchLinks" + +[NewsGator/*] +Parent=NewsGator +Browser="NewsGator" + +[NewsGatorOnline/*] +Parent=NewsGator +Browser="NewsGatorOnline" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 10.0 + +[Chromium 10.0] +Parent=DefaultProperties +Comment="Chromium 10.0" +Browser="Chromium" +Version=10.0 +MajorVer=10 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/10.*Chrome/*Safari/*] +Parent=Chromium 10.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/10.*Chrome/*Safari/*] +Parent=Chromium 10.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 11.0 + +[Chromium 11.0] +Parent=DefaultProperties +Comment="Chromium 11.0" +Browser="Chromium" +Version=11.0 +MajorVer=11 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/11.*Chrome/*Safari/*] +Parent=Chromium 11.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/11.*Chrome/*Safari/*] +Parent=Chromium 11.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 12.0 + +[Chromium 12.0] +Parent=DefaultProperties +Comment="Chromium 12.0" +Browser="Chromium" +Version=12.0 +MajorVer=12 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/12.*Chrome/*Safari/*] +Parent=Chromium 12.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/12.*Chrome/*Safari/*] +Parent=Chromium 12.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 13.0 + +[Chromium 13.0] +Parent=DefaultProperties +Comment="Chromium 13.0" +Browser="Chromium" +Version=13.0 +MajorVer=13 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/13.*Chrome/*Safari/*] +Parent=Chromium 13.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/13.*Chrome/*Safari/*] +Parent=Chromium 13.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 14.0 + +[Chromium 14.0] +Parent=DefaultProperties +Comment="Chromium 14.0" +Browser="Chromium" +Version=14.0 +MajorVer=14 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/14.*Chrome/*Safari/*] +Parent=Chromium 14.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/14.*Chrome/*Safari/*] +Parent=Chromium 14.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 15.0 + +[Chromium 15.0] +Parent=DefaultProperties +Comment="Chromium 15.0" +Browser="Chromium" +Version=15.0 +MajorVer=15 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/15.*Chrome/*Safari/*] +Parent=Chromium 15.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/15.*Chrome/*Safari/*] +Parent=Chromium 15.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 16.0 + +[Chromium 16.0] +Parent=DefaultProperties +Comment="Chromium 16.0" +Browser="Chromium" +Version=16.0 +MajorVer=16 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/16.*Chrome/*Safari/*] +Parent=Chromium 16.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/16.*Chrome/*Safari/*] +Parent=Chromium 16.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 17.0 + +[Chromium 17.0] +Parent=DefaultProperties +Comment="Chromium 17.0" +Browser="Chromium" +Version=17.0 +MajorVer=17 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/17.*Chrome/*Safari/*] +Parent=Chromium 17.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/17.*Chrome/*Safari/*] +Parent=Chromium 17.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 18.0 + +[Chromium 18.0] +Parent=DefaultProperties +Comment="Chromium 18.0" +Browser="Chromium" +Version=18.0 +MajorVer=18 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/18.*Chrome/*Safari/*] +Parent=Chromium 18.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/18.*Chrome/*Safari/*] +Parent=Chromium 18.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 19.0 + +[Chromium 19.0] +Parent=DefaultProperties +Comment="Chromium 19.0" +Browser="Chromium" +Version=19.0 +MajorVer=19 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/19.*Chrome/*Safari/*] +Parent=Chromium 19.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/19.*Chrome/*Safari/*] +Parent=Chromium 19.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 20.0 + +[Chromium 20.0] +Parent=DefaultProperties +Comment="Chromium 20.0" +Browser="Chromium" +Version=20.0 +MajorVer=20 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/20.*Chrome/*Safari/*] +Parent=Chromium 20.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/20.*Chrome/*Safari/*] +Parent=Chromium 20.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 21.0 + +[Chromium 21.0] +Parent=DefaultProperties +Comment="Chromium 21.0" +Browser="Chromium" +Version=21.0 +MajorVer=21 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/21.*Chrome/*Safari/*] +Parent=Chromium 21.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/21.*Chrome/*Safari/*] +Parent=Chromium 21.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 22.0 + +[Chromium 22.0] +Parent=DefaultProperties +Comment="Chromium 22.0" +Browser="Chromium" +Version=22.0 +MajorVer=22 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/22.*Chrome/*Safari/*] +Parent=Chromium 22.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/22.*Chrome/*Safari/*] +Parent=Chromium 22.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 6.0 + +[Chromium 6.0] +Parent=DefaultProperties +Comment="Chromium 6.0" +Browser="Chromium" +Version=6.0 +MajorVer=6 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/6.*Chrome/*Safari/*] +Parent=Chromium 6.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/6.*Chrome/*Safari/*] +Parent=Chromium 6.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 7.0 + +[Chromium 7.0] +Parent=DefaultProperties +Comment="Chromium 7.0" +Browser="Chromium" +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/7.*Chrome/*Safari/*] +Parent=Chromium 7.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/7.*Chrome/*Safari/*] +Parent=Chromium 7.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 8.0 + +[Chromium 8.0] +Parent=DefaultProperties +Comment="Chromium 8.0" +Browser="Chromium" +Version=8.0 +MajorVer=8 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/8.*Chrome/*Safari/*] +Parent=Chromium 8.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/8.*Chrome/*Safari/*] +Parent=Chromium 8.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium 9.0 + +[Chromium 9.0] +Parent=DefaultProperties +Comment="Chromium 9.0" +Browser="Chromium" +Version=9.0 +MajorVer=9 +MinorVer=0 +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/9.*Chrome/*Safari/*] +Parent=Chromium 9.0 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/9.*Chrome/*Safari/*] +Parent=Chromium 9.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chromium Generic + +[Chromium Generic] +Parent=DefaultProperties +Comment="Chromium Generic" +Browser="Chromium" +Platform="Linux" +CssVersion=1 + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chromium/*Chrome/*Safari/*] +Parent=Chromium Generic + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chromium/*Chrome/*Safari/*] +Parent=Chromium Generic + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 10.0 + +[Chrome 10.0] +Parent=DefaultProperties +Comment="Chrome 10.0" +Browser="Chrome" +Version=10.0 +MajorVer=10 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/10.*Safari/*] +Parent=Chrome 10.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 11.0 + +[Chrome 11.0] +Parent=DefaultProperties +Comment="Chrome 11.0" +Browser="Chrome" +Version=11.0 +MajorVer=11 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/11.*Safari/*] +Parent=Chrome 11.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 12.0 + +[Chrome 12.0] +Parent=DefaultProperties +Comment="Chrome 12.0" +Browser="Chrome" +Version=12.0 +MajorVer=12 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/12.*Safari/*] +Parent=Chrome 12.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 13.0 + +[Chrome 13.0] +Parent=DefaultProperties +Comment="Chrome 13.0" +Browser="Chrome" +Version=13.0 +MajorVer=13 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/13.*Safari/*] +Parent=Chrome 13.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 14.0 + +[Chrome 14.0] +Parent=DefaultProperties +Comment="Chrome 14.0" +Browser="Chrome" +Version=14.0 +MajorVer=14 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/14.*Safari/*] +Parent=Chrome 14.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 15.0 + +[Chrome 15.0] +Parent=DefaultProperties +Comment="Chrome 15.0" +Browser="Chrome" +Version=15.0 +MajorVer=15 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/15.*Safari/*] +Parent=Chrome 15.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 16.0 + +[Chrome 16.0] +Parent=DefaultProperties +Comment="Chrome 16.0" +Browser="Chrome" +Version=16.0 +MajorVer=16 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/16.*Safari/*] +Parent=Chrome 16.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*CrMo/16.0*Safari/*] +Parent=Chrome 16.0 +Platform="Android" +Platform_Version=4.0 +isMobileDevice=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 17.0 + +[Chrome 17.0] +Parent=DefaultProperties +Comment="Chrome 17.0" +Browser="Chrome" +Version=17.0 +MajorVer=17 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/17.*Safari/*] +Parent=Chrome 17.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 18.0 + +[Chrome 18.0] +Parent=DefaultProperties +Comment="Chrome 18.0" +Browser="Chrome" +Version=18.0 +MajorVer=18 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=1.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=1.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=1.5 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=1.6 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=2.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=2.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=2.2 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=2.3 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=4.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/18.*Safari/*] +Parent=Chrome 18.0 +Platform="Android" +Platform_Version=4.1 +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 19.0 + +[Chrome 19.0] +Parent=DefaultProperties +Comment="Chrome 19.0" +Browser="Chrome" +Version=19.0 +MajorVer=19 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=1.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=1.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=1.5 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=1.6 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=2.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=2.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=2.2 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=2.3 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=4.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/19.*Safari/*] +Parent=Chrome 19.0 +Platform="Android" +Platform_Version=4.1 +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 20.0 + +[Chrome 20.0] +Parent=DefaultProperties +Comment="Chrome 20.0" +Browser="Chrome" +Version=20.0 +MajorVer=20 +MinorVer=0 +Beta=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=1.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=1.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=1.5 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=1.6 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=2.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=2.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=2.2 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=2.3 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=4.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/20.*Safari/*] +Parent=Chrome 20.0 +Platform="Android" +Platform_Version=4.1 +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 21.0 + +[Chrome 21.0] +Parent=DefaultProperties +Comment="Chrome 21.0" +Browser="Chrome" +Version=21.0 +MajorVer=21 +MinorVer=0 +Alpha=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=1.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=1.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=1.5 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=1.6 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=2.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=2.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=2.2 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=2.3 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=4.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/21.*Safari/*] +Parent=Chrome 21.0 +Platform="Android" +Platform_Version=4.1 +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 22.0 + +[Chrome 22.0] +Parent=DefaultProperties +Comment="Chrome 22.0" +Browser="Chrome" +Version=22.0 +MajorVer=22 +MinorVer=0 +Alpha=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Win8" +Platform_Version=6.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=1.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=1.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=1.5 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=1.6 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=2.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=2.1 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=2.2 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=2.3 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=4.0 +Win32=false +isMobileDevice=true + +[Mozilla/5.0 (Linux*Android 4.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Chrome/22.*Safari/*] +Parent=Chrome 22.0 +Platform="Android" +Platform_Version=4.1 +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 6.0 + +[Chrome 6.0] +Parent=DefaultProperties +Comment="Chrome 6.0" +Browser="Chrome" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/6.*Safari/*] +Parent=Chrome 6.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 7.0 + +[Chrome 7.0] +Parent=DefaultProperties +Comment="Chrome 7.0" +Browser="Chrome" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/7.*Safari/*] +Parent=Chrome 7.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 8.0 + +[Chrome 8.0] +Parent=DefaultProperties +Comment="Chrome 8.0" +Browser="Chrome" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/8.*Safari/*] +Parent=Chrome 8.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 9.0 + +[Chrome 9.0] +Parent=DefaultProperties +Comment="Chrome 9.0" +Browser="Chrome" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/9.*Safari/*] +Parent=Chrome 9.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome Generic + +[Chrome Generic] +Parent=DefaultProperties +Comment="Chrome Generic" +Browser="Chrome" +CssVersion=1 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="MacOSX" + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="Linux" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="Linux" + +[Mozilla/5.0 (*Windows NT 4.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*) AppleWebKit/* (KHTML, like Gecko)*Chrome/*Safari/*] +Parent=Chrome Generic +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google Code + +[Google Code] +Parent=DefaultProperties +Comment="Google Code" +Browser="Google Code" + +[Mozilla/5.0 (Windows; U; *) AppleWebKit/* (KHTML, like Gecko, Safari/*) Arora/0.6*] +Parent=Google Code +Browser="Arora" +Version=0.6 +MajorVer=0 +MinorVer=6 +Platform="Win32" + +[Mozilla/5.0 (Windows; U; *) AppleWebKit/* (KHTML, like Gecko, Safari/*) Arora/0.8.*] +Parent=Google Code +Browser="Arora" +Version=0.8.0 +MajorVer=0 +MinorVer=8.0 +Platform="Win32" + +[Mozilla/5.0 (X11; U; Linux; *) AppleWebKit/* (KHTML, like Gecko, Safari/*) Arora/0.6*] +Parent=Google Code +Browser="Arora" +Version=0.6 +MajorVer=0 +MinorVer=6 +Platform="Linux" + +[Mozilla/5.0 (X11; U; Linux; *) AppleWebKit/* (KHTML, like Gecko, Safari/*) Arora/0.8.*] +Parent=Google Code +Browser="Arora" +Version=0.8.0 +MajorVer=0 +MinorVer=8.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 10.0 + +[Iron 10.0] +Parent=DefaultProperties +Comment="Iron 10.0" +Browser="Iron" +Version=10.0 +MajorVer=10 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/10.* Safari/*] +Parent=Iron 10.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 11.0 + +[Iron 11.0] +Parent=DefaultProperties +Comment="Iron 11.0" +Browser="Iron" +Version=11.0 +MajorVer=11 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/11.* Safari/*] +Parent=Iron 11.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 12.0 + +[Iron 12.0] +Parent=DefaultProperties +Comment="Iron 12.0" +Browser="Iron" +Version=12.0 +MajorVer=12 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +VBScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/12.* Safari/*] +Parent=Iron 12.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 13.0 + +[Iron 13.0] +Parent=DefaultProperties +Comment="Iron 13.0" +Browser="Iron" +Version=13.0 +MajorVer=13 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +VBScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/13.* Safari/*] +Parent=Iron 13.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 14.0 + +[Iron 14.0] +Parent=DefaultProperties +Comment="Iron 14.0" +Browser="Iron" +Version=14.0 +MajorVer=14 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +VBScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/14.* Safari/*] +Parent=Iron 14.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 15.0 + +[Iron 15.0] +Parent=DefaultProperties +Comment="Iron 15.0" +Browser="Iron" +Version=15.0 +MajorVer=15 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +VBScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/15.* Safari/*] +Parent=Iron 15.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 16.0 + +[Iron 16.0] +Parent=DefaultProperties +Comment="Iron 16.0" +Browser="Iron" +Version=16.0 +MajorVer=16 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/16.* Safari/*] +Parent=Iron 16.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 17.0 + +[Iron 17.0] +Parent=DefaultProperties +Comment="Iron 17.0" +Browser="Iron" +Version=17.0 +MajorVer=17 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/17.* Safari/*] +Parent=Iron 17.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 18.0 + +[Iron 18.0] +Parent=DefaultProperties +Comment="Iron 18.0" +Browser="Iron" +Version=18.0 +MajorVer=18 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/18.* Safari/*] +Parent=Iron 18.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 19.0 + +[Iron 19.0] +Parent=DefaultProperties +Comment="Iron 19.0" +Browser="Iron" +Version=19.0 +MajorVer=19 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/19.* Safari/*] +Parent=Iron 19.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 6.0 + +[Iron 6.0] +Parent=DefaultProperties +Comment="Iron 6.0" +Browser="Iron" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/6.* Safari/*] +Parent=Iron 6.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 7.0 + +[Iron 7.0] +Parent=DefaultProperties +Comment="Iron 7.0" +Browser="Iron" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/7.* Safari/*] +Parent=Iron 7.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 8.0 + +[Iron 8.0] +Parent=DefaultProperties +Comment="Iron 8.0" +Browser="Iron" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/8.* Safari/*] +Parent=Iron 8.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 9.0 + +[Iron 9.0] +Parent=DefaultProperties +Comment="Iron 9.0" +Browser="Iron" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/9.* Safari/*] +Parent=Iron 9.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron Generic + +[Iron Generic] +Parent=DefaultProperties +Comment="Iron Generic" +Browser="Iron" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=1 + +[Mozilla/5.0 (*Intel Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Linux i686*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Iron/* Safari/*] +Parent=Iron Generic +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RockMelt + +[Rockmelt] +Parent=DefaultProperties +Comment="RockMelt" +Browser="RockMelt" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10*; *) AppleWebKit/* (KHTML, like Gecko) RockMelt/* Chrome/* Safari/*] +Parent=Rockmelt +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) RockMelt/* Chrome/* Safari/*] +Parent=Rockmelt +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) RockMelt/* Chrome/* Safari/*] +Parent=Rockmelt +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *) AppleWebKit/* (KHTML, like Gecko) RockMelt/* Chrome/* Safari/*] +Parent=Rockmelt +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Arora 0.10 + +[Arora 0.10] +Parent=DefaultProperties +Comment="Arora 0.10" +Browser="Arora" +Version=0.10 +MajorVer=0 +MinorVer=10 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.10*] +Parent=Arora 0.10 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Arora 0.11 + +[Arora 0.11] +Parent=DefaultProperties +Comment="Arora 0.11" +Browser="Arora" +Version=0.11 +MajorVer=0 +MinorVer=11 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.11*] +Parent=Arora 0.11 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Arora 0.8 + +[Arora 0.8] +Parent=DefaultProperties +Comment="Arora 0.8" +Browser="Arora" +Version=0.8 +MajorVer=0 +MinorVer=8 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.8*] +Parent=Arora 0.8 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Arora 0.9 + +[Arora 0.9] +Parent=DefaultProperties +Comment="Arora 0.9" +Browser="Arora" +Version=0.9 +MajorVer=0 +MinorVer=9 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.9*] +Parent=Arora 0.9 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Arora Generic + +[Arora Generic] +Parent=DefaultProperties +Comment="Arora Generic" +Browser="Arora" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=3 + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Arora/0.?*] +Parent=Arora Generic +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Media Players + +[Media Players] +Parent=DefaultProperties +Comment="Media Players" +Browser="Media Players" +isMobileDevice=true + +[Microsoft NetShow(TM) Player with RealVideo(R)] +Parent=Media Players +Browser="Microsoft NetShow" + +[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; *) AppleWebKit/* RealPlayer] +Parent=Media Players +Browser="RealPlayer" +Platform="MacOSX" + +[MPlayer 0.9*] +Parent=Media Players +Browser="MPlayer" +Version=0.9 +MajorVer=0 +MinorVer=9 + +[MPlayer 1.*] +Parent=Media Players +Browser="MPlayer" +Version=1.0 +MajorVer=1 +MinorVer=0 + +[MPlayer HEAD CVS] +Parent=Media Players +Browser="MPlayer" + +[RealPlayer*] +Parent=Media Players +Browser="RealPlayer" + +[RMA/*] +Parent=Media Players +Browser="RMA" + +[VLC media player*] +Parent=Media Players +Browser="VLC" + +[vobsub] +Parent=Media Players +Browser="vobsub" + +[WinampMPEG/*] +Parent=Media Players +Browser="WinAmp" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Microsoft Zune + +[Microsoft Zune] +Parent=DefaultProperties +Comment="Microsoft Zune" +Browser="" +Win32=true +isMobileDevice=true + +[Mozilla/4.0 (compatible; MSIE ?.0; Microsoft ZuneHD 4.*)] +Parent=Microsoft Zune +Version=4.0 +MajorVer=4 +MinorVer=0 + +[Mozilla/4.0 (compatible; ZuneHD 4.*)] +Parent=Microsoft Zune +Browser="ZuneHD" +Version=4 +MajorVer=4 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nintendo + +[Nintendo Wii] +Parent=DefaultProperties +Comment="Nintendo" +Browser="" +isMobileDevice=true + +[Opera/* (Nintendo DSi; Opera/*; *; *)] +Parent=Nintendo Wii +Browser="DSi" + +[Opera/* (Nintendo Wii; U; *)] +Parent=Nintendo Wii +Browser="Wii" + +[VLC Media Player] +Parent=DefaultProperties +Browser="VLC Media Player" + +[vlc/*] +Parent=VLC Media Player + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Windows Media Player + +[Windows Media Player] +Parent=DefaultProperties +Comment="Windows Media Player" +Browser="Windows Media Player" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[NSPlayer/10.*] +Parent=Windows Media Player +Version=10.0 +MajorVer=10 +MinorVer=0 + +[NSPlayer/11.*] +Parent=Windows Media Player +Version=11.0 +MajorVer=11 +MinorVer=0 + +[NSPlayer/4.*] +Parent=Windows Media Player +Version=4.0 +MajorVer=4 +MinorVer=0 + +[NSPlayer/7.*] +Parent=Windows Media Player +Version=7.0 +MajorVer=7 +MinorVer=0 + +[NSPlayer/8.*] +Parent=Windows Media Player +Version=8.0 +MajorVer=8 +MinorVer=0 + +[NSPlayer/9.*] +Parent=Windows Media Player +Version=9.0 +MajorVer=9 +MinorVer=0 + +[Windows-Media-Player/10.*] +Parent=Windows Media Player +Version=10.0 +MajorVer=10 +MinorVer=0 + +[Windows-Media-Player/11.*] +Parent=Windows Media Player +Version=11.0 +MajorVer=11 +MinorVer=0 + +[Windows-Media-Player/7.*] +Parent=Windows Media Player +Version=7.0 +MajorVer=7 +MinorVer=0 + +[Windows-Media-Player/8.*] +Parent=Windows Media Player +Version=8.0 +MajorVer=8 +MinorVer=0 + +[Windows-Media-Player/9.*] +Parent=Windows Media Player +Version=9.0 +MajorVer=9 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 10.0 + +[QuickTime 10.0] +Parent=DefaultProperties +Comment="QuickTime 10.0" +Browser="QuickTime" +Version=10.0 +MajorVer=10 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[QuickTime*(qtver=10.*os=Mac 10.*)] +Parent=QuickTime 10.0 +Platform="MacOSX" +Win32=false + +[QuickTime*(qtver=10.*os=Mac 9.*)] +Parent=QuickTime 10.0 +Platform="MacPPC" +Win32=false + +[QuickTime*(qtver=10.*os=Windows 95*)] +Parent=QuickTime 10.0 +Platform="Win95" +Platform_Version=95 + +[QuickTime*(qtver=10.*os=Windows 98*)] +Parent=QuickTime 10.0 +Platform="Win98" +Platform_Version=98 + +[QuickTime*(qtver=10.*os=Windows Me*)] +Parent=QuickTime 10.0 +Platform="WinME" + +[QuickTime*(qtver=10.*os=Windows NT 4.0*)] +Parent=QuickTime 10.0 +Platform="WinNT" +Platform_Version=4.0 + +[QuickTime*(qtver=10.*os=Windows NT 5.0*)] +Parent=QuickTime 10.0 +Platform="Win2000" +Platform_Version=5.0 + +[QuickTime*(qtver=10.*os=Windows NT 5.1*)] +Parent=QuickTime 10.0 +Platform="WinXP" +Platform_Version=5.1 + +[QuickTime*(qtver=10.*os=Windows NT 5.2*)] +Parent=QuickTime 10.0 +Platform="WinXP" +Platform_Version=5.2 + +[QuickTime*(qtver=10.*os=Windows NT 6.0*)] +Parent=QuickTime 10.0 +Platform="WinVista" +Platform_Version=6.0 + +[QuickTime*(qtver=10.*os=Windows NT 6.1*)] +Parent=QuickTime 10.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 5.0 + +[QuickTime 5.0] +Parent=DefaultProperties +Comment="QuickTime 5.0" +Browser="QuickTime" +Version=5.0 +MajorVer=5 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[QuickTime*(qtver=5.*os=Mac 10.*)] +Parent=QuickTime 5.0 +Platform="MacOSX" +Win32=false + +[QuickTime*(qtver=5.*os=Mac 9.*)] +Parent=QuickTime 5.0 +Platform="MacPPC" +Win32=false + +[QuickTime*(qtver=5.*os=Windows 95*)] +Parent=QuickTime 5.0 +Platform="Win95" +Platform_Version=95 + +[QuickTime*(qtver=5.*os=Windows 98*)] +Parent=QuickTime 5.0 +Platform="Win98" +Platform_Version=98 + +[QuickTime*(qtver=5.*os=Windows Me*)] +Parent=QuickTime 5.0 +Platform="WinME" + +[QuickTime*(qtver=5.*os=Windows NT 4.0*)] +Parent=QuickTime 5.0 +Platform="WinNT" +Platform_Version=4.0 + +[QuickTime*(qtver=5.*os=Windows NT 5.0*)] +Parent=QuickTime 5.0 +Platform="Win2000" +Platform_Version=5.0 + +[QuickTime*(qtver=5.*os=Windows NT 5.1*)] +Parent=QuickTime 5.0 +Platform="WinXP" +Platform_Version=5.1 + +[QuickTime*(qtver=5.*os=Windows NT 5.2*)] +Parent=QuickTime 5.0 +Platform="WinXP" +Platform_Version=5.2 + +[QuickTime*(qtver=5.*os=Windows NT 6.0*)] +Parent=QuickTime 5.0 +Platform="WinVista" +Platform_Version=6.0 + +[QuickTime*(qtver=5.*os=Windows NT 6.1*)] +Parent=QuickTime 5.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 6.0 + +[QuickTime 6.0] +Parent=DefaultProperties +Comment="QuickTime 6.0" +Browser="QuickTime" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[QuickTime*(qtver=6.*os=Mac 10.*)] +Parent=QuickTime 6.0 +Platform="MacOSX" +Win32=false + +[QuickTime*(qtver=6.*os=Mac 9.*)] +Parent=QuickTime 6.0 +Platform="MacPPC" +Win32=false + +[QuickTime*(qtver=6.*os=Windows 95*)] +Parent=QuickTime 6.0 +Platform="Win95" +Platform_Version=95 + +[QuickTime*(qtver=6.*os=Windows 98*)] +Parent=QuickTime 6.0 +Platform="Win98" +Platform_Version=98 + +[QuickTime*(qtver=6.*os=Windows Me*)] +Parent=QuickTime 6.0 +Platform="WinME" + +[QuickTime*(qtver=6.*os=Windows NT 4.0*)] +Parent=QuickTime 6.0 +Platform="WinNT" +Platform_Version=4.0 + +[QuickTime*(qtver=6.*os=Windows NT 5.0*)] +Parent=QuickTime 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[QuickTime*(qtver=6.*os=Windows NT 5.1*)] +Parent=QuickTime 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[QuickTime*(qtver=6.*os=Windows NT 5.2*)] +Parent=QuickTime 6.0 +Platform="WinXP" +Platform_Version=5.2 + +[QuickTime*(qtver=6.*os=Windows NT 6.0*)] +Parent=QuickTime 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[QuickTime*(qtver=6.*os=Windows NT 6.1*)] +Parent=QuickTime 6.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.0 + +[QuickTime 7.0] +Parent=DefaultProperties +Comment="QuickTime 7.0" +Browser="QuickTime" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[QuickTime*(qtver=7.*;os=Windows 98*)] +Parent=QuickTime 7.0 +Platform="Win98" +Platform_Version=98 + +[QuickTime*(qtver=7.*;os=Windows Me*)] +Parent=QuickTime 7.0 +Platform="WinME" + +[QuickTime*(qtver=7.*;os=Windows NT 4.0*)] +Parent=QuickTime 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[QuickTime*(qtver=7.*;os=Windows NT 5.0*)] +Parent=QuickTime 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[QuickTime*(qtver=7.*;os=Windows NT 5.1*)] +Parent=QuickTime 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[QuickTime*(qtver=7.*;os=Windows NT 5.2*)] +Parent=QuickTime 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[QuickTime*(qtver=7.*;os=Windows NT 6.0*)] +Parent=QuickTime 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[QuickTime*(qtver=7.*;os=Windows NT 6.1*)] +Parent=QuickTime 7.0 +Platform="Win7" +Platform_Version=6.1 + +[QuickTime*(qtver=7.*os=Mac 10.*)] +Parent=QuickTime 7.0 +Platform="MacOSX" +Win32=false + +[QuickTime*(qtver=7.*os=Mac 9.*)] +Parent=QuickTime 7.0 +Platform="MacPPC" +Win32=false + +[QuickTime*(qtver=7.*os=Windows 95*)] +Parent=QuickTime 7.0 +Platform="Win95" +Platform_Version=95 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.6 + +[QuickTime 7.6] +Parent=DefaultProperties +Comment="QuickTime 7.6" +Browser="QuickTime" +Version=7.6 +MajorVer=7 +MinorVer=6 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[QuickTime*(qtver=7.6*;os=Mac 9.*)] +Parent=QuickTime 7.6 +Platform="MacPPC" +Win32=false + +[QuickTime*(qtver=7.6*;os=Windows 95*)] +Parent=QuickTime 7.6 +Platform="Win95" +Platform_Version=95 + +[QuickTime*(qtver=7.6*;os=Windows 98*)] +Parent=QuickTime 7.6 +Platform="Win98" +Platform_Version=98 + +[QuickTime*(qtver=7.6*;os=Windows Me*)] +Parent=QuickTime 7.6 +Platform="WinME" + +[QuickTime*(qtver=7.6*;os=Windows NT 4.0*)] +Parent=QuickTime 7.6 +Platform="WinNT" +Platform_Version=4.0 + +[QuickTime*(qtver=7.6*;os=Windows NT 5.0*)] +Parent=QuickTime 7.6 +Platform="Win2000" +Platform_Version=5.0 + +[QuickTime*(qtver=7.6*;os=Windows NT 5.1*)] +Parent=QuickTime 7.6 +Platform="WinXP" +Platform_Version=5.1 + +[QuickTime*(qtver=7.6*;os=Windows NT 5.2*)] +Parent=QuickTime 7.6 +Platform="WinXP" +Platform_Version=5.2 + +[QuickTime*(qtver=7.6*;os=Windows NT 6.0*)] +Parent=QuickTime 7.6 +Platform="WinVista" +Platform_Version=6.0 + +[QuickTime*(qtver=7.6*;os=Windows NT 6.1*)] +Parent=QuickTime 7.6 +Platform="Win7" +Platform_Version=6.1 + +[QuickTime*(qtver=7.6*os=Mac 10.*)] +Parent=QuickTime 7.6 +Platform="MacOSX" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lotus Notes 5.0 + +[Lotus Notes 5.0] +Parent=DefaultProperties +Comment="Lotus Notes 5.0" +Browser="Lotus Notes" +Version=5.0 +MajorVer=5 +MinorVer=0 + +[Mozilla/4.0 (compatible; Lotus-Notes/5.0; Macintosh PPC)] +Parent=Lotus Notes 5.0 +Platform="MacOSX" + +[Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)] +Parent=Lotus Notes 5.0 +Platform="WinNT" +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lotus Notes 6.0 + +[Lotus Notes 6.0] +Parent=DefaultProperties +Comment="Lotus Notes 6.0" +Browser="Lotus Notes" +Version=6.0 +MajorVer=6 +MinorVer=0 + +[Mozilla/4.0 (compatible; Lotus-Notes/6.0; Windows-NT)] +Parent=Lotus Notes 6.0 +Platform="WinNT" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Microsoft Outlook 2007 + +[Microsoft Outlook 2007] +Parent=DefaultProperties +Comment="Microsoft Outlook 2007" +Browser="Microsoft Outlook" +Version=2007 +MajorVer=2007 +Frames=true +Tables=true +CssVersion=2 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="WinNT" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; *MSOffice 12)] +Parent=Microsoft Outlook 2007 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Microsoft Outlook 2010 + +[Microsoft Outlook 2010] +Parent=DefaultProperties +Comment="Microsoft Outlook 2010" +Browser="Microsoft Outlook" +Version=2010 +MajorVer=2010 +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +CssVersion=2 + +[Microsoft Office/14.0 (Windows NT 5.1; Microsoft Outlook 14.*; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="WinXP" +Platform_Version=5.1 + +[Microsoft Office/14.0 (Windows NT 6.1; Microsoft Outlook 14.*; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; *MSOffice 14)] +Parent=Microsoft Outlook 2010 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Windows Live Mail + +[Windows Live Mail] +Parent=DefaultProperties +Comment="Windows Live Mail" +Browser="Windows Live Mail" +Version=7.0 +MajorVer=7 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +CssVersion=2 + +[Outlook-Express/7.0 (MSIE 7.0; Windows NT 5.1; Trident/4.0; *)] +Parent=Windows Live Mail +Platform="WinXP" +Platform_Version=5.1 + +[Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; Trident/4.0; *)] +Parent=Windows Live Mail +Platform="Win7" +Platform_Version=6.1 + +[Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; *)] +Parent=Windows Live Mail +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Handspring Blazer + +[Blazer] +Parent=DefaultProperties +Comment="Handspring Blazer" +Browser="Handspring Blazer" +Platform="Palm" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 95; PalmSource; Blazer 3.0) 16;160x160] +Parent=Blazer +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.0) 16;320x448] +Parent=Blazer +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.1) 16;320x320] +Parent=Blazer +Version=4.1 +MajorVer=4 +MinorVer=1 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.2) 16;320x320] +Parent=Blazer +Version=4.2 +MajorVer=4 +MinorVer=2 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.4) 16;320x320] +Parent=Blazer +Version=4.4 +MajorVer=4 +MinorVer=4 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.5) 16;320x320] +Parent=Blazer +Version=4.5 +MajorVer=4 +MinorVer=5 +Platform_Version=98 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Brew + +[Brew] +Parent=DefaultProperties +Comment="Brew" +Browser="Brew" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[*-*/1.0 BREW/2.0* Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1] +Parent=Brew +Version=2.0 +MajorVer=2 +MinorVer=0 +CssVersion=1 + +[*-*/1.0 BREW/2.1* Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1] +Parent=Brew +Version=2.1 +MajorVer=2 +MinorVer=1 +CssVersion=1 + +[*-*/1.0 BREW/3.0* Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1] +Parent=Brew +Version=3.0 +MajorVer=3 +MinorVer=0 +CssVersion=1 + +[*-*/1.0 BREW/3.1* Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1] +Parent=Brew +Version=3.1 +MajorVer=3 +MinorVer=1 +CssVersion=1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DoCoMo + +[DoCoMo] +Parent=DefaultProperties +Comment="DoCoMo" +Browser="DoCoMo" +Platform="DoCoMo" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +Crawler=true +CssVersion=1 + +[DoCoMo/1.0*] +Parent=DoCoMo +Version=1.0 +MajorVer=1 +MinorVer=0 + +[DoCoMo/2.0*] +Parent=DoCoMo +Version=2.0 +MajorVer=2 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IEMobile + +[IEMobile] +Parent=DefaultProperties +Comment="IEMobile" +Browser="IEMobile" +Platform="WinCE" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.*)*] +Parent=IEMobile +Version=6.0 +MajorVer=6 +MinorVer=0 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.*)*] +Parent=IEMobile +Version=7.0 +MajorVer=7 +MinorVer=0 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.*)*] +Parent=IEMobile +Version=8.0 +MajorVer=8 +MinorVer=0 + +[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5 HTC_HD2/1.0)] +Parent=IEMobile +Version=6.0 +MajorVer=6 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0*)*] +Parent=IEMobile +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="WinPhone7" + +[Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0*)*] +Parent=IEMobile +Version=9.0 +MajorVer=9 +MinorVer=0 +Platform="WinPhone7" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KDDI + +[KDDI] +Parent=DefaultProperties +Comment="KDDI" +Browser="KDDI" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[KDDI-* UP.Browser/* (GUI) MMP/*] +Parent=KDDI + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Kindle + +[Kindle] +Parent=DefaultProperties +Comment="Kindle" +Browser="Kindle" +Platform="Android" +Frames=true +IFrames=true +Tables=true +Cookies=true +isMobileDevice=true +CssVersion=2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Kindle Fire + +[Mozilla/5.0 (Linux; U; Android 2.3*Kindle Fire*) AppleWebKit/533.1 (*KHTML, like Gecko*) Version/4.0 Mobile Safari/533.1] +Parent=Kindle +Comment="Kindle Fire" +Browser="Kindle Fire" +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform_Version=2.3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Maemo Browser + +[Maemo] +Parent=DefaultProperties +Comment="Maemo Browser" +Browser="Maemo" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.9.*) Gecko/* Firefox/* Maemo Browser 1.7.*] +Parent=Maemo +Version=1.7 +MajorVer=1 +MinorVer=7 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Motorola Internet Browser + +[Motorola Internet Browser] +Parent=DefaultProperties +Comment="Motorola Internet Browser" +Browser="Motorola Internet Browser" +Frames=true +IFrames=true +Tables=true +Cookies=true +isMobileDevice=true + +[MOT-*/*] +Parent=Motorola Internet Browser + +[MOT-1*/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-8700_/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-A-0A/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-A-2B/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-A-88/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-C???/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-GATW_/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-L6/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-L7/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-M*/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-MP*/* Mozilla/* (compatible; MSIE *; Windows CE; *)] +Parent=Motorola Internet Browser +Win32=true + +[MOT-MP*/* Mozilla/4.0 (compatible; MSIE *; Windows CE; *)] +Parent=Motorola Internet Browser +Win32=true + +[MOT-SAP4_/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-T*/*] +Parent=Motorola Internet Browser + +[MOT-T7*/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-T721*] +Parent=Motorola Internet Browser + +[MOT-TA02/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-V*/*] +Parent=Motorola Internet Browser + +[MOT-V*/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-V*/* UP.Browser/*] +Parent=Motorola Internet Browser + +[MOT-V3/* MIB/*] +Parent=Motorola Internet Browser + +[MOT-V4*/* MIB/*] +Parent=Motorola Internet Browser + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nokia + +[Nokia] +Parent=DefaultProperties +Comment="Nokia" +Browser="Nokia" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[*Nokia*/*] +Parent=Nokia + +[Mozilla/* (SymbianOS/*; ?; *) AppleWebKit/* (KHTML, like Gecko) Safari/*] +Parent=Nokia +Platform="SymbianOS" + +[Mozilla/5.0 (SymbianOS/9.4; Series60/* NokiaC6-00/*; Profile/MIDP-* Configuration/CLDC-*) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.2.*] +Parent=Nokia +Browser="BrowserNG" +Version=7.2 +MajorVer=7 +MinorVer=2 +Platform="SymbianOS" +Platform_Version=9.4 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Openwave Mobile Browser + +[Openwave Mobile Browser] +Parent=DefaultProperties +Comment="Openwave Mobile Browser" +Browser="Openwave Mobile Browser" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[*UP.Browser/*] +Parent=Openwave Mobile Browser + +[*UP.Link/*] +Parent=Openwave Mobile Browser + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Palm Web + +[Palm Web] +Parent=DefaultProperties +Comment="Palm Web" +Browser="Palm Web" +Platform="webOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[Mozilla/5.0 (*webOS*) AppleWebKit/* (KHTML, like Gecko) *Version/1.* *Safari/* *Pixi/1.*] +Parent=Palm Web +Version=1.0 +MajorVer=1 +MinorVer=0 +CssVersion=2 + +[Mozilla/5.0 (*webOS*) AppleWebKit/* (KHTML, like Gecko) *Version/1.* *Safari/* *Pixi/2.*] +Parent=Palm Web +Version=2.0 +MajorVer=2 +MinorVer=0 +CssVersion=2 + +[Mozilla/5.0 (*webOS*) AppleWebKit/* (KHTML, like Gecko) *Version/1.* *Safari/* *Pre/2.*] +Parent=Palm Web +Version=2.0 +MajorVer=2 +MinorVer=0 +CssVersion=2 + +[Mozilla/5.0 (*webOS*) AppleWebKit/* (KHTML, like Gecko) *Version/1.* Safari/* *Pre/1.*] +Parent=Palm Web +Version=1.0 +MajorVer=1 +MinorVer=0 +CssVersion=2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Playstation + +[Playstation] +Parent=DefaultProperties +Comment="Playstation" +Browser="Playstation" +Platform="WAP" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[Mozilla/* (PLAYSTATION*)] +Parent=Playstation +Browser="Sony PS3" +Frames=false + +[Mozilla/* (PSP (PlayStation Portable)*)] +Parent=Playstation +Browser="Sony PSP" + +[Sony PS2 (Linux)] +Parent=Playstation +Browser="Sony PS2" +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Pocket PC + +[Pocket PC] +Parent=DefaultProperties +Comment="Pocket PC" +Browser="Pocket PC" +Platform="WinCE" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[*(compatible; MSIE *.*; Windows CE; PPC; *)] +Parent=Pocket PC + +[HTC-*/* Mozilla/* (compatible; MSIE *.*; Windows CE*)*] +Parent=Pocket PC + +[Mozilla/* (compatible; MSPIE *.*; *Windows CE*)*] +Parent=Pocket PC + +[T-Mobile* Mozilla/* (compatible; MSIE *.*; Windows CE; *)] +Parent=Pocket PC + +[Vodafone* Mozilla/* (compatible; MSIE *.*; Windows CE; *)*] +Parent=Pocket PC + +[Windows CE (Pocket PC) - Version *.*] +Parent=Pocket PC + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Polaris + +[Polaris] +Parent=DefaultProperties +Comment="Polaris" +Browser="Polaris" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[LG-* Polaris/5.* MMP/2.*] +Parent=Polaris +Browser="Polaris LG" +Version=5.0 +MajorVer=5 +MinorVer=0 + +[LG-* Polaris/6.* MMP/2.*] +Parent=Polaris +Browser="Polaris LG" +Version=6.0 +MajorVer=6 +MinorVer=0 + +[LG-* Polaris/7.* MMP/2.*] +Parent=Polaris +Browser="Polaris LG" +Version=7.0 +MajorVer=7 +MinorVer=0 + +[Samsung-* Polaris/5.* MMP/2.*] +Parent=Polaris +Browser="Polaris Samsung" +Version=5.0 +MajorVer=5 +MinorVer=0 + +[Samsung-* Polaris/6.* MMP/2.*] +Parent=Polaris +Browser="Polaris Samsung" +Version=6.0 +MajorVer=6 +MinorVer=0 + +[Samsung-* Polaris/7.* MMP/2.*] +Parent=Polaris +Browser="Polaris Samsung" +Version=7.0 +MajorVer=7 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SEMC Browser + +[SEMC Browser] +Parent=DefaultProperties +Comment="SEMC Browser" +Browser="SEMC Browser" +Platform="JAVA" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[*SEMC-Browser/*] +Parent=SEMC Browser + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Silk + +[Silk] +Parent=DefaultProperties +Comment="Silk" +Browser="Silk" +Platform="Android" +Frames=true +IFrames=true +Tables=true +Cookies=true +isMobileDevice=true +CssVersion=2 + +[Mozilla/5.0 (*Mac OS X 10*Silk/1.*) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=*] +Parent=Silk +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (Linux*Android*Silk/1.*) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=*] +Parent=Silk +Version=1.0 +MajorVer=1 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Skyfire + +[Skyfire] +Parent=DefaultProperties +Comment="Skyfire" +Browser="Skyfire" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh*Mac OS X 10_5*)*AppleWebKit/530.17*(KHTML, like Gecko)*Version/*Safari/*Skyfire/2.*] +Parent=Skyfire +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform="MacOSX" +Platform_Version=10.5 +isMobileDevice=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Teleca + +[Teleca] +Parent=DefaultProperties +Comment="Teleca" +Browser="Teleca" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Mozilla/5.0 (compatible; Teleca *; Brew 3.0*; U; *)*] +Parent=Teleca +Version=3.0 +MajorVer=3 +MinorVer=0 + +[Mozilla/5.0 (compatible; Teleca *; Brew 3.1*; U; *)*] +Parent=Teleca +Version=3.1 +MajorVer=3 +MinorVer=1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; UC Browser + +[UC Browser] +Parent=DefaultProperties +Comment="UC Browser" +Browser="UC Browser" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true + +[Mozilla/5.0 (Java;*samsung*) UCBrowser8.2*UCWEB*Mobile*UNTRUSTED/*] +Parent=UC Browser +Version=8.2 +MajorVer=8 +MinorVer=2 +Platform="JAVA" + +[Mozilla/5.0 (Java;*samsung-gt-s5263) UCBrowser8.2*UCWEB*Mobile*UNTRUSTED/*] +Parent=UC Browser +Version=8.2 +MajorVer=8 +MinorVer=2 +Platform="JAVA" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Android Browser 3.0 + +[Android Browser 3.0] +Parent=DefaultProperties +Comment="Android Browser 3.0" +Browser="Android" +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Android" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.0*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=1.0 + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.0*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=1.1 + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Version=3.1 +MajorVer=3 +MinorVer=1 +Platform_Version=1.5 + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Version=3.1 +MajorVer=3 +MinorVer=1 +Platform_Version=1.6 + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=2.0 + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=2.1 + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=2.2 + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile Safari/*] +Parent=Android Browser 3.0 +Platform_Version=2.3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Android Browser 4.0 + +[Android Browser 4.0] +Parent=DefaultProperties +Comment="Android Browser 4.0" +Browser="Android" +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="Android" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Linux*Android 1.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=1.0 + +[Mozilla/5.0 (Linux*Android 1.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=1.1 + +[Mozilla/5.0 (Linux*Android 1.5*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=1.5 + +[Mozilla/5.0 (Linux*Android 1.6*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=1.6 + +[Mozilla/5.0 (Linux*Android 2.0*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=2.0 + +[Mozilla/5.0 (Linux*Android 2.1*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=2.1 + +[Mozilla/5.0 (Linux*Android 2.2*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=2.2 + +[Mozilla/5.0 (Linux*Android 2.3*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=2.3 + +[Mozilla/5.0 (Linux*Android 3.*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (Linux*Android 3.*sdk*)*AppleWebKit/534.13*(*KHTML, like Gecko*)*Version/4.*Safari/*] +Parent=Android Browser 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (Linux*Android 4.*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile Safari/*] +Parent=Android Browser 4.0 +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BlackBerry + +[BlackBerry] +Parent=DefaultProperties +Comment="BlackBerry" +Browser="BlackBerry" +Platform="BlackBerry OS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[*BlackBerry*] +Parent=BlackBerry +Platform_Version=1.0 + +[*PlayBook*RIM Tablet OS 1.0.*] +Parent=BlackBerry +Platform="RIM Tablet OS" +Platform_Version=1.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Playbook Simulator + +[*PlayBook*RIM Tablet OS 2.0.*] +Parent=BlackBerry +Comment="Playbook Simulator" +Browser="Playbook" +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform_Version=2.0 +CssVersion=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 3.0 + +[Mobile Safari 3.0] +Parent=DefaultProperties +Comment="Mobile Safari 3.0" +Browser="Safari" +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="iOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPhone*CPU like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.0*Mobile/*Safari/*] +Parent=Mobile Safari 3.0 +Platform_Version=1.0 + +[Mozilla/5.0 (iPhone*CPU like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*] +Parent=Mobile Safari 3.0 +Version=0 +MajorVer=0 +Platform_Version=1.0 + +[Mozilla/5.0 (iPhone*CPU like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*Mobile/*] +Parent=Mobile Safari 3.0 +Platform_Version=1.0 + +[Mozilla/5.0 (iPod*CPU like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 3.0 +Version=0 +MajorVer=0 +Platform_Version=1.0 + +[Mozilla/5.0 (iPod*CPU like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 3.0 +Platform_Version=1.0 + +[Mozilla/5.0 (iPod*CPU like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.0*Mobile/*Safari/*] +Parent=Mobile Safari 3.0 +Platform_Version=1.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 3.1 + +[Mobile Safari 3.1] +Parent=DefaultProperties +Comment="Mobile Safari 3.1" +Browser="Safari" +Version=3.1 +MajorVer=3 +MinorVer=1 +Platform="iOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPhone*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.0 + +[Mozilla/5.0 (iPhone*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.0 + +[Mozilla/5.0 (iPhone*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.0 + +[Mozilla/5.0 (iPhone*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.1 + +[Mozilla/5.0 (iPhone*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.1 + +[Mozilla/5.0 (iPhone*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.1 + +[Mozilla/5.0 (iPhone*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.2 + +[Mozilla/5.0 (iPhone*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.2 + +[Mozilla/5.0 (iPhone*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(KHTML, like Gecko)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.2 + +[Mozilla/5.0 (iPod*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.0 + +[Mozilla/5.0 (iPod*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.0 + +[Mozilla/5.0 (iPod*CPU*OS 2_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.0 + +[Mozilla/5.0 (iPod*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.1 + +[Mozilla/5.0 (iPod*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.1 + +[Mozilla/5.0 (iPod*CPU*OS 2_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.1 + +[Mozilla/5.0 (iPod*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 3.1 +Version=0 +MajorVer=0 +Platform_Version=2.2 + +[Mozilla/5.0 (iPod*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.2 + +[Mozilla/5.0 (iPod*CPU*OS 2_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/3.1*Mobile/*Safari/*] +Parent=Mobile Safari 3.1 +Platform_Version=2.2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 4.0 + +[Mobile Safari 4.0] +Parent=DefaultProperties +Comment="Mobile Safari 4.0" +Browser="Safari" +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="iOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPad*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPad*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPad*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0.*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPhone*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPhone*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPhone*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPhone*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPhone*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPhone*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/528*] +Parent=Mobile Safari 4.0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPhone*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPhone*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPhone*CPU*OS 3_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.2 + +[Mozilla/5.0 (iPhone*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPhone*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPhone*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPhone*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=4.1 + +[Mozilla/5.0 (iPhone*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.1 + +[Mozilla/5.0 (iPhone*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.1 + +[Mozilla/5.0 (iPod*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPod*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPod*CPU*OS 3_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.0 + +[Mozilla/5.0 (iPod*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPod*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPod*CPU*OS 3_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=3.1 + +[Mozilla/5.0 (iPod*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPod*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPod*CPU*OS 4_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.0 + +[Mozilla/5.0 (iPod*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 4.0 +Version=0 +MajorVer=0 +Platform_Version=4.1 + +[Mozilla/5.0 (iPod*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.1 + +[Mozilla/5.0 (iPod*CPU*OS 4_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/4.0*Mobile/*Safari/*] +Parent=Mobile Safari 4.0 +Platform_Version=4.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 5.0 + +[Mobile Safari 5.0] +Parent=DefaultProperties +Comment="Mobile Safari 5.0" +Browser="Safari" +Version=5.0 +MajorVer=5 +MinorVer=0 +Platform="iOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPad*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPad*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPad*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0.*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPad*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPad*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPad*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0.*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPhone*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPhone*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPhone*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPhone*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPhone*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPhone*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPod*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPod*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPod*CPU*OS 4_2* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.2 + +[Mozilla/5.0 (iPod*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.0 +Version=0 +MajorVer=0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPod*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +[Mozilla/5.0 (iPod*CPU*OS 4_3* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.0*Mobile/*Safari/*] +Parent=Mobile Safari 5.0 +Platform_Version=4.3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 5.1 + +[Mobile Safari 5.1] +Parent=DefaultProperties +Comment="Mobile Safari 5.1" +Browser="Safari" +Version=5.1 +MajorVer=5 +MinorVer=1 +Platform="iOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPad*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.0 + +[Mozilla/5.0 (iPad*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +[Mozilla/5.0 (iPad*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1.*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +[Mozilla/5.0 (iPad*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.1 + +[Mozilla/5.0 (iPad*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +[Mozilla/5.0 (iPad*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1.*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +[Mozilla/5.0 (iPhone*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.0 + +[Mozilla/5.0 (iPhone*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +[Mozilla/5.0 (iPhone*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Facebook App + +[Mozilla/5.0 (iPhone*CPU*OS 5_1* like Mac OS X*)*AppleWebKit*(*KHTML, like Gecko*)*Mobile*FB*] +Parent=Mobile Safari 5.1 +Comment="Facebook App" +Platform_Version=5.1 + +[Mozilla/5.0 (iPhone*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.1 + +[Mozilla/5.0 (iPhone*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +[Mozilla/5.0 (iPhone*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google+ App + +[Mozilla/5.0 (iPhone*CPU*OS 5_1* like Mac OS X*)*GooglePlus/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Comment="Google+ App" +Platform_Version=5.1 + +[Mozilla/5.0 (iPod*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.0 + +[Mozilla/5.0 (iPod*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +[Mozilla/5.0 (iPod*CPU*OS 5_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.0 + +[Mozilla/5.0 (iPod*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 5.1 +Version=0 +MajorVer=0 +Platform_Version=5.1 + +[Mozilla/5.0 (iPod*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +[Mozilla/5.0 (iPod*CPU*OS 5_1* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/5.1*Mobile/*Safari/*] +Parent=Mobile Safari 5.1 +Platform_Version=5.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mobile Safari 6.0 + +[Mobile Safari 6.0] +Parent=DefaultProperties +Comment="Mobile Safari 6.0" +Browser="Safari" +Version=6.0 +MajorVer=6 +MinorVer=0 +Platform="iOS" +Platform_Version=6.0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (iPad*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPad*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPad*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/6.0.*Mobile/*Safari/*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPhone*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPhone*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPhone*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/6.0*Mobile/*Safari/*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPod*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*] +Parent=Mobile Safari 6.0 +Version=0 +MajorVer=0 + +[Mozilla/5.0 (iPod*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Mobile/*] +Parent=Mobile Safari 6.0 + +[Mozilla/5.0 (iPod*CPU*OS 6_0* like Mac OS X*)*AppleWebKit/*(*KHTML, like Gecko*)*Version/6.0*Mobile/*Safari/*] +Parent=Mobile Safari 6.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini 2.0 + +[Opera Mini 2.0] +Parent=DefaultProperties +Comment="Opera Mini 2.0" +Browser="Opera Mini" +Version=2.0 +MajorVer=2 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(Android*Opera Mini/2.*)*] +Parent=Opera Mini 2.0 +Platform="Android" + +[Opera/*(BlackBerry*Opera Mini/2.*)*] +Parent=Opera Mini 2.0 +Platform="BlackBerry OS" + +[Opera/*(J2ME/MIDP*Opera Mini/2.*)*] +Parent=Opera Mini 2.0 +Platform="JAVA" + +[Opera/*(Series 60*Opera Mini/2.*)*] +Parent=Opera Mini 2.0 +Platform="SymbianOS" + +[Opera/*(Windows Mobile*Opera Mini/2.*)*] +Parent=Opera Mini 2.0 +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini 3.0 + +[Opera Mini 3.0] +Parent=DefaultProperties +Comment="Opera Mini 3.0" +Browser="Opera Mini" +Version=3.0 +MajorVer=3 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(Android*Opera Mini/3.*)*] +Parent=Opera Mini 3.0 +Platform="Android" + +[Opera/*(BlackBerry*Opera Mini/3.*)*] +Parent=Opera Mini 3.0 +Platform="BlackBerry OS" + +[Opera/*(J2ME/MIDP*Opera Mini/3.*)*] +Parent=Opera Mini 3.0 +Platform="JAVA" + +[Opera/*(Series 60*Opera Mini/3.*)*] +Parent=Opera Mini 3.0 +Platform="SymbianOS" + +[Opera/*(Windows Mobile*Opera Mini/3.*)*] +Parent=Opera Mini 3.0 +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini 4.0 + +[Opera Mini 4.0] +Parent=DefaultProperties +Comment="Opera Mini 4.0" +Browser="Opera Mini" +Version=4.0 +MajorVer=4 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(Android*Opera Mini/4.*)*] +Parent=Opera Mini 4.0 +Platform="Android" + +[Opera/*(BlackBerry*Opera Mini/4.*)*] +Parent=Opera Mini 4.0 +Platform="BlackBerry OS" + +[Opera/*(J2ME/MIDP*Opera Mini/4.*)*] +Parent=Opera Mini 4.0 +Platform="JAVA" + +[Opera/*(Series 60*Opera Mini/4.*)*] +Parent=Opera Mini 4.0 +Platform="SymbianOS" + +[Opera/*(Windows Mobile*Opera Mini/4.*)*] +Parent=Opera Mini 4.0 +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini 5.0 + +[Opera Mini 5.0] +Parent=DefaultProperties +Comment="Opera Mini 5.0" +Browser="Opera Mini" +Version=5.0 +MajorVer=5 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(Android*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 +Platform="Android" + +[Opera/*(BlackBerry*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 +Platform="BlackBerry OS" + +[Opera/*(iPhone*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 + +[Opera/*(J2ME/MIDP*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 +Platform="JAVA" + +[Opera/*(Series 60*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 +Platform="SymbianOS" + +[Opera/*(Windows Mobile*Opera Mini/5.*)*] +Parent=Opera Mini 5.0 +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini 6.0 + +[Opera Mini 6.0] +Parent=DefaultProperties +Comment="Opera Mini 6.0" +Browser="Opera Mini" +Version=6.0 +MajorVer=6 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(*Android*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 +Platform="Android" + +[Opera/*(*BlackBerry*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 +Platform="BlackBerry OS" + +[Opera/*(*iPad*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 + +[Opera/*(*iPhone*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 + +[Opera/*(*J2ME/MIDP*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 +Platform="JAVA" + +[Opera/*(*Series 60*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 +Platform="SymbianOS" + +[Opera/*(*Windows Mobile*Opera Mini/6.*)*] +Parent=Opera Mini 6.0 +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini Generic + +[Opera Mini Generic] +Parent=DefaultProperties +Comment="Opera Mini Generic" +Browser="Opera Mini" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=1 + +[Opera/*(Android*Opera Mini/*)*] +Parent=Opera Mini Generic +Platform="Android" + +[Opera/*(BlackBerry*Opera Mini/*)*] +Parent=Opera Mini Generic +Platform="BlackBerry OS" + +[Opera/*(iPhone*Opera Mini/*)*] +Parent=Opera Mini Generic + +[Opera/*(J2ME/MIDP*Opera Mini/*)*] +Parent=Opera Mini Generic +Platform="JAVA" + +[Opera/*(Series 60*Opera Mini/*)*] +Parent=Opera Mini Generic +Platform="SymbianOS" + +[Opera/*(Windows Mobile*Opera Mini/*)*] +Parent=Opera Mini Generic +Platform="WinMobile" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mobile + +[Opera Mobile] +Parent=DefaultProperties +Comment="Opera Mobile" +Browser="Opera Mobi" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[Mozilla/?.*(*Windows CE*)*Opera?*] +Parent=Opera Mobile +Browser="Opera Mobile" +Platform="WinCE" + +[Opera/*(*Android 4.*Linux*Opera Mobi/ADR-1205181138*)*Presto/2.10*Version/12.*] +Parent=Opera Mobile +Version=12.00 +MajorVer=12 +MinorVer=00 +Platform="Android" +Platform_Version=4.0 +CssVersion=3 + +[Opera/*(*Android*Opera Mobi*)*] +Parent=Opera Mobile +Platform="Android" + +[Opera/*(*Microsoft Windows*Opera Mobi*)*] +Parent=Opera Mobile +Platform="Win" + +[Opera/*(*Symbian*Opera Mobi*)*] +Parent=Opera Mobile +Platform="SymbianOS" + +[Opera/*(*SymbOS*Opera Mobi*)*] +Parent=Opera Mobile +Platform="SymbianOS" + +[Opera/*(*Windows Mobile*Opera Mobi*)*] +Parent=Opera Mobile +Platform="WinCE" + +[Opera/*(Android 4.0*Linux*Opera Mobi/*)*Presto/2.10*Version/12.00*] +Parent=Opera Mobile +Version=12.00 +MajorVer=12 +MinorVer=00 +Platform="Android" +Platform_Version=4.0 +CssVersion=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Access NetFront 2.0 + +[NetFront 2.0] +Parent=DefaultProperties +Comment="Access NetFront 2.0" +Browser="Access NetFront" +Version=2.0 +MajorVer=2 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[*NetFront/2.*] +Parent=NetFront 2.0 + +[Mozilla/4.0 (*) *NetFront/2.*] +Parent=NetFront 2.0 + +[Mozilla/4.0 (*NetFront/2.*)*] +Parent=NetFront 2.0 + +[SAMSUNG* *NetFront/2.*] +Parent=NetFront 2.0 + +[SEC-* *NetFront/2.*] +Parent=NetFront 2.0 + +[SonyEricsson*/* Mozilla/5.0 (SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* *Safari/*] +Parent=NetFront 2.0 +Platform="SymbianOS" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Access NetFront 3.0 + +[NetFront 3.0] +Parent=DefaultProperties +Comment="Access NetFront 3.0" +Browser="Access NetFront" +Version=3.0 +MajorVer=3 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=2 + +[*NetFront/3.*] +Parent=NetFront 3.0 + +[Mozilla/4.0 (*) *NetFront/3.*] +Parent=NetFront 3.0 + +[Mozilla/4.0 (*NetFront/3.*)*] +Parent=NetFront 3.0 + +[Mozilla/4.0 (compatible; Linux*) NetFront/3.* Kindle/1.0 (screen 600x800)] +Parent=NetFront 3.0 +Platform="Android" + +[Mozilla/4.0 (compatible; Linux*) NetFront/3.* Kindle/2.0 (screen 600x800)] +Parent=NetFront 3.0 +Platform="Linux" + +[SAMSUNG* *NetFront/3.*] +Parent=NetFront 3.0 + +[SEC-* *NetFront/3.*] +Parent=NetFront 3.0 + +[SonyEricsson*; Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* *Safari/*] +Parent=NetFront 3.0 +Platform="SymbianOS" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Boxee + +[Boxee] +Parent=DefaultProperties +Comment="Boxee" +Browser="Boxee" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[curl/* (Linux * intel.*dlink.dsm* *; *; beta) boxee/*] +Parent=Boxee +Version=1.0 +MajorVer=1 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GoogleTV + +[GoogleTV] +Parent=DefaultProperties +Comment="GoogleTV" +Browser="GoogleTV" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (X11; U: Linux i686; *) AppleWebKit/* (KHTML, like Gecko) Chrome/5.* Large Screen Safari/* GoogleTV/*] +Parent=GoogleTV +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netbox + +[Netbox] +Parent=DefaultProperties +Comment="Netbox" +Browser="Netbox" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=1 + +[Mozilla/3.01 (compatible; Netbox/*; Linux*)] +Parent=Netbox +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PowerTV + +[PowerTV] +Parent=DefaultProperties +Comment="PowerTV" +Browser="PowerTV" +Platform="PowerTV" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/4.0 PowerTV/1.5 (Compatible; Spyglass DM 3.2.1, EXPLORER)] +Parent=PowerTV +Version=1.5 +MajorVer=1 +MinorVer=5 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WebTV/MSNTV + +[WebTV] +Parent=DefaultProperties +Comment="WebTV/MSNTV" +Browser="WebTV/MSNTV" +Platform="WebTV" +Frames=true +IFrames=true +Tables=true +Cookies=true + +[Mozilla/3.0 WebTV/1.*(compatible; MSIE 2.0)] +Parent=WebTV +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/4.0 WebTV/2.0*(compatible; MSIE 3.0)] +Parent=WebTV +Version=2.0 +MajorVer=2 +MinorVer=0 + +[Mozilla/4.0 WebTV/2.1*(compatible; MSIE 3.0)] +Parent=WebTV +Version=2.1 +MajorVer=2 +MinorVer=1 + +[Mozilla/4.0 WebTV/2.2*(compatible; MSIE 3.0)] +Parent=WebTV +Version=2.2 +MajorVer=2 +MinorVer=2 + +[Mozilla/4.0 WebTV/2.3*(compatible; MSIE 3.0)] +Parent=WebTV +Version=2.3 +MajorVer=2 +MinorVer=3 + +[Mozilla/4.0 WebTV/2.4*(compatible; MSIE 3.0)] +Parent=WebTV +Version=2.4 +MajorVer=2 +MinorVer=4 + +[Mozilla/4.0 WebTV/2.5*(compatible; MSIE 4.0)] +Parent=WebTV +Version=2.5 +MajorVer=2 +MinorVer=5 +CssVersion=1 + +[Mozilla/4.0 WebTV/2.6*(compatible; MSIE 4.0)] +Parent=WebTV +Version=2.6 +MajorVer=2 +MinorVer=6 +CssVersion=1 + +[Mozilla/4.0 WebTV/2.7*(compatible; MSIE 4.0)] +Parent=WebTV +Version=2.7 +MajorVer=2 +MinorVer=7 +CssVersion=1 + +[Mozilla/4.0 WebTV/2.8*(compatible; MSIE 4.0)] +Parent=WebTV +Version=2.8 +MajorVer=2 +MinorVer=8 +VBScript=true +CssVersion=1 + +[Mozilla/4.0 WebTV/2.9*(compatible; MSIE 4.0)] +Parent=WebTV +Version=2.9 +MajorVer=2 +MinorVer=9 +VBScript=true +CssVersion=1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Amaya + +[Amaya] +Parent=DefaultProperties +Comment="Amaya" +Browser="Amaya" +Frames=true +Tables=true + +[amaya/10.*] +Parent=Amaya +Version=10.0 +MajorVer=10 +MinorVer=0 + +[amaya/11.*] +Parent=Amaya +Version=11.0 +MajorVer=11 +MinorVer=0 + +[amaya/7.*] +Parent=Amaya +Version=7.0 +MajorVer=7 +MinorVer=0 + +[amaya/8.*] +Parent=Amaya +Version=8.0 +MajorVer=8 +MinorVer=0 +CssVersion=2 + +[amaya/9.*] +Parent=Amaya +Version=9.0 +MajorVer=9 +MinorVer=0 + +[Emacs-w3m/*] +Parent=Emacs/W3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Links + +[Links] +Parent=DefaultProperties +Comment="Links" +Browser="Links" +Frames=true +Tables=true + +[Links (0.9*; CYGWIN_NT-5.1*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="WinXP" + +[Links (0.9*; Darwin*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="MacPPC" + +[Links (0.9*; FreeBSD*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="FreeBSD" + +[Links (0.9*; Linux*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="Linux" + +[Links (0.9*; OS/2*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="OS/2" + +[Links (0.9*; Unix*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="Unix" + +[Links (0.9*; Win32*)] +Parent=Links +Version=0.9 +MajorVer=0 +MinorVer=9 +Platform="Win32" +Win32=true + +[Links (1.0*; CYGWIN_NT-5.1*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" + +[Links (1.0*; FreeBSD*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="FreeBSD" + +[Links (1.0*; Linux*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Linux" + +[Links (1.0*; OS/2*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="OS/2" + +[Links (1.0*; Unix*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Unix" + +[Links (1.0*; Win32*)] +Parent=Links +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win32" +Win32=true + +[Links (2.0*; Linux*)] +Parent=Links +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform="Linux" + +[Links (2.1*; FreeBSD*)] +Parent=Links +Version=2.1 +MajorVer=2 +MinorVer=1 +Platform="FreeBSD" + +[Links (2.1*; Linux *)] +Parent=Links +Version=2.1 +MajorVer=2 +MinorVer=1 +Platform="Linux" + +[Links (2.1*; OpenBSD*)] +Parent=Links +Version=2.1 +MajorVer=2 +MinorVer=1 +Platform="OpenBSD" + +[Links (2.2*; FreeBSD*)] +Parent=Links +Version=2.2 +MajorVer=2 +MinorVer=2 +Platform="FreeBSD" + +[Links (2.2*; Linux *)] +Parent=Links +Version=2.2 +MajorVer=2 +MinorVer=2 +Platform="Linux" + +[Links (2.2*; NetBSD*)] +Parent=Links +Platform="NetBSD" + +[Links (2.2*; OpenBSD*)] +Parent=Links +Version=2.2 +MajorVer=2 +MinorVer=2 +Platform="OpenBSD" + +[Links (2.3*; FreeBSD*)] +Parent=Links +Version=2.3 +MajorVer=2 +MinorVer=3 +Platform="Linux" + +[Links (2.3*; Linux*)] +Parent=Links +Version=2.3 +MajorVer=2 +MinorVer=3 +Platform="Linux" + +[Links (2.3*; NetBSD*)] +Parent=Links +Platform="NetBSD" + +[Links (2.3*; OpenBSD*)] +Parent=Links +Version=2.3 +MajorVer=2 +MinorVer=3 +Platform="OpenBSD" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lynx + +[Lynx] +Parent=DefaultProperties +Comment="Lynx" +Browser="Lynx" +Frames=true +IFrames=true +Tables=true + +[Lynx *] +Parent=Lynx + +[Lynx/2.3*] +Parent=Lynx +Version=2.3 +MajorVer=2 +MinorVer=3 + +[Lynx/2.4*] +Parent=Lynx +Version=2.4 +MajorVer=2 +MinorVer=4 + +[Lynx/2.5*] +Parent=Lynx +Version=2.5 +MajorVer=2 +MinorVer=5 + +[Lynx/2.6*] +Parent=Lynx +Version=2.6 +MajorVer=2 +MinorVer=6 + +[Lynx/2.7*] +Parent=Lynx +Version=2.7 +MajorVer=2 +MinorVer=7 + +[Lynx/2.8*] +Parent=Lynx +Version=2.8 +MajorVer=2 +MinorVer=8 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NCSA Mosaic + +[Mosaic] +Parent=DefaultProperties +Comment="NCSA Mosaic" +Browser="Mosaic" +Frames=true +Tables=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; w3m + +[w3m] +Parent=DefaultProperties +Comment="w3m" +Browser="w3m" +Frames=true +Tables=true + +[w3m/0.1*] +Parent=w3m +Version=0.1 +MajorVer=0 +MinorVer=1 + +[w3m/0.2*] +Parent=w3m +Version=0.2 +MajorVer=0 +MinorVer=2 + +[w3m/0.3*] +Parent=w3m +Version=0.3 +MajorVer=0 +MinorVer=3 + +[w3m/0.4*] +Parent=w3m +Version=0.4 +MajorVer=0 +MinorVer=4 +Cookies=true + +[w3m/0.5*] +Parent=w3m +Version=0.5 +MajorVer=0 +MinorVer=5 +Cookies=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.10 + +[ELinks 0.10] +Parent=DefaultProperties +Comment="ELinks 0.10" +Browser="ELinks" +Version=0.10 +MajorVer=0 +MinorVer=10 +Frames=true +Tables=true + +[ELinks (0.10*; *AIX*)] +Parent=ELinks 0.10 +Platform="AIX" + +[ELinks (0.10*; *BeOS*)] +Parent=ELinks 0.10 +Platform="BeOS" + +[ELinks (0.10*; *CygWin*)] +Parent=ELinks 0.10 +Platform="CygWin" + +[ELinks (0.10*; *Darwin*)] +Parent=ELinks 0.10 +Platform="Darwin" + +[ELinks (0.10*; *Digital Unix*)] +Parent=ELinks 0.10 +Platform="Digital Unix" + +[ELinks (0.10*; *FreeBSD*)] +Parent=ELinks 0.10 +Platform="FreeBSD" + +[ELinks (0.10*; *HPUX*)] +Parent=ELinks 0.10 +Platform="HP-UX" + +[ELinks (0.10*; *IRIX*)] +Parent=ELinks 0.10 +Platform="IRIX" + +[ELinks (0.10*; *Linux*)] +Parent=ELinks 0.10 +Platform="Linux" + +[ELinks (0.10*; *NetBSD*)] +Parent=ELinks 0.10 +Platform="NetBSD" + +[ELinks (0.10*; *OpenBSD*)] +Parent=ELinks 0.10 +Platform="OpenBSD" + +[ELinks (0.10*; *OS/2*)] +Parent=ELinks 0.10 +Platform="OS/2" + +[ELinks (0.10*; *RISC*)] +Parent=ELinks 0.10 +Platform="RISC OS" + +[ELinks (0.10*; *Solaris*)] +Parent=ELinks 0.10 +Platform="Solaris" + +[ELinks (0.10*; *Unix*)] +Parent=ELinks 0.10 +Platform="Unix" + +[ELinks/0.10* (*AIX*)] +Parent=ELinks 0.10 +Platform="AIX" + +[ELinks/0.10* (*BeOS*)] +Parent=ELinks 0.10 +Platform="BeOS" + +[ELinks/0.10* (*CygWin*)] +Parent=ELinks 0.10 +Platform="CygWin" + +[ELinks/0.10* (*Darwin*)] +Parent=ELinks 0.10 +Platform="Darwin" + +[ELinks/0.10* (*Digital Unix*)] +Parent=ELinks 0.10 +Platform="Digital Unix" + +[ELinks/0.10* (*FreeBSD*)] +Parent=ELinks 0.10 +Platform="FreeBSD" + +[ELinks/0.10* (*HPUX*)] +Parent=ELinks 0.10 +Platform="HP-UX" + +[ELinks/0.10* (*IRIX*)] +Parent=ELinks 0.10 +Platform="IRIX" + +[ELinks/0.10* (*Linux*)] +Parent=ELinks 0.10 +Platform="Linux" + +[ELinks/0.10* (*NetBSD*)] +Parent=ELinks 0.10 +Platform="NetBSD" + +[ELinks/0.10* (*OpenBSD*)] +Parent=ELinks 0.10 +Platform="OpenBSD" + +[ELinks/0.10* (*OS/2*)] +Parent=ELinks 0.10 +Platform="OS/2" + +[ELinks/0.10* (*RISC*)] +Parent=ELinks 0.10 +Platform="RISC OS" + +[ELinks/0.10* (*Solaris*)] +Parent=ELinks 0.10 +Platform="Solaris" + +[ELinks/0.10* (*Unix*)] +Parent=ELinks 0.10 +Platform="Unix" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.11 + +[ELinks 0.11] +Parent=DefaultProperties +Comment="ELinks 0.11" +Browser="ELinks" +Version=0.11 +MajorVer=0 +MinorVer=11 +Frames=true +Tables=true + +[ELinks (0.11*; *AIX*)] +Parent=ELinks 0.11 +Platform="AIX" + +[ELinks (0.11*; *BeOS*)] +Parent=ELinks 0.11 +Platform="BeOS" + +[ELinks (0.11*; *CygWin*)] +Parent=ELinks 0.11 +Platform="CygWin" + +[ELinks (0.11*; *Darwin*)] +Parent=ELinks 0.11 +Platform="Darwin" + +[ELinks (0.11*; *Digital Unix*)] +Parent=ELinks 0.11 +Platform="Digital Unix" + +[ELinks (0.11*; *FreeBSD*)] +Parent=ELinks 0.11 +Platform="FreeBSD" + +[ELinks (0.11*; *HPUX*)] +Parent=ELinks 0.11 +Platform="HP-UX" + +[ELinks (0.11*; *IRIX*)] +Parent=ELinks 0.11 +Platform="IRIX" + +[ELinks (0.11*; *Linux*)] +Parent=ELinks 0.11 +Platform="Linux" + +[ELinks (0.11*; *NetBSD*)] +Parent=ELinks 0.11 +Platform="NetBSD" + +[ELinks (0.11*; *OpenBSD*)] +Parent=ELinks 0.11 +Platform="OpenBSD" + +[ELinks (0.11*; *OS/2*)] +Parent=ELinks 0.11 +Platform="OS/2" + +[ELinks (0.11*; *RISC*)] +Parent=ELinks 0.11 +Platform="RISC OS" + +[ELinks (0.11*; *Solaris*)] +Parent=ELinks 0.11 +Platform="Solaris" + +[ELinks (0.11*; *Unix*)] +Parent=ELinks 0.11 +Platform="Unix" + +[ELinks/0.11* (*AIX*)] +Parent=ELinks 0.11 +Platform="AIX" + +[ELinks/0.11* (*BeOS*)] +Parent=ELinks 0.11 +Platform="BeOS" + +[ELinks/0.11* (*CygWin*)] +Parent=ELinks 0.11 +Platform="CygWin" + +[ELinks/0.11* (*Darwin*)] +Parent=ELinks 0.11 +Platform="Darwin" + +[ELinks/0.11* (*Digital Unix*)] +Parent=ELinks 0.11 +Platform="Digital Unix" + +[ELinks/0.11* (*FreeBSD*)] +Parent=ELinks 0.11 +Platform="FreeBSD" + +[ELinks/0.11* (*HPUX*)] +Parent=ELinks 0.11 +Platform="HP-UX" + +[ELinks/0.11* (*IRIX*)] +Parent=ELinks 0.11 +Platform="IRIX" + +[ELinks/0.11* (*Linux*)] +Parent=ELinks 0.11 +Platform="Linux" + +[ELinks/0.11* (*NetBSD*)] +Parent=ELinks 0.11 +Platform="NetBSD" + +[ELinks/0.11* (*OpenBSD*)] +Parent=ELinks 0.11 +Platform="OpenBSD" + +[ELinks/0.11* (*OS/2*)] +Parent=ELinks 0.11 +Platform="OS/2" + +[ELinks/0.11* (*RISC*)] +Parent=ELinks 0.11 +Platform="RISC OS" + +[ELinks/0.11* (*Solaris*)] +Parent=ELinks 0.11 +Platform="Solaris" + +[ELinks/0.11* (*Unix*)] +Parent=ELinks 0.11 +Platform="Unix" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.12 + +[ELinks 0.12] +Parent=DefaultProperties +Comment="ELinks 0.12" +Browser="ELinks" +Version=0.12 +MajorVer=0 +MinorVer=12 +Frames=true +Tables=true + +[ELinks (0.12*; *AIX*)] +Parent=ELinks 0.12 +Platform="AIX" + +[ELinks (0.12*; *BeOS*)] +Parent=ELinks 0.12 +Platform="BeOS" + +[ELinks (0.12*; *CygWin*)] +Parent=ELinks 0.12 +Platform="CygWin" + +[ELinks (0.12*; *Darwin*)] +Parent=ELinks 0.12 +Platform="Darwin" + +[ELinks (0.12*; *Digital Unix*)] +Parent=ELinks 0.12 +Platform="Digital Unix" + +[ELinks (0.12*; *FreeBSD*)] +Parent=ELinks 0.12 +Platform="FreeBSD" + +[ELinks (0.12*; *HPUX*)] +Parent=ELinks 0.12 +Platform="HP-UX" + +[ELinks (0.12*; *IRIX*)] +Parent=ELinks 0.12 +Platform="IRIX" + +[ELinks (0.12*; *Linux*)] +Parent=ELinks 0.12 +Platform="Linux" + +[ELinks (0.12*; *NetBSD*)] +Parent=ELinks 0.12 +Platform="NetBSD" + +[ELinks (0.12*; *OpenBSD*)] +Parent=ELinks 0.12 +Platform="OpenBSD" + +[ELinks (0.12*; *OS/2*)] +Parent=ELinks 0.12 +Platform="OS/2" + +[ELinks (0.12*; *RISC*)] +Parent=ELinks 0.12 +Platform="RISC OS" + +[ELinks (0.12*; *Solaris*)] +Parent=ELinks 0.12 +Platform="Solaris" + +[ELinks (0.12*; *Unix*)] +Parent=ELinks 0.12 +Platform="Unix" + +[ELinks/0.12* (*AIX*)] +Parent=ELinks 0.12 +Platform="AIX" + +[ELinks/0.12* (*BeOS*)] +Parent=ELinks 0.12 +Platform="BeOS" + +[ELinks/0.12* (*CygWin*)] +Parent=ELinks 0.12 +Platform="CygWin" + +[ELinks/0.12* (*Darwin*)] +Parent=ELinks 0.12 +Platform="Darwin" + +[ELinks/0.12* (*Digital Unix*)] +Parent=ELinks 0.12 +Platform="Digital Unix" + +[ELinks/0.12* (*FreeBSD*)] +Parent=ELinks 0.12 +Platform="FreeBSD" + +[ELinks/0.12* (*HPUX*)] +Parent=ELinks 0.12 +Platform="HP-UX" + +[ELinks/0.12* (*IRIX*)] +Parent=ELinks 0.12 +Platform="IRIX" + +[ELinks/0.12* (*Linux*)] +Parent=ELinks 0.12 +Platform="Linux" + +[ELinks/0.12* (*NetBSD*)] +Parent=ELinks 0.12 +Platform="NetBSD" + +[ELinks/0.12* (*OpenBSD*)] +Parent=ELinks 0.12 +Platform="OpenBSD" + +[ELinks/0.12* (*OS/2*)] +Parent=ELinks 0.12 +Platform="OS/2" + +[ELinks/0.12* (*RISC*)] +Parent=ELinks 0.12 +Platform="RISC OS" + +[ELinks/0.12* (*Solaris*)] +Parent=ELinks 0.12 +Platform="Solaris" + +[ELinks/0.12* (*Unix*)] +Parent=ELinks 0.12 +Platform="Unix" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.13 + +[ELinks 0.13] +Parent=DefaultProperties +Comment="ELinks 0.13" +Browser="ELinks" +Version=0.13 +MajorVer=0 +MinorVer=13 +Frames=true +Tables=true + +[ELinks (0.13*; *AIX*)] +Parent=ELinks 0.13 +Platform="AIX" + +[ELinks (0.13*; *BeOS*)] +Parent=ELinks 0.13 +Platform="BeOS" + +[ELinks (0.13*; *CygWin*)] +Parent=ELinks 0.13 +Platform="CygWin" + +[ELinks (0.13*; *Darwin*)] +Parent=ELinks 0.13 +Platform="Darwin" + +[ELinks (0.13*; *Digital Unix*)] +Parent=ELinks 0.13 +Platform="Digital Unix" + +[ELinks (0.13*; *FreeBSD*)] +Parent=ELinks 0.13 +Platform="FreeBSD" + +[ELinks (0.13*; *HPUX*)] +Parent=ELinks 0.13 +Platform="HP-UX" + +[ELinks (0.13*; *IRIX*)] +Parent=ELinks 0.13 +Platform="IRIX" + +[ELinks (0.13*; *Linux*)] +Parent=ELinks 0.13 +Platform="Linux" + +[ELinks (0.13*; *NetBSD*)] +Parent=ELinks 0.13 +Platform="NetBSD" + +[ELinks (0.13*; *OpenBSD*)] +Parent=ELinks 0.13 +Platform="OpenBSD" + +[ELinks (0.13*; *OS/2*)] +Parent=ELinks 0.13 +Platform="OS/2" + +[ELinks (0.13*; *RISC*)] +Parent=ELinks 0.13 +Platform="RISC OS" + +[ELinks (0.13*; *Solaris*)] +Parent=ELinks 0.13 +Platform="Solaris" + +[ELinks (0.13*; *Unix*)] +Parent=ELinks 0.13 +Platform="Unix" + +[ELinks/0.13* (*AIX*)] +Parent=ELinks 0.13 +Platform="AIX" + +[ELinks/0.13* (*BeOS*)] +Parent=ELinks 0.13 +Platform="BeOS" + +[ELinks/0.13* (*CygWin*)] +Parent=ELinks 0.13 +Platform="CygWin" + +[ELinks/0.13* (*Darwin*)] +Parent=ELinks 0.13 +Platform="Darwin" + +[ELinks/0.13* (*Digital Unix*)] +Parent=ELinks 0.13 +Platform="Digital Unix" + +[ELinks/0.13* (*FreeBSD*)] +Parent=ELinks 0.13 +Platform="FreeBSD" + +[ELinks/0.13* (*HPUX*)] +Parent=ELinks 0.13 +Platform="HP-UX" + +[ELinks/0.13* (*IRIX*)] +Parent=ELinks 0.13 +Platform="IRIX" + +[ELinks/0.13* (*Linux*)] +Parent=ELinks 0.13 +Platform="Linux" + +[ELinks/0.13* (*NetBSD*)] +Parent=ELinks 0.13 +Platform="NetBSD" + +[ELinks/0.13* (*OpenBSD*)] +Parent=ELinks 0.13 +Platform="OpenBSD" + +[ELinks/0.13* (*OS/2*)] +Parent=ELinks 0.13 +Platform="OS/2" + +[ELinks/0.13* (*RISC*)] +Parent=ELinks 0.13 +Platform="RISC OS" + +[ELinks/0.13* (*Solaris*)] +Parent=ELinks 0.13 +Platform="Solaris" + +[ELinks/0.13* (*Unix*)] +Parent=ELinks 0.13 +Platform="Unix" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.9 + +[ELinks 0.9] +Parent=DefaultProperties +Comment="ELinks 0.9" +Browser="ELinks" +Version=0.9 +MajorVer=0 +MinorVer=9 +Frames=true +Tables=true + +[ELinks (0.9*; *AIX*)] +Parent=ELinks 0.9 +Platform="AIX" + +[ELinks (0.9*; *BeOS*)] +Parent=ELinks 0.9 +Platform="BeOS" + +[ELinks (0.9*; *CygWin*)] +Parent=ELinks 0.9 +Platform="CygWin" + +[ELinks (0.9*; *Darwin*)] +Parent=ELinks 0.9 +Platform="Darwin" + +[ELinks (0.9*; *Digital Unix*)] +Parent=ELinks 0.9 +Platform="Digital Unix" + +[ELinks (0.9*; *FreeBSD*)] +Parent=ELinks 0.9 +Platform="FreeBSD" + +[ELinks (0.9*; *HPUX*)] +Parent=ELinks 0.9 +Platform="HP-UX" + +[ELinks (0.9*; *IRIX*)] +Parent=ELinks 0.9 +Platform="IRIX" + +[ELinks (0.9*; *Linux*)] +Parent=ELinks 0.9 +Platform="Linux" + +[ELinks (0.9*; *NetBSD*)] +Parent=ELinks 0.9 +Platform="NetBSD" + +[ELinks (0.9*; *OpenBSD*)] +Parent=ELinks 0.9 +Platform="OpenBSD" + +[ELinks (0.9*; *OS/2*)] +Parent=ELinks 0.9 +Platform="OS/2" + +[ELinks (0.9*; *RISC*)] +Parent=ELinks 0.9 +Platform="RISC OS" + +[ELinks (0.9*; *Solaris*)] +Parent=ELinks 0.9 +Platform="Solaris" + +[ELinks (0.9*; *Unix*)] +Parent=ELinks 0.9 +Platform="Unix" + +[ELinks/0.9* (*AIX*)] +Parent=ELinks 0.9 +Platform="AIX" + +[ELinks/0.9* (*BeOS*)] +Parent=ELinks 0.9 +Platform="BeOS" + +[ELinks/0.9* (*CygWin*)] +Parent=ELinks 0.9 +Platform="CygWin" + +[ELinks/0.9* (*Darwin*)] +Parent=ELinks 0.9 +Platform="Darwin" + +[ELinks/0.9* (*Digital Unix*)] +Parent=ELinks 0.9 +Platform="Digital Unix" + +[ELinks/0.9* (*FreeBSD*)] +Parent=ELinks 0.9 +Platform="FreeBSD" + +[ELinks/0.9* (*HPUX*)] +Parent=ELinks 0.9 +Platform="HP-UX" + +[ELinks/0.9* (*IRIX*)] +Parent=ELinks 0.9 +Platform="IRIX" + +[ELinks/0.9* (*Linux*)] +Parent=ELinks 0.9 +Platform="Linux" + +[ELinks/0.9* (*NetBSD*)] +Parent=ELinks 0.9 +Platform="NetBSD" + +[ELinks/0.9* (*OpenBSD*)] +Parent=ELinks 0.9 +Platform="OpenBSD" + +[ELinks/0.9* (*OS/2*)] +Parent=ELinks 0.9 +Platform="OS/2" + +[ELinks/0.9* (*RISC*)] +Parent=ELinks 0.9 +Platform="RISC OS" + +[ELinks/0.9* (*Solaris*)] +Parent=ELinks 0.9 +Platform="Solaris" + +[ELinks/0.9* (*Unix*)] +Parent=ELinks 0.9 +Platform="Unix" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Camino + +[Camino] +Parent=DefaultProperties +Comment="Camino" +Browser="Camino" +Platform="MacOSX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; *Intel Mac OS X*; *; rv:1.9.*) Gecko/* Camino/2.0*] +Parent=Camino +Version=2.0 +MajorVer=2 +MinorVer=0 + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.7*] +Parent=Camino +Version=0.7 +MajorVer=0 +MinorVer=7 +Beta=true + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.8*] +Parent=Camino +Version=0.8 +MajorVer=0 +MinorVer=8 +Beta=true + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.9*] +Parent=Camino +Version=0.9 +MajorVer=0 +MinorVer=9 +Beta=true + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.0*] +Parent=Camino +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.2*] +Parent=Camino +Version=1.2 +MajorVer=1 +MinorVer=2 + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.3*] +Parent=Camino +Version=1.3 +MajorVer=1 +MinorVer=3 +Platform="MacOSX" + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.4*] +Parent=Camino +Version=1.4 +MajorVer=1 +MinorVer=4 +Platform="MacOSX" + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.5*] +Parent=Camino +Version=1.5 +MajorVer=1 +MinorVer=5 +Platform="MacOSX" + +[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.6*] +Parent=Camino +Version=1.6 +MajorVer=1 +MinorVer=6 +Platform="MacOSX" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chimera + +[Chimera] +Parent=DefaultProperties +Comment="Chimera" +Browser="Chimera" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Chimera/*] +Parent=Chimera +Platform="MacOSX" + +[Mozilla/5.0 Gecko/* Chimera/*] +Parent=Chimera + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Dillo + +[Dillo] +Parent=DefaultProperties +Comment="Dillo" +Browser="Dillo" +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Dillo/0.6*] +Parent=Dillo +Version=0.6 +MajorVer=0 +MinorVer=6 + +[Dillo/0.7*] +Parent=Dillo +Version=0.7 +MajorVer=0 +MinorVer=7 + +[Dillo/0.8*] +Parent=Dillo +Version=0.8 +MajorVer=0 +MinorVer=8 + +[Dillo/2.0] +Parent=Dillo +Version=2.0 +MajorVer=2 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Emacs/W3 + +[Emacs/W3] +Parent=DefaultProperties +Comment="Emacs/W3" +Browser="Emacs/W3" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=default + +[Emacs/W3/2.* (Unix*] +Parent=Emacs/W3 +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform="Unix" + +[Emacs/W3/2.* (X11*] +Parent=Emacs/W3 +Version=2.0 +MajorVer=2 +MinorVer=0 +Platform="Linux" + +[Emacs/W3/3.* (Unix*] +Parent=Emacs/W3 +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Unix" + +[Emacs/W3/3.* (X11*] +Parent=Emacs/W3 +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Linux" + +[Emacs/W3/4.* (Unix*] +Parent=Emacs/W3 +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="Unix" + +[Emacs/W3/4.* (X11*] +Parent=Emacs/W3 +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fantomas + +[fantomas] +Parent=DefaultProperties +Comment="fantomas" +Browser="fantomas" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/4.0 (cloakBrowser)] +Parent=fantomas +Browser="fantomas cloakBrowser" + +[Mozilla/4.0 (fantomas shadowMaker Browser)] +Parent=fantomas +Browser="fantomas shadowMaker Browser" + +[Mozilla/4.0 (fantomBrowser)] +Parent=fantomas +Browser="fantomas fantomBrowser" + +[Mozilla/4.0 (fantomCrew Browser)] +Parent=fantomas +Browser="fantomas fantomCrew Browser" + +[Mozilla/4.0 (stealthBrowser)] +Parent=fantomas +Browser="fantomas stealthBrowser" + +[multiBlocker browser*] +Parent=fantomas +Browser="fantomas multiBlocker browser" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FrontPage + +[FrontPage] +Parent=DefaultProperties +Comment="FrontPage" +Browser="FrontPage" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/?* (compatible; MS FrontPage*)] +Parent=FrontPage + +[MSFrontPage/*] +Parent=FrontPage + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Galeon + +[Galeon] +Parent=DefaultProperties +Comment="Galeon" +Browser="Galeon" +Platform="Linux" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Galeon/1.*] +Parent=Galeon +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Galeon/2.*] +Parent=Galeon +Version=2.0 +MajorVer=2 +MinorVer=0 + +[Mozilla/5.0 Galeon/1.* (X11; Linux*)*] +Parent=Galeon +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 Galeon/2.* (X11; Linux*)*] +Parent=Galeon +Version=2.0 +MajorVer=2 +MinorVer=0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HP Secure Web Browser + +[HP Secure Web Browser] +Parent=DefaultProperties +Comment="HP Secure Web Browser" +Browser="HP Secure Web Browser" +Platform="OpenVMS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.0*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.1*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.1 +MajorVer=1 +MinorVer=1 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.2*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.2 +MajorVer=1 +MinorVer=2 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.3*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.3 +MajorVer=1 +MinorVer=3 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.4*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.4 +MajorVer=1 +MinorVer=4 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.5*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.5 +MajorVer=1 +MinorVer=5 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.6*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.6 +MajorVer=1 +MinorVer=6 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.7*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.7 +MajorVer=1 +MinorVer=7 + +[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.8*) Gecko/*] +Parent=HP Secure Web Browser +Version=1.8 +MajorVer=1 +MinorVer=8 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IBrowse + +[IBrowse] +Parent=DefaultProperties +Comment="IBrowse" +Browser="IBrowse" +Platform="Amiga" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Arexx (compatible; MSIE 6.0; AmigaOS5.0) IBrowse 4.0] +Parent=IBrowse +Version=4.0 +MajorVer=4 +MinorVer=0 + +[IBrowse/1.22 (AmigaOS *)] +Parent=IBrowse +Version=1.22 +MajorVer=1 +MinorVer=22 + +[IBrowse/2.1 (AmigaOS *)] +Parent=IBrowse +Version=2.1 +MajorVer=2 +MinorVer=1 + +[IBrowse/2.2 (AmigaOS *)] +Parent=IBrowse +Version=2.2 +MajorVer=2 +MinorVer=2 + +[IBrowse/2.3 (AmigaOS *)] +Parent=IBrowse +Version=2.2 +MajorVer=2 +MinorVer=2 + +[Mozilla/* (Win98; I) IBrowse/2.1 (AmigaOS 3.1)] +Parent=IBrowse +Version=2.1 +MajorVer=2 +MinorVer=1 +Platform_Version=98 + +[Mozilla/* (Win98; I) IBrowse/2.2 (AmigaOS 3.1)] +Parent=IBrowse +Version=2.2 +MajorVer=2 +MinorVer=2 +Platform_Version=98 + +[Mozilla/* (Win98; I) IBrowse/2.3 (AmigaOS 3.1)] +Parent=IBrowse +Version=2.3 +MajorVer=2 +MinorVer=3 +Platform_Version=98 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iCab + +[iCab] +Parent=DefaultProperties +Comment="iCab" +Browser="iCab" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[iCab/2.7* (Macintosh; ?; 68K*)] +Parent=iCab +Version=2.7 +MajorVer=2 +MinorVer=7 +Platform="Mac68K" +CssVersion=1 + +[iCab/2.7* (Macintosh; ?; PPC*)] +Parent=iCab +Version=2.7 +MajorVer=2 +MinorVer=7 +Platform="MacPPC" +CssVersion=1 + +[iCab/2.8* (Macintosh; ?; *Mac OS X*)] +Parent=iCab +Version=2.8 +MajorVer=2 +MinorVer=8 +Platform="MacOSX" +CssVersion=1 + +[iCab/2.8* (Macintosh; ?; 68K*)] +Parent=iCab +Version=2.8 +MajorVer=2 +MinorVer=8 +Platform="Mac68K" +CssVersion=1 + +[iCab/2.8* (Macintosh; ?; PPC)] +Parent=iCab +Version=2.8 +MajorVer=2 +MinorVer=8 +Platform="MacPPC" +CssVersion=1 + +[iCab/2.9* (Macintosh; ?; *Mac OS X*)] +Parent=iCab +Version=2.9 +MajorVer=2 +MinorVer=9 +Platform="MacOSX" +CssVersion=1 + +[iCab/2.9* (Macintosh; ?; 68K*)] +Parent=iCab +Version=2.9 +MajorVer=2 +MinorVer=9 +Platform="Mac68K" +CssVersion=1 + +[iCab/2.9* (Macintosh; ?; PPC*)] +Parent=iCab +Version=2.9 +MajorVer=2 +MinorVer=9 +Platform="MacPPC" +CssVersion=1 + +[iCab/3.0* (Macintosh; ?; *Mac OS X*)] +Parent=iCab +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="MacOSX" +CssVersion=2 + +[iCab/3.0* (Macintosh; ?; PPC*)] +Parent=iCab +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="MacPPC" +CssVersion=2 + +[iCab/4.0 (Macintosh; U; *Mac OS X)] +Parent=iCab +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="MacOSX" +CssVersion=3 + +[Mozilla/* (compatible; iCab 2.7*; Macintosh; ?; 68K*)] +Parent=iCab +Version=2.7 +MajorVer=2 +MinorVer=7 +Platform="Mac68K" +CssVersion=2 + +[Mozilla/* (compatible; iCab 2.7*; Macintosh; ?; PPC*)] +Parent=iCab +Version=2.7 +MajorVer=2 +MinorVer=7 +Platform="MacPPC" +CssVersion=2 + +[Mozilla/* (compatible; iCab 2.8*; Macintosh; ?; *Mac OS X*)] +Parent=iCab +Version=2.8 +MajorVer=2 +MinorVer=8 +Platform="MacOSX" +CssVersion=2 + +[Mozilla/* (compatible; iCab 2.9*; Macintosh; *Mac OS X*)] +Parent=iCab +Version=2.9 +MajorVer=2 +MinorVer=9 +Platform="MacOSX" +CssVersion=2 + +[Mozilla/* (compatible; iCab 2.9*; Macintosh; ?; PPC*)] +Parent=iCab +Version=2.9 +MajorVer=2 +MinorVer=9 +Platform="MacPPC" +CssVersion=2 + +[Mozilla/* (compatible; iCab 3.0*; Macintosh; *Mac OS X*)] +Parent=iCab +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="MacOSX" +CssVersion=2 + +[Mozilla/* (compatible; iCab 3.0*; Macintosh; ?; PPC*)] +Parent=iCab +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="MacPPC" +CssVersion=2 + +[Mozilla/* (compatible; iCab 4.2*; Macintosh; *Mac OS X*)] +Parent=iCab +Version=4.2 +MajorVer=4 +MinorVer=2 +Platform="MacOSX" +CssVersion=3 + +[Mozilla/* (compatible; iCab 4.8*; Macintosh; *Mac OS X*)] +Parent=iCab +Version=4.8 +MajorVer=4 +MinorVer=8 +CssVersion=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iSiloX + +[iSiloX] +Parent=DefaultProperties +Comment="iSiloX" +Browser="iSiloX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[iSiloX/4.0* MacOS] +Parent=iSiloX +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="MacPPC" + +[iSiloX/4.0* Windows/32] +Parent=iSiloX +Version=4.0 +MajorVer=4 +MinorVer=0 +Platform="Win32" +Win32=true + +[iSiloX/4.1* MacOS] +Parent=iSiloX +Version=4.1 +MajorVer=4 +MinorVer=1 +Platform="MacPPC" + +[iSiloX/4.1* Windows/32] +Parent=iSiloX +Version=4.1 +MajorVer=4 +MinorVer=1 +Platform="Win32" +Win32=true + +[iSiloX/4.2* MacOS] +Parent=iSiloX +Version=4.2 +MajorVer=4 +MinorVer=2 +Platform="MacPPC" + +[iSiloX/4.2* Windows/32] +Parent=iSiloX +Version=4.2 +MajorVer=4 +MinorVer=2 +Platform="Win32" +Win32=true + +[iSiloX/4.3* MacOS] +Parent=iSiloX +Version=4.3 +MajorVer=4 +MinorVer=3 +Platform="MacOSX" + +[iSiloX/4.3* Windows/32] +Parent=iSiloX +Version=4.3 +MajorVer=4 +MinorVer=3 +Platform="Win32" +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lycoris Desktop/LX + +[Lycoris Desktop/LX] +Parent=DefaultProperties +Comment="Lycoris Desktop/LX" +Browser="Lycoris Desktop/LX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/5.0 (*Linux i686* *Desktop/LX Amethyst*) *Gecko/*] +Parent=Lycoris Desktop/LX +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Linux" + +[Mozilla/4.0 (VMS_Mosaic)] +Parent=Mosaic +Platform="OpenVMS" + +[VMS_Mosaic/3.7*] +Parent=Mosaic +Version=3.7 +MajorVer=3 +MinorVer=7 +Platform="OpenVMS" + +[VMS_Mosaic/3.8*] +Parent=Mosaic +Version=3.8 +MajorVer=3 +MinorVer=8 +Platform="OpenVMS" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NetPositive + +[NetPositive] +Parent=DefaultProperties +Comment="NetPositive" +Browser="NetPositive" +Platform="BeOS" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[*NetPositive/2.2*] +Parent=NetPositive +Version=2.2 +MajorVer=2 +MinorVer=2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Shiira + +[Shiira] +Parent=DefaultProperties +Comment="Shiira" +Browser="Shiira" +Platform="MacOSX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/0.9*] +Parent=Shiira +Version=0.9 +MajorVer=0 +MinorVer=9 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/1.0*] +Parent=Shiira +Version=1.0 +MajorVer=1 +MinorVer=0 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/1.1*] +Parent=Shiira +Version=1.1 +MajorVer=1 +MinorVer=1 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/1.2*] +Parent=Shiira +Version=1.2 +MajorVer=1 +MinorVer=2 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/2.1*] +Parent=Shiira +Version=2.1 +MajorVer=2 +MinorVer=1 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/2.2*] +Parent=Shiira +Version=2.2 +MajorVer=2 +MinorVer=2 + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* *Shiira/2.3*] +Parent=Shiira +Version=2.3 +MajorVer=2 +MinorVer=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.0 + +[K-Meleon 1.0] +Parent=DefaultProperties +Comment="K-Meleon 1.0" +Browser="K-Meleon" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.0*] +Parent=K-Meleon 1.0 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinNT" +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.1 + +[K-Meleon 1.1] +Parent=DefaultProperties +Comment="K-Meleon 1.1" +Browser="K-Meleon" +Version=1.1 +MajorVer=1 +MinorVer=1 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.1*] +Parent=K-Meleon 1.1 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinNT" +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.5 + +[K-Meleon 1.5] +Parent=DefaultProperties +Comment="K-Meleon 1.5" +Browser="K-Meleon" +Version=1.5 +MajorVer=1 +MinorVer=5 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.5*] +Parent=K-Meleon 1.5 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinNT" +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.6 + +[K-Meleon 1.6] +Parent=DefaultProperties +Comment="K-Meleon 1.6" +Browser="K-Meleon" +Version=1.6 +MajorVer=1 +MinorVer=6 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.6*] +Parent=K-Meleon 1.6 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.6*] +Parent=K-Meleon 1.6 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.6*] +Parent=K-Meleon 1.6 +Version=1.0 +MajorVer=1 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.*) Gecko/* K-Meleon/1.6*] +Parent=K-Meleon 1.6 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.*) Gecko/* K-Meleon/1.6*] +Parent=K-Meleon 1.6 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 3.0 + +[Konqueror 3.0] +Parent=DefaultProperties +Comment="Konqueror 3.0" +Browser="Konqueror" +Version=3.0 +MajorVer=3 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[*Konqueror/3.*] +Parent=Konqueror 3.0 +Version=3.0 +MajorVer=3 +MinorVer=0 +IFrames=false + +[*Konqueror/3.*FreeBSD*] +Parent=Konqueror 3.0 +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="FreeBSD" +IFrames=false + +[*Konqueror/3.*Linux*] +Parent=Konqueror 3.0 +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Linux" + +[*Konqueror/3.*OpenBSD*] +Parent=Konqueror 3.0 +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="OpenBSD" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.0 + +[Konqueror 4.0] +Parent=DefaultProperties +Comment="Konqueror 4.0" +Browser="Konqueror" +Version=4.0 +MajorVer=4 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (compatible; Konqueror/4.*; *Linux) KHTML/4.* (like Gecko)] +Parent=Konqueror 4.0 +Platform="Linux" + +[Mozilla/5.0 (compatible; Konqueror/4.*; FreeBSD) KHTML/4.* (like Gecko)] +Parent=Konqueror 4.0 +Platform="FreeBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.*; NetBSD) KHTML/4.* (like Gecko)] +Parent=Konqueror 4.0 +Platform="NetBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.0*) KHTML/4.* (like Gecko)] +Parent=Konqueror 4.0 + +[Mozilla/5.0 (compatible; Konqueror/4.0*; Debian) KHTML/4.* (like Gecko)] +Parent=Konqueror 4.0 +Platform="Debian" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.5 + +[Konqueror 4.5] +Parent=DefaultProperties +Comment="Konqueror 4.5" +Browser="Konqueror" +Version=4.5 +MajorVer=4 +MinorVer=5 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (compatible; Konqueror/4.5*) KHTML/4.5* (like Gecko)*] +Parent=Konqueror 4.5 + +[Mozilla/5.0 (compatible; Konqueror/4.5*; *Linux*) KHTML/4.5* (like Gecko)*] +Parent=Konqueror 4.5 +Platform="Linux" + +[Mozilla/5.0 (compatible; Konqueror/4.5*; Debian) KHTML/4.5* (like Gecko)*] +Parent=Konqueror 4.5 +Platform="Debian" + +[Mozilla/5.0 (compatible; Konqueror/4.5*; FreeBSD) KHTML/4.5* (like Gecko)*] +Parent=Konqueror 4.5 +Platform="FreeBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.5*; NetBSD) KHTML/4.5* (like Gecko)*] +Parent=Konqueror 4.5 +Platform="NetBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.5*; Windows) KHTML/4.5* (like Gecko)] +Parent=Konqueror 4.5 +Platform="Win" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.6 + +[Konqueror 4.6] +Parent=DefaultProperties +Comment="Konqueror 4.6" +Browser="Konqueror" +Version=4.6 +MajorVer=4 +MinorVer=6 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (compatible; Konqueror/4.6*) KHTML/4.6* (like Gecko)*] +Parent=Konqueror 4.6 + +[Mozilla/5.0 (compatible; Konqueror/4.6*; *Linux*) KHTML/4.6* (like Gecko)*] +Parent=Konqueror 4.6 +Platform="Linux" + +[Mozilla/5.0 (compatible; Konqueror/4.6*; Debian) KHTML/4.6* (like Gecko)*] +Parent=Konqueror 4.6 +Platform="Debian" + +[Mozilla/5.0 (compatible; Konqueror/4.6*; FreeBSD) KHTML/4.6* (like Gecko)*] +Parent=Konqueror 4.6 +Platform="FreeBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.6*; NetBSD) KHTML/4.6* (like Gecko)*] +Parent=Konqueror 4.6 +Platform="NetBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.6*; Windows) KHTML/4.6* (like Gecko)] +Parent=Konqueror 4.6 +Platform="Win" +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.7 + +[Konqueror 4.7] +Parent=DefaultProperties +Comment="Konqueror 4.7" +Browser="Konqueror" +Version=4.7 +MajorVer=4 +MinorVer=7 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (compatible; Konqueror/4.7*) KHTML/4.7* (like Gecko)*] +Parent=Konqueror 4.7 + +[Mozilla/5.0 (compatible; Konqueror/4.7*; *Linux*) KHTML/4.7* (like Gecko)*] +Parent=Konqueror 4.7 +Platform="Linux" + +[Mozilla/5.0 (compatible; Konqueror/4.7*; Debian) KHTML/4.7* (like Gecko)*] +Parent=Konqueror 4.7 +Platform="Debian" + +[Mozilla/5.0 (compatible; Konqueror/4.7*; FreeBSD) KHTML/4.7* (like Gecko)*] +Parent=Konqueror 4.7 +Platform="FreeBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.7*; NetBSD) KHTML/4.7* (like Gecko)*] +Parent=Konqueror 4.7 +Platform="NetBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.7*; Windows) KHTML/4.7* (like Gecko)] +Parent=Konqueror 4.7 +Platform="Win" +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.8 + +[Konqueror 4.8] +Parent=DefaultProperties +Comment="Konqueror 4.8" +Browser="Konqueror" +Version=4.8 +MajorVer=4 +MinorVer=8 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/5.0 (compatible; Konqueror/4.8*) KHTML/4.8* (like Gecko)*] +Parent=Konqueror 4.8 + +[Mozilla/5.0 (compatible; Konqueror/4.8*; *Linux*) KHTML/4.8* (like Gecko)*] +Parent=Konqueror 4.8 +Platform="Linux" + +[Mozilla/5.0 (compatible; Konqueror/4.8*; Debian) KHTML/4.8* (like Gecko)*] +Parent=Konqueror 4.8 +Platform="Debian" + +[Mozilla/5.0 (compatible; Konqueror/4.8*; FreeBSD) KHTML/4.8* (like Gecko)*] +Parent=Konqueror 4.8 +Platform="FreeBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.8*; NetBSD) KHTML/4.8* (like Gecko)*] +Parent=Konqueror 4.8 +Platform="NetBSD" + +[Mozilla/5.0 (compatible; Konqueror/4.8*; Windows) KHTML/4.8* (like Gecko)] +Parent=Konqueror 4.8 +Platform="Win" +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 2.0 + +[Safari 2.0] +Parent=DefaultProperties +Comment="Safari 2.0" +Browser="Safari" +Version=2.0 +MajorVer=2 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/2.* Safari/*] +Parent=Safari 2.0 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 3.0 + +[Safari 3.0] +Parent=DefaultProperties +Comment="Safari 3.0" +Browser="Safari" +Version=3.0 +MajorVer=3 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/3.* Safari/*] +Parent=Safari 3.0 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 4.0 + +[Safari 4.0] +Parent=DefaultProperties +Comment="Safari 4.0" +Browser="Safari" +Version=4.0 +MajorVer=4 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/4.* Safari/*] +Parent=Safari 4.0 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 5.0 + +[Safari 5.0] +Parent=DefaultProperties +Comment="Safari 5.0" +Browser="Safari" +Version=5.0 +MajorVer=5 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/5.* Safari/*] +Parent=Safari 5.0 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 5.1 + +[Safari 5.1] +Parent=DefaultProperties +Comment="Safari 5.1" +Browser="Safari" +Version=5.1 +MajorVer=5 +MinorVer=1 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="Linux" + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/5.1* Safari/*] +Parent=Safari 5.1 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 6.0 + +[Safari 6.0] +Parent=DefaultProperties +Comment="Safari 6.0" +Browser="Safari" +Version=6.0 +MajorVer=6 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="Linux" + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Version/6.0* Safari/*] +Parent=Safari 6.0 +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari Generic + +[Safari Generic] +Parent=DefaultProperties +Comment="Safari Generic" +Browser="Safari" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=1 + +[Mozilla/5.0 (*CentOS*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="CentOS" + +[Mozilla/5.0 (*Linux x86_64*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic + +[Mozilla/5.0 (*Linux*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="Linux" + +[Mozilla/5.0 (*Mac OS X*) *AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="MacOSX" + +[Mozilla/5.0 (*SymbianOS*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="SymbianOS" +isMobileDevice=true + +[Mozilla/5.0 (*Windows NT 5.0*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="Win2000" +Platform_Version=5.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.1*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="WinXP" +Platform_Version=5.1 +Win32=true + +[Mozilla/5.0 (*Windows NT 5.2*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="WinXP" +Platform_Version=5.2 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.0*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="WinVista" +Platform_Version=6.0 +Win32=true + +[Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) *Safari/*] +Parent=Safari Generic +Platform="Win7" +Platform_Version=6.1 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lunascape 5.0 + +[Lunascape 5.0] +Parent=DefaultProperties +Comment="Lunascape 5.0" +Browser="Lunascape" +Version=5.0 +MajorVer=5 +MinorVer=0 +Platform="Win32" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT *Lunascape 5.0*)*] +Parent=Lunascape 5.0 + +[Mozilla/5.0 (Windows; U; Windows NT *; *) AppleWebKit/* (KHTML, like Gecko*) Lunascape/5.0*] +Parent=Lunascape 5.0 + +[Mozilla/5.0 (Windows; U; Windows NT *; *; rv:1.9.*) Gecko/* Firefox/3.* Lunascape/5.0*] +Parent=Lunascape 5.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lunascape 5.1 + +[Lunascape 5.1] +Parent=DefaultProperties +Comment="Lunascape 5.1" +Browser="Lunascape" +Version=5.1 +MajorVer=5 +MinorVer=1 +Platform="Win32" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT *Lunascape 5.1*)*] +Parent=Lunascape 5.1 + +[Mozilla/5.0 (Windows; U; Windows NT *; *) AppleWebKit/* (KHTML, like Gecko*) Lunascape/5.1*] +Parent=Lunascape 5.1 + +[Mozilla/5.0 (Windows; U; Windows NT *; *; rv:1.9.*) Gecko/* Firefox/3.* Lunascape/5.1*] +Parent=Lunascape 5.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lunascape 6.0 + +[Lunascape 6.0] +Parent=DefaultProperties +Comment="Lunascape 6.0" +Browser="Lunascape" +Version=6.0 +MajorVer=6 +MinorVer=0 +Platform="Win32" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT *Lunascape 6.0*)*] +Parent=Lunascape 6.0 + +[Mozilla/5.0 (Windows; U; Windows NT *; *) AppleWebKit/* (KHTML, like Gecko*) Lunascape/6.0*] +Parent=Lunascape 6.0 + +[Mozilla/5.0 (Windows; U; Windows NT *; *; rv:1.9.*) Gecko/* Firefox/3.* Lunascape/6.0*] +Parent=Lunascape 6.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Maxthon 2.0 + +[Maxthon 2.0] +Parent=DefaultProperties +Comment="Maxthon 2.0" +Browser="Maxthon" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +CssVersion=2 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.0; *Maxthon*)*] +Parent=Maxthon 2.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.1; *Maxthon*)*] +Parent=Maxthon 2.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.2; *Maxthon*)*] +Parent=Maxthon 2.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.0; *Maxthon*)*] +Parent=Maxthon 2.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.1; *Maxthon*)*] +Parent=Maxthon 2.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Maxthon 3.0 + +[Maxthon 3.0] +Parent=DefaultProperties +Comment="Maxthon 3.0" +Browser="Maxthon" +Version=3.0 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *) AppleWebKit/* (KHTML, like Gecko) Maxthon/3.0 Safari/*] +Parent=Maxthon 3.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Maxthon/3.0 Safari/*] +Parent=Maxthon 3.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Maxthon/3.0 Safari/*] +Parent=Maxthon 3.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Maxthon/3.0 Safari/*] +Parent=Maxthon 3.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *) AppleWebKit/* (KHTML, like Gecko) Maxthon/3.0 Safari/*] +Parent=Maxthon 3.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OmniWeb 5.0 + +[OmniWeb 5.0] +Parent=DefaultProperties +Comment="OmniWeb 5.0" +Browser="OmniWeb" +Version=5.0 +MajorVer=5 +MinorVer=0 +Platform="MacOSX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *OmniWeb/*] +Parent=OmniWeb 5.0 +CssVersion=1 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko) *OmniWeb/v558.*] +Parent=OmniWeb 5.0 +Version=5.0 +MajorVer=5 +MinorVer=0 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari) *OmniWeb/v563.*] +Parent=OmniWeb 5.0 +Version=5.1 +MajorVer=5 +MinorVer=1 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/420) *OmniWeb/v*] +Parent=OmniWeb 5.0 +Version=5.5 +MajorVer=5 +MinorVer=5 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/522) *OmniWeb/v61?.0.*] +Parent=OmniWeb 5.0 +Version=5.6 +MajorVer=5 +MinorVer=6 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/523.10) *OmniWeb/v621.*] +Parent=OmniWeb 5.0 +Version=5.7 +MajorVer=5 +MinorVer=7 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/525.20) *OmniWeb/v622.*] +Parent=OmniWeb 5.0 +Version=5.9 +MajorVer=5 +MinorVer=9 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/525.20) *OmniWeb/v622.3.*] +Parent=OmniWeb 5.0 +Version=5.8 +MajorVer=5 +MinorVer=8 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/420 (KHTML, like Gecko, Safari) *OmniWeb/v*] +Parent=OmniWeb 5.0 +Version=5.5 +MajorVer=5 +MinorVer=5 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OmniWeb 5.10 + +[OmniWeb 5.10] +Parent=DefaultProperties +Comment="OmniWeb 5.10" +Browser="OmniWeb" +Version=5.10 +MajorVer=5 +MinorVer=10 +Platform="MacOSX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/528.16) *OmniWeb/622.*] +Parent=OmniWeb 5.10 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/528.16) *Version/5.10* *OmniWeb/v622.*] +Parent=OmniWeb 5.10 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OmniWeb 5.11 + +[OmniWeb 5.11] +Parent=DefaultProperties +Comment="OmniWeb 5.11" +Browser="OmniWeb" +Version=5.11 +MajorVer=5 +MinorVer=11 +Platform="MacOSX" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OmniWeb 5.11 + +[Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML, like Gecko, Safari/*) *Version/5.11* *OmniWeb/*] +Parent=OmniWeb 5.11 +Comment="OmniWeb 5.11" +Browser="OmniWeb" +Version=5.11 +MajorVer=5 +MinorVer=11 +CssVersion=3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 10.00 + +[Opera 10.00] +Parent=DefaultProperties +Comment="Opera 10.00" +Browser="Opera" +Version=10.00 +MajorVer=10 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?10.*] +Parent=Opera 10.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?10.*] +Parent=Opera 10.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/10.*FreeBSD*)*] +Parent=Opera 10.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/10.*Linux*)*] +Parent=Opera 10.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/10.*Mac OS X*)*] +Parent=Opera 10.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/10.*SunOS*)*] +Parent=Opera 10.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/10.*Win 9x 4.90*)*] +Parent=Opera 10.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/10.*Windows 2000*)*] +Parent=Opera 10.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/10.*Windows 95*)*] +Parent=Opera 10.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/10.*Windows 98*)*] +Parent=Opera 10.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/10.*Windows ME*)*] +Parent=Opera 10.00 + +[Mozilla/?.*(*Opera/10.*Windows NT 4.0*)*] +Parent=Opera 10.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/10.*Windows NT 5.0*)*] +Parent=Opera 10.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/10.*Windows NT 5.1*)*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/10.*Windows NT 5.2*)*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/10.*Windows NT 6.0*)*] +Parent=Opera 10.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/10.*Windows NT 6.1*)*] +Parent=Opera 10.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?10.*] +Parent=Opera 10.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?10.*] +Parent=Opera 10.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?10.*] +Parent=Opera 10.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/10.*(*FreeBSD*)*] +Parent=Opera 10.00 +Platform="FreeBSD" +Win32=false + +[Opera/10.*(*Linux*)*] +Parent=Opera 10.00 +Platform="Linux" +Win32=false + +[Opera/10.*(*Mac OS X*)*] +Parent=Opera 10.00 +Platform="MacOSX" +Win32=false + +[Opera/10.*(*SunOS*)*] +Parent=Opera 10.00 +Platform="SunOS" +Win32=false + +[Opera/10.*(*Win 9x 4.90*)*] +Parent=Opera 10.00 +Platform="WinME" + +[Opera/10.*(*Windows 2000*)*] +Parent=Opera 10.00 +Platform="Win2000" + +[Opera/10.*(*Windows 95*)*] +Parent=Opera 10.00 +Platform="Win95" +Platform_Version=95 + +[Opera/10.*(*Windows 98*)*] +Parent=Opera 10.00 +Platform="Win98" +Platform_Version=98 + +[Opera/10.*(*Windows ME*)*] +Parent=Opera 10.00 +Platform="WinME" + +[Opera/10.*(*Windows NT 4.0*)*] +Parent=Opera 10.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/10.*(*Windows NT 5.0*)*] +Parent=Opera 10.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/10.*(*Windows NT 5.1*)*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/10.*(*Windows NT 5.2*)*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/10.*(*Windows NT 6.0*)*] +Parent=Opera 10.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/10.*(*Windows NT 6.1*)*] +Parent=Opera 10.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/10.*] +Parent=Opera 10.00 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/10.*] +Parent=Opera 10.00 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/10.*] +Parent=Opera 10.00 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/10.*] +Parent=Opera 10.00 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/10.*] +Parent=Opera 10.00 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/10.*] +Parent=Opera 10.00 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/10.*] +Parent=Opera 10.00 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/10.*] +Parent=Opera 10.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/10.*] +Parent=Opera 10.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/10.*] +Parent=Opera 10.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 11.00 + +[Opera 11.00] +Parent=DefaultProperties +Comment="Opera 11.00" +Browser="Opera" +Version=11.00 +MajorVer=11 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?11.*] +Parent=Opera 11.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?11.*] +Parent=Opera 11.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.*FreeBSD*)*] +Parent=Opera 11.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/11.*Linux*)*] +Parent=Opera 11.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/11.*Mac OS X*)*] +Parent=Opera 11.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.*SunOS*)*] +Parent=Opera 11.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/11.*Win 9x 4.90*)*] +Parent=Opera 11.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/11.*Windows 2000*)*] +Parent=Opera 11.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/11.*Windows 95*)*] +Parent=Opera 11.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/11.*Windows 98*)*] +Parent=Opera 11.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/11.*Windows ME*)*] +Parent=Opera 11.00 + +[Mozilla/?.*(*Opera/11.*Windows NT 4.0*)*] +Parent=Opera 11.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/11.*Windows NT 5.0*)*] +Parent=Opera 11.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/11.*Windows NT 5.1*)*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/11.*Windows NT 5.2*)*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/11.*Windows NT 6.0*)*] +Parent=Opera 11.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/11.*Windows NT 6.1*)*] +Parent=Opera 11.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?11.*] +Parent=Opera 11.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?11.*] +Parent=Opera 11.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?11.*] +Parent=Opera 11.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/11.*(*FreeBSD*)*] +Parent=Opera 11.00 +Platform="FreeBSD" +Win32=false + +[Opera/11.*(*Linux*)*] +Parent=Opera 11.00 +Platform="Linux" +Win32=false + +[Opera/11.*(*Mac OS X*)*] +Parent=Opera 11.00 +Platform="MacOSX" +Win32=false + +[Opera/11.*(*SunOS*)*] +Parent=Opera 11.00 +Platform="SunOS" +Win32=false + +[Opera/11.*(*Win 9x 4.90*)*] +Parent=Opera 11.00 +Platform="WinME" + +[Opera/11.*(*Windows 2000*)*] +Parent=Opera 11.00 +Platform="Win2000" + +[Opera/11.*(*Windows 95*)*] +Parent=Opera 11.00 +Platform="Win95" +Platform_Version=95 + +[Opera/11.*(*Windows 98*)*] +Parent=Opera 11.00 +Platform="Win98" +Platform_Version=98 + +[Opera/11.*(*Windows ME*)*] +Parent=Opera 11.00 +Platform="WinME" + +[Opera/11.*(*Windows NT 4.0*)*] +Parent=Opera 11.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/11.*(*Windows NT 5.0*)*] +Parent=Opera 11.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/11.*(*Windows NT 5.1*)*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/11.*(*Windows NT 5.2*)*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/11.*(*Windows NT 6.0*)*] +Parent=Opera 11.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/11.*(*Windows NT 6.1*)*] +Parent=Opera 11.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/11.*] +Parent=Opera 11.00 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/11.*] +Parent=Opera 11.00 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/11.*] +Parent=Opera 11.00 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/11.*] +Parent=Opera 11.00 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/11.*] +Parent=Opera 11.00 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/11.*] +Parent=Opera 11.00 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/11.*] +Parent=Opera 11.00 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/11.*] +Parent=Opera 11.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/11.*] +Parent=Opera 11.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/11.*] +Parent=Opera 11.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 11.10 + +[Opera 11.10] +Parent=DefaultProperties +Comment="Opera 11.10" +Browser="Opera" +Version=11.10 +MajorVer=11 +MinorVer=10 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.1*FreeBSD*)*] +Parent=Opera 11.10 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/11.1*Linux*)*] +Parent=Opera 11.10 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/11.1*Mac OS X*)*] +Parent=Opera 11.10 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.1*SunOS*)*] +Parent=Opera 11.10 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/11.1*Win 9x 4.90*)*] +Parent=Opera 11.10 +Platform="WinME" + +[Mozilla/?.*(*Opera/11.1*Windows 2000*)*] +Parent=Opera 11.10 +Platform="Win2000" + +[Mozilla/?.*(*Opera/11.1*Windows 95*)*] +Parent=Opera 11.10 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/11.1*Windows 98*)*] +Parent=Opera 11.10 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/11.1*Windows ME*)*] +Parent=Opera 11.10 + +[Mozilla/?.*(*Opera/11.1*Windows NT 4.0*)*] +Parent=Opera 11.10 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/11.1*Windows NT 5.0*)*] +Parent=Opera 11.10 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/11.1*Windows NT 5.1*)*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/11.1*Windows NT 5.2*)*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/11.1*Windows NT 6.0*)*] +Parent=Opera 11.10 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/11.1*Windows NT 6.1*)*] +Parent=Opera 11.10 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?11.1*] +Parent=Opera 11.10 +Platform="Win7" +Platform_Version=6.1 + +[Opera/11.1*(*FreeBSD*)*] +Parent=Opera 11.10 +Platform="FreeBSD" +Win32=false + +[Opera/11.1*(*Linux*)*] +Parent=Opera 11.10 +Platform="Linux" +Win32=false + +[Opera/11.1*(*Mac OS X*)*] +Parent=Opera 11.10 +Platform="MacOSX" +Win32=false + +[Opera/11.1*(*SunOS*)*] +Parent=Opera 11.10 +Platform="SunOS" +Win32=false + +[Opera/11.1*(*Win 9x 4.90*)*] +Parent=Opera 11.10 +Platform="WinME" + +[Opera/11.1*(*Windows 2000*)*] +Parent=Opera 11.10 +Platform="Win2000" + +[Opera/11.1*(*Windows 95*)*] +Parent=Opera 11.10 +Platform="Win95" +Platform_Version=95 + +[Opera/11.1*(*Windows 98*)*] +Parent=Opera 11.10 +Platform="Win98" +Platform_Version=98 + +[Opera/11.1*(*Windows ME*)*] +Parent=Opera 11.10 +Platform="WinME" + +[Opera/11.1*(*Windows NT 4.0*)*] +Parent=Opera 11.10 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/11.1*(*Windows NT 5.0*)*] +Parent=Opera 11.10 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/11.1*(*Windows NT 5.1*)*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/11.1*(*Windows NT 5.2*)*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/11.1*(*Windows NT 6.0*)*] +Parent=Opera 11.10 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/11.1*(*Windows NT 6.1*)*] +Parent=Opera 11.10 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/11.1*] +Parent=Opera 11.10 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/11.1*] +Parent=Opera 11.10 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/11.1*] +Parent=Opera 11.10 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/11.1*] +Parent=Opera 11.10 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/11.1*] +Parent=Opera 11.10 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 11.50 + +[Opera 11.50] +Parent=DefaultProperties +Comment="Opera 11.50" +Browser="Opera" +Version=11.50 +MajorVer=11 +MinorVer=50 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.5*FreeBSD*)*] +Parent=Opera 11.50 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/11.5*Linux*)*] +Parent=Opera 11.50 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/11.5*Mac OS X*)*] +Parent=Opera 11.50 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.5*SunOS*)*] +Parent=Opera 11.50 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/11.5*Win 9x 4.90*)*] +Parent=Opera 11.50 +Platform="WinME" + +[Mozilla/?.*(*Opera/11.5*Windows 2000*)*] +Parent=Opera 11.50 +Platform="Win2000" + +[Mozilla/?.*(*Opera/11.5*Windows 95*)*] +Parent=Opera 11.50 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/11.5*Windows 98*)*] +Parent=Opera 11.50 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/11.5*Windows ME*)*] +Parent=Opera 11.50 + +[Mozilla/?.*(*Opera/11.5*Windows NT 4.0*)*] +Parent=Opera 11.50 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/11.5*Windows NT 5.0*)*] +Parent=Opera 11.50 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/11.5*Windows NT 5.1*)*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/11.5*Windows NT 5.2*)*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/11.5*Windows NT 6.0*)*] +Parent=Opera 11.50 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/11.5*Windows NT 6.1*)*] +Parent=Opera 11.50 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?11.5*] +Parent=Opera 11.50 +Platform="Win7" +Platform_Version=6.1 + +[Opera/11.5*(*FreeBSD*)*] +Parent=Opera 11.50 +Platform="FreeBSD" +Win32=false + +[Opera/11.5*(*Linux*)*] +Parent=Opera 11.50 +Platform="Linux" +Win32=false + +[Opera/11.5*(*Mac OS X*)*] +Parent=Opera 11.50 +Platform="MacOSX" +Win32=false + +[Opera/11.5*(*SunOS*)*] +Parent=Opera 11.50 +Platform="SunOS" +Win32=false + +[Opera/11.5*(*Win 9x 4.90*)*] +Parent=Opera 11.50 +Platform="WinME" + +[Opera/11.5*(*Windows 2000*)*] +Parent=Opera 11.50 +Platform="Win2000" + +[Opera/11.5*(*Windows 95*)*] +Parent=Opera 11.50 +Platform="Win95" +Platform_Version=95 + +[Opera/11.5*(*Windows 98*)*] +Parent=Opera 11.50 +Platform="Win98" +Platform_Version=98 + +[Opera/11.5*(*Windows ME*)*] +Parent=Opera 11.50 +Platform="WinME" + +[Opera/11.5*(*Windows NT 4.0*)*] +Parent=Opera 11.50 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/11.5*(*Windows NT 5.0*)*] +Parent=Opera 11.50 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/11.5*(*Windows NT 5.1*)*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/11.5*(*Windows NT 5.2*)*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/11.5*(*Windows NT 6.0*)*] +Parent=Opera 11.50 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/11.5*(*Windows NT 6.1*)*] +Parent=Opera 11.50 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/11.5*] +Parent=Opera 11.50 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/11.5*] +Parent=Opera 11.50 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/11.5*] +Parent=Opera 11.50 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/11.5*] +Parent=Opera 11.50 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/11.5*] +Parent=Opera 11.50 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 11.60 + +[Opera 11.60] +Parent=DefaultProperties +Comment="Opera 11.60" +Browser="Opera" +Version=11.60 +MajorVer=11 +MinorVer=60 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.6*FreeBSD*)*] +Parent=Opera 11.60 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/11.6*Linux*)*] +Parent=Opera 11.60 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/11.6*Mac OS X*)*] +Parent=Opera 11.60 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/11.6*SunOS*)*] +Parent=Opera 11.60 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/11.6*Win 9x 4.90*)*] +Parent=Opera 11.60 +Platform="WinME" + +[Mozilla/?.*(*Opera/11.6*Windows 2000*)*] +Parent=Opera 11.60 +Platform="Win2000" + +[Mozilla/?.*(*Opera/11.6*Windows 95*)*] +Parent=Opera 11.60 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/11.6*Windows 98*)*] +Parent=Opera 11.60 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/11.6*Windows ME*)*] +Parent=Opera 11.60 + +[Mozilla/?.*(*Opera/11.6*Windows NT 4.0*)*] +Parent=Opera 11.60 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/11.6*Windows NT 5.0*)*] +Parent=Opera 11.60 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/11.6*Windows NT 5.1*)*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/11.6*Windows NT 5.2*)*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/11.6*Windows NT 6.0*)*] +Parent=Opera 11.60 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/11.6*Windows NT 6.1*)*] +Parent=Opera 11.60 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?11.6*] +Parent=Opera 11.60 +Platform="Win7" +Platform_Version=6.1 + +[Opera/11.6*(*FreeBSD*)*] +Parent=Opera 11.60 +Platform="FreeBSD" +Win32=false + +[Opera/11.6*(*Linux*)*] +Parent=Opera 11.60 +Platform="Linux" +Win32=false + +[Opera/11.6*(*Mac OS X*)*] +Parent=Opera 11.60 +Platform="MacOSX" +Win32=false + +[Opera/11.6*(*SunOS*)*] +Parent=Opera 11.60 +Platform="SunOS" +Win32=false + +[Opera/11.6*(*Win 9x 4.90*)*] +Parent=Opera 11.60 +Platform="WinME" + +[Opera/11.6*(*Windows 2000*)*] +Parent=Opera 11.60 +Platform="Win2000" + +[Opera/11.6*(*Windows 95*)*] +Parent=Opera 11.60 +Platform="Win95" +Platform_Version=95 + +[Opera/11.6*(*Windows 98*)*] +Parent=Opera 11.60 +Platform="Win98" +Platform_Version=98 + +[Opera/11.6*(*Windows ME*)*] +Parent=Opera 11.60 +Platform="WinME" + +[Opera/11.6*(*Windows NT 4.0*)*] +Parent=Opera 11.60 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/11.6*(*Windows NT 5.0*)*] +Parent=Opera 11.60 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/11.6*(*Windows NT 5.1*)*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/11.6*(*Windows NT 5.2*)*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/11.6*(*Windows NT 6.0*)*] +Parent=Opera 11.60 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/11.6*(*Windows NT 6.1*)*] +Parent=Opera 11.60 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/11.6*] +Parent=Opera 11.60 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/11.6*] +Parent=Opera 11.60 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/11.6*] +Parent=Opera 11.60 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/11.6*] +Parent=Opera 11.60 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/11.6*] +Parent=Opera 11.60 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 12.00 + +[Opera 12.00] +Parent=DefaultProperties +Comment="Opera 12.00" +Browser="Opera" +Version=12.00 +MajorVer=12 +MinorVer=0 +Beta=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?12.*] +Parent=Opera 12.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?12.*] +Parent=Opera 12.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/12.*FreeBSD*)*] +Parent=Opera 12.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/12.*Linux*)*] +Parent=Opera 12.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/12.*Mac OS X*)*] +Parent=Opera 12.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/12.*SunOS*)*] +Parent=Opera 12.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/12.*Win 9x 4.90*)*] +Parent=Opera 12.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/12.*Windows 2000*)*] +Parent=Opera 12.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/12.*Windows 95*)*] +Parent=Opera 12.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/12.*Windows 98*)*] +Parent=Opera 12.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/12.*Windows ME*)*] +Parent=Opera 12.00 + +[Mozilla/?.*(*Opera/12.*Windows NT 4.0*)*] +Parent=Opera 12.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/12.*Windows NT 5.0*)*] +Parent=Opera 12.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/12.*Windows NT 5.1*)*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/12.*Windows NT 5.2*)*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/12.*Windows NT 6.0*)*] +Parent=Opera 12.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/12.*Windows NT 6.1*)*] +Parent=Opera 12.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?12.*] +Parent=Opera 12.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?12.*] +Parent=Opera 12.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?12.*] +Parent=Opera 12.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/12.*(*FreeBSD*)*] +Parent=Opera 12.00 +Platform="FreeBSD" +Win32=false + +[Opera/12.*(*Linux*)*] +Parent=Opera 12.00 +Platform="Linux" +Win32=false + +[Opera/12.*(*Mac OS X*)*] +Parent=Opera 12.00 +Platform="MacOSX" +Win32=false + +[Opera/12.*(*SunOS*)*] +Parent=Opera 12.00 +Platform="SunOS" +Win32=false + +[Opera/12.*(*Win 9x 4.90*)*] +Parent=Opera 12.00 +Platform="WinME" + +[Opera/12.*(*Windows 2000*)*] +Parent=Opera 12.00 +Platform="Win2000" + +[Opera/12.*(*Windows 95*)*] +Parent=Opera 12.00 +Platform="Win95" +Platform_Version=95 + +[Opera/12.*(*Windows 98*)*] +Parent=Opera 12.00 +Platform="Win98" +Platform_Version=98 + +[Opera/12.*(*Windows ME*)*] +Parent=Opera 12.00 +Platform="WinME" + +[Opera/12.*(*Windows NT 4.0*)*] +Parent=Opera 12.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/12.*(*Windows NT 5.0*)*] +Parent=Opera 12.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/12.*(*Windows NT 5.1*)*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/12.*(*Windows NT 5.2*)*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/12.*(*Windows NT 6.0*)*] +Parent=Opera 12.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/12.*(*Windows NT 6.1*)*] +Parent=Opera 12.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*FreeBSD*)*Version/12.*] +Parent=Opera 12.00 +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*Version/12.*] +Parent=Opera 12.00 +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*Version/12.*] +Parent=Opera 12.00 +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*SunOS*)*Version/12.*] +Parent=Opera 12.00 +Platform="SunOS" + +[Opera/9.80*(*Win 9x 4.90*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*Version/12.*] +Parent=Opera 12.00 +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*Version/12.*] +Parent=Opera 12.00 +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*Version/12.*] +Parent=Opera 12.00 +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows ME*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*Version/12.*] +Parent=Opera 12.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*Version/12.*] +Parent=Opera 12.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*Version/12.*] +Parent=Opera 12.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 2.00 + +[Opera 2.00] +Parent=DefaultProperties +Comment="Opera 2.00" +Browser="Opera" +Version=2.00 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[Mozilla/?.*(*FreeBSD*)*Opera?2.*] +Parent=Opera 2.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?2.*] +Parent=Opera 2.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/2.*FreeBSD*)*] +Parent=Opera 2.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/2.*Linux*)*] +Parent=Opera 2.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/2.*Mac OS X*)*] +Parent=Opera 2.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/2.*SunOS*)*] +Parent=Opera 2.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/2.*Win 9x 4.90*)*] +Parent=Opera 2.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/2.*Windows 2000*)*] +Parent=Opera 2.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/2.*Windows 95*)*] +Parent=Opera 2.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/2.*Windows 98*)*] +Parent=Opera 2.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/2.*Windows ME*)*] +Parent=Opera 2.00 + +[Mozilla/?.*(*Opera/2.*Windows NT 4.0*)*] +Parent=Opera 2.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/2.*Windows NT 5.0*)*] +Parent=Opera 2.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/2.*Windows NT 5.1*)*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/2.*Windows NT 5.2*)*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/2.*Windows NT 6.0*)*] +Parent=Opera 2.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/2.*Windows NT 6.1*)*] +Parent=Opera 2.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?2.*] +Parent=Opera 2.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?2.*] +Parent=Opera 2.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?2.*] +Parent=Opera 2.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/2.*(*FreeBSD*)*] +Parent=Opera 2.00 +Platform="FreeBSD" +Win32=false + +[Opera/2.*(*Linux*)*] +Parent=Opera 2.00 +Platform="Linux" +Win32=false + +[Opera/2.*(*Mac OS X*)*] +Parent=Opera 2.00 +Platform="MacOSX" +Win32=false + +[Opera/2.*(*SunOS*)*] +Parent=Opera 2.00 +Platform="SunOS" +Win32=false + +[Opera/2.*(*Win 9x 4.90*)*] +Parent=Opera 2.00 +Platform="WinME" + +[Opera/2.*(*Windows 2000*)*] +Parent=Opera 2.00 +Platform="Win2000" + +[Opera/2.*(*Windows 95*)*] +Parent=Opera 2.00 +Platform="Win95" +Platform_Version=95 + +[Opera/2.*(*Windows 98*)*] +Parent=Opera 2.00 +Platform="Win98" +Platform_Version=98 + +[Opera/2.*(*Windows ME*)*] +Parent=Opera 2.00 +Platform="WinME" + +[Opera/2.*(*Windows NT 4.0*)*] +Parent=Opera 2.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/2.*(*Windows NT 5.0*)*] +Parent=Opera 2.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/2.*(*Windows NT 5.1*)*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/2.*(*Windows NT 5.2*)*] +Parent=Opera 2.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/2.*(*Windows NT 6.0*)*] +Parent=Opera 2.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/2.*(*Windows NT 6.1*)*] +Parent=Opera 2.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 3.0 + +[Opera 3.00] +Parent=DefaultProperties +Comment="Opera 3.0" +Browser="Opera" +Version=3.00 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true + +[Mozilla/?.*(*FreeBSD*)*Opera?3.*] +Parent=Opera 3.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?3.*] +Parent=Opera 3.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/3.*FreeBSD*)*] +Parent=Opera 3.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/3.*Linux*)*] +Parent=Opera 3.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/3.*Mac OS X*)*] +Parent=Opera 3.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/3.*SunOS*)*] +Parent=Opera 3.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/3.*Win 9x 4.90*)*] +Parent=Opera 3.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/3.*Windows 2000*)*] +Parent=Opera 3.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/3.*Windows 95*)*] +Parent=Opera 3.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/3.*Windows 98*)*] +Parent=Opera 3.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/3.*Windows ME*)*] +Parent=Opera 3.00 + +[Mozilla/?.*(*Opera/3.*Windows NT 4.0*)*] +Parent=Opera 3.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/3.*Windows NT 5.0*)*] +Parent=Opera 3.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/3.*Windows NT 5.1*)*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/3.*Windows NT 5.2*)*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/3.*Windows NT 6.0*)*] +Parent=Opera 3.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/3.*Windows NT 6.1*)*] +Parent=Opera 3.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?3.*] +Parent=Opera 3.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?3.*] +Parent=Opera 3.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?3.*] +Parent=Opera 3.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/3.*(*FreeBSD*)*] +Parent=Opera 3.00 +Platform="FreeBSD" +Win32=false + +[Opera/3.*(*Linux*)*] +Parent=Opera 3.00 +Platform="Linux" +Win32=false + +[Opera/3.*(*Mac OS X*)*] +Parent=Opera 3.00 +Platform="MacOSX" +Win32=false + +[Opera/3.*(*SunOS*)*] +Parent=Opera 3.00 +Platform="SunOS" +Win32=false + +[Opera/3.*(*Win 9x 4.90*)*] +Parent=Opera 3.00 +Platform="WinME" + +[Opera/3.*(*Windows 2000*)*] +Parent=Opera 3.00 +Platform="Win2000" + +[Opera/3.*(*Windows 95*)*] +Parent=Opera 3.00 +Platform="Win95" +Platform_Version=95 + +[Opera/3.*(*Windows 98*)*] +Parent=Opera 3.00 +Platform="Win98" +Platform_Version=98 + +[Opera/3.*(*Windows ME*)*] +Parent=Opera 3.00 +Platform="WinME" + +[Opera/3.*(*Windows NT 4.0*)*] +Parent=Opera 3.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/3.*(*Windows NT 5.0*)*] +Parent=Opera 3.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/3.*(*Windows NT 5.1*)*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/3.*(*Windows NT 5.2*)*] +Parent=Opera 3.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/3.*(*Windows NT 6.0*)*] +Parent=Opera 3.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/3.*(*Windows NT 6.1*)*] +Parent=Opera 3.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 4.00 + +[Opera 4.00] +Parent=DefaultProperties +Comment="Opera 4.00" +Browser="Opera" +Version=4.00 +MajorVer=4 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/?.*(*FreeBSD*)*Opera?4.*] +Parent=Opera 4.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?4.*] +Parent=Opera 4.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/4.*FreeBSD*)*] +Parent=Opera 4.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/4.*Linux*)*] +Parent=Opera 4.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/4.*Mac OS X*)*] +Parent=Opera 4.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/4.*SunOS*)*] +Parent=Opera 4.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/4.*Win 9x 4.90*)*] +Parent=Opera 4.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/4.*Windows 2000*)*] +Parent=Opera 4.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/4.*Windows 95*)*] +Parent=Opera 4.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/4.*Windows 98*)*] +Parent=Opera 4.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/4.*Windows ME*)*] +Parent=Opera 4.00 + +[Mozilla/?.*(*Opera/4.*Windows NT 4.0*)*] +Parent=Opera 4.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/4.*Windows NT 5.0*)*] +Parent=Opera 4.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/4.*Windows NT 5.1*)*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/4.*Windows NT 5.2*)*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/4.*Windows NT 6.0*)*] +Parent=Opera 4.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/4.*Windows NT 6.1*)*] +Parent=Opera 4.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?4.*] +Parent=Opera 4.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?4.*] +Parent=Opera 4.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?4.*] +Parent=Opera 4.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/4.*(*FreeBSD*)*] +Parent=Opera 4.00 +Platform="FreeBSD" +Win32=false + +[Opera/4.*(*Linux*)*] +Parent=Opera 4.00 +Platform="Linux" +Win32=false + +[Opera/4.*(*Mac OS X*)*] +Parent=Opera 4.00 +Platform="MacOSX" +Win32=false + +[Opera/4.*(*SunOS*)*] +Parent=Opera 4.00 +Platform="SunOS" +Win32=false + +[Opera/4.*(*Win 9x 4.90*)*] +Parent=Opera 4.00 +Platform="WinME" + +[Opera/4.*(*Windows 2000*)*] +Parent=Opera 4.00 +Platform="Win2000" + +[Opera/4.*(*Windows 95*)*] +Parent=Opera 4.00 +Platform="Win95" +Platform_Version=95 + +[Opera/4.*(*Windows 98*)*] +Parent=Opera 4.00 +Platform="Win98" +Platform_Version=98 + +[Opera/4.*(*Windows ME*)*] +Parent=Opera 4.00 +Platform="WinME" + +[Opera/4.*(*Windows NT 4.0*)*] +Parent=Opera 4.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/4.*(*Windows NT 5.0*)*] +Parent=Opera 4.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/4.*(*Windows NT 5.1*)*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/4.*(*Windows NT 5.2*)*] +Parent=Opera 4.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/4.*(*Windows NT 6.0*)*] +Parent=Opera 4.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/4.*(*Windows NT 6.1*)*] +Parent=Opera 4.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 5.00 + +[Opera 5.00] +Parent=DefaultProperties +Comment="Opera 5.00" +Browser="Opera" +Version=5.00 +MajorVer=5 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/?.*(*FreeBSD*)*Opera?5.*] +Parent=Opera 5.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?5.*] +Parent=Opera 5.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/5.*FreeBSD*)*] +Parent=Opera 5.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/5.*Linux*)*] +Parent=Opera 5.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/5.*Mac OS X*)*] +Parent=Opera 5.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/5.*SunOS*)*] +Parent=Opera 5.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/5.*Win 9x 4.90*)*] +Parent=Opera 5.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/5.*Windows 2000*)*] +Parent=Opera 5.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/5.*Windows 95*)*] +Parent=Opera 5.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/5.*Windows 98*)*] +Parent=Opera 5.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/5.*Windows ME*)*] +Parent=Opera 5.00 + +[Mozilla/?.*(*Opera/5.*Windows NT 4.0*)*] +Parent=Opera 5.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/5.*Windows NT 5.0*)*] +Parent=Opera 5.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/5.*Windows NT 5.1*)*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/5.*Windows NT 5.2*)*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/5.*Windows NT 6.0*)*] +Parent=Opera 5.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/5.*Windows NT 6.1*)*] +Parent=Opera 5.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?5.*] +Parent=Opera 5.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?5.*] +Parent=Opera 5.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?5.*] +Parent=Opera 5.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/5.*(*FreeBSD*)*] +Parent=Opera 5.00 +Platform="FreeBSD" +Win32=false + +[Opera/5.*(*Linux*)*] +Parent=Opera 5.00 +Platform="Linux" +Win32=false + +[Opera/5.*(*Mac OS X*)*] +Parent=Opera 5.00 +Platform="MacOSX" +Win32=false + +[Opera/5.*(*SunOS*)*] +Parent=Opera 5.00 +Platform="SunOS" +Win32=false + +[Opera/5.*(*Win 9x 4.90*)*] +Parent=Opera 5.00 +Platform="WinME" + +[Opera/5.*(*Windows 2000*)*] +Parent=Opera 5.00 +Platform="Win2000" + +[Opera/5.*(*Windows 95*)*] +Parent=Opera 5.00 +Platform="Win95" +Platform_Version=95 + +[Opera/5.*(*Windows 98*)*] +Parent=Opera 5.00 +Platform="Win98" +Platform_Version=98 + +[Opera/5.*(*Windows ME*)*] +Parent=Opera 5.00 +Platform="WinME" + +[Opera/5.*(*Windows NT 4.0*)*] +Parent=Opera 5.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/5.*(*Windows NT 5.0*)*] +Parent=Opera 5.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/5.*(*Windows NT 5.1*)*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/5.*(*Windows NT 5.2*)*] +Parent=Opera 5.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/5.*(*Windows NT 6.0*)*] +Parent=Opera 5.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/5.*(*Windows NT 6.1*)*] +Parent=Opera 5.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 6.00 + +[Opera 6.00] +Parent=DefaultProperties +Comment="Opera 6.00" +Browser="Opera" +Version=6.00 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/?.*(*FreeBSD*)*Opera?6.*] +Parent=Opera 6.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?6.*] +Parent=Opera 6.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/6.*FreeBSD*)*] +Parent=Opera 6.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/6.*Linux*)*] +Parent=Opera 6.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/6.*Mac OS X*)*] +Parent=Opera 6.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/6.*SunOS*)*] +Parent=Opera 6.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/6.*Win 9x 4.90*)*] +Parent=Opera 6.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/6.*Windows 2000*)*] +Parent=Opera 6.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/6.*Windows 95*)*] +Parent=Opera 6.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/6.*Windows 98*)*] +Parent=Opera 6.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/6.*Windows ME*)*] +Parent=Opera 6.00 + +[Mozilla/?.*(*Opera/6.*Windows NT 4.0*)*] +Parent=Opera 6.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/6.*Windows NT 5.0*)*] +Parent=Opera 6.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/6.*Windows NT 5.1*)*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/6.*Windows NT 5.2*)*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/6.*Windows NT 6.0*)*] +Parent=Opera 6.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/6.*Windows NT 6.1*)*] +Parent=Opera 6.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?6.*] +Parent=Opera 6.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Symbian*)*Opera?6.*] +Parent=Opera 6.00 +Platform="SymbianOS" +Win32=false +isMobileDevice=true + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?6.*] +Parent=Opera 6.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?6.*] +Parent=Opera 6.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/6.*(*FreeBSD*)*] +Parent=Opera 6.00 +Platform="FreeBSD" +Win32=false + +[Opera/6.*(*Linux*)*] +Parent=Opera 6.00 +Platform="Linux" +Win32=false + +[Opera/6.*(*Mac OS X*)*] +Parent=Opera 6.00 +Platform="MacOSX" +Win32=false + +[Opera/6.*(*SunOS*)*] +Parent=Opera 6.00 +Platform="SunOS" +Win32=false + +[Opera/6.*(*Win 9x 4.90*)*] +Parent=Opera 6.00 +Platform="WinME" + +[Opera/6.*(*Windows 2000*)*] +Parent=Opera 6.00 +Platform="Win2000" + +[Opera/6.*(*Windows 95*)*] +Parent=Opera 6.00 +Platform="Win95" +Platform_Version=95 + +[Opera/6.*(*Windows 98*)*] +Parent=Opera 6.00 +Platform="Win98" +Platform_Version=98 + +[Opera/6.*(*Windows ME*)*] +Parent=Opera 6.00 +Platform="WinME" + +[Opera/6.*(*Windows NT 4.0*)*] +Parent=Opera 6.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/6.*(*Windows NT 5.0*)*] +Parent=Opera 6.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/6.*(*Windows NT 5.1*)*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/6.*(*Windows NT 5.2*)*] +Parent=Opera 6.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/6.*(*Windows NT 6.0*)*] +Parent=Opera 6.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/6.*(*Windows NT 6.1*)*] +Parent=Opera 6.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.00 + +[Opera 7.00] +Parent=DefaultProperties +Comment="Opera 7.00" +Browser="Opera" +Version=7.00 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?7.*] +Parent=Opera 7.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?7.*] +Parent=Opera 7.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/7.*FreeBSD*)*] +Parent=Opera 7.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/7.*Linux*)*] +Parent=Opera 7.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/7.*Mac OS X*)*] +Parent=Opera 7.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/7.*SunOS*)*] +Parent=Opera 7.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/7.*Win 9x 4.90*)*] +Parent=Opera 7.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/7.*Windows 2000*)*] +Parent=Opera 7.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/7.*Windows 95*)*] +Parent=Opera 7.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/7.*Windows 98*)*] +Parent=Opera 7.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/7.*Windows ME*)*] +Parent=Opera 7.00 + +[Mozilla/?.*(*Opera/7.*Windows NT 4.0*)*] +Parent=Opera 7.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/7.*Windows NT 5.0*)*] +Parent=Opera 7.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/7.*Windows NT 5.1*)*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/7.*Windows NT 5.2*)*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/7.*Windows NT 6.0*)*] +Parent=Opera 7.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/7.*Windows NT 6.1*)*] +Parent=Opera 7.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?7.*] +Parent=Opera 7.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?7.*] +Parent=Opera 7.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?7.*] +Parent=Opera 7.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/7.*(*FreeBSD*)*] +Parent=Opera 7.00 +Platform="FreeBSD" +Win32=false + +[Opera/7.*(*Linux*)*] +Parent=Opera 7.00 +Platform="Linux" +Win32=false + +[Opera/7.*(*Mac OS X*)*] +Parent=Opera 7.00 +Platform="MacOSX" +Win32=false + +[Opera/7.*(*SunOS*)*] +Parent=Opera 7.00 +Platform="SunOS" +Win32=false + +[Opera/7.*(*Win 9x 4.90*)*] +Parent=Opera 7.00 +Platform="WinME" + +[Opera/7.*(*Windows 2000*)*] +Parent=Opera 7.00 +Platform="Win2000" + +[Opera/7.*(*Windows 95*)*] +Parent=Opera 7.00 +Platform="Win95" +Platform_Version=95 + +[Opera/7.*(*Windows 98*)*] +Parent=Opera 7.00 +Platform="Win98" +Platform_Version=98 + +[Opera/7.*(*Windows ME*)*] +Parent=Opera 7.00 +Platform="WinME" + +[Opera/7.*(*Windows NT 4.0*)*] +Parent=Opera 7.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/7.*(*Windows NT 5.0*)*] +Parent=Opera 7.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/7.*(*Windows NT 5.1*)*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/7.*(*Windows NT 5.2*)*] +Parent=Opera 7.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/7.*(*Windows NT 6.0*)*] +Parent=Opera 7.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/7.*(*Windows NT 6.1*)*] +Parent=Opera 7.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 8.00 + +[Opera 8.00] +Parent=DefaultProperties +Comment="Opera 8.00" +Browser="Opera" +Version=8.00 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?8.*] +Parent=Opera 8.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?8.*] +Parent=Opera 8.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/8.*FreeBSD*)*] +Parent=Opera 8.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/8.*Linux*)*] +Parent=Opera 8.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/8.*Mac OS X*)*] +Parent=Opera 8.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/8.*SunOS*)*] +Parent=Opera 8.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/8.*Win 9x 4.90*)*] +Parent=Opera 8.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/8.*Windows 2000*)*] +Parent=Opera 8.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/8.*Windows 95*)*] +Parent=Opera 8.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/8.*Windows 98*)*] +Parent=Opera 8.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/8.*Windows ME*)*] +Parent=Opera 8.00 + +[Mozilla/?.*(*Opera/8.*Windows NT 4.0*)*] +Parent=Opera 8.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/8.*Windows NT 5.0*)*] +Parent=Opera 8.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/8.*Windows NT 5.1*)*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/8.*Windows NT 5.2*)*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/8.*Windows NT 6.0*)*] +Parent=Opera 8.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/8.*Windows NT 6.1*)*] +Parent=Opera 8.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?8.*] +Parent=Opera 8.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?8.*] +Parent=Opera 8.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?8.*] +Parent=Opera 8.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/8.*(*FreeBSD*)*] +Parent=Opera 8.00 +Platform="FreeBSD" +Win32=false + +[Opera/8.*(*Linux*)*] +Parent=Opera 8.00 +Platform="Linux" +Win32=false + +[Opera/8.*(*Mac OS X*)*] +Parent=Opera 8.00 +Platform="MacOSX" +Win32=false + +[Opera/8.*(*SunOS*)*] +Parent=Opera 8.00 +Platform="SunOS" +Win32=false + +[Opera/8.*(*Win 9x 4.90*)*] +Parent=Opera 8.00 +Platform="WinME" + +[Opera/8.*(*Windows 2000*)*] +Parent=Opera 8.00 +Platform="Win2000" + +[Opera/8.*(*Windows 95*)*] +Parent=Opera 8.00 +Platform="Win95" +Platform_Version=95 + +[Opera/8.*(*Windows 98*)*] +Parent=Opera 8.00 +Platform="Win98" +Platform_Version=98 + +[Opera/8.*(*Windows ME*)*] +Parent=Opera 8.00 +Platform="WinME" + +[Opera/8.*(*Windows NT 4.0*)*] +Parent=Opera 8.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/8.*(*Windows NT 5.0*)*] +Parent=Opera 8.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/8.*(*Windows NT 5.1*)*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/8.*(*Windows NT 5.2*)*] +Parent=Opera 8.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/8.*(*Windows NT 6.0*)*] +Parent=Opera 8.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/8.*(*Windows NT 6.1*)*] +Parent=Opera 8.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.00 + +[Opera 9.00] +Parent=DefaultProperties +Comment="Opera 9.00" +Browser="Opera" +Version=9.00 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/?.*(*FreeBSD*)*Opera?9.*] +Parent=Opera 9.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Linux*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Mac OS X*)*Opera?9.*] +Parent=Opera 9.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Mac_PowerPC*)*Opera?9.*] +Parent=Opera 9.00 +Platform="MacPPC" +Win32=false + +[Mozilla/?.*(*Opera/9.*FreeBSD*)*] +Parent=Opera 9.00 +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera/9.*Linux*)*] +Parent=Opera 9.00 +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera/9.*Mac OS X*)*] +Parent=Opera 9.00 +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera/9.*SunOS*)*] +Parent=Opera 9.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera/9.*Win 9x 4.90*)*] +Parent=Opera 9.00 +Platform="WinME" + +[Mozilla/?.*(*Opera/9.*Windows 2000*)*] +Parent=Opera 9.00 +Platform="Win2000" + +[Mozilla/?.*(*Opera/9.*Windows 95*)*] +Parent=Opera 9.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera/9.*Windows 98*)*] +Parent=Opera 9.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera/9.*Windows ME*)*] +Parent=Opera 9.00 + +[Mozilla/?.*(*Opera/9.*Windows NT 4.0*)*] +Parent=Opera 9.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera/9.*Windows NT 5.0*)*] +Parent=Opera 9.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera/9.*Windows NT 5.1*)*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera/9.*Windows NT 5.2*)*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera/9.*Windows NT 6.0*)*] +Parent=Opera 9.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera/9.*Windows NT 6.1*)*] +Parent=Opera 9.00 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*SunOS*)*Opera?9.*] +Parent=Opera 9.00 +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Win 9x 4.90*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinME" + +[Mozilla/?.*(*Windows 2000*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Win2000" + +[Mozilla/?.*(*Windows 95*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Windows 98*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Windows ME*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinME" + +[Mozilla/?.*(*Windows NT 4.0*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Windows NT 5.0*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Windows NT 5.1*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Windows NT 5.2*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Windows NT 6.0*)*Opera?9.*] +Parent=Opera 9.00 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Windows NT 6.1*)*Opera?9.*] +Parent=Opera 9.00 +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.*(*FreeBSD*)*] +Parent=Opera 9.00 +Platform="FreeBSD" +Win32=false + +[Opera/9.*(*Linux*)*] +Parent=Opera 9.00 +Platform="Linux" +Win32=false + +[Opera/9.*(*Mac OS X*)*] +Parent=Opera 9.00 +Platform="MacOSX" +Win32=false + +[Opera/9.*(*SunOS*)*] +Parent=Opera 9.00 +Platform="SunOS" +Win32=false + +[Opera/9.*(*Win 9x 4.90*)*] +Parent=Opera 9.00 +Platform="WinME" + +[Opera/9.*(*Windows 2000*)*] +Parent=Opera 9.00 +Platform="Win2000" + +[Opera/9.*(*Windows 95*)*] +Parent=Opera 9.00 +Platform="Win95" +Platform_Version=95 + +[Opera/9.*(*Windows 98*)*] +Parent=Opera 9.00 +Platform="Win98" +Platform_Version=98 + +[Opera/9.*(*Windows ME*)*] +Parent=Opera 9.00 +Platform="WinME" + +[Opera/9.*(*Windows NT 4.0*)*] +Parent=Opera 9.00 +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.*(*Windows NT 5.0*)*] +Parent=Opera 9.00 +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.*(*Windows NT 5.1*)*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.*(*Windows NT 5.2*)*] +Parent=Opera 9.00 +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.*(*Windows NT 6.0*)*] +Parent=Opera 9.00 +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.*(*Windows NT 6.1*)*] +Parent=Opera 9.00 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Generic + +[Opera Generic] +Parent=DefaultProperties +Comment="Opera Generic" +Browser="Opera" +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +CssVersion=1 + +[Mozilla/?.*(*Opera?*FreeBSD*)*] +Parent=Opera Generic +Platform="FreeBSD" +Win32=false + +[Mozilla/?.*(*Opera?*Linux*)*] +Parent=Opera Generic +Platform="Linux" +Win32=false + +[Mozilla/?.*(*Opera?*Mac OS X*)*] +Parent=Opera Generic +Platform="MacOSX" +Win32=false + +[Mozilla/?.*(*Opera?*Macintosh*)*] +Parent=Opera Generic +Platform="MacPPC" +Win32=false + +[Mozilla/?.*(*Opera?*SunOS*)*] +Parent=Opera Generic +Platform="SunOS" +Win32=false + +[Mozilla/?.*(*Opera?*UNIX*)*] +Parent=Opera Generic +Platform="Unix" +Win32=false + +[Mozilla/?.*(*Opera?*Win 9x 4.90*)*] +Parent=Opera Generic +Platform="WinME" + +[Mozilla/?.*(*Opera?*Windows 2000*)*] +Parent=Opera Generic +Platform="Win2000" + +[Mozilla/?.*(*Opera?*Windows 95*)*] +Parent=Opera Generic +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.*(*Opera?*Windows 98*)*] +Parent=Opera Generic +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.*(*Opera?*Windows CE*)*] +Parent=Opera Generic +Platform="WinCE" + +[Mozilla/?.*(*Opera?*Windows ME*)*] +Parent=Opera Generic +Platform="WinME" + +[Mozilla/?.*(*Opera?*Windows NT 4.0*)*] +Parent=Opera Generic +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.*(*Opera?*Windows NT 5.0*)*] +Parent=Opera Generic +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.*(*Opera?*Windows NT 5.1*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.*(*Opera?*Windows NT 5.2*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.*(*Opera?*Windows NT 6.0*)*] +Parent=Opera Generic +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.*(*Opera?*Windows NT 6.1*)*] +Parent=Opera Generic +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.*(*Opera?*Windows XP*)*] +Parent=Opera Generic +Platform="WinXP" + +[Mozilla/?.*(*Windows CE*Opera*] +Parent=Opera Generic +Platform="WinCE" + +[Mozilla/?.**(*FreeBSD*)*Opera*] +Parent=Opera Generic +Platform="FreeBSD" +Win32=false + +[Mozilla/?.**(*Linux*)*Opera*] +Parent=Opera Generic +Platform="Linux" +Win32=false + +[Mozilla/?.**(*Mac OS X*)*Opera*] +Parent=Opera Generic +Platform="MacOSX" +Win32=false + +[Mozilla/?.**(*Macintosh*)*Opera*] +Parent=Opera Generic +Platform="MacPPC" +Win32=false + +[Mozilla/?.**(*SunOS*)*Opera*] +Parent=Opera Generic +Platform="SunOS" +Win32=false + +[Mozilla/?.**(*UNIX*)*Opera*] +Parent=Opera Generic +Platform="Unix" +Win32=false + +[Mozilla/?.**(*Win 9x 4.90*)*Opera*] +Parent=Opera Generic +Platform="WinME" + +[Mozilla/?.**(*Windows 2000*)*Opera*] +Parent=Opera Generic +Platform="Win2000" + +[Mozilla/?.**(*Windows 95*)*Opera*] +Parent=Opera Generic +Platform="Win95" +Platform_Version=95 + +[Mozilla/?.**(*Windows 98*)*Opera*] +Parent=Opera Generic +Platform="Win98" +Platform_Version=98 + +[Mozilla/?.**(*Windows ME*Opera*)*] +Parent=Opera Generic + +[Mozilla/?.**(*Windows NT 4.0*)*Opera*] +Parent=Opera Generic +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/?.**(*Windows NT 5.0*)*Opera*] +Parent=Opera Generic +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/?.**(*Windows NT 5.1*)*Opera*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/?.**(*Windows NT 5.2*)*Opera*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/?.**(*Windows NT 6.0*)*Opera*] +Parent=Opera Generic +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/?.**(*Windows NT 6.1*)*Opera*] +Parent=Opera Generic +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/?.**(*Windows XP*)*Opera*] +Parent=Opera Generic +Platform="WinXP" + +[Opera/*(*FreeBSD*)*] +Parent=Opera Generic +Platform="FreeBSD" +Win32=false + +[Opera/*(*Linux*)*] +Parent=Opera Generic +Platform="Linux" +Win32=false + +[Opera/*(*Mac OS X*)*] +Parent=Opera Generic +Platform="MacOSX" +Win32=false + +[Opera/*(*Macintosh*)*] +Parent=Opera Generic +Platform="MacPPC" +Win32=false + +[Opera/*(*SunOS*)*] +Parent=Opera Generic +Platform="SunOS" +Win32=false + +[Opera/*(*UNIX*)*] +Parent=Opera Generic +Platform="Unix" +Win32=false + +[Opera/*(*Win 9x 4.90*)*] +Parent=Opera Generic +Platform="WinME" + +[Opera/*(*Windows 2000*)*] +Parent=Opera Generic +Platform="Win2000" + +[Opera/*(*Windows 95*)*] +Parent=Opera Generic +Platform="Win95" +Platform_Version=95 + +[Opera/*(*Windows 98*)*] +Parent=Opera Generic +Platform="Win98" +Platform_Version=98 + +[Opera/*(*Windows CE*)*] +Parent=Opera Generic +Platform="WinCE" + +[Opera/*(*Windows ME*)*] +Parent=Opera Generic +Platform="WinME" + +[Opera/*(*Windows NT 4.0*)*] +Parent=Opera Generic +Platform="WinNT" +Platform_Version=4.0 + +[Opera/*(*Windows NT 5.0*)*] +Parent=Opera Generic +Platform="Win2000" +Platform_Version=5.0 + +[Opera/*(*Windows NT 5.1*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.1 + +[Opera/*(*Windows NT 5.2*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.2 + +[Opera/*(*Windows NT 6.0*)*] +Parent=Opera Generic +Platform="WinVista" +Platform_Version=6.0 + +[Opera/*(*Windows NT 6.1*)*] +Parent=Opera Generic +Platform="Win7" +Platform_Version=6.1 + +[Opera/*(*Windows XP*)*] +Parent=Opera Generic +Platform="WinXP" + +[Opera/9.80*(*FreeBSD*)*] +Parent=Opera Generic +Platform="FreeBSD" +Win32=false + +[Opera/9.80*(*Linux*)*] +Parent=Opera Generic +Platform="Linux" +Win32=false + +[Opera/9.80*(*Mac OS X*)*] +Parent=Opera Generic +Platform="MacOSX" +Win32=false + +[Opera/9.80*(*Macintosh*)*] +Parent=Opera Generic +Platform="MacPPC" +Win32=false + +[Opera/9.80*(*SunOS*)*] +Parent=Opera Generic +Platform="SunOS" +Win32=false + +[Opera/9.80*(*UNIX*)*] +Parent=Opera Generic +Platform="Unix" +Win32=false + +[Opera/9.80*(*Win 9x 4.90*)*] +Parent=Opera Generic +Platform="WinME" + +[Opera/9.80*(*Windows 2000*)*] +Parent=Opera Generic +Platform="Win2000" + +[Opera/9.80*(*Windows 95*)*] +Parent=Opera Generic +Platform="Win95" +Platform_Version=95 + +[Opera/9.80*(*Windows 98*)*] +Parent=Opera Generic +Platform="Win98" +Platform_Version=98 + +[Opera/9.80*(*Windows CE*)*] +Parent=Opera Generic +Platform="WinCE" + +[Opera/9.80*(*Windows ME*)*] +Parent=Opera Generic +Platform="WinME" + +[Opera/9.80*(*Windows NT 4.0*)*] +Parent=Opera Generic +Platform="WinNT" +Platform_Version=4.0 + +[Opera/9.80*(*Windows NT 5.0*)*] +Parent=Opera Generic +Platform="Win2000" +Platform_Version=5.0 + +[Opera/9.80*(*Windows NT 5.1*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.1 + +[Opera/9.80*(*Windows NT 5.2*)*] +Parent=Opera Generic +Platform="WinXP" +Platform_Version=5.2 + +[Opera/9.80*(*Windows NT 6.0*)*] +Parent=Opera Generic +Platform="WinVista" +Platform_Version=6.0 + +[Opera/9.80*(*Windows NT 6.1*)*] +Parent=Opera Generic +Platform="Win7" +Platform_Version=6.1 + +[Opera/9.80*(*Windows XP*)*] +Parent=Opera Generic +Platform="WinXP" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Navigator 9.0 + +[Navigator 9.0] +Parent=DefaultProperties +Comment="Navigator 9.0" +Browser="Navigator" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="MacOSX" + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.8.*) Gecko/* Firefox/2.* Navigator/9.*] +Parent=Navigator 9.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.0 + +[Netscape 4.0] +Parent=DefaultProperties +Comment="Netscape 4.0" +Browser="Netscape" +Version=4.0 +MajorVer=4 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=1 + +[Mozilla/4.0*(Macintosh*] +Parent=Netscape 4.0 +Version=4.03 +MajorVer=4 +MinorVer=03 +Platform="MacPPC" +Win32=false + +[Mozilla/4.0*(Win95;*] +Parent=Netscape 4.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0*(Win98;*] +Parent=Netscape 4.0 +Version=4.03 +MajorVer=4 +MinorVer=03 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0*(WinNT*] +Parent=Netscape 4.0 +Version=4.03 +MajorVer=4 +MinorVer=03 +Platform="WinNT" + +[Mozilla/4.0*(X11;*)] +Parent=Netscape 4.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 6.0 + +[Netscape 6.0] +Parent=DefaultProperties +Comment="Netscape 6.0" +Browser="Netscape" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="MacPPC" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win2000" + +[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinXP" + +[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinXP" + +[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="WinVista" + +[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Win7" + +[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape6/6.*] +Parent=Netscape 6.0 +Platform="Linux" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 7.0 + +[Netscape 7.0] +Parent=DefaultProperties +Comment="Netscape 7.0" +Browser="Netscape" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="MacOSX" + +[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="MacPPC" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win*9x 4.90; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win2000" + +[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinXP" + +[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win2003" + +[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="WinVista" + +[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Win7" + +[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/7.*] +Parent=Netscape 7.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 8.0 + +[Netscape 8.0] +Parent=DefaultProperties +Comment="Netscape 8.0" +Browser="Netscape" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X Mach-O; *; rv:*) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="MacPPC" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win2000" + +[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinXP" + +[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win2003" + +[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="WinVista" + +[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Win7" + +[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/8.*] +Parent=Netscape 8.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 9.0 + +[Netscape 9.0] +Parent=DefaultProperties +Comment="Netscape 9.0" +Browser="Netscape" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="MacPPC" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win2000" + +[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinXP" + +[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win2003" + +[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="WinVista" + +[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Win7" + +[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/9.*] +Parent=Netscape 9.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PaleMoon 3.6 + +[Palemoon] +Parent=DefaultProperties +Comment="PaleMoon 3.6" +Browser="PaleMoon" +Version=3.6 +MajorVer=3 +MinorVer=6 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:1.9.*) Gecko/20100403 Firefox/3.6.* (Palemoon/3.6.*)] +Parent=Palemoon +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.9.*) Gecko/20100403 Firefox/3.6.* (Palemoon/3.6.*)] +Parent=Palemoon +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:1.9.*) Gecko/20100403 Firefox/3.6.* (Palemoon/3.6.*)] +Parent=Palemoon +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.9.*) Gecko/20100403 Firefox/3.6.* (Palemoon/3.6.*)] +Parent=Palemoon +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.9.*) Gecko/20100403 Firefox/3.6.* (Palemoon/3.6.*)] +Parent=Palemoon +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 1.0 + +[SeaMonkey 1.0] +Parent=DefaultProperties +Comment="SeaMonkey 1.0" +Browser="SeaMonkey" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.8*) Gecko/20060221 SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] +Parent=SeaMonkey 1.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 1.1 + +[SeaMonkey 1.1] +Parent=DefaultProperties +Comment="SeaMonkey 1.1" +Browser="SeaMonkey" +Version=1.1 +MajorVer=1 +MinorVer=1 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="Win98" +Platform_Version=98 +Win32=false + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] +Parent=SeaMonkey 1.1 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 2.0 + +[SeaMonkey 2.0] +Parent=DefaultProperties +Comment="SeaMonkey 2.0" +Browser="SeaMonkey" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.9*) Gecko/20060221 SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] +Parent=SeaMonkey 2.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 2.1 + +[SeaMonkey 2.1] +Parent=DefaultProperties +Comment="SeaMonkey 2.1" +Browser="SeaMonkey" +Version=2.1 +MajorVer=2 +MinorVer=1 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Windows NT 5.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.1*] +Parent=SeaMonkey 2.1 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows NT 6.0; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.1*] +Parent=SeaMonkey 2.1 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows NT 6.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.1*] +Parent=SeaMonkey 2.1 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Seamonkey 2.2 + +[Seamonkey 2.2] +Parent=DefaultProperties +Comment="Seamonkey 2.2" +Browser="SeaMonkey" +Version=2.2 +MajorVer=2 +MinorVer=2 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Windows NT 5.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.2*] +Parent=Seamonkey 2.2 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows NT 6.0; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.2*] +Parent=Seamonkey 2.2 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows NT 6.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.2*] +Parent=Seamonkey 2.2 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Seamonkey 2.3 + +[Seamonkey 2.3] +Parent=DefaultProperties +Comment="Seamonkey 2.3" +Browser="SeaMonkey" +Version=2.3 +MajorVer=2 +MinorVer=3 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Windows NT 5.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.3*] +Parent=Seamonkey 2.3 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows NT 6.0; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.3*] +Parent=Seamonkey 2.3 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows NT 6.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.3*] +Parent=Seamonkey 2.3 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Seamonkey 2.4 + +[Seamonkey 2.4] +Parent=DefaultProperties +Comment="Seamonkey 2.4" +Browser="SeaMonkey" +Version=2.4 +MajorVer=2 +MinorVer=4 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Windows NT 5.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.4*] +Parent=Seamonkey 2.4 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows NT 6.0; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.4*] +Parent=Seamonkey 2.4 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows NT 6.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.4*] +Parent=Seamonkey 2.4 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Seamonkey 2.5 + +[Seamonkey 2.5] +Parent=DefaultProperties +Comment="Seamonkey 2.5" +Browser="SeaMonkey" +Version=2.5 +MajorVer=2 +MinorVer=5 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Windows NT 5.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.5*] +Parent=Seamonkey 2.5 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows NT 6.0; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.5*] +Parent=Seamonkey 2.5 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows NT 6.1; rv:2.*) Gecko/* Firefox/4.* SeaMonkey/2.5*] +Parent=Seamonkey 2.5 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Flock 1.0 + +[Flock 1.0] +Parent=DefaultProperties +Comment="Flock 1.0" +Browser="Flock" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; U; Windows NT 5.0*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] +Parent=Flock 1.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Flock 2.0 + +[Flock 2.0] +Parent=DefaultProperties +Comment="Flock 2.0" +Browser="Flock" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; U; Windows NT 5.0*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] +Parent=Flock 2.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Flock 3.0 + +[Flock 3.0] +Parent=DefaultProperties +Comment="Flock 3.0" +Browser="Flock" +Version=3.0 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *) AppleWebKit/* (KHTML, like Gecko) Flock/3.* Chrome/* Safari/*] +Parent=Flock 3.0 +Version=3.5 +MajorVer=3 +MinorVer=5 +Platform="MacOSX" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Sleipnir 2.0 + +[Sleipnir] +Parent=DefaultProperties +Comment="Sleipnir 2.0" +Browser="Sleipnir" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.0*) Sleipnir/2.*] +Parent=Sleipnir +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.1*) Sleipnir/2.*] +Parent=Sleipnir +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.2*) Sleipnir/2.*] +Parent=Sleipnir +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.0*) Sleipnir/2.*] +Parent=Sleipnir +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.1*) Sleipnir/2.*] +Parent=Sleipnir +Platform="Win7" +Platform_Version=6.1 + +[Sleipnir*] +Parent=Sleipnir +Win32=false + +[Sleipnir/2.*] +Parent=Sleipnir +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 1.0 + +[Firefox 1.0] +Parent=DefaultProperties +Comment="Firefox 1.0" +Browser="Firefox" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="MacPPC" +Win32=false + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="OS/2" +Win32=false + +[Mozilla/5.0 (Windows; *; Win 9x 4.90*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; *Linux*; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; DragonFly*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firefox/1.*] +Parent=Firefox 1.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 10.0 + +[Firefox 10.0] +Parent=DefaultProperties +Comment="Firefox 10.0" +Browser="Firefox" +Version=10.0 +MajorVer=10 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/10.*] +Parent=Firefox 10.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/10.*] +Parent=Firefox 10.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 11.0 + +[Firefox 11.0] +Parent=DefaultProperties +Comment="Firefox 11.0" +Browser="Firefox" +Version=11.0 +MajorVer=11 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/11.*] +Parent=Firefox 11.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/11.*] +Parent=Firefox 11.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 12.0 + +[Firefox 12.0] +Parent=DefaultProperties +Comment="Firefox 12.0" +Browser="Firefox" +Version=12.0 +MajorVer=12 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/12.*] +Parent=Firefox 12.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/12.*] +Parent=Firefox 12.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 13.0 + +[Firefox 13.0] +Parent=DefaultProperties +Comment="Firefox 13.0" +Browser="Firefox" +Version=13.0 +MajorVer=13 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/13.*] +Parent=Firefox 13.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/13.*] +Parent=Firefox 13.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 14.0 + +[Firefox 14.0] +Parent=DefaultProperties +Comment="Firefox 14.0" +Browser="Firefox" +Version=14.0 +MajorVer=14 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Android; Mobile;*rv:*)*Gecko/14.*Firefox/14.*] +Parent=Firefox 14.0 +Platform="Android" +isMobileDevice=true + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/14.*] +Parent=Firefox 14.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/14.*] +Parent=Firefox 14.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 15.0 + +[Firefox 15.0] +Parent=DefaultProperties +Comment="Firefox 15.0" +Browser="Firefox" +Version=15.0 +MajorVer=15 +MinorVer=0 +Beta=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/15.*] +Parent=Firefox 15.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/15.*] +Parent=Firefox 15.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 16.0 + +[Firefox 16.0] +Parent=DefaultProperties +Comment="Firefox 16.0" +Browser="Firefox" +Version=16.0 +MajorVer=16 +MinorVer=0 +Alpha=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/16.*] +Parent=Firefox 16.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/16.*] +Parent=Firefox 16.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 17.0 + +[Firefox 17.0] +Parent=DefaultProperties +Comment="Firefox 17.0" +Browser="Firefox" +Version=17.0 +MajorVer=17 +MinorVer=0 +Alpha=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/17.*] +Parent=Firefox 17.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/17.*] +Parent=Firefox 17.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 2.0 + +[Firefox 2.0] +Parent=DefaultProperties +Comment="Firefox 2.0" +Browser="Firefox" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="OS/2" +Win32=false + +[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="WinME" + +[Mozilla/5.0 (Windows; *; Win95; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; *; Win98; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.8*) Gecko/* Firefox/2.*] +Parent=Firefox 2.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.0 + +[Firefox 3.0] +Parent=DefaultProperties +Comment="Firefox 3.0" +Browser="Firefox" +Version=3.0 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9*) Gecko/* Firefox/3.0*] +Parent=Firefox 3.0 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.1 + +[Firefox 3.1] +Parent=DefaultProperties +Comment="Firefox 3.1" +Browser="Firefox" +Version=3.1 +MajorVer=3 +MinorVer=1 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9*) Gecko/* Firefox/3.1*] +Parent=Firefox 3.1 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.5 + +[Firefox 3.5] +Parent=DefaultProperties +Comment="Firefox 3.5" +Browser="Firefox" +Version=3.5 +MajorVer=3 +MinorVer=5 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9.*) Gecko/* Firefox/3.5*] +Parent=Firefox 3.5 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.6 + +[Firefox 3.6] +Parent=DefaultProperties +Comment="Firefox 3.6" +Browser="Firefox" +Version=3.6 +MajorVer=3 +MinorVer=6 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9.2*) Gecko/* Firefox/3.6*] +Parent=Firefox 3.6 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 4.0 + +[Firefox 4.0] +Parent=DefaultProperties +Comment="Firefox 4.0" +Browser="Firefox" +Version=4.0 +MajorVer=4 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*rv:2.0*) Gecko/*Firefox/4.0*] +Parent=Firefox 4.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1 WOW64*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:2.0*) Gecko/* Firefox/4.0*] +Parent=Firefox 4.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 4.2 + +[Firefox 4.2] +Parent=DefaultProperties +Comment="Firefox 4.2" +Browser="Firefox" +Version=4.2 +MajorVer=4 +MinorVer=2 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Windows NT 5.0*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1 WOW64*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Macintosh; *Mac OS X*; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*; *; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; rv:2.2a*) Gecko/* Firefox/4.2a*] +Parent=Firefox 4.2 +Platform="Linux" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 5.0 + +[Firefox 5.0] +Parent=DefaultProperties +Comment="Firefox 5.0" +Browser="Firefox" +Version=5.0 +MajorVer=5 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*Windows NT 5.0*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (Macintosh; *Mac OS X*; rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (X11; *; HP-UX*;*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (X11; *; IRIX64*; *; rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *; SunOS*; *; rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11;*FreeBSD*;*rv:5.*) Gecko/* Firefox/5.0*] +Parent=Firefox 5.0 +Platform="FreeBSD" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 6.0 + +[Firefox 6.0] +Parent=DefaultProperties +Comment="Firefox 6.0" +Browser="Firefox" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/6.*] +Parent=Firefox 6.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/6.*] +Parent=Firefox 6.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 7.0 + +[Firefox 7.0] +Parent=DefaultProperties +Comment="Firefox 7.0" +Browser="Firefox" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/7.*] +Parent=Firefox 7.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/7.*] +Parent=Firefox 7.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 8.0 + +[Firefox 8.0] +Parent=DefaultProperties +Comment="Firefox 8.0" +Browser="Firefox" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/8.*] +Parent=Firefox 8.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/8.*] +Parent=Firefox 8.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 9.0 + +[Firefox 9.0] +Parent=DefaultProperties +Comment="Firefox 9.0" +Browser="Firefox" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=3 + +[Mozilla/5.0 (*FreeBSD*)*Gecko/*Firefox/9.*] +Parent=Firefox 9.0 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (*HP-UX*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="HP-UX" +Win32=false + +[Mozilla/5.0 (*IRIX64*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="IRIX64" +Win32=false + +[Mozilla/5.0 (*Linux*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (*Mac OS X*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (*OpenBSD*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (*SunOS*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="SunOS" +Win32=false + +[Mozilla/5.0 (*Windows NT 5.0*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.1*WOW64*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 5.2*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 5.2*WOW64*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.0*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.0*WOW64*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.1*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*Windows NT 6.1*WOW64*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/5.0 (*Windows NT 6.2*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (*Windows NT 6.2*WOW64*rv:*) Gecko/* Firefox/9.*] +Parent=Firefox 9.0 +Platform="Win8" +Platform_Version=6.2 +Win64=true + +[Mozilla/5.0 (Macintosh; *Mac OS X; U; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux i686*; *; rv:1.9.*) Gecko/* Thunderbird/1.*] +Parent=Thunderbird 1.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (Macintosh; *Mac OS X; U; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux i686*; *; rv:1.9.*) Gecko/* Thunderbird/2.*] +Parent=Thunderbird 2.0 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (Macintosh; *Mac OS X; U; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux i686*; *; rv:1.9.*) Gecko/* Thunderbird/3.*] +Parent=Thunderbird 3.0 +Platform="Linux" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 1.0 + +[Fennec 1.0] +Parent=DefaultProperties +Comment="Fennec 1.0" +Browser="Fennec" +Version=1.0 +MajorVer=1 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (*Mac OS X 10.*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="MacOSX" +Platform_Version=10.0 + +[Mozilla/5.0 (*Windows NT 5.1*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (*Windows NT 5.2*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (*Windows NT 6.0*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (*Windows NT 6.1*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (*X11*Linux*rv:1.9*)*Gecko/*Fennec/1.*] +Parent=Fennec 1.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 10.0 + +[Fennec 10.0] +Parent=DefaultProperties +Comment="Fennec 10.0" +Browser="Fennec" +Version=10.0 +MajorVer=10 +MinorVer=0 +Platform="Android" +Platform_Version=2.3 +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=default +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (*Android*Linux*arm*Mobile*rv:10.*)*Gecko/10.*Firefox/10.*Fennec/10.*] +Parent=Fennec 10.0 + +[Mozilla/5.0 (*Android*Mobile*rv:10.*)*Gecko/10.*Firefox/10.*Fennec/10.*] +Parent=Fennec 10.0 + +[Mozilla/5.0 (*Android*Tablet*)*Gecko/10.*Firefox/10.*Fennec/10.*] +Parent=Fennec 10.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 4.0 + +[Fennec 4.0] +Parent=DefaultProperties +Comment="Fennec 4.0" +Browser="Fennec" +Version=4.0 +MajorVer=4 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Android; Linux*; rv:2.*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="Android" +Win32=false + +[Mozilla/5.0 (Macintosh; Intel Mac OS X*; rv:2.*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.1;* rv:1.9*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2;*rv:1.9*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0;*rv:1.9*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1;*rv:1.9*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1;*rv:2.1*) Gecko/* Firefox/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Fennec/4.*] +Parent=Fennec 4.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 5.0 + +[Fennec 5.0] +Parent=DefaultProperties +Comment="Fennec 5.0" +Browser="Fennec" +Version=5.0 +MajorVer=5 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Android; Linux*rv:2.*) Gecko/* Firefox/* Fennec/5.0*] +Parent=Fennec 5.0 +Platform="Android" +Win32=false + +[Mozilla/5.0 (Macintosh; Intel Mac OS X*rv:2.1*) Gecko/* Firefox/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.1;*rv:1.9*) Gecko/* Firefox/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2;*rv:1.9*) Gecko/* Firefox/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0;*rv:1.9*) Gecko/* Firefox/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1;*rv:1.9*) Gecko/* Firefox/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Fennec/5.*] +Parent=Fennec 5.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 6.0 + +[Fennec 6.0] +Parent=DefaultProperties +Comment="Fennec 6.0" +Browser="Fennec" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Android; Linux*; rv:2.*) Gecko/* Firefox/* Fennec/6.0*] +Parent=Fennec 6.0 +Platform="Android" +Win32=false + +[Mozilla/5.0 (Macintosh; Intel Mac OS X*rv:2.1) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.1;*rv:1.9*) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2;*rv:1.9*) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0;*rv:1.9*) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1;*rv:1.9*) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 6.2;*rv:1.9*) Gecko/* Firefox/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Fennec/6.*] +Parent=Fennec 6.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 7.0 + +[Fennec 7.0] +Parent=DefaultProperties +Comment="Fennec 7.0" +Browser="Fennec" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +isMobileDevice=true +CssVersion=3 + +[Mozilla/5.0 (Android; Linux*; rv:2.*) Gecko/* Firefox/* Fennec/7.0*] +Parent=Fennec 7.0 +Platform="Android" +Win32=false + +[Mozilla/5.0 (Macintosh; Intel Mac OS X*; rv:2.1*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.1;*rv:1.9*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2;*rv:1.9*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0;*rv:1.9*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1;*rv:1.9*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 6.2;*rv:1.9*) Gecko/* Firefox/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (X11; U; Linux*) Gecko/* Fennec/7.*] +Parent=Fennec 7.0 +Platform="Linux" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Thunderbird 1.0 + +[Thunderbird 1.0] +Parent=DefaultProperties +Comment="Thunderbird 1.0" +Browser="Thunderbird" +Version=1.0 +MajorVer=1 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Thunderbird 14.0 + +[Thunderbird 14.0] +Parent=DefaultProperties +Comment="Thunderbird 14.0" +Browser="Thunderbird" +Version=14.0 +MajorVer=14 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +[Mozilla/5.0 (Macintosh; *Mac OS X; U; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; U; Windows NT 5.0; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; U; Windows NT 5.2; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/5.0 (Windows; U; Windows NT 6.2; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="Win8" +Platform_Version=6.2 + +[Mozilla/5.0 (X11; U; Linux i686*; *; rv:*) Gecko/* Thunderbird/14.*] +Parent=Thunderbird 14.0 +Platform="Linux" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Thunderbird 2.0 + +[Thunderbird 2.0] +Parent=DefaultProperties +Comment="Thunderbird 2.0" +Browser="Thunderbird" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Thunderbird 3.0 + +[Thunderbird 3.0] +Parent=DefaultProperties +Comment="Thunderbird 3.0" +Browser="Thunderbird" +Version=3.0 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iceweasel + +[Iceweasel] +Parent=DefaultProperties +Comment="Iceweasel" +Browser="Iceweasel" +Platform="Debian" +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.8.*) Gecko/* Iceweasel/2.0* (Debian-*)*] +Parent=Iceweasel +Version=2.0 +MajorVer=2 +MinorVer=0 + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.9.*) Gecko/* Iceweasel/3.0* (Debian-*)*] +Parent=Iceweasel +Version=3.0 +MajorVer=3 +MinorVer=0 +Platform="Debian" +CssVersion=2 + +[Mozilla/5.0 (X11; U; Linux*; *; rv:1.9.*) Gecko/* Iceweasel/3.5* (Debian-*)] +Parent=Iceweasel +Version=3.5 +MajorVer=3 +MinorVer=5 + +[Mozilla/5.0 (X11; U; Linux; *; rv:1.9.*) Gecko/* Iceweasel/3.6* (like Firefox/3.6)*] +Parent=Iceweasel +Version=3.6 +MajorVer=3 +MinorVer=6 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.0 + +[Mozilla 1.0] +Parent=DefaultProperties +Comment="Mozilla 1.0" +Browser="Mozilla" +Version=1.0 +MajorVer=1 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.0.*) Gecko/*] +Parent=Mozilla 1.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.1 + +[Mozilla 1.1] +Parent=DefaultProperties +Comment="Mozilla 1.1" +Browser="Mozilla" +Version=1.1 +MajorVer=1 +MinorVer=1 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.1.*) Gecko/*] +Parent=Mozilla 1.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.2 + +[Mozilla 1.2] +Parent=DefaultProperties +Comment="Mozilla 1.2" +Browser="Mozilla" +Version=1.2 +MajorVer=1 +MinorVer=2 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.2.*) Gecko/*] +Parent=Mozilla 1.2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.3 + +[Mozilla 1.3] +Parent=DefaultProperties +Comment="Mozilla 1.3" +Browser="Mozilla" +Version=1.3 +MajorVer=1 +MinorVer=3 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.3.*) Gecko/*] +Parent=Mozilla 1.3 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.4 + +[Mozilla 1.4] +Parent=DefaultProperties +Comment="Mozilla 1.4" +Browser="Mozilla" +Version=1.4 +MajorVer=1 +MinorVer=4 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Win31" +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.4*) Gecko/*] +Parent=Mozilla 1.4 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.5 + +[Mozilla 1.5] +Parent=DefaultProperties +Comment="Mozilla 1.5" +Browser="Mozilla" +Version=1.5 +MajorVer=1 +MinorVer=5 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Win31" +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.5*) Gecko/*] +Parent=Mozilla 1.5 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.6 + +[Mozilla 1.6] +Parent=DefaultProperties +Comment="Mozilla 1.6" +Browser="Mozilla" +Version=1.6 +MajorVer=1 +MinorVer=6 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Win31" +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.6*) Gecko/*] +Parent=Mozilla 1.6 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.7 + +[Mozilla 1.7] +Parent=DefaultProperties +Comment="Mozilla 1.7" +Browser="Mozilla" +Version=1.7 +MajorVer=1 +MinorVer=7 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win31" +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win98" +Platform_Version=98 +Win32=true + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.7*) Gecko/*] +Parent=Mozilla 1.7 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.8 + +[Mozilla 1.8] +Parent=DefaultProperties +Comment="Mozilla 1.8" +Browser="Mozilla" +Version=1.8 +MajorVer=1 +MinorVer=8 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.8*) Gecko/*] +Parent=Mozilla 1.8 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.9 + +[Mozilla 1.9] +Parent=DefaultProperties +Comment="Mozilla 1.9" +Browser="Mozilla" +Version=1.9 +MajorVer=1 +MinorVer=9 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +JavaApplets=true +CssVersion=2 + +[Mozilla/5.0 (*rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Win32=false + +[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="MacOSX" +Win32=false + +[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="WinME" + +[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform_Version=3.1 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Win31" +Platform_Version=3.11 +Win16=true +Win32=false + +[Mozilla/5.0 (Windows; ?; Win95; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Win95" +Platform_Version=95 + +[Mozilla/5.0 (Windows; ?; Win98; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Win98" +Platform_Version=98 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Win2003" +Platform_Version=5.2 + +[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="FreeBSD" +Win32=false + +[Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="Linux" +Win32=false + +[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="OpenBSD" +Win32=false + +[Mozilla/5.0 (X11; *SunOS*; *rv:1.9*) Gecko/*] +Parent=Mozilla 1.9 +Platform="SunOS" +Win32=false + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 5.5 + +[AOL 9.0/IE 5.5] +Parent=DefaultProperties +Comment="AOL 9.0/IE 5.5" +Browser="IE" +Version=5.5 +MajorVer=5 +MinorVer=5 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Win 9x 4.90*] +Parent=AOL 9.0/IE 5.5 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows 95*] +Parent=AOL 9.0/IE 5.5 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows 98*] +Parent=AOL 9.0/IE 5.5 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.0/IE 5.5 +Platform="WinME" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows NT 4.0*] +Parent=AOL 9.0/IE 5.5 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows NT 5.0*] +Parent=AOL 9.0/IE 5.5 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows NT 5.1*] +Parent=AOL 9.0/IE 5.5 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0*; *Windows NT 6.0*] +Parent=AOL 9.0/IE 5.5 +Platform="WinVista" +Platform_Version=6.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 6.0 + +[AOL 9.0/IE 6.0] +Parent=DefaultProperties +Comment="AOL 9.0/IE 6.0" +Browser="IE" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Win 9x 4.90*] +Parent=AOL 9.0/IE 6.0 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows 95*] +Parent=AOL 9.0/IE 6.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows 98*] +Parent=AOL 9.0/IE 6.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.0/IE 6.0 +Platform="WinME" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows NT 4.0*] +Parent=AOL 9.0/IE 6.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows NT 5.0*] +Parent=AOL 9.0/IE 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows NT 5.1*] +Parent=AOL 9.0/IE 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows NT 6.0*] +Parent=AOL 9.0/IE 6.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0*; *Windows NT 6.1*] +Parent=AOL 9.0/IE 6.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 7.0 + +[AOL 9.0/IE 7.0] +Parent=DefaultProperties +Comment="AOL 9.0/IE 7.0" +Browser="IE" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Win 9x 4.90*] +Parent=AOL 9.0/IE 7.0 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows 95*] +Parent=AOL 9.0/IE 7.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows 98*] +Parent=AOL 9.0/IE 7.0 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.0/IE 7.0 +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows NT 4.0*] +Parent=AOL 9.0/IE 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows NT 5.0*] +Parent=AOL 9.0/IE 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows NT 5.1*] +Parent=AOL 9.0/IE 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows NT 6.0*] +Parent=AOL 9.0/IE 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0*; *Windows NT 6.1*] +Parent=AOL 9.0/IE 7.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 8.0 + +[AOL 9.0/IE 8.0] +Parent=DefaultProperties +Comment="AOL 9.0/IE 8.0" +Browser="IE" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Win 9x 4.90*] +Parent=AOL 9.0/IE 8.0 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows 95*] +Parent=AOL 9.0/IE 8.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows 98*] +Parent=AOL 9.0/IE 8.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.0/IE 8.0 +Platform="WinME" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows NT 4.0*] +Parent=AOL 9.0/IE 8.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows NT 5.0*] +Parent=AOL 9.0/IE 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows NT 5.1*] +Parent=AOL 9.0/IE 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows NT 6.0*] +Parent=AOL 9.0/IE 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.0*; *Windows NT 6.1*] +Parent=AOL 9.0/IE 8.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.1/IE 7.0 + +[AOL 9.1/IE 7.0] +Parent=DefaultProperties +Comment="AOL 9.1/IE 7.0" +Browser="IE" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Win 9x 4.90*] +Parent=AOL 9.1/IE 7.0 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows 95*] +Parent=AOL 9.1/IE 7.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows 98*] +Parent=AOL 9.1/IE 7.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.1/IE 7.0 +Platform="WinME" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 4.0*] +Parent=AOL 9.1/IE 7.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 5.0*] +Parent=AOL 9.1/IE 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 5.1*] +Parent=AOL 9.1/IE 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 5.2*] +Parent=AOL 9.1/IE 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 6.0*] +Parent=AOL 9.1/IE 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.1*; *Windows NT 6.1*] +Parent=AOL 9.1/IE 7.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.1/IE 8.0 + +[AOL 9.1/IE 8.0] +Parent=DefaultProperties +Comment="AOL 9.1/IE 8.0" +Browser="IE" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 +AolVersion=9 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Win 9x 4.90*] +Parent=AOL 9.1/IE 8.0 +Platform="WinME" + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows 95*] +Parent=AOL 9.1/IE 8.0 +Platform="Win95" +Platform_Version=95 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows 98*] +Parent=AOL 9.1/IE 8.0 +Platform="Win98" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows 98; Win 9x 4.90*] +Parent=AOL 9.1/IE 8.0 +Platform="WinME" +Platform_Version=98 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 4.0*] +Parent=AOL 9.1/IE 8.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 5.0*] +Parent=AOL 9.1/IE 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 5.1*] +Parent=AOL 9.1/IE 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 5.2*] +Parent=AOL 9.1/IE 8.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 6.0*] +Parent=AOL 9.1/IE 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; *AOL 9.1*; *Windows NT 6.1*] +Parent=AOL 9.1/IE 8.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.5 + +[AOL 9.5] +Parent=DefaultProperties +Comment="AOL 9.5" +Browser="IE" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=3 +AolVersion=10 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild*; Windows NT 5.1; Trident/4.0*)*] +Parent=AOL 9.5 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild*; Windows NT 5.2; Trident/4.0*)*] +Parent=AOL 9.5 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild*; Windows NT 6.0; Trident/4.0*)*] +Parent=AOL 9.5 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.5; AOLBuild*; Windows NT 6.1; Trident/4.0*)*] +Parent=AOL 9.5 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.6 + +[AOL 9.6] +Parent=DefaultProperties +Comment="AOL 9.6" +Browser="IE" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=3 +AolVersion=10 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 5.2; Trident/4.0*)*] +Parent=AOL 9.6 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 5.2; WOW64; Trident/4.0*)*] +Parent=AOL 9.6 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 6.0; Trident/4.0*)*] +Parent=AOL 9.6 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 6.0; WOW64; Trident/4.0*)*] +Parent=AOL 9.6 +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 6.1; Trident/4.0*)*] +Parent=AOL 9.6 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild*; Windows NT 6.1; WOW64; Trident/4.0*)*] +Parent=AOL 9.6 +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL Generic + +[AOL Generic] +Parent=DefaultProperties +Comment="AOL Generic" +Browser="IE" +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=1 + +[Mozilla/*(*MSIE*America Online Browser*] +Parent=AOL Generic + +[Mozilla/*(*MSIE*AOL*] +Parent=AOL Generic + +[Mozilla/*(*MSIE*AOL*Mac*] +Parent=AOL Generic +Platform="MacOSX" + +[Mozilla/*(*MSIE*AOL*Win*] +Parent=AOL Generic +Platform="Win" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 1.0 + +[IE 1.0] +Parent=DefaultProperties +Comment="IE 1.0" +Browser="IE" +Version=1.0 +MajorVer=1 +MinorVer=0 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +VBScript=true + +[Mozilla/*(*MSIE 1.0*Windows 3.1*)*] +Parent=IE 1.0 +Platform="WinNT" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 1.0*Windows 3.11*)*] +Parent=IE 1.0 +Platform="WinNT" +Platform_Version=3.11 + +[Mozilla/*(*MSIE 1.0*Windows 95*)*] +Parent=IE 1.0 +Win32=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 1.5 + +[IE 1.5] +Parent=DefaultProperties +Comment="IE 1.5" +Browser="IE" +Version=1.5 +MajorVer=1 +MinorVer=5 +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +VBScript=true + +[Mozilla/*(*MSIE 1.5*Windows 3.1*)*] +Parent=IE 1.5 +Platform="Win31" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 1.5*Windows 3.11*)*] +Parent=IE 1.5 +Platform="Win31" +Platform_Version=3.11 + +[Mozilla/*(*MSIE 1.5*Windows 95*)*] +Parent=IE 1.5 +Platform="Win95" +Win32=true + +[Mozilla/*(*MSIE 1.5*Windows NT 3.1*)*] +Parent=IE 1.5 +Platform="WinNT" +Platform_Version=3.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 10.0 + +[IE 10.0] +Parent=DefaultProperties +Comment="IE 10.0" +Browser="IE" +Version=10.0 +MajorVer=10 +MinorVer=0 +Beta=true +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=3 + +[Mozilla/*(*MSIE 10.*Windows NT 6.1*64*Trident/6.0*)*] +Parent=IE 10.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/*(*MSIE 10.*Windows NT 6.1*Trident/6.0*)*] +Parent=IE 10.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/*(*MSIE 10.*Windows NT 6.2*Trident/6.0*)*] +Parent=IE 10.0 +Platform="Win8" +Platform_Version=6.2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 2.0 + +[IE 2.0] +Parent=DefaultProperties +Comment="IE 2.0" +Browser="IE" +Version=2.0 +MajorVer=2 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +JavaScript=true +VBScript=true + +[Mozilla/*(*MSIE 2.*Mac_PowerPC*)*] +Parent=IE 2.0 +Platform="MacPPC" + +[Mozilla/*(*MSIE 2.*Windows 3.1*)*] +Parent=IE 2.0 +Platform="Win31" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 2.*Windows 3.11*)*] +Parent=IE 2.0 +Platform="Win31" +Platform_Version=3.11 + +[Mozilla/*(*MSIE 2.*Windows 95*)*] +Parent=IE 2.0 +Platform="Win95" + +[Mozilla/*(*MSIE 2.*Windows NT 3.1*)*] +Parent=IE 2.0 +Platform="WinNT" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 2.*Windows NT 3.5*)*] +Parent=IE 2.0 +Platform="WinNT" +Platform_Version=3.5 + +[Mozilla/*(*MSIE 2.*Windows NT 4.0*)*] +Parent=IE 2.0 +Platform="WinNT" +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 3.0 + +[IE 3.0] +Parent=DefaultProperties +Comment="IE 3.0" +Browser="IE" +Version=3.0 +MajorVer=3 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true + +[Mozilla/*(*MSIE 3.*Mac_PowerPC*)*] +Parent=IE 3.0 +Platform="MacPPC" + +[Mozilla/*(*MSIE 3.*Windows 3.1*)*] +Parent=IE 3.0 +Platform="Win31" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 3.*Windows 3.11*)*] +Parent=IE 3.0 +Platform="Win31" +Platform_Version=3.11 + +[Mozilla/*(*MSIE 3.*Windows 95*)*] +Parent=IE 3.0 +Platform="Win95" + +[Mozilla/*(*MSIE 3.*Windows NT 3.1*)*] +Parent=IE 3.0 +Platform="WinNT" +Platform_Version=3.1 + +[Mozilla/*(*MSIE 3.*Windows NT 3.5*)*] +Parent=IE 3.0 +Platform="WinNT" +Platform_Version=3.5 + +[Mozilla/*(*MSIE 3.*Windows NT 4.0*)*] +Parent=IE 3.0 +Platform="WinNT" +Platform_Version=4.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 4.0 + +[IE 4.0] +Parent=DefaultProperties +Comment="IE 4.0" +Browser="IE" +Version=4.0 +MajorVer=4 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true + +[Mozilla/*(compatible; MSIE 4.*Mac_PowerPC*)*] +Parent=IE 4.0 +Platform="MacPPC" + +[Mozilla/*(compatible; MSIE 4.*Windows 3.1*)*] +Parent=IE 4.0 +Platform="Win31" +Platform_Version=3.1 + +[Mozilla/*(compatible; MSIE 4.*Windows 3.11*)*] +Parent=IE 4.0 +Platform="Win31" +Platform_Version=3.11 + +[Mozilla/*(compatible; MSIE 4.*Windows 95*)*] +Parent=IE 4.0 +Platform="Win95" + +[Mozilla/*(compatible; MSIE 4.*Windows 98*)*] +Parent=IE 4.0 +Platform="Win98" + +[Mozilla/*(compatible; MSIE 4.*Windows 98; Win 9x 4.90*)*] +Parent=IE 4.0 +Platform="WinME" + +[Mozilla/*(compatible; MSIE 4.*Windows NT 3.1*)*] +Parent=IE 4.0 +Platform="WinNT" +Platform_Version=3.1 + +[Mozilla/*(compatible; MSIE 4.*Windows NT 3.5*)*] +Parent=IE 4.0 +Platform="WinNT" +Platform_Version=3.5 + +[Mozilla/*(compatible; MSIE 4.*Windows NT 4.0*)*] +Parent=IE 4.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/*(compatible; MSIE 4.*Windows NT 5.0*)*] +Parent=IE 4.0 +Platform="Win2000" +Platform_Version=5.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 5.0 + +[IE 5.0] +Parent=DefaultProperties +Comment="IE 5.0" +Browser="IE" +Version=5.0 +MajorVer=5 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true + +[Mozilla/*(compatible; MSIE 5.*Mac_PowerPC*)*] +Parent=IE 5.0 +Platform="MacPPC" + +[Mozilla/*(compatible; MSIE 5.*Windows 3.1*)*] +Parent=IE 5.0 +Platform="Win31" +Platform_Version=3.1 + +[Mozilla/*(compatible; MSIE 5.*Windows 3.11*)*] +Parent=IE 5.0 +Platform="Win31" +Platform_Version=3.11 + +[Mozilla/*(compatible; MSIE 5.*Windows 95*)*] +Parent=IE 5.0 +Platform="Win95" + +[Mozilla/*(compatible; MSIE 5.*Windows 98*)*] +Parent=IE 5.0 +Platform="Win98" + +[Mozilla/*(compatible; MSIE 5.*Windows 98; Win 9x 4.90*)*] +Parent=IE 5.0 +Platform="WinME" + +[Mozilla/*(compatible; MSIE 5.*Windows NT 3.1*)*] +Parent=IE 5.0 +Platform="WinNT" +Platform_Version=3.1 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 3.5*)*] +Parent=IE 5.0 +Platform="WinNT" +Platform_Version=3.5 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 4.0*)*] +Parent=IE 5.0 +Platform="WinNT" +Platform_Version=4.0 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 5.0*)*] +Parent=IE 5.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 5.1*)*] +Parent=IE 5.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 5.2*)*] +Parent=IE 5.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 6.0*)*] +Parent=IE 5.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/*(compatible; MSIE 5.*Windows NT 6.1*)*] +Parent=IE 5.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 6.0 + +[IE 6.0] +Parent=DefaultProperties +Comment="IE 6.0" +Browser="IE" +Version=6.0 +MajorVer=6 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=1 + +[Mozilla/* (*MSIE 6*)*] +Parent=IE 6.0 + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 5.0*)*] +Parent=IE 6.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 5.1*)*] +Parent=IE 6.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 5.2*)*] +Parent=IE 6.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 5.2; *Win64*)*] +Parent=IE 6.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 5.2; *WOW64*)*] +Parent=IE 6.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 6.*; *Windows NT 6.0*)*] +Parent=IE 6.0 +Platform="WinVista" +Platform_Version=6.0 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 7.0 + +[IE 7.0] +Parent=DefaultProperties +Comment="IE 7.0" +Browser="IE" +Version=7.0 +MajorVer=7 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.0*)*] +Parent=IE 7.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.01*)*] +Parent=IE 7.0 +Platform="Win2000" +Platform_Version=5.01 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.1*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.2*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.2; *Win64*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.2; *WOW64*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.2; *WOW64*; Trident/4.0*)*] +Parent=IE 7.0 +Platform="Win2003" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 5.2; *WOW64*; Trident/5.0*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 6.0*)*] +Parent=IE 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/* (compatible; MSIE 7.0*; *Windows NT 6.1*)*] +Parent=IE 7.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/* (compatible; MSIE 7.0*; Windows NT 5.1; Trident/4.0*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 7.0*; Windows NT 5.2; Trident/4.0*)*] +Parent=IE 7.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 7.0*; Windows NT 6.0; Trident/4.0*)*] +Parent=IE 7.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/* (compatible; MSIE 7.0*; Windows NT 6.1; *WOW64*; Trident/4.0*)*] +Parent=IE 7.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 7.0*; Windows NT 6.1; Trident/5.0)] +Parent=IE 7.0 +Platform="Win7" +Platform_Version=6.1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 8.0 + +[IE 8.0] +Parent=DefaultProperties +Comment="IE 8.0" +Browser="IE" +Version=8.0 +MajorVer=8 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=2 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.0*)*] +Parent=IE 8.0 +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.0; *Win64; x64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.0; *WOW64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win2000" +Platform_Version=5.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.0;*Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win2000" +Platform_Version=5.0 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.1*)*] +Parent=IE 8.0 +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.1*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.1; *Win64; x64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.1; WOW64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.1 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.2*)*] +Parent=IE 8.0 +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.2*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.2; *Win64; x64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 5.2; *WOW64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinXP" +Platform_Version=5.2 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.0*)*] +Parent=IE 8.0 +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.0; *Win64; x64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.0; *WOW64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.0;*Trident/4.0*)*] +Parent=IE 8.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.1*)*] +Parent=IE 8.0 +Version=7.0 +MajorVer=7 +MinorVer=0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.1*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.1; *Win64; x64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 8.0; *Windows NT 6.1; *WOW64*; Trident/4.0*)*] +Parent=IE 8.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 9.0 + +[IE 9.0] +Parent=DefaultProperties +Comment="IE 9.0" +Browser="IE" +Version=9.0 +MajorVer=9 +MinorVer=0 +Win32=true +Frames=true +IFrames=true +Tables=true +Cookies=true +BackgroundSounds=true +JavaScript=true +VBScript=true +JavaApplets=true +ActiveXControls=true +CssVersion=3 + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 5.1; Trident/5.0*)*] +Parent=IE 9.0 +Platform="WinXP" +Platform_Version=5.1 + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 5.2; Trident/5.0*)*] +Parent=IE 9.0 +Platform="WinXP" +Platform_Version=5.2 + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.0; Trident/5.0*)*] +Parent=IE 9.0 +Platform="WinVista" +Platform_Version=6.0 + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.0; Win64; x64; Trident/5.0*)*] +Parent=IE 9.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.0; WOW64; Trident/5.0*)*] +Parent=IE 9.0 +Platform="WinVista" +Platform_Version=6.0 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.1; Trident/5.0*)*] +Parent=IE 9.0 +Platform="Win7" +Platform_Version=6.1 + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.1; Win64; x64; Trident/5.0*)*] +Parent=IE 9.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +[Mozilla/* (compatible; MSIE 9.0; *Windows NT 6.1; WOW64; Trident/5.0*)*] +Parent=IE 9.0 +Platform="Win7" +Platform_Version=6.1 +Win32=false +Win64=true + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Default Browser + +[*] +Comment="Default Browser" +Browser="Default Browser" +Version=0.0 +MajorVer=0 +MinorVer=0 +Platform="unknown" +Platform_Version="unknown" +Alpha=false +Beta=false +Win16=false +Win32=false +Win64=false +Frames=false +IFrames=false +Tables=false +Cookies=false +BackgroundSounds=false +JavaScript=false +VBScript=false +JavaApplets=false +ActiveXControls=false +isMobileDevice=false +isSyndicationReader=false +Crawler=false +CssVersion=0 +AolVersion=0 + diff --git a/skip-tests.sh b/skip-tests.sh new file mode 100644 index 0000000..8d76b12 --- /dev/null +++ b/skip-tests.sh @@ -0,0 +1,172 @@ +#!/bin/sh +# timezone_location_get: Test that timezone_location_get returns a correct array of information +mv ext/date/tests/timezone_location_get.phpt{,.skip} +# DBA DB4 magic_quotes_runtime Test (info: DB4 handler used) +mv ext/dba/tests/dba_db4_010.phpt{,.skip} +# DBA TCADB handler test +mv ext/dba/tests/dba_tcadb.phpt{,.skip} +# enchant_broker_describe() function +$x86 && mv ext/enchant/tests/broker_describe.phpt{,.skip} +# enchant_broker_request_dict() function +$x86 && mv ext/enchant/tests/broker_request_dict.phpt{,.skip} +# bug #13181, leaving a context frees the broker resources +$x86 && mv ext/enchant/tests/bug13181.phpt{,.skip} +# Test ereg() function : basic functionality (with $regs) +mv ext/ereg/tests/ereg_basic_001.phpt{,.skip} +# Test ereg() function : basic functionality (without $regs) +mv ext/ereg/tests/ereg_basic_002.phpt{,.skip} +# Test ereg() function : error conditions - test bad regular expressions +mv ext/ereg/tests/ereg_error_002.phpt{,.skip} +# Test ereg_replace() function : basic functionality +mv ext/ereg/tests/ereg_replace_basic_001.phpt{,.skip} +# Test ereg_replace() function : error conditions - bad regular expressions +mv ext/ereg/tests/ereg_replace_error_002.phpt{,.skip} +# Test ereg_replace() function : usage variations - unexpected type arg 1 +mv ext/ereg/tests/ereg_replace_variation_001.phpt{,.skip} +# Test ereg() function : usage variations - unexpected type arg 1 +mv ext/ereg/tests/ereg_variation_001.phpt{,.skip} +# Test eregi() function : basic functionality (with $regs) +mv ext/ereg/tests/eregi_basic_001.phpt{,.skip} +# Test eregi() function : basic functionality (without $regs) +mv ext/ereg/tests/eregi_basic_002.phpt{,.skip} +# Test eregi() function : error conditions - test bad regular expressions +mv ext/ereg/tests/eregi_error_002.phpt{,.skip} +# Test ereg() function : basic functionality +mv ext/ereg/tests/eregi_replace_basic_001.phpt{,.skip} +# Test eregi_replace() function : error conditions - bad regular expressions +mv ext/ereg/tests/eregi_replace_error_002.phpt{,.skip} +# Test eregi_replace() function : usage variations - unexpected type arg 1 +mv ext/ereg/tests/eregi_replace_variation_001.phpt{,.skip} +# Test eregi() function : usage variations - unexpected type arg 1 +mv ext/ereg/tests/eregi_variation_001.phpt{,.skip} +# Test split() function : basic functionality - test a number of simple split, specifying a limit +mv ext/ereg/tests/split_basic_001.phpt{,.skip} +# Test split() function : basic functionality - test a number of simple split, without specifying a limit +mv ext/ereg/tests/split_basic_002.phpt{,.skip} +# Test split() function : error conditions - test bad regular expressions +mv ext/ereg/tests/split_error_002.phpt{,.skip} +# Test split() function : usage variations - unexpected type for arg 1 +mv ext/ereg/tests/split_variation_001.phpt{,.skip} +# Test spliti() function : basic functionality - test a number of simple spliti, specifying a limit +mv ext/ereg/tests/spliti_basic_001.phpt{,.skip} +# Test spliti() function : basic functionality - test a number of simple spliti, without specifying a limit +mv ext/ereg/tests/spliti_basic_002.phpt{,.skip} +# Test spliti() function : error conditions - test bad regular expressions +mv ext/ereg/tests/spliti_error_002.phpt{,.skip} +# Test spliti() function : usage variations - unexpected type for arg 1 +mv ext/ereg/tests/spliti_variation_001.phpt{,.skip} +# Bug #60150 (Integer overflow during the parsing of invalid exif header) +$ix86 mv ext/exif/tests/bug60150.phpt{,.skip} +# Bug #52209 (INPUT_ENV returns NULL for set variables (CLI)) +mv ext/filter/tests/bug52209.phpt{,.skip} +# Bug #43073 (TrueType bounding box is wrong for angle<>0) +mv ext/gd/tests/bug43073.phpt{,.skip} +# Bug #48801 (Problem with imagettfbbox) +mv ext/gd/tests/bug48801.phpt{,.skip} +# PDO Common: PDORow + get_parent_class() +$x8664 mv ext/pdo/tests/pdo_035.phpt{,.skip} +# Bug #47415 PDO_Firebird segfaults when passing lowercased column name to bindColumn() +mv ext/pdo_firebird/tests/bug_47415.phpt{,.skip} +# PDO_Firebird: bug 48877 The "bindValue" and "bindParam" do not work for PDO Firebird if we use named parameters (:parameter). +mv ext/pdo_firebird/tests/bug_48877.phpt{,.skip} +# PDO_Firebird: bug 53280 segfaults if query column count is less than param count +mv ext/pdo_firebird/tests/bug_53280.phpt{,.skip} +# PDO_Firebird: connect/disconnect +mv ext/pdo_firebird/tests/connect.phpt{,.skip} +# PDO_Firebird: DDL/transactions +mv ext/pdo_firebird/tests/ddl.phpt{,.skip} +# PDO_Firebird: prepare/execute/binding +mv ext/pdo_firebird/tests/execute.phpt{,.skip} +# PDO_Firebird: rowCount +mv ext/pdo_firebird/tests/rowCount.phpt{,.skip} +# Test posix_getgrgid() function : basic functionality +mv ext/posix/tests/posix_getgrgid_basic.phpt{,.skip} +# IPv6 support +mv ext/snmp/tests/ipv6.phpt{,.skip} +# OO API: getErrno & getError methods +mv ext/snmp/tests/snmp-object-errno-errstr.phpt{,.skip} +# OO API +mv ext/snmp/tests/snmp-object.phpt{,.skip} +# Function snmp2_get +mv ext/snmp/tests/snmp2_get.phpt{,.skip} +# Function snmp2_getnext +mv ext/snmp/tests/snmp2_getnext.phpt{,.skip} +# Function snmp2_real_walk +mv ext/snmp/tests/snmp2_real_walk.phpt{,.skip} +# Function snmp2_set (without MIBs loading) +mv ext/snmp/tests/snmp2_set-nomib.phpt{,.skip} +# Function snmp2_set +mv ext/snmp/tests/snmp2_set.phpt{,.skip} +# Function snmp2_walk +mv ext/snmp/tests/snmp2_walk.phpt{,.skip} +# SNMPv3 Support +mv ext/snmp/tests/snmp3.phpt{,.skip} +# Function snmp_getvalue +mv ext/snmp/tests/snmp_getvalue.phpt{,.skip} +# Function snmp_read_mib +mv ext/snmp/tests/snmp_read_mib.phpt{,.skip} +# Function snmpget +mv ext/snmp/tests/snmpget.phpt{,.skip} +# Function snmpgetnext +mv ext/snmp/tests/snmpgetnext.phpt{,.skip} +# Function snmprealwalk +mv ext/snmp/tests/snmprealwalk.phpt{,.skip} +# Function snmpset (without MIBs loading) +mv ext/snmp/tests/snmpset-nomib.phpt{,.skip} +# Function snmpset +mv ext/snmp/tests/snmpset.phpt{,.skip} +# Function snmpwalk +mv ext/snmp/tests/snmpwalk.phpt{,.skip} +# SOAP Server 9: setclass and setpersistence(SOAP_PERSISTENCE_SESSION) +mv ext/soap/tests/server009.phpt{,.skip} +# Multicast support: IPv4 receive options +mv ext/sockets/tests/mcast_ipv4_recv.phpt{,.skip} +# Multicast support: IPv6 receive options +mv ext/sockets/tests/mcast_ipv6_recv.phpt{,.skip} +# socket_import_stream: Test with multicasting +mv ext/sockets/tests/socket_import_stream-3.phpt{,.skip} +# Test function getservbyname() +mv ext/standard/tests/general_functions/getservbyname_basic.phpt{,.skip} +# proc_nice() basic behaviour +mv ext/standard/tests/general_functions/proc_nice_basic.phpt{,.skip} +# proc_open +mv ext/standard/tests/general_functions/proc_open02.phpt{,.skip} +# Test setlocale() function : usage variations - Setting all available locales in the platform +mv ext/standard/tests/strings/setlocale_variation2.phpt{,.skip} +# wddx session serializer handler (serialize) +mv ext/wddx/tests/004.phpt{,.skip} +# wddx session serializer handler (deserialize) +mv ext/wddx/tests/005.phpt{,.skip} +# xmlrpc_encode_request() and various arguments +mv ext/xmlrpc/tests/002.phpt{,.skip} +# Bug #40576 (double values are truncated to 6 decimal digits when encoding) +$ix86 mv ext/xmlrpc/tests/bug40576.phpt{,.skip} +$x8664 mv ext/xmlrpc/tests/bug40576_64bit.phpt{,.skip} +# Bug #45555 (Segfault with invalid non-string as register_introspection_callback) +mv ext/xmlrpc/tests/bug45555.phpt{,.skip} +# Bug #45556 (Return value from callback isn't freed) +mv ext/xmlrpc/tests/bug45556.phpt{,.skip} +# apache_request_headers() stack overflow. +mv sapi/cgi/tests/apache_request_headers.phpt{,.skip} +# show information about extension +mv sapi/cli/tests/006.phpt{,.skip} +# Bug #61546 (functions related to current script failed when chdir() in cli sapi) +$ix86 mv sapi/cli/tests/bug61546.phpt{,.skip} +# Bug #60591 (Memory leak when access a non-exists file) +mv sapi/cli/tests/php_cli_server_016.phpt{,.skip} + +# failing tests from builders (requiring DNS apparently) +# PDO SQLite Feature Request #42589 (getColumnMeta() should also return table name) +$ix86 mv ext/pdo_sqlite/tests/bug_42589.phpt{,.skip} +# Bug #60749: SNMP module should not strip non-standard SNMP port from hostname +mv ext/snmp/tests/bug60749.phpt{,.skip} +# Wrong hostname +mv ext/snmp/tests/wrong_hostname.phpt{,.skip} +# ext/sockets - socket_bind - basic test +mv ext/sockets/tests/socket_bind.phpt{,.skip} +# gethostbyname() function - basic return valid ip address test +mv ext/standard/tests/network/gethostbyname_error004.phpt{,.skip} +# getmxrr() test +mv ext/standard/tests/network/getmxrr.phpt{,.skip} +# http-stream test +mv ext/standard/tests/network/http-stream.phpt{,.skip} diff --git a/spl-shared.patch b/spl-shared.patch new file mode 100644 index 0000000..8c10277 --- /dev/null +++ b/spl-shared.patch @@ -0,0 +1,86 @@ +--- php-5.3.1/ext/spl/config.m4~ 2009-11-26 23:54:34.000000000 +0000 ++++ php-5.3.1/ext/spl/config.m4 2009-11-27 08:04:05.788823797 +0000 +@@ -22,6 +22,6 @@ + CPPFLAGS=$old_CPPFLAGS + AC_DEFINE_UNQUOTED(HAVE_PACKED_OBJECT_VALUE, $ac_result, [Whether struct _zend_object_value is packed]) + AC_DEFINE(HAVE_SPL, 1, [Whether you want SPL (Standard PHP Library) support]) +- PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c spl_array.c spl_directory.c spl_exceptions.c spl_observer.c spl_dllist.c spl_heap.c spl_fixedarray.c, no) ++ PHP_NEW_EXTENSION(spl, php_spl.c spl_functions.c spl_engine.c spl_iterators.c spl_array.c spl_directory.c spl_exceptions.c spl_observer.c spl_dllist.c spl_heap.c spl_fixedarray.c, $ext_shared) + PHP_INSTALL_HEADERS([ext/spl], [php_spl.h spl_array.h spl_directory.h spl_engine.h spl_exceptions.h spl_functions.h spl_iterators.h spl_observer.h spl_dllist.h spl_heap.h spl_fixedarray.h]) + PHP_ADD_EXTENSION_DEP(spl, pcre, true) +--- php-5.3.1/ext/spl/spl_iterators.c~ 2009-07-04 20:31:27.000000000 +0000 ++++ php-5.3.1/ext/spl/spl_iterators.c 2009-11-27 16:35:33.729087793 +0000 +@@ -58,7 +58,13 @@ + PHPAPI zend_class_entry *spl_ce_AppendIterator; + PHPAPI zend_class_entry *spl_ce_RegexIterator; + PHPAPI zend_class_entry *spl_ce_RecursiveRegexIterator; ++#if COMPILE_DL_SPL ++#undef spl_ce_Countable ++zend_class_entry *spl_ce_Countable; // real instance ++extern PHPAPI zend_class_entry *spl_ce_Countable_p; // external one ++#else + PHPAPI zend_class_entry *spl_ce_Countable; ++#endif + PHPAPI zend_class_entry *spl_ce_RecursiveTreeIterator; + + ZEND_BEGIN_ARG_INFO(arginfo_recursive_it_void, 0) +@@ -3286,6 +3292,10 @@ + REGISTER_SPL_STD_CLASS_EX(EmptyIterator, NULL, spl_funcs_EmptyIterator); + REGISTER_SPL_ITERATOR(EmptyIterator); + ++#if COMPILE_DL_SPL ++ spl_ce_Countable_p = spl_ce_Countable; ++#endif ++ + REGISTER_SPL_SUB_CLASS_EX(RecursiveTreeIterator, RecursiveIteratorIterator, spl_RecursiveTreeIterator_new, spl_funcs_RecursiveTreeIterator); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveTreeIterator, "BYPASS_CURRENT", RTIT_BYPASS_CURRENT); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveTreeIterator, "BYPASS_KEY", RTIT_BYPASS_KEY); +--- php-5.4.0alpha3/ext/spl/spl_iterators.h~ 2011-07-27 11:48:08.000000000 +0300 ++++ php-5.4.0alpha3/ext/spl/spl_iterators.h 2011-08-08 00:12:10.892993117 +0300 +@@ -51,7 +51,12 @@ + extern PHPAPI zend_class_entry *spl_ce_AppendIterator; + extern PHPAPI zend_class_entry *spl_ce_RegexIterator; + extern PHPAPI zend_class_entry *spl_ce_RecursiveRegexIterator; ++#if COMPILE_DL_SPL ++#define spl_ce_Countable spl_ce_Countable_p ++extern PHPAPI zend_class_entry *spl_ce_Countable_p; ++#else + extern PHPAPI zend_class_entry *spl_ce_Countable; ++#endif + extern PHPAPI zend_class_entry *spl_ce_CallbackFilterIterator; + extern PHPAPI zend_class_entry *spl_ce_RecursiveCallbackFilterIterator; + +--- php-5.3.1/ext/standard/array.c~ 2009-08-14 06:20:21.000000000 +0000 ++++ php-5.3.1/ext/standard/array.c 2009-11-27 16:37:15.029078323 +0000 +@@ -49,6 +49,9 @@ + #ifdef HAVE_SPL + #include "ext/spl/spl_array.h" + #endif ++#if COMPILE_DL_SPL ++PHPAPI zend_class_entry *spl_ce_Countable_p = NULL; // external one ++#endif + + /* {{{ defines */ + #define EXTR_OVERWRITE 0 +--- php-5.3.1/ext/pdo/pdo.c~ 2009-07-19 22:46:03.000000000 +0000 ++++ php-5.3.1/ext/pdo/pdo.c 2009-11-27 16:37:51.332409104 +0000 +@@ -132,7 +132,7 @@ + /* {{{ pdo_functions[] */ + #if ZEND_MODULE_API_NO >= 20050922 + static const zend_module_dep pdo_deps[] = { +-#ifdef HAVE_SPL ++#ifdef HAVE_SPL && !COMPILE_DL_SPL + ZEND_MOD_REQUIRED("spl") + #endif + {NULL, NULL, NULL} +--- php-5.3.1/ext/phar/Makefile.frag~ 2009-07-23 15:48:04.000000000 +0000 ++++ php-5.3.1/ext/phar/Makefile.frag 2009-11-30 16:10:29.687175948 +0000 +@@ -10,7 +10,7 @@ + $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \ + if test "x$(PHP_MODULES)" != "x"; then \ + $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \ +- for i in bz2 zlib phar; do \ ++ for i in pcre spl bz2 zlib phar; do \ + if test -f "$(top_builddir)/modules/$$i.la"; then \ + . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ + fi; \ diff --git a/suhosin.patch b/suhosin.patch new file mode 100644 index 0000000..8431555 --- /dev/null +++ b/suhosin.patch @@ -0,0 +1,5684 @@ +suhosin hardening patch + +this patch was downloaded from: + + http://download.suhosin.org/suhosin-patch-5.3.4-0.9.10.patch.gz + +the following modifications have been made: + + * removed changes to ./configure & ./main/php_config.h.in since those + files are autogenerated + * "quilt refresh" has been run to clean up the offsets, etc + * chunk adjusted for PLD Logo patch +--- a/Zend/Makefile.am ++++ b/Zend/Makefile.am +@@ -17,7 +17,8 @@ libZend_la_SOURCES=\ + zend_objects_API.c zend_ts_hash.c zend_stream.c \ + zend_default_classes.c \ + zend_iterators.c zend_interfaces.c zend_exceptions.c \ +- zend_strtod.c zend_closures.c zend_float.c zend_string.c zend_signal.c ++ zend_strtod.c zend_closures.c zend_float.c zend_string.c zend_signal.c \ ++ zend_canary.c zend_alloc_canary.c + + libZend_la_LDFLAGS = + libZend_la_LIBADD = @ZEND_EXTRA_LIBS@ +--- a/Zend/Zend.dsp ++++ b/Zend/Zend.dsp +@@ -251,6 +251,14 @@ SOURCE=.\zend_strtod.c + # End Source File + # Begin Source File + ++SOURCE=.\zend_canary.c ++# End Source File ++# Begin Source File ++ ++SOURCE=.\zend_alloc_canary.c ++# End Source File ++# Begin Source File ++ + SOURCE=.\zend_ts_hash.c + # End Source File + # Begin Source File +--- a/Zend/ZendTS.dsp ++++ b/Zend/ZendTS.dsp +@@ -281,6 +281,14 @@ SOURCE=.\zend_strtod.c + # End Source File + # Begin Source File + ++SOURCE=.\zend_canary.c ++# End Source File ++# Begin Source File ++ ++SOURCE=.\zend_alloc_canary.c ++# End Source File ++# Begin Source File ++ + SOURCE=.\zend_ts_hash.c + # End Source File + # Begin Source File +--- a/Zend/zend.c ++++ b/Zend/zend.c +@@ -61,6 +61,10 @@ int (*zend_vspprintf)(char **pbuf, size_ + ZEND_API char *(*zend_getenv)(char *name, size_t name_len TSRMLS_DC); + ZEND_API char *(*zend_resolve_path)(const char *filename, int filename_len TSRMLS_DC); + ++#if SUHOSIN_PATCH ++ZEND_API void (*zend_suhosin_log)(int loglevel, char *fmt, ...); ++#endif ++ + void (*zend_on_timeout)(int seconds TSRMLS_DC); + + static void (*zend_message_dispatcher_p)(long message, const void *data TSRMLS_DC); +@@ -102,6 +106,74 @@ static ZEND_INI_MH(OnUpdateScriptEncodin + /* }}} */ + + ++#if SUHOSIN_PATCH ++static ZEND_INI_MH(OnUpdateSuhosin_log_syslog) ++{ ++ if (!new_value) { ++ SPG(log_syslog) = S_ALL & ~S_SQL | S_MEMORY; ++ } else { ++ SPG(log_syslog) = atoi(new_value) | S_MEMORY; ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_syslog_facility) ++{ ++ if (!new_value) { ++ SPG(log_syslog_facility) = LOG_USER; ++ } else { ++ SPG(log_syslog_facility) = atoi(new_value); ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_syslog_priority) ++{ ++ if (!new_value) { ++ SPG(log_syslog_priority) = LOG_ALERT; ++ } else { ++ SPG(log_syslog_priority) = atoi(new_value); ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_sapi) ++{ ++ if (!new_value) { ++ SPG(log_sapi) = S_ALL & ~S_SQL; ++ } else { ++ SPG(log_sapi) = atoi(new_value); ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_script) ++{ ++ if (!new_value) { ++ SPG(log_script) = S_ALL & ~S_MEMORY; ++ } else { ++ SPG(log_script) = atoi(new_value) & (~S_MEMORY) & (~S_INTERNAL); ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_scriptname) ++{ ++ if (SPG(log_scriptname)) { ++ pefree(SPG(log_scriptname),1); ++ } ++ SPG(log_scriptname) = NULL; ++ if (new_value) { ++ SPG(log_scriptname) = pestrdup(new_value,1); ++ } ++ return SUCCESS; ++} ++static ZEND_INI_MH(OnUpdateSuhosin_log_phpscript) ++{ ++ if (!new_value) { ++ SPG(log_phpscript) = S_ALL & ~S_MEMORY; ++ } else { ++ SPG(log_phpscript) = atoi(new_value) & (~S_MEMORY) & (~S_INTERNAL); ++ } ++ return SUCCESS; ++} ++#endif ++ + ZEND_INI_BEGIN() + ZEND_INI_ENTRY("error_reporting", NULL, ZEND_INI_ALL, OnUpdateErrorReporting) + STD_ZEND_INI_BOOLEAN("zend.enable_gc", "1", ZEND_INI_ALL, OnUpdateGCEnabled, gc_enabled, zend_gc_globals, gc_globals) +--- a/Zend/zend.h ++++ b/Zend/zend.h +@@ -688,6 +688,9 @@ extern ZEND_API int (*zend_stream_open_f + extern int (*zend_vspprintf)(char **pbuf, size_t max_len, const char *format, va_list ap); + extern ZEND_API char *(*zend_getenv)(char *name, size_t name_len TSRMLS_DC); + extern ZEND_API char *(*zend_resolve_path)(const char *filename, int filename_len TSRMLS_DC); ++#if SUHOSIN_PATCH ++extern ZEND_API void (*zend_suhosin_log)(int loglevel, char *fmt, ...); ++#endif + + ZEND_API void zend_error(int type, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); + +@@ -849,6 +852,16 @@ ZEND_API void zend_restore_error_handlin + #define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0) + #define DEBUG_BACKTRACE_IGNORE_ARGS (1<<1) + ++#if SUHOSIN_PATCH ++#include "suhosin_globals.h" ++#include "suhosin_patch.h" ++#include "php_syslog.h" ++ ++ZEND_API void zend_canary(void *buf, int len); ++ZEND_API char suhosin_get_config(int element); ++ ++#endif ++ + #endif /* ZEND_H */ + + /* +--- a/Zend/zend_alloc.c ++++ b/Zend/zend_alloc.c +@@ -32,6 +32,10 @@ + # include + #endif + ++#if SUHOSIN_PATCH ++#include "suhosin_patch.h" ++#endif ++ + #ifdef ZEND_WIN32 + # include + # include +@@ -59,6 +63,7 @@ + # define PTR_FMT "0x%0.8lx" + #endif + ++#ifndef SUHOSIN_MM_CLONE_FILE + #if ZEND_DEBUG + void zend_debug_alloc_output(char *format, ...) + { +@@ -76,6 +81,7 @@ void zend_debug_alloc_output(char *forma + #endif + } + #endif ++#endif + + #if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) + static void zend_mm_panic(const char *message) __attribute__ ((noreturn)); +@@ -134,6 +140,8 @@ static void zend_mm_panic(const char *me + # endif + #endif + ++static zend_intptr_t SUHOSIN_POINTER_GUARD = 0; ++ + static zend_mm_storage* zend_mm_mem_dummy_init(void *params) + { + return malloc(sizeof(zend_mm_storage)); +@@ -332,13 +340,28 @@ static const zend_mm_mem_handlers mem_ha + #define MEM_BLOCK_GUARD 0x2A8FCC84 + #define MEM_BLOCK_LEAK 0x6C5E8F2D + ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++# define CANARY_SIZE sizeof(size_t) ++#else ++# define CANARY_SIZE 0 ++#endif ++ + /* mm block type */ + typedef struct _zend_mm_block_info { + #if ZEND_MM_COOKIES + size_t _cookie; + #endif +- size_t _size; +- size_t _prev; ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ size_t canary_1; ++#endif ++ size_t _size; ++ size_t _prev; ++#if SUHOSIN_PATCH ++ size_t size; ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ size_t canary_2; ++#endif ++#endif + } zend_mm_block_info; + + #if ZEND_DEBUG +@@ -412,7 +435,7 @@ typedef struct _zend_mm_free_block { + # define ZEND_MM_CACHE_STAT 0 + #endif + +-struct _zend_mm_heap { ++typedef struct _zend_mm_heap { + int use_zend_alloc; + void *(*_malloc)(size_t); + void (*_free)(void*); +@@ -448,6 +471,9 @@ struct _zend_mm_heap { + int miss; + } cache_stat[ZEND_MM_NUM_BUCKETS+1]; + #endif ++#if SUHOSIN_PATCH ++ size_t canary_1,canary_2,canary_3; ++#endif + }; + + #define ZEND_MM_SMALL_FREE_BUCKET(heap, index) \ +@@ -525,18 +551,31 @@ static unsigned int _zend_mm_cookie = 0; + /* optimized access */ + #define ZEND_MM_FREE_BLOCK_SIZE(b) (b)->info._size + ++#ifndef ZEND_MM_ALIGNMENT ++# define ZEND_MM_ALIGNMENT 8 ++# define ZEND_MM_ALIGNMENT_LOG2 3 ++#elif ZEND_MM_ALIGNMENT < 4 ++# undef ZEND_MM_ALIGNMENT ++# undef ZEND_MM_ALIGNMENT_LOG2 ++# define ZEND_MM_ALIGNMENT 4 ++# define ZEND_MM_ALIGNMENT_LOG2 2 ++#endif ++ ++#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT-1) ++ + /* Aligned header size */ ++#define ZEND_MM_ALIGNED_SIZE(size) ((size + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK) + #define ZEND_MM_ALIGNED_HEADER_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_block)) + #define ZEND_MM_ALIGNED_FREE_HEADER_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_small_free_block)) +-#define ZEND_MM_MIN_ALLOC_BLOCK_SIZE ZEND_MM_ALIGNED_SIZE(ZEND_MM_ALIGNED_HEADER_SIZE + END_MAGIC_SIZE) ++#define ZEND_MM_MIN_ALLOC_BLOCK_SIZE ZEND_MM_ALIGNED_SIZE(ZEND_MM_ALIGNED_HEADER_SIZE + END_MAGIC_SIZE + CANARY_SIZE) + #define ZEND_MM_ALIGNED_MIN_HEADER_SIZE (ZEND_MM_MIN_ALLOC_BLOCK_SIZE>ZEND_MM_ALIGNED_FREE_HEADER_SIZE?ZEND_MM_MIN_ALLOC_BLOCK_SIZE:ZEND_MM_ALIGNED_FREE_HEADER_SIZE) + #define ZEND_MM_ALIGNED_SEGMENT_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_segment)) + +-#define ZEND_MM_MIN_SIZE ((ZEND_MM_ALIGNED_MIN_HEADER_SIZE>(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE))?(ZEND_MM_ALIGNED_MIN_HEADER_SIZE-(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE)):0) ++#define ZEND_MM_MIN_SIZE ((ZEND_MM_ALIGNED_MIN_HEADER_SIZE>(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE+CANARY_SIZE))?(ZEND_MM_ALIGNED_MIN_HEADER_SIZE-(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE+CANARY_SIZE)):0) + + #define ZEND_MM_MAX_SMALL_SIZE ((ZEND_MM_NUM_BUCKETS<>ZEND_MM_ALIGNMENT_LOG2)-(ZEND_MM_ALIGNED_MIN_HEADER_SIZE>>ZEND_MM_ALIGNMENT_LOG2)) + +@@ -598,6 +637,44 @@ static unsigned int _zend_mm_cookie = 0; + + #endif + ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ ++# define SUHOSIN_MM_CHECK_CANARIES(block, MFUNCTION) do { \ ++ char *p = SUHOSIN_MM_END_CANARY_PTR(block); size_t check; \ ++ if (((block)->info.canary_1 != heap->canary_1) || ((block)->info.canary_2 != heap->canary_2)) { \ ++ canary_mismatch: \ ++ zend_suhosin_log(S_MEMORY, "canary mismatch on " MFUNCTION " - heap overflow detected at %p", (block)); \ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_IGNORE_CANARY_VIOLATION) == 0) { _exit(1); } else { (block)->info.canary_1 = heap->canary_1; (block)->info.canary_2 = heap->canary_2; }\ ++ } \ ++ memcpy(&check, p, CANARY_SIZE); \ ++ if (check != heap->canary_3) { \ ++ zend_suhosin_log(S_MEMORY, "end canary mismatch on " MFUNCTION " - heap overflow detected at %p", (block)); \ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_IGNORE_CANARY_VIOLATION) == 0) { _exit(1); } else { memcpy(p, heap->canary_3, CANARY_SIZE); } \ ++ } \ ++ } while (0) ++ ++# define SUHOSIN_MM_SET_CANARIES(block) do { \ ++ (block)->info.canary_1 = heap->canary_1; \ ++ (block)->info.canary_2 = heap->canary_2; \ ++ } while (0) ++ ++# define SUHOSIN_MM_END_CANARY_PTR(block) \ ++ (char *)(((char*)(ZEND_MM_DATA_OF(block))) + ((zend_mm_block*)(block))->info.size + END_MAGIC_SIZE) ++ ++# define SUHOSIN_MM_SET_END_CANARY(block) do { \ ++ char *p = SUHOSIN_MM_END_CANARY_PTR(block); \ ++ memcpy(p, &heap->canary_3, CANARY_SIZE); \ ++ } while (0) ++ ++#else ++ ++# define SUHOSIN_MM_CHECK_CANARIES(block, MFUNCTION) ++# define SUHOSIN_MM_SET_CANARIES(block) ++# define SUHOSIN_MM_END_CANARY_PTR(block) ++# define SUHOSIN_MM_SET_END_CANARY(block) ++ ++#endif ++ + + #if ZEND_MM_HEAP_PROTECTION + +@@ -720,7 +797,7 @@ static inline unsigned int zend_mm_low_b + #endif + } + +-static inline void zend_mm_add_to_free_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) ++static void zend_mm_add_to_free_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) + { + size_t size; + size_t index; +@@ -737,7 +814,7 @@ static inline void zend_mm_add_to_free_l + if (!*p) { + *p = mm_block; + mm_block->parent = p; +- mm_block->prev_free_block = mm_block->next_free_block = mm_block; ++ mm_block->prev_free_block = mm_block->next_free_block = SUHOSIN_MANGLE_PTR(mm_block); + heap->large_free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); + } else { + size_t m; +@@ -750,15 +827,15 @@ static inline void zend_mm_add_to_free_l + if (!*p) { + *p = mm_block; + mm_block->parent = p; +- mm_block->prev_free_block = mm_block->next_free_block = mm_block; ++ mm_block->prev_free_block = mm_block->next_free_block = SUHOSIN_MANGLE_PTR(mm_block); + break; + } + } else { +- zend_mm_free_block *next = prev->next_free_block; ++ zend_mm_free_block *next = SUHOSIN_MANGLE_PTR(prev->next_free_block); + +- prev->next_free_block = next->prev_free_block = mm_block; +- mm_block->next_free_block = next; +- mm_block->prev_free_block = prev; ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); + mm_block->parent = NULL; + break; + } +@@ -770,14 +847,14 @@ static inline void zend_mm_add_to_free_l + index = ZEND_MM_BUCKET_INDEX(size); + + prev = ZEND_MM_SMALL_FREE_BUCKET(heap, index); +- if (prev->prev_free_block == prev) { ++ if (SUHOSIN_MANGLE_PTR(prev->prev_free_block) == prev) { + heap->free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); + } +- next = prev->next_free_block; ++ next = SUHOSIN_MANGLE_PTR(prev->next_free_block); + +- mm_block->prev_free_block = prev; +- mm_block->next_free_block = next; +- prev->next_free_block = next->prev_free_block = mm_block; ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); + } + } + +@@ -791,6 +868,12 @@ static inline void zend_mm_remove_from_f + if (EXPECTED(prev == mm_block)) { + zend_mm_free_block **rp, **cp; + ++#if SUHOSIN_PATCH ++ if (next != mm_block) { ++ zend_suhosin_log(S_MEMORY, "zend_mm_heap corrupted at %p", mm_block); ++ _exit(1); ++ } ++#endif + #if ZEND_MM_SAFE_UNLINKING + if (UNEXPECTED(next != mm_block)) { + zend_mm_panic("zend_mm_heap corrupted"); +@@ -829,14 +912,21 @@ subst_block: + } + } else { + ++#if SUHOSIN_PATCH ++ if (SUHOSIN_MANGLE_PTR(prev->next_free_block) != mm_block || SUHOSIN_MANGLE_PTR(next->prev_free_block) != mm_block) { ++ zend_suhosin_log(S_MEMORY, "zend_mm_head corrupted at %p", mm_block); ++ _exit(1); ++ } ++#endif ++ + #if ZEND_MM_SAFE_UNLINKING +- if (UNEXPECTED(prev->next_free_block != mm_block) || UNEXPECTED(next->prev_free_block != mm_block)) { ++ if (UNEXPECTED(SUHOSIN_MANGLE_PTR(prev->next_free_block) != mm_block) || UNEXPECTED(SUHOSIN_MANGLE_PTR(next->prev_free_block) != mm_block)) { + zend_mm_panic("zend_mm_heap corrupted"); + } + #endif + +- prev->next_free_block = next; +- next->prev_free_block = prev; ++ prev->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ next->prev_free_block = SUHOSIN_MANGLE_PTR(prev); + + if (EXPECTED(ZEND_MM_SMALL_SIZE(ZEND_MM_FREE_BLOCK_SIZE(mm_block)))) { + if (EXPECTED(prev == next)) { +@@ -854,7 +944,7 @@ subst_block: + } + } + +-static inline void zend_mm_add_to_rest_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) ++static void zend_mm_add_to_rest_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) + { + zend_mm_free_block *prev, *next; + +@@ -878,14 +968,14 @@ static inline void zend_mm_add_to_rest_l + + ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_FREED); + +- prev = heap->rest_buckets[0]; +- next = prev->next_free_block; +- mm_block->prev_free_block = prev; +- mm_block->next_free_block = next; +- prev->next_free_block = next->prev_free_block = mm_block; ++ prev = SUHOSIN_MANGLE_PTR(heap->rest_buckets[0]); ++ next = SUHOSIN_MANGLE_PTR(prev->next_free_block); ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); + } + +-static inline void zend_mm_init(zend_mm_heap *heap) ++static void zend_mm_init(zend_mm_heap *heap) + { + zend_mm_free_block* p; + int i; +@@ -903,13 +993,21 @@ static inline void zend_mm_init(zend_mm_ + #endif + p = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); + for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { +- p->next_free_block = p; +- p->prev_free_block = p; ++ p->next_free_block = SUHOSIN_MANGLE_PTR(p); ++ p->prev_free_block = SUHOSIN_MANGLE_PTR(p); + p = (zend_mm_free_block*)((char*)p + sizeof(zend_mm_free_block*) * 2); + heap->large_free_buckets[i] = NULL; + } +- heap->rest_buckets[0] = heap->rest_buckets[1] = ZEND_MM_REST_BUCKET(heap); ++ heap->rest_buckets[0] = heap->rest_buckets[1] = SUHOSIN_MANGLE_PTR(ZEND_MM_REST_BUCKET(heap)); + heap->rest_count = 0; ++ ++#if SUHOSIN_PATCH ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION)) { ++ zend_canary(&heap->canary_1, sizeof(heap->canary_1)); ++ zend_canary(&heap->canary_2, sizeof(heap->canary_2)); ++ zend_canary(&heap->canary_3, sizeof(heap->canary_3)); ++ } ++#endif + } + + static void zend_mm_del_segment(zend_mm_heap *heap, zend_mm_segment *segment) +@@ -930,12 +1028,13 @@ static void zend_mm_free_cache(zend_mm_h + int i; + + for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { ++ /* NULL means NULL even MANGLED */ + if (heap->cache[i]) { +- zend_mm_free_block *mm_block = heap->cache[i]; ++ zend_mm_free_block *mm_block = SUHOSIN_MANGLE_PTR(heap->cache[i]); + + while (mm_block) { + size_t size = ZEND_MM_BLOCK_SIZE(mm_block); +- zend_mm_free_block *q = mm_block->prev_free_block; ++ zend_mm_free_block *q = SUHOSIN_MANGLE_PTR(mm_block->prev_free_block); + zend_mm_block *next_block = ZEND_MM_NEXT_BLOCK(mm_block); + + heap->cached -= size; +@@ -1031,14 +1130,20 @@ static void zend_mm_random(unsigned char + /* }}} */ + #endif + ++ + /* Notes: + * - This function may alter the block_sizes values to match platform alignment + * - This function does *not* perform sanity checks on the arguments + */ +-ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params) ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++zend_mm_heap *__zend_mm_startup_canary_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params) ++#else ++static zend_mm_heap *__zend_mm_startup_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params) ++#endif + { + zend_mm_storage *storage; + zend_mm_heap *heap; ++ zend_mm_free_block *tmp; + + #if 0 + int i; +@@ -1072,6 +1177,12 @@ ZEND_API zend_mm_heap *zend_mm_startup_e + } + #endif + ++ /* get the pointer guardian and ensure low 3 bits are 1 */ ++ if (SUHOSIN_POINTER_GUARD == 0) { ++ zend_canary(&SUHOSIN_POINTER_GUARD, sizeof(SUHOSIN_POINTER_GUARD)); ++ SUHOSIN_POINTER_GUARD |= 7; ++ } ++ + if (zend_mm_low_bit(block_size) != zend_mm_high_bit(block_size)) { + fprintf(stderr, "'block_size' must be a power of two\n"); + /* See http://support.microsoft.com/kb/190351 */ +@@ -1119,12 +1230,12 @@ ZEND_API zend_mm_heap *zend_mm_startup_e + heap->reserve = NULL; + heap->reserve_size = reserve_size; + if (reserve_size > 0) { +- heap->reserve = _zend_mm_alloc_int(heap, reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ heap->reserve = _zend_mm_alloc(heap, reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); + } + if (internal) { + int i; + zend_mm_free_block *p, *q, *orig; +- zend_mm_heap *mm_heap = _zend_mm_alloc_int(heap, sizeof(zend_mm_heap) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ zend_mm_heap *mm_heap = _zend_mm_alloc(heap, sizeof(zend_mm_heap) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); + + *mm_heap = *heap; + +@@ -1132,22 +1243,22 @@ ZEND_API zend_mm_heap *zend_mm_startup_e + orig = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); + for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { + q = p; +- while (q->prev_free_block != orig) { +- q = q->prev_free_block; ++ while (SUHOSIN_MANGLE_PTR(q->prev_free_block) != orig) { ++ q = SUHOSIN_MANGLE_PTR(q->prev_free_block); + } +- q->prev_free_block = p; ++ q->prev_free_block = SUHOSIN_MANGLE_PTR(p); + q = p; +- while (q->next_free_block != orig) { +- q = q->next_free_block; ++ while (SUHOSIN_MANGLE_PTR(q->next_free_block) != orig) { ++ q = SUHOSIN_MANGLE_PTR(q->next_free_block); + } +- q->next_free_block = p; ++ q->next_free_block = SUHOSIN_MANGLE_PTR(p); + p = (zend_mm_free_block*)((char*)p + sizeof(zend_mm_free_block*) * 2); + orig = (zend_mm_free_block*)((char*)orig + sizeof(zend_mm_free_block*) * 2); + if (mm_heap->large_free_buckets[i]) { + mm_heap->large_free_buckets[i]->parent = &mm_heap->large_free_buckets[i]; + } + } +- mm_heap->rest_buckets[0] = mm_heap->rest_buckets[1] = ZEND_MM_REST_BUCKET(mm_heap); ++ mm_heap->rest_buckets[0] = mm_heap->rest_buckets[1] = SUHOSIN_MANGLE_PTR(ZEND_MM_REST_BUCKET(mm_heap)); + mm_heap->rest_count = 0; + + free(heap); +@@ -1156,7 +1267,11 @@ ZEND_API zend_mm_heap *zend_mm_startup_e + return heap; + } + +-ZEND_API zend_mm_heap *zend_mm_startup(void) ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++zend_mm_heap *__zend_mm_startup_canary(void) ++#else ++static zend_mm_heap *__zend_mm_startup(void) ++#endif + { + int i; + size_t seg_size; +@@ -1226,6 +1341,27 @@ ZEND_API zend_mm_heap *zend_mm_startup(v + return heap; + } + ++#ifndef SUHOSIN_MM_CLONE_FILE ++zend_mm_heap_canary *__zend_mm_startup_canary_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params); ++zend_mm_heap_canary *__zend_mm_startup_canary(void); ++ ++ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params) ++{ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION)) { ++ return (zend_mm_heap *)__zend_mm_startup_canary_ex(handlers, block_size, reserve_size, internal, params); ++ } ++ return __zend_mm_startup_ex(handlers, block_size, reserve_size, internal, params); ++} ++ZEND_API zend_mm_heap *zend_mm_startup(void) ++{ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION)) { ++ return (zend_mm_heap *)__zend_mm_startup_canary(); ++ } ++ return __zend_mm_startup(); ++} ++ ++#endif ++ + #if ZEND_DEBUG + static long zend_mm_find_leaks(zend_mm_segment *segment, zend_mm_block *b) + { +@@ -1594,7 +1730,11 @@ static int zend_mm_check_heap(zend_mm_he + } + #endif + +-ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC) ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++void __zend_mm_shutdown_canary(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC) ++#else ++static void __zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC) ++#endif + { + zend_mm_storage *storage; + zend_mm_segment *segment; +@@ -1611,7 +1751,7 @@ ZEND_API void zend_mm_shutdown(zend_mm_h + if (heap->reserve) { + #if ZEND_DEBUG + if (!silent) { +- _zend_mm_free_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ _zend_mm_free(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); + } + #endif + heap->reserve = NULL; +@@ -1730,12 +1870,23 @@ ZEND_API void zend_mm_shutdown(zend_mm_h + zend_mm_add_to_free_list(heap, b); + } + if (heap->reserve_size) { +- heap->reserve = _zend_mm_alloc_int(heap, heap->reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ heap->reserve = _zend_mm_alloc(heap, heap->reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); + } + heap->overflow = 0; + } + } + ++#ifndef SUHOSIN_MM_CLONE_FILE ++ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC) ++{ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION)) { ++ __zend_mm_shutdown_canary(heap, full_shutdown, silent TSRMLS_CC); ++ return; ++ } ++ __zend_mm_shutdown(heap, full_shutdown, silent TSRMLS_CC); ++} ++#endif ++ + static void zend_mm_safe_error(zend_mm_heap *heap, + const char *format, + size_t limit, +@@ -1746,7 +1897,11 @@ static void zend_mm_safe_error(zend_mm_h + size_t size) + { + if (heap->reserve) { ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ _zend_mm_free_canary_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++#else + _zend_mm_free_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++#endif + heap->reserve = NULL; + } + if (heap->overflow == 0) { +@@ -1821,7 +1976,7 @@ static zend_mm_free_block *zend_mm_searc + p = heap->large_free_buckets[index]; + for (m = true_size << (ZEND_MM_NUM_BUCKETS - index); ; m <<= 1) { + if (UNEXPECTED(ZEND_MM_FREE_BLOCK_SIZE(p) == true_size)) { +- return p->next_free_block; ++ return SUHOSIN_MANGLE_PTR(p->next_free_block); + } else if (ZEND_MM_FREE_BLOCK_SIZE(p) >= true_size && + ZEND_MM_FREE_BLOCK_SIZE(p) < best_size) { + best_size = ZEND_MM_FREE_BLOCK_SIZE(p); +@@ -1845,7 +2000,7 @@ static zend_mm_free_block *zend_mm_searc + + for (p = rst; p; p = p->child[p->child[0] != NULL]) { + if (UNEXPECTED(ZEND_MM_FREE_BLOCK_SIZE(p) == true_size)) { +- return p->next_free_block; ++ return SUHOSIN_MANGLE_PTR(p->next_free_block); + } else if (ZEND_MM_FREE_BLOCK_SIZE(p) > true_size && + ZEND_MM_FREE_BLOCK_SIZE(p) < best_size) { + best_size = ZEND_MM_FREE_BLOCK_SIZE(p); +@@ -1854,7 +2009,7 @@ static zend_mm_free_block *zend_mm_searc + } + + if (best_fit) { +- return best_fit->next_free_block; ++ return SUHOSIN_MANGLE_PTR(best_fit->next_free_block); + } + bitmap = bitmap >> 1; + if (!bitmap) { +@@ -1870,9 +2025,12 @@ static zend_mm_free_block *zend_mm_searc + best_fit = p; + } + } +- return best_fit->next_free_block; ++ return SUHOSIN_MANGLE_PTR(best_fit->next_free_block); + } + ++#if SUHOSIN_PATCH ++void *_zend_mm_alloc_canary_int(zend_mm_heap_canary *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ++#endif + static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { + zend_mm_free_block *best_fit; +@@ -1902,9 +2060,14 @@ static void *_zend_mm_alloc_int(zend_mm_ + heap->cache_stat[index].count--; + heap->cache_stat[index].hit++; + #endif +- best_fit = heap->cache[index]; ++ best_fit = SUHOSIN_MANGLE_PTR(heap->cache[index]); + heap->cache[index] = best_fit->prev_free_block; + heap->cached -= true_size; ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif + ZEND_MM_CHECK_MAGIC(best_fit, MEM_BLOCK_CACHED); + ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 0); + HANDLE_UNBLOCK_INTERRUPTIONS(); +@@ -1919,7 +2082,7 @@ static void *_zend_mm_alloc_int(zend_mm_ + if (bitmap) { + /* Found some "small" free block that can be used */ + index += zend_mm_low_bit(bitmap); +- best_fit = heap->free_buckets[index*2]; ++ best_fit = SUHOSIN_MANGLE_PTR(heap->free_buckets[index*2]); + #if ZEND_MM_CACHE_STAT + heap->cache_stat[ZEND_MM_NUM_BUCKETS].hit++; + #endif +@@ -1934,7 +2097,7 @@ static void *_zend_mm_alloc_int(zend_mm_ + best_fit = zend_mm_search_large_block(heap, true_size); + + if (!best_fit && heap->real_size >= heap->limit - heap->block_size) { +- zend_mm_free_block *p = heap->rest_buckets[0]; ++ zend_mm_free_block *p = SUHOSIN_MANGLE_PTR(heap->rest_buckets[0]); + size_t best_size = -1; + + while (p != ZEND_MM_REST_BUCKET(heap)) { +@@ -1946,7 +2109,7 @@ static void *_zend_mm_alloc_int(zend_mm_ + best_size = ZEND_MM_FREE_BLOCK_SIZE(p); + best_fit = p; + } +- p = p->prev_free_block; ++ p = SUHOSIN_MANGLE_PTR(p->prev_free_block); + } + } + +@@ -2042,13 +2205,19 @@ zend_mm_finished_searching_for_block: + + ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 1); + ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif ++ + heap->size += true_size; + if (heap->peak < heap->size) { + heap->peak = heap->size; + } + + HANDLE_UNBLOCK_INTERRUPTIONS(); +- ++ + return ZEND_MM_DATA_OF(best_fit); + } + +@@ -2069,19 +2238,26 @@ static void _zend_mm_free_int(zend_mm_he + + mm_block = ZEND_MM_HEADER_OF(p); + size = ZEND_MM_BLOCK_SIZE(mm_block); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_CHECK_CANARIES(mm_block, "efree()"); ++#endif + ZEND_MM_CHECK_PROTECTION(mm_block); + + #if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION + memset(ZEND_MM_DATA_OF(mm_block), 0x5a, mm_block->debug.size); + #endif +- ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_DESTROY_FREE_MEMORY))) { ++ memset(ZEND_MM_DATA_OF(mm_block), 0x5a, mm_block->info.size); ++ } ++#endif + #if ZEND_MM_CACHE + if (EXPECTED(ZEND_MM_SMALL_SIZE(size)) && EXPECTED(heap->cached < ZEND_MM_CACHE_SIZE)) { + size_t index = ZEND_MM_BUCKET_INDEX(size); + zend_mm_free_block **cache = &heap->cache[index]; + + ((zend_mm_free_block*)mm_block)->prev_free_block = *cache; +- *cache = (zend_mm_free_block*)mm_block; ++ *cache = (zend_mm_free_block*)SUHOSIN_MANGLE_PTR(mm_block); + heap->cached += size; + ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_CACHED); + #if ZEND_MM_CACHE_STAT +@@ -2116,6 +2292,9 @@ static void _zend_mm_free_int(zend_mm_he + HANDLE_UNBLOCK_INTERRUPTIONS(); + } + ++#if SUHOSIN_PATCH ++void *_zend_mm_realloc_canary_int(zend_mm_heap_canary *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ++#endif + static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { + zend_mm_block *mm_block = ZEND_MM_HEADER_OF(p); +@@ -2127,7 +2306,11 @@ static void *_zend_mm_realloc_int(zend_m + TSRMLS_FETCH(); + #endif + if (UNEXPECTED(!p) || !ZEND_MM_VALID_PTR(p)) { ++#ifdef SUHOSIN_MM_WITH_CANARY_PROTECTION ++ return _zend_mm_alloc_canary_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#else + return _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + HANDLE_BLOCK_INTERRUPTIONS(); +@@ -2135,6 +2318,9 @@ static void *_zend_mm_realloc_int(zend_m + mm_block = ZEND_MM_HEADER_OF(p); + true_size = ZEND_MM_TRUE_SIZE(size); + orig_size = ZEND_MM_BLOCK_SIZE(mm_block); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_CHECK_CANARIES(mm_block, "erealloc()"); ++#endif + ZEND_MM_CHECK_PROTECTION(mm_block); + + if (UNEXPECTED(true_size < size)) { +@@ -2165,6 +2351,11 @@ static void *_zend_mm_realloc_int(zend_m + } + ZEND_MM_SET_DEBUG_INFO(mm_block, size, 0, 0); + HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif + return p; + } + +@@ -2180,17 +2371,22 @@ static void *_zend_mm_realloc_int(zend_m + heap->cache_stat[index].count--; + heap->cache_stat[index].hit++; + #endif +- best_fit = heap->cache[index]; ++ best_fit = SUHOSIN_MANGLE_PTR(heap->cache[index]); + heap->cache[index] = best_fit->prev_free_block; + ZEND_MM_CHECK_MAGIC(best_fit, MEM_BLOCK_CACHED); +- ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 0); +- ++ ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 0); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif ++ + ptr = ZEND_MM_DATA_OF(best_fit); + + #if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION + memcpy(ptr, p, mm_block->debug.size); + #else +- memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE); ++ memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE - CANARY_SIZE); + #endif + + heap->cached -= true_size - orig_size; +@@ -2199,7 +2395,7 @@ static void *_zend_mm_realloc_int(zend_m + cache = &heap->cache[index]; + + ((zend_mm_free_block*)mm_block)->prev_free_block = *cache; +- *cache = (zend_mm_free_block*)mm_block; ++ *cache = (zend_mm_free_block*)SUHOSIN_MANGLE_PTR(mm_block); + ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_CACHED); + #if ZEND_MM_CACHE_STAT + if (++heap->cache_stat[index].count > heap->cache_stat[index].max_count) { +@@ -2249,6 +2445,11 @@ static void *_zend_mm_realloc_int(zend_m + heap->peak = heap->size; + } + HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif + return p; + } else if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && + ZEND_MM_IS_GUARD_BLOCK(ZEND_MM_BLOCK_AT(next_block, ZEND_MM_FREE_BLOCK_SIZE(next_block)))) { +@@ -2349,39 +2550,75 @@ out_of_memory: + } + + HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif + return ZEND_MM_DATA_OF(mm_block); + } + ++#ifdef SUHOSIN_MM_WITH_CANARY_PROTECTION ++ ptr = _zend_mm_alloc_canary_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#else + ptr = _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + #if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION + memcpy(ptr, p, mm_block->debug.size); + #else +- memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE); ++ memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE - CANARY_SIZE); ++#endif ++#ifdef SUHOSIN_MM_WITH_CANARY_PROTECTION ++ _zend_mm_free_canary_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#else ++ _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + #endif +- _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + HANDLE_UNBLOCK_INTERRUPTIONS(); + return ptr; + } + ++#ifndef SUHOSIN_MM_CLONE_FILE + ZEND_API void *_zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { +- return _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif ++ return _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ return _zend_mm_alloc_canary_int((zend_mm_heap_canary *)heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API void _zend_mm_free(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { +- _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif ++ { _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); return; } ++#if SUHOSIN_PATCH ++ _zend_mm_free_canary_int((zend_mm_heap_canary *)heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API void *_zend_mm_realloc(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { +- return _zend_mm_realloc_int(heap, ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif ++ return _zend_mm_realloc_int(heap, ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ return _zend_mm_realloc_canary_int((zend_mm_heap_canary *)heap, ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API size_t _zend_mm_block_size(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { + zend_mm_block *mm_block; + ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) != 0) { ++ return _zend_mm_block_size_canary((zend_mm_heap_canary *)heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ + if (!ZEND_MM_VALID_PTR(p)) { + return 0; + } +@@ -2393,6 +2630,24 @@ ZEND_API size_t _zend_mm_block_size(zend + return ZEND_MM_BLOCK_SIZE(mm_block); + #endif + } ++#else ++ZEND_API size_t _zend_mm_block_size_canary(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_block *mm_block; ++ ++ if (!ZEND_MM_VALID_PTR(p)) { ++ return 0; ++ } ++ mm_block = ZEND_MM_HEADER_OF(p); ++ ZEND_MM_CHECK_PROTECTION(mm_block); ++#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION ++ return mm_block->debug.size; ++#else ++ return ZEND_MM_BLOCK_SIZE(mm_block); ++#endif ++} ++ ++#endif + + /**********************/ + /* Allocation Manager */ +@@ -2410,6 +2665,7 @@ static int alloc_globals_id; + static zend_alloc_globals alloc_globals; + #endif + ++#ifndef SUHOSIN_MM_CLONE_FILE + ZEND_API int is_zend_mm(TSRMLS_D) + { + return AG(mm_heap)->use_zend_alloc; +@@ -2422,7 +2678,13 @@ ZEND_API void *_emalloc(size_t size ZEND + if (UNEXPECTED(!AG(mm_heap)->use_zend_alloc)) { + return AG(mm_heap)->_malloc(size); + } ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif + return _zend_mm_alloc_int(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ return _zend_mm_alloc_canary_int((zend_mm_heap_canary *)AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +@@ -2433,7 +2695,13 @@ ZEND_API void _efree(void *ptr ZEND_FILE + AG(mm_heap)->_free(ptr); + return; + } +- _zend_mm_free_int(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif ++ { _zend_mm_free_int(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); return; } ++#if SUHOSIN_PATCH ++ _zend_mm_free_canary_int((zend_mm_heap_canary *)AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +@@ -2443,7 +2711,13 @@ ZEND_API void *_erealloc(void *ptr, size + if (UNEXPECTED(!AG(mm_heap)->use_zend_alloc)) { + return AG(mm_heap)->_realloc(ptr, size); + } ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif + return _zend_mm_realloc_int(AG(mm_heap), ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ return _zend_mm_realloc_canary_int((zend_mm_heap_canary *)AG(mm_heap), ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } + + ZEND_API size_t _zend_mem_block_size(void *ptr TSRMLS_DC ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +@@ -2451,8 +2725,15 @@ ZEND_API size_t _zend_mem_block_size(voi + if (UNEXPECTED(!AG(mm_heap)->use_zend_alloc)) { + return 0; + } +- return _zend_mm_block_size(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION) == 0)) ++#endif ++ return _zend_mm_block_size(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if SUHOSIN_PATCH ++ return _zend_mm_block_size_canary((zend_mm_heap_canary *)AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#endif + } ++#endif + + #if defined(__GNUC__) && defined(i386) + +@@ -2523,7 +2804,7 @@ static inline size_t safe_address(size_t + } + #endif + +- ++#ifndef SUHOSIN_MM_CLONE_FILE + ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) + { + return emalloc_rel(safe_address(nmemb, size, offset)); +@@ -2663,6 +2944,7 @@ ZEND_API void shutdown_memory_manager(in + { + zend_mm_shutdown(AG(mm_heap), full_shutdown, silent TSRMLS_CC); + } ++#endif + + static void alloc_globals_ctor(zend_alloc_globals *alloc_globals TSRMLS_DC) + { +@@ -2687,6 +2969,7 @@ static void alloc_globals_dtor(zend_allo + } + #endif + ++#ifndef SUHOSIN_MM_CLONE_FILE + ZEND_API void start_memory_manager(TSRMLS_D) + { + #ifdef ZTS +@@ -2751,6 +3034,7 @@ ZEND_API void _full_mem_check(int silent + zend_debug_alloc_output("------------------------------------------------\n"); + } + #endif ++#endif + + /* + * Local variables: +--- a/Zend/zend_alloc.h ++++ b/Zend/zend_alloc.h +@@ -189,6 +189,8 @@ END_EXTERN_C() + + /* Heap functions */ + typedef struct _zend_mm_heap zend_mm_heap; ++typedef struct _zend_mm_heap_canary zend_mm_heap_canary; ++ + + ZEND_API zend_mm_heap *zend_mm_startup(void); + ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC); +--- /dev/null ++++ b/Zend/zend_alloc_canary.c +@@ -0,0 +1,2498 @@ ++/* ++ +----------------------------------------------------------------------+ ++ | Suhosin-Patch for PHP | ++ +----------------------------------------------------------------------+ ++ | Copyright (c) 2004-2010 Stefan Esser | ++ +----------------------------------------------------------------------+ ++ | This source file is subject to version 2.02 of the PHP license, | ++ | that is bundled with this package in the file LICENSE, and is | ++ | available at through the world-wide-web at | ++ | http://www.php.net/license/2_02.txt. | ++ | If you did not receive a copy of the PHP license and are unable to | ++ | obtain it through the world-wide-web, please send a note to | ++ | license@php.net so we can mail you a copy immediately. | ++ +----------------------------------------------------------------------+ ++ | Author: Stefan Esser | ++ +----------------------------------------------------------------------+ ++ */ ++/* $Id: zend_alloc_canary.c, $ */ ++ ++#include "zend.h" ++#include "zend_alloc.h" ++#include "zend_globals.h" ++#include "zend_operators.h" ++ ++#ifdef HAVE_SIGNAL_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H ++# include ++#endif ++ ++#if SUHOSIN_PATCH ++#include "suhosin_patch.h" ++#endif ++ ++#ifdef ZEND_WIN32 ++# include ++# include ++#endif ++ ++#ifndef ZEND_MM_HEAP_PROTECTION ++# define ZEND_MM_HEAP_PROTECTION ZEND_DEBUG ++#endif ++ ++#ifndef ZEND_MM_SAFE_UNLINKING ++# define ZEND_MM_SAFE_UNLINKING 1 ++#endif ++ ++#ifndef ZEND_MM_COOKIES ++# define ZEND_MM_COOKIES ZEND_DEBUG ++#endif ++ ++#ifdef _WIN64 ++# define PTR_FMT "0x%0.16I64x" ++/* ++#elif sizeof(long) == 8 ++# define PTR_FMT "0x%0.16lx" ++*/ ++#else ++# define PTR_FMT "0x%0.8lx" ++#endif ++ ++#define SUHOSIN_MM_WITH_CANARY_PROTECTION 1 ++ ++#if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) ++static void zend_mm_panic(const char *message) __attribute__ ((noreturn)); ++#endif ++ ++static void zend_mm_panic(const char *message) ++{ ++ fprintf(stderr, "%s\n", message); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++#if ZEND_DEBUG && defined(HAVE_KILL) && defined(HAVE_GETPID) ++ kill(getpid(), SIGSEGV); ++#endif ++ exit(1); ++} ++ ++/*******************/ ++/* Storage Manager */ ++/*******************/ ++ ++#ifdef ZEND_WIN32 ++# define HAVE_MEM_WIN32 /* use VirtualAlloc() to allocate memory */ ++#endif ++#define HAVE_MEM_MALLOC /* use malloc() to allocate segments */ ++ ++#include ++#include ++#if HAVE_LIMITS_H ++#include ++#endif ++#include ++#include ++ ++#if defined(HAVE_MEM_MMAP_ANON) || defined(HAVE_MEM_MMAP_ZERO) ++# ifdef HAVE_MREMAP ++# ifndef _GNU_SOURCE ++# define _GNU_SOURCE ++# endif ++# ifndef __USE_GNU ++# define __USE_GNU ++# endif ++# endif ++# include ++# ifndef MAP_ANON ++# ifdef MAP_ANONYMOUS ++# define MAP_ANON MAP_ANONYMOUS ++# endif ++# endif ++# ifndef MREMAP_MAYMOVE ++# define MREMAP_MAYMOVE 0 ++# endif ++# ifndef MAP_FAILED ++# define MAP_FAILED ((void*)-1) ++# endif ++#endif ++ ++static zend_intptr_t SUHOSIN_POINTER_GUARD = 0; ++ ++static zend_mm_storage* zend_mm_mem_dummy_init(void *params) ++{ ++ return malloc(sizeof(zend_mm_storage)); ++} ++ ++static void zend_mm_mem_dummy_dtor(zend_mm_storage *storage) ++{ ++ free(storage); ++} ++ ++static void zend_mm_mem_dummy_compact(zend_mm_storage *storage) ++{ ++} ++ ++#if defined(HAVE_MEM_MMAP_ANON) || defined(HAVE_MEM_MMAP_ZERO) ++ ++static zend_mm_segment* zend_mm_mem_mmap_realloc(zend_mm_storage *storage, zend_mm_segment* segment, size_t size) ++{ ++ zend_mm_segment *ret; ++#ifdef HAVE_MREMAP ++#if defined(__NetBSD__) ++ /* NetBSD 5 supports mremap but takes an extra newp argument */ ++ ret = (zend_mm_segment*)mremap(segment, segment->size, segment, size, MREMAP_MAYMOVE); ++#else ++ ret = (zend_mm_segment*)mremap(segment, segment->size, size, MREMAP_MAYMOVE); ++#endif ++ if (ret == MAP_FAILED) { ++#endif ++ ret = storage->handlers->_alloc(storage, size); ++ if (ret) { ++ memcpy(ret, segment, size > segment->size ? segment->size : size); ++ storage->handlers->_free(storage, segment); ++ } ++#ifdef HAVE_MREMAP ++ } ++#endif ++ return ret; ++} ++ ++static void zend_mm_mem_mmap_free(zend_mm_storage *storage, zend_mm_segment* segment) ++{ ++ munmap((void*)segment, segment->size); ++} ++ ++#endif ++ ++#ifdef HAVE_MEM_MMAP_ANON ++ ++static zend_mm_segment* zend_mm_mem_mmap_anon_alloc(zend_mm_storage *storage, size_t size) ++{ ++ zend_mm_segment *ret = (zend_mm_segment*)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); ++ if (ret == MAP_FAILED) { ++ ret = NULL; ++ } ++ return ret; ++} ++ ++# define ZEND_MM_MEM_MMAP_ANON_DSC {"mmap_anon", zend_mm_mem_dummy_init, zend_mm_mem_dummy_dtor, zend_mm_mem_dummy_compact, zend_mm_mem_mmap_anon_alloc, zend_mm_mem_mmap_realloc, zend_mm_mem_mmap_free} ++ ++#endif ++ ++#ifdef HAVE_MEM_MMAP_ZERO ++ ++static int zend_mm_dev_zero_fd = -1; ++ ++static zend_mm_storage* zend_mm_mem_mmap_zero_init(void *params) ++{ ++ if (zend_mm_dev_zero_fd != -1) { ++ zend_mm_dev_zero_fd = open("/dev/zero", O_RDWR, S_IRUSR | S_IWUSR); ++ } ++ if (zend_mm_dev_zero_fd >= 0) { ++ return malloc(sizeof(zend_mm_storage)); ++ } else { ++ return NULL; ++ } ++} ++ ++static void zend_mm_mem_mmap_zero_dtor(zend_mm_storage *storage) ++{ ++ close(zend_mm_dev_zero_fd); ++ free(storage); ++} ++ ++static zend_mm_segment* zend_mm_mem_mmap_zero_alloc(zend_mm_storage *storage, size_t size) ++{ ++ zend_mm_segment *ret = (zend_mm_segment*)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, zend_mm_dev_zero_fd, 0); ++ if (ret == MAP_FAILED) { ++ ret = NULL; ++ } ++ return ret; ++} ++ ++# define ZEND_MM_MEM_MMAP_ZERO_DSC {"mmap_zero", zend_mm_mem_mmap_zero_init, zend_mm_mem_mmap_zero_dtor, zend_mm_mem_dummy_compact, zend_mm_mem_mmap_zero_alloc, zend_mm_mem_mmap_realloc, zend_mm_mem_mmap_free} ++ ++#endif ++ ++#ifdef HAVE_MEM_WIN32 ++ ++static zend_mm_storage* zend_mm_mem_win32_init(void *params) ++{ ++ HANDLE heap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0); ++ zend_mm_storage* storage; ++ ++ if (heap == NULL) { ++ return NULL; ++ } ++ storage = (zend_mm_storage*)malloc(sizeof(zend_mm_storage)); ++ storage->data = (void*) heap; ++ return storage; ++} ++ ++static void zend_mm_mem_win32_dtor(zend_mm_storage *storage) ++{ ++ HeapDestroy((HANDLE)storage->data); ++ free(storage); ++} ++ ++static void zend_mm_mem_win32_compact(zend_mm_storage *storage) ++{ ++ HeapDestroy((HANDLE)storage->data); ++ storage->data = (void*)HeapCreate(HEAP_NO_SERIALIZE, 0, 0); ++} ++ ++static zend_mm_segment* zend_mm_mem_win32_alloc(zend_mm_storage *storage, size_t size) ++{ ++ return (zend_mm_segment*) HeapAlloc((HANDLE)storage->data, HEAP_NO_SERIALIZE, size); ++} ++ ++static void zend_mm_mem_win32_free(zend_mm_storage *storage, zend_mm_segment* segment) ++{ ++ HeapFree((HANDLE)storage->data, HEAP_NO_SERIALIZE, segment); ++} ++ ++static zend_mm_segment* zend_mm_mem_win32_realloc(zend_mm_storage *storage, zend_mm_segment* segment, size_t size) ++{ ++ return (zend_mm_segment*) HeapReAlloc((HANDLE)storage->data, HEAP_NO_SERIALIZE, segment, size); ++} ++ ++# define ZEND_MM_MEM_WIN32_DSC {"win32", zend_mm_mem_win32_init, zend_mm_mem_win32_dtor, zend_mm_mem_win32_compact, zend_mm_mem_win32_alloc, zend_mm_mem_win32_realloc, zend_mm_mem_win32_free} ++ ++#endif ++ ++#ifdef HAVE_MEM_MALLOC ++ ++static zend_mm_segment* zend_mm_mem_malloc_alloc(zend_mm_storage *storage, size_t size) ++{ ++ return (zend_mm_segment*)malloc(size); ++} ++ ++static zend_mm_segment* zend_mm_mem_malloc_realloc(zend_mm_storage *storage, zend_mm_segment *ptr, size_t size) ++{ ++ return (zend_mm_segment*)realloc(ptr, size); ++} ++ ++static void zend_mm_mem_malloc_free(zend_mm_storage *storage, zend_mm_segment *ptr) ++{ ++ free(ptr); ++} ++ ++# define ZEND_MM_MEM_MALLOC_DSC {"malloc", zend_mm_mem_dummy_init, zend_mm_mem_dummy_dtor, zend_mm_mem_dummy_compact, zend_mm_mem_malloc_alloc, zend_mm_mem_malloc_realloc, zend_mm_mem_malloc_free} ++ ++#endif ++ ++static const zend_mm_mem_handlers mem_handlers[] = { ++#ifdef HAVE_MEM_WIN32 ++ ZEND_MM_MEM_WIN32_DSC, ++#endif ++#ifdef HAVE_MEM_MALLOC ++ ZEND_MM_MEM_MALLOC_DSC, ++#endif ++#ifdef HAVE_MEM_MMAP_ANON ++ ZEND_MM_MEM_MMAP_ANON_DSC, ++#endif ++#ifdef HAVE_MEM_MMAP_ZERO ++ ZEND_MM_MEM_MMAP_ZERO_DSC, ++#endif ++ {NULL, NULL, NULL, NULL, NULL, NULL} ++}; ++ ++# define ZEND_MM_STORAGE_DTOR() heap->storage->handlers->dtor(heap->storage) ++# define ZEND_MM_STORAGE_ALLOC(size) heap->storage->handlers->_alloc(heap->storage, size) ++# define ZEND_MM_STORAGE_REALLOC(ptr, size) heap->storage->handlers->_realloc(heap->storage, ptr, size) ++# define ZEND_MM_STORAGE_FREE(ptr) heap->storage->handlers->_free(heap->storage, ptr) ++ ++/****************/ ++/* Heap Manager */ ++/****************/ ++ ++#define MEM_BLOCK_VALID 0x7312F8DC ++#define MEM_BLOCK_FREED 0x99954317 ++#define MEM_BLOCK_CACHED 0xFB8277DC ++#define MEM_BLOCK_GUARD 0x2A8FCC84 ++#define MEM_BLOCK_LEAK 0x6C5E8F2D ++ ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++# define CANARY_SIZE sizeof(size_t) ++#else ++# define CANARY_SIZE 0 ++#endif ++ ++/* mm block type */ ++typedef struct _zend_mm_block_info_canary { ++#if ZEND_MM_COOKIES ++ size_t _cookie; ++#endif ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ size_t canary_1; ++#endif ++ size_t _size; ++ size_t _prev; ++#if SUHOSIN_PATCH ++ size_t size; ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ size_t canary_2; ++#endif ++#endif ++} zend_mm_block_info_canary; ++ ++#if ZEND_DEBUG ++ ++typedef struct _zend_mm_debug_info_canary { ++ char *filename; ++ uint lineno; ++ char *orig_filename; ++ uint orig_lineno; ++ size_t size; ++#if ZEND_MM_HEAP_PROTECTION ++ unsigned int start_magic; ++#endif ++} zend_mm_debug_info_canary; ++ ++#elif ZEND_MM_HEAP_PROTECTION ++ ++typedef struct _zend_mm_debug_info_canary { ++ size_t size; ++ unsigned int start_magic; ++} zend_mm_debug_info_canary; ++ ++#endif ++ ++typedef struct _zend_mm_block_canary { ++ zend_mm_block_info_canary info; ++#if ZEND_DEBUG ++ unsigned int magic; ++# ifdef ZTS ++ THREAD_T thread_id; ++# endif ++ zend_mm_debug_info_canary debug; ++#elif ZEND_MM_HEAP_PROTECTION ++ zend_mm_debug_info_canary debug; ++#endif ++} zend_mm_block_canary; ++ ++typedef struct _zend_mm_small_free_block_canary { ++ zend_mm_block_info_canary info; ++#if ZEND_DEBUG ++ unsigned int magic; ++# ifdef ZTS ++ THREAD_T thread_id; ++# endif ++#endif ++ struct _zend_mm_free_block_canary *prev_free_block; ++ struct _zend_mm_free_block_canary *next_free_block; ++} zend_mm_small_free_block_canary; ++ ++typedef struct _zend_mm_free_block_canary { ++ zend_mm_block_info_canary info; ++#if ZEND_DEBUG ++ unsigned int magic; ++# ifdef ZTS ++ THREAD_T thread_id; ++# endif ++#endif ++ struct _zend_mm_free_block_canary *prev_free_block; ++ struct _zend_mm_free_block_canary *next_free_block; ++ ++ struct _zend_mm_free_block_canary **parent; ++ struct _zend_mm_free_block_canary *child[2]; ++} zend_mm_free_block_canary; ++ ++#define ZEND_MM_NUM_BUCKETS (sizeof(size_t) << 3) ++ ++#define ZEND_MM_CACHE 1 ++#define ZEND_MM_CACHE_SIZE (ZEND_MM_NUM_BUCKETS * 4 * 1024) ++ ++#ifndef ZEND_MM_CACHE_STAT ++# define ZEND_MM_CACHE_STAT 0 ++#endif ++ ++typedef struct _zend_mm_heap_canary { ++ int use_zend_alloc; ++ void *(*_malloc)(size_t); ++ void (*_free)(void*); ++ void *(*_realloc)(void*, size_t); ++ size_t free_bitmap; ++ size_t large_free_bitmap; ++ size_t block_size; ++ size_t compact_size; ++ zend_mm_segment *segments_list; ++ zend_mm_storage *storage; ++ size_t real_size; ++ size_t real_peak; ++ size_t limit; ++ size_t size; ++ size_t peak; ++ size_t reserve_size; ++ void *reserve; ++ int overflow; ++ int internal; ++#if ZEND_MM_CACHE ++ unsigned int cached; ++ zend_mm_free_block_canary *cache[ZEND_MM_NUM_BUCKETS]; ++#endif ++ zend_mm_free_block_canary *free_buckets[ZEND_MM_NUM_BUCKETS*2]; ++ zend_mm_free_block_canary *large_free_buckets[ZEND_MM_NUM_BUCKETS]; ++ zend_mm_free_block_canary *rest_buckets[2]; ++#if ZEND_MM_CACHE_STAT ++ struct { ++ int count; ++ int max_count; ++ int hit; ++ int miss; ++ } cache_stat[ZEND_MM_NUM_BUCKETS+1]; ++#endif ++#if SUHOSIN_PATCH ++ size_t canary_1,canary_2,canary_3; ++#endif ++}; ++ ++#define ZEND_MM_SMALL_FREE_BUCKET(heap, index) \ ++ (zend_mm_free_block_canary*) ((char*)&heap->free_buckets[index * 2] + \ ++ sizeof(zend_mm_free_block_canary*) * 2 - \ ++ sizeof(zend_mm_small_free_block_canary)) ++ ++#define ZEND_MM_REST_BUCKET(heap) \ ++ (zend_mm_free_block_canary*)((char*)&heap->rest_buckets[0] + \ ++ sizeof(zend_mm_free_block_canary*) * 2 - \ ++ sizeof(zend_mm_small_free_block_canary)) ++ ++#if ZEND_MM_COOKIES ++ ++static unsigned int _zend_mm_cookie = 0; ++ ++# define ZEND_MM_COOKIE(block) \ ++ (((size_t)(block)) ^ _zend_mm_cookie) ++# define ZEND_MM_SET_COOKIE(block) \ ++ (block)->info._cookie = ZEND_MM_COOKIE(block) ++# define ZEND_MM_CHECK_COOKIE(block) \ ++ if (UNEXPECTED((block)->info._cookie != ZEND_MM_COOKIE(block))) { \ ++ zend_mm_panic("zend_mm_heap corrupted"); \ ++ } ++#else ++# define ZEND_MM_SET_COOKIE(block) ++# define ZEND_MM_CHECK_COOKIE(block) ++#endif ++ ++/* Default memory segment size */ ++#define ZEND_MM_SEG_SIZE (256 * 1024) ++ ++/* Reserved space for error reporting in case of memory overflow */ ++#define ZEND_MM_RESERVE_SIZE (8*1024) ++ ++#ifdef _WIN64 ++# define ZEND_MM_LONG_CONST(x) (x##i64) ++#else ++# define ZEND_MM_LONG_CONST(x) (x##L) ++#endif ++ ++#define ZEND_MM_TYPE_MASK ZEND_MM_LONG_CONST(0x3) ++ ++#define ZEND_MM_FREE_BLOCK ZEND_MM_LONG_CONST(0x0) ++#define ZEND_MM_USED_BLOCK ZEND_MM_LONG_CONST(0x1) ++#define ZEND_MM_GUARD_BLOCK ZEND_MM_LONG_CONST(0x3) ++ ++#define ZEND_MM_BLOCK(b, type, size) do { \ ++ size_t _size = (size); \ ++ (b)->info._size = (type) | _size; \ ++ ZEND_MM_BLOCK_AT(b, _size)->info._prev = (type) | _size; \ ++ ZEND_MM_SET_COOKIE(b); \ ++ } while (0); ++#define ZEND_MM_LAST_BLOCK(b) do { \ ++ (b)->info._size = ZEND_MM_GUARD_BLOCK | ZEND_MM_ALIGNED_HEADER_SIZE; \ ++ ZEND_MM_SET_MAGIC(b, MEM_BLOCK_GUARD); \ ++ } while (0); ++#define ZEND_MM_BLOCK_SIZE(b) ((b)->info._size & ~ZEND_MM_TYPE_MASK) ++#define ZEND_MM_IS_FREE_BLOCK(b) (!((b)->info._size & ZEND_MM_USED_BLOCK)) ++#define ZEND_MM_IS_USED_BLOCK(b) ((b)->info._size & ZEND_MM_USED_BLOCK) ++#define ZEND_MM_IS_GUARD_BLOCK(b) (((b)->info._size & ZEND_MM_TYPE_MASK) == ZEND_MM_GUARD_BLOCK) ++ ++#define ZEND_MM_NEXT_BLOCK(b) ZEND_MM_BLOCK_AT(b, ZEND_MM_BLOCK_SIZE(b)) ++#define ZEND_MM_PREV_BLOCK(b) ZEND_MM_BLOCK_AT(b, -(int)((b)->info._prev & ~ZEND_MM_TYPE_MASK)) ++ ++#define ZEND_MM_PREV_BLOCK_IS_FREE(b) (!((b)->info._prev & ZEND_MM_USED_BLOCK)) ++ ++#define ZEND_MM_MARK_FIRST_BLOCK(b) ((b)->info._prev = ZEND_MM_GUARD_BLOCK) ++#define ZEND_MM_IS_FIRST_BLOCK(b) ((b)->info._prev == ZEND_MM_GUARD_BLOCK) ++ ++/* optimized access */ ++#define ZEND_MM_FREE_BLOCK_SIZE(b) (b)->info._size ++ ++#ifndef ZEND_MM_ALIGNMENT ++# define ZEND_MM_ALIGNMENT 8 ++# define ZEND_MM_ALIGNMENT_LOG2 3 ++#elif ZEND_MM_ALIGNMENT < 4 ++# undef ZEND_MM_ALIGNMENT ++# undef ZEND_MM_ALIGNMENT_LOG2 ++# define ZEND_MM_ALIGNMENT 4 ++# define ZEND_MM_ALIGNMENT_LOG2 2 ++#endif ++ ++#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT-1) ++ ++/* Aligned header size */ ++#define ZEND_MM_ALIGNED_SIZE(size) ((size + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK) ++#define ZEND_MM_ALIGNED_HEADER_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_block_canary)) ++#define ZEND_MM_ALIGNED_FREE_HEADER_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_small_free_block_canary)) ++#define ZEND_MM_MIN_ALLOC_BLOCK_SIZE ZEND_MM_ALIGNED_SIZE(ZEND_MM_ALIGNED_HEADER_SIZE + END_MAGIC_SIZE + CANARY_SIZE) ++#define ZEND_MM_ALIGNED_MIN_HEADER_SIZE (ZEND_MM_MIN_ALLOC_BLOCK_SIZE>ZEND_MM_ALIGNED_FREE_HEADER_SIZE?ZEND_MM_MIN_ALLOC_BLOCK_SIZE:ZEND_MM_ALIGNED_FREE_HEADER_SIZE) ++#define ZEND_MM_ALIGNED_SEGMENT_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_segment)) ++ ++#define ZEND_MM_MIN_SIZE ((ZEND_MM_ALIGNED_MIN_HEADER_SIZE>(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE+CANARY_SIZE))?(ZEND_MM_ALIGNED_MIN_HEADER_SIZE-(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE+CANARY_SIZE)):0) ++ ++#define ZEND_MM_MAX_SMALL_SIZE ((ZEND_MM_NUM_BUCKETS<>ZEND_MM_ALIGNMENT_LOG2)-(ZEND_MM_ALIGNED_MIN_HEADER_SIZE>>ZEND_MM_ALIGNMENT_LOG2)) ++ ++#define ZEND_MM_SMALL_SIZE(true_size) (true_size < ZEND_MM_MAX_SMALL_SIZE) ++ ++/* Memory calculations */ ++#define ZEND_MM_BLOCK_AT(blk, offset) ((zend_mm_block_canary *) (((char *) (blk))+(offset))) ++#define ZEND_MM_DATA_OF(p) ((void *) (((char *) (p))+ZEND_MM_ALIGNED_HEADER_SIZE)) ++#define ZEND_MM_HEADER_OF(blk) ZEND_MM_BLOCK_AT(blk, -(int)ZEND_MM_ALIGNED_HEADER_SIZE) ++ ++/* Debug output */ ++#if ZEND_DEBUG ++ ++# ifdef ZTS ++# define ZEND_MM_SET_THREAD_ID(block) \ ++ ((zend_mm_block_canary*)(block))->thread_id = tsrm_thread_id() ++# define ZEND_MM_BAD_THREAD_ID(block) ((block)->thread_id != tsrm_thread_id()) ++# else ++# define ZEND_MM_SET_THREAD_ID(block) ++# define ZEND_MM_BAD_THREAD_ID(block) 0 ++# endif ++ ++# define ZEND_MM_VALID_PTR(block) \ ++ zend_mm_check_ptr(heap, block, 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC) ++ ++# define ZEND_MM_SET_MAGIC(block, val) do { \ ++ (block)->magic = (val); \ ++ } while (0) ++ ++# define ZEND_MM_CHECK_MAGIC(block, val) do { \ ++ if ((block)->magic != (val)) { \ ++ zend_mm_panic("zend_mm_heap corrupted"); \ ++ } \ ++ } while (0) ++ ++# define ZEND_MM_SET_DEBUG_INFO(block, __size, set_valid, set_thread) do { \ ++ ((zend_mm_block_canary*)(block))->debug.filename = __zend_filename; \ ++ ((zend_mm_block_canary*)(block))->debug.lineno = __zend_lineno; \ ++ ((zend_mm_block_canary*)(block))->debug.orig_filename = __zend_orig_filename; \ ++ ((zend_mm_block_canary*)(block))->debug.orig_lineno = __zend_orig_lineno; \ ++ ZEND_MM_SET_BLOCK_SIZE(block, __size); \ ++ if (set_valid) { \ ++ ZEND_MM_SET_MAGIC(block, MEM_BLOCK_VALID); \ ++ } \ ++ if (set_thread) { \ ++ ZEND_MM_SET_THREAD_ID(block); \ ++ } \ ++ } while (0) ++ ++#else ++ ++# define ZEND_MM_VALID_PTR(ptr) EXPECTED(ptr != NULL) ++ ++# define ZEND_MM_SET_MAGIC(block, val) ++ ++# define ZEND_MM_CHECK_MAGIC(block, val) ++ ++# define ZEND_MM_SET_DEBUG_INFO(block, __size, set_valid, set_thread) ZEND_MM_SET_BLOCK_SIZE(block, __size) ++ ++#endif ++ ++#if SUHOSIN_MM_WITH_CANARY_PROTECTION ++ ++# define SUHOSIN_MM_CHECK_CANARIES(block, MFUNCTION) do { \ ++ char *p = SUHOSIN_MM_END_CANARY_PTR(block); size_t check; \ ++ if (((block)->info.canary_1 != heap->canary_1) || ((block)->info.canary_2 != heap->canary_2)) { \ ++ canary_mismatch: \ ++ zend_suhosin_log(S_MEMORY, "canary mismatch on " MFUNCTION " - heap overflow detected at %p", (block)); \ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_IGNORE_CANARY_VIOLATION) == 0) { _exit(1); } else { (block)->info.canary_1 = heap->canary_1; (block)->info.canary_2 = heap->canary_2; }\ ++ } \ ++ memcpy(&check, p, CANARY_SIZE); \ ++ if (check != heap->canary_3) { \ ++ zend_suhosin_log(S_MEMORY, "end canary mismatch on " MFUNCTION " - heap overflow detected at %p", (block)); \ ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_IGNORE_CANARY_VIOLATION) == 0) { _exit(1); } else { memcpy(p, heap->canary_3, CANARY_SIZE); } \ ++ } \ ++ } while (0) ++ ++# define SUHOSIN_MM_SET_CANARIES(block) do { \ ++ (block)->info.canary_1 = heap->canary_1; \ ++ (block)->info.canary_2 = heap->canary_2; \ ++ } while (0) ++ ++# define SUHOSIN_MM_END_CANARY_PTR(block) \ ++ (char *)(((char*)(ZEND_MM_DATA_OF(block))) + ((zend_mm_block_canary*)(block))->info.size + END_MAGIC_SIZE) ++ ++# define SUHOSIN_MM_SET_END_CANARY(block) do { \ ++ char *p = SUHOSIN_MM_END_CANARY_PTR(block); \ ++ memcpy(p, &heap->canary_3, CANARY_SIZE); \ ++ } while (0) ++ ++#else ++ ++# define SUHOSIN_MM_CHECK_CANARIES(block, MFUNCTION) ++# define SUHOSIN_MM_SET_CANARIES(block) ++# define SUHOSIN_MM_END_CANARY_PTR(block) ++# define SUHOSIN_MM_SET_END_CANARY(block) ++ ++#endif ++ ++ ++#if ZEND_MM_HEAP_PROTECTION ++ ++# define ZEND_MM_CHECK_PROTECTION(block) \ ++ do { \ ++ if ((block)->debug.start_magic != _mem_block_start_magic || \ ++ memcmp(ZEND_MM_END_MAGIC_PTR(block), &_mem_block_end_magic, END_MAGIC_SIZE) != 0) { \ ++ zend_mm_panic("zend_mm_heap corrupted"); \ ++ } \ ++ } while (0) ++ ++# define ZEND_MM_END_MAGIC_PTR(block) \ ++ (((char*)(ZEND_MM_DATA_OF(block))) + ((zend_mm_block_canary*)(block))->debug.size) ++ ++# define END_MAGIC_SIZE sizeof(unsigned int) ++ ++# define ZEND_MM_SET_BLOCK_SIZE(block, __size) do { \ ++ char *p; \ ++ ((zend_mm_block_canary*)(block))->debug.size = (__size); \ ++ p = ZEND_MM_END_MAGIC_PTR(block); \ ++ ((zend_mm_block_canary*)(block))->debug.start_magic = _mem_block_start_magic; \ ++ memcpy(p, &_mem_block_end_magic, END_MAGIC_SIZE); \ ++ } while (0) ++ ++static unsigned int _mem_block_start_magic = 0; ++static unsigned int _mem_block_end_magic = 0; ++ ++#else ++ ++# if ZEND_DEBUG ++# define ZEND_MM_SET_BLOCK_SIZE(block, _size) \ ++ ((zend_mm_block_canary*)(block))->debug.size = (_size) ++# else ++# define ZEND_MM_SET_BLOCK_SIZE(block, _size) ++# endif ++ ++# define ZEND_MM_CHECK_PROTECTION(block) ++ ++# define END_MAGIC_SIZE 0 ++ ++#endif ++ ++#if ZEND_MM_SAFE_UNLINKING ++# define ZEND_MM_CHECK_BLOCK_LINKAGE(block) \ ++ if (UNEXPECTED((block)->info._size != ZEND_MM_BLOCK_AT(block, ZEND_MM_FREE_BLOCK_SIZE(block))->info._prev) || \ ++ UNEXPECTED(!UNEXPECTED(ZEND_MM_IS_FIRST_BLOCK(block)) && \ ++ UNEXPECTED(ZEND_MM_PREV_BLOCK(block)->info._size != (block)->info._prev))) { \ ++ zend_mm_panic("zend_mm_heap corrupted"); \ ++ } ++#define ZEND_MM_CHECK_TREE(block) \ ++ if (UNEXPECTED(*((block)->parent) != (block))) { \ ++ zend_mm_panic("zend_mm_heap corrupted"); \ ++ } ++#else ++# define ZEND_MM_CHECK_BLOCK_LINKAGE(block) ++# define ZEND_MM_CHECK_TREE(block) ++#endif ++ ++#define ZEND_MM_LARGE_BUCKET_INDEX(S) zend_mm_high_bit(S) ++ ++void *_zend_mm_alloc_canary_int(zend_mm_heap_canary *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ++void _zend_mm_free_canary_int(zend_mm_heap_canary *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ++void *_zend_mm_realloc_canary_int(zend_mm_heap_canary *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ++ ++ ++static inline unsigned int zend_mm_high_bit(size_t _size) ++{ ++#if defined(__GNUC__) && defined(i386) ++ unsigned int n; ++ ++ __asm__("bsrl %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ return n; ++#elif defined(__GNUC__) && defined(__x86_64__) ++ unsigned long n; ++ ++ __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ return (unsigned int)n; ++#elif defined(_MSC_VER) && defined(_M_IX86) ++ __asm { ++ bsr eax, _size ++ } ++#else ++ unsigned int n = 0; ++ while (_size != 0) { ++ _size = _size >> 1; ++ n++; ++ } ++ return n-1; ++#endif ++} ++ ++static inline unsigned int zend_mm_low_bit(size_t _size) ++{ ++#if defined(__GNUC__) && defined(i386) ++ unsigned int n; ++ ++ __asm__("bsfl %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ return n; ++#elif defined(__GNUC__) && defined(__x86_64__) ++ unsigned long n; ++ ++ __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ return (unsigned int)n; ++#elif defined(_MSC_VER) && defined(_M_IX86) ++ __asm { ++ bsf eax, _size ++ } ++#else ++ static const int offset[16] = {4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0}; ++ unsigned int n; ++ unsigned int index = 0; ++ ++ n = offset[_size & 15]; ++ while (n == 4) { ++ _size >>= 4; ++ index += n; ++ n = offset[_size & 15]; ++ } ++ ++ return index + n; ++#endif ++} ++ ++static void zend_mm_add_to_rest_list(zend_mm_heap_canary *heap, zend_mm_free_block_canary *mm_block) ++{ ++ zend_mm_free_block_canary *prev, *next; ++ ++ ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_FREED); ++ ++ if (!ZEND_MM_SMALL_SIZE(ZEND_MM_FREE_BLOCK_SIZE(mm_block))) { ++ mm_block->parent = NULL; ++ } ++ ++ prev = SUHOSIN_MANGLE_PTR(heap->rest_buckets[0]); ++ next = SUHOSIN_MANGLE_PTR(prev->next_free_block); ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++} ++ ++static void zend_mm_add_to_free_list(zend_mm_heap_canary *heap, zend_mm_free_block_canary *mm_block) ++{ ++ size_t size; ++ size_t index; ++ ++ ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_FREED); ++ ++ size = ZEND_MM_FREE_BLOCK_SIZE(mm_block); ++ if (EXPECTED(!ZEND_MM_SMALL_SIZE(size))) { ++ zend_mm_free_block_canary **p; ++ ++ index = ZEND_MM_LARGE_BUCKET_INDEX(size); ++ p = &heap->large_free_buckets[index]; ++ mm_block->child[0] = mm_block->child[1] = NULL; ++ if (!*p) { ++ *p = mm_block; ++ mm_block->parent = p; ++ mm_block->prev_free_block = mm_block->next_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++ heap->large_free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); ++ } else { ++ size_t m; ++ ++ for (m = size << (ZEND_MM_NUM_BUCKETS - index); ; m <<= 1) { ++ zend_mm_free_block_canary *prev = *p; ++ ++ if (ZEND_MM_FREE_BLOCK_SIZE(prev) != size) { ++ p = &prev->child[(m >> (ZEND_MM_NUM_BUCKETS-1)) & 1]; ++ if (!*p) { ++ *p = mm_block; ++ mm_block->parent = p; ++ mm_block->prev_free_block = mm_block->next_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++ break; ++ } ++ } else { ++ zend_mm_free_block_canary *next = SUHOSIN_MANGLE_PTR(prev->next_free_block); ++ ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ mm_block->parent = NULL; ++ break; ++ } ++ } ++ } ++ } else { ++ zend_mm_free_block_canary *prev, *next; ++ ++ index = ZEND_MM_BUCKET_INDEX(size); ++ ++ prev = ZEND_MM_SMALL_FREE_BUCKET(heap, index); ++ if (SUHOSIN_MANGLE_PTR(prev->prev_free_block) == prev) { ++ heap->free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); ++ } ++ next = SUHOSIN_MANGLE_PTR(prev->next_free_block); ++ ++ mm_block->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ mm_block->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ prev->next_free_block = next->prev_free_block = SUHOSIN_MANGLE_PTR(mm_block); ++ } ++} ++ ++static void zend_mm_remove_from_free_list(zend_mm_heap_canary *heap, zend_mm_free_block_canary *mm_block) ++{ ++ zend_mm_free_block_canary *prev = SUHOSIN_MANGLE_PTR(mm_block->prev_free_block); ++ zend_mm_free_block_canary *next = SUHOSIN_MANGLE_PTR(mm_block->next_free_block); ++ ++ ZEND_MM_CHECK_MAGIC(mm_block, MEM_BLOCK_FREED); ++ ++ if (EXPECTED(prev == mm_block)) { ++ zend_mm_free_block_canary **rp, **cp; ++ ++#if SUHOSIN_PATCH ++ if (next != mm_block) { ++ zend_suhosin_log(S_MEMORY, "zend_mm_heap corrupted at %p", mm_block); ++ _exit(1); ++ } ++#endif ++#if ZEND_MM_SAFE_UNLINKING ++ if (UNEXPECTED(next != mm_block)) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++#endif ++ ++ rp = &mm_block->child[mm_block->child[1] != NULL]; ++ prev = *rp; ++ if (EXPECTED(prev == NULL)) { ++ size_t index = ZEND_MM_LARGE_BUCKET_INDEX(ZEND_MM_FREE_BLOCK_SIZE(mm_block)); ++ ++ ZEND_MM_CHECK_TREE(mm_block); ++ *mm_block->parent = NULL; ++ if (mm_block->parent == &heap->large_free_buckets[index]) { ++ heap->large_free_bitmap &= ~(ZEND_MM_LONG_CONST(1) << index); ++ } ++ } else { ++ while (*(cp = &(prev->child[prev->child[1] != NULL])) != NULL) { ++ prev = *cp; ++ rp = cp; ++ } ++ *rp = NULL; ++ ++subst_block: ++ ZEND_MM_CHECK_TREE(mm_block); ++ *mm_block->parent = prev; ++ prev->parent = mm_block->parent; ++ if ((prev->child[0] = mm_block->child[0])) { ++ ZEND_MM_CHECK_TREE(prev->child[0]); ++ prev->child[0]->parent = &prev->child[0]; ++ } ++ if ((prev->child[1] = mm_block->child[1])) { ++ ZEND_MM_CHECK_TREE(prev->child[1]); ++ prev->child[1]->parent = &prev->child[1]; ++ } ++ } ++ } else { ++ ++#if SUHOSIN_PATCH ++ if (SUHOSIN_MANGLE_PTR(prev->next_free_block) != mm_block || SUHOSIN_MANGLE_PTR(next->prev_free_block) != mm_block) { ++ zend_suhosin_log(S_MEMORY, "zend_mm_head corrupted at %p", mm_block); ++ _exit(1); ++ } ++#endif ++ ++#if ZEND_MM_SAFE_UNLINKING ++ if (UNEXPECTED(SUHOSIN_MANGLE_PTR(prev->next_free_block) != mm_block) || UNEXPECTED(SUHOSIN_MANGLE_PTR(next->prev_free_block) != mm_block)) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++#endif ++ ++ prev->next_free_block = SUHOSIN_MANGLE_PTR(next); ++ next->prev_free_block = SUHOSIN_MANGLE_PTR(prev); ++ ++ if (EXPECTED(ZEND_MM_SMALL_SIZE(ZEND_MM_FREE_BLOCK_SIZE(mm_block)))) { ++ if (EXPECTED(prev == next)) { ++ size_t index = ZEND_MM_BUCKET_INDEX(ZEND_MM_FREE_BLOCK_SIZE(mm_block)); ++ ++ if (EXPECTED(heap->free_buckets[index*2] == heap->free_buckets[index*2+1])) { ++ heap->free_bitmap &= ~(ZEND_MM_LONG_CONST(1) << index); ++ } ++ } ++ } else if (UNEXPECTED(mm_block->parent != NULL)) { ++ goto subst_block; ++ } ++ } ++} ++ ++static void zend_mm_init(zend_mm_heap_canary *heap) ++{ ++ zend_mm_free_block_canary* p; ++ int i; ++ ++ heap->free_bitmap = 0; ++ heap->large_free_bitmap = 0; ++#if ZEND_MM_CACHE ++ heap->cached = 0; ++ memset(heap->cache, 0, sizeof(heap->cache)); ++#endif ++#if ZEND_MM_CACHE_STAT ++ for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { ++ heap->cache_stat[i].count = 0; ++ } ++#endif ++ p = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); ++ for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { ++ p->next_free_block = SUHOSIN_MANGLE_PTR(p); ++ p->prev_free_block = SUHOSIN_MANGLE_PTR(p); ++ p = (zend_mm_free_block_canary*)((char*)p + sizeof(zend_mm_free_block_canary*) * 2); ++ heap->large_free_buckets[i] = NULL; ++ } ++ heap->rest_buckets[0] = heap->rest_buckets[1] = SUHOSIN_MANGLE_PTR(ZEND_MM_REST_BUCKET(heap)); ++#if SUHOSIN_PATCH ++ if (SUHOSIN_CONFIG(SUHOSIN_MM_USE_CANARY_PROTECTION)) { ++ zend_canary(&heap->canary_1, sizeof(heap->canary_1)); ++ zend_canary(&heap->canary_2, sizeof(heap->canary_2)); ++ zend_canary(&heap->canary_3, sizeof(heap->canary_3)); ++ } ++#endif ++} ++ ++static void zend_mm_del_segment(zend_mm_heap_canary *heap, zend_mm_segment *segment) ++{ ++ zend_mm_segment **p = &heap->segments_list; ++ ++ while (*p != segment) { ++ p = &(*p)->next_segment; ++ } ++ *p = segment->next_segment; ++ heap->real_size -= segment->size; ++ ZEND_MM_STORAGE_FREE(segment); ++} ++ ++#if ZEND_MM_CACHE ++static void zend_mm_free_cache(zend_mm_heap_canary *heap) ++{ ++ int i; ++ ++ for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { ++ /* SUHOSIN_MANGLE_PTR should NOT affect NULL pointers */ ++ if (heap->cache[i]) { ++ zend_mm_free_block_canary *mm_block = SUHOSIN_MANGLE_PTR(heap->cache[i]); ++ ++ while (mm_block) { ++ size_t size = ZEND_MM_BLOCK_SIZE(mm_block); ++ zend_mm_free_block_canary *q = SUHOSIN_MANGLE_PTR(mm_block->prev_free_block); ++ zend_mm_block_canary *next_block = ZEND_MM_NEXT_BLOCK(mm_block); ++ ++ heap->cached -= size; ++ ++ if (ZEND_MM_PREV_BLOCK_IS_FREE(mm_block)) { ++ mm_block = (zend_mm_free_block_canary*)ZEND_MM_PREV_BLOCK(mm_block); ++ size += ZEND_MM_FREE_BLOCK_SIZE(mm_block); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) mm_block); ++ } ++ if (ZEND_MM_IS_FREE_BLOCK(next_block)) { ++ size += ZEND_MM_FREE_BLOCK_SIZE(next_block); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ } ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_FREE_BLOCK, size); ++ ++ if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && ++ ZEND_MM_IS_GUARD_BLOCK(ZEND_MM_NEXT_BLOCK(mm_block))) { ++ zend_mm_del_segment(heap, (zend_mm_segment *) ((char *)mm_block - ZEND_MM_ALIGNED_SEGMENT_SIZE)); ++ } else { ++ zend_mm_add_to_free_list(heap, (zend_mm_free_block_canary *) mm_block); ++ } ++ ++ mm_block = q; ++ } ++ heap->cache[i] = NULL; ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[i].count = 0; ++#endif ++ } ++ } ++} ++#endif ++ ++#if ZEND_MM_HEAP_PROTECTION || ZEND_MM_COOKIES ++static void zend_mm_random(unsigned char *buf, size_t size) /* {{{ */ ++{ ++ size_t i = 0; ++ unsigned char t; ++ ++#ifdef ZEND_WIN32 ++ HCRYPTPROV hCryptProv; ++ int has_context = 0; ++ ++ if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) { ++ /* Could mean that the key container does not exist, let try ++ again by asking for a new one */ ++ if (GetLastError() == NTE_BAD_KEYSET) { ++ if (CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) { ++ has_context = 1; ++ } ++ } ++ } else { ++ has_context = 1; ++ } ++ if (has_context) { ++ do { ++ BOOL ret = CryptGenRandom(hCryptProv, size, buf); ++ CryptReleaseContext(hCryptProv, 0); ++ if (ret) { ++ while (i < size && buf[i] != 0) { ++ i++; ++ } ++ if (i == size) { ++ return; ++ } ++ } ++ } while (0); ++ } ++#elif defined(HAVE_DEV_URANDOM) ++ int fd = open("/dev/urandom", 0); ++ ++ if (fd >= 0) { ++ if (read(fd, buf, size) == size) { ++ while (i < size && buf[i] != 0) { ++ i++; ++ } ++ if (i == size) { ++ close(fd); ++ return; ++ } ++ } ++ close(fd); ++ } ++#endif ++ t = (unsigned char)getpid(); ++ while (i < size) { ++ do { ++ buf[i] = ((unsigned char)rand()) ^ t; ++ } while (buf[i] == 0); ++ t = buf[i++] << 1; ++ } ++} ++/* }}} */ ++#endif ++ ++ ++/* Notes: ++ * - This function may alter the block_sizes values to match platform alignment ++ * - This function does *not* perform sanity checks on the arguments ++ */ ++zend_mm_heap_canary *__zend_mm_startup_canary_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params) ++{ ++ zend_mm_storage *storage; ++ zend_mm_heap_canary *heap; ++ zend_mm_free_block_canary *tmp; ++ ++#if 0 ++ int i; ++ ++ printf("ZEND_MM_ALIGNMENT=%d\n", ZEND_MM_ALIGNMENT); ++ printf("ZEND_MM_ALIGNMENT_LOG2=%d\n", ZEND_MM_ALIGNMENT_LOG2); ++ printf("ZEND_MM_MIN_SIZE=%d\n", ZEND_MM_MIN_SIZE); ++ printf("ZEND_MM_MAX_SMALL_SIZE=%d\n", ZEND_MM_MAX_SMALL_SIZE); ++ printf("ZEND_MM_ALIGNED_HEADER_SIZE=%d\n", ZEND_MM_ALIGNED_HEADER_SIZE); ++ printf("ZEND_MM_ALIGNED_FREE_HEADER_SIZE=%d\n", ZEND_MM_ALIGNED_FREE_HEADER_SIZE); ++ printf("ZEND_MM_MIN_ALLOC_BLOCK_SIZE=%d\n", ZEND_MM_MIN_ALLOC_BLOCK_SIZE); ++ printf("ZEND_MM_ALIGNED_MIN_HEADER_SIZE=%d\n", ZEND_MM_ALIGNED_MIN_HEADER_SIZE); ++ printf("ZEND_MM_ALIGNED_SEGMENT_SIZE=%d\n", ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ for (i = 0; i < ZEND_MM_MAX_SMALL_SIZE; i++) { ++ printf("%3d%c: %3ld %d %2ld\n", i, (i == ZEND_MM_MIN_SIZE?'*':' '), (long)ZEND_MM_TRUE_SIZE(i), ZEND_MM_SMALL_SIZE(ZEND_MM_TRUE_SIZE(i)), (long)ZEND_MM_BUCKET_INDEX(ZEND_MM_TRUE_SIZE(i))); ++ } ++ exit(0); ++#endif ++ ++#if ZEND_MM_HEAP_PROTECTION ++ if (_mem_block_start_magic == 0) { ++ zend_mm_random((unsigned char*)&_mem_block_start_magic, sizeof(_mem_block_start_magic)); ++ } ++ if (_mem_block_end_magic == 0) { ++ zend_mm_random((unsigned char*)&_mem_block_end_magic, sizeof(_mem_block_end_magic)); ++ } ++#endif ++#if ZEND_MM_COOKIES ++ if (_zend_mm_cookie == 0) { ++ zend_mm_random((unsigned char*)&_zend_mm_cookie, sizeof(_zend_mm_cookie)); ++ } ++#endif ++ ++ /* get the pointer guardian and ensure low 3 bits are 1 */ ++ if (SUHOSIN_POINTER_GUARD == 0) { ++ zend_canary(&SUHOSIN_POINTER_GUARD, sizeof(SUHOSIN_POINTER_GUARD)); ++ SUHOSIN_POINTER_GUARD |= 7; ++ } ++ ++ if (zend_mm_low_bit(block_size) != zend_mm_high_bit(block_size)) { ++ fprintf(stderr, "'block_size' must be a power of two\n"); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ exit(255); ++ } ++ storage = handlers->init(params); ++ if (!storage) { ++ fprintf(stderr, "Cannot initialize zend_mm storage [%s]\n", handlers->name); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ exit(255); ++ } ++ storage->handlers = handlers; ++ ++ heap = malloc(sizeof(struct _zend_mm_heap_canary)); ++ ++ heap->storage = storage; ++ heap->block_size = block_size; ++ heap->compact_size = 0; ++ heap->segments_list = NULL; ++ zend_mm_init(heap); ++# if ZEND_MM_CACHE_STAT ++ memset(heap->cache_stat, 0, sizeof(heap->cache_stat)); ++# endif ++ ++ heap->use_zend_alloc = 1; ++ heap->real_size = 0; ++ heap->overflow = 0; ++ heap->real_peak = 0; ++ heap->limit = ZEND_MM_LONG_CONST(1)<<(ZEND_MM_NUM_BUCKETS-2); ++ heap->size = 0; ++ heap->peak = 0; ++ heap->internal = internal; ++ heap->reserve = NULL; ++ heap->reserve_size = reserve_size; ++ if (reserve_size > 0) { ++ heap->reserve = _zend_mm_alloc((zend_mm_heap *)heap, reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ } ++ if (internal) { ++ int i; ++ zend_mm_free_block_canary *p, *q, *orig; ++ zend_mm_heap_canary *mm_heap = _zend_mm_alloc((zend_mm_heap *)heap, sizeof(zend_mm_heap_canary) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ ++ *mm_heap = *heap; ++ ++ p = ZEND_MM_SMALL_FREE_BUCKET(mm_heap, 0); ++ orig = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); ++ for (i = 0; i < ZEND_MM_NUM_BUCKETS; i++) { ++ q = p; ++ while (SUHOSIN_MANGLE_PTR(q->prev_free_block) != orig) { ++ q = SUHOSIN_MANGLE_PTR(q->prev_free_block); ++ } ++ q->prev_free_block = SUHOSIN_MANGLE_PTR(p); ++ q = p; ++ while (SUHOSIN_MANGLE_PTR(q->next_free_block) != orig) { ++ q = SUHOSIN_MANGLE_PTR(q->next_free_block); ++ } ++ q->next_free_block = SUHOSIN_MANGLE_PTR(p); ++ p = (zend_mm_free_block_canary*)((char*)p + sizeof(zend_mm_free_block_canary*) * 2); ++ orig = (zend_mm_free_block_canary*)((char*)orig + sizeof(zend_mm_free_block_canary*) * 2); ++ if (mm_heap->large_free_buckets[i]) { ++ mm_heap->large_free_buckets[i]->parent = &mm_heap->large_free_buckets[i]; ++ } ++ } ++ mm_heap->rest_buckets[0] = mm_heap->rest_buckets[1] = SUHOSIN_MANGLE_PTR(ZEND_MM_REST_BUCKET(mm_heap)); ++ ++ free(heap); ++ heap = mm_heap; ++ } ++ return heap; ++} ++ ++zend_mm_heap_canary *__zend_mm_startup_canary(void) ++{ ++ int i; ++ size_t seg_size; ++ char *mem_type = getenv("ZEND_MM_MEM_TYPE"); ++ char *tmp; ++ const zend_mm_mem_handlers *handlers; ++ zend_mm_heap_canary *heap; ++ ++ if (mem_type == NULL) { ++ i = 0; ++ } else { ++ for (i = 0; mem_handlers[i].name; i++) { ++ if (strcmp(mem_handlers[i].name, mem_type) == 0) { ++ break; ++ } ++ } ++ if (!mem_handlers[i].name) { ++ fprintf(stderr, "Wrong or unsupported zend_mm storage type '%s'\n", mem_type); ++ fprintf(stderr, " supported types:\n"); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ for (i = 0; mem_handlers[i].name; i++) { ++ fprintf(stderr, " '%s'\n", mem_handlers[i].name); ++ } ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ exit(255); ++ } ++ } ++ handlers = &mem_handlers[i]; ++ ++ tmp = getenv("ZEND_MM_SEG_SIZE"); ++ if (tmp) { ++ seg_size = zend_atoi(tmp, 0); ++ if (zend_mm_low_bit(seg_size) != zend_mm_high_bit(seg_size)) { ++ fprintf(stderr, "ZEND_MM_SEG_SIZE must be a power of two\n"); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ exit(255); ++ } else if (seg_size < ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE) { ++ fprintf(stderr, "ZEND_MM_SEG_SIZE is too small\n"); ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ exit(255); ++ } ++ } else { ++ seg_size = ZEND_MM_SEG_SIZE; ++ } ++ ++ heap = __zend_mm_startup_canary_ex(handlers, seg_size, ZEND_MM_RESERVE_SIZE, 0, NULL); ++ if (heap) { ++ tmp = getenv("ZEND_MM_COMPACT"); ++ if (tmp) { ++ heap->compact_size = zend_atoi(tmp, 0); ++ } else { ++ heap->compact_size = 2 * 1024 * 1024; ++ } ++ } ++ return heap; ++} ++ ++#if ZEND_DEBUG ++static long zend_mm_find_leaks(zend_mm_segment *segment, zend_mm_block_canary *b) ++{ ++ long leaks = 0; ++ zend_mm_block_canary *p, *q; ++ ++ p = ZEND_MM_NEXT_BLOCK(b); ++ while (1) { ++ if (ZEND_MM_IS_GUARD_BLOCK(p)) { ++ ZEND_MM_CHECK_MAGIC(p, MEM_BLOCK_GUARD); ++ segment = segment->next_segment; ++ if (!segment) { ++ break; ++ } ++ p = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ continue; ++ } ++ q = ZEND_MM_NEXT_BLOCK(p); ++ if (q <= p || ++ (char*)q > (char*)segment + segment->size || ++ p->info._size != q->info._prev) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ if (!ZEND_MM_IS_FREE_BLOCK(p)) { ++ if (p->magic == MEM_BLOCK_VALID) { ++ if (p->debug.filename==b->debug.filename && p->debug.lineno==b->debug.lineno) { ++ ZEND_MM_SET_MAGIC(p, MEM_BLOCK_LEAK); ++ leaks++; ++ } ++#if ZEND_MM_CACHE ++ } else if (p->magic == MEM_BLOCK_CACHED) { ++ /* skip it */ ++#endif ++ } else if (p->magic != MEM_BLOCK_LEAK) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ } ++ p = q; ++ } ++ return leaks; ++} ++ ++static void zend_mm_check_leaks(zend_mm_heap_canary *heap TSRMLS_DC) ++{ ++ zend_mm_segment *segment = heap->segments_list; ++ zend_mm_block_canary *p, *q; ++ zend_uint total = 0; ++ ++ if (!segment) { ++ return; ++ } ++ p = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ while (1) { ++ q = ZEND_MM_NEXT_BLOCK(p); ++ if (q <= p || ++ (char*)q > (char*)segment + segment->size || ++ p->info._size != q->info._prev) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ if (!ZEND_MM_IS_FREE_BLOCK(p)) { ++ if (p->magic == MEM_BLOCK_VALID) { ++ long repeated; ++ zend_leak_info leak; ++ ++ ZEND_MM_SET_MAGIC(p, MEM_BLOCK_LEAK); ++ ++ leak.addr = ZEND_MM_DATA_OF(p); ++ leak.size = p->debug.size; ++ leak.filename = p->debug.filename; ++ leak.lineno = p->debug.lineno; ++ leak.orig_filename = p->debug.orig_filename; ++ leak.orig_lineno = p->debug.orig_lineno; ++ ++ zend_message_dispatcher(ZMSG_LOG_SCRIPT_NAME, NULL TSRMLS_CC); ++ zend_message_dispatcher(ZMSG_MEMORY_LEAK_DETECTED, &leak TSRMLS_CC); ++ repeated = zend_mm_find_leaks(segment, p); ++ total += 1 + repeated; ++ if (repeated) { ++ zend_message_dispatcher(ZMSG_MEMORY_LEAK_REPEATED, (void *)(zend_uintptr_t)repeated TSRMLS_CC); ++ } ++#if ZEND_MM_CACHE ++ } else if (p->magic == MEM_BLOCK_CACHED) { ++ /* skip it */ ++#endif ++ } else if (p->magic != MEM_BLOCK_LEAK) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ } ++ if (ZEND_MM_IS_GUARD_BLOCK(q)) { ++ segment = segment->next_segment; ++ if (!segment) { ++ break; ++ } ++ q = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ } ++ p = q; ++ } ++ if (total) { ++ zend_message_dispatcher(ZMSG_MEMORY_LEAKS_GRAND_TOTAL, &total TSRMLS_CC); ++ } ++} ++ ++static int zend_mm_check_ptr(zend_mm_heap_canary *heap, void *ptr, int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_block_canary *p; ++ int no_cache_notice = 0; ++ int had_problems = 0; ++ int valid_beginning = 1; ++ ++ if (silent==2) { ++ silent = 1; ++ no_cache_notice = 1; ++ } else if (silent==3) { ++ silent = 0; ++ no_cache_notice = 1; ++ } ++ if (!silent) { ++ TSRMLS_FETCH(); ++ ++ zend_message_dispatcher(ZMSG_LOG_SCRIPT_NAME, NULL TSRMLS_CC); ++ zend_debug_alloc_output("---------------------------------------\n"); ++ zend_debug_alloc_output("%s(%d) : Block "PTR_FMT" status:\n" ZEND_FILE_LINE_RELAY_CC, ptr); ++ if (__zend_orig_filename) { ++ zend_debug_alloc_output("%s(%d) : Actual location (location was relayed)\n" ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ if (!ptr) { ++ zend_debug_alloc_output("NULL\n"); ++ zend_debug_alloc_output("---------------------------------------\n"); ++ return 0; ++ } ++ } ++ ++ if (!ptr) { ++ if (silent) { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } ++ ++ p = ZEND_MM_HEADER_OF(ptr); ++ ++#ifdef ZTS ++ if (ZEND_MM_BAD_THREAD_ID(p)) { ++ if (!silent) { ++ zend_debug_alloc_output("Invalid pointer: ((thread_id=0x%0.8X) != (expected=0x%0.8X))\n", (long)p->thread_id, (long)tsrm_thread_id()); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } ++#endif ++ ++ if (p->info._size != ZEND_MM_NEXT_BLOCK(p)->info._prev) { ++ if (!silent) { ++ zend_debug_alloc_output("Invalid pointer: ((size="PTR_FMT") != (next.prev="PTR_FMT"))\n", p->info._size, ZEND_MM_NEXT_BLOCK(p)->info._prev); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } ++ if (p->info._prev != ZEND_MM_GUARD_BLOCK && ++ ZEND_MM_PREV_BLOCK(p)->info._size != p->info._prev) { ++ if (!silent) { ++ zend_debug_alloc_output("Invalid pointer: ((prev="PTR_FMT") != (prev.size="PTR_FMT"))\n", p->info._prev, ZEND_MM_PREV_BLOCK(p)->info._size); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } ++ ++ if (had_problems) { ++ zend_debug_alloc_output("---------------------------------------\n"); ++ return 0; ++ } ++ ++ if (!silent) { ++ zend_debug_alloc_output("%10s\t","Beginning: "); ++ } ++ ++ if (!ZEND_MM_IS_USED_BLOCK(p)) { ++ if (!silent) { ++ if (p->magic != MEM_BLOCK_FREED) { ++ zend_debug_alloc_output("Freed (magic=0x%0.8X, expected=0x%0.8X)\n", p->magic, MEM_BLOCK_FREED); ++ } else { ++ zend_debug_alloc_output("Freed\n"); ++ } ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } else if (ZEND_MM_IS_GUARD_BLOCK(p)) { ++ if (!silent) { ++ if (p->magic != MEM_BLOCK_FREED) { ++ zend_debug_alloc_output("Guard (magic=0x%0.8X, expected=0x%0.8X)\n", p->magic, MEM_BLOCK_FREED); ++ } else { ++ zend_debug_alloc_output("Guard\n"); ++ } ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } else { ++ switch (p->magic) { ++ case MEM_BLOCK_VALID: ++ case MEM_BLOCK_LEAK: ++ if (!silent) { ++ zend_debug_alloc_output("OK (allocated on %s:%d, %d bytes)\n", p->debug.filename, p->debug.lineno, (int)p->debug.size); ++ } ++ break; /* ok */ ++ case MEM_BLOCK_CACHED: ++ if (!no_cache_notice) { ++ if (!silent) { ++ zend_debug_alloc_output("Cached\n"); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ } ++ case MEM_BLOCK_FREED: ++ if (!silent) { ++ zend_debug_alloc_output("Freed (invalid)\n"); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ break; ++ case MEM_BLOCK_GUARD: ++ if (!silent) { ++ zend_debug_alloc_output("Guard (invalid)\n"); ++ had_problems = 1; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ break; ++ default: ++ if (!silent) { ++ zend_debug_alloc_output("Unknown (magic=0x%0.8X, expected=0x%0.8X)\n", p->magic, MEM_BLOCK_VALID); ++ had_problems = 1; ++ valid_beginning = 0; ++ } else { ++ return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ break; ++ } ++ } ++ ++#if ZEND_MM_HEAP_PROTECTION ++ if (!valid_beginning) { ++ if (!silent) { ++ zend_debug_alloc_output("%10s\t", "Start:"); ++ zend_debug_alloc_output("Unknown\n"); ++ zend_debug_alloc_output("%10s\t", "End:"); ++ zend_debug_alloc_output("Unknown\n"); ++ } ++ } else { ++ char *end_magic = ZEND_MM_END_MAGIC_PTR(p); ++ ++ if (p->debug.start_magic == _mem_block_start_magic) { ++ if (!silent) { ++ zend_debug_alloc_output("%10s\t", "Start:"); ++ zend_debug_alloc_output("OK\n"); ++ } ++ } else { ++ char *overflow_ptr, *magic_ptr=(char *) &_mem_block_start_magic; ++ int overflows=0; ++ int i; ++ ++ if (silent) { ++ return _mem_block_check(ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ had_problems = 1; ++ overflow_ptr = (char *) &p->debug.start_magic; ++ i = END_MAGIC_SIZE; ++ while (--i >= 0) { ++ if (overflow_ptr[i]!=magic_ptr[i]) { ++ overflows++; ++ } ++ } ++ zend_debug_alloc_output("%10s\t", "Start:"); ++ zend_debug_alloc_output("Overflown (magic=0x%0.8X instead of 0x%0.8X)\n", p->debug.start_magic, _mem_block_start_magic); ++ zend_debug_alloc_output("%10s\t",""); ++ if (overflows >= END_MAGIC_SIZE) { ++ zend_debug_alloc_output("At least %d bytes overflown\n", END_MAGIC_SIZE); ++ } else { ++ zend_debug_alloc_output("%d byte(s) overflown\n", overflows); ++ } ++ } ++ if (memcmp(end_magic, &_mem_block_end_magic, END_MAGIC_SIZE)==0) { ++ if (!silent) { ++ zend_debug_alloc_output("%10s\t", "End:"); ++ zend_debug_alloc_output("OK\n"); ++ } ++ } else { ++ char *overflow_ptr, *magic_ptr=(char *) &_mem_block_end_magic; ++ int overflows=0; ++ int i; ++ ++ if (silent) { ++ return _mem_block_check(ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ had_problems = 1; ++ overflow_ptr = (char *) end_magic; ++ ++ for (i=0; i < END_MAGIC_SIZE; i++) { ++ if (overflow_ptr[i]!=magic_ptr[i]) { ++ overflows++; ++ } ++ } ++ ++ zend_debug_alloc_output("%10s\t", "End:"); ++ zend_debug_alloc_output("Overflown (magic=0x%0.8X instead of 0x%0.8X)\n", *end_magic, _mem_block_end_magic); ++ zend_debug_alloc_output("%10s\t",""); ++ if (overflows >= END_MAGIC_SIZE) { ++ zend_debug_alloc_output("At least %d bytes overflown\n", END_MAGIC_SIZE); ++ } else { ++ zend_debug_alloc_output("%d byte(s) overflown\n", overflows); ++ } ++ } ++ } ++#endif ++ ++ if (!silent) { ++ zend_debug_alloc_output("---------------------------------------\n"); ++ } ++ return ((!had_problems) ? 1 : 0); ++} ++ ++static int zend_mm_check_heap(zend_mm_heap_canary *heap, int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_segment *segment = heap->segments_list; ++ zend_mm_block_canary *p, *q; ++ int errors = 0; ++ ++ if (!segment) { ++ return 0; ++ } ++ p = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ while (1) { ++ q = ZEND_MM_NEXT_BLOCK(p); ++ if (q <= p || ++ (char*)q > (char*)segment + segment->size || ++ p->info._size != q->info._prev) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ if (!ZEND_MM_IS_FREE_BLOCK(p)) { ++ if (p->magic == MEM_BLOCK_VALID || p->magic == MEM_BLOCK_LEAK) { ++ if (!zend_mm_check_ptr(heap, ZEND_MM_DATA_OF(p), (silent?2:3) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)) { ++ errors++; ++ } ++#if ZEND_MM_CACHE ++ } else if (p->magic == MEM_BLOCK_CACHED) { ++ /* skip it */ ++#endif ++ } else if (p->magic != MEM_BLOCK_LEAK) { ++ zend_mm_panic("zend_mm_heap corrupted"); ++ } ++ } ++ if (ZEND_MM_IS_GUARD_BLOCK(q)) { ++ segment = segment->next_segment; ++ if (!segment) { ++ return errors; ++ } ++ q = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ } ++ p = q; ++ } ++} ++#endif ++ ++void __zend_mm_shutdown_canary(zend_mm_heap_canary *heap, int full_shutdown, int silent TSRMLS_DC) ++{ ++ zend_mm_storage *storage; ++ zend_mm_segment *segment; ++ zend_mm_segment *prev; ++ int internal; ++ ++ if (heap->reserve) { ++#if ZEND_DEBUG ++ if (!silent) { ++ _zend_mm_free(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ } ++#endif ++ heap->reserve = NULL; ++ } ++ ++#if ZEND_MM_CACHE_STAT ++ if (full_shutdown) { ++ FILE *f; ++ ++ f = fopen("zend_mm.log", "w"); ++ if (f) { ++ int i,j; ++ size_t size, true_size, min_size, max_size; ++ int hit = 0, miss = 0; ++ ++ fprintf(f, "\nidx min_size max_size true_size max_len hits misses\n"); ++ size = 0; ++ while (1) { ++ true_size = ZEND_MM_TRUE_SIZE(size); ++ if (ZEND_MM_SMALL_SIZE(true_size)) { ++ min_size = size; ++ i = ZEND_MM_BUCKET_INDEX(true_size); ++ size++; ++ while (1) { ++ true_size = ZEND_MM_TRUE_SIZE(size); ++ if (ZEND_MM_SMALL_SIZE(true_size)) { ++ j = ZEND_MM_BUCKET_INDEX(true_size); ++ if (j > i) { ++ max_size = size-1; ++ break; ++ } ++ } else { ++ max_size = size-1; ++ break; ++ } ++ size++; ++ } ++ hit += heap->cache_stat[i].hit; ++ miss += heap->cache_stat[i].miss; ++ fprintf(f, "%2d %8d %8d %9d %8d %8d %8d\n", i, (int)min_size, (int)max_size, ZEND_MM_TRUE_SIZE(max_size), heap->cache_stat[i].max_count, heap->cache_stat[i].hit, heap->cache_stat[i].miss); ++ } else { ++ break; ++ } ++ } ++ fprintf(f, " %8d %8d\n", hit, miss); ++ fprintf(f, " %8d %8d\n", heap->cache_stat[ZEND_MM_NUM_BUCKETS].hit, heap->cache_stat[ZEND_MM_NUM_BUCKETS].miss); ++ fclose(f); ++ } ++ } ++#endif ++ ++#if ZEND_DEBUG ++ if (!silent) { ++ zend_mm_check_leaks(heap TSRMLS_CC); ++ } ++#endif ++ ++ internal = heap->internal; ++ storage = heap->storage; ++ segment = heap->segments_list; ++ while (segment) { ++ prev = segment; ++ segment = segment->next_segment; ++ ZEND_MM_STORAGE_FREE(prev); ++ } ++ if (full_shutdown) { ++ storage->handlers->dtor(storage); ++ if (!internal) { ++ free(heap); ++ } ++ } else { ++ if (heap->compact_size && ++ heap->real_peak > heap->compact_size) { ++ storage->handlers->compact(storage); ++ } ++ heap->segments_list = NULL; ++ zend_mm_init(heap); ++ heap->real_size = 0; ++ heap->real_peak = 0; ++ heap->size = 0; ++ heap->peak = 0; ++ if (heap->reserve_size) { ++ heap->reserve = _zend_mm_alloc((zend_mm_heap *)heap, heap->reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ } ++ heap->overflow = 0; ++ } ++} ++ ++static void zend_mm_safe_error(zend_mm_heap_canary *heap, ++ const char *format, ++ size_t limit, ++#if ZEND_DEBUG ++ const char *filename, ++ uint lineno, ++#endif ++ size_t size) ++{ ++ if (heap->reserve) { ++ _zend_mm_free_canary_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); ++ heap->reserve = NULL; ++ } ++ if (heap->overflow == 0) { ++ char *error_filename; ++ uint error_lineno; ++ TSRMLS_FETCH(); ++ if (zend_is_compiling(TSRMLS_C)) { ++ error_filename = zend_get_compiled_filename(TSRMLS_C); ++ error_lineno = zend_get_compiled_lineno(TSRMLS_C); ++ } else if (EG(in_execution)) { ++ error_filename = EG(active_op_array)?EG(active_op_array)->filename:NULL; ++ error_lineno = EG(opline_ptr)?(*EG(opline_ptr))->lineno:0; ++ } else { ++ error_filename = NULL; ++ error_lineno = 0; ++ } ++ if (!error_filename) { ++ error_filename = "Unknown"; ++ } ++ heap->overflow = 1; ++ zend_try { ++ zend_error_noreturn(E_ERROR, ++ format, ++ limit, ++#if ZEND_DEBUG ++ filename, ++ lineno, ++#endif ++ size); ++ } zend_catch { ++ if (heap->overflow == 2) { ++ fprintf(stderr, "\nFatal error: "); ++ fprintf(stderr, ++ format, ++ limit, ++#if ZEND_DEBUG ++ filename, ++ lineno, ++#endif ++ size); ++ fprintf(stderr, " in %s on line %d\n", error_filename, error_lineno); ++ } ++/* See http://support.microsoft.com/kb/190351 */ ++#ifdef PHP_WIN32 ++ fflush(stderr); ++#endif ++ } zend_end_try(); ++ } else { ++ heap->overflow = 2; ++ } ++ zend_bailout(); ++} ++ ++static zend_mm_free_block_canary *zend_mm_search_large_block(zend_mm_heap_canary *heap, size_t true_size) ++{ ++ zend_mm_free_block_canary *best_fit; ++ size_t index = ZEND_MM_LARGE_BUCKET_INDEX(true_size); ++ size_t bitmap = heap->large_free_bitmap >> index; ++ zend_mm_free_block_canary *p; ++ ++ if (bitmap == 0) { ++ return NULL; ++ } ++ ++ if (UNEXPECTED((bitmap & 1) != 0)) { ++ /* Search for best "large" free block */ ++ zend_mm_free_block_canary *rst = NULL; ++ size_t m; ++ size_t best_size = -1; ++ ++ best_fit = NULL; ++ p = heap->large_free_buckets[index]; ++ for (m = true_size << (ZEND_MM_NUM_BUCKETS - index); ; m <<= 1) { ++ if (UNEXPECTED(ZEND_MM_FREE_BLOCK_SIZE(p) == true_size)) { ++ return SUHOSIN_MANGLE_PTR(p->next_free_block); ++ } else if (ZEND_MM_FREE_BLOCK_SIZE(p) >= true_size && ++ ZEND_MM_FREE_BLOCK_SIZE(p) < best_size) { ++ best_size = ZEND_MM_FREE_BLOCK_SIZE(p); ++ best_fit = p; ++ } ++ if ((m & (ZEND_MM_LONG_CONST(1) << (ZEND_MM_NUM_BUCKETS-1))) == 0) { ++ if (p->child[1]) { ++ rst = p->child[1]; ++ } ++ if (p->child[0]) { ++ p = p->child[0]; ++ } else { ++ break; ++ } ++ } else if (p->child[1]) { ++ p = p->child[1]; ++ } else { ++ break; ++ } ++ } ++ ++ for (p = rst; p; p = p->child[p->child[0] != NULL]) { ++ if (UNEXPECTED(ZEND_MM_FREE_BLOCK_SIZE(p) == true_size)) { ++ return SUHOSIN_MANGLE_PTR(p->next_free_block); ++ } else if (ZEND_MM_FREE_BLOCK_SIZE(p) > true_size && ++ ZEND_MM_FREE_BLOCK_SIZE(p) < best_size) { ++ best_size = ZEND_MM_FREE_BLOCK_SIZE(p); ++ best_fit = p; ++ } ++ } ++ ++ if (best_fit) { ++ return SUHOSIN_MANGLE_PTR(best_fit->next_free_block); ++ } ++ bitmap = bitmap >> 1; ++ if (!bitmap) { ++ return NULL; ++ } ++ index++; ++ } ++ ++ /* Search for smallest "large" free block */ ++ best_fit = p = heap->large_free_buckets[index + zend_mm_low_bit(bitmap)]; ++ while ((p = p->child[p->child[0] != NULL])) { ++ if (ZEND_MM_FREE_BLOCK_SIZE(p) < ZEND_MM_FREE_BLOCK_SIZE(best_fit)) { ++ best_fit = p; ++ } ++ } ++ return SUHOSIN_MANGLE_PTR(best_fit->next_free_block); ++} ++ ++void *_zend_mm_alloc_canary_int(zend_mm_heap_canary *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_free_block_canary *best_fit; ++ size_t true_size = ZEND_MM_TRUE_SIZE(size); ++ size_t block_size; ++ size_t remaining_size; ++ size_t segment_size; ++ zend_mm_segment *segment; ++ int keep_rest = 0; ++ ++ if (EXPECTED(ZEND_MM_SMALL_SIZE(true_size))) { ++ size_t index = ZEND_MM_BUCKET_INDEX(true_size); ++ size_t bitmap; ++ ++ if (UNEXPECTED(true_size < size)) { ++ goto out_of_memory; ++ } ++#if ZEND_MM_CACHE ++ if (EXPECTED(heap->cache[index] != NULL)) { ++ /* Get block from cache */ ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[index].count--; ++ heap->cache_stat[index].hit++; ++#endif ++ best_fit = SUHOSIN_MANGLE_PTR(heap->cache[index]); ++ heap->cache[index] = best_fit->prev_free_block; ++ heap->cached -= true_size; ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block_canary*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif ++ ZEND_MM_CHECK_MAGIC(best_fit, MEM_BLOCK_CACHED); ++ ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 0); ++ return ZEND_MM_DATA_OF(best_fit); ++ } ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[index].miss++; ++#endif ++#endif ++ ++ bitmap = heap->free_bitmap >> index; ++ if (bitmap) { ++ /* Found some "small" free block that can be used */ ++ index += zend_mm_low_bit(bitmap); ++ best_fit = SUHOSIN_MANGLE_PTR(heap->free_buckets[index*2]); ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[ZEND_MM_NUM_BUCKETS].hit++; ++#endif ++ goto zend_mm_finished_searching_for_block; ++ } ++ } ++ ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[ZEND_MM_NUM_BUCKETS].miss++; ++#endif ++ ++ best_fit = zend_mm_search_large_block(heap, true_size); ++ ++ if (!best_fit && heap->real_size >= heap->limit - heap->block_size) { ++ zend_mm_free_block_canary *p = SUHOSIN_MANGLE_PTR(heap->rest_buckets[0]); ++ size_t best_size = -1; ++ ++ while (p != ZEND_MM_REST_BUCKET(heap)) { ++ if (UNEXPECTED(ZEND_MM_FREE_BLOCK_SIZE(p) == true_size)) { ++ best_fit = p; ++ goto zend_mm_finished_searching_for_block; ++ } else if (ZEND_MM_FREE_BLOCK_SIZE(p) > true_size && ++ ZEND_MM_FREE_BLOCK_SIZE(p) < best_size) { ++ best_size = ZEND_MM_FREE_BLOCK_SIZE(p); ++ best_fit = p; ++ } ++ p = SUHOSIN_MANGLE_PTR(p->prev_free_block); ++ } ++ } ++ ++ if (!best_fit) { ++ if (true_size > heap->block_size - (ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE)) { ++ /* Make sure we add a memory block which is big enough, ++ segment must have header "size" and trailer "guard" block */ ++ segment_size = true_size + ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE; ++ segment_size = (segment_size + (heap->block_size-1)) & ~(heap->block_size-1); ++ keep_rest = 1; ++ } else { ++ segment_size = heap->block_size; ++ } ++ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ ++ if (segment_size < true_size || ++ heap->real_size + segment_size > heap->limit) { ++ /* Memory limit overflow */ ++#if ZEND_MM_CACHE ++ zend_mm_free_cache(heap); ++#endif ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if ZEND_DEBUG ++ zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted at %s:%d (tried to allocate %lu bytes)", heap->limit, __zend_filename, __zend_lineno, size); ++#else ++ zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %lu bytes)", heap->limit, size); ++#endif ++ } ++ ++ segment = (zend_mm_segment *) ZEND_MM_STORAGE_ALLOC(segment_size); ++ ++ if (!segment) { ++ /* Storage manager cannot allocate memory */ ++#if ZEND_MM_CACHE ++ zend_mm_free_cache(heap); ++#endif ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++out_of_memory: ++#if ZEND_DEBUG ++ zend_mm_safe_error(heap, "Out of memory (allocated %ld) at %s:%d (tried to allocate %lu bytes)", heap->real_size, __zend_filename, __zend_lineno, size); ++#else ++ zend_mm_safe_error(heap, "Out of memory (allocated %ld) (tried to allocate %lu bytes)", heap->real_size, size); ++#endif ++ return NULL; ++ } ++ ++ heap->real_size += segment_size; ++ if (heap->real_size > heap->real_peak) { ++ heap->real_peak = heap->real_size; ++ } ++ ++ segment->size = segment_size; ++ segment->next_segment = heap->segments_list; ++ heap->segments_list = segment; ++ ++ best_fit = (zend_mm_free_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ ZEND_MM_MARK_FIRST_BLOCK(best_fit); ++ ++ block_size = segment_size - ZEND_MM_ALIGNED_SEGMENT_SIZE - ZEND_MM_ALIGNED_HEADER_SIZE; ++ ++ ZEND_MM_LAST_BLOCK(ZEND_MM_BLOCK_AT(best_fit, block_size)); ++ ++ } else { ++zend_mm_finished_searching_for_block: ++ /* remove from free list */ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ ZEND_MM_CHECK_MAGIC(best_fit, MEM_BLOCK_FREED); ++ ZEND_MM_CHECK_COOKIE(best_fit); ++ ZEND_MM_CHECK_BLOCK_LINKAGE(best_fit); ++ zend_mm_remove_from_free_list(heap, best_fit); ++ ++ block_size = ZEND_MM_FREE_BLOCK_SIZE(best_fit); ++ } ++ ++ remaining_size = block_size - true_size; ++ ++ if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) { ++ true_size = block_size; ++ ZEND_MM_BLOCK(best_fit, ZEND_MM_USED_BLOCK, true_size); ++ } else { ++ zend_mm_free_block_canary *new_free_block; ++ ++ /* prepare new free block */ ++ ZEND_MM_BLOCK(best_fit, ZEND_MM_USED_BLOCK, true_size); ++ new_free_block = (zend_mm_free_block_canary *) ZEND_MM_BLOCK_AT(best_fit, true_size); ++ ZEND_MM_BLOCK(new_free_block, ZEND_MM_FREE_BLOCK, remaining_size); ++ ++ /* add the new free block to the free list */ ++ if (EXPECTED(!keep_rest)) { ++ zend_mm_add_to_free_list(heap, new_free_block); ++ } else { ++ zend_mm_add_to_rest_list(heap, new_free_block); ++ } ++ } ++ ++ ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 1); ++ ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block_canary*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif ++ ++ heap->size += true_size; ++ if (heap->peak < heap->size) { ++ heap->peak = heap->size; ++ } ++ ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++ return ZEND_MM_DATA_OF(best_fit); ++} ++ ++ ++void _zend_mm_free_canary_int(zend_mm_heap_canary *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_block_canary *mm_block; ++ zend_mm_block_canary *next_block; ++ size_t size; ++ ++ if (!ZEND_MM_VALID_PTR(p)) { ++ return; ++ } ++ ++ mm_block = ZEND_MM_HEADER_OF(p); ++ size = ZEND_MM_BLOCK_SIZE(mm_block); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_CHECK_CANARIES(mm_block, "efree()"); ++#endif ++ ZEND_MM_CHECK_PROTECTION(mm_block); ++ ++#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION ++ memset(ZEND_MM_DATA_OF(mm_block), 0x5a, mm_block->debug.size); ++#endif ++#if SUHOSIN_PATCH ++ if (UNEXPECTED(SUHOSIN_CONFIG(SUHOSIN_MM_DESTROY_FREE_MEMORY))) { ++ memset(ZEND_MM_DATA_OF(mm_block), 0x5a, mm_block->info.size); ++ } ++#endif ++#if ZEND_MM_CACHE ++ if (EXPECTED(ZEND_MM_SMALL_SIZE(size)) && EXPECTED(heap->cached < ZEND_MM_CACHE_SIZE)) { ++ size_t index = ZEND_MM_BUCKET_INDEX(size); ++ zend_mm_free_block_canary **cache = &heap->cache[index]; ++ ++ ((zend_mm_free_block_canary*)mm_block)->prev_free_block = *cache; ++ *cache = (zend_mm_free_block_canary*)SUHOSIN_MANGLE_PTR(mm_block); ++ heap->cached += size; ++ ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_CACHED); ++#if ZEND_MM_CACHE_STAT ++ if (++heap->cache_stat[index].count > heap->cache_stat[index].max_count) { ++ heap->cache_stat[index].max_count = heap->cache_stat[index].count; ++ } ++#endif ++ return; ++ } ++#endif ++ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ ++ heap->size -= size; ++ ++ next_block = ZEND_MM_BLOCK_AT(mm_block, size); ++ if (ZEND_MM_IS_FREE_BLOCK(next_block)) { ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ size += ZEND_MM_FREE_BLOCK_SIZE(next_block); ++ } ++ if (ZEND_MM_PREV_BLOCK_IS_FREE(mm_block)) { ++ mm_block = ZEND_MM_PREV_BLOCK(mm_block); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) mm_block); ++ size += ZEND_MM_FREE_BLOCK_SIZE(mm_block); ++ } ++ if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && ++ ZEND_MM_IS_GUARD_BLOCK(ZEND_MM_BLOCK_AT(mm_block, size))) { ++ zend_mm_del_segment(heap, (zend_mm_segment *) ((char *)mm_block - ZEND_MM_ALIGNED_SEGMENT_SIZE)); ++ } else { ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_FREE_BLOCK, size); ++ zend_mm_add_to_free_list(heap, (zend_mm_free_block_canary *) mm_block); ++ } ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++} ++ ++void *_zend_mm_realloc_canary_int(zend_mm_heap_canary *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_block_canary *mm_block = ZEND_MM_HEADER_OF(p); ++ zend_mm_block_canary *next_block; ++ size_t true_size; ++ size_t orig_size; ++ void *ptr; ++ ++ if (UNEXPECTED(!p) || !ZEND_MM_VALID_PTR(p)) { ++ return _zend_mm_alloc_canary_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ } ++ mm_block = ZEND_MM_HEADER_OF(p); ++ true_size = ZEND_MM_TRUE_SIZE(size); ++ orig_size = ZEND_MM_BLOCK_SIZE(mm_block); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_CHECK_CANARIES(mm_block, "erealloc()"); ++#endif ++ ZEND_MM_CHECK_PROTECTION(mm_block); ++ ++ if (UNEXPECTED(true_size < size)) { ++ goto out_of_memory; ++ } ++ ++ if (true_size <= orig_size) { ++ size_t remaining_size = orig_size - true_size; ++ ++ if (remaining_size >= ZEND_MM_ALIGNED_MIN_HEADER_SIZE) { ++ zend_mm_free_block_canary *new_free_block; ++ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ next_block = ZEND_MM_BLOCK_AT(mm_block, orig_size); ++ if (ZEND_MM_IS_FREE_BLOCK(next_block)) { ++ remaining_size += ZEND_MM_FREE_BLOCK_SIZE(next_block); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ } ++ ++ /* prepare new free block */ ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, true_size); ++ new_free_block = (zend_mm_free_block_canary *) ZEND_MM_BLOCK_AT(mm_block, true_size); ++ ++ ZEND_MM_BLOCK(new_free_block, ZEND_MM_FREE_BLOCK, remaining_size); ++ ++ /* add the new free block to the free list */ ++ zend_mm_add_to_free_list(heap, new_free_block); ++ heap->size += (true_size - orig_size); ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++ } ++ ZEND_MM_SET_DEBUG_INFO(mm_block, size, 0, 0); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block_canary*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif ++ return p; ++ } ++ ++#if ZEND_MM_CACHE ++ if (ZEND_MM_SMALL_SIZE(true_size)) { ++ size_t index = ZEND_MM_BUCKET_INDEX(true_size); ++ ++ if (heap->cache[index] != NULL) { ++ zend_mm_free_block_canary *best_fit; ++ zend_mm_free_block_canary **cache; ++ ++#if ZEND_MM_CACHE_STAT ++ heap->cache_stat[index].count--; ++ heap->cache_stat[index].hit++; ++#endif ++ best_fit = SUHOSIN_MANGLE_PTR(heap->cache[index]); ++ heap->cache[index] = best_fit->prev_free_block; ++ ZEND_MM_CHECK_MAGIC(best_fit, MEM_BLOCK_CACHED); ++ ZEND_MM_SET_DEBUG_INFO(best_fit, size, 1, 0); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(best_fit); ++ ((zend_mm_block_canary*)best_fit)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(best_fit); ++#endif ++ ++ ptr = ZEND_MM_DATA_OF(best_fit); ++ ++#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION ++ memcpy(ptr, p, mm_block->debug.size); ++#else ++ memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE - CANARY_SIZE); ++#endif ++ ++ heap->cached -= true_size - orig_size; ++ ++ index = ZEND_MM_BUCKET_INDEX(orig_size); ++ cache = &heap->cache[index]; ++ ++ ((zend_mm_free_block_canary*)mm_block)->prev_free_block = *cache; ++ *cache = (zend_mm_free_block_canary*)SUHOSIN_MANGLE_PTR(mm_block); ++ ZEND_MM_SET_MAGIC(mm_block, MEM_BLOCK_CACHED); ++#if ZEND_MM_CACHE_STAT ++ if (++heap->cache_stat[index].count > heap->cache_stat[index].max_count) { ++ heap->cache_stat[index].max_count = heap->cache_stat[index].count; ++ } ++#endif ++ return ptr; ++ } ++ } ++#endif ++ ++ next_block = ZEND_MM_BLOCK_AT(mm_block, orig_size); ++ ++ if (ZEND_MM_IS_FREE_BLOCK(next_block)) { ++ ZEND_MM_CHECK_COOKIE(next_block); ++ ZEND_MM_CHECK_BLOCK_LINKAGE(next_block); ++ if (orig_size + ZEND_MM_FREE_BLOCK_SIZE(next_block) >= true_size) { ++ size_t block_size = orig_size + ZEND_MM_FREE_BLOCK_SIZE(next_block); ++ size_t remaining_size = block_size - true_size; ++ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ ++ if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) { ++ true_size = block_size; ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, true_size); ++ } else { ++ zend_mm_free_block_canary *new_free_block; ++ ++ /* prepare new free block */ ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, true_size); ++ new_free_block = (zend_mm_free_block_canary *) ZEND_MM_BLOCK_AT(mm_block, true_size); ++ ZEND_MM_BLOCK(new_free_block, ZEND_MM_FREE_BLOCK, remaining_size); ++ ++ /* add the new free block to the free list */ ++ if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && ++ ZEND_MM_IS_GUARD_BLOCK(ZEND_MM_BLOCK_AT(new_free_block, remaining_size))) { ++ zend_mm_add_to_rest_list(heap, new_free_block); ++ } else { ++ zend_mm_add_to_free_list(heap, new_free_block); ++ } ++ } ++ ZEND_MM_SET_DEBUG_INFO(mm_block, size, 0, 0); ++ heap->size = heap->size + true_size - orig_size; ++ if (heap->peak < heap->size) { ++ heap->peak = heap->size; ++ } ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block_canary*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif ++ return p; ++ } else if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && ++ ZEND_MM_IS_GUARD_BLOCK(ZEND_MM_BLOCK_AT(next_block, ZEND_MM_FREE_BLOCK_SIZE(next_block)))) { ++ HANDLE_BLOCK_INTERRUPTIONS(); ++ zend_mm_remove_from_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ goto realloc_segment; ++ } ++ } else if (ZEND_MM_IS_FIRST_BLOCK(mm_block) && ZEND_MM_IS_GUARD_BLOCK(next_block)) { ++ zend_mm_segment *segment; ++ zend_mm_segment *segment_copy; ++ size_t segment_size; ++ size_t block_size; ++ size_t remaining_size; ++ ++ HANDLE_BLOCK_INTERRUPTIONS(); ++realloc_segment: ++ /* segment size, size of block and size of guard block */ ++ if (true_size > heap->block_size - (ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE)) { ++ segment_size = true_size+ZEND_MM_ALIGNED_SEGMENT_SIZE+ZEND_MM_ALIGNED_HEADER_SIZE; ++ segment_size = (segment_size + (heap->block_size-1)) & ~(heap->block_size-1); ++ } else { ++ segment_size = heap->block_size; ++ } ++ ++ segment_copy = (zend_mm_segment *) ((char *)mm_block - ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ if (segment_size < true_size || ++ heap->real_size + segment_size - segment_copy->size > heap->limit) { ++ if (ZEND_MM_IS_FREE_BLOCK(next_block)) { ++ zend_mm_add_to_free_list(heap, (zend_mm_free_block_canary *) next_block); ++ } ++#if ZEND_MM_CACHE ++ zend_mm_free_cache(heap); ++#endif ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if ZEND_DEBUG ++ zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted at %s:%d (tried to allocate %ld bytes)", heap->limit, __zend_filename, __zend_lineno, size); ++#else ++ zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %ld bytes)", heap->limit, size); ++#endif ++ return NULL; ++ } ++ ++ segment = ZEND_MM_STORAGE_REALLOC(segment_copy, segment_size); ++ if (!segment) { ++#if ZEND_MM_CACHE ++ zend_mm_free_cache(heap); ++#endif ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++out_of_memory: ++#if ZEND_DEBUG ++ zend_mm_safe_error(heap, "Out of memory (allocated %ld) at %s:%d (tried to allocate %ld bytes)", heap->real_size, __zend_filename, __zend_lineno, size); ++#else ++ zend_mm_safe_error(heap, "Out of memory (allocated %ld) (tried to allocate %ld bytes)", heap->real_size, size); ++#endif ++ return NULL; ++ } ++ heap->real_size += segment_size - segment->size; ++ if (heap->real_size > heap->real_peak) { ++ heap->real_peak = heap->real_size; ++ } ++ ++ segment->size = segment_size; ++ ++ if (segment != segment_copy) { ++ zend_mm_segment **seg = &heap->segments_list; ++ while (*seg != segment_copy) { ++ seg = &(*seg)->next_segment; ++ } ++ *seg = segment; ++ mm_block = (zend_mm_block_canary *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); ++ ZEND_MM_MARK_FIRST_BLOCK(mm_block); ++ } ++ ++ block_size = segment_size - ZEND_MM_ALIGNED_SEGMENT_SIZE - ZEND_MM_ALIGNED_HEADER_SIZE; ++ remaining_size = block_size - true_size; ++ ++ /* setup guard block */ ++ ZEND_MM_LAST_BLOCK(ZEND_MM_BLOCK_AT(mm_block, block_size)); ++ ++ if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) { ++ true_size = block_size; ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, true_size); ++ } else { ++ zend_mm_free_block_canary *new_free_block; ++ ++ /* prepare new free block */ ++ ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, true_size); ++ new_free_block = (zend_mm_free_block_canary *) ZEND_MM_BLOCK_AT(mm_block, true_size); ++ ZEND_MM_BLOCK(new_free_block, ZEND_MM_FREE_BLOCK, remaining_size); ++ ++ /* add the new free block to the free list */ ++ zend_mm_add_to_rest_list(heap, new_free_block); ++ } ++ ++ ZEND_MM_SET_DEBUG_INFO(mm_block, size, 1, 1); ++ ++ heap->size = heap->size + true_size - orig_size; ++ if (heap->peak < heap->size) { ++ heap->peak = heap->size; ++ } ++ ++ HANDLE_UNBLOCK_INTERRUPTIONS(); ++#if SUHOSIN_PATCH ++ SUHOSIN_MM_SET_CANARIES(mm_block); ++ ((zend_mm_block_canary*)mm_block)->info.size = size; ++ SUHOSIN_MM_SET_END_CANARY(mm_block); ++#endif ++ return ZEND_MM_DATA_OF(mm_block); ++ } ++ ++ ptr = _zend_mm_alloc_canary_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION ++ memcpy(ptr, p, mm_block->debug.size); ++#else ++ memcpy(ptr, p, orig_size - ZEND_MM_ALIGNED_HEADER_SIZE - CANARY_SIZE); ++#endif ++ _zend_mm_free_canary_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); ++ return ptr; ++} ++ ++ZEND_API size_t _zend_mm_block_size_canary(zend_mm_heap_canary *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ++{ ++ zend_mm_block_canary *mm_block; ++ ++ if (!ZEND_MM_VALID_PTR(p)) { ++ return 0; ++ } ++ mm_block = ZEND_MM_HEADER_OF(p); ++ ZEND_MM_CHECK_PROTECTION(mm_block); ++#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION ++ return mm_block->debug.size; ++#else ++ return ZEND_MM_BLOCK_SIZE(mm_block); ++#endif ++} ++ ++#if defined(__GNUC__) && defined(i386) ++ ++static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) ++{ ++ size_t res = nmemb; ++ unsigned long overflow = 0; ++ ++ __asm__ ("mull %3\n\taddl %4,%0\n\tadcl %1,%1" ++ : "=&a"(res), "=&d" (overflow) ++ : "%0"(res), ++ "rm"(size), ++ "rm"(offset)); ++ ++ if (UNEXPECTED(overflow)) { ++ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); ++ return 0; ++ } ++ return res; ++} ++ ++#elif defined(__GNUC__) && defined(__x86_64__) ++ ++static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) ++{ ++ size_t res = nmemb; ++ unsigned long overflow = 0; ++ ++ __asm__ ("mulq %3\n\taddq %4,%0\n\tadcq %1,%1" ++ : "=&a"(res), "=&d" (overflow) ++ : "%0"(res), ++ "rm"(size), ++ "rm"(offset)); ++ ++ if (UNEXPECTED(overflow)) { ++ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); ++ return 0; ++ } ++ return res; ++} ++ ++#elif SIZEOF_SIZE_T == 4 && defined(HAVE_ZEND_LONG64) ++ ++static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) ++{ ++ zend_ulong64 res = (zend_ulong64)nmemb * (zend_ulong64)size + (zend_ulong64)offset; ++ ++ if (UNEXPECTED(res > (zend_ulong64)0xFFFFFFFFL)) { ++ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); ++ return 0; ++ } ++ return (size_t) res; ++} ++ ++#else ++ ++static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) ++{ ++ size_t res = nmemb * size + offset; ++ double _d = (double)nmemb * (double)size + (double)offset; ++ double _delta = (double)res - _d; ++ ++ if (UNEXPECTED((_d + _delta ) != _d)) { ++ zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); ++ return 0; ++ } ++ return res; ++} ++#endif ++ ++/* ++ * Local variables: ++ * tab-width: 4 ++ * c-basic-offset: 4 ++ * indent-tabs-mode: t ++ * End: ++ */ ++ +--- /dev/null ++++ b/Zend/zend_canary.c +@@ -0,0 +1,66 @@ ++/* ++ +----------------------------------------------------------------------+ ++ | Suhosin-Patch for PHP | ++ +----------------------------------------------------------------------+ ++ | Copyright (c) 2004-2009 Stefan Esser | ++ +----------------------------------------------------------------------+ ++ | This source file is subject to version 2.02 of the PHP license, | ++ | that is bundled with this package in the file LICENSE, and is | ++ | available at through the world-wide-web at | ++ | http://www.php.net/license/2_02.txt. | ++ | If you did not receive a copy of the PHP license and are unable to | ++ | obtain it through the world-wide-web, please send a note to | ++ | license@php.net so we can mail you a copy immediately. | ++ +----------------------------------------------------------------------+ ++ | Author: Stefan Esser | ++ +----------------------------------------------------------------------+ ++ */ ++/* $Id: zend_canary.c,v 1.1 2004/11/26 12:45:41 ionic Exp $ */ ++ ++#include "zend.h" ++ ++#include ++#include ++ ++ ++#if SUHOSIN_PATCH ++ ++static size_t last_canary = 0x73625123; ++ ++/* will be replaced later with more compatible method */ ++ZEND_API void zend_canary(void *buf, int len) ++{ ++ time_t t; ++ size_t canary; ++ int fd; ++ ++#ifndef PHP_WIN32 ++ fd = open("/dev/urandom", 0); ++ if (fd != -1) { ++ int r = read(fd, buf, len); ++ close(fd); ++ if (r == len) { ++ return; ++ } ++ } ++#endif ++ /* not good but we never want to do this */ ++ time(&t); ++ canary = *(unsigned int *)&t + getpid() << 16 + last_canary; ++ last_canary ^= (canary << 5) | (canary >> (32-5)); ++ /* When we ensure full win32 compatibility in next version ++ we will replace this with the random number code from zend_alloc.c */ ++ memcpy(buf, &canary, len); ++} ++ ++#endif ++ ++ ++/* ++ * Local variables: ++ * tab-width: 4 ++ * c-basic-offset: 4 ++ * End: ++ * vim600: sw=4 ts=4 fdm=marker ++ * vim<600: sw=4 ts=4 ++ */ +--- a/Zend/zend_compile.c ++++ b/Zend/zend_compile.c +@@ -141,6 +141,11 @@ static void zend_destroy_property_info_i + } + /* }}} */ + ++#if SUHOSIN_PATCH ++void *suhosin_zend_destroy_property_info_internal = zend_destroy_property_info_internal; ++void *suhosin_zend_destroy_property_info = zend_destroy_property_info; ++#endif ++ + static void build_runtime_defined_function_key(zval *result, const char *name, int name_length TSRMLS_DC) /* {{{ */ + { + char char_pos_buf[32]; +--- a/Zend/zend_compile.h ++++ b/Zend/zend_compile.h +@@ -685,6 +685,11 @@ ZEND_API zend_bool zend_is_auto_global(c + ZEND_API zend_bool zend_is_auto_global_quick(const char *name, uint name_len, ulong hashval TSRMLS_DC); + ZEND_API size_t zend_dirname(char *path, size_t len); + ++#if SUHOSIN_PATCH ++extern void *suhosin_zend_destroy_property_info_internal; ++extern void *suhosin_zend_destroy_property_info; ++#endif ++ + int zendlex(znode *zendlval TSRMLS_DC); + + int zend_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC); +--- a/Zend/zend_constants.c ++++ b/Zend/zend_constants.c +@@ -117,6 +117,76 @@ void zend_register_standard_constants(TS + + REGISTER_MAIN_LONG_CONSTANT("DEBUG_BACKTRACE_PROVIDE_OBJECT", DEBUG_BACKTRACE_PROVIDE_OBJECT, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("DEBUG_BACKTRACE_IGNORE_ARGS", DEBUG_BACKTRACE_IGNORE_ARGS, CONST_PERSISTENT | CONST_CS); ++#if SUHOSIN_PATCH ++ REGISTER_MAIN_LONG_CONSTANT("S_MEMORY", S_MEMORY, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_VARS", S_VARS, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_FILES", S_FILES, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_INCLUDE", S_INCLUDE, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_SQL", S_SQL, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_EXECUTOR", S_EXECUTOR, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_MAIL", S_MAIL, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_SESSION", S_SESSION, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_MISC", S_MISC, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_INTERNAL", S_INTERNAL, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_LONG_CONSTANT("S_ALL", S_ALL, CONST_PERSISTENT | CONST_CS); ++ ++ /* error levels */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_CS | CONST_PERSISTENT); /* system unusable */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_CS | CONST_PERSISTENT); /* immediate action required */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_CS | CONST_PERSISTENT); /* critical conditions */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_CS | CONST_PERSISTENT); ++ /* facility: type of program logging the message */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_CS | CONST_PERSISTENT); /* generic user level */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_CS | CONST_PERSISTENT); /* log to email */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_CS | CONST_PERSISTENT); /* other system daemons */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_CS | CONST_PERSISTENT); ++#ifdef LOG_NEWS ++ /* No LOG_NEWS on HP-UX */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_CS | CONST_PERSISTENT); /* usenet new */ ++#endif ++#ifdef LOG_UUCP ++ /* No LOG_UUCP on HP-UX */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_CS | CONST_PERSISTENT); ++#endif ++#ifdef LOG_CRON ++ /* apparently some systems don't have this one */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_CS | CONST_PERSISTENT); ++#endif ++#ifdef LOG_AUTHPRIV ++ /* AIX doesn't have LOG_AUTHPRIV */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_CS | CONST_PERSISTENT); ++#endif ++#ifndef PHP_WIN32 ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_CS | CONST_PERSISTENT); ++#endif ++ /* options */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_CS | CONST_PERSISTENT); ++ REGISTER_MAIN_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_CS | CONST_PERSISTENT); ++#ifdef LOG_NOWAIT ++ REGISTER_MAIN_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_CS | CONST_PERSISTENT); ++#endif ++#ifdef LOG_PERROR ++ /* AIX doesn't have LOG_PERROR */ ++ REGISTER_MAIN_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/ ++#endif ++#endif ++ + /* true/false constants */ + { + zend_constant c; +--- a/Zend/zend_errors.h ++++ b/Zend/zend_errors.h +@@ -41,6 +41,20 @@ + #define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED | E_STRICT) + #define E_CORE (E_CORE_ERROR | E_CORE_WARNING) + ++#if SUHOSIN_PATCH ++#define S_MEMORY (1<<0L) ++#define S_MISC (1<<1L) ++#define S_VARS (1<<2L) ++#define S_FILES (1<<3L) ++#define S_INCLUDE (1<<4L) ++#define S_SQL (1<<5L) ++#define S_EXECUTOR (1<<6L) ++#define S_MAIL (1<<7L) ++#define S_SESSION (1<<8L) ++#define S_INTERNAL (1<<29L) ++#define S_ALL (S_MEMORY | S_VARS | S_INCLUDE | S_FILES | S_MAIL | S_SESSION | S_MISC | S_SQL | S_EXECUTOR) ++#endif ++ + #endif /* ZEND_ERRORS_H */ + + /* +--- a/Zend/zend_hash.c ++++ b/Zend/zend_hash.c +@@ -21,6 +21,7 @@ + + #include "zend.h" + #include "zend_globals.h" ++#include "zend_compile.h" + + #define CONNECT_TO_BUCKET_DLLIST(element, list_head) \ + (element)->pNext = (list_head); \ +@@ -103,6 +104,199 @@ ZEND_API ulong zend_hash_func(const char + return zend_inline_hash_func(arKey, nKeyLength); + } + ++#if SUHOSIN_PATCH ++#ifdef ZTS ++static MUTEX_T zend_hash_dprot_mx_reader; ++static MUTEX_T zend_hash_dprot_mx_writer; ++static unsigned int zend_hash_dprot_reader; ++#endif ++static unsigned int zend_hash_dprot_counter; ++static unsigned int zend_hash_dprot_curmax; ++static dtor_func_t *zend_hash_dprot_table = NULL; ++ ++static void zend_hash_dprot_begin_read() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_hash_dprot_mx_reader); ++ if ((++(zend_hash_dprot_reader)) == 1) { ++ tsrm_mutex_lock(zend_hash_dprot_mx_writer); ++ } ++ tsrm_mutex_unlock(zend_hash_dprot_mx_reader); ++#endif ++} ++ ++static void zend_hash_dprot_end_read() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_hash_dprot_mx_reader); ++ if ((--(zend_hash_dprot_reader)) == 0) { ++ tsrm_mutex_unlock(zend_hash_dprot_mx_writer); ++ } ++ tsrm_mutex_unlock(zend_hash_dprot_mx_reader); ++#endif ++} ++ ++static void zend_hash_dprot_begin_write() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_hash_dprot_mx_writer); ++#endif ++} ++ ++static void zend_hash_dprot_end_write() ++{ ++#ifdef ZTS ++ tsrm_mutex_unlock(zend_hash_dprot_mx_writer); ++#endif ++} ++ ++/*ZEND_API void zend_hash_dprot_dtor() ++{ ++#ifdef ZTS ++ tsrm_mutex_free(zend_hash_dprot_mx_reader); ++ tsrm_mutex_free(zend_hash_dprot_mx_writer); ++#endif ++ free(zend_hash_dprot_table); ++}*/ ++ ++static void zend_hash_add_destructor(dtor_func_t pDestructor) ++{ ++ int left, right, mid; ++ zend_bool found = 0; ++ unsigned long value; ++ ++ if (pDestructor == NULL || pDestructor == ZVAL_PTR_DTOR || pDestructor == ZVAL_INTERNAL_PTR_DTOR ++ || pDestructor == ZEND_FUNCTION_DTOR || pDestructor == ZEND_CLASS_DTOR) { ++ return; ++ } ++ ++ if (zend_hash_dprot_table == NULL) { ++#ifdef ZTS ++ zend_hash_dprot_mx_reader = tsrm_mutex_alloc(); ++ zend_hash_dprot_mx_writer = tsrm_mutex_alloc(); ++ zend_hash_dprot_reader = 0; ++#endif ++ zend_hash_dprot_counter = 0; ++ zend_hash_dprot_curmax = 256; ++ zend_hash_dprot_table = (dtor_func_t *) malloc(256 * sizeof(dtor_func_t)); ++ } ++ ++ zend_hash_dprot_begin_write(); ++ ++ if (zend_hash_dprot_counter == 0) { ++ zend_hash_dprot_counter++; ++ zend_hash_dprot_table[0] = pDestructor; ++ } else { ++ value = (unsigned long) pDestructor; ++ left = 0; ++ right = zend_hash_dprot_counter-1; ++ mid = 0; ++ ++ while (left < right) { ++ mid = (right - left) >> 1; ++ mid += left; ++ if ((unsigned long)zend_hash_dprot_table[mid] == value) { ++ found = 1; ++ break; ++ } ++ if (value < (unsigned long)zend_hash_dprot_table[mid]) { ++ right = mid-1; ++ } else { ++ left = mid+1; ++ } ++ } ++ if ((unsigned long)zend_hash_dprot_table[left] == value) { ++ found = 1; ++ } ++ ++ if (!found) { ++ ++ if (zend_hash_dprot_counter >= zend_hash_dprot_curmax) { ++ zend_hash_dprot_curmax += 256; ++ zend_hash_dprot_table = (dtor_func_t *) realloc(zend_hash_dprot_table, zend_hash_dprot_curmax * sizeof(dtor_func_t)); ++ } ++ ++ if ((unsigned long)zend_hash_dprot_table[left] < value) { ++ memmove(zend_hash_dprot_table+left+2, zend_hash_dprot_table+left+1, (zend_hash_dprot_counter-left-1)*sizeof(dtor_func_t)); ++ zend_hash_dprot_table[left+1] = pDestructor; ++ } else { ++ memmove(zend_hash_dprot_table+left+1, zend_hash_dprot_table+left, (zend_hash_dprot_counter-left)*sizeof(dtor_func_t)); ++ zend_hash_dprot_table[left] = pDestructor; ++ } ++ ++ zend_hash_dprot_counter++; ++ } ++ } ++ ++ zend_hash_dprot_end_write(); ++} ++ ++static void zend_hash_check_destructor(dtor_func_t pDestructor) ++{ ++ unsigned long value; ++ ++ if (pDestructor == NULL || pDestructor == ZVAL_PTR_DTOR || pDestructor == ZVAL_INTERNAL_PTR_DTOR ++#ifdef ZEND_ENGINE_2 ++ || pDestructor == suhosin_zend_destroy_property_info_internal || pDestructor == suhosin_zend_destroy_property_info ++#endif ++ || pDestructor == ZEND_FUNCTION_DTOR || pDestructor == ZEND_CLASS_DTOR) { ++ return; ++ } ++ ++ zend_hash_dprot_begin_read(); ++ ++ if (zend_hash_dprot_counter > 0) { ++ int left, right, mid; ++ zend_bool found = 0; ++ ++ value = (unsigned long) pDestructor; ++ left = 0; ++ right = zend_hash_dprot_counter-1; ++ ++ while (left < right) { ++ mid = (right - left) >> 1; ++ mid += left; ++ if ((unsigned long)zend_hash_dprot_table[mid] == value) { ++ found = 1; ++ break; ++ } ++ if (value < (unsigned long)zend_hash_dprot_table[mid]) { ++ right = mid-1; ++ } else { ++ left = mid+1; ++ } ++ } ++ if ((unsigned long)zend_hash_dprot_table[left] == value) { ++ found = 1; ++ } ++ ++ if (!found) { ++ zend_hash_dprot_end_read(); ++ ++ zend_suhosin_log(S_MEMORY, "possible memory corruption detected - unknown Hashtable destructor"); ++ if (SUHOSIN_CONFIG(SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR) == 0) { ++ _exit(1); ++ } ++ return; ++ } ++ ++ } else { ++ zend_hash_dprot_end_read(); ++ ++ zend_suhosin_log(S_MEMORY, "possible memory corruption detected - unknown Hashtable destructor"); ++ if (SUHOSIN_CONFIG(SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR) == 0) { ++ _exit(1); ++ } ++ return; ++ } ++ ++ zend_hash_dprot_end_read(); ++} ++ ++#else ++#define zend_hash_add_destructor(pDestructor) do {} while(0) ++#define zend_hash_check_destructor(pDestructor) do {} while(0) ++#endif + + #define UPDATE_DATA(ht, p, pData, nDataSize) \ + if (nDataSize == sizeof(void*)) { \ +@@ -163,6 +357,7 @@ ZEND_API int _zend_hash_init(HashTable * + + ht->nTableMask = 0; /* 0 means that ht->arBuckets is uninitialized */ + ht->pDestructor = pDestructor; ++ zend_hash_add_destructor(pDestructor); + ht->arBuckets = (Bucket**)&uninitialized_bucket; + ht->pListHead = NULL; + ht->pListTail = NULL; +@@ -230,6 +425,7 @@ ZEND_API int _zend_hash_add_or_update(Ha + return FAILURE; + } + #endif ++ zend_hash_check_destructor(ht->pDestructor); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } +@@ -307,6 +503,7 @@ ZEND_API int _zend_hash_quick_add_or_upd + return FAILURE; + } + #endif ++ zend_hash_check_destructor(ht->pDestructor); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } +@@ -394,6 +591,7 @@ ZEND_API int _zend_hash_index_update_or_ + return FAILURE; + } + #endif ++ zend_hash_check_destructor(ht->pDestructor); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } +@@ -527,6 +725,7 @@ ZEND_API int zend_hash_del_key_or_index( + if (ht->pInternalPointer == p) { + ht->pInternalPointer = p->pListNext; + } ++ zend_hash_check_destructor(ht->pDestructor); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } +@@ -553,6 +752,7 @@ ZEND_API void zend_hash_destroy(HashTabl + SET_INCONSISTENT(HT_IS_DESTROYING); + + p = ht->pListHead; ++ zend_hash_check_destructor(ht->pDestructor); + while (p != NULL) { + q = p; + p = p->pListNext; +@@ -646,6 +846,7 @@ static Bucket *zend_hash_apply_deleter(H + ht->nNumOfElements--; + HANDLE_UNBLOCK_INTERRUPTIONS(); + ++ zend_hash_check_destructor(ht->pDestructor); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } +@@ -666,6 +867,7 @@ ZEND_API void zend_hash_graceful_destroy + IS_CONSISTENT(ht); + + p = ht->pListHead; ++ zend_hash_check_destructor(ht->pDestructor); + while (p != NULL) { + p = zend_hash_apply_deleter(ht, p); + } +--- a/Zend/zend_llist.c ++++ b/Zend/zend_llist.c +@@ -23,6 +23,194 @@ + #include "zend_llist.h" + #include "zend_qsort.h" + ++#if SUHOSIN_PATCH ++#ifdef ZTS ++static MUTEX_T zend_llist_dprot_mx_reader; ++static MUTEX_T zend_llist_dprot_mx_writer; ++static unsigned int zend_llist_dprot_reader; ++#endif ++static unsigned int zend_llist_dprot_counter; ++static unsigned int zend_llist_dprot_curmax; ++static llist_dtor_func_t *zend_llist_dprot_table = NULL; ++ ++static void zend_llist_dprot_begin_read() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_llist_dprot_mx_reader); ++ if ((++(zend_llist_dprot_reader)) == 1) { ++ tsrm_mutex_lock(zend_llist_dprot_mx_writer); ++ } ++ tsrm_mutex_unlock(zend_llist_dprot_mx_reader); ++#endif ++} ++ ++static void zend_llist_dprot_end_read() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_llist_dprot_mx_reader); ++ if ((--(zend_llist_dprot_reader)) == 0) { ++ tsrm_mutex_unlock(zend_llist_dprot_mx_writer); ++ } ++ tsrm_mutex_unlock(zend_llist_dprot_mx_reader); ++#endif ++} ++ ++static void zend_llist_dprot_begin_write() ++{ ++#ifdef ZTS ++ tsrm_mutex_lock(zend_llist_dprot_mx_writer); ++#endif ++} ++ ++static void zend_llist_dprot_end_write() ++{ ++#ifdef ZTS ++ tsrm_mutex_unlock(zend_llist_dprot_mx_writer); ++#endif ++} ++ ++/*ZEND_API void zend_llist_dprot_dtor() ++{ ++#ifdef ZTS ++ tsrm_mutex_free(zend_llist_dprot_mx_reader); ++ tsrm_mutex_free(zend_llist_dprot_mx_writer); ++#endif ++ free(zend_llist_dprot_table); ++}*/ ++ ++static void zend_llist_add_destructor(llist_dtor_func_t pDestructor) ++{ ++ int left, right, mid; ++ zend_bool found = 0; ++ unsigned long value; ++ ++ if (pDestructor == NULL || pDestructor == ZVAL_PTR_DTOR) { ++ return; ++ } ++ ++ if (zend_llist_dprot_table == NULL) { ++#ifdef ZTS ++ zend_llist_dprot_mx_reader = tsrm_mutex_alloc(); ++ zend_llist_dprot_mx_writer = tsrm_mutex_alloc(); ++ zend_llist_dprot_reader = 0; ++#endif ++ zend_llist_dprot_counter = 0; ++ zend_llist_dprot_curmax = 256; ++ zend_llist_dprot_table = (llist_dtor_func_t *) malloc(256 * sizeof(llist_dtor_func_t)); ++ } ++ ++ zend_llist_dprot_begin_write(); ++ ++ if (zend_llist_dprot_counter == 0) { ++ zend_llist_dprot_counter++; ++ zend_llist_dprot_table[0] = pDestructor; ++ } else { ++ value = (unsigned long) pDestructor; ++ left = 0; ++ right = zend_llist_dprot_counter-1; ++ mid = 0; ++ ++ while (left < right) { ++ mid = (right - left) >> 1; ++ mid += left; ++ if ((unsigned long)zend_llist_dprot_table[mid] == value) { ++ found = 1; ++ break; ++ } ++ if (value < (unsigned long)zend_llist_dprot_table[mid]) { ++ right = mid-1; ++ } else { ++ left = mid+1; ++ } ++ } ++ if ((unsigned long)zend_llist_dprot_table[left] == value) { ++ found = 1; ++ } ++ ++ if (!found) { ++ ++ if (zend_llist_dprot_counter >= zend_llist_dprot_curmax) { ++ zend_llist_dprot_curmax += 256; ++ zend_llist_dprot_table = (llist_dtor_func_t *) realloc(zend_llist_dprot_table, zend_llist_dprot_curmax * sizeof(llist_dtor_func_t)); ++ } ++ ++ if ((unsigned long)zend_llist_dprot_table[left] < value) { ++ memmove(zend_llist_dprot_table+left+2, zend_llist_dprot_table+left+1, (zend_llist_dprot_counter-left-1)*sizeof(llist_dtor_func_t)); ++ zend_llist_dprot_table[left+1] = pDestructor; ++ } else { ++ memmove(zend_llist_dprot_table+left+1, zend_llist_dprot_table+left, (zend_llist_dprot_counter-left)*sizeof(llist_dtor_func_t)); ++ zend_llist_dprot_table[left] = pDestructor; ++ } ++ ++ zend_llist_dprot_counter++; ++ } ++ } ++ ++ zend_llist_dprot_end_write(); ++} ++ ++static void zend_llist_check_destructor(llist_dtor_func_t pDestructor) ++{ ++ unsigned long value; ++ ++ if (pDestructor == NULL || pDestructor == ZVAL_PTR_DTOR) { ++ return; ++ } ++ ++ zend_llist_dprot_begin_read(); ++ ++ if (zend_llist_dprot_counter > 0) { ++ int left, right, mid; ++ zend_bool found = 0; ++ ++ value = (unsigned long) pDestructor; ++ left = 0; ++ right = zend_llist_dprot_counter-1; ++ ++ while (left < right) { ++ mid = (right - left) >> 1; ++ mid += left; ++ if ((unsigned long)zend_llist_dprot_table[mid] == value) { ++ found = 1; ++ break; ++ } ++ if (value < (unsigned long)zend_llist_dprot_table[mid]) { ++ right = mid-1; ++ } else { ++ left = mid+1; ++ } ++ } ++ if ((unsigned long)zend_llist_dprot_table[left] == value) { ++ found = 1; ++ } ++ ++ if (!found) { ++ zend_llist_dprot_end_read(); ++ ++ zend_suhosin_log(S_MEMORY, "possible memory corruption detected - unknown llist destructor"); ++ if (SUHOSIN_CONFIG(SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR) == 0) { ++ _exit(1); ++ } ++ return; ++ } ++ ++ } else { ++ zend_llist_dprot_end_read(); ++ ++ zend_suhosin_log(S_MEMORY, "possible memory corruption detected - unknown llist destructor"); ++ if (SUHOSIN_CONFIG(SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR) == 0) { ++ _exit(1); ++ } ++ return; ++ } ++ ++ zend_llist_dprot_end_read(); ++} ++#else ++#define zend_llist_add_destructor(pDestructor) do {} while(0) ++#define zend_llist_check_destructor(pDestructor) do {} while(0) ++#endif ++ + ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent) + { + l->head = NULL; +@@ -30,6 +218,7 @@ ZEND_API void zend_llist_init(zend_llist + l->count = 0; + l->size = size; + l->dtor = dtor; ++ zend_llist_add_destructor(dtor); + l->persistent = persistent; + } + +@@ -81,6 +270,7 @@ ZEND_API void zend_llist_prepend_element + } else {\ + (l)->tail = (current)->prev;\ + }\ ++ zend_llist_check_destructor((l)->dtor); \ + if ((l)->dtor) {\ + (l)->dtor((current)->data);\ + }\ +@@ -108,6 +298,7 @@ ZEND_API void zend_llist_destroy(zend_ll + { + zend_llist_element *current=l->head, *next; + ++ zend_llist_check_destructor(l->dtor); + while (current) { + next = current->next; + if (l->dtor) { +@@ -133,6 +324,7 @@ ZEND_API void *zend_llist_remove_tail(ze + zend_llist_element *old_tail; + void *data; + ++ zend_llist_check_destructor((l)->dtor); + if ((old_tail = l->tail)) { + if (old_tail->prev) { + old_tail->prev->next = NULL; +--- a/Zend/zend_operators.c ++++ b/Zend/zend_operators.c +@@ -150,9 +150,14 @@ ZEND_API void convert_scalar_to_number(z + case IS_STRING: + { + char *strval; ++ int strl; + + strval = Z_STRVAL_P(op); +- if ((Z_TYPE_P(op)=is_numeric_string(strval, Z_STRLEN_P(op), &Z_LVAL_P(op), &Z_DVAL_P(op), 1)) == 0) { ++ strl = Z_STRLEN_P(op); ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif ++ if ((Z_TYPE_P(op)=is_numeric_string(strval, strl, &Z_LVAL_P(op), &Z_DVAL_P(op), 1)) == 0) { + ZVAL_LONG(op, 0); + } + STR_FREE(strval); +@@ -184,7 +189,8 @@ ZEND_API void convert_scalar_to_number(z + } else { \ + switch (Z_TYPE_P(op)) { \ + case IS_STRING: \ +- { \ ++ { \ ++ Z_STRLEN(holder) = 0; \ + if ((Z_TYPE(holder)=is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL(holder), &Z_DVAL(holder), 1)) == 0) { \ + ZVAL_LONG(&(holder), 0); \ + } \ +@@ -226,6 +232,7 @@ ZEND_API void convert_scalar_to_number(z + Z_LVAL(holder) = zend_dval_to_lval(Z_DVAL_P(op)); \ + break; \ + case IS_STRING: \ ++ Z_STRLEN(holder) = 0; \ + Z_LVAL(holder) = strtol(Z_STRVAL_P(op), NULL, 10); \ + break; \ + case IS_ARRAY: \ +@@ -268,6 +275,7 @@ ZEND_API void convert_scalar_to_number(z + Z_LVAL(holder) = (Z_DVAL_P(op) ? 1 : 0); \ + break; \ + case IS_STRING: \ ++ Z_STRLEN(holder) = 0; \ + if (Z_STRLEN_P(op) == 0 \ + || (Z_STRLEN_P(op)==1 && Z_STRVAL_P(op)[0]=='0')) { \ + Z_LVAL(holder) = 0; \ +@@ -353,6 +361,9 @@ ZEND_API void convert_to_long_base(zval + { + char *strval = Z_STRVAL_P(op); + ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif + Z_LVAL_P(op) = strtol(strval, NULL, base); + STR_FREE(strval); + } +@@ -413,6 +424,9 @@ ZEND_API void convert_to_double(zval *op + { + char *strval = Z_STRVAL_P(op); + ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif + Z_DVAL_P(op) = zend_strtod(strval, NULL); + STR_FREE(strval); + } +@@ -499,8 +513,14 @@ ZEND_API void convert_to_boolean(zval *o + + if (Z_STRLEN_P(op) == 0 + || (Z_STRLEN_P(op)==1 && Z_STRVAL_P(op)[0]=='0')) { ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif + Z_LVAL_P(op) = 0; + } else { ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif + Z_LVAL_P(op) = 1; + } + STR_FREE(strval); +@@ -614,6 +634,9 @@ static void convert_scalar_to_array(zval + *entry = *op; + INIT_PZVAL(entry); + ++#if SUHOSIN_PATCH ++ Z_STRLEN_P(op) = 0; ++#endif + switch (type) { + case IS_ARRAY: + ALLOC_HASHTABLE(Z_ARRVAL_P(op)); +--- a/Zend/zend_variables.c ++++ b/Zend/zend_variables.c +@@ -34,6 +34,9 @@ ZEND_API void _zval_dtor_func(zval *zval + case IS_CONSTANT: + CHECK_ZVAL_STRING_REL(zvalue); + STR_FREE_REL(zvalue->value.str.val); ++#if SUHOSIN_PATCH ++ zvalue->value.str.len = 0; ++#endif + break; + case IS_ARRAY: + case IS_CONSTANT_ARRAY: { +@@ -78,6 +81,9 @@ ZEND_API void _zval_internal_dtor(zval * + case IS_CONSTANT: + CHECK_ZVAL_STRING_REL(zvalue); + str_free(zvalue->value.str.val); ++#if SUHOSIN_PATCH ++ zvalue->value.str.len = 0; ++#endif + break; + case IS_ARRAY: + case IS_CONSTANT_ARRAY: +--- a/configure.in ++++ b/configure.in +@@ -359,6 +359,7 @@ case $host_alias in + ;; + esac + ++sinclude(main/suhosin_patch.m4) + + dnl Include Zend and TSRM configurations. + dnl ------------------------------------------------------------------------- +@@ -1440,7 +1441,7 @@ PHP_ADD_SOURCES(main, main.c snprintf.c + php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \ + strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c \ + network.c php_open_temporary_file.c php_logos.c \ +- output.c getopt.c) ++ output.c getopt.c suhosin_patch.c ) + + PHP_ADD_SOURCES(main/streams, streams.c cast.c memory.c filter.c \ + plain_wrapper.c userspace.c transports.c xp_socket.c mmap.c \ +@@ -1468,7 +1469,7 @@ PHP_ADD_SOURCES(Zend, \ + zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \ + zend_ini.c zend_qsort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \ + zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c zend_gc.c \ +- zend_closures.c zend_float.c zend_string.c zend_signal.c) ++ zend_closures.c zend_float.c zend_string.c zend_signal.c zend_canary.c zend_alloc_canary.c ) + + if test -r "$abs_srcdir/Zend/zend_objects.c"; then + PHP_ADD_SOURCES(Zend, zend_objects.c zend_object_handlers.c zend_objects_API.c zend_default_classes.c) +--- a/ext/standard/dl.c ++++ b/ext/standard/dl.c +@@ -246,6 +246,23 @@ PHPAPI int php_load_extension(char *file + return FAILURE; + } + } ++ ++#if SUHOSIN_PATCH ++ if (strncmp("suhosin", module_entry->name, sizeof("suhosin")-1) == 0) { ++ void *log_func; ++ /* sucessfully loaded suhosin extension, now check for logging function replacement */ ++ log_func = (void *) DL_FETCH_SYMBOL(handle, "suhosin_log"); ++ if (log_func == NULL) { ++ log_func = (void *) DL_FETCH_SYMBOL(handle, "_suhosin_log"); ++ } ++ if (log_func != NULL) { ++ zend_suhosin_log = log_func; ++ } else { ++ zend_suhosin_log(S_MISC, "could not replace logging function"); ++ } ++ } ++#endif ++ + return SUCCESS; + } + /* }}} */ +--- a/ext/standard/info.c ++++ b/ext/standard/info.c +@@ -785,6 +785,33 @@ PHPAPI void php_print_info(int flag TSRM + + php_info_print_table_end(); + ++ /* Suhosin Patch */ ++ php_info_print_box_start(0); ++ if (expose_php && !sapi_module.phpinfo_as_text) { ++ PUTS("\"Suhosin\n"); ++ } ++ PUTS("This server is protected with the Suhosin Patch "); ++ if (sapi_module.phpinfo_as_text) { ++ PUTS(SUHOSIN_PATCH_VERSION); ++ } else { ++ zend_html_puts(SUHOSIN_PATCH_VERSION, strlen(SUHOSIN_PATCH_VERSION) TSRMLS_CC); ++ } ++ PUTS(!sapi_module.phpinfo_as_text?"
":"\n"); ++ if (sapi_module.phpinfo_as_text) { ++ PUTS("Copyright (c) 2006-2007 Hardened-PHP Project\n"); ++ PUTS("Copyright (c) 2007-2009 SektionEins GmbH\n"); ++ } else { ++ PUTS("Copyright (c) 2006-2007 Hardened-PHP Project\n"); ++ PUTS("Copyright (c) 2007-2009 SektionEins GmbH\n"); ++ } ++ php_info_print_box_end(); ++ + /* Zend Engine */ + php_info_print_box_start(0); + if (expose_php && !sapi_module.phpinfo_as_text) { +--- a/ext/standard/syslog.c ++++ b/ext/standard/syslog.c +@@ -40,6 +40,7 @@ + */ + PHP_MINIT_FUNCTION(syslog) + { ++#if !SUHOSIN_PATCH + /* error levels */ + REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_CS | CONST_PERSISTENT); /* system unusable */ + REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_CS | CONST_PERSISTENT); /* immediate action required */ +@@ -95,6 +96,7 @@ PHP_MINIT_FUNCTION(syslog) + /* AIX doesn't have LOG_PERROR */ + REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/ + #endif ++#endif + BG(syslog_device)=NULL; + + return SUCCESS; +--- a/main/fopen_wrappers.c ++++ b/main/fopen_wrappers.c +@@ -84,13 +84,8 @@ or a tightening during activation/runtim + PHPAPI ZEND_INI_MH(OnUpdateBaseDir) + { + char **p, *pathbuf, *ptr, *end; +-#ifndef ZTS +- char *base = (char *) mh_arg2; +-#else +- char *base = (char *) ts_resource(*((int *) mh_arg2)); +-#endif + +- p = (char **) (base + (size_t) mh_arg1); ++ p = &PG(open_basedir); + + if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN || stage == PHP_INI_STAGE_ACTIVATE || stage == PHP_INI_STAGE_DEACTIVATE) { + /* We're in a PHP_INI_SYSTEM context, no restrictions */ +--- a/main/main.c ++++ b/main/main.c +@@ -92,6 +92,9 @@ + + #include "SAPI.h" + #include "rfc1867.h" ++#if SUHOSIN_PATCH ++#include "suhosin_globals.h" ++#endif + + #if HAVE_MMAP + # if HAVE_UNISTD_H +@@ -473,7 +476,7 @@ PHP_INI_BEGIN() + STD_PHP_INI_ENTRY("extension_dir", PHP_EXTENSION_DIR, PHP_INI_SYSTEM, OnUpdateStringUnempty, extension_dir, php_core_globals, core_globals) + STD_PHP_INI_ENTRY("include_path", PHP_INCLUDE_PATH, PHP_INI_ALL, OnUpdateStringUnempty, include_path, php_core_globals, core_globals) + PHP_INI_ENTRY("max_execution_time", "30", PHP_INI_ALL, OnUpdateTimeout) +- STD_PHP_INI_ENTRY("open_basedir", NULL, PHP_INI_ALL, OnUpdateBaseDir, open_basedir, php_core_globals, core_globals) ++ PHP_INI_ENTRY("open_basedir", NULL, PHP_INI_ALL, OnUpdateBaseDir) + + STD_PHP_INI_BOOLEAN("file_uploads", "1", PHP_INI_SYSTEM, OnUpdateBool, file_uploads, php_core_globals, core_globals) + STD_PHP_INI_ENTRY("upload_max_filesize", "2M", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateLong, upload_max_filesize, php_core_globals, core_globals) +@@ -1884,6 +1887,10 @@ void dummy_invalid_parameter_handler( + } + #endif + ++#if SUHOSIN_PATCH ++PHPAPI void suhosin_startup(); ++#endif ++ + /* {{{ php_module_startup + */ + int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint num_additional_modules) +@@ -1927,6 +1934,10 @@ int php_module_startup(sapi_module_struc + php_win32_init_rng_lock(); + #endif + ++#if SUHOSIN_PATCH ++ suhosin_startup(); ++#endif ++ + module_shutdown = 0; + module_startup = 1; + sapi_initialize_empty_request(TSRMLS_C); +@@ -2051,7 +2062,11 @@ int php_module_startup(sapi_module_struc + REGISTER_MAIN_STRINGL_CONSTANT("PHP_CONFIG_FILE_SCAN_DIR", PHP_CONFIG_FILE_SCAN_DIR, sizeof(PHP_CONFIG_FILE_SCAN_DIR)-1, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_STRINGL_CONSTANT("PHP_SHLIB_SUFFIX", PHP_SHLIB_SUFFIX, sizeof(PHP_SHLIB_SUFFIX)-1, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_STRINGL_CONSTANT("PHP_EOL", PHP_EOL, sizeof(PHP_EOL)-1, CONST_PERSISTENT | CONST_CS); +- REGISTER_MAIN_LONG_CONSTANT("PHP_MAXPATHLEN", MAXPATHLEN, CONST_PERSISTENT | CONST_CS); ++#if SUHOSIN_PATCH ++ REGISTER_MAIN_LONG_CONSTANT("SUHOSIN_PATCH", 1, CONST_PERSISTENT | CONST_CS); ++ REGISTER_MAIN_STRINGL_CONSTANT("SUHOSIN_PATCH_VERSION", SUHOSIN_PATCH_VERSION, sizeof(SUHOSIN_PATCH_VERSION)-1, CONST_PERSISTENT | CONST_CS); ++#endif ++ REGISTER_MAIN_LONG_CONSTANT("PHP_MAXPATHLEN", MAXPATHLEN, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("PHP_INT_MAX", LONG_MAX, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("PHP_INT_SIZE", sizeof(long), CONST_PERSISTENT | CONST_CS); + +--- a/main/php.h ++++ b/main/php.h +@@ -453,6 +453,10 @@ END_EXTERN_C() + #endif + #endif /* !XtOffsetOf */ + ++#if SUHOSIN_PATCH ++#include "suhosin_patch.h" ++#endif ++ + #endif + + /* +--- php-5.4.6/main/php_logos.c~ 2012-08-23 12:04:01.000000000 +0300 ++++ php-5.4.6/main/php_logos.c 2012-08-23 12:04:39.401608052 +0300 +@@ -50,6 +50,10 @@ PHPAPI int php_unregister_info_logo(char + return zend_hash_del(&phpinfo_logo_hash, logo_string, strlen(logo_string)); + } + ++#if SUHOSIN_PATCH ++#include "suhosin_logo.h" ++#endif ++ + int php_init_info_logos(void) + { + if(zend_hash_init(&phpinfo_logo_hash, 0, NULL, NULL, 1)==FAILURE) +@@ -64,6 +64,10 @@ + php_register_info_logo(ZEND_LOGO_GUID , "image/gif", zend_logo , sizeof(zend_logo)); + php_register_info_logo(PLD_LOGO_GUID , "image/png", pld_logo , sizeof(pld_logo)); + ++#if SUHOSIN_PATCH ++ php_register_info_logo(SUHOSIN_LOGO_GUID, "image/jpeg", suhosin_logo , sizeof(suhosin_logo)); ++#endif ++ + return SUCCESS; + } + +--- a/main/snprintf.c ++++ b/main/snprintf.c +@@ -782,6 +782,10 @@ static int format_converter(register buf + */ + switch (*fmt) { + case 'Z': ++#if SUHOSIN_PATCH ++ zend_suhosin_log(S_MISC, "'Z' specifier within format string"); ++ goto skip_output; ++#else + zvp = (zval*) va_arg(ap, zval*); + zend_make_printable_zval(zvp, &zcopy, &free_zcopy); + if (free_zcopy) { +@@ -792,6 +796,7 @@ static int format_converter(register buf + if (adjust_precision && precision < s_len) { + s_len = precision; + } ++#endif + break; + case 'u': + switch(modifier) { +@@ -1093,7 +1098,11 @@ static int format_converter(register buf + + + case 'n': ++#if SUHOSIN_PATCH ++ zend_suhosin_log(S_MISC, "'n' specifier within format string"); ++#else + *(va_arg(ap, int *)) = cc; ++#endif + goto skip_output; + + /* +--- a/main/spprintf.c ++++ b/main/spprintf.c +@@ -390,6 +390,10 @@ static void xbuf_format_converter(smart_ + */ + switch (*fmt) { + case 'Z': ++#if SUHOSIN_PATCH ++ zend_suhosin_log(S_MISC, "'Z' specifier within format string"); ++ goto skip_output; ++#else + zvp = (zval*) va_arg(ap, zval*); + zend_make_printable_zval(zvp, &zcopy, &free_zcopy); + if (free_zcopy) { +@@ -400,6 +404,7 @@ static void xbuf_format_converter(smart_ + if (adjust_precision && precision < s_len) { + s_len = precision; + } ++#endif + break; + case 'u': + switch(modifier) { +@@ -700,7 +705,11 @@ static void xbuf_format_converter(smart_ + + + case 'n': ++#if SUHOSIN_PATCH ++ zend_suhosin_log(S_MISC, "'n' specifier within format string"); ++#else + *(va_arg(ap, int *)) = xbuf->len; ++#endif + goto skip_output; + + /* +--- /dev/null ++++ b/main/suhosin_globals.h +@@ -0,0 +1,61 @@ ++/* ++ +----------------------------------------------------------------------+ ++ | Suhosin-Patch for PHP | ++ +----------------------------------------------------------------------+ ++ | Copyright (c) 2004-2009 Stefan Esser | ++ +----------------------------------------------------------------------+ ++ | This source file is subject to version 2.02 of the PHP license, | ++ | that is bundled with this package in the file LICENSE, and is | ++ | available at through the world-wide-web at | ++ | http://www.php.net/license/2_02.txt. | ++ | If you did not receive a copy of the PHP license and are unable to | ++ | obtain it through the world-wide-web, please send a note to | ++ | license@php.net so we can mail you a copy immediately. | ++ +----------------------------------------------------------------------+ ++ | Author: Stefan Esser | ++ +----------------------------------------------------------------------+ ++ */ ++ ++#ifndef SUHOSIN_GLOBALS_H ++#define SUHOSIN_GLOBALS_H ++ ++typedef struct _suhosin_patch_globals suhosin_patch_globals_struct; ++ ++#ifdef ZTS ++# define SPG(v) TSRMG(suhosin_patch_globals_id, suhosin_patch_globals_struct *, v) ++extern int suhosin_patch_globals_id; ++#else ++# define SPG(v) (suhosin_patch_globals.v) ++extern struct _suhosin_patch_globals suhosin_patch_globals; ++#endif ++ ++ ++struct _suhosin_patch_globals { ++ /* logging */ ++ int log_syslog; ++ int log_syslog_facility; ++ int log_syslog_priority; ++ int log_sapi; ++ int log_script; ++ int log_phpscript; ++ char *log_scriptname; ++ char *log_phpscriptname; ++ zend_bool log_phpscript_is_safe; ++ zend_bool log_use_x_forwarded_for; ++ ++ /* memory manager canary protection */ ++ unsigned int canary_1; ++ unsigned int canary_2; ++ unsigned int canary_3; ++ unsigned int dummy; ++}; ++ ++ ++#endif /* SUHOSIN_GLOBALS_H */ ++ ++/* ++ * Local variables: ++ * tab-width: 4 ++ * c-basic-offset: 4 ++ * End: ++ */ +--- /dev/null ++++ b/main/suhosin_logo.h +@@ -0,0 +1,178 @@ ++static unsigned char suhosin_logo[] = ++ "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48" ++ "\x00\x48\x00\x00\xff\xe1\x00\x16\x45\x78\x69\x66\x00\x00\x4d\x4d" ++ "\x00\x2a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x43" ++ "\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" ++ "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" ++ "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" ++ "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" ++ "\x01\xff\xc0\x00\x0b\x08\x00\x27\x00\x71\x01\x01\x22\x00\xff\xc4" ++ "\x00\x1e\x00\x00\x02\x02\x02\x03\x01\x01\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x09\x06\x08\x05\x07\x02\x03\x0a\x01\x04\xff\xc4" ++ "\x00\x32\x10\x00\x01\x04\x03\x00\x02\x00\x05\x01\x05\x09\x01\x00" ++ "\x00\x00\x00\x05\x02\x03\x04\x06\x01\x07\x08\x00\x09\x11\x12\x13" ++ "\x14\x21\x15\x0a\x16\x31\x56\x96\x17\x18\x19\x23\x32\x41\x58\x98" ++ "\xd4\xd6\xff\xda\x00\x08\x01\x01\x00\x00\x3f\x00\xf4\xc1\xe1\xe5" ++ "\x69\xe9\x3e\xb9\xd1\x7c\x8a\x2e\x9d\x66\xe8\x3b\x29\x4d\x7f\x46" ++ "\xba\x58\x55\x54\x8d\xb1\x5f\xaa\xd9\x8d\x51\x2b\xb6\x27\x5a\x69" ++ "\xd1\x43\xaf\x16\x1a\xf0\xb2\xb1\xe9\x6d\x9f\xc2\xa4\x36\x18\xb5" ++ "\x85\x10\x41\xbe\xfc\x09\xac\x49\x29\x11\xd4\x32\x97\xec\x08\x13" ++ "\xc1\x2d\x20\xc3\x59\xeb\x26\x05\xd8\x6b\x76\x31\x43\x8f\x57\xcf" ++ "\x84\x9f\x14\xa8\x53\x81\x0b\xc3\x64\x80\xa3\x02\x0a\x41\x75\xf8" ++ "\x44\x85\x93\x81\x22\x3c\xd8\x13\xe1\xbe\xf4\x59\x91\x1f\x6a\x44" ++ "\x77\x5c\x69\xc4\x2f\x39\x5f\x0f\x2a\x8d\xeb\xba\xf8\xc3\x56\x6c" ++ "\x3b\x36\xa7\xda\xbd\x4d\xa1\xb5\x4e\xc6\xa7\xa4\x3a\xec\x15\x2d" ++ "\xa5\xb3\xea\x5a\xdc\xac\x46\xac\x01\x60\xd8\x43\xc8\x8e\x8b\xb1" ++ "\x40\x4c\x95\x8b\x34\x41\x28\x52\x91\x28\x43\xd3\xa3\xb6\xa7\x55" ++ "\x15\xe7\x5a\x96\xcb\xf1\xda\xe5\x55\xee\xfe\x1e\xbd\xd9\x41\xd3" ++ "\x28\xfd\x97\xca\x57\x2b\x85\x9c\xa4\x30\x95\xaa\xa5\x57\xa2\x35" ++ "\x15\x86\xcb\x61\x34\x41\xe4\xc7\x80\x20\x18\x21\x17\x09\x85\x0b" ++ "\x14\x9d\x21\x68\x62\x1c\x08\x11\x64\x4b\x92\xf2\xd2\xd3\x2d\x2d" ++ "\x6a\xc2\x73\x6b\x3c\x3c\x8b\x9e\xbc\x52\xaa\xa4\xab\x81\x6c\xf6" ++ "\xfa\xbd\x70\xc5\xc6\x7b\xc2\xaa\x22\x4f\x58\x04\x87\x25\x6a\x27" ++ "\x1d\xa4\x3d\x20\x75\x72\x01\x09\x71\xe5\x1c\x9e\xc3\x2e\x36\xf3" ++ "\xd0\xc6\x35\x2a\x43\x4d\x2d\x0e\x2d\xb4\xa1\x49\xce\x65\x1e\x52" ++ "\x9e\xa1\xf6\x09\xcc\xdc\x63\x66\xa8\x01\xe9\x3b\x0d\xd7\x5a\x85" ++ "\xbb\xc5\x65\xc0\x7b\x2e\x46\xa9\xd9\x56\x1d\x4c\x92\x72\x26\x4e" ++ "\x86\xd5\x68\xae\xc4\xaa\x55\xce\xd7\x83\x59\xb3\x81\xee\xce\x74" ++ "\x39\x39\x31\x9f\x8a\x25\xe8\xa5\xa5\xe5\x81\xf2\x11\x23\xcb\xa1" ++ "\x1e\x43\x12\xe3\xb1\x2a\x2b\xcd\xc8\x8d\x25\x96\xa4\x47\x7d\x95" ++ "\xa5\xc6\x9f\x61\xe4\x25\xc6\x5e\x69\xc4\xe7\x29\x5b\x6e\xb6\xa4" ++ "\xad\x0b\x4e\x72\x95\x25\x58\x56\x33\x9c\x67\xce\xef\x0f\x17\xbf" ++ "\x4c\x7b\x2d\xe6\xfe\x76\x35\x27\x5a\x07\x97\x67\xe8\xae\x8d\x71" ++ "\x0f\xb2\x13\x99\xb9\xbc\x14\xad\xb3\xb7\xe6\x11\x6f\xe0\xda\x58" ++ "\xb1\x08\xac\xa6\x6c\x2d\x7f\x05\xb7\x56\xd2\xe6\xcf\xbb\x4d\x0c" ++ "\xe3\x50\xb2\xec\x91\xf0\x4a\xb8\xd6\x22\xb8\xa7\xf6\x67\xaf\xcf" ++ "\x63\x7e\xd7\xe7\x42\xd8\xbd\xc3\x71\xa1\xf2\x7e\x9b\xa8\x97\x83" ++ "\x6e\xd1\xdc\x4b\x06\x11\x2d\xae\x26\x61\x98\x72\x10\xf4\x42\x5d" ++ "\x20\x4a\xa3\x73\xd7\xf2\xcd\x3c\x48\x32\xe4\x03\x9f\x80\x37\x08" ++ "\x36\x11\xd0\xcb\x97\x6c\x08\xed\x6d\x33\x24\xa2\x1b\xb4\x77\xdf" ++ "\x61\x5d\x5f\xc1\x43\xc2\x82\xeb\x0f\x5d\x84\x08\x68\xaa\xa4\x01" ++ "\xe1\x19\xdf\xbc\x31\x65\xfe\xd1\xf5\x7d\x7a\xb2\x2a\x33\x50\x21" ++ "\x2a\x56\x9d\xb1\x81\xab\xdb\x35\x78\x30\x83\xd9\x89\x1d\x31\xac" ++ "\x96\x14\x07\x61\xbc\x20\x68\x42\x85\x33\x19\xac\xbe\xdb\x34\x56" ++ "\xf1\xd5\xfd\x29\xa9\x28\xdb\xcb\x4c\x5a\x23\xdc\xf5\x96\xc5\x10" ++ "\xa3\x35\x5b\x14\x68\xd3\x61\x62\x64\x76\x26\xcb\x17\x3e\x34\x98" ++ "\x04\xa3\xc4\x20\x38\x90\x92\xe3\xc8\x07\x2c\x36\x74\x66\x26\x0e" ++ "\x29\x02\x64\x29\x2d\x21\xe6\x16\x9c\x6b\xce\xa3\x89\xd9\x4f\xd3" ++ "\xc4\xbd\xc5\x87\x79\x9c\x65\xf6\x39\x45\x60\xe8\xce\x9e\xab\x6d" ++ "\x13\x15\x22\xe1\x5e\x4b\x38\x42\xc4\x1e\xd5\x76\xe0\xc5\xeb\x85" ++ "\x07\x2d\x0f\xb8\xb6\xa6\xd6\x6d\x71\x0d\xa2\x43\x4c\x25\xea\xfa" ++ "\xa1\xae\x4c\xe4\x7d\xbd\x76\xa9\xfb\x06\xc2\x83\x42\xeb\xad\xe7" ++ "\xe9\x5f\x68\x6f\xba\xfb\x2f\x07\xce\xb8\x13\xc1\x9b\xeb\xb0\x76" ++ "\x45\x57\x28\x7b\xea\xbe\x0f\xf4\x30\x7b\xa0\xed\xe4\x22\x93\x21" ++ "\xfc\xbc\xe0\xb9\x75\xc1\x4f\xfc\xef\xb6\xfa\xa1\xfc\x64\xa1\x4a" ++ "\x82\xc7\x33\xad\x75\xed\x82\xbd\x3d\xdb\xf7\xa8\xbe\x5e\xbb\x36" ++ "\x62\x04\x9a\x2e\xc5\xd9\x9e\x9c\x3a\x0b\x98\x0b\x57\xac\xf1\x24" ++ "\x62\x58\x83\x15\x5b\xa6\xf2\xda\x34\x70\x03\xce\x0f\x93\x1b\x12" ++ "\xc7\xce\x54\x87\x33\x15\xd6\x53\x25\x1f\x2a\x90\x87\x12\xe3\x78" ++ "\xef\x55\x77\x4d\x4a\xd8\x7e\xef\xd2\xfd\xd1\xaf\x3a\xaf\x55\xdb" ++ "\x6a\x2d\x3d\x42\xac\x51\x79\xee\x91\xab\xe1\x05\x2d\x3c\x80\xa2" ++ "\x43\xad\x22\x2e\xd5\x33\x13\xa4\x9e\x00\xe0\x04\x10\x84\xc8\xf2" ++ "\x19\x30\x92\x1f\xaa\xc3\x28\xc9\x76\x30\x3f\xe9\x10\x61\x5e\x79" ++ "\xd5\xf7\xdf\xd0\x54\xdb\xae\xb6\xae\xfa\xe8\xa3\x57\xe0\x6c\x2d" ++ "\xf7\xbd\x49\xd6\x6e\x76\x79\xcc\x54\x0c\x5f\xff\x00\xbb\x06\x98" ++ "\xa6\x9e\x89\x61\xb4\x6f\xc3\xe3\x6a\xc2\x4f\x59\x03\xc9\x80\x2c" ++ "\x59\x24\x44\x70\x38\xd5\x96\x6a\x9e\x8b\x81\x64\xe5\xbc\xa0\x3c" ++ "\x33\xaf\x17\x9d\xff\x00\x71\x1a\xd1\x3a\x80\x66\xb3\xd9\x31\x77" ++ "\x0d\x12\xbd\xae\x29\xb5\x6a\xd6\xcf\x8d\x68\x87\x75\xcd\xe8\x65" ++ "\x5a\xbe\x3c\x04\x7b\x34\xdb\x54\x19\xa4\x63\x9c\x2a\x5d\x23\xbe" ++ "\xf4\xb1\x1c\x4d\x90\xec\x92\x2f\x49\x71\xf7\x14\xf2\x97\x9f\x15" ++ "\x57\xed\x13\x21\x2a\xf5\x33\xd1\x2a\x52\x52\xac\xb7\x62\xd1\xcb" ++ "\x46\x73\x8c\x67\x28\x56\x77\x86\xbf\x6f\x2a\x4e\x73\xfe\x95\x65" ++ "\x0b\x5a\x3e\x38\xfc\xfc\xaa\x56\x3f\x86\x73\xe3\xb9\x4a\x52\x84" ++ "\xa5\x08\x4e\x12\x94\x27\x09\x4a\x53\x8c\x61\x29\x4a\x71\xf0\x4a" ++ "\x53\x8c\x7e\x31\x8c\x63\x18\xc6\x31\x8f\xc6\x31\xf8\xc7\x9f\x7c" ++ "\xd5\xbb\xae\x5e\xe2\x1f\xab\x6e\x24\x34\x00\x8a\x25\x83\x70\x40" ++ "\x1c\xcc\xda\x45\x7f\x66\x4e\x30\x2e\x94\x7e\x74\x49\xf0\xe4\x4e" ++ "\x06\x5c\xa8\x2f\x89\x21\x2e\x98\x0e\xd9\x21\xc2\x0b\x21\x0f\xc4" ++ "\x16\x6e\x48\xd9\xe4\xe3\x4a\x19\x1e\x64\x67\x54\xff\x00\x3a\x6d" ++ "\x4f\x62\xb5\x00\x4a\xaa\x51\xfd\x2d\xe8\x0e\x6c\xaf\xc6\x7d\x6d" ++ "\xc8\x88\xc7\x67\xea\x8a\x58\x02\x73\xe3\x65\x4d\xc9\x24\xc0\x3d" ++ "\x57\xa3\x2e\x53\x16\x99\x4f\xe5\xe7\x19\x97\x3e\x3b\xcf\xc9\x4b" ++ "\x99\x7f\x33\x25\xa5\xdf\xba\x77\x2b\xd3\x3e\xc2\x7b\x8b\x94\x07" ++ "\xe9\x52\x5b\x43\x87\x34\x14\x86\x37\xcf\x41\x6b\x8e\x6a\xa5\x22" ++ "\xab\xdb\x96\xa2\xcf\x46\xd8\x9b\x45\x93\xef\xd6\xdf\x3e\x99\x9c" ++ "\x7e\x29\x10\x6b\x6c\xa2\xb8\x43\x05\x09\x44\x70\x8c\xb8\xaa\x54" ++ "\x7c\x30\x36\x5e\x1c\x5e\x5b\x9f\x6c\x0d\x81\xee\xa0\x93\x8d\x67" ++ "\x55\xf3\x87\xaf\xaa\x6b\x58\xf9\xbe\xb2\x36\x07\x42\x6e\xbd\x96" ++ "\xe3\x9f\x1f\x8f\xc9\xf4\x9d\xae\x6a\x7d\x4c\x96\xbe\x5f\xc7\xcd" ++ "\xf3\xb2\xf7\xcd\xf0\xcf\xc3\xe4\xf8\xfe\x37\x4f\x1c\x4d\xf6\x40" ++ "\xf1\x6b\x7c\x4e\xe0\xa6\x71\xad\x56\xa7\x1c\x5c\x15\x6b\xfc\xf3" ++ "\x01\x5d\xac\xf1\x75\x9a\x72\x6b\xaa\x28\xc5\x88\x6d\xfb\x33\x85" ++ "\xe0\x4e\x61\xab\xeb\x31\x2c\x71\x08\x73\x11\x3b\xfc\xb5\xc0\x96" ++ "\xcc\x87\x24\x44\xb5\x9b\x9e\xb3\x71\xba\xe9\xed\xb1\x4e\xd7\x76" ++ "\x6c\xd2\xb6\x05\xb7\x5a\xde\xeb\x34\x5b\x96\x16\xfb\x59\xa9\x5c" ++ "\x4f\x55\xca\x8a\xac\x59\xb0\xe4\x54\x39\x25\xbc\x81\x37\x2a\x09" ++ "\x5f\x9e\x3b\x6b\x7d\x1f\x69\xf3\x34\x85\x39\x84\xa7\x28\x0b\xd3" ++ "\xfd\xfb\x4b\x7a\xea\xe7\xd2\x3c\xd3\xda\x15\x68\xbc\x73\xd3\x22" ++ "\x6f\xd7\x72\x5b\x2b\x66\xee\xa8\x0d\x54\xe8\x5b\xf9\x92\x96\x92" ++ "\x93\xea\x97\x4a\xc7\x43\x10\x46\x35\xc5\xc0\x60\x8a\xe4\xc1\xb5" ++ "\x36\xc6\xae\xed\xf7\x70\xa5\x86\x99\x3d\x91\xf8\xfd\x4e\x53\xeb" ++ "\xbb\xbd\x6d\xec\x8f\xd7\x89\x3d\x31\x7f\xd7\x78\xba\x50\xbb\x74" ++ "\x9d\xf6\xac\x4e\xb9\x03\x9c\x79\xd5\xe1\xbd\x17\x68\xd9\x13\x0b" ++ "\x45\x75\x88\x00\x1d\x1f\xae\x73\x6a\x1d\x5c\x6e\x44\x9f\xa6\xfa" ++ "\x4e\xd8\x25\x8b\xc0\xbc\xb2\x99\xe3\x17\x24\xb3\x23\xe2\x48\x8b" ++ "\xfa\x22\xe7\x7e\x8f\xe6\x3f\x5f\x55\x0d\x75\xd3\x51\x0b\xd7\xed" ++ "\xd3\x6f\x97\x3b\x85\x42\x80\x7e\x5f\xdc\x1b\xd6\xba\xee\xc4\x80" ++ "\xce\x06\xa9\x15\x8c\x97\x5f\x40\x69\xb2\x4d\xc5\xb2\x5c\x1e\x01" ++ "\x87\x7e\xe0\x36\x6d\x78\x80\x4e\x3c\x02\xec\x90\x1d\x11\x81\x74" ++ "\xa5\x8b\xa4\xa0\x56\x06\xd5\x79\x72\x85\x57\x3b\xb2\x2e\xae\x90" ++ "\x18\x8d\x91\xb2\x0e\x44\x19\xaa\xb4\xcc\x08\xed\x46\xfa\xd7\x2b" ++ "\x78\x58\x72\x5d\xbb\x5e\x49\xe7\xee\xf3\x8a\x9d\x22\xa4\x19\xc8" ++ "\xe7\x08\xc3\x90\x9b\x35\x9a\xa4\x25\x8c\x4b\x9b\xa7\xf8\xbf\x81" ++ "\xf5\xdf\x22\x66\xf1\x7e\x9f\x66\x3d\xbb\xfa\x73\x73\x4d\xfd\x67" ++ "\x7b\xf4\xce\xc3\x62\x2e\x6f\xbb\x0c\xa2\xdc\x69\xfc\x8a\x17\x0e" ++ "\x3a\x9e\x83\x46\xd7\xe3\x5e\x65\x86\xc0\x51\x00\xbb\x91\xe3\xe1" ++ "\xc1\x16\xc4\xe9\x65\x5c\x14\x3e\x44\x6a\x6b\xd1\x1e\xb0\x36\xdd" ++ "\x0b\x7d\x8a\xeb\xaf\x58\x5b\x64\x3f\x38\xed\x52\x76\xe8\x46\xf7" ++ "\x86\x84\xb3\x93\xb1\x0b\xe5\xfd\xfd\x0d\xe9\x6d\xe4\xf1\x1b\x1d" ++ "\x56\xb4\x34\xe4\x6a\xf5\xa4\x9c\x2c\xc9\x64\x94\xc1\xf5\x79\x6d" ++ "\x12\x96\xf3\x47\xc5\x48\xa8\xdb\xd8\x95\x64\x29\xcf\xf6\x88\xf1" ++ "\x95\x7a\x98\xe8\xbc\x27\x19\xce\x73\x61\xd1\xb8\xc6\x31\x8c\xe7" ++ "\x39\xce\x77\x9e\xbc\xc6\x31\x8c\x63\xf3\x9c\xe7\x39\xc6\x31\x8f" ++ "\xf7\xce\x7e\x1e\x3b\x7f\x0f\x0f\x0f\x13\x57\xb9\x0a\xe1\x0b\x64" ++ "\x5f\x58\x40\xc6\xc7\x7a\x4b\xf2\x3d\xbc\x71\xf4\xa7\xd2\xca\x14" ++ "\xe2\x98\x1a\x30\x1e\xe0\x26\x5a\x6a\xf0\x9c\x67\x38\x66\x00\xb8" ++ "\x72\xe6\xbe\xac\xfe\x12\xd3\x0b\x56\x73\x8c\x63\xc7\x2b\xe1\xe2" ++ "\xe8\xdd\x7b\xff\x00\xd8\xe5\x23\x6c\xce\xa8\x69\xcf\x5e\x3a\xef" ++ "\x77\xea\xe5\xab\x0e\x82\xdb\xd9\xed\x7a\x9e\xb8\x6d\x51\x32\xdb" ++ "\x79\xc3\x36\x9a\x2d\xa3\x50\x39\x65\x0a\x63\x0e\xe5\xd4\x39\x12" ++ "\xbf\x8b\x98\xa4\xa1\x2d\xad\xb3\xcf\x65\x6a\x43\x78\xb3\x3b\x07" ++ "\xd8\xd5\xea\xae\x76\xad\x6f\xf5\xff\x00\xca\x93\xab\x96\xb0\x64" ++ "\xeb\xd6\x4a\xd5\x87\xba\xec\x24\x60\x97\x06\x76\x03\xe3\x4c\x07" ++ "\x29\x11\x8e\x34\x25\x02\x64\x29\xf0\x25\x48\x85\x3a\x33\x8b\x7a" ++ "\x3c\x86\x1e\x75\xa5\x61\xc6\x97\x9f\x8d\x25\xf5\xc9\xcd\xde\xc9" ++ "\x7d\x77\xf2\xc8\x7e\x70\xaf\x73\x5f\x2d\xec\xa2\x51\x2d\x96\xfb" ++ "\x89\xad\x80\x57\xb2\x36\x1d\x7d\x83\x45\xac\xf3\xdb\xcc\x6c\x31" ++ "\x4f\xcf\x30\x58\xd0\x12\x28\x90\x50\x42\x86\xfb\x48\x16\x3c\xc5" ++ "\x9c\xf8\xe7\xcc\x29\x88\xb3\x4a\x4b\x4e\x6c\xbc\xdb\xc7\xbb\xe9" ++ "\xb6\xa0\x8b\x11\xa1\x7d\x73\xd7\xe9\xbf\x7e\xc2\x6c\x10\x8d\xee" ++ "\x9d\xef\x63\x3a\xe0\xf5\xbe\x8c\x3e\xa1\xc7\xc5\xd1\x00\x44\x1e" ++ "\xf3\x51\xf2\xe2\xb0\xe3\xb5\x13\x7f\x32\xf1\x8c\xa6\x22\xfe\x1f" ++ "\x49\x4d\xbb\xcf\x3a\x5d\xed\x4c\xd2\xfc\x85\xed\x23\xd6\xc7\x50" ++ "\xb6\x5b\x3a\x16\x83\xb8\x6f\xfd\x32\x3f\xaa\x36\x34\xbb\xf5\x96" ++ "\xa9\xab\xcf\x9f\x8f\xac\xc3\xca\xd5\x8b\xd8\x48\x9e\x79\xaa\x30" ++ "\x87\xca\x58\x4d\x59\x96\xb9\x4f\xc5\x1b\x1c\xd2\xda\x5b\xe6\x57" ++ "\x29\xa1\x28\x7a\x2b\x5b\xff\x00\x12\x2f\x5e\x3f\xf3\xbb\x8e\x7f" ++ "\xec\xc6\x98\xff\x00\xed\x3c\xa6\xdd\xa9\xdc\x7e\xa0\xf7\xd6\x99" ++ "\x31\xa2\xf7\xaf\x6b\xe9\x82\x74\x4b\x3d\x8f\x5e\x58\x0b\x33\xab" ++ "\xef\xc3\xaf\x84\x64\xb9\xae\xb6\x25\x5f\x62\x8f\x1c\xe3\xf4\x51" ++ "\xb7\x96\xe3\x0e\x30\x42\xa9\x18\x39\xbf\x9e\x2a\x1f\x74\x19\x02" ++ "\x2d\x43\x93\x06\x63\xb1\xa7\x47\x6a\xfa\x9b\x6c\xeb\xbd\xe9\xae" ++ "\x6a\x7b\x6f\x53\x5a\x60\x5d\xb5\xcd\xe8\x67\xeb\x35\x3b\x48\xc6" ++ "\xa6\xb3\x04\xc8\xdf\xb8\x7e\x26\x64\xb0\xc9\x18\xb0\xa7\x33\xf2" ++ "\x4a\x8b\x22\x3b\x8d\x4b\x89\x1d\xf6\x9d\x65\xc4\x38\xd2\x54\x9c" ++ "\xe3\xcd\x89\xe1\xe1\xe6\x3e\x70\x81\x45\x1d\x18\xf9\x31\x83\xc8" ++ "\xbe\x14\x82\x4b\x87\x7a\x74\x28\xd2\xdd\x12\x55\x30\xe6\x0e\x49" ++ "\x31\x8e\x48\x69\xc5\xc0\x20\x91\xe4\x48\x41\x4c\xd8\xb9\x6a\x4e" ++ "\x21\xce\x99\x1b\x0e\xfd\x09\x4f\xa1\x79\x0f\x0f\x0f\x0f\x0f\x0f" ++ "\x0f\x3f\x3c\xb8\x71\x27\xc7\x72\x24\xe8\xb1\xa6\xc5\x7b\x18\xc3" ++ "\xb1\xa5\xb0\xd4\x98\xee\xe3\x19\xc6\x71\x87\x19\x79\x2b\x6d\x78" ++ "\xc6\x71\x8c\xe3\x0a\x4e\x71\x8c\xe3\x19\xfe\x38\xf2\x3b\xfb\x8b" ++ "\x48\xfe\x4e\xaa\xff\x00\x4f\x08\xff\x00\xc7\xe1\xfb\x8b\x48\xfe" ++ "\x4e\xaa\xff\x00\x4f\x08\xff\x00\xc7\xe4\x95\x86\x18\x8a\xcb\x31" ++ "\xa3\x32\xd4\x78\xf1\xdb\x43\x2c\x47\x61\xb4\x32\xcb\x2c\xb4\x9c" ++ "\x21\xb6\x99\x69\xbc\x25\xb6\xdb\x6d\x18\xc2\x10\xda\x12\x94\xa1" ++ "\x38\xc2\x53\x8c\x63\x18\xc7\x9d\xbe\x7f\xff\xd9" ++ ; +--- /dev/null ++++ b/main/suhosin_patch.c +@@ -0,0 +1,470 @@ ++/* ++ +----------------------------------------------------------------------+ ++ | Suhosin Patch for PHP | ++ +----------------------------------------------------------------------+ ++ | Copyright (c) 2004-2010 Stefan Esser | ++ +----------------------------------------------------------------------+ ++ | This source file is subject to version 2.02 of the PHP license, | ++ | that is bundled with this package in the file LICENSE, and is | ++ | available at through the world-wide-web at | ++ | http://www.php.net/license/2_02.txt. | ++ | If you did not receive a copy of the PHP license and are unable to | ++ | obtain it through the world-wide-web, please send a note to | ++ | license@php.net so we can mail you a copy immediately. | ++ +----------------------------------------------------------------------+ ++ | Author: Stefan Esser | ++ +----------------------------------------------------------------------+ ++ */ ++/* $Id: suhosin_patch.c,v 1.2 2004/11/21 09:38:52 ionic Exp $ */ ++ ++#include "php.h" ++ ++#include ++#include ++#include ++ ++#if HAVE_UNISTD_H ++#include ++#endif ++#include "SAPI.h" ++#include "php_globals.h" ++ ++#if SUHOSIN_PATCH ++ ++#ifdef HAVE_SYS_SOCKET_H ++#include ++#endif ++ ++#if defined(PHP_WIN32) || defined(__riscos__) || defined(NETWARE) ++#undef AF_UNIX ++#endif ++ ++#if defined(AF_UNIX) ++#include ++#endif ++ ++#define SYSLOG_PATH "/dev/log" ++ ++#ifdef PHP_WIN32 ++static HANDLE log_source = 0; ++#endif ++ ++#include "snprintf.h" ++ ++#include "suhosin_patch.h" ++ ++#ifdef ZTS ++#include "suhosin_globals.h" ++int suhosin_patch_globals_id; ++#else ++struct _suhosin_patch_globals suhosin_patch_globals; ++#endif ++ ++static char *suhosin_config = NULL; ++ ++static zend_intptr_t SUHOSIN_POINTER_GUARD = 0; ++ ++static void php_security_log(int loglevel, char *fmt, ...); ++ ++static void suhosin_patch_globals_ctor(suhosin_patch_globals_struct *suhosin_patch_globals TSRMLS_DC) ++{ ++ memset(suhosin_patch_globals, 0, sizeof(*suhosin_patch_globals)); ++} ++ ++ZEND_API char suhosin_get_config(int element) ++{ ++ return ((char *)SUHOSIN_MANGLE_PTR(suhosin_config))[element]; ++} ++ ++static void suhosin_set_config(int element, char value) ++{ ++ ((char *)SUHOSIN_MANGLE_PTR(suhosin_config))[element] = value; ++} ++ ++static void suhosin_read_configuration_from_environment() ++{ ++ char *tmp; ++ ++ /* check if canary protection should be activated or not */ ++ tmp = getenv("SUHOSIN_MM_USE_CANARY_PROTECTION"); ++ /* default to activated */ ++ suhosin_set_config(SUHOSIN_MM_USE_CANARY_PROTECTION, 1); ++ if (tmp) { ++ int flag = zend_atoi(tmp, 0); ++ suhosin_set_config(SUHOSIN_MM_USE_CANARY_PROTECTION, flag); ++ } ++ ++ /* check if free memory should be overwritten with 0xFF or not */ ++ tmp = getenv("SUHOSIN_MM_DESTROY_FREE_MEMORY"); ++ /* default to deactivated */ ++ suhosin_set_config(SUHOSIN_MM_DESTROY_FREE_MEMORY, 0); ++ if (tmp) { ++ int flag = zend_atoi(tmp, 0); ++ suhosin_set_config(SUHOSIN_MM_DESTROY_FREE_MEMORY, flag); ++ } ++ ++ /* check if canary violations should be ignored */ ++ tmp = getenv("SUHOSIN_MM_IGNORE_CANARY_VIOLATION"); ++ /* default to NOT ignore */ ++ suhosin_set_config(SUHOSIN_MM_IGNORE_CANARY_VIOLATION, 0); ++ if (tmp) { ++ int flag = zend_atoi(tmp, 0); ++ suhosin_set_config(SUHOSIN_MM_IGNORE_CANARY_VIOLATION, flag); ++ } ++ ++ /* check if invalid hashtable destructors should be ignored */ ++ tmp = getenv("SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR"); ++ /* default to NOT ignore */ ++ suhosin_set_config(SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR, 0); ++ if (tmp) { ++ int flag = zend_atoi(tmp, 0); ++ suhosin_set_config(SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR, flag); ++ } ++ ++ /* check if invalid linkedlist destructors should be ignored */ ++ tmp = getenv("SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR"); ++ /* default to NOT ignore */ ++ suhosin_set_config(SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR, 0); ++ if (tmp) { ++ int flag = zend_atoi(tmp, 0); ++ suhosin_set_config(SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR, flag); ++ } ++ ++ suhosin_set_config(SUHOSIN_CONFIG_SET, 1); ++} ++ ++static void suhosin_write_protect_configuration() ++{ ++ /* check return value of mprotect() to ensure memory is read only now */ ++ if (mprotect(SUHOSIN_MANGLE_PTR(suhosin_config), sysconf(_SC_PAGESIZE), PROT_READ) != 0) { ++ perror("suhosin"); ++ _exit(1); ++ } ++} ++ ++PHPAPI void suhosin_startup() ++{ ++#ifdef ZTS ++ ts_allocate_id(&suhosin_patch_globals_id, sizeof(suhosin_patch_globals_struct), (ts_allocate_ctor) suhosin_patch_globals_ctor, NULL); ++#else ++ suhosin_patch_globals_ctor(&suhosin_patch_globals TSRMLS_CC); ++#endif ++ zend_suhosin_log = php_security_log; ++ ++ /* get the pointer guardian and ensure low 3 bits are 1 */ ++ if (SUHOSIN_POINTER_GUARD == 0) { ++ zend_canary(&SUHOSIN_POINTER_GUARD, sizeof(SUHOSIN_POINTER_GUARD)); ++ SUHOSIN_POINTER_GUARD |= 7; ++ } ++ ++ if (!suhosin_config) { ++#ifndef MAP_ANONYMOUS ++#define MAP_ANONYMOUS MAP_ANON ++#endif ++ suhosin_config = mmap(NULL, sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); ++ if (suhosin_config == MAP_FAILED) { ++ perror("suhosin"); ++ _exit(1); ++ } ++ suhosin_config = SUHOSIN_MANGLE_PTR(suhosin_config); ++ } ++ if (!SUHOSIN_CONFIG(SUHOSIN_CONFIG_SET)) { ++ suhosin_read_configuration_from_environment(); ++ suhosin_write_protect_configuration(); ++ } ++} ++ ++static char *loglevel2string(int loglevel) ++{ ++ switch (loglevel) { ++ case S_FILES: ++ return "FILES"; ++ case S_INCLUDE: ++ return "INCLUDE"; ++ case S_MEMORY: ++ return "MEMORY"; ++ case S_MISC: ++ return "MISC"; ++ case S_SESSION: ++ return "SESSION"; ++ case S_SQL: ++ return "SQL"; ++ case S_EXECUTOR: ++ return "EXECUTOR"; ++ case S_VARS: ++ return "VARS"; ++ default: ++ return "UNKNOWN"; ++ } ++} ++ ++static void php_security_log(int loglevel, char *fmt, ...) ++{ ++ int s, r, i=0; ++#if defined(AF_UNIX) ++ struct sockaddr_un saun; ++#endif ++#ifdef PHP_WIN32 ++ LPTSTR strs[2]; ++ unsigned short etype; ++ DWORD evid; ++#endif ++ char buf[4096+64]; ++ char error[4096+100]; ++ char *ip_address; ++ char *fname; ++ char *alertstring; ++ int lineno; ++ va_list ap; ++ TSRMLS_FETCH(); ++ ++ /*SDEBUG("(suhosin_log) loglevel: %d log_syslog: %u - log_sapi: %u - log_script: %u", loglevel, SPG(log_syslog), SPG(log_sapi), SPG(log_script));*/ ++ ++ if (SPG(log_use_x_forwarded_for)) { ++ ip_address = sapi_getenv("HTTP_X_FORWARDED_FOR", 20 TSRMLS_CC); ++ if (ip_address == NULL) { ++ ip_address = "X-FORWARDED-FOR not set"; ++ } ++ } else { ++ ip_address = sapi_getenv("REMOTE_ADDR", 11 TSRMLS_CC); ++ if (ip_address == NULL) { ++ ip_address = "REMOTE_ADDR not set"; ++ } ++ } ++ ++ ++ va_start(ap, fmt); ++ ap_php_vsnprintf(error, sizeof(error), fmt, ap); ++ va_end(ap); ++ while (error[i]) { ++ if (error[i] < 32) error[i] = '.'; ++ i++; ++ } ++ ++/* if (SPG(simulation)) { ++ alertstring = "ALERT-SIMULATION"; ++ } else { */ ++ alertstring = "ALERT"; ++/* }*/ ++ ++ if (zend_is_executing(TSRMLS_C)) { ++ if (EG(current_execute_data)) { ++ lineno = EG(current_execute_data)->opline->lineno; ++ fname = EG(current_execute_data)->op_array->filename; ++ } else { ++ lineno = zend_get_executed_lineno(TSRMLS_C); ++ fname = zend_get_executed_filename(TSRMLS_C); ++ } ++ ap_php_snprintf(buf, sizeof(buf), "%s - %s (attacker '%s', file '%s', line %u)", alertstring, error, ip_address, fname, lineno); ++ } else { ++ fname = sapi_getenv("SCRIPT_FILENAME", 15 TSRMLS_CC); ++ if (fname==NULL) { ++ fname = "unknown"; ++ } ++ ap_php_snprintf(buf, sizeof(buf), "%s - %s (attacker '%s', file '%s')", alertstring, error, ip_address, fname); ++ } ++ ++ /* Syslog-Logging disabled? */ ++ if (((SPG(log_syslog)|S_INTERNAL) & loglevel)==0) { ++ goto log_sapi; ++ } ++ ++#if defined(AF_UNIX) ++ ap_php_snprintf(error, sizeof(error), "<%u>suhosin[%u]: %s\n", (unsigned int)(SPG(log_syslog_facility)|SPG(log_syslog_priority)),getpid(),buf); ++ ++ s = socket(AF_UNIX, SOCK_DGRAM, 0); ++ if (s == -1) { ++ goto log_sapi; ++ } ++ ++ memset(&saun, 0, sizeof(saun)); ++ saun.sun_family = AF_UNIX; ++ strcpy(saun.sun_path, SYSLOG_PATH); ++ /*saun.sun_len = sizeof(saun);*/ ++ ++ r = connect(s, (struct sockaddr *)&saun, sizeof(saun)); ++ if (r) { ++ close(s); ++ s = socket(AF_UNIX, SOCK_STREAM, 0); ++ if (s == -1) { ++ goto log_sapi; ++ } ++ ++ memset(&saun, 0, sizeof(saun)); ++ saun.sun_family = AF_UNIX; ++ strcpy(saun.sun_path, SYSLOG_PATH); ++ /*saun.sun_len = sizeof(saun);*/ ++ ++ r = connect(s, (struct sockaddr *)&saun, sizeof(saun)); ++ if (r) { ++ close(s); ++ goto log_sapi; ++ } ++ } ++ send(s, error, strlen(error), 0); ++ ++ close(s); ++#endif ++#ifdef PHP_WIN32 ++ ap_php_snprintf(error, sizeof(error), "suhosin[%u]: %s", getpid(),buf); ++ ++ switch (SPG(log_syslog_priority)) { /* translate UNIX type into NT type */ ++ case 1: /*LOG_ALERT:*/ ++ etype = EVENTLOG_ERROR_TYPE; ++ break; ++ case 6: /*LOG_INFO:*/ ++ etype = EVENTLOG_INFORMATION_TYPE; ++ break; ++ default: ++ etype = EVENTLOG_WARNING_TYPE; ++ } ++ evid = loglevel; ++ strs[0] = error; ++ /* report the event */ ++ if (log_source == NULL) { ++ log_source = RegisterEventSource(NULL, "Suhosin-Patch-" SUHOSIN_PATCH_VERSION); ++ } ++ ReportEvent(log_source, etype, (unsigned short) SPG(log_syslog_priority), evid, NULL, 1, 0, strs, NULL); ++ ++#endif ++log_sapi: ++ /* SAPI Logging activated? */ ++ /*SDEBUG("(suhosin_log) log_syslog: %u - log_sapi: %u - log_script: %u - log_phpscript: %u", SPG(log_syslog), SPG(log_sapi), SPG(log_script), SPG(log_phpscript));*/ ++ if (((SPG(log_sapi)|S_INTERNAL) & loglevel)!=0) { ++ sapi_module.log_message(buf); ++ } ++ ++/*log_script:*/ ++ /* script logging activaed? */ ++ if (((SPG(log_script) & loglevel)!=0) && SPG(log_scriptname)!=NULL) { ++ char cmd[8192], *cmdpos, *bufpos; ++ FILE *in; ++ int space; ++ ++ ap_php_snprintf(cmd, sizeof(cmd), "%s %s \'", SPG(log_scriptname), loglevel2string(loglevel)); ++ space = sizeof(cmd) - strlen(cmd); ++ cmdpos = cmd + strlen(cmd); ++ bufpos = buf; ++ if (space <= 1) return; ++ while (space > 2 && *bufpos) { ++ if (*bufpos == '\'') { ++ if (space<=5) break; ++ *cmdpos++ = '\''; ++ *cmdpos++ = '\\'; ++ *cmdpos++ = '\''; ++ *cmdpos++ = '\''; ++ bufpos++; ++ space-=4; ++ } else { ++ *cmdpos++ = *bufpos++; ++ space--; ++ } ++ } ++ *cmdpos++ = '\''; ++ *cmdpos = 0; ++ ++ if ((in=VCWD_POPEN(cmd, "r"))==NULL) { ++ php_security_log(S_INTERNAL, "Unable to execute logging shell script: %s", SPG(log_scriptname)); ++ return; ++ } ++ /* read and forget the result */ ++ while (1) { ++ int readbytes = fread(cmd, 1, sizeof(cmd), in); ++ if (readbytes<=0) { ++ break; ++ } ++ } ++ pclose(in); ++ } ++/*log_phpscript:*/ ++ if ((SPG(log_phpscript) & loglevel)!=0 && EG(in_execution) && SPG(log_phpscriptname) && SPG(log_phpscriptname)[0]) { ++ zend_file_handle file_handle; ++ zend_op_array *new_op_array; ++ zval *result = NULL; ++ ++ /*long orig_execution_depth = SPG(execution_depth);*/ ++ /*zend_bool orig_safe_mode = PG(safe_mode);*/ ++ char *orig_basedir = PG(open_basedir); ++ ++ char *phpscript = SPG(log_phpscriptname); ++/*SDEBUG("scriptname %s", SPG(log_phpscriptname));`*/ ++#ifdef ZEND_ENGINE_2 ++ if (zend_stream_open(phpscript, &file_handle TSRMLS_CC) == SUCCESS) { ++#else ++ if (zend_open(phpscript, &file_handle) == SUCCESS && ZEND_IS_VALID_FILE_HANDLE(&file_handle)) { ++ file_handle.filename = phpscript; ++ file_handle.free_filename = 0; ++#endif ++ if (!file_handle.opened_path) { ++ file_handle.opened_path = estrndup(phpscript, strlen(phpscript)); ++ } ++ new_op_array = zend_compile_file(&file_handle, ZEND_REQUIRE TSRMLS_CC); ++ zend_destroy_file_handle(&file_handle TSRMLS_CC); ++ if (new_op_array) { ++ HashTable *active_symbol_table = EG(active_symbol_table); ++ zval *zerror, *zerror_class; ++ ++ if (active_symbol_table == NULL) { ++ active_symbol_table = &EG(symbol_table); ++ } ++ EG(return_value_ptr_ptr) = &result; ++ EG(active_op_array) = new_op_array; ++ ++ MAKE_STD_ZVAL(zerror); ++ MAKE_STD_ZVAL(zerror_class); ++ ZVAL_STRING(zerror, buf, 1); ++ ZVAL_LONG(zerror_class, loglevel); ++ ++ zend_hash_update(active_symbol_table, "SUHOSIN_ERROR", sizeof("SUHOSIN_ERROR"), (void **)&zerror, sizeof(zval *), NULL); ++ zend_hash_update(active_symbol_table, "SUHOSIN_ERRORCLASS", sizeof("SUHOSIN_ERRORCLASS"), (void **)&zerror_class, sizeof(zval *), NULL); ++ ++ /*SPG(execution_depth) = 0;*/ ++ if (SPG(log_phpscript_is_safe)) { ++ /*PG(safe_mode) = 0;*/ ++ PG(open_basedir) = NULL; ++ } ++ ++ zend_execute(new_op_array TSRMLS_CC); ++ ++ /*SPG(execution_depth) = orig_execution_depth;*/ ++ /*PG(safe_mode) = orig_safe_mode;*/ ++ PG(open_basedir) = orig_basedir; ++ ++#ifdef ZEND_ENGINE_2 ++ destroy_op_array(new_op_array TSRMLS_CC); ++#else ++ destroy_op_array(new_op_array); ++#endif ++ efree(new_op_array); ++#ifdef ZEND_ENGINE_2 ++ if (!EG(exception)) ++#endif ++ { ++ if (EG(return_value_ptr_ptr)) { ++ zval_ptr_dtor(EG(return_value_ptr_ptr)); ++ EG(return_value_ptr_ptr) = NULL; ++ } ++ } ++ } else { ++ php_security_log(S_INTERNAL, "Unable to execute logging PHP script: %s", SPG(log_phpscriptname)); ++ return; ++ } ++ } else { ++ php_security_log(S_INTERNAL, "Unable to execute logging PHP script: %s", SPG(log_phpscriptname)); ++ return; ++ } ++ } ++ ++} ++ ++ ++#endif ++ ++/* ++ * Local variables: ++ * tab-width: 4 ++ * c-basic-offset: 4 ++ * End: ++ * vim600: sw=4 ts=4 fdm=marker ++ * vim<600: sw=4 ts=4 ++ */ +--- /dev/null ++++ b/main/suhosin_patch.h +@@ -0,0 +1,59 @@ ++/* ++ +----------------------------------------------------------------------+ ++ | Suhosin Patch for PHP | ++ +----------------------------------------------------------------------+ ++ | Copyright (c) 2004-2010 Stefan Esser | ++ +----------------------------------------------------------------------+ ++ | This source file is subject to version 2.02 of the PHP license, | ++ | that is bundled with this package in the file LICENSE, and is | ++ | available at through the world-wide-web at | ++ | http://www.php.net/license/2_02.txt. | ++ | If you did not receive a copy of the PHP license and are unable to | ++ | obtain it through the world-wide-web, please send a note to | ++ | license@php.net so we can mail you a copy immediately. | ++ +----------------------------------------------------------------------+ ++ | Author: Stefan Esser | ++ +----------------------------------------------------------------------+ ++ */ ++ ++#ifndef SUHOSIN_PATCH_H ++#define SUHOSIN_PATCH_H ++ ++#if SUHOSIN_PATCH ++ ++#include "zend.h" ++ ++#define SUHOSIN_PATCH_VERSION "0.9.10" ++ ++#define SUHOSIN_LOGO_GUID "SUHO8567F54-D428-14d2-A769-00DA302A5F18" ++ ++#define SUHOSIN_CONFIG(idx) (suhosin_get_config(idx)) ++ ++#define SUHOSIN_MM_USE_CANARY_PROTECTION 0 ++#define SUHOSIN_MM_DESTROY_FREE_MEMORY 1 ++#define SUHOSIN_MM_IGNORE_CANARY_VIOLATION 2 ++#define SUHOSIN_HT_IGNORE_INVALID_DESTRUCTOR 3 ++#define SUHOSIN_LL_IGNORE_INVALID_DESTRUCTOR 4 ++ ++#define SUHOSIN_CONFIG_SET 100 ++ ++#include ++#include ++#include ++ ++#if defined(DARWIN) ++#include ++#endif ++ ++#define SUHOSIN_MANGLE_PTR(ptr) (ptr==NULL?NULL:((void *)((zend_intptr_t)(ptr)^SUHOSIN_POINTER_GUARD))) ++ ++#endif ++ ++#endif /* SUHOSIN_PATCH_H */ ++ ++/* ++ * Local variables: ++ * tab-width: 4 ++ * c-basic-offset: 4 ++ * End: ++ */ +--- /dev/null ++++ b/main/suhosin_patch.m4 +@@ -0,0 +1,8 @@ ++dnl ++dnl $Id: suhosin_patch.m4,v 1.1 2004/11/14 13:24:24 ionic Exp $ ++dnl ++dnl This file contains Suhosin Patch for PHP specific autoconf functions. ++dnl ++ ++AC_DEFINE(SUHOSIN_PATCH, 1, [Suhosin Patch]) ++ +--- a/sapi/apache/mod_php5.c ++++ b/sapi/apache/mod_php5.c +@@ -965,7 +965,11 @@ static void php_init_handler(server_rec + { + TSRMLS_FETCH(); + if (PG(expose_php)) { ++#if SUHOSIN_PATCH ++ ap_add_version_component("PHP/" PHP_VERSION " with Suhosin-Patch"); ++#else + ap_add_version_component("PHP/" PHP_VERSION); ++#endif + } + } + #endif +--- a/sapi/apache2filter/sapi_apache2.c ++++ b/sapi/apache2filter/sapi_apache2.c +@@ -581,7 +581,11 @@ static void php_apache_add_version(apr_p + { + TSRMLS_FETCH(); + if (PG(expose_php)) { ++#if SUHOSIN_PATCH ++ ap_add_version_component(p, "PHP/" PHP_VERSION " with Suhosin-Patch"); ++#else + ap_add_version_component(p, "PHP/" PHP_VERSION); ++#endif + } + } + +--- a/sapi/apache2handler/sapi_apache2.c ++++ b/sapi/apache2handler/sapi_apache2.c +@@ -406,7 +406,11 @@ static void php_apache_add_version(apr_p + { + TSRMLS_FETCH(); + if (PG(expose_php)) { ++#if SUHOSIN_PATCH ++ ap_add_version_component(p, "PHP/" PHP_VERSION " with Suhosin-Patch"); ++#else + ap_add_version_component(p, "PHP/" PHP_VERSION); ++#endif + } + } + +--- a/sapi/apache_hooks/mod_php5.c ++++ b/sapi/apache_hooks/mod_php5.c +@@ -1251,7 +1251,11 @@ static void php_init_handler(server_rec + { + TSRMLS_FETCH(); + if (PG(expose_php)) { ++#if SUHOSIN_PATCH ++ ap_add_version_component("PHP/" PHP_VERSION " with Suhosin-Patch"); ++#else + ap_add_version_component("PHP/" PHP_VERSION); ++#endif + } + } + #endif +--- a/sapi/cgi/cgi_main.c ++++ b/sapi/cgi/cgi_main.c +@@ -2188,10 +2188,18 @@ consult the installation file that came + SG(headers_sent) = 1; + SG(request_info).no_headers = 1; + } ++#if SUHOSIN_PATCH + #if ZEND_DEBUG +- php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++ php_printf("PHP %s with Suhosin-Patch (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); + #else +- php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++ php_printf("PHP %s with Suhosin-Patch (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++#endif ++#else ++ #if ZEND_DEBUG ++ php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++ #else ++ php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++ #endif + #endif + php_request_shutdown((void *) 0); + fcgi_shutdown(); +--- a/sapi/cli/php_cli.c ++++ b/sapi/cli/php_cli.c +@@ -687,7 +687,11 @@ static int do_cli(int argc, char **argv + goto out; + + case 'v': /* show php version & quit */ ++#if SUHOSIN_PATCH ++ php_printf("PHP %s with Suhosin-Patch (%s) (built: %s %s) %s\nCopyright (c) 1997-2013 The PHP Group\n%s", ++#else + php_printf("PHP %s (%s) (built: %s %s) %s\nCopyright (c) 1997-2013 The PHP Group\n%s", ++#endif + PHP_VERSION, cli_sapi_module.name, __DATE__, __TIME__, + #if ZEND_DEBUG && defined(HAVE_GCOV) + "(DEBUG GCOV)", +--- php-5.4.8/sapi/litespeed/lsapi_main.c~ 2012-10-16 13:05:41.000000000 +0300 ++++ php-5.4.8/sapi/litespeed/lsapi_main.c 2012-11-09 09:30:54.304162453 +0200 +@@ -718,11 +718,19 @@ + break; + case 'v': + if (php_request_startup(TSRMLS_C) != FAILURE) { ++#if SUHOSIN_PATCH ++#if ZEND_DEBUG ++ php_printf("PHP %s with Suhosin-Patch (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++#else ++ php_printf("PHP %s with Suhosin-Patch (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++#endif ++#else + #if ZEND_DEBUG + php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); + #else + php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); + #endif ++#endif + #ifdef PHP_OUTPUT_NEWAPI + php_output_end_all(TSRMLS_C); + #else +--- a/sapi/milter/php_milter.c ++++ b/sapi/milter/php_milter.c +@@ -1109,7 +1109,11 @@ int main(int argc, char *argv[]) + } + SG(headers_sent) = 1; + SG(request_info).no_headers = 1; ++#if SUHOSIN_PATCH ++ php_printf("PHP with Suhosin-Patch %s (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++#else + php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2013 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version()); ++#endif + php_output_teardown(); + exit(1); + break; +--- a/win32/build/config.w32 ++++ b/win32/build/config.w32 +@@ -333,7 +333,7 @@ ADD_SOURCES("Zend", "zend_language_parse + zend_stream.c zend_iterators.c zend_interfaces.c zend_objects.c \ + zend_object_handlers.c zend_objects_API.c \ + zend_default_classes.c zend_execute.c zend_strtod.c zend_gc.c zend_closures.c \ +- zend_float.c zend_string.c"); ++ zend_float.c zend_string.c zend_canary.c zend_alloc_canary.c"); + + if (VCVERS == 1200) { + AC_DEFINE('ZEND_DVAL_TO_LVAL_CAST_OK', 1); +@@ -385,6 +385,7 @@ ADD_FLAG("CFLAGS", "/D FD_SETSIZE=" + pa + + AC_DEFINE('HAVE_USLEEP', 1); + AC_DEFINE('HAVE_STRCOLL', 1); ++AC_DEFINE('SUHOSIN_PATCH', 1); + + /* For snapshot builders, where can we find the additional + * files that make up the snapshot template? */ +--- a/win32/build/config.w32.h.in ++++ b/win32/build/config.w32.h.in +@@ -150,6 +150,9 @@ + /* Win32 supports strcoll */ + #define HAVE_STRCOLL 1 + ++/* Suhosin Patch support */ ++#define SUHOSIN_PATCH 1 ++ + /* Win32 supports socketpair by the emulation in win32/sockets.c */ + #define HAVE_SOCKETPAIR 1 + #define HAVE_SOCKLEN_T 1 diff --git a/system-libzip.patch b/system-libzip.patch new file mode 100644 index 0000000..6892c30 --- /dev/null +++ b/system-libzip.patch @@ -0,0 +1,497 @@ +https://bugzilla.redhat.com/show_bug.cgi?id=551513 +https://bugs.php.net/bug.php?id=39388 +http://spot.fedorapeople.org/php-5.3.6-libzip.patch +pld fixes: link with -lzip when using system lib, -lz otherwise + +diff -up php-5.4.5RC1/ext/zip/config.m4.systzip php-5.4.5RC1/ext/zip/config.m4 +--- php-5.4.5RC1/ext/zip/config.m4.systzip 2012-07-04 07:43:14.000000000 +0200 ++++ php-5.4.5RC1/ext/zip/config.m4 2012-07-07 15:56:41.418171233 +0200 +@@ -13,65 +13,105 @@ fi + PHP_ARG_WITH(pcre-dir, pcre install prefix, + [ --with-pcre-dir ZIP: pcre install prefix], no, no) + +-if test "$PHP_ZIP" != "no"; then ++PHP_ARG_WITH(libzip, libzip, ++[ --with-libzip[=DIR] ZIP: use libzip], no, no) + +- if test "$PHP_ZLIB_DIR" != "no" && test "$PHP_ZLIB_DIR" != "yes"; then +- if test -f "$PHP_ZLIB_DIR/include/zlib/zlib.h"; then +- PHP_ZLIB_DIR="$PHP_ZLIB_DIR" +- PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include/zlib" +- elif test -f "$PHP_ZLIB_DIR/include/zlib.h"; then +- PHP_ZLIB_DIR="$PHP_ZLIB_DIR" +- PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include" ++if test "$PHP_ZIP" != "no"; then ++ if test "$PHP_LIBZIP" != "no"; then ++ dnl system libzip, depends on libzip ++ if test -r $PHP_LIBZIP/include/zip.h; then ++ LIBZIP_DIR=$PHP_LIBZIP + else +- AC_MSG_ERROR([Can not find zlib headers under "$PHP_ZLIB_DIR"]) ++ AC_MSG_CHECKING(for libzip in default path) ++ for i in /usr/local /usr; do ++ if test -r $i/include/zip.h; then ++ LIBZIP_DIR=$i ++ AC_MSG_RESULT(found in $i) ++ break ++ fi ++ done ++ fi ++ ++ if test -z "$LIBZIP_DIR"; then ++ AC_MSG_RESULT(not found) ++ AC_MSG_ERROR(Please reinstall the libzip distribution) + fi ++ ++ dnl Could not think of a simple way to check libzip for overwrite support ++ PHP_CHECK_LIBRARY(zip, zip_open, ++ [ ++ PHP_ADD_INCLUDE($LIBZIP_DIR/include) ++ PHP_ADD_LIBRARY_WITH_PATH(zip, $LIBZIP_DIR/$PHP_LIBDIR, ZIP_SHARED_LIBADD) ++ AC_DEFINE(HAVE_LIBZIP,1,[ ]) ++ ], [ ++ AC_MSG_ERROR(could not find usable libzip) ++ ], [ ++ -L$LIBZIP_DIR/$PHP_LIBDIR ++ ]) ++ ++ AC_DEFINE(HAVE_ZIP,1,[ ]) ++ PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c, $ext_shared) ++ PHP_SUBST(ZIP_SHARED_LIBADD) + else +- for i in /usr/local /usr; do +- if test -f "$i/include/zlib/zlib.h"; then +- PHP_ZLIB_DIR="$i" +- PHP_ZLIB_INCDIR="$i/include/zlib" +- elif test -f "$i/include/zlib.h"; then +- PHP_ZLIB_DIR="$i" +- PHP_ZLIB_INCDIR="$i/include" ++ ++ dnl bundled libzip, depends on zlib ++ if test "$PHP_ZLIB_DIR" != "no" && test "$PHP_ZLIB_DIR" != "yes"; then ++ if test -f "$PHP_ZLIB_DIR/include/zlib/zlib.h"; then ++ PHP_ZLIB_DIR="$PHP_ZLIB_DIR" ++ PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include/zlib" ++ elif test -f "$PHP_ZLIB_DIR/include/zlib.h"; then ++ PHP_ZLIB_DIR="$PHP_ZLIB_DIR" ++ PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include" ++ else ++ AC_MSG_ERROR([Can not find zlib headers under "$PHP_ZLIB_DIR"]) + fi +- done +- fi ++ else ++ for i in /usr/local /usr; do ++ if test -f "$i/include/zlib/zlib.h"; then ++ PHP_ZLIB_DIR="$i" ++ PHP_ZLIB_INCDIR="$i/include/zlib" ++ elif test -f "$i/include/zlib.h"; then ++ PHP_ZLIB_DIR="$i" ++ PHP_ZLIB_INCDIR="$i/include" ++ fi ++ done ++ fi + +- dnl # zlib +- AC_MSG_CHECKING([for the location of zlib]) +- if test "$PHP_ZLIB_DIR" = "no"; then +- AC_MSG_ERROR([zip support requires ZLIB. Use --with-zlib-dir= to specify prefix where ZLIB include and library are located]) +- else +- AC_MSG_RESULT([$PHP_ZLIB_DIR]) +- PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/$PHP_LIBDIR, ZIP_SHARED_LIBADD) +- PHP_ADD_INCLUDE($PHP_ZLIB_INCDIR) +- fi ++ dnl # zlib ++ AC_MSG_CHECKING([for the location of zlib]) ++ if test "$PHP_ZLIB_DIR" = "no"; then ++ AC_MSG_ERROR([zip support requires ZLIB. Use --with-zlib-dir= to specify prefix where ZLIB include and library are located]) ++ else ++ AC_MSG_RESULT([$PHP_ZLIB_DIR]) ++ PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/$PHP_LIBDIR, ZIP_SHARED_LIBADD) ++ PHP_ADD_INCLUDE($PHP_ZLIB_INCDIR) ++ fi + +- dnl This is PECL build, check if bundled PCRE library is used +- old_CPPFLAGS=$CPPFLAGS +- CPPFLAGS=$INCLUDES +- AC_EGREP_CPP(yes,[ ++ dnl This is PECL build, check if bundled PCRE library is used ++ old_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS=$INCLUDES ++ AC_EGREP_CPP(yes,[ + #include
+ #if defined(HAVE_BUNDLED_PCRE) && !defined(COMPILE_DL_PCRE) + yes + #endif +- ],[ +- PHP_PCRE_REGEX=yes +- ],[ +- AC_EGREP_CPP(yes,[ ++ ],[ ++ PHP_PCRE_REGEX=yes ++ ],[ ++ AC_EGREP_CPP(yes,[ + #include
+ #if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE) + yes + #endif +- ],[ +- PHP_PCRE_REGEX=pecl +- ],[ +- PHP_PCRE_REGEX=no ++ ],[ ++ PHP_PCRE_REGEX=pecl ++ ],[ ++ PHP_PCRE_REGEX=no ++ ]) + ]) +- ]) +- CPPFLAGS=$old_CPPFLAGS ++ CPPFLAGS=$old_CPPFLAGS + +- PHP_ZIP_SOURCES="$PHP_ZIP_SOURCES lib/zip_add.c lib/zip_error.c lib/zip_fclose.c \ ++ PHP_ZIP_SOURCES="$PHP_ZIP_SOURCES lib/zip_add.c lib/zip_error.c lib/zip_fclose.c \ + lib/zip_fread.c lib/zip_open.c lib/zip_source_filep.c \ + lib/zip_strerror.c lib/zip_close.c lib/zip_error_get.c \ + lib/zip_file_error_get.c lib/zip_free.c lib/zip_rename.c \ +@@ -98,10 +138,11 @@ yes + lib/zip_source_open.c lib/zip_source_pkware.c lib/zip_source_pop.c \ + lib/zip_source_read.c lib/zip_source_stat.c" + +- AC_DEFINE(HAVE_ZIP,1,[ ]) +- PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared) +- PHP_ADD_BUILD_DIR($ext_builddir/lib, 1) +- PHP_SUBST(ZIP_SHARED_LIBADD) ++ AC_DEFINE(HAVE_ZIP,1,[ ]) ++ PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared) ++ PHP_ADD_BUILD_DIR($ext_builddir/lib, 1) ++ PHP_SUBST(ZIP_SHARED_LIBADD) ++ fi + + dnl so we always include the known-good working hack. + PHP_ADD_MAKEFILE_FRAGMENT +diff -up php-5.4.5RC1/ext/zip/php_zip.c.systzip php-5.4.5RC1/ext/zip/php_zip.c +--- php-5.4.5RC1/ext/zip/php_zip.c.systzip 2012-07-04 07:43:14.000000000 +0200 ++++ php-5.4.5RC1/ext/zip/php_zip.c 2012-07-07 15:59:12.728676026 +0200 +@@ -29,8 +29,232 @@ + #include "ext/standard/php_string.h" + #include "ext/pcre/php_pcre.h" + #include "php_zip.h" ++#if defined(HAVE_LIBZIP) ++#include ++ ++/* Copied from libzip 0.10 */ ++ ++/* state of change of a file in zip archive */ ++ ++enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED, ++ ZIP_ST_ADDED, ZIP_ST_RENAMED }; ++ ++/* error source for layered sources */ ++ ++enum zip_les { ZIP_LES_NONE, ZIP_LES_UPPER, ZIP_LES_LOWER, ZIP_LES_INVAL }; ++ ++typedef zip_int64_t (*zip_source_layered_callback)(struct zip_source *, void *, ++ void *, zip_uint64_t, ++ enum zip_source_cmd); ++ ++struct zip_error { ++ int zip_err; /* libzip error code (ZIP_ER_*) */ ++ int sys_err; /* copy of errno (E*) or zlib error code */ ++ char *str; /* string representation or NULL */ ++}; ++ ++/* zip archive, part of API */ ++ ++struct zip { ++ char *zn; /* file name */ ++ FILE *zp; /* file */ ++ struct zip_error error; /* error information */ ++ ++ unsigned int flags; /* archive global flags */ ++ unsigned int ch_flags; /* changed archive global flags */ ++ ++ char *default_password; /* password used when no other supplied */ ++ ++ struct zip_cdir *cdir; /* central directory */ ++ char *ch_comment; /* changed archive comment */ ++ int ch_comment_len; /* length of changed zip archive ++ * comment, -1 if unchanged */ ++ zip_uint64_t nentry; /* number of entries */ ++ zip_uint64_t nentry_alloc; /* number of entries allocated */ ++ struct zip_entry *entry; /* entries */ ++ int nfile; /* number of opened files within archive */ ++ int nfile_alloc; /* number of files allocated */ ++ struct zip_file **file; /* opened files within archive */ ++}; ++ ++/* file in zip archive, part of API */ ++ ++struct zip_file { ++ struct zip *za; /* zip archive containing this file */ ++ struct zip_error error; /* error information */ ++ int eof; ++ struct zip_source *src; /* data source */ ++}; ++ ++/* zip archive directory entry (central or local) */ ++ ++struct zip_dirent { ++ unsigned short version_madeby; /* (c) version of creator */ ++ unsigned short version_needed; /* (cl) version needed to extract */ ++ unsigned short bitflags; /* (cl) general purpose bit flag */ ++ unsigned short comp_method; /* (cl) compression method used */ ++ time_t last_mod; /* (cl) time of last modification */ ++ unsigned int crc; /* (cl) CRC-32 of uncompressed data */ ++ unsigned int comp_size; /* (cl) size of commpressed data */ ++ unsigned int uncomp_size; /* (cl) size of uncommpressed data */ ++ char *filename; /* (cl) file name (NUL-terminated) */ ++ unsigned short filename_len; /* (cl) length of filename (w/o NUL) */ ++ char *extrafield; /* (cl) extra field */ ++ unsigned short extrafield_len; /* (cl) length of extra field */ ++ char *comment; /* (c) file comment */ ++ unsigned short comment_len; /* (c) length of file comment */ ++ unsigned short disk_number; /* (c) disk number start */ ++ unsigned short int_attrib; /* (c) internal file attributes */ ++ unsigned int ext_attrib; /* (c) external file attributes */ ++ unsigned int offset; /* (c) offset of local header */ ++}; ++ ++/* zip archive central directory */ ++ ++struct zip_cdir { ++ struct zip_dirent *entry; /* directory entries */ ++ int nentry; /* number of entries */ ++ ++ unsigned int size; /* size of central direcotry */ ++ unsigned int offset; /* offset of central directory in file */ ++ char *comment; /* zip archive comment */ ++ unsigned short comment_len; /* length of zip archive comment */ ++}; ++ ++struct zip_source { ++ struct zip_source *src; ++ union { ++ zip_source_callback f; ++ zip_source_layered_callback l; ++ } cb; ++ void *ud; ++ enum zip_les error_source; ++ int is_open; ++}; ++ ++/* entry in zip archive directory */ ++ ++struct zip_entry { ++ enum zip_state state; ++ struct zip_source *source; ++ char *ch_filename; ++ char *ch_extra; ++ int ch_extra_len; ++ char *ch_comment; ++ int ch_comment_len; ++}; ++ ++void _zip_dirent_finalize(struct zip_dirent *zde) ++{ ++ free(zde->filename); ++ zde->filename = NULL; ++ free(zde->extrafield); ++ zde->extrafield = NULL; ++ free(zde->comment); ++ zde->comment = NULL; ++} ++ ++void _zip_cdir_free(struct zip_cdir *cd) ++{ ++ int i; ++ ++ if (!cd) ++ return; ++ ++ for (i=0; inentry; i++) ++ _zip_dirent_finalize(cd->entry+i); ++ free(cd->comment); ++ free(cd->entry); ++ free(cd); ++} ++ ++void _zip_error_fini(struct zip_error *err) ++{ ++ free(err->str); ++ err->str = NULL; ++} ++ ++void _zip_error_init(struct zip_error *err) ++{ ++ err->zip_err = ZIP_ER_OK; ++ err->sys_err = 0; ++ err->str = NULL; ++} ++ ++void _zip_unchange_data(struct zip_entry *ze) ++{ ++ if (ze->source) { ++ zip_source_free(ze->source); ++ ze->source = NULL; ++ } ++ ++ ze->state = ze->ch_filename ? ZIP_ST_RENAMED : ZIP_ST_UNCHANGED; ++} ++ ++void _zip_entry_free(struct zip_entry *ze) ++{ ++ free(ze->ch_filename); ++ ze->ch_filename = NULL; ++ free(ze->ch_extra); ++ ze->ch_extra = NULL; ++ ze->ch_extra_len = -1; ++ free(ze->ch_comment); ++ ze->ch_comment = NULL; ++ ze->ch_comment_len = -1; ++ ++ _zip_unchange_data(ze); ++} ++ ++void ++_zip_error_set(struct zip_error *err, int ze, int se) ++{ ++ if (err) { ++ err->zip_err = ze; ++ err->sys_err = se; ++ } ++} ++ ++void _zip_free(struct zip *za) ++{ ++ int i; ++ ++ if (za == NULL) ++ return; ++ ++ if (za->zn) ++ free(za->zn); ++ ++ if (za->zp) ++ fclose(za->zp); ++ ++ free(za->default_password); ++ _zip_cdir_free(za->cdir); ++ free(za->ch_comment); ++ ++ if (za->entry) { ++ for (i=0; inentry; i++) { ++ _zip_entry_free(za->entry+i); ++ } ++ free(za->entry); ++ } ++ ++ for (i=0; infile; i++) { ++ if (za->file[i]->error.zip_err == ZIP_ER_OK) { ++ _zip_error_set(&za->file[i]->error, ZIP_ER_ZIPCLOSED, 0); ++ za->file[i]->za = NULL; ++ } ++ } ++ ++ free(za->file); ++ free(za); ++ return; ++} ++ ++ ++#else + #include "lib/zip.h" + #include "lib/zipint.h" ++#endif + + /* zip_open is a macro for renaming libzip zipopen, so we need to use PHP_NAMED_FUNCTION */ + static PHP_NAMED_FUNCTION(zif_zip_open); +@@ -1624,6 +1848,10 @@ static ZIPARCHIVE_METHOD(addEmptyDir) + } + + idx = zip_stat(intern, s, 0, &sb); ++ /* We don't care about the NOENT status error here. */ ++ if (intern->error.zip_err == ZIP_ER_NOENT) { ++ _zip_error_set(&intern->error, ZIP_ER_OK, 0); ++ } + if (idx >= 0) { + RETVAL_FALSE; + } else { +@@ -1846,6 +2074,10 @@ static ZIPARCHIVE_METHOD(addFromString) + } + + cur_idx = zip_name_locate(intern, (const char *)name, 0); ++ /* We don't care about the NOENT status error here. */ ++ if (intern->error.zip_err == ZIP_ER_NOENT) { ++ _zip_error_set(&intern->error, ZIP_ER_OK, 0); ++ } + /* TODO: fix _zip_replace */ + if (cur_idx >= 0) { + if (zip_delete(intern, cur_idx) == -1) { +@@ -2868,7 +3100,11 @@ static PHP_MINFO_FUNCTION(zip) + php_info_print_table_row(2, "Zip", "enabled"); + php_info_print_table_row(2, "Extension Version","$Id$"); + php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION_STRING); +- php_info_print_table_row(2, "Libzip version", LIBZIP_VERSION); ++#if defined(HAVE_LIBZIP) ++ php_info_print_table_row(2, "Compiled against libzip version", LIBZIP_VERSION); ++#else ++ php_info_print_table_row(2, "Bundled libzip version", LIBZIP_VERSION); ++#endif + + php_info_print_table_end(); + } +diff -up php-5.4.5RC1/ext/zip/php_zip.h.systzip php-5.4.5RC1/ext/zip/php_zip.h +--- php-5.4.5RC1/ext/zip/php_zip.h.systzip 2012-07-04 07:43:14.000000000 +0200 ++++ php-5.4.5RC1/ext/zip/php_zip.h 2012-07-07 15:57:34.845319432 +0200 +@@ -28,7 +28,11 @@ extern zend_module_entry zip_module_entr + #include "TSRM.h" + #endif + ++#if defined(HAVE_LIBZIP) ++#include ++#else + #include "lib/zip.h" ++#endif + + #define PHP_ZIP_VERSION_STRING "1.11.0" + +diff -up php-5.4.5RC1/ext/zip/tests/bug38943.phpt.systzip php-5.4.5RC1/ext/zip/tests/bug38943.phpt +--- php-5.4.5RC1/ext/zip/tests/bug38943.phpt.systzip 2012-07-04 07:43:14.000000000 +0200 ++++ php-5.4.5RC1/ext/zip/tests/bug38943.phpt 2012-07-07 15:56:41.422171242 +0200 +@@ -27,7 +27,7 @@ array(1) { + [0]=> + int(1) + } +-object(myZip)#1 (%d) { ++object(myZip)#%d (%d) { + ["test":"myZip":private]=> + int(0) + ["testp"]=> +diff -up php-5.4.5RC1/ext/zip/tests/pecl12414.phpt.systzip php-5.4.5RC1/ext/zip/tests/pecl12414.phpt +--- php-5.4.5RC1/ext/zip/tests/pecl12414.phpt.systzip 2012-07-04 07:43:14.000000000 +0200 ++++ php-5.4.5RC1/ext/zip/tests/pecl12414.phpt 2012-07-07 15:56:41.422171242 +0200 +@@ -5,6 +5,8 @@ Bug #12414 ( extracting files from damag + /*$ */ + if(!extension_loaded('zip')) die('skip'); + ?> ++--XFAIL-- ++Doesn't work with system libzip (zip_readfile could not read from ...) + --FILE-- + ++#else + #include "lib/zip.h" ++#endif + + #include "php_streams.h" + #include "ext/standard/file.h" -- 2.46.0