# PaCkAgE DaTaStReAm php 1 33880 # end of header 070701000af160000081a40000000000000000000000014dc2238c000000bf000000b500010002ffffffffffffffff0000000c00000000php/pkginfoPKG=php NAME=php 5.3.6 i86pc Solaris 10 VERSION=5.3.6 PSTAMP=4th May 2011 EMAIL=http://php.net/downloads.php DESC=PHP scripting language ARCH=i386 CATEGORY=application CLASSES=none BASEDIR=/ 070701000af15f000081a40000000000000000000000014dc2238c0000b2f9000000b500010002ffffffffffffffff0000000b00000000php/pkgmap: 1 33880 1 d none /opt ? ? ? 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/pear 0755 root root 799 62128 1304491236 1 f none /usr/local/bin/peardev 0755 root root 820 63863 1304491236 1 f none /usr/local/bin/pecl 0755 root root 736 56562 1304491236 1 s none /usr/local/bin/phar=/usr/local/bin/phar.phar 1 f none /usr/local/bin/phar.phar 0755 root root 14796 38283 1304491236 1 f none /usr/local/bin/php 0755 root root 9875780 1010 1304491222 1 f none /usr/local/bin/php-config 0755 root root 3539 37688 1304491235 1 f none /usr/local/bin/phpize 0755 root root 4503 36811 1304491235 1 d none /usr/local/etc 0755 root root 1 f none /usr/local/etc/pear.conf 0644 root root 1164 30851 1304491236 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/php 0755 root root 1 d none /usr/local/include/php/TSRM 0755 root root 1 f none /usr/local/include/php/TSRM/TSRM.h 0644 root root 5337 37352 1304491233 1 f none /usr/local/include/php/TSRM/acconfig.h 0644 root root 16 1210 1304491234 1 f none /usr/local/include/php/TSRM/readdir.h 0644 root root 1102 22854 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config.h 0644 root root 32 2749 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config.w32.h 0644 root root 328 26029 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config_common.h 0644 root root 1462 49255 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_nw.h 0644 root root 1384 23761 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_strtok_r.h 0644 root root 115 9536 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_virtual_cwd.h 0644 root root 12061 43893 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_win32.h 0644 root root 3247 46832 1304491234 1 d none /usr/local/include/php/Zend 0755 root root 1 f none /usr/local/include/php/Zend/acconfig.h 0644 root root 3464 59494 1304491233 1 f none /usr/local/include/php/Zend/zend.h 0644 root root 24589 1272 1304491233 1 f none /usr/local/include/php/Zend/zend_API.h 0644 root root 38662 13584 1304491233 1 f none /usr/local/include/php/Zend/zend_alloc.h 0644 root root 12512 28928 1304491233 1 f none /usr/local/include/php/Zend/zend_build.h 0644 root root 1627 44397 1304491233 1 f none /usr/local/include/php/Zend/zend_builtin_functions.h 0644 root root 1681 48084 1304491233 1 f none /usr/local/include/php/Zend/zend_closures.h 0644 root root 1850 64044 1304491233 1 f none /usr/local/include/php/Zend/zend_compile.h 0644 root root 29717 38996 1304491233 1 f none /usr/local/include/php/Zend/zend_config.h 0644 root root 107 8464 1304491233 1 f none /usr/local/include/php/Zend/zend_config.nw.h 0644 root root 2556 51243 1304491233 1 f none /usr/local/include/php/Zend/zend_config.w32.h 0644 root root 3125 35718 1304491233 1 f none /usr/local/include/php/Zend/zend_constants.h 0644 root root 5067 11333 1304491233 1 f none /usr/local/include/php/Zend/zend_dynamic_array.h 0644 root root 1964 8615 1304491233 1 f none /usr/local/include/php/Zend/zend_errors.h 0644 root root 2199 14600 1304491233 1 f none /usr/local/include/php/Zend/zend_exceptions.h 0644 root root 3076 37288 1304491233 1 f none /usr/local/include/php/Zend/zend_execute.h 0644 root root 13221 14149 1304491233 1 f none /usr/local/include/php/Zend/zend_extensions.h 0644 root root 4663 48158 1304491233 1 f none /usr/local/include/php/Zend/zend_fast_cache.h 0644 root root 4176 32557 1304491233 1 f none /usr/local/include/php/Zend/zend_float.h 0644 root root 15707 48285 1304491233 1 f none /usr/local/include/php/Zend/zend_gc.h 0644 root root 7453 28602 1304491233 1 f none /usr/local/include/php/Zend/zend_globals.h 0644 root root 7346 28030 1304491233 1 f none /usr/local/include/php/Zend/zend_globals_macros.h 0644 root root 3285 56268 1304491233 1 f none /usr/local/include/php/Zend/zend_hash.h 0644 root root 17413 45175 1304491233 1 f none /usr/local/include/php/Zend/zend_highlight.h 0644 root root 2527 51740 1304491233 1 f none /usr/local/include/php/Zend/zend_indent.h 0644 root root 1521 33270 1304491233 1 f none /usr/local/include/php/Zend/zend_ini.h 0644 root root 10089 44662 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_parser.h 0644 root root 2695 14993 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_scanner.h 0644 root root 2007 10167 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_scanner_defs.h 0644 root root 254 18992 1304491233 1 f none /usr/local/include/php/Zend/zend_interfaces.h 0644 root root 4132 9344 1304491233 1 f none /usr/local/include/php/Zend/zend_istdiostream.h 0644 root root 1703 49143 1304491233 1 f none /usr/local/include/php/Zend/zend_iterators.h 0644 root root 3747 35952 1304491233 1 f none /usr/local/include/php/Zend/zend_language_parser.h 0644 root root 7777 15479 1304491233 1 f none /usr/local/include/php/Zend/zend_language_scanner.h 0644 root root 2495 56246 1304491233 1 f none /usr/local/include/php/Zend/zend_language_scanner_defs.h 0644 root root 326 24608 1304491233 1 f none /usr/local/include/php/Zend/zend_list.h 0644 root root 5213 31386 1304491233 1 f none /usr/local/include/php/Zend/zend_llist.h 0644 root root 4027 1303 1304491233 1 f none /usr/local/include/php/Zend/zend_modules.h 0644 root root 5094 3850 1304491233 1 f none /usr/local/include/php/Zend/zend_multibyte.h 0644 root root 3861 44773 1304491233 1 f none /usr/local/include/php/Zend/zend_multiply.h 0644 root root 2562 30888 1304491233 1 f none /usr/local/include/php/Zend/zend_object_handlers.h 0644 root root 8681 19232 1304491233 1 f none /usr/local/include/php/Zend/zend_objects.h 0644 root root 2267 36174 1304491233 1 f none /usr/local/include/php/Zend/zend_objects_API.h 0644 root root 4406 36631 1304491233 1 f none /usr/local/include/php/Zend/zend_operators.h 0644 root root 15816 64895 1304491233 1 f none /usr/local/include/php/Zend/zend_ptr_stack.h 0644 root root 4135 56193 1304491233 1 f none /usr/local/include/php/Zend/zend_qsort.h 0644 root root 1512 35318 1304491233 1 f none /usr/local/include/php/Zend/zend_stack.h 0644 root root 2431 48537 1304491233 1 f none /usr/local/include/php/Zend/zend_static_allocator.h 0644 root root 1918 5917 1304491233 1 f none /usr/local/include/php/Zend/zend_stream.h 0644 root root 3001 23208 1304491233 1 f none /usr/local/include/php/Zend/zend_strtod.h 0644 root root 1829 64402 1304491233 1 f none /usr/local/include/php/Zend/zend_ts_hash.h 0644 root root 7077 1527 1304491233 1 f none /usr/local/include/php/Zend/zend_types.h 0644 root root 2368 46037 1304491233 1 f none /usr/local/include/php/Zend/zend_variables.h 0644 root root 4088 3397 1304491233 1 f none /usr/local/include/php/Zend/zend_vm.h 0644 root root 1435 31557 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_def.h 0644 root root 134565 6076 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_execute.h 0644 root root 1061735 34920 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_opcodes.h 0644 root root 7914 56088 1304491233 1 d none /usr/local/include/php/ext 0755 root root 1 d none /usr/local/include/php/ext/date 0755 root root 1 d none /usr/local/include/php/ext/date/lib 0755 root root 1 f none /usr/local/include/php/ext/date/lib/timelib.h 0644 root root 5886 40128 1304491226 1 f none /usr/local/include/php/ext/date/lib/timelib_config.h 0644 root root 80 6423 1304491227 1 f none /usr/local/include/php/ext/date/lib/timelib_structs.h 0644 root root 6341 33034 1304491226 1 f none /usr/local/include/php/ext/date/php_date.h 0644 root root 5748 64150 1304491226 1 d none /usr/local/include/php/ext/dom 0755 root root 1 f none /usr/local/include/php/ext/dom/xml_common.h 0644 root root 3765 20346 1304491227 1 d none /usr/local/include/php/ext/ereg 0755 root root 1 f none /usr/local/include/php/ext/ereg/php_ereg.h 0644 root root 2001 9744 1304491227 1 f none /usr/local/include/php/ext/ereg/php_regex.h 0644 root root 2078 10764 1304491227 1 d none /usr/local/include/php/ext/ereg/regex 0755 root root 1 f none /usr/local/include/php/ext/ereg/regex/cclass.h 0644 root root 992 6590 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/cname.h 0644 root root 2070 6899 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/regex.h 0644 root root 2165 33927 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/regex2.h 0644 root root 5536 42460 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/utils.h 0644 root root 501 39192 1304491227 1 d none /usr/local/include/php/ext/filter 0755 root root 1 f none /usr/local/include/php/ext/filter/php_filter.h 0644 root root 3609 15613 1304491227 1 d none /usr/local/include/php/ext/gd 0755 root root 1 f none /usr/local/include/php/ext/gd/gdcache.h 0644 root root 2866 38464 1304491227 1 d none /usr/local/include/php/ext/gd/libgd 0755 root root 1 f none /usr/local/include/php/ext/gd/libgd/gd.h 0644 root root 26208 12437 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_compat.h 0644 root root 1762 21786 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_intern.h 0644 root root 261 17896 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_io.h 0644 root root 950 13099 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdcache.h 0644 root root 2716 27851 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontg.h 0644 root root 529 43358 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontl.h 0644 root root 527 43410 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontmb.h 0644 root root 495 40471 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfonts.h 0644 root root 491 40278 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontt.h 0644 root root 522 42891 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdhelpers.h 0644 root root 1351 52229 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/jisx0208.h 0644 root root 71350 42899 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/wbmp.h 0644 root root 1283 32935 1304491228 1 f none /usr/local/include/php/ext/gd/php_gd.h 0644 root root 6228 17604 1304491227 1 d none /usr/local/include/php/ext/hash 0755 root root 1 f none /usr/local/include/php/ext/hash/php_hash.h 0644 root root 5123 21471 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_adler32.h 0644 root root 1881 63017 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_crc32.h 0644 root root 1955 3953 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_gost.h 0644 root root 1794 56034 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_haval.h 0644 root root 2315 26590 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_md.h 0644 root root 3945 40298 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_ripemd.h 0644 root root 3123 28815 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_salsa.h 0644 root root 1969 4204 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_sha.h 0644 root root 3934 27471 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_snefru.h 0644 root root 1911 65000 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_tiger.h 0644 root root 2057 12281 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_types.h 0644 root root 2196 24122 1304491229 1 f none /usr/local/include/php/ext/hash/php_hash_whirlpool.h 0644 root root 1828 57892 1304491228 1 d none /usr/local/include/php/ext/iconv 0755 root root 1 f none /usr/local/include/php/ext/iconv/php_have_bsd_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_glibc_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_ibm_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_iconv.h 0644 root root 21 1547 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_libiconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv.h 0644 root root 4149 47589 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv_aliased_libiconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv_supports_errno.h 0644 root root 31 2396 1304491229 1 f none /usr/local/include/php/ext/iconv/php_php_iconv_h_path.h 0644 root root 54 4613 1304491229 1 f none /usr/local/include/php/ext/iconv/php_php_iconv_impl.h 0644 root root 1 10 1304491229 1 d none /usr/local/include/php/ext/json 0755 root root 1 f none /usr/local/include/php/ext/json/php_json.h 0644 root root 2408 40044 1304491229 1 d none /usr/local/include/php/ext/libxml 0755 root root 1 f none /usr/local/include/php/ext/libxml/php_libxml.h 0644 root root 4406 28001 1304491227 1 d none /usr/local/include/php/ext/pcre 0755 root root 1 f none /usr/local/include/php/ext/pcre/php_pcre.h 0644 root root 3280 57860 1304491227 1 d none /usr/local/include/php/ext/pdo 0755 root root 1 f none /usr/local/include/php/ext/pdo/php_pdo.h 0644 root root 3138 34471 1304491237 1 f none /usr/local/include/php/ext/pdo/php_pdo_driver.h 0644 root root 24209 8692 1304491237 1 d none /usr/local/include/php/ext/session 0755 root root 1 f none /usr/local/include/php/ext/session/mod_files.h 0644 root root 1343 20957 1304491229 1 f none /usr/local/include/php/ext/session/mod_user.h 0644 root root 1336 20433 1304491229 1 f none /usr/local/include/php/ext/session/php_session.h 0644 root root 8261 51721 1304491229 1 d none /usr/local/include/php/ext/sockets 0755 root root 1 f none /usr/local/include/php/ext/sockets/php_sockets.h 0644 root root 3849 31586 1304491229 1 d none /usr/local/include/php/ext/spl 0755 root root 1 f none /usr/local/include/php/ext/spl/php_spl.h 0644 root root 2825 10191 1304491229 1 f none /usr/local/include/php/ext/spl/spl_array.h 0644 root root 1825 62113 1304491229 1 f none /usr/local/include/php/ext/spl/spl_directory.h 0644 root root 6008 61896 1304491230 1 f none /usr/local/include/php/ext/spl/spl_dllist.h 0644 root root 1628 43752 1304491230 1 f none /usr/local/include/php/ext/spl/spl_engine.h 0644 root root 2417 46769 1304491230 1 f none /usr/local/include/php/ext/spl/spl_exceptions.h 0644 root root 2266 38955 1304491230 1 f none /usr/local/include/php/ext/spl/spl_fixedarray.h 0644 root root 1583 38205 1304491230 1 f none /usr/local/include/php/ext/spl/spl_functions.h 0644 root root 4550 39639 1304491230 1 f none /usr/local/include/php/ext/spl/spl_heap.h 0644 root root 1668 47292 1304491230 1 f none /usr/local/include/php/ext/spl/spl_iterators.h 0644 root root 5529 27271 1304491230 1 f none /usr/local/include/php/ext/spl/spl_observer.h 0644 root root 1697 50265 1304491230 1 d none /usr/local/include/php/ext/sqlite 0755 root root 1 d none /usr/local/include/php/ext/sqlite/libsqlite 0755 root root 1 d none /usr/local/include/php/ext/sqlite/libsqlite/src 0755 root root 1 f none /usr/local/include/php/ext/sqlite/libsqlite/src/sqlite.h 0644 root root 38776 52809 1304491230 1 d none /usr/local/include/php/ext/sqlite3 0755 root root 1 d none /usr/local/include/php/ext/sqlite3/libsqlite 0755 root root 1 f none /usr/local/include/php/ext/sqlite3/libsqlite/sqlite3.h 0644 root root 295268 23423 1304491227 1 d none /usr/local/include/php/ext/standard 0755 root root 1 f none /usr/local/include/php/ext/standard/base64.h 0644 root root 1658 45110 1304491231 1 f none /usr/local/include/php/ext/standard/basic_functions.h 0644 root root 7007 42670 1304491231 1 f none /usr/local/include/php/ext/standard/crc32.h 0644 root root 4940 63771 1304491231 1 f none /usr/local/include/php/ext/standard/credits.h 0644 root root 1784 48850 1304491231 1 f none /usr/local/include/php/ext/standard/credits_ext.h 0644 root root 5622 64237 1304491231 1 f none /usr/local/include/php/ext/standard/credits_sapi.h 0644 root root 1574 60152 1304491231 1 f none /usr/local/include/php/ext/standard/crypt_freesec.h 0644 root root 1002 17346 1304491231 1 f none /usr/local/include/php/ext/standard/css.h 0644 root root 1282 15329 1304491231 1 f none /usr/local/include/php/ext/standard/cyr_convert.h 0644 root root 1320 17706 1304491231 1 f none /usr/local/include/php/ext/standard/datetime.h 0644 root root 1446 25595 1304491231 1 f none /usr/local/include/php/ext/standard/dl.h 0644 root root 1652 41986 1304491231 1 f none /usr/local/include/php/ext/standard/exec.h 0644 root root 1748 54050 1304491231 1 f none /usr/local/include/php/ext/standard/file.h 0644 root root 4453 16353 1304491231 1 f none /usr/local/include/php/ext/standard/flock_compat.h 0644 root root 2172 20546 1304491231 1 f none /usr/local/include/php/ext/standard/fsock.h 0644 root root 1655 39420 1304491231 1 f none /usr/local/include/php/ext/standard/head.h 0644 root root 1673 48793 1304491231 1 f none /usr/local/include/php/ext/standard/html.h 0644 root root 2260 32445 1304491231 1 f none /usr/local/include/php/ext/standard/info.h 0644 root root 3753 11131 1304491231 1 f none /usr/local/include/php/ext/standard/md5.h 0644 root root 2212 26307 1304491231 1 f none /usr/local/include/php/ext/standard/microtime.h 0644 root root 1414 25860 1304491231 1 f none /usr/local/include/php/ext/standard/pack.h 0644 root root 1323 17892 1304491231 1 f none /usr/local/include/php/ext/standard/pageinfo.h 0644 root root 1513 34345 1304491231 1 f none /usr/local/include/php/ext/standard/php_array.h 0644 root root 4430 6593 1304491231 1 f none /usr/local/include/php/ext/standard/php_assert.h 0644 root root 1479 30770 1304491231 1 f none /usr/local/include/php/ext/standard/php_browscap.h 0644 root root 1380 22404 1304491231 1 f none /usr/local/include/php/ext/standard/php_crypt.h 0644 root root 1610 36644 1304491231 1 f none /usr/local/include/php/ext/standard/php_crypt_r.h 0644 root root 2178 27015 1304491231 1 f none /usr/local/include/php/ext/standard/php_dir.h 0644 root root 1653 43842 1304491231 1 f none /usr/local/include/php/ext/standard/php_dns.h 0644 root root 2932 12600 1304491231 1 f none /usr/local/include/php/ext/standard/php_ext_syslog.h 0644 root root 1603 40934 1304491231 1 f none /usr/local/include/php/ext/standard/php_filestat.h 0644 root root 3410 53060 1304491231 1 f none /usr/local/include/php/ext/standard/php_fopen_wrappers.h 0644 root root 2000 12724 1304491231 1 f none /usr/local/include/php/ext/standard/php_ftok.h 0644 root root 1312 17299 1304491231 1 f none /usr/local/include/php/ext/standard/php_http.h 0644 root root 1838 60464 1304491231 1 f none /usr/local/include/php/ext/standard/php_image.h 0644 root root 2435 37145 1304491231 1 f none /usr/local/include/php/ext/standard/php_incomplete_class.h 0644 root root 2571 53828 1304491231 1 f none /usr/local/include/php/ext/standard/php_iptc.h 0644 root root 1322 18008 1304491231 1 f none /usr/local/include/php/ext/standard/php_lcg.h 0644 root root 1583 40325 1304491231 1 f none /usr/local/include/php/ext/standard/php_link.h 0644 root root 1419 23438 1304491231 1 f none /usr/local/include/php/ext/standard/php_mail.h 0644 root root 1455 29201 1304491231 1 f none /usr/local/include/php/ext/standard/php_math.h 0644 root root 4687 61812 1304491231 1 f none /usr/local/include/php/ext/standard/php_metaphone.h 0644 root root 1296 16193 1304491231 1 f none /usr/local/include/php/ext/standard/php_rand.h 0644 root root 2651 45111 1304491231 1 f none /usr/local/include/php/ext/standard/php_smart_str.h 0644 root root 6584 10198 1304491231 1 f none /usr/local/include/php/ext/standard/php_smart_str_public.h 0644 root root 1379 23783 1304491231 1 f none /usr/local/include/php/ext/standard/php_standard.h 0644 root root 2293 34209 1304491231 1 f none /usr/local/include/php/ext/standard/php_string.h 0644 root root 6170 31798 1304491231 1 f none /usr/local/include/php/ext/standard/php_type.h 0644 root root 1640 44520 1304491231 1 f none /usr/local/include/php/ext/standard/php_uuencode.h 0644 root root 1549 36361 1304491231 1 f none /usr/local/include/php/ext/standard/php_var.h 0644 root root 5639 20384 1304491231 1 f none /usr/local/include/php/ext/standard/php_versioning.h 0644 root root 1460 30997 1304491231 1 f none /usr/local/include/php/ext/standard/proc_open.h 0644 root root 1900 4067 1304491231 1 f none /usr/local/include/php/ext/standard/quot_print.h 0644 root root 1592 43197 1304491231 1 f none /usr/local/include/php/ext/standard/scanf.h 0644 root root 2369 28917 1304491231 1 f none /usr/local/include/php/ext/standard/sha1.h 0644 root root 1795 55825 1304491232 1 f none /usr/local/include/php/ext/standard/streamsfuncs.h 0644 root root 2864 23963 1304491232 1 f none /usr/local/include/php/ext/standard/uniqid.h 0644 root root 1318 17308 1304491232 1 f none /usr/local/include/php/ext/standard/url.h 0644 root root 2316 34943 1304491232 1 f none /usr/local/include/php/ext/standard/url_scanner_ex.h 0644 root root 2195 29048 1304491232 1 f none /usr/local/include/php/ext/standard/winver.h 0644 root root 3330 23071 1304491232 1 d none /usr/local/include/php/ext/xml 0755 root root 1 f none /usr/local/include/php/ext/xml/expat_compat.h 0644 root root 6143 26328 1304491232 1 f none /usr/local/include/php/ext/xml/php_xml.h 0644 root root 4624 41219 1304491232 1 d none /usr/local/include/php/include 0755 root root 1 d none /usr/local/include/php/main 0755 root root 1 f none /usr/local/include/php/main/SAPI.h 0644 root root 9804 24761 1304491234 1 f none /usr/local/include/php/main/build-defs.h 0644 root root 5104 36977 1304491234 1 f none /usr/local/include/php/main/fopen_wrappers.h 0644 root root 2711 4346 1304491234 1 f none /usr/local/include/php/main/logos.h 0644 root root 56039 56307 1304491234 1 f none /usr/local/include/php/main/php.h 0644 root root 12259 29865 1304491234 1 f none /usr/local/include/php/main/php3_compat.h 0644 root root 4613 8602 1304491234 1 f none /usr/local/include/php/main/php_compat.h 0644 root root 18113 21852 1304491234 1 f none /usr/local/include/php/main/php_config.h 0644 root root 60491 42256 1304491234 1 f none /usr/local/include/php/main/php_content_types.h 0644 root root 1565 38761 1304491234 1 f none /usr/local/include/php/main/php_getopt.h 0644 root root 2121 21137 1304491234 1 f none /usr/local/include/php/main/php_globals.h 0644 root root 4323 24237 1304491234 1 f none /usr/local/include/php/main/php_ini.h 0644 root root 3805 29676 1304491234 1 f none /usr/local/include/php/main/php_logos.h 0644 root root 1587 41225 1304491234 1 f none /usr/local/include/php/main/php_main.h 0644 root root 2765 16233 1304491234 1 f none /usr/local/include/php/main/php_memory_streams.h 0644 root root 3387 2544 1304491234 1 f none /usr/local/include/php/main/php_network.h 0644 root root 9469 48153 1304491234 1 f none /usr/local/include/php/main/php_open_temporary_file.h 0644 root root 1806 60911 1304491234 1 f none /usr/local/include/php/main/php_output.h 0644 root root 4763 61062 1304491234 1 f none /usr/local/include/php/main/php_reentrancy.h 0644 root root 3745 23050 1304491234 1 f none /usr/local/include/php/main/php_scandir.h 0644 root root 1982 7012 1304491234 1 f none /usr/local/include/php/main/php_streams.h 0644 root root 29240 46795 1304491234 1 f none /usr/local/include/php/main/php_syslog.h 0644 root root 1624 42685 1304491235 1 f none /usr/local/include/php/main/php_ticks.h 0644 root root 1610 42145 1304491235 1 f none /usr/local/include/php/main/php_variables.h 0644 root root 2097 16119 1304491235 1 f none /usr/local/include/php/main/php_version.h 0644 root root 264 20905 1304491235 1 f none /usr/local/include/php/main/rfc1867.h 0644 root root 2582 63201 1304491235 1 f none /usr/local/include/php/main/safe_mode.h 0644 root root 1819 56924 1304491235 1 f none /usr/local/include/php/main/snprintf.h 0644 root root 7077 22839 1304491235 1 f none /usr/local/include/php/main/spprintf.h 0644 root root 2119 20753 1304491235 1 d none /usr/local/include/php/main/streams 0755 root root 1 f none /usr/local/include/php/main/streams/php_stream_context.h 0644 root root 6395 64713 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_filter_api.h 0644 root root 7273 20263 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_glob_wrapper.h 0644 root root 2179 27192 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_mmap.h 0644 root root 3565 14313 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_plain_wrapper.h 0644 root root 3842 43167 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_transport.h 0644 root root 6775 27956 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_userspace.h 0644 root root 1615 44273 1304491235 1 f none /usr/local/include/php/main/streams/php_streams_int.h 0644 root root 3087 35691 1304491235 1 f none /usr/local/include/php/main/win32_internal_function_disabled.h 0644 root root 1668 44341 1304491235 1 f none /usr/local/include/php/main/win95nt.h 0644 root root 2740 60424 1304491235 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/php 0755 root root 1 d none /usr/local/lib/php/.channels 0755 root root 1 d none /usr/local/lib/php/.channels/.alias 0755 root root 1 f none /usr/local/lib/php/.channels/.alias/pear.txt 0644 root root 12 1171 1304491236 1 f none /usr/local/lib/php/.channels/.alias/pecl.txt 0644 root root 12 1167 1304491236 1 f none /usr/local/lib/php/.channels/.alias/phpdocs.txt 0644 root root 11 1057 1304491236 1 f none /usr/local/lib/php/.channels/__uri.reg 0644 root root 293 22958 1304491236 1 f none /usr/local/lib/php/.channels/doc.php.net.reg 0644 root root 559 44531 1304491236 1 f none /usr/local/lib/php/.channels/pear.php.net.reg 0644 root root 578 46454 1304491236 1 f none /usr/local/lib/php/.channels/pecl.php.net.reg 0644 root root 581 46713 1304491236 1 f none /usr/local/lib/php/.depdb 0644 root root 2437 62643 1304491236 1 f none /usr/local/lib/php/.depdblock 0644 root root 0 0 1304491236 1 f none /usr/local/lib/php/.filemap 0644 root root 8267 62379 1304491236 1 f none /usr/local/lib/php/.lock 0644 root root 0 0 1304491236 1 d none /usr/local/lib/php/.registry 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.__uri 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.doc.php.net 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.pecl.php.net 0755 root root 1 f none /usr/local/lib/php/.registry/archive_tar.reg 0644 root root 11030 34540 1304491236 1 f none /usr/local/lib/php/.registry/console_getopt.reg 0644 root root 6518 61630 1304491236 1 f none /usr/local/lib/php/.registry/pear.reg 0644 root root 83503 3490 1304491236 1 f none /usr/local/lib/php/.registry/structures_graph.reg 0644 root root 19658 10352 1304491236 1 f none /usr/local/lib/php/.registry/xml_util.reg 0644 root root 25333 46619 1304491236 1 d none /usr/local/lib/php/Archive 0755 root root 1 f none /usr/local/lib/php/Archive/Tar.php 0644 root root 64332 37024 1304491236 1 d none /usr/local/lib/php/Console 0755 root root 1 f none /usr/local/lib/php/Console/Getopt.php 0644 root root 13469 42627 1304491236 1 d none /usr/local/lib/php/OS 0755 root root 1 f none /usr/local/lib/php/OS/Guess.php 0644 root root 10652 64621 1304491236 1 d none /usr/local/lib/php/PEAR 0755 root root 1 f none /usr/local/lib/php/PEAR.php 0644 root root 33897 12973 1304491236 1 f none /usr/local/lib/php/PEAR/Autoloader.php 0644 root root 6565 43457 1304491236 1 f none /usr/local/lib/php/PEAR/Builder.php 0644 root root 16475 43422 1304491236 1 d none /usr/local/lib/php/PEAR/ChannelFile 0755 root root 1 f none /usr/local/lib/php/PEAR/ChannelFile.php 0644 root root 50923 47666 1304491236 1 f none /usr/local/lib/php/PEAR/ChannelFile/Parser.php 0644 root root 1778 3843 1304491236 1 d none /usr/local/lib/php/PEAR/Command 0755 root root 1 f none /usr/local/lib/php/PEAR/Command.php 0644 root root 12699 14229 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Auth.php 0644 root root 2654 13953 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Auth.xml 0644 root root 1228 45820 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Build.php 0644 root root 2347 42315 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Build.xml 0644 root root 260 22723 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Channels.php 0644 root root 33535 14258 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Channels.xml 0644 root root 4218 47577 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Common.php 0644 root root 8292 30379 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Config.php 0644 root root 15422 5850 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Config.xml 0644 root root 3382 41603 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Install.php 0644 root root 50838 57862 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Install.xml 0644 root root 8574 18185 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Mirror.php 0644 root root 4594 18123 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Mirror.xml 0644 root root 617 55020 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Package.php 0644 root root 40253 22519 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Package.xml 0644 root root 7222 25087 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Pickle.php 0644 root root 15982 35572 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Pickle.xml 0644 root root 1179 38432 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Registry.php 0644 root root 46350 646 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Registry.xml 0644 root root 1790 22068 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Remote.php 0644 root root 30070 41925 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Remote.xml 0644 root root 3311 26837 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Test.php 0644 root root 11958 57541 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Test.xml 0644 root root 1641 7831 1304491236 1 f none /usr/local/lib/php/PEAR/Common.php 0644 root root 25773 61354 1304491236 1 f none /usr/local/lib/php/PEAR/Config.php 0644 root root 67882 64854 1304491236 1 f none /usr/local/lib/php/PEAR/Dependency2.php 0644 root root 50511 19089 1304491236 1 f none /usr/local/lib/php/PEAR/DependencyDB.php 0644 root root 24238 11233 1304491236 1 d none /usr/local/lib/php/PEAR/Downloader 0755 root root 1 f none /usr/local/lib/php/PEAR/Downloader.php 0644 root root 66575 40941 1304491236 1 f none /usr/local/lib/php/PEAR/Downloader/Package.php 0644 root root 76198 43539 1304491236 1 f none /usr/local/lib/php/PEAR/ErrorStack.php 0644 root root 33961 13896 1304491236 1 f none /usr/local/lib/php/PEAR/Exception.php 0644 root root 14006 61074 1304491236 1 f none /usr/local/lib/php/PEAR/FixPHP5PEARWarnings.php 0644 root root 153 11670 1304491236 1 d none /usr/local/lib/php/PEAR/Frontend 0755 root root 1 f none /usr/local/lib/php/PEAR/Frontend.php 0644 root root 6719 39624 1304491236 1 f none /usr/local/lib/php/PEAR/Frontend/CLI.php 0644 root root 25742 9245 1304491236 1 d none /usr/local/lib/php/PEAR/Installer 0755 root root 1 f none /usr/local/lib/php/PEAR/Installer.php 0644 root root 70863 36453 1304491236 1 d none /usr/local/lib/php/PEAR/Installer/Role 0755 root root 1 f none /usr/local/lib/php/PEAR/Installer/Role.php 0644 root root 7988 53230 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Cfg.php 0644 root root 4034 29149 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Cfg.xml 0644 root root 421 39111 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Common.php 0644 root root 6299 13627 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Data.php 0644 root root 851 789 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Data.xml 0644 root root 402 37127 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Doc.php 0644 root root 848 489 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Doc.xml 0644 root root 401 37027 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Ext.php 0644 root root 848 570 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Ext.xml 0644 root root 322 29582 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Php.php 0644 root root 848 543 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Php.xml 0644 root root 429 39902 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Script.php 0644 root root 857 1542 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Script.xml 0644 root root 432 40201 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Src.php 0644 root root 949 8114 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Src.xml 0644 root root 290 26283 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Test.php 0644 root root 851 903 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Test.xml 0644 root root 402 37165 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Www.php 0644 root root 844 310 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Www.xml 0644 root root 420 39048 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile.php 0644 root root 15898 14049 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/Generator 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/Generator/v1.php 0644 root root 50402 41492 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/Generator/v2.php 0644 root root 33520 19614 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/Parser 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/Parser/v1.php 0644 root root 16588 4895 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/Parser/v2.php 0644 root root 3213 42113 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v1.php 0644 root root 51184 24041 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/v2 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/v2.php 0644 root root 69502 58131 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v2/Validator.php 0644 root root 86121 31845 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v2/rw.php 0644 root root 63112 43712 1304491236 1 f none /usr/local/lib/php/PEAR/Packager.php 0644 root root 7785 18751 1304491236 1 d none /usr/local/lib/php/PEAR/REST 0755 root root 1 f none /usr/local/lib/php/PEAR/REST.php 0644 root root 16538 60662 1304491236 1 f none /usr/local/lib/php/PEAR/REST/10.php 0644 root root 32645 17676 1304491236 1 f none /usr/local/lib/php/PEAR/REST/11.php 0644 root root 11308 6671 1304491236 1 f none /usr/local/lib/php/PEAR/REST/13.php 0644 root root 11620 10650 1304491236 1 f none /usr/local/lib/php/PEAR/Registry.php 0644 root root 75860 40984 1304491236 1 f none /usr/local/lib/php/PEAR/RunTest.php 0644 root root 35962 45106 1304491236 1 d none /usr/local/lib/php/PEAR/Task 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Common.php 0644 root root 6110 13581 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Postinstallscript 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Postinstallscript.php 0644 root root 14418 12622 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Postinstallscript/rw.php 0644 root root 5833 46982 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Replace 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Replace.php 0644 root root 6810 14052 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Replace/rw.php 0644 root root 1613 57569 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Unixeol 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Unixeol.php 0644 root root 2273 45896 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Unixeol/rw.php 0644 root root 1373 38840 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Windowseol 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Windowseol.php 0644 root root 2269 45798 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Windowseol/rw.php 0644 root root 1394 41129 1304491236 1 f none /usr/local/lib/php/PEAR/Validate.php 0644 root root 22061 40427 1304491236 1 d none /usr/local/lib/php/PEAR/Validator 0755 root root 1 f none /usr/local/lib/php/PEAR/Validator/PECL.php 0644 root root 2173 32463 1304491236 1 f none /usr/local/lib/php/PEAR/XMLParser.php 0644 root root 7169 48316 1304491236 1 f none /usr/local/lib/php/PEAR5.php 0644 root root 1087 20603 1304491236 1 d none /usr/local/lib/php/Structures 0755 root root 1 d none /usr/local/lib/php/Structures/Graph 0755 root root 1 f none /usr/local/lib/php/Structures/Graph.php 0644 root root 5747 24959 1304491236 1 d none /usr/local/lib/php/Structures/Graph/Manipulator 0755 root root 1 f none /usr/local/lib/php/Structures/Graph/Manipulator/AcyclicTest.php 0644 root root 5744 30242 1304491236 1 f none /usr/local/lib/php/Structures/Graph/Manipulator/TopologicalSorter.php 0644 root root 6694 45862 1304491236 1 f none /usr/local/lib/php/Structures/Graph/Node.php 0644 root root 11048 30713 1304491236 1 f none /usr/local/lib/php/System.php 0644 root root 19967 62304 1304491236 1 d none /usr/local/lib/php/XML 0755 root root 1 f none /usr/local/lib/php/XML/Util.php 0644 root root 30440 53652 1304491236 1 d none /usr/local/lib/php/build 0755 root root 1 f none /usr/local/lib/php/build/Makefile.global 0644 root root 5498 22477 1304491223 1 f none /usr/local/lib/php/build/acinclude.m4 0644 root root 75979 1711 1304491223 1 f none /usr/local/lib/php/build/config.guess 0755 root root 44892 23949 1304491222 1 f none /usr/local/lib/php/build/config.sub 0755 root root 33387 42120 1304491222 1 f none /usr/local/lib/php/build/libtool.m4 0644 root root 230324 8547 1304491223 1 f none /usr/local/lib/php/build/ltmain.sh 0644 root root 199728 29169 1304491223 1 f none /usr/local/lib/php/build/mkdep.awk 0644 root root 2272 17033 1304491223 1 f none /usr/local/lib/php/build/phpize.m4 0644 root root 4639 35636 1304491223 1 f none /usr/local/lib/php/build/run-tests.php 0644 root root 69309 17938 1304491223 1 f none /usr/local/lib/php/build/scan_makefile_in.awk 0644 root root 410 29019 1304491223 1 f none /usr/local/lib/php/build/shtool 0755 root root 65467 40759 1304491222 1 d none /usr/local/lib/php/data 0755 root root 1 d none /usr/local/lib/php/data/PEAR 0755 root root 1 f none /usr/local/lib/php/data/PEAR/package.dtd 0644 root root 3391 37669 1304491236 1 f none /usr/local/lib/php/data/PEAR/template.spec 0644 root root 2005 41492 1304491236 1 d none /usr/local/lib/php/data/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/data/Structures_Graph/LICENSE 0644 root root 26430 8501 1304491236 1 d none /usr/local/lib/php/doc 0755 root root 1 d none /usr/local/lib/php/doc/Archive_Tar 0755 root root 1 d none /usr/local/lib/php/doc/Archive_Tar/docs 0755 root root 1 f none /usr/local/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt 0644 root root 18363 42700 1304491236 1 d none /usr/local/lib/php/doc/PEAR 0755 root root 1 f none /usr/local/lib/php/doc/PEAR/INSTALL 0644 root root 2217 63663 1304491236 1 f none /usr/local/lib/php/doc/PEAR/LICENSE 0644 root root 1477 50946 1304491236 1 f none /usr/local/lib/php/doc/PEAR/README 0644 root root 1189 36408 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/generate.sh 0644 root root 365 31831 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph.html 0644 root root 8891 56254 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Manipulator_AcyclicTest.html 0644 root root 3848 47398 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Manipulator_TopologicalSorter.html 0644 root root 4193 14339 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Node.html 0644 root root 20537 9343 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Manipulator_AcyclicTest_php.html 0644 root root 3890 45143 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Manipulator_TopologicalSorter_php.html 0644 root root 4437 26621 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Node_php.html 0644 root root 3310 60002 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_php.html 0644 root root 4231 63225 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/tutorial_Structures_Graph.pkg.html 0644 root root 4678 15136 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/classtrees_Structures_Graph.html 0644 root root 1368 51677 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/elementindex.html 0644 root root 15623 63283 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/elementindex_Structures_Graph.html 0644 root root 15952 33295 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/errors.html 0644 root root 725 58228 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/index.html 0644 root root 1009 15383 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/li_Structures_Graph.html 0644 root root 2544 5567 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html/media 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/media/banner.css 0644 root root 393 30727 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/media/stylesheet.css 0644 root root 4996 30326 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/packages.html 0644 root root 929 1827 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/todolist.html 0644 root root 876 5677 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials/Structures_Graph/Structures_Graph.pkg 0644 root root 4044 26071 1304491236 1 d none /usr/local/lib/php/doc/XML_Util 0755 root root 1 d none /usr/local/lib/php/doc/XML_Util/examples 0755 root root 1 f none /usr/local/lib/php/doc/XML_Util/examples/example.php 0644 root root 9213 38187 1304491236 1 f none /usr/local/lib/php/doc/XML_Util/examples/example2.php 0644 root root 4897 48706 1304491236 1 f none /usr/local/lib/php/pearcmd.php 0644 root root 14436 3616 1304491236 1 f none /usr/local/lib/php/peclcmd.php 0644 root root 934 6486 1304491236 1 d none /usr/local/lib/php/test 0755 root root 1 d none /usr/local/lib/php/test/Structures_Graph 0755 root root 1 d none /usr/local/lib/php/test/Structures_Graph/tests 0755 root root 1 f none /usr/local/lib/php/test/Structures_Graph/tests/AllTests.php 0644 root root 3340 5242 1304491236 1 d none /usr/local/lib/php/test/Structures_Graph/tests/testCase 0755 root root 1 f none /usr/local/lib/php/test/Structures_Graph/tests/testCase/BasicGraph.php 0644 root root 9097 25804 1304491236 1 d none /usr/local/lib/php/test/XML_Util 0755 root root 1 d none /usr/local/lib/php/test/XML_Util/tests 0755 root root 1 f none /usr/local/lib/php/test/XML_Util/tests/AllTests.php 0644 root root 3632 23755 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_apiVersion.phpt 0644 root root 449 34704 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_attributesToString.phpt 0644 root root 3631 17955 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_collapseEmptyTags.phpt 0644 root root 1795 13118 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createCDataSection.phpt 0644 root root 494 38676 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createComment.phpt 0644 root root 471 36399 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createEndElement.phpt 0644 root root 696 55132 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createStartElement.phpt 0644 root root 3773 36699 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createTag.phpt 0644 root root 5916 3444 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createTagFromArray.phpt 0644 root root 9305 36544 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_getDocTypeDeclaration.phpt 0644 root root 1516 53150 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_getXmlDeclaration.phpt 0644 root root 1167 27570 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_isValidName.phpt 0644 root root 1410 45839 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_raiseError.phpt 0644 root root 502 38519 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_replaceEntities.phpt 0644 root root 3248 61763 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_reverseEntities.phpt 0644 root root 3233 58945 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_splitQualifiedName.phpt 0644 root root 983 15045 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBug_4950.phpt 0644 root root 675 52660 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBug_5392.phpt 0644 root root 1097 23405 1304491236 1 d none /usr/local/man 0755 root root 1 d none /usr/local/man/man1 0755 root root 1 f none /usr/local/man/man1/php-config.1 0644 root root 1679 8899 1304491235 1 f none /usr/local/man/man1/php.1 0644 root root 8708 65177 1304491222 1 f none /usr/local/man/man1/phpize.1 0644 root root 1015 17417 1304491235 1 d none /var ? ? ? 1 d none /var/opt ? ? ? 1 i checkinstall 790 2504 1304568715 1 i pkginfo 191 14903 1304568716 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!070701000af160000081a40000000000000000000000014dc2238c000000bf000000b500010002ffffffffffffffff0000000800000000pkginfoPKG=php NAME=php 5.3.6 i86pc Solaris 10 VERSION=5.3.6 PSTAMP=4th May 2011 EMAIL=http://php.net/downloads.php DESC=PHP scripting language ARCH=i386 CATEGORY=application CLASSES=none BASEDIR=/ 070701000af15f000081a40000000000000000000000014dc2238c0000b2f9000000b500010002ffffffffffffffff0000000700000000pkgmap: 1 33880 1 d none /opt ? ? ? 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/pear 0755 root root 799 62128 1304491236 1 f none /usr/local/bin/peardev 0755 root root 820 63863 1304491236 1 f none /usr/local/bin/pecl 0755 root root 736 56562 1304491236 1 s none /usr/local/bin/phar=/usr/local/bin/phar.phar 1 f none /usr/local/bin/phar.phar 0755 root root 14796 38283 1304491236 1 f none /usr/local/bin/php 0755 root root 9875780 1010 1304491222 1 f none /usr/local/bin/php-config 0755 root root 3539 37688 1304491235 1 f none /usr/local/bin/phpize 0755 root root 4503 36811 1304491235 1 d none /usr/local/etc 0755 root root 1 f none /usr/local/etc/pear.conf 0644 root root 1164 30851 1304491236 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/php 0755 root root 1 d none /usr/local/include/php/TSRM 0755 root root 1 f none /usr/local/include/php/TSRM/TSRM.h 0644 root root 5337 37352 1304491233 1 f none /usr/local/include/php/TSRM/acconfig.h 0644 root root 16 1210 1304491234 1 f none /usr/local/include/php/TSRM/readdir.h 0644 root root 1102 22854 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config.h 0644 root root 32 2749 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config.w32.h 0644 root root 328 26029 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_config_common.h 0644 root root 1462 49255 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_nw.h 0644 root root 1384 23761 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_strtok_r.h 0644 root root 115 9536 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_virtual_cwd.h 0644 root root 12061 43893 1304491234 1 f none /usr/local/include/php/TSRM/tsrm_win32.h 0644 root root 3247 46832 1304491234 1 d none /usr/local/include/php/Zend 0755 root root 1 f none /usr/local/include/php/Zend/acconfig.h 0644 root root 3464 59494 1304491233 1 f none /usr/local/include/php/Zend/zend.h 0644 root root 24589 1272 1304491233 1 f none /usr/local/include/php/Zend/zend_API.h 0644 root root 38662 13584 1304491233 1 f none /usr/local/include/php/Zend/zend_alloc.h 0644 root root 12512 28928 1304491233 1 f none /usr/local/include/php/Zend/zend_build.h 0644 root root 1627 44397 1304491233 1 f none /usr/local/include/php/Zend/zend_builtin_functions.h 0644 root root 1681 48084 1304491233 1 f none /usr/local/include/php/Zend/zend_closures.h 0644 root root 1850 64044 1304491233 1 f none /usr/local/include/php/Zend/zend_compile.h 0644 root root 29717 38996 1304491233 1 f none /usr/local/include/php/Zend/zend_config.h 0644 root root 107 8464 1304491233 1 f none /usr/local/include/php/Zend/zend_config.nw.h 0644 root root 2556 51243 1304491233 1 f none /usr/local/include/php/Zend/zend_config.w32.h 0644 root root 3125 35718 1304491233 1 f none /usr/local/include/php/Zend/zend_constants.h 0644 root root 5067 11333 1304491233 1 f none /usr/local/include/php/Zend/zend_dynamic_array.h 0644 root root 1964 8615 1304491233 1 f none /usr/local/include/php/Zend/zend_errors.h 0644 root root 2199 14600 1304491233 1 f none /usr/local/include/php/Zend/zend_exceptions.h 0644 root root 3076 37288 1304491233 1 f none /usr/local/include/php/Zend/zend_execute.h 0644 root root 13221 14149 1304491233 1 f none /usr/local/include/php/Zend/zend_extensions.h 0644 root root 4663 48158 1304491233 1 f none /usr/local/include/php/Zend/zend_fast_cache.h 0644 root root 4176 32557 1304491233 1 f none /usr/local/include/php/Zend/zend_float.h 0644 root root 15707 48285 1304491233 1 f none /usr/local/include/php/Zend/zend_gc.h 0644 root root 7453 28602 1304491233 1 f none /usr/local/include/php/Zend/zend_globals.h 0644 root root 7346 28030 1304491233 1 f none /usr/local/include/php/Zend/zend_globals_macros.h 0644 root root 3285 56268 1304491233 1 f none /usr/local/include/php/Zend/zend_hash.h 0644 root root 17413 45175 1304491233 1 f none /usr/local/include/php/Zend/zend_highlight.h 0644 root root 2527 51740 1304491233 1 f none /usr/local/include/php/Zend/zend_indent.h 0644 root root 1521 33270 1304491233 1 f none /usr/local/include/php/Zend/zend_ini.h 0644 root root 10089 44662 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_parser.h 0644 root root 2695 14993 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_scanner.h 0644 root root 2007 10167 1304491233 1 f none /usr/local/include/php/Zend/zend_ini_scanner_defs.h 0644 root root 254 18992 1304491233 1 f none /usr/local/include/php/Zend/zend_interfaces.h 0644 root root 4132 9344 1304491233 1 f none /usr/local/include/php/Zend/zend_istdiostream.h 0644 root root 1703 49143 1304491233 1 f none /usr/local/include/php/Zend/zend_iterators.h 0644 root root 3747 35952 1304491233 1 f none /usr/local/include/php/Zend/zend_language_parser.h 0644 root root 7777 15479 1304491233 1 f none /usr/local/include/php/Zend/zend_language_scanner.h 0644 root root 2495 56246 1304491233 1 f none /usr/local/include/php/Zend/zend_language_scanner_defs.h 0644 root root 326 24608 1304491233 1 f none /usr/local/include/php/Zend/zend_list.h 0644 root root 5213 31386 1304491233 1 f none /usr/local/include/php/Zend/zend_llist.h 0644 root root 4027 1303 1304491233 1 f none /usr/local/include/php/Zend/zend_modules.h 0644 root root 5094 3850 1304491233 1 f none /usr/local/include/php/Zend/zend_multibyte.h 0644 root root 3861 44773 1304491233 1 f none /usr/local/include/php/Zend/zend_multiply.h 0644 root root 2562 30888 1304491233 1 f none /usr/local/include/php/Zend/zend_object_handlers.h 0644 root root 8681 19232 1304491233 1 f none /usr/local/include/php/Zend/zend_objects.h 0644 root root 2267 36174 1304491233 1 f none /usr/local/include/php/Zend/zend_objects_API.h 0644 root root 4406 36631 1304491233 1 f none /usr/local/include/php/Zend/zend_operators.h 0644 root root 15816 64895 1304491233 1 f none /usr/local/include/php/Zend/zend_ptr_stack.h 0644 root root 4135 56193 1304491233 1 f none /usr/local/include/php/Zend/zend_qsort.h 0644 root root 1512 35318 1304491233 1 f none /usr/local/include/php/Zend/zend_stack.h 0644 root root 2431 48537 1304491233 1 f none /usr/local/include/php/Zend/zend_static_allocator.h 0644 root root 1918 5917 1304491233 1 f none /usr/local/include/php/Zend/zend_stream.h 0644 root root 3001 23208 1304491233 1 f none /usr/local/include/php/Zend/zend_strtod.h 0644 root root 1829 64402 1304491233 1 f none /usr/local/include/php/Zend/zend_ts_hash.h 0644 root root 7077 1527 1304491233 1 f none /usr/local/include/php/Zend/zend_types.h 0644 root root 2368 46037 1304491233 1 f none /usr/local/include/php/Zend/zend_variables.h 0644 root root 4088 3397 1304491233 1 f none /usr/local/include/php/Zend/zend_vm.h 0644 root root 1435 31557 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_def.h 0644 root root 134565 6076 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_execute.h 0644 root root 1061735 34920 1304491233 1 f none /usr/local/include/php/Zend/zend_vm_opcodes.h 0644 root root 7914 56088 1304491233 1 d none /usr/local/include/php/ext 0755 root root 1 d none /usr/local/include/php/ext/date 0755 root root 1 d none /usr/local/include/php/ext/date/lib 0755 root root 1 f none /usr/local/include/php/ext/date/lib/timelib.h 0644 root root 5886 40128 1304491226 1 f none /usr/local/include/php/ext/date/lib/timelib_config.h 0644 root root 80 6423 1304491227 1 f none /usr/local/include/php/ext/date/lib/timelib_structs.h 0644 root root 6341 33034 1304491226 1 f none /usr/local/include/php/ext/date/php_date.h 0644 root root 5748 64150 1304491226 1 d none /usr/local/include/php/ext/dom 0755 root root 1 f none /usr/local/include/php/ext/dom/xml_common.h 0644 root root 3765 20346 1304491227 1 d none /usr/local/include/php/ext/ereg 0755 root root 1 f none /usr/local/include/php/ext/ereg/php_ereg.h 0644 root root 2001 9744 1304491227 1 f none /usr/local/include/php/ext/ereg/php_regex.h 0644 root root 2078 10764 1304491227 1 d none /usr/local/include/php/ext/ereg/regex 0755 root root 1 f none /usr/local/include/php/ext/ereg/regex/cclass.h 0644 root root 992 6590 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/cname.h 0644 root root 2070 6899 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/regex.h 0644 root root 2165 33927 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/regex2.h 0644 root root 5536 42460 1304491227 1 f none /usr/local/include/php/ext/ereg/regex/utils.h 0644 root root 501 39192 1304491227 1 d none /usr/local/include/php/ext/filter 0755 root root 1 f none /usr/local/include/php/ext/filter/php_filter.h 0644 root root 3609 15613 1304491227 1 d none /usr/local/include/php/ext/gd 0755 root root 1 f none /usr/local/include/php/ext/gd/gdcache.h 0644 root root 2866 38464 1304491227 1 d none /usr/local/include/php/ext/gd/libgd 0755 root root 1 f none /usr/local/include/php/ext/gd/libgd/gd.h 0644 root root 26208 12437 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_compat.h 0644 root root 1762 21786 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_intern.h 0644 root root 261 17896 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gd_io.h 0644 root root 950 13099 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdcache.h 0644 root root 2716 27851 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontg.h 0644 root root 529 43358 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontl.h 0644 root root 527 43410 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontmb.h 0644 root root 495 40471 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfonts.h 0644 root root 491 40278 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdfontt.h 0644 root root 522 42891 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/gdhelpers.h 0644 root root 1351 52229 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/jisx0208.h 0644 root root 71350 42899 1304491228 1 f none /usr/local/include/php/ext/gd/libgd/wbmp.h 0644 root root 1283 32935 1304491228 1 f none /usr/local/include/php/ext/gd/php_gd.h 0644 root root 6228 17604 1304491227 1 d none /usr/local/include/php/ext/hash 0755 root root 1 f none /usr/local/include/php/ext/hash/php_hash.h 0644 root root 5123 21471 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_adler32.h 0644 root root 1881 63017 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_crc32.h 0644 root root 1955 3953 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_gost.h 0644 root root 1794 56034 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_haval.h 0644 root root 2315 26590 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_md.h 0644 root root 3945 40298 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_ripemd.h 0644 root root 3123 28815 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_salsa.h 0644 root root 1969 4204 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_sha.h 0644 root root 3934 27471 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_snefru.h 0644 root root 1911 65000 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_tiger.h 0644 root root 2057 12281 1304491228 1 f none /usr/local/include/php/ext/hash/php_hash_types.h 0644 root root 2196 24122 1304491229 1 f none /usr/local/include/php/ext/hash/php_hash_whirlpool.h 0644 root root 1828 57892 1304491228 1 d none /usr/local/include/php/ext/iconv 0755 root root 1 f none /usr/local/include/php/ext/iconv/php_have_bsd_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_glibc_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_ibm_iconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_iconv.h 0644 root root 21 1547 1304491229 1 f none /usr/local/include/php/ext/iconv/php_have_libiconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv.h 0644 root root 4149 47589 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv_aliased_libiconv.h 0644 root root 1 10 1304491229 1 f none /usr/local/include/php/ext/iconv/php_iconv_supports_errno.h 0644 root root 31 2396 1304491229 1 f none /usr/local/include/php/ext/iconv/php_php_iconv_h_path.h 0644 root root 54 4613 1304491229 1 f none /usr/local/include/php/ext/iconv/php_php_iconv_impl.h 0644 root root 1 10 1304491229 1 d none /usr/local/include/php/ext/json 0755 root root 1 f none /usr/local/include/php/ext/json/php_json.h 0644 root root 2408 40044 1304491229 1 d none /usr/local/include/php/ext/libxml 0755 root root 1 f none /usr/local/include/php/ext/libxml/php_libxml.h 0644 root root 4406 28001 1304491227 1 d none /usr/local/include/php/ext/pcre 0755 root root 1 f none /usr/local/include/php/ext/pcre/php_pcre.h 0644 root root 3280 57860 1304491227 1 d none /usr/local/include/php/ext/pdo 0755 root root 1 f none /usr/local/include/php/ext/pdo/php_pdo.h 0644 root root 3138 34471 1304491237 1 f none /usr/local/include/php/ext/pdo/php_pdo_driver.h 0644 root root 24209 8692 1304491237 1 d none /usr/local/include/php/ext/session 0755 root root 1 f none /usr/local/include/php/ext/session/mod_files.h 0644 root root 1343 20957 1304491229 1 f none /usr/local/include/php/ext/session/mod_user.h 0644 root root 1336 20433 1304491229 1 f none /usr/local/include/php/ext/session/php_session.h 0644 root root 8261 51721 1304491229 1 d none /usr/local/include/php/ext/sockets 0755 root root 1 f none /usr/local/include/php/ext/sockets/php_sockets.h 0644 root root 3849 31586 1304491229 1 d none /usr/local/include/php/ext/spl 0755 root root 1 f none /usr/local/include/php/ext/spl/php_spl.h 0644 root root 2825 10191 1304491229 1 f none /usr/local/include/php/ext/spl/spl_array.h 0644 root root 1825 62113 1304491229 1 f none /usr/local/include/php/ext/spl/spl_directory.h 0644 root root 6008 61896 1304491230 1 f none /usr/local/include/php/ext/spl/spl_dllist.h 0644 root root 1628 43752 1304491230 1 f none /usr/local/include/php/ext/spl/spl_engine.h 0644 root root 2417 46769 1304491230 1 f none /usr/local/include/php/ext/spl/spl_exceptions.h 0644 root root 2266 38955 1304491230 1 f none /usr/local/include/php/ext/spl/spl_fixedarray.h 0644 root root 1583 38205 1304491230 1 f none /usr/local/include/php/ext/spl/spl_functions.h 0644 root root 4550 39639 1304491230 1 f none /usr/local/include/php/ext/spl/spl_heap.h 0644 root root 1668 47292 1304491230 1 f none /usr/local/include/php/ext/spl/spl_iterators.h 0644 root root 5529 27271 1304491230 1 f none /usr/local/include/php/ext/spl/spl_observer.h 0644 root root 1697 50265 1304491230 1 d none /usr/local/include/php/ext/sqlite 0755 root root 1 d none /usr/local/include/php/ext/sqlite/libsqlite 0755 root root 1 d none /usr/local/include/php/ext/sqlite/libsqlite/src 0755 root root 1 f none /usr/local/include/php/ext/sqlite/libsqlite/src/sqlite.h 0644 root root 38776 52809 1304491230 1 d none /usr/local/include/php/ext/sqlite3 0755 root root 1 d none /usr/local/include/php/ext/sqlite3/libsqlite 0755 root root 1 f none /usr/local/include/php/ext/sqlite3/libsqlite/sqlite3.h 0644 root root 295268 23423 1304491227 1 d none /usr/local/include/php/ext/standard 0755 root root 1 f none /usr/local/include/php/ext/standard/base64.h 0644 root root 1658 45110 1304491231 1 f none /usr/local/include/php/ext/standard/basic_functions.h 0644 root root 7007 42670 1304491231 1 f none /usr/local/include/php/ext/standard/crc32.h 0644 root root 4940 63771 1304491231 1 f none /usr/local/include/php/ext/standard/credits.h 0644 root root 1784 48850 1304491231 1 f none /usr/local/include/php/ext/standard/credits_ext.h 0644 root root 5622 64237 1304491231 1 f none /usr/local/include/php/ext/standard/credits_sapi.h 0644 root root 1574 60152 1304491231 1 f none /usr/local/include/php/ext/standard/crypt_freesec.h 0644 root root 1002 17346 1304491231 1 f none /usr/local/include/php/ext/standard/css.h 0644 root root 1282 15329 1304491231 1 f none /usr/local/include/php/ext/standard/cyr_convert.h 0644 root root 1320 17706 1304491231 1 f none /usr/local/include/php/ext/standard/datetime.h 0644 root root 1446 25595 1304491231 1 f none /usr/local/include/php/ext/standard/dl.h 0644 root root 1652 41986 1304491231 1 f none /usr/local/include/php/ext/standard/exec.h 0644 root root 1748 54050 1304491231 1 f none /usr/local/include/php/ext/standard/file.h 0644 root root 4453 16353 1304491231 1 f none /usr/local/include/php/ext/standard/flock_compat.h 0644 root root 2172 20546 1304491231 1 f none /usr/local/include/php/ext/standard/fsock.h 0644 root root 1655 39420 1304491231 1 f none /usr/local/include/php/ext/standard/head.h 0644 root root 1673 48793 1304491231 1 f none /usr/local/include/php/ext/standard/html.h 0644 root root 2260 32445 1304491231 1 f none /usr/local/include/php/ext/standard/info.h 0644 root root 3753 11131 1304491231 1 f none /usr/local/include/php/ext/standard/md5.h 0644 root root 2212 26307 1304491231 1 f none /usr/local/include/php/ext/standard/microtime.h 0644 root root 1414 25860 1304491231 1 f none /usr/local/include/php/ext/standard/pack.h 0644 root root 1323 17892 1304491231 1 f none /usr/local/include/php/ext/standard/pageinfo.h 0644 root root 1513 34345 1304491231 1 f none /usr/local/include/php/ext/standard/php_array.h 0644 root root 4430 6593 1304491231 1 f none /usr/local/include/php/ext/standard/php_assert.h 0644 root root 1479 30770 1304491231 1 f none /usr/local/include/php/ext/standard/php_browscap.h 0644 root root 1380 22404 1304491231 1 f none /usr/local/include/php/ext/standard/php_crypt.h 0644 root root 1610 36644 1304491231 1 f none /usr/local/include/php/ext/standard/php_crypt_r.h 0644 root root 2178 27015 1304491231 1 f none /usr/local/include/php/ext/standard/php_dir.h 0644 root root 1653 43842 1304491231 1 f none /usr/local/include/php/ext/standard/php_dns.h 0644 root root 2932 12600 1304491231 1 f none /usr/local/include/php/ext/standard/php_ext_syslog.h 0644 root root 1603 40934 1304491231 1 f none /usr/local/include/php/ext/standard/php_filestat.h 0644 root root 3410 53060 1304491231 1 f none /usr/local/include/php/ext/standard/php_fopen_wrappers.h 0644 root root 2000 12724 1304491231 1 f none /usr/local/include/php/ext/standard/php_ftok.h 0644 root root 1312 17299 1304491231 1 f none /usr/local/include/php/ext/standard/php_http.h 0644 root root 1838 60464 1304491231 1 f none /usr/local/include/php/ext/standard/php_image.h 0644 root root 2435 37145 1304491231 1 f none /usr/local/include/php/ext/standard/php_incomplete_class.h 0644 root root 2571 53828 1304491231 1 f none /usr/local/include/php/ext/standard/php_iptc.h 0644 root root 1322 18008 1304491231 1 f none /usr/local/include/php/ext/standard/php_lcg.h 0644 root root 1583 40325 1304491231 1 f none /usr/local/include/php/ext/standard/php_link.h 0644 root root 1419 23438 1304491231 1 f none /usr/local/include/php/ext/standard/php_mail.h 0644 root root 1455 29201 1304491231 1 f none /usr/local/include/php/ext/standard/php_math.h 0644 root root 4687 61812 1304491231 1 f none /usr/local/include/php/ext/standard/php_metaphone.h 0644 root root 1296 16193 1304491231 1 f none /usr/local/include/php/ext/standard/php_rand.h 0644 root root 2651 45111 1304491231 1 f none /usr/local/include/php/ext/standard/php_smart_str.h 0644 root root 6584 10198 1304491231 1 f none /usr/local/include/php/ext/standard/php_smart_str_public.h 0644 root root 1379 23783 1304491231 1 f none /usr/local/include/php/ext/standard/php_standard.h 0644 root root 2293 34209 1304491231 1 f none /usr/local/include/php/ext/standard/php_string.h 0644 root root 6170 31798 1304491231 1 f none /usr/local/include/php/ext/standard/php_type.h 0644 root root 1640 44520 1304491231 1 f none /usr/local/include/php/ext/standard/php_uuencode.h 0644 root root 1549 36361 1304491231 1 f none /usr/local/include/php/ext/standard/php_var.h 0644 root root 5639 20384 1304491231 1 f none /usr/local/include/php/ext/standard/php_versioning.h 0644 root root 1460 30997 1304491231 1 f none /usr/local/include/php/ext/standard/proc_open.h 0644 root root 1900 4067 1304491231 1 f none /usr/local/include/php/ext/standard/quot_print.h 0644 root root 1592 43197 1304491231 1 f none /usr/local/include/php/ext/standard/scanf.h 0644 root root 2369 28917 1304491231 1 f none /usr/local/include/php/ext/standard/sha1.h 0644 root root 1795 55825 1304491232 1 f none /usr/local/include/php/ext/standard/streamsfuncs.h 0644 root root 2864 23963 1304491232 1 f none /usr/local/include/php/ext/standard/uniqid.h 0644 root root 1318 17308 1304491232 1 f none /usr/local/include/php/ext/standard/url.h 0644 root root 2316 34943 1304491232 1 f none /usr/local/include/php/ext/standard/url_scanner_ex.h 0644 root root 2195 29048 1304491232 1 f none /usr/local/include/php/ext/standard/winver.h 0644 root root 3330 23071 1304491232 1 d none /usr/local/include/php/ext/xml 0755 root root 1 f none /usr/local/include/php/ext/xml/expat_compat.h 0644 root root 6143 26328 1304491232 1 f none /usr/local/include/php/ext/xml/php_xml.h 0644 root root 4624 41219 1304491232 1 d none /usr/local/include/php/include 0755 root root 1 d none /usr/local/include/php/main 0755 root root 1 f none /usr/local/include/php/main/SAPI.h 0644 root root 9804 24761 1304491234 1 f none /usr/local/include/php/main/build-defs.h 0644 root root 5104 36977 1304491234 1 f none /usr/local/include/php/main/fopen_wrappers.h 0644 root root 2711 4346 1304491234 1 f none /usr/local/include/php/main/logos.h 0644 root root 56039 56307 1304491234 1 f none /usr/local/include/php/main/php.h 0644 root root 12259 29865 1304491234 1 f none /usr/local/include/php/main/php3_compat.h 0644 root root 4613 8602 1304491234 1 f none /usr/local/include/php/main/php_compat.h 0644 root root 18113 21852 1304491234 1 f none /usr/local/include/php/main/php_config.h 0644 root root 60491 42256 1304491234 1 f none /usr/local/include/php/main/php_content_types.h 0644 root root 1565 38761 1304491234 1 f none /usr/local/include/php/main/php_getopt.h 0644 root root 2121 21137 1304491234 1 f none /usr/local/include/php/main/php_globals.h 0644 root root 4323 24237 1304491234 1 f none /usr/local/include/php/main/php_ini.h 0644 root root 3805 29676 1304491234 1 f none /usr/local/include/php/main/php_logos.h 0644 root root 1587 41225 1304491234 1 f none /usr/local/include/php/main/php_main.h 0644 root root 2765 16233 1304491234 1 f none /usr/local/include/php/main/php_memory_streams.h 0644 root root 3387 2544 1304491234 1 f none /usr/local/include/php/main/php_network.h 0644 root root 9469 48153 1304491234 1 f none /usr/local/include/php/main/php_open_temporary_file.h 0644 root root 1806 60911 1304491234 1 f none /usr/local/include/php/main/php_output.h 0644 root root 4763 61062 1304491234 1 f none /usr/local/include/php/main/php_reentrancy.h 0644 root root 3745 23050 1304491234 1 f none /usr/local/include/php/main/php_scandir.h 0644 root root 1982 7012 1304491234 1 f none /usr/local/include/php/main/php_streams.h 0644 root root 29240 46795 1304491234 1 f none /usr/local/include/php/main/php_syslog.h 0644 root root 1624 42685 1304491235 1 f none /usr/local/include/php/main/php_ticks.h 0644 root root 1610 42145 1304491235 1 f none /usr/local/include/php/main/php_variables.h 0644 root root 2097 16119 1304491235 1 f none /usr/local/include/php/main/php_version.h 0644 root root 264 20905 1304491235 1 f none /usr/local/include/php/main/rfc1867.h 0644 root root 2582 63201 1304491235 1 f none /usr/local/include/php/main/safe_mode.h 0644 root root 1819 56924 1304491235 1 f none /usr/local/include/php/main/snprintf.h 0644 root root 7077 22839 1304491235 1 f none /usr/local/include/php/main/spprintf.h 0644 root root 2119 20753 1304491235 1 d none /usr/local/include/php/main/streams 0755 root root 1 f none /usr/local/include/php/main/streams/php_stream_context.h 0644 root root 6395 64713 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_filter_api.h 0644 root root 7273 20263 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_glob_wrapper.h 0644 root root 2179 27192 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_mmap.h 0644 root root 3565 14313 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_plain_wrapper.h 0644 root root 3842 43167 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_transport.h 0644 root root 6775 27956 1304491235 1 f none /usr/local/include/php/main/streams/php_stream_userspace.h 0644 root root 1615 44273 1304491235 1 f none /usr/local/include/php/main/streams/php_streams_int.h 0644 root root 3087 35691 1304491235 1 f none /usr/local/include/php/main/win32_internal_function_disabled.h 0644 root root 1668 44341 1304491235 1 f none /usr/local/include/php/main/win95nt.h 0644 root root 2740 60424 1304491235 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/php 0755 root root 1 d none /usr/local/lib/php/.channels 0755 root root 1 d none /usr/local/lib/php/.channels/.alias 0755 root root 1 f none /usr/local/lib/php/.channels/.alias/pear.txt 0644 root root 12 1171 1304491236 1 f none /usr/local/lib/php/.channels/.alias/pecl.txt 0644 root root 12 1167 1304491236 1 f none /usr/local/lib/php/.channels/.alias/phpdocs.txt 0644 root root 11 1057 1304491236 1 f none /usr/local/lib/php/.channels/__uri.reg 0644 root root 293 22958 1304491236 1 f none /usr/local/lib/php/.channels/doc.php.net.reg 0644 root root 559 44531 1304491236 1 f none /usr/local/lib/php/.channels/pear.php.net.reg 0644 root root 578 46454 1304491236 1 f none /usr/local/lib/php/.channels/pecl.php.net.reg 0644 root root 581 46713 1304491236 1 f none /usr/local/lib/php/.depdb 0644 root root 2437 62643 1304491236 1 f none /usr/local/lib/php/.depdblock 0644 root root 0 0 1304491236 1 f none /usr/local/lib/php/.filemap 0644 root root 8267 62379 1304491236 1 f none /usr/local/lib/php/.lock 0644 root root 0 0 1304491236 1 d none /usr/local/lib/php/.registry 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.__uri 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.doc.php.net 0755 root root 1 d none /usr/local/lib/php/.registry/.channel.pecl.php.net 0755 root root 1 f none /usr/local/lib/php/.registry/archive_tar.reg 0644 root root 11030 34540 1304491236 1 f none /usr/local/lib/php/.registry/console_getopt.reg 0644 root root 6518 61630 1304491236 1 f none /usr/local/lib/php/.registry/pear.reg 0644 root root 83503 3490 1304491236 1 f none /usr/local/lib/php/.registry/structures_graph.reg 0644 root root 19658 10352 1304491236 1 f none /usr/local/lib/php/.registry/xml_util.reg 0644 root root 25333 46619 1304491236 1 d none /usr/local/lib/php/Archive 0755 root root 1 f none /usr/local/lib/php/Archive/Tar.php 0644 root root 64332 37024 1304491236 1 d none /usr/local/lib/php/Console 0755 root root 1 f none /usr/local/lib/php/Console/Getopt.php 0644 root root 13469 42627 1304491236 1 d none /usr/local/lib/php/OS 0755 root root 1 f none /usr/local/lib/php/OS/Guess.php 0644 root root 10652 64621 1304491236 1 d none /usr/local/lib/php/PEAR 0755 root root 1 f none /usr/local/lib/php/PEAR.php 0644 root root 33897 12973 1304491236 1 f none /usr/local/lib/php/PEAR/Autoloader.php 0644 root root 6565 43457 1304491236 1 f none /usr/local/lib/php/PEAR/Builder.php 0644 root root 16475 43422 1304491236 1 d none /usr/local/lib/php/PEAR/ChannelFile 0755 root root 1 f none /usr/local/lib/php/PEAR/ChannelFile.php 0644 root root 50923 47666 1304491236 1 f none /usr/local/lib/php/PEAR/ChannelFile/Parser.php 0644 root root 1778 3843 1304491236 1 d none /usr/local/lib/php/PEAR/Command 0755 root root 1 f none /usr/local/lib/php/PEAR/Command.php 0644 root root 12699 14229 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Auth.php 0644 root root 2654 13953 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Auth.xml 0644 root root 1228 45820 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Build.php 0644 root root 2347 42315 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Build.xml 0644 root root 260 22723 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Channels.php 0644 root root 33535 14258 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Channels.xml 0644 root root 4218 47577 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Common.php 0644 root root 8292 30379 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Config.php 0644 root root 15422 5850 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Config.xml 0644 root root 3382 41603 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Install.php 0644 root root 50838 57862 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Install.xml 0644 root root 8574 18185 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Mirror.php 0644 root root 4594 18123 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Mirror.xml 0644 root root 617 55020 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Package.php 0644 root root 40253 22519 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Package.xml 0644 root root 7222 25087 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Pickle.php 0644 root root 15982 35572 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Pickle.xml 0644 root root 1179 38432 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Registry.php 0644 root root 46350 646 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Registry.xml 0644 root root 1790 22068 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Remote.php 0644 root root 30070 41925 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Remote.xml 0644 root root 3311 26837 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Test.php 0644 root root 11958 57541 1304491236 1 f none /usr/local/lib/php/PEAR/Command/Test.xml 0644 root root 1641 7831 1304491236 1 f none /usr/local/lib/php/PEAR/Common.php 0644 root root 25773 61354 1304491236 1 f none /usr/local/lib/php/PEAR/Config.php 0644 root root 67882 64854 1304491236 1 f none /usr/local/lib/php/PEAR/Dependency2.php 0644 root root 50511 19089 1304491236 1 f none /usr/local/lib/php/PEAR/DependencyDB.php 0644 root root 24238 11233 1304491236 1 d none /usr/local/lib/php/PEAR/Downloader 0755 root root 1 f none /usr/local/lib/php/PEAR/Downloader.php 0644 root root 66575 40941 1304491236 1 f none /usr/local/lib/php/PEAR/Downloader/Package.php 0644 root root 76198 43539 1304491236 1 f none /usr/local/lib/php/PEAR/ErrorStack.php 0644 root root 33961 13896 1304491236 1 f none /usr/local/lib/php/PEAR/Exception.php 0644 root root 14006 61074 1304491236 1 f none /usr/local/lib/php/PEAR/FixPHP5PEARWarnings.php 0644 root root 153 11670 1304491236 1 d none /usr/local/lib/php/PEAR/Frontend 0755 root root 1 f none /usr/local/lib/php/PEAR/Frontend.php 0644 root root 6719 39624 1304491236 1 f none /usr/local/lib/php/PEAR/Frontend/CLI.php 0644 root root 25742 9245 1304491236 1 d none /usr/local/lib/php/PEAR/Installer 0755 root root 1 f none /usr/local/lib/php/PEAR/Installer.php 0644 root root 70863 36453 1304491236 1 d none /usr/local/lib/php/PEAR/Installer/Role 0755 root root 1 f none /usr/local/lib/php/PEAR/Installer/Role.php 0644 root root 7988 53230 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Cfg.php 0644 root root 4034 29149 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Cfg.xml 0644 root root 421 39111 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Common.php 0644 root root 6299 13627 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Data.php 0644 root root 851 789 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Data.xml 0644 root root 402 37127 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Doc.php 0644 root root 848 489 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Doc.xml 0644 root root 401 37027 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Ext.php 0644 root root 848 570 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Ext.xml 0644 root root 322 29582 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Php.php 0644 root root 848 543 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Php.xml 0644 root root 429 39902 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Script.php 0644 root root 857 1542 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Script.xml 0644 root root 432 40201 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Src.php 0644 root root 949 8114 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Src.xml 0644 root root 290 26283 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Test.php 0644 root root 851 903 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Test.xml 0644 root root 402 37165 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Www.php 0644 root root 844 310 1304491236 1 f none /usr/local/lib/php/PEAR/Installer/Role/Www.xml 0644 root root 420 39048 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile.php 0644 root root 15898 14049 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/Generator 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/Generator/v1.php 0644 root root 50402 41492 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/Generator/v2.php 0644 root root 33520 19614 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/Parser 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/Parser/v1.php 0644 root root 16588 4895 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/Parser/v2.php 0644 root root 3213 42113 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v1.php 0644 root root 51184 24041 1304491236 1 d none /usr/local/lib/php/PEAR/PackageFile/v2 0755 root root 1 f none /usr/local/lib/php/PEAR/PackageFile/v2.php 0644 root root 69502 58131 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v2/Validator.php 0644 root root 86121 31845 1304491236 1 f none /usr/local/lib/php/PEAR/PackageFile/v2/rw.php 0644 root root 63112 43712 1304491236 1 f none /usr/local/lib/php/PEAR/Packager.php 0644 root root 7785 18751 1304491236 1 d none /usr/local/lib/php/PEAR/REST 0755 root root 1 f none /usr/local/lib/php/PEAR/REST.php 0644 root root 16538 60662 1304491236 1 f none /usr/local/lib/php/PEAR/REST/10.php 0644 root root 32645 17676 1304491236 1 f none /usr/local/lib/php/PEAR/REST/11.php 0644 root root 11308 6671 1304491236 1 f none /usr/local/lib/php/PEAR/REST/13.php 0644 root root 11620 10650 1304491236 1 f none /usr/local/lib/php/PEAR/Registry.php 0644 root root 75860 40984 1304491236 1 f none /usr/local/lib/php/PEAR/RunTest.php 0644 root root 35962 45106 1304491236 1 d none /usr/local/lib/php/PEAR/Task 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Common.php 0644 root root 6110 13581 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Postinstallscript 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Postinstallscript.php 0644 root root 14418 12622 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Postinstallscript/rw.php 0644 root root 5833 46982 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Replace 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Replace.php 0644 root root 6810 14052 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Replace/rw.php 0644 root root 1613 57569 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Unixeol 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Unixeol.php 0644 root root 2273 45896 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Unixeol/rw.php 0644 root root 1373 38840 1304491236 1 d none /usr/local/lib/php/PEAR/Task/Windowseol 0755 root root 1 f none /usr/local/lib/php/PEAR/Task/Windowseol.php 0644 root root 2269 45798 1304491236 1 f none /usr/local/lib/php/PEAR/Task/Windowseol/rw.php 0644 root root 1394 41129 1304491236 1 f none /usr/local/lib/php/PEAR/Validate.php 0644 root root 22061 40427 1304491236 1 d none /usr/local/lib/php/PEAR/Validator 0755 root root 1 f none /usr/local/lib/php/PEAR/Validator/PECL.php 0644 root root 2173 32463 1304491236 1 f none /usr/local/lib/php/PEAR/XMLParser.php 0644 root root 7169 48316 1304491236 1 f none /usr/local/lib/php/PEAR5.php 0644 root root 1087 20603 1304491236 1 d none /usr/local/lib/php/Structures 0755 root root 1 d none /usr/local/lib/php/Structures/Graph 0755 root root 1 f none /usr/local/lib/php/Structures/Graph.php 0644 root root 5747 24959 1304491236 1 d none /usr/local/lib/php/Structures/Graph/Manipulator 0755 root root 1 f none /usr/local/lib/php/Structures/Graph/Manipulator/AcyclicTest.php 0644 root root 5744 30242 1304491236 1 f none /usr/local/lib/php/Structures/Graph/Manipulator/TopologicalSorter.php 0644 root root 6694 45862 1304491236 1 f none /usr/local/lib/php/Structures/Graph/Node.php 0644 root root 11048 30713 1304491236 1 f none /usr/local/lib/php/System.php 0644 root root 19967 62304 1304491236 1 d none /usr/local/lib/php/XML 0755 root root 1 f none /usr/local/lib/php/XML/Util.php 0644 root root 30440 53652 1304491236 1 d none /usr/local/lib/php/build 0755 root root 1 f none /usr/local/lib/php/build/Makefile.global 0644 root root 5498 22477 1304491223 1 f none /usr/local/lib/php/build/acinclude.m4 0644 root root 75979 1711 1304491223 1 f none /usr/local/lib/php/build/config.guess 0755 root root 44892 23949 1304491222 1 f none /usr/local/lib/php/build/config.sub 0755 root root 33387 42120 1304491222 1 f none /usr/local/lib/php/build/libtool.m4 0644 root root 230324 8547 1304491223 1 f none /usr/local/lib/php/build/ltmain.sh 0644 root root 199728 29169 1304491223 1 f none /usr/local/lib/php/build/mkdep.awk 0644 root root 2272 17033 1304491223 1 f none /usr/local/lib/php/build/phpize.m4 0644 root root 4639 35636 1304491223 1 f none /usr/local/lib/php/build/run-tests.php 0644 root root 69309 17938 1304491223 1 f none /usr/local/lib/php/build/scan_makefile_in.awk 0644 root root 410 29019 1304491223 1 f none /usr/local/lib/php/build/shtool 0755 root root 65467 40759 1304491222 1 d none /usr/local/lib/php/data 0755 root root 1 d none /usr/local/lib/php/data/PEAR 0755 root root 1 f none /usr/local/lib/php/data/PEAR/package.dtd 0644 root root 3391 37669 1304491236 1 f none /usr/local/lib/php/data/PEAR/template.spec 0644 root root 2005 41492 1304491236 1 d none /usr/local/lib/php/data/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/data/Structures_Graph/LICENSE 0644 root root 26430 8501 1304491236 1 d none /usr/local/lib/php/doc 0755 root root 1 d none /usr/local/lib/php/doc/Archive_Tar 0755 root root 1 d none /usr/local/lib/php/doc/Archive_Tar/docs 0755 root root 1 f none /usr/local/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt 0644 root root 18363 42700 1304491236 1 d none /usr/local/lib/php/doc/PEAR 0755 root root 1 f none /usr/local/lib/php/doc/PEAR/INSTALL 0644 root root 2217 63663 1304491236 1 f none /usr/local/lib/php/doc/PEAR/LICENSE 0644 root root 1477 50946 1304491236 1 f none /usr/local/lib/php/doc/PEAR/README 0644 root root 1189 36408 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/generate.sh 0644 root root 365 31831 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph.html 0644 root root 8891 56254 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Manipulator_AcyclicTest.html 0644 root root 3848 47398 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Manipulator_TopologicalSorter.html 0644 root root 4193 14339 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/Structures_Graph_Node.html 0644 root root 20537 9343 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Manipulator_AcyclicTest_php.html 0644 root root 3890 45143 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Manipulator_TopologicalSorter_php.html 0644 root root 4437 26621 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_Node_php.html 0644 root root 3310 60002 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/_Structures_Graph_php.html 0644 root root 4231 63225 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/Structures_Graph/tutorial_Structures_Graph.pkg.html 0644 root root 4678 15136 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/classtrees_Structures_Graph.html 0644 root root 1368 51677 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/elementindex.html 0644 root root 15623 63283 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/elementindex_Structures_Graph.html 0644 root root 15952 33295 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/errors.html 0644 root root 725 58228 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/index.html 0644 root root 1009 15383 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/li_Structures_Graph.html 0644 root root 2544 5567 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/html/media 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/media/banner.css 0644 root root 393 30727 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/media/stylesheet.css 0644 root root 4996 30326 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/packages.html 0644 root root 929 1827 1304491236 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/html/todolist.html 0644 root root 876 5677 1304491236 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials 0755 root root 1 d none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials/Structures_Graph 0755 root root 1 f none /usr/local/lib/php/doc/Structures_Graph/docs/tutorials/Structures_Graph/Structures_Graph.pkg 0644 root root 4044 26071 1304491236 1 d none /usr/local/lib/php/doc/XML_Util 0755 root root 1 d none /usr/local/lib/php/doc/XML_Util/examples 0755 root root 1 f none /usr/local/lib/php/doc/XML_Util/examples/example.php 0644 root root 9213 38187 1304491236 1 f none /usr/local/lib/php/doc/XML_Util/examples/example2.php 0644 root root 4897 48706 1304491236 1 f none /usr/local/lib/php/pearcmd.php 0644 root root 14436 3616 1304491236 1 f none /usr/local/lib/php/peclcmd.php 0644 root root 934 6486 1304491236 1 d none /usr/local/lib/php/test 0755 root root 1 d none /usr/local/lib/php/test/Structures_Graph 0755 root root 1 d none /usr/local/lib/php/test/Structures_Graph/tests 0755 root root 1 f none /usr/local/lib/php/test/Structures_Graph/tests/AllTests.php 0644 root root 3340 5242 1304491236 1 d none /usr/local/lib/php/test/Structures_Graph/tests/testCase 0755 root root 1 f none /usr/local/lib/php/test/Structures_Graph/tests/testCase/BasicGraph.php 0644 root root 9097 25804 1304491236 1 d none /usr/local/lib/php/test/XML_Util 0755 root root 1 d none /usr/local/lib/php/test/XML_Util/tests 0755 root root 1 f none /usr/local/lib/php/test/XML_Util/tests/AllTests.php 0644 root root 3632 23755 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_apiVersion.phpt 0644 root root 449 34704 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_attributesToString.phpt 0644 root root 3631 17955 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_collapseEmptyTags.phpt 0644 root root 1795 13118 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createCDataSection.phpt 0644 root root 494 38676 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createComment.phpt 0644 root root 471 36399 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createEndElement.phpt 0644 root root 696 55132 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createStartElement.phpt 0644 root root 3773 36699 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createTag.phpt 0644 root root 5916 3444 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_createTagFromArray.phpt 0644 root root 9305 36544 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_getDocTypeDeclaration.phpt 0644 root root 1516 53150 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_getXmlDeclaration.phpt 0644 root root 1167 27570 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_isValidName.phpt 0644 root root 1410 45839 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_raiseError.phpt 0644 root root 502 38519 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_replaceEntities.phpt 0644 root root 3248 61763 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_reverseEntities.phpt 0644 root root 3233 58945 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBasic_splitQualifiedName.phpt 0644 root root 983 15045 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBug_4950.phpt 0644 root root 675 52660 1304491236 1 f none /usr/local/lib/php/test/XML_Util/tests/testBug_5392.phpt 0644 root root 1097 23405 1304491236 1 d none /usr/local/man 0755 root root 1 d none /usr/local/man/man1 0755 root root 1 f none /usr/local/man/man1/php-config.1 0644 root root 1679 8899 1304491235 1 f none /usr/local/man/man1/php.1 0644 root root 8708 65177 1304491222 1 f none /usr/local/man/man1/phpize.1 0644 root root 1015 17417 1304491235 1 d none /var ? ? ? 1 d none /var/opt ? ? ? 1 i checkinstall 790 2504 1304568715 1 i pkginfo 191 14903 1304568716 070701000af36b000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000000800000000install070701000af36c000081ed0000000000000000000000014dc2238b00000316000000b500010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 070701000af161000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000000500000000root070701000af162000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000000900000000root/usr070701000af163000041ed0000000000000000000000074dc2238c00000000000000b500010002ffffffffffffffff0000000f00000000root/usr/local070701000af16e000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000001700000000root/usr/local/include070701000af16f000041ed0000000000000000000000064dc2238c00000000000000b500010002ffffffffffffffff0000001b00000000root/usr/local/include/php070701000af1b5000041ed0000000000000000000000144dc2238c00000000000000b500010002ffffffffffffffff0000001f00000000root/usr/local/include/php/ext070701000af1bc000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002300000000root/usr/local/include/php/ext/dom070701000af1bd000081a40000000000000000000000014dc0f4db00000eb5000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/dom/xml_common.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | +----------------------------------------------------------------------+ */ /* $Id: xml_common.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_XML_COMMON_H #define PHP_XML_COMMON_H #include "ext/libxml/php_libxml.h" typedef libxml_doc_props *dom_doc_propsptr; typedef struct _dom_object { zend_object std; void *ptr; php_libxml_ref_obj *document; HashTable *prop_handler; zend_object_handle handle; } dom_object; #ifdef PHP_WIN32 # ifdef PHPAPI # undef PHPAPI # endif # ifdef DOM_EXPORTS # define PHPAPI __declspec(dllexport) # else # define PHPAPI __declspec(dllimport) # endif /* DOM_EXPORTS */ #elif defined(__GNUC__) && __GNUC__ >= 4 # ifdef PHPAPI # undef PHPAPI # endif # define PHPAPI __attribute__ ((visibility("default"))) #endif /* PHP_WIN32 */ #define PHP_DOM_EXPORT PHPAPI PHP_DOM_EXPORT extern zend_class_entry *dom_node_class_entry; PHP_DOM_EXPORT dom_object *php_dom_object_get_data(xmlNodePtr obj); PHP_DOM_EXPORT zval *php_dom_create_object(xmlNodePtr obj, int *found, zval *in, zval* return_value, dom_object *domobj TSRMLS_DC); PHP_DOM_EXPORT xmlNodePtr dom_object_get_node(dom_object *obj); #define DOM_XMLNS_NAMESPACE \ (const xmlChar *) "http://www.w3.org/2000/xmlns/" #define NODE_GET_OBJ(__ptr, __id, __prtype, __intern) { \ __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \ if (__intern->node == NULL || !(__ptr = (__prtype)__intern->node->node)) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\ RETURN_NULL();\ } \ } #define DOC_GET_OBJ(__ptr, __id, __prtype, __intern) { \ __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \ if (__intern->document != NULL) { \ if (!(__ptr = (__prtype)__intern->document->ptr)) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\ RETURN_NULL();\ } \ } \ } #define DOM_RET_OBJ(zval, obj, ret, domobject) \ if (NULL == (zval = php_dom_create_object(obj, ret, zval, return_value, domobject TSRMLS_CC))) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); \ RETURN_FALSE; \ } #define DOM_GET_THIS(zval) \ if (NULL == (zval = getThis())) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Underlying object missing"); \ RETURN_FALSE; \ } #define DOM_GET_THIS_OBJ(__ptr, __id, __prtype, __intern) \ DOM_GET_THIS(__id); \ DOM_GET_OBJ(__ptr, __id, __prtype, __intern); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af1fc000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/php/ext/session070701000af1fe000081a40000000000000000000000014dc0f4dd00000538000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/session/mod_user.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: mod_user.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef MOD_USER_H #define MOD_USER_H extern ps_module ps_mod_user; #define ps_user_ptr &ps_mod_user PS_FUNCS(user); #endif 070701000af1fd000081a40000000000000000000000014dc0f4dd0000053f000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/session/mod_files.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: mod_files.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef MOD_FILES_H #define MOD_FILES_H extern ps_module ps_mod_files; #define ps_files_ptr &ps_mod_files PS_FUNCS(files); #endif 070701000af1ff000081a40000000000000000000000014dc0f4dd00002045000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/session/php_session.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: php_session.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_SESSION_H #define PHP_SESSION_H #include "ext/standard/php_var.h" #if defined(HAVE_HASH_EXT) && !defined(COMPILE_DL_HASH) # include "ext/hash/php_hash.h" #endif #define PHP_SESSION_API 20020330 #define PS_OPEN_ARGS void **mod_data, const char *save_path, const char *session_name TSRMLS_DC #define PS_CLOSE_ARGS void **mod_data TSRMLS_DC #define PS_READ_ARGS void **mod_data, const char *key, char **val, int *vallen TSRMLS_DC #define PS_WRITE_ARGS void **mod_data, const char *key, const char *val, const int vallen TSRMLS_DC #define PS_DESTROY_ARGS void **mod_data, const char *key TSRMLS_DC #define PS_GC_ARGS void **mod_data, int maxlifetime, int *nrdels TSRMLS_DC #define PS_CREATE_SID_ARGS void **mod_data, int *newlen TSRMLS_DC /* default create id function */ PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS); typedef struct ps_module_struct { const char *s_name; int (*s_open)(PS_OPEN_ARGS); int (*s_close)(PS_CLOSE_ARGS); int (*s_read)(PS_READ_ARGS); int (*s_write)(PS_WRITE_ARGS); int (*s_destroy)(PS_DESTROY_ARGS); int (*s_gc)(PS_GC_ARGS); char *(*s_create_sid)(PS_CREATE_SID_ARGS); } ps_module; #define PS_GET_MOD_DATA() *mod_data #define PS_SET_MOD_DATA(a) *mod_data = (a) #define PS_OPEN_FUNC(x) int ps_open_##x(PS_OPEN_ARGS) #define PS_CLOSE_FUNC(x) int ps_close_##x(PS_CLOSE_ARGS) #define PS_READ_FUNC(x) int ps_read_##x(PS_READ_ARGS) #define PS_WRITE_FUNC(x) int ps_write_##x(PS_WRITE_ARGS) #define PS_DESTROY_FUNC(x) int ps_delete_##x(PS_DESTROY_ARGS) #define PS_GC_FUNC(x) int ps_gc_##x(PS_GC_ARGS) #define PS_CREATE_SID_FUNC(x) char *ps_create_sid_##x(PS_CREATE_SID_ARGS) #define PS_FUNCS(x) \ PS_OPEN_FUNC(x); \ PS_CLOSE_FUNC(x); \ PS_READ_FUNC(x); \ PS_WRITE_FUNC(x); \ PS_DESTROY_FUNC(x); \ PS_GC_FUNC(x); \ PS_CREATE_SID_FUNC(x) #define PS_MOD(x) \ #x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \ ps_delete_##x, ps_gc_##x, php_session_create_id /* SID enabled module handler definitions */ #define PS_FUNCS_SID(x) \ PS_OPEN_FUNC(x); \ PS_CLOSE_FUNC(x); \ PS_READ_FUNC(x); \ PS_WRITE_FUNC(x); \ PS_DESTROY_FUNC(x); \ PS_GC_FUNC(x); \ PS_CREATE_SID_FUNC(x) #define PS_MOD_SID(x) \ #x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \ ps_delete_##x, ps_gc_##x, ps_create_sid_##x typedef enum { php_session_disabled, php_session_none, php_session_active } php_session_status; typedef struct _php_ps_globals { char *save_path; char *session_name; char *id; char *extern_referer_chk; char *entropy_file; char *cache_limiter; long entropy_length; long cookie_lifetime; char *cookie_path; char *cookie_domain; zend_bool cookie_secure; zend_bool cookie_httponly; ps_module *mod; void *mod_data; php_session_status session_status; long gc_probability; long gc_divisor; long gc_maxlifetime; int module_number; long cache_expire; union { zval *names[6]; struct { zval *ps_open; zval *ps_close; zval *ps_read; zval *ps_write; zval *ps_destroy; zval *ps_gc; } name; } mod_user_names; zend_bool bug_compat; /* Whether to behave like PHP 4.2 and earlier */ zend_bool bug_compat_warn; /* Whether to warn about it */ const struct ps_serializer_struct *serializer; zval *http_session_vars; zend_bool auto_start; zend_bool use_cookies; zend_bool use_only_cookies; zend_bool use_trans_sid; /* contains the INI value of whether to use trans-sid */ zend_bool apply_trans_sid; /* whether or not to enable trans-sid for the current request */ long hash_func; #if defined(HAVE_HASH_EXT) && !defined(COMPILE_DL_HASH) php_hash_ops *hash_ops; #endif long hash_bits_per_character; int send_cookie; int define_sid; zend_bool invalid_session_id; /* allows the driver to report about an invalid session id and request id regeneration */ } php_ps_globals; typedef php_ps_globals zend_ps_globals; extern zend_module_entry session_module_entry; #define phpext_session_ptr &session_module_entry #ifdef ZTS #define PS(v) TSRMG(ps_globals_id, php_ps_globals *, v) #else #define PS(v) (ps_globals.v) #endif #define PS_SERIALIZER_ENCODE_ARGS char **newstr, int *newlen TSRMLS_DC #define PS_SERIALIZER_DECODE_ARGS const char *val, int vallen TSRMLS_DC typedef struct ps_serializer_struct { const char *name; int (*encode)(PS_SERIALIZER_ENCODE_ARGS); int (*decode)(PS_SERIALIZER_DECODE_ARGS); } ps_serializer; #define PS_SERIALIZER_ENCODE_NAME(x) ps_srlzr_encode_##x #define PS_SERIALIZER_DECODE_NAME(x) ps_srlzr_decode_##x #define PS_SERIALIZER_ENCODE_FUNC(x) \ int PS_SERIALIZER_ENCODE_NAME(x)(PS_SERIALIZER_ENCODE_ARGS) #define PS_SERIALIZER_DECODE_FUNC(x) \ int PS_SERIALIZER_DECODE_NAME(x)(PS_SERIALIZER_DECODE_ARGS) #define PS_SERIALIZER_FUNCS(x) \ PS_SERIALIZER_ENCODE_FUNC(x); \ PS_SERIALIZER_DECODE_FUNC(x) #define PS_SERIALIZER_ENTRY(x) \ { #x, PS_SERIALIZER_ENCODE_NAME(x), PS_SERIALIZER_DECODE_NAME(x) } PHPAPI void session_adapt_url(const char *, size_t, char **, size_t * TSRMLS_DC); PHPAPI void php_add_session_var(char *name, size_t namelen TSRMLS_DC); PHPAPI void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unserialize_data_t *var_hash TSRMLS_DC); PHPAPI int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC); PHPAPI int php_session_register_module(ps_module *); PHPAPI int php_session_register_serializer(const char *name, int (*encode)(PS_SERIALIZER_ENCODE_ARGS), int (*decode)(PS_SERIALIZER_DECODE_ARGS)); PHPAPI void php_session_set_id(char *id TSRMLS_DC); PHPAPI void php_session_start(TSRMLS_D); PHPAPI ps_module *_php_find_ps_module(char *name TSRMLS_DC); PHPAPI const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC); #define PS_ADD_VARL(name,namelen) do { \ php_add_session_var(name, namelen TSRMLS_CC); \ } while (0) #define PS_ADD_VAR(name) PS_ADD_VARL(name, strlen(name)) #define PS_DEL_VARL(name,namelen) do { \ if (PS(http_session_vars)) { \ zend_hash_del(Z_ARRVAL_P(PS(http_session_vars)), name, namelen+1); \ } \ } while (0) #define PS_ENCODE_VARS \ char *key; \ uint key_length; \ ulong num_key; \ zval **struc; #define PS_ENCODE_LOOP(code) do { \ HashTable *_ht = Z_ARRVAL_P(PS(http_session_vars)); \ int key_type; \ \ for (zend_hash_internal_pointer_reset(_ht); \ (key_type = zend_hash_get_current_key_ex(_ht, &key, &key_length, &num_key, 0, NULL)) != HASH_KEY_NON_EXISTANT; \ zend_hash_move_forward(_ht)) { \ if (key_type == HASH_KEY_IS_LONG) { \ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Skipping numeric key %ld", num_key); \ continue; \ } \ key_length--; \ if (php_get_session_var(key, key_length, &struc TSRMLS_CC) == SUCCESS) { \ code; \ } \ } \ } while(0) PHPAPI ZEND_EXTERN_MODULE_GLOBALS(ps) void php_session_auto_start(void *data); void php_session_shutdown(void *data); #endif 070701000af1c7000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/php/ext/filter070701000af1c8000081a40000000000000000000000014dc0f4db00000e19000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/filter/php_filter.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Derick Rethans | +----------------------------------------------------------------------+ */ /* $Id: php_filter.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_FILTER_H #define PHP_FILTER_H #include "SAPI.h" #include "zend_API.h" #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" #include "ext/standard/php_string.h" #include "ext/standard/html.h" #include "php_variables.h" extern zend_module_entry filter_module_entry; #define phpext_filter_ptr &filter_module_entry #ifdef ZTS #include "TSRM.h" #endif PHP_MINIT_FUNCTION(filter); PHP_MSHUTDOWN_FUNCTION(filter); PHP_RINIT_FUNCTION(filter); PHP_RSHUTDOWN_FUNCTION(filter); PHP_MINFO_FUNCTION(filter); PHP_FUNCTION(filter_input); PHP_FUNCTION(filter_var); PHP_FUNCTION(filter_input_array); PHP_FUNCTION(filter_var_array); PHP_FUNCTION(filter_list); PHP_FUNCTION(filter_has_var); PHP_FUNCTION(filter_id); ZEND_BEGIN_MODULE_GLOBALS(filter) zval *post_array; zval *get_array; zval *cookie_array; zval *env_array; zval *server_array; zval *session_array; long default_filter; long default_filter_flags; ZEND_END_MODULE_GLOBALS(filter) #ifdef ZTS #define IF_G(v) TSRMG(filter_globals_id, zend_filter_globals *, v) #else #define IF_G(v) (filter_globals.v) #endif #define PHP_INPUT_FILTER_PARAM_DECL zval *value, long flags, zval *option_array, char *charset TSRMLS_DC void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_validate_regexp(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_string(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_encoded(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_special_chars(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_full_special_chars(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_unsafe_raw(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_email(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_url(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_number_int(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_number_float(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_magic_quotes(PHP_INPUT_FILTER_PARAM_DECL); void php_filter_callback(PHP_INPUT_FILTER_PARAM_DECL); #endif /* FILTER_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1f9000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002300000000root/usr/local/include/php/ext/pdo070701000af1fb000081a40000000000000000000000014dc0f4e500005e91000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/pdo/php_pdo_driver.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: php_pdo_driver.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_PDO_DRIVER_H #define PHP_PDO_DRIVER_H #include "php_pdo.h" /* forward declarations */ typedef struct _pdo_dbh_t pdo_dbh_t; typedef struct _pdo_stmt_t pdo_stmt_t; struct pdo_bound_param_data; #ifdef PHP_WIN32 typedef __int64 pdo_int64_t; typedef unsigned __int64 pdo_uint64_t; #else typedef long long int pdo_int64_t; typedef unsigned long long int pdo_uint64_t; #endif PDO_API char *php_pdo_int64_to_str(pdo_int64_t i64 TSRMLS_DC); #ifndef TRUE # define TRUE 1 #endif #ifndef FALSE # define FALSE 0 #endif #define PDO_DRIVER_API 20080721 enum pdo_param_type { PDO_PARAM_NULL, /* int as in long (the php native int type). * If you mark a column as an int, PDO expects get_col to return * a pointer to a long */ PDO_PARAM_INT, /* get_col ptr should point to start of the string buffer */ PDO_PARAM_STR, /* get_col: when len is 0 ptr should point to a php_stream *, * otherwise it should behave like a string. Indicate a NULL field * value by setting the ptr to NULL */ PDO_PARAM_LOB, /* get_col: will expect the ptr to point to a new PDOStatement object handle, * but this isn't wired up yet */ PDO_PARAM_STMT, /* hierarchical result set */ /* get_col ptr should point to a zend_bool */ PDO_PARAM_BOOL, /* get_col ptr should point to a zval* and the driver is responsible for adding correct type information to get_column_meta() */ PDO_PARAM_ZVAL }; /* magic flag to denote a parameter as being input/output */ #define PDO_PARAM_INPUT_OUTPUT 0x80000000 #define PDO_PARAM_FLAGS 0xFFFF0000 #define PDO_PARAM_TYPE(x) ((x) & ~PDO_PARAM_FLAGS) enum pdo_fetch_type { PDO_FETCH_USE_DEFAULT, PDO_FETCH_LAZY, PDO_FETCH_ASSOC, PDO_FETCH_NUM, PDO_FETCH_BOTH, PDO_FETCH_OBJ, PDO_FETCH_BOUND, /* return true/false only; rely on bound columns */ PDO_FETCH_COLUMN, /* fetch a numbered column only */ PDO_FETCH_CLASS, /* create an instance of named class, call ctor and set properties */ PDO_FETCH_INTO, /* fetch row into an existing object */ PDO_FETCH_FUNC, /* fetch into function and return its result */ PDO_FETCH_NAMED, /* like PDO_FETCH_ASSOC, but can handle duplicate names */ PDO_FETCH_KEY_PAIR, /* fetch into an array where the 1st column is a key and all subsequent columns are values */ PDO_FETCH__MAX /* must be last */ }; #define PDO_FETCH_FLAGS 0xFFFF0000 /* fetchAll() modes or'd to PDO_FETCH_XYZ */ #define PDO_FETCH_GROUP 0x00010000 /* fetch into groups */ #define PDO_FETCH_UNIQUE 0x00030000 /* fetch into groups assuming first col is unique */ #define PDO_FETCH_CLASSTYPE 0x00040000 /* fetch class gets its class name from 1st column */ #define PDO_FETCH_SERIALIZE 0x00080000 /* fetch class instances by calling serialize */ #define PDO_FETCH_PROPS_LATE 0x00100000 /* fetch props after calling ctor */ /* fetch orientation for scrollable cursors */ enum pdo_fetch_orientation { PDO_FETCH_ORI_NEXT, /* default: fetch the next available row */ PDO_FETCH_ORI_PRIOR, /* scroll back to prior row and fetch that */ PDO_FETCH_ORI_FIRST, /* scroll to the first row and fetch that */ PDO_FETCH_ORI_LAST, /* scroll to the last row and fetch that */ PDO_FETCH_ORI_ABS, /* scroll to an absolute numbered row and fetch that */ PDO_FETCH_ORI_REL /* scroll relative to the current row, and fetch that */ }; enum pdo_attribute_type { PDO_ATTR_AUTOCOMMIT, /* use to turn on or off auto-commit mode */ PDO_ATTR_PREFETCH, /* configure the prefetch size for drivers that support it. Size is in KB */ PDO_ATTR_TIMEOUT, /* connection timeout in seconds */ PDO_ATTR_ERRMODE, /* control how errors are handled */ PDO_ATTR_SERVER_VERSION, /* database server version */ PDO_ATTR_CLIENT_VERSION, /* client library version */ PDO_ATTR_SERVER_INFO, /* server information */ PDO_ATTR_CONNECTION_STATUS, /* connection status */ PDO_ATTR_CASE, /* control case folding for portability */ PDO_ATTR_CURSOR_NAME, /* name a cursor for use in "WHERE CURRENT OF " */ PDO_ATTR_CURSOR, /* cursor type */ PDO_ATTR_ORACLE_NULLS, /* convert empty strings to NULL */ PDO_ATTR_PERSISTENT, /* pconnect style connection */ PDO_ATTR_STATEMENT_CLASS, /* array(classname, array(ctor_args)) to specify the class of the constructed statement */ PDO_ATTR_FETCH_TABLE_NAMES, /* include table names in the column names, where available */ PDO_ATTR_FETCH_CATALOG_NAMES, /* include the catalog/db name names in the column names, where available */ PDO_ATTR_DRIVER_NAME, /* name of the driver (as used in the constructor) */ PDO_ATTR_STRINGIFY_FETCHES, /* converts integer/float types to strings during fetch */ PDO_ATTR_MAX_COLUMN_LEN, /* make database calculate maximum length of data found in a column */ PDO_ATTR_DEFAULT_FETCH_MODE, /* Set the default fetch mode */ PDO_ATTR_EMULATE_PREPARES, /* use query emulation rather than native */ /* this defines the start of the range for driver specific options. * Drivers should define their own attribute constants beginning with this * value. */ PDO_ATTR_DRIVER_SPECIFIC = 1000 }; enum pdo_cursor_type { PDO_CURSOR_FWDONLY, /* forward only cursor (default) */ PDO_CURSOR_SCROLL /* scrollable cursor */ }; /* SQL-92 SQLSTATE error codes. The character string value returned for an SQLSTATE consists of a two-character class value followed by a three-character subclass value. A class value of 01 indicates a warning and is accompanied by a return code of SQL_SUCCESS_WITH_INFO. Class values other than '01', except for the class 'IM', indicate an error and are accompanied by a return code of SQL_ERROR. The class 'IM' is specific to warnings and errors that derive from the implementation of ODBC itself. The subclass value '000' in any class indicates that there is no subclass for that SQLSTATE. The assignment of class and subclass values is defined by SQL-92. */ typedef char pdo_error_type[6]; /* SQLSTATE */ #define PDO_ERR_NONE "00000" enum pdo_error_mode { PDO_ERRMODE_SILENT, /* just set error codes */ PDO_ERRMODE_WARNING, /* raise E_WARNING */ PDO_ERRMODE_EXCEPTION /* throw exceptions */ }; enum pdo_case_conversion { PDO_CASE_NATURAL, PDO_CASE_UPPER, PDO_CASE_LOWER }; /* oracle interop settings */ enum pdo_null_handling { PDO_NULL_NATURAL = 0, PDO_NULL_EMPTY_STRING = 1, PDO_NULL_TO_STRING = 2 }; /* {{{ utils for reading attributes set as driver_options */ static inline long pdo_attr_lval(zval *options, enum pdo_attribute_type option_name, long defval TSRMLS_DC) { zval **v; if (options && SUCCESS == zend_hash_index_find(Z_ARRVAL_P(options), option_name, (void**)&v)) { convert_to_long_ex(v); return Z_LVAL_PP(v); } return defval; } static inline char *pdo_attr_strval(zval *options, enum pdo_attribute_type option_name, char *defval TSRMLS_DC) { zval **v; if (options && SUCCESS == zend_hash_index_find(Z_ARRVAL_P(options), option_name, (void**)&v)) { convert_to_string_ex(v); return estrndup(Z_STRVAL_PP(v), Z_STRLEN_PP(v)); } return defval ? estrdup(defval) : NULL; } /* }}} */ /* This structure is registered with PDO when a PDO driver extension is * initialized */ typedef struct { const char *driver_name; unsigned long driver_name_len; unsigned long api_version; /* needs to be compatible with PDO */ #define PDO_DRIVER_HEADER(name) \ #name, sizeof(#name)-1, \ PDO_DRIVER_API /* create driver specific portion of the database handle and stash it into * the dbh. dbh contains the data source string and flags for this * instance. You MUST respect dbh->is_persistent and pass that flag to * pemalloc() for all allocations that are stored in the dbh or your instance * data in the db, otherwise you will crash PHP when persistent connections * are used. */ int (*db_handle_factory)(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC); } pdo_driver_t; /* {{{ methods for a database handle */ /* close or otherwise disconnect the database */ typedef int (*pdo_dbh_close_func)(pdo_dbh_t *dbh TSRMLS_DC); /* prepare a statement and stash driver specific portion into stmt */ typedef int (*pdo_dbh_prepare_func)(pdo_dbh_t *dbh, const char *sql, long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC); /* execute a statement (that does not return a result set) */ typedef long (*pdo_dbh_do_func)(pdo_dbh_t *dbh, const char *sql, long sql_len TSRMLS_DC); /* quote a string */ typedef int (*pdo_dbh_quote_func)(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type paramtype TSRMLS_DC); /* transaction related */ typedef int (*pdo_dbh_txn_func)(pdo_dbh_t *dbh TSRMLS_DC); /* setting of attributes */ typedef int (*pdo_dbh_set_attr_func)(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC); /* return last insert id. NULL indicates error condition, otherwise, the return value * MUST be an emalloc'd NULL terminated string. */ typedef char *(*pdo_dbh_last_id_func)(pdo_dbh_t *dbh, const char *name, unsigned int *len TSRMLS_DC); /* fetch error information. if stmt is not null, fetch information pertaining * to the statement, otherwise fetch global error information. The driver * should add the following information to the array "info" in this order: * - native error code * - string representation of the error code ... any other optional driver * specific data ... */ typedef int (*pdo_dbh_fetch_error_func)(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *info TSRMLS_DC); /* fetching of attributes */ typedef int (*pdo_dbh_get_attr_func)(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC); /* checking/pinging persistent connections; return SUCCESS if the connection * is still alive and ready to be used, FAILURE otherwise. * You may set this handler to NULL, which is equivalent to returning SUCCESS. */ typedef int (*pdo_dbh_check_liveness_func)(pdo_dbh_t *dbh TSRMLS_DC); /* called at request end for each persistent dbh; this gives the driver * the opportunity to safely release resources that only have per-request * scope */ typedef void (*pdo_dbh_request_shutdown)(pdo_dbh_t *dbh TSRMLS_DC); /* for adding methods to the dbh or stmt objects pointer to a list of driver specific functions. The convention is to prefix the function names using the PDO driver name; this will reduce the chance of collisions with future functionality in the PDO class or in user code (they can extend the PDO object). */ enum { PDO_DBH_DRIVER_METHOD_KIND_DBH = 0, PDO_DBH_DRIVER_METHOD_KIND_STMT, PDO_DBH_DRIVER_METHOD_KIND__MAX }; typedef const zend_function_entry *(*pdo_dbh_get_driver_methods_func)(pdo_dbh_t *dbh, int kind TSRMLS_DC); struct pdo_dbh_methods { pdo_dbh_close_func closer; pdo_dbh_prepare_func preparer; pdo_dbh_do_func doer; pdo_dbh_quote_func quoter; pdo_dbh_txn_func begin; pdo_dbh_txn_func commit; pdo_dbh_txn_func rollback; pdo_dbh_set_attr_func set_attribute; pdo_dbh_last_id_func last_id; pdo_dbh_fetch_error_func fetch_err; pdo_dbh_get_attr_func get_attribute; pdo_dbh_check_liveness_func check_liveness; pdo_dbh_get_driver_methods_func get_driver_methods; pdo_dbh_request_shutdown persistent_shutdown; }; /* }}} */ /* {{{ methods for a statement handle */ /* free the statement handle */ typedef int (*pdo_stmt_dtor_func)(pdo_stmt_t *stmt TSRMLS_DC); /* start the query */ typedef int (*pdo_stmt_execute_func)(pdo_stmt_t *stmt TSRMLS_DC); /* causes the next row in the set to be fetched; indicates if there are no * more rows. The ori and offset params modify which row should be returned, * if the stmt represents a scrollable cursor */ typedef int (*pdo_stmt_fetch_func)(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori, long offset TSRMLS_DC); /* queries information about the type of a column, by index (0 based). * Driver should populate stmt->columns[colno] with appropriate info */ typedef int (*pdo_stmt_describe_col_func)(pdo_stmt_t *stmt, int colno TSRMLS_DC); /* retrieves pointer and size of the value for a column. * Note that PDO expects the driver to manage the lifetime of this data; * it will copy the value into a zval on behalf of the script. * If the driver sets caller_frees, ptr should point to emalloc'd memory * and PDO will free it as soon as it is done using it. */ typedef int (*pdo_stmt_get_col_data_func)(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC); /* hook for bound params */ enum pdo_param_event { PDO_PARAM_EVT_ALLOC, PDO_PARAM_EVT_FREE, PDO_PARAM_EVT_EXEC_PRE, PDO_PARAM_EVT_EXEC_POST, PDO_PARAM_EVT_FETCH_PRE, PDO_PARAM_EVT_FETCH_POST, PDO_PARAM_EVT_NORMALIZE }; typedef int (*pdo_stmt_param_hook_func)(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC); /* setting of attributes */ typedef int (*pdo_stmt_set_attr_func)(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC); /* fetching of attributes */ typedef int (*pdo_stmt_get_attr_func)(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC); /* retrieves meta data for a numbered column. * Returns SUCCESS/FAILURE. * On SUCCESS, fill in return_value with an array with the following fields. * If a particular field is not supported, then the driver simply does not add it to * the array, so that scripts can use isset() to check for it. * * ### this is just a rough first cut, and subject to change ### * * these are added by PDO itself, based on data from the describe handler: * name => the column name * len => the length/size of the column * precision => precision of the column * pdo_type => an integer, one of the PDO_PARAM_XXX values * * scale => the floating point scale * table => the table for that column * type => a string representation of the type, mapped to the PHP equivalent type name * native_type => a string representation of the type, native style, if different from * the mapped name. * flags => an array of flags including zero or more of the following: * primary_key, not_null, unique_key, multiple_key, unsigned, auto_increment, blob * * Any driver specific data should be returned using a prefixed key or value. * Eg: custom data for the mysql driver would use either * 'mysql:foobar' => 'some data' // to add a new key to the array * or * 'flags' => array('not_null', 'mysql:some_flag'); // to add data to an existing key */ typedef int (*pdo_stmt_get_column_meta_func)(pdo_stmt_t *stmt, long colno, zval *return_value TSRMLS_DC); /* advances the statement to the next rowset of the batch. * If it returns 1, PDO will tear down its idea of columns * and meta data. If it returns 0, PDO will indicate an error * to the caller. */ typedef int (*pdo_stmt_next_rowset_func)(pdo_stmt_t *stmt TSRMLS_DC); /* closes the active cursor on a statement, leaving the prepared * statement ready for re-execution. Useful to explicitly state * that you are done with a given rowset, without having to explicitly * fetch all the rows. */ typedef int (*pdo_stmt_cursor_closer_func)(pdo_stmt_t *stmt TSRMLS_DC); struct pdo_stmt_methods { pdo_stmt_dtor_func dtor; pdo_stmt_execute_func executer; pdo_stmt_fetch_func fetcher; pdo_stmt_describe_col_func describer; pdo_stmt_get_col_data_func get_col; pdo_stmt_param_hook_func param_hook; pdo_stmt_set_attr_func set_attribute; pdo_stmt_get_attr_func get_attribute; pdo_stmt_get_column_meta_func get_column_meta; pdo_stmt_next_rowset_func next_rowset; pdo_stmt_cursor_closer_func cursor_closer; }; /* }}} */ enum pdo_placeholder_support { PDO_PLACEHOLDER_NONE=0, PDO_PLACEHOLDER_NAMED=1, PDO_PLACEHOLDER_POSITIONAL=2 }; /* represents a connection to a database */ struct _pdo_dbh_t { /* these items must appear in this order at the beginning of the struct so that this can be cast as a zend_object. we need this to allow the extending class to escape all the custom handlers that PDO declares. */ zend_class_entry *ce; HashTable *properties; unsigned int in_get:1; unsigned int in_set:1; /* driver specific methods */ struct pdo_dbh_methods *methods; /* driver specific data */ void *driver_data; /* credentials */ char *username, *password; /* if true, then data stored and pointed at by this handle must all be * persistently allocated */ unsigned is_persistent:1; /* if true, driver should act as though a COMMIT were executed between * each executed statement; otherwise, COMMIT must be carried out manually * */ unsigned auto_commit:1; /* if true, the handle has been closed and will not function anymore */ unsigned is_closed:1; /* if true, the driver requires that memory be allocated explicitly for * the columns that are returned */ unsigned alloc_own_columns:1; /* if true, commit or rollBack is allowed to be called */ unsigned in_txn:1; /* max length a single character can become after correct quoting */ unsigned max_escaped_char_length:3; /* oracle compat; see enum pdo_null_handling */ unsigned oracle_nulls:2; /* when set, convert int/floats to strings */ unsigned stringify:1; /* the sum of the number of bits here and the bit fields preceeding should * equal 32 */ unsigned _reserved_flags:21; /* data source string used to open this handle */ const char *data_source; unsigned long data_source_len; /* the global error code. */ pdo_error_type error_code; enum pdo_error_mode error_mode; enum pdo_case_conversion native_case, desired_case; /* persistent hash key associated with this handle */ const char *persistent_id; int persistent_id_len; unsigned int refcount; /* driver specific "class" methods for the dbh and stmt */ HashTable *cls_methods[PDO_DBH_DRIVER_METHOD_KIND__MAX]; pdo_driver_t *driver; zend_class_entry *def_stmt_ce; zval *def_stmt_ctor_args; /* when calling PDO::query(), we need to keep the error * context from the statement around until we next clear it. * This will allow us to report the correct error message * when PDO::query() fails */ pdo_stmt_t *query_stmt; zval query_stmt_zval; /* defaults for fetches */ enum pdo_fetch_type default_fetch_type; }; /* describes a column */ struct pdo_column_data { char *name; int namelen; unsigned long maxlen; enum pdo_param_type param_type; unsigned long precision; /* don't touch this unless your name is dbdo */ void *dbdo_data; }; /* describes a bound parameter */ struct pdo_bound_param_data { long paramno; /* if -1, then it has a name, and we don't know the index *yet* */ char *name; int namelen; long max_value_len; /* as a hint for pre-allocation */ zval *parameter; /* the variable itself */ enum pdo_param_type param_type; /* desired or suggested type */ zval *driver_params; /* optional parameter(s) for the driver */ void *driver_data; pdo_stmt_t *stmt; /* for convenience in dtor */ int is_param; /* parameter or column ? */ }; /* represents a prepared statement */ struct _pdo_stmt_t { /* these items must appear in this order at the beginning of the struct so that this can be cast as a zend_object. we need this to allow the extending class to escape all the custom handlers that PDO declares. */ zend_class_entry *ce; HashTable *properties; unsigned int in_get:1; unsigned int in_set:1; /* driver specifics */ struct pdo_stmt_methods *methods; void *driver_data; /* if true, we've already successfully executed this statement at least * once */ unsigned executed:1; /* if true, the statement supports placeholders and can implement * bindParam() for its prepared statements, if false, PDO should * emulate prepare and bind on its behalf */ unsigned supports_placeholders:2; unsigned _reserved:29; /* the number of columns in the result set; not valid until after * the statement has been executed at least once. In some cases, might * not be valid until fetch (at the driver level) has been called at least once. * */ int column_count; struct pdo_column_data *columns; /* we want to keep the dbh alive while we live, so we own a reference */ zval database_object_handle; pdo_dbh_t *dbh; /* keep track of bound input parameters. Some drivers support * input/output parameters, but you can't rely on that working */ HashTable *bound_params; /* When rewriting from named to positional, this maps positions to names */ HashTable *bound_param_map; /* keep track of PHP variables bound to named (or positional) columns * in the result set */ HashTable *bound_columns; /* not always meaningful */ long row_count; /* used to hold the statement's current query */ char *query_string; int query_stringlen; /* the copy of the query with expanded binds ONLY for emulated-prepare drivers */ char *active_query_string; int active_query_stringlen; /* the cursor specific error code. */ pdo_error_type error_code; /* for lazy fetches, we always return the same lazy object handle. * Let's keep it here. */ zval lazy_object_ref; unsigned long refcount; /* defaults for fetches */ enum pdo_fetch_type default_fetch_type; union { int column; struct { zend_class_entry *ce; zval *ctor_args; /* freed */ zval *retval_ptr; zend_fcall_info fci; zend_fcall_info_cache fcc; } cls; struct { zval *function; zval *fetch_args; /* freed */ zval *object; zend_fcall_info fci; zend_fcall_info_cache fcc; zval **values; /* freed */ } func; zval *into; } fetch; /* used by the query parser for driver specific * parameter naming (see pgsql driver for example) */ const char *named_rewrite_template; }; /* call this in MINIT to register your PDO driver */ PDO_API int php_pdo_register_driver(pdo_driver_t *driver); /* call this in MSHUTDOWN to unregister your PDO driver */ PDO_API void php_pdo_unregister_driver(pdo_driver_t *driver); /* For the convenience of drivers, this function will parse a data source * string, of the form "name=value; name2=value2" and populate variables * according to the data you pass in and array of pdo_data_src_parser structures */ struct pdo_data_src_parser { const char *optname; char *optval; int freeme; }; PDO_API int php_pdo_parse_data_source(const char *data_source, unsigned long data_source_len, struct pdo_data_src_parser *parsed, int nparams); PDO_API zend_class_entry *php_pdo_get_dbh_ce(void); PDO_API zend_class_entry *php_pdo_get_exception(void); PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, int inquery_len, char **outquery, int *outquery_len TSRMLS_DC); PDO_API void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate, const char *supp TSRMLS_DC); PDO_API void php_pdo_dbh_addref(pdo_dbh_t *dbh TSRMLS_DC); PDO_API void php_pdo_dbh_delref(pdo_dbh_t *dbh TSRMLS_DC); PDO_API void php_pdo_stmt_addref(pdo_stmt_t *stmt TSRMLS_DC); PDO_API void php_pdo_stmt_delref(pdo_stmt_t *stmt TSRMLS_DC); #endif /* PHP_PDO_DRIVER_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af1fa000081a40000000000000000000000014dc0f4e500000c42000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/ext/pdo/php_pdo.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: php_pdo.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_PDO_H #define PHP_PDO_H #include "zend.h" #if PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1) #define can_handle_soft_dependency_on_SPL 1 #endif extern zend_module_entry pdo_module_entry; #define phpext_pdo_ptr &pdo_module_entry #ifdef PHP_WIN32 # if defined(PDO_EXPORTS) || (!defined(COMPILE_DL_PDO)) # define PDO_API __declspec(dllexport) # elif defined(COMPILE_DL_PDO) # define PDO_API __declspec(dllimport) # else # define PDO_API /* nothing special */ # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define PDO_API __attribute__ ((visibility("default"))) #else # define PDO_API /* nothing special */ #endif #ifdef ZTS # include "TSRM.h" #endif PHP_MINIT_FUNCTION(pdo); PHP_MSHUTDOWN_FUNCTION(pdo); PHP_MINFO_FUNCTION(pdo); ZEND_BEGIN_MODULE_GLOBALS(pdo) long global_value; ZEND_END_MODULE_GLOBALS(pdo) #ifdef ZTS # define PDOG(v) TSRMG(pdo_globals_id, zend_pdo_globals *, v) #else # define PDOG(v) (pdo_globals.v) #endif #define REGISTER_PDO_CLASS_CONST_LONG(const_name, value) \ zend_declare_class_constant_long(php_pdo_get_dbh_ce(), const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); #define REGISTER_PDO_CONST_LONG(const_name, value) { \ zend_class_entry **pce; \ if (zend_hash_find(CG(class_table), "pdo", sizeof("pdo"), (void **) &pce) != FAILURE) \ zend_declare_class_constant_long(*pce, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); \ } \ #define REGISTER_PDO_CLASS_CONST_STRING(const_name, value) \ zend_declare_class_constant_stringl(php_pdo_get_dbh_ce(), const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC); #define PDO_CONSTRUCT_CHECK \ if (!dbh->driver) { \ pdo_raise_impl_error(dbh, NULL, "00000", "PDO constructor was not called" TSRMLS_CC); \ return; \ } \ #endif /* PHP_PDO_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af215000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/php/ext/standard070701000af236000081a40000000000000000000000014dc0f4df00000520000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_ftok.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Andrew Sitnikov | +----------------------------------------------------------------------+ */ /* $Id: php_ftok.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_FTOK_H #define PHP_FTOK_H #if HAVE_FTOK PHP_FUNCTION(ftok); #endif #endif /* PHP_FTOK_H */ 070701000af226000081a40000000000000000000000014dc0f4df000008d4000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/html.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: html.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef HTML_H #define HTML_H #define ENT_HTML_QUOTE_NONE 0 #define ENT_HTML_QUOTE_SINGLE 1 #define ENT_HTML_QUOTE_DOUBLE 2 #define ENT_HTML_IGNORE_ERRORS 4 #define ENT_COMPAT ENT_HTML_QUOTE_DOUBLE #define ENT_QUOTES (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE) #define ENT_NOQUOTES ENT_HTML_QUOTE_NONE #define ENT_IGNORE ENT_HTML_IGNORE_ERRORS void register_html_constants(INIT_FUNC_ARGS); PHP_FUNCTION(htmlspecialchars); PHP_FUNCTION(htmlentities); PHP_FUNCTION(htmlspecialchars_decode); PHP_FUNCTION(html_entity_decode); PHP_FUNCTION(get_html_translation_table); PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC); PHPAPI char *php_escape_html_entities_ex(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset, zend_bool double_encode TSRMLS_DC); PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *newlen, int all, int quote_style, char *hint_charset TSRMLS_DC); #endif /* HTML_H */ 070701000af225000081a40000000000000000000000014dc0f4df00000689000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/head.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: head.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef HEAD_H #define HEAD_H extern PHP_RINIT_FUNCTION(head); PHP_FUNCTION(header); PHP_FUNCTION(header_remove); PHP_FUNCTION(setcookie); PHP_FUNCTION(setrawcookie); PHP_FUNCTION(headers_sent); PHP_FUNCTION(headers_list); PHPAPI int php_header(TSRMLS_D); PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, time_t expires, char *path, int path_len, char *domain, int domain_len, int secure, int url_encode, int httponly TSRMLS_DC); #endif 070701000af228000081a40000000000000000000000014dc0f4df000008a4000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/ext/standard/md5.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Alexander Peslyak (Solar Designer) | | Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: md5.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef MD5_H #define MD5_H PHPAPI void make_digest(char *md5str, const unsigned char *digest); PHPAPI void make_digest_ex(char *md5str, const unsigned char *digest, int len); PHP_NAMED_FUNCTION(php_if_md5); PHP_NAMED_FUNCTION(php_if_md5_file); #include "ext/standard/basic_functions.h" /* * This is an OpenSSL-compatible implementation of the RSA Data Security, * Inc. MD5 Message-Digest Algorithm (RFC 1321). * * Written by Solar Designer in 2001, and placed * in the public domain. There's absolutely no warranty. * * See md5.c for more information. */ /* MD5 context. */ typedef struct { php_uint32 lo, hi; php_uint32 a, b, c, d; unsigned char buffer[64]; php_uint32 block[16]; } PHP_MD5_CTX; PHPAPI void PHP_MD5Init(PHP_MD5_CTX *ctx); PHPAPI void PHP_MD5Update(PHP_MD5_CTX *ctx, const void *data, size_t size); PHPAPI void PHP_MD5Final(unsigned char *result, PHP_MD5_CTX *ctx); #endif 070701000af216000081a40000000000000000000000014dc0f4df0000067a000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/ext/standard/base64.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Jim Winstead | +----------------------------------------------------------------------+ */ /* $Id: base64.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef BASE64_H #define BASE64_H PHP_FUNCTION(base64_decode); PHP_FUNCTION(base64_encode); PHPAPI extern unsigned char *php_base64_encode(const unsigned char *, int, int *); PHPAPI extern unsigned char *php_base64_decode_ex(const unsigned char *, int, int *, zend_bool); PHPAPI extern unsigned char *php_base64_decode(const unsigned char *, int, int *); #endif /* BASE64_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af24f000081a40000000000000000000000014dc0f4e00000090c000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/ext/standard/url.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Jim Winstead | +----------------------------------------------------------------------+ */ /* $Id: url.h 307432 2011-01-13 07:27:46Z stas $ */ #ifndef URL_H #define URL_H typedef struct php_url { char *scheme; char *user; char *pass; char *host; unsigned short port; char *path; char *query; char *fragment; } php_url; PHPAPI void php_url_free(php_url *theurl); PHPAPI php_url *php_url_parse(char const *str); PHPAPI php_url *php_url_parse_ex(char const *str, int length); PHPAPI int php_url_decode(char *str, int len); /* return value: length of decoded string */ PHPAPI int php_raw_url_decode(char *str, int len); /* return value: length of decoded string */ PHPAPI char *php_url_encode(char const *s, int len, int *new_length); PHPAPI char *php_raw_url_encode(char const *s, int len, int *new_length); PHP_FUNCTION(parse_url); PHP_FUNCTION(urlencode); PHP_FUNCTION(urldecode); PHP_FUNCTION(rawurlencode); PHP_FUNCTION(rawurldecode); PHP_FUNCTION(get_headers); #define PHP_URL_SCHEME 0 #define PHP_URL_HOST 1 #define PHP_URL_PORT 2 #define PHP_URL_USER 3 #define PHP_URL_PASS 4 #define PHP_URL_PATH 5 #define PHP_URL_QUERY 6 #define PHP_URL_FRAGMENT 7 #endif /* URL_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af248000081a40000000000000000000000014dc0f4df000005b4000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/standard/php_versioning.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Stig Sæther Bakken | +----------------------------------------------------------------------+ */ /* $Id: php_versioning.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_VERSIONING_H #define PHP_VERSIONING_H #include "ext/standard/basic_functions.h" PHPAPI char *php_canonicalize_version(const char *); PHPAPI int php_version_compare(const char *, const char *); PHP_FUNCTION(version_compare); #endif 070701000af231000081a40000000000000000000000014dc0f4df00000675000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/standard/php_dir.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Thies C. Arntzen | +----------------------------------------------------------------------+ */ /* $Id: php_dir.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_DIR_H #define PHP_DIR_H /* directory functions */ PHP_MINIT_FUNCTION(dir); PHP_RINIT_FUNCTION(dir); PHP_FUNCTION(opendir); PHP_FUNCTION(closedir); PHP_FUNCTION(chdir); #if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC PHP_FUNCTION(chroot); #endif PHP_FUNCTION(getcwd); PHP_FUNCTION(rewinddir); PHP_NAMED_FUNCTION(php_if_readdir); PHP_FUNCTION(getdir); PHP_FUNCTION(glob); PHP_FUNCTION(scandir); #endif /* PHP_DIR_H */ 070701000af220000081a40000000000000000000000014dc0f4df00000674000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/ext/standard/dl.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Brian Schaffner | | Shane Caraveo | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: dl.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef DL_H #define DL_H PHPAPI int php_load_extension(char *filename, int type, int start_now TSRMLS_DC); PHPAPI void php_dl(char *file, int type, zval *return_value, int start_now TSRMLS_DC); /* dynamic loading functions */ PHPAPI PHP_FUNCTION(dl); PHP_MINFO_FUNCTION(dl); #endif /* DL_H */ 070701000af223000081a40000000000000000000000014dc0f4df0000087c000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/flock_compat.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: flock_compat.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef FLOCK_COMPAT_H #define FLOCK_COMPAT_H /* php_flock internally uses fcntl whther or not flock is available * This way our php_flock even works on NFS files. * More info: /usr/src/linux/Documentation */ PHPAPI int php_flock(int fd, int operation); #ifndef HAVE_FLOCK # define LOCK_SH 1 # define LOCK_EX 2 # define LOCK_NB 4 # define LOCK_UN 8 PHPAPI int flock(int fd, int operation); #endif /* Userland LOCK_* constants */ #define PHP_LOCK_SH 1 #define PHP_LOCK_EX 2 #define PHP_LOCK_UN 3 #define PHP_LOCK_NB 4 #ifdef PHP_WIN32 # ifdef EWOULDBLOCK # undef EWOULDBLOCK # endif # define EWOULDBLOCK WSAEWOULDBLOCK # define fsync _commit # define ftruncate(a, b) chsize(a, b) #endif /* defined(PHP_WIN32) */ #if !HAVE_INET_ATON #if HAVE_NETINET_IN_H #include #endif #if HAVE_ARPA_INET_H #include #endif #ifndef PHP_WIN32 extern int inet_aton(const char *, struct in_addr *); #endif #endif #endif /* FLOCK_COMPAT_H */ 070701000af21e000081a40000000000000000000000014dc0f4df00000528000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/standard/cyr_convert.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Kirill Maximov | +----------------------------------------------------------------------+ */ /* $Id: cyr_convert.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef CYR_CONVERT_H #define CYR_CONVERT_H PHP_FUNCTION(convert_cyr_string); #endif /* CYR_CONVERT_H */ 070701000af21b000081a40000000000000000000000014dc0f4df00000626000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/credits_sapi.h/* DO NOT EDIT THIS FILE! it has been automaticaly created by php5/scripts/credits from the information found in the various php5/ext/.../CREDITS and php5/sapi/.../CREDITS files if you want to change an entry you have to edit the appropriate CREDITS file instead */ CREDIT_LINE("AOLserver", "Sascha Schumann"); CREDIT_LINE("Apache 1.3 (apache_hooks)", "Rasmus Lerdorf, Zeev Suraski, Stig Bakken, David Sklar, George Schlossnagle, Lukas Schroeder"); CREDIT_LINE("Apache 1.3", "Rasmus Lerdorf, Zeev Suraski, Stig Bakken, David Sklar"); CREDIT_LINE("Apache 2.0 Filter", "Sascha Schumann, Aaron Bannert"); CREDIT_LINE("Apache 2.0 Handler", "Ian Holsman, Justin Erenkrantz (based on Apache 2.0 Filter code)"); CREDIT_LINE("Caudium / Roxen", "David Hedbor"); CREDIT_LINE("CGI / FastCGI", "Rasmus Lerdorf, Stig Bakken, Shane Caraveo, Dmitry Stogov"); CREDIT_LINE("CLI", "Edin Kadribasic, Marcus Boerger, Johannes Schlueter"); CREDIT_LINE("Continuity", "Alex Leigh (based on nsapi code)"); CREDIT_LINE("Embed", "Edin Kadribasic"); CREDIT_LINE("FastCGI Process Manager", "Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet"); CREDIT_LINE("ISAPI", "Andi Gutmans, Zeev Suraski"); CREDIT_LINE("litespeed", "George Wang"); CREDIT_LINE("NSAPI", "Jayakumar Muthukumarasamy, Uwe Schindler"); CREDIT_LINE("phttpd", "Thies C. Arntzen"); CREDIT_LINE("pi3web", "Holger Zimmermann"); CREDIT_LINE("Sendmail Milter", "Harald Radi"); CREDIT_LINE("thttpd", "Sascha Schumann"); CREDIT_LINE("tux", "Sascha Schumann"); CREDIT_LINE("WebJames", "Alex Waugh"); 070701000af250000081a40000000000000000000000014dc0f4e000000893000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/standard/url_scanner_ex.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: url_scanner_ex.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef URL_SCANNER_EX_H #define URL_SCANNER_EX_H PHP_MINIT_FUNCTION(url_scanner_ex); PHP_MSHUTDOWN_FUNCTION(url_scanner_ex); PHP_RINIT_FUNCTION(url_scanner_ex); PHP_RSHUTDOWN_FUNCTION(url_scanner_ex); PHPAPI char *php_url_scanner_adapt_single_url(const char *url, size_t urllen, const char *name, const char *value, size_t *newlen TSRMLS_DC); PHPAPI int php_url_scanner_add_var(char *name, int name_len, char *value, int value_len, int urlencode TSRMLS_DC); PHPAPI int php_url_scanner_reset_vars(TSRMLS_D); #include "php_smart_str_public.h" typedef struct { /* Used by the mainloop of the scanner */ smart_str tag; /* read only */ smart_str arg; /* read only */ smart_str val; /* read only */ smart_str buf; /* The result buffer */ smart_str result; /* The data which is appended to each relative URL/FORM */ smart_str form_app, url_app; int active; char *lookup_data; int state; /* Everything above is zeroed in RINIT */ HashTable *tags; } url_adapt_state_ex_t; #endif 070701000af233000081a40000000000000000000000014dc0f4df00000643000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/standard/php_ext_syslog.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Stig Sæther Bakken | +----------------------------------------------------------------------+ */ /* $Id: php_ext_syslog.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_EXT_SYSLOG_H #define PHP_EXT_SYSLOG_H #ifdef HAVE_SYSLOG_H #include "php_syslog.h" PHP_MINIT_FUNCTION(syslog); PHP_RINIT_FUNCTION(syslog); #ifdef PHP_WIN32 PHP_RSHUTDOWN_FUNCTION(syslog); #endif PHP_MSHUTDOWN_FUNCTION(syslog); PHP_FUNCTION(openlog); PHP_FUNCTION(syslog); PHP_FUNCTION(closelog); PHP_FUNCTION(define_syslog_variables); #endif #endif /* PHP_EXT_SYSLOG_H */ 070701000af21a000081a40000000000000000000000014dc0f4df000015f6000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/standard/credits_ext.h/* DO NOT EDIT THIS FILE! it has been automaticaly created by php5/scripts/credits from the information found in the various php5/ext/.../CREDITS and php5/sapi/.../CREDITS files if you want to change an entry you have to edit the appropriate CREDITS file instead */ CREDIT_LINE("BC Math", "Andi Gutmans"); CREDIT_LINE("Bzip2", "Sterling Hughes"); CREDIT_LINE("Calendar", "Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong"); CREDIT_LINE("COM and .Net", "Wez Furlong"); CREDIT_LINE("ctype", "Hartmut Holzgraefe"); CREDIT_LINE("cURL", "Sterling Hughes"); CREDIT_LINE("Date/Time Support", "Derick Rethans"); CREDIT_LINE("DBA", "Sascha Schumann, Marcus Boerger"); CREDIT_LINE("DB-LIB (MS SQL, Sybase)", "Wez Furlong, Frank M. Kromann"); CREDIT_LINE("DOM", "Christian Stocker, Rob Richards, Marcus Boerger"); CREDIT_LINE("enchant", "Pierre-Alain Joye, Ilia Alshanetsky"); CREDIT_LINE("ereg", "Rasmus Lerdorf, Jim Winstead, Jaakko Hyvätti"); CREDIT_LINE("EXIF", "Rasmus Lerdorf, Marcus Boerger"); CREDIT_LINE("fileinfo", "Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans"); CREDIT_LINE("Firebird/InterBase driver for PDO", "Ard Biesheuvel"); CREDIT_LINE("FTP", "Stefan Esser, Andrew Skalski"); CREDIT_LINE("GD imaging", "Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger"); CREDIT_LINE("GetText", "Alex Plotnick"); CREDIT_LINE("GNU GMP support", "Stanislav Malyshev"); CREDIT_LINE("Iconv", "Rui Hirokawa, Stig Bakken, Moriyoshi Koizumi "); CREDIT_LINE("IMAP", "Rex Logan, Mark Musone, Brian Wang, Kaj-Michael Lang, Antoni Pamies Olive, Rasmus Lerdorf, Andrew Skalski, Chuck Hagenbuch, Daniel R Kalowsky"); CREDIT_LINE("Input Filter", "Rasmus Lerdorf, Derick Rethans, Pierre-Alain Joye, Ilia Alshanetsky"); CREDIT_LINE("InterBase", "Jouni Ahto, Andrew Avdeev, Ard Biesheuvel"); CREDIT_LINE("Internationalization", "Ed Batutis, Vladimir Iordanov, Dmitry Lakhtyuk, Stanislav Malyshev, Vadim Savchuk, Kirti Velankar"); CREDIT_LINE("JSON", "Omar Kilani, Scott MacVicar"); CREDIT_LINE("LDAP", "Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas"); CREDIT_LINE("LIBXML", "Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo"); CREDIT_LINE("mcrypt", "Sascha Schumann, Derick Rethans"); CREDIT_LINE("MS SQL", "Frank M. Kromann"); CREDIT_LINE("Multibyte String Functions", "Tsukada Takuya, Rui Hirokawa"); CREDIT_LINE("MySQL driver for PDO", "George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter"); CREDIT_LINE("MySQLi", "Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel"); CREDIT_LINE("MySQLnd", "Georg Richter, Andrey Hristov, Ulf Wendel"); CREDIT_LINE("MySQL", "Zeev Suraski, Zak Greant, Georg Richter"); CREDIT_LINE("OCI8", "Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson, Maxim Maletsky, Harald Radi, Antony Dovgal, Andi Gutmans, Wez Furlong, Christopher Jones, Oracle Corporation"); CREDIT_LINE("ODBC driver for PDO", "Wez Furlong"); CREDIT_LINE("ODBC", "Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky"); CREDIT_LINE("OpenSSL", "Stig Venaas, Wez Furlong, Sascha Kettler"); CREDIT_LINE("Oracle (OCI) driver for PDO", "Wez Furlong"); CREDIT_LINE("pcntl", "Jason Greene, Arnaud Le Blanc"); CREDIT_LINE("Perl Compatible Regexps", "Andrei Zmievski"); CREDIT_LINE("PHP Archive", "Gregory Beaver, Marcus Boerger"); CREDIT_LINE("PHP Data Objects", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky"); CREDIT_LINE("PHP hash", "Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar"); CREDIT_LINE("Posix", "Kristian Koehntopp"); CREDIT_LINE("PostgreSQL driver for PDO", "Edin Kadribasic, Ilia Alshanetsky"); CREDIT_LINE("PostgreSQL", "Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne"); CREDIT_LINE("Pspell", "Vlad Krupin"); CREDIT_LINE("Readline", "Thies C. Arntzen"); CREDIT_LINE("Recode", "Kristian Koehntopp"); CREDIT_LINE("Reflection", "Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter"); CREDIT_LINE("Sessions", "Sascha Schumann, Andrei Zmievski"); CREDIT_LINE("Shared Memory Operations", "Slava Poliakov, Ilia Alshanetsky"); CREDIT_LINE("SimpleXML", "Sterling Hughes, Marcus Boerger, Rob Richards"); CREDIT_LINE("SNMP", "Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne"); CREDIT_LINE("SOAP", "Brad Lafountain, Shane Caraveo, Dmitry Stogov"); CREDIT_LINE("Sockets", "Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene"); CREDIT_LINE("SPL", "Marcus Boerger, Etienne Kneuss"); CREDIT_LINE("SQLite3", "Scott MacVicar, Ilia Alshanetsky"); CREDIT_LINE("SQLite 3.x driver for PDO", "Wez Furlong"); CREDIT_LINE("SQLite", "Wez Furlong, Tal Peer, Marcus Boerger, Ilia Alshanetsky"); CREDIT_LINE("Sybase-CT", "Zeev Suraski, Tom May, Timm Friebe"); CREDIT_LINE("System V Message based IPC", "Wez Furlong"); CREDIT_LINE("System V Semaphores", "Tom May"); CREDIT_LINE("System V Shared Memory", "Christian Cartus"); CREDIT_LINE("tidy", "John Coggeshall, Ilia Alshanetsky"); CREDIT_LINE("tokenizer", "Andrei Zmievski, Johannes Schlueter"); CREDIT_LINE("WDDX", "Andrei Zmievski"); CREDIT_LINE("XMLReader", "Rob Richards"); CREDIT_LINE("xmlrpc", "Dan Libby"); CREDIT_LINE("XML", "Stig Bakken, Thies C. Arntzen, Sterling Hughes"); CREDIT_LINE("XMLWriter", "Rob Richards, Pierre-Alain Joye"); CREDIT_LINE("XSL", "Christian Stocker, Rob Richards"); CREDIT_LINE("Zip", "Pierre-Alain Joye"); CREDIT_LINE("Zlib", "Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti"); 070701000af232000081a40000000000000000000000014dc0f4df00000b74000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/standard/php_dns.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: The typical suspects | | Marcus Boerger | | Pollita | +----------------------------------------------------------------------+ */ /* $Id: php_dns.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_DNS_H #define PHP_DNS_H #if defined(HAVE_DNS_SEARCH) #define php_dns_search(res, dname, class, type, answer, anslen) \ ((int)dns_search(res, dname, class, type, answer, anslen, (struct sockaddr *)&from, &fromsize)) #define php_dns_free_handle(res) \ dns_free(res) #elif defined(HAVE_RES_NSEARCH) #define php_dns_search(res, dname, class, type, answer, anslen) \ res_nsearch(res, dname, class, type, answer, anslen); #define php_dns_free_handle(res) \ res_nclose(res); \ php_dns_free_res(*res) #elif defined(HAVE_RES_SEARCH) #define php_dns_search(res, dname, class, type, answer, anslen) \ res_search(dname, class, type, answer, anslen) #define php_dns_free_handle(res) /* noop */ #endif #if defined(HAVE_DNS_SEARCH) || defined(HAVE_RES_NSEARCH) || defined(HAVE_RES_SEARCH) #define HAVE_DNS_SEARCH_FUNC 1 #endif #if HAVE_DNS_SEARCH_FUNC && HAVE_DN_EXPAND && HAVE_DN_SKIPNAME #define HAVE_FULL_DNS_FUNCS 1 #endif PHP_FUNCTION(gethostbyaddr); PHP_FUNCTION(gethostbyname); PHP_FUNCTION(gethostbynamel); #ifdef HAVE_GETHOSTNAME PHP_FUNCTION(gethostname); #endif #if defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) PHP_FUNCTION(dns_check_record); # if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS PHP_FUNCTION(dns_get_mx); PHP_FUNCTION(dns_get_record); PHP_MINIT_FUNCTION(dns); # endif #endif /* defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) */ #ifndef INT16SZ #define INT16SZ 2 #endif #ifndef INT32SZ #define INT32SZ 4 #endif #endif /* PHP_DNS_H */ 070701000af244000081a40000000000000000000000014dc0f4df0000181a000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/standard/php_string.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Sæther Bakken | +----------------------------------------------------------------------+ */ /* $Id: php_string.h 306939 2011-01-01 02:19:59Z felipe $ */ /* Synced with php 3.0 revision 1.43 1999-06-16 [ssb] */ #ifndef PHP_STRING_H #define PHP_STRING_H PHP_FUNCTION(strspn); PHP_FUNCTION(strcspn); PHP_FUNCTION(str_replace); PHP_FUNCTION(str_ireplace); PHP_FUNCTION(rtrim); PHP_FUNCTION(trim); PHP_FUNCTION(ltrim); PHP_FUNCTION(soundex); PHP_FUNCTION(levenshtein); PHP_FUNCTION(count_chars); PHP_FUNCTION(wordwrap); PHP_FUNCTION(explode); PHP_FUNCTION(implode); PHP_FUNCTION(strtok); PHP_FUNCTION(strtoupper); PHP_FUNCTION(strtolower); PHP_FUNCTION(basename); PHP_FUNCTION(dirname); PHP_FUNCTION(pathinfo); PHP_FUNCTION(strstr); PHP_FUNCTION(strpos); PHP_FUNCTION(stripos); PHP_FUNCTION(strrpos); PHP_FUNCTION(strripos); PHP_FUNCTION(strrchr); PHP_FUNCTION(substr); PHP_FUNCTION(quotemeta); PHP_FUNCTION(ucfirst); PHP_FUNCTION(lcfirst); PHP_FUNCTION(ucwords); PHP_FUNCTION(strtr); PHP_FUNCTION(strrev); PHP_FUNCTION(hebrev); PHP_FUNCTION(hebrevc); PHP_FUNCTION(user_sprintf); PHP_FUNCTION(user_printf); PHP_FUNCTION(vprintf); PHP_FUNCTION(vsprintf); PHP_FUNCTION(addcslashes); PHP_FUNCTION(addslashes); PHP_FUNCTION(stripcslashes); PHP_FUNCTION(stripslashes); PHP_FUNCTION(chr); PHP_FUNCTION(ord); PHP_FUNCTION(nl2br); PHP_FUNCTION(setlocale); PHP_FUNCTION(localeconv); PHP_FUNCTION(nl_langinfo); PHP_FUNCTION(stristr); PHP_FUNCTION(chunk_split); PHP_FUNCTION(parse_str); PHP_FUNCTION(str_getcsv); PHP_FUNCTION(bin2hex); PHP_FUNCTION(similar_text); PHP_FUNCTION(strip_tags); PHP_FUNCTION(str_repeat); PHP_FUNCTION(substr_replace); PHP_FUNCTION(strnatcmp); PHP_FUNCTION(strnatcasecmp); PHP_FUNCTION(substr_count); PHP_FUNCTION(str_pad); PHP_FUNCTION(sscanf); PHP_FUNCTION(str_shuffle); PHP_FUNCTION(str_word_count); PHP_FUNCTION(str_split); PHP_FUNCTION(strpbrk); PHP_FUNCTION(substr_compare); #ifdef HAVE_STRCOLL PHP_FUNCTION(strcoll); #endif #if HAVE_STRFMON PHP_FUNCTION(money_format); #endif #if defined(HAVE_LOCALECONV) && defined(ZTS) PHP_MINIT_FUNCTION(localeconv); PHP_MSHUTDOWN_FUNCTION(localeconv); #endif #if HAVE_NL_LANGINFO PHP_MINIT_FUNCTION(nl_langinfo); #endif #define strnatcmp(a, b) \ strnatcmp_ex(a, strlen(a), b, strlen(b), 0) #define strnatcasecmp(a, b) \ strnatcmp_ex(a, strlen(a), b, strlen(b), 1) PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case); #ifdef HAVE_LOCALECONV PHPAPI struct lconv *localeconv_r(struct lconv *out); #endif PHPAPI char *php_strtoupper(char *s, size_t len); PHPAPI char *php_strtolower(char *s, size_t len); PHPAPI char *php_strtr(char *str, int len, char *str_from, char *str_to, int trlen); PHPAPI char *php_addslashes(char *str, int length, int *new_length, int freeit TSRMLS_DC); PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int freeit, int ignore_sybase TSRMLS_DC); PHPAPI char *php_addcslashes(char *str, int length, int *new_length, int freeit, char *what, int wlength TSRMLS_DC); PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC); PHPAPI void php_stripcslashes(char *str, int *len); PHPAPI void php_basename(char *s, size_t len, char *suffix, size_t sufflen, char **p_ret, size_t *p_len TSRMLS_DC); PHPAPI size_t php_dirname(char *str, size_t len); PHPAPI char *php_stristr(char *s, char *t, size_t s_len, size_t t_len); PHPAPI char *php_str_to_str_ex(char *haystack, int length, char *needle, int needle_len, char *str, int str_len, int *_new_length, int case_sensitivity, int *replace_count); PHPAPI char *php_str_to_str(char *haystack, int length, char *needle, int needle_len, char *str, int str_len, int *_new_length); PHPAPI char *php_trim(char *c, int len, char *what, int what_len, zval *return_value, int mode TSRMLS_DC); PHPAPI size_t php_strip_tags(char *rbuf, int len, int *state, char *allow, int allow_len); PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, int allow_len, zend_bool allow_tag_spaces); PHPAPI int php_char_to_str_ex(char *str, uint len, char from, char *to, int to_len, zval *result, int case_sensitivity, int *replace_count); PHPAPI int php_char_to_str(char *str, uint len, char from, char *to, int to_len, zval *result); PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value TSRMLS_DC); PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit); PHPAPI size_t php_strspn(char *s1, char *s2, char *s1_end, char *s2_end); PHPAPI size_t php_strcspn(char *s1, char *s2, char *s1_end, char *s2_end); #ifndef HAVE_STRERROR PHPAPI char *php_strerror(int errnum); #define strerror php_strerror #endif #ifndef HAVE_MBLEN # define php_mblen(ptr, len) 1 #else # if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T) # define php_mblen(ptr, len) ((ptr) == NULL ? mbsinit(&BG(mblen_state)): (int)mbrlen(ptr, len, &BG(mblen_state))) # else # define php_mblen(ptr, len) mblen(ptr, len) # endif #endif void register_string_constants(INIT_FUNC_ARGS); #endif /* PHP_STRING_H */ 070701000af22b000081a40000000000000000000000014dc0f4df000005e9000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/pageinfo.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Jim Winstead | +----------------------------------------------------------------------+ */ /* $Id: pageinfo.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PAGEINFO_H #define PAGEINFO_H PHP_FUNCTION(getmyuid); PHP_FUNCTION(getmygid); PHP_FUNCTION(getmypid); PHP_FUNCTION(getmyinode); PHP_FUNCTION(getlastmod); PHPAPI void php_statpage(TSRMLS_D); PHPAPI long php_getlastmod(TSRMLS_D); extern long php_getuid(void); extern long php_getgid(void); #endif 070701000af23e000081a40000000000000000000000014dc0f4df0000124f000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_math.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Jim Winstead | | Stig Sæther Bakken | +----------------------------------------------------------------------+ */ /* $Id: php_math.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_MATH_H #define PHP_MATH_H PHPAPI char *_php_math_number_format(double, int, char , char); PHPAPI char * _php_math_longtobase(zval *arg, int base); PHPAPI long _php_math_basetolong(zval *arg, int base); PHPAPI int _php_math_basetozval(zval *arg, int base, zval *ret); PHPAPI char * _php_math_zvaltobase(zval *arg, int base TSRMLS_DC); PHP_FUNCTION(sin); PHP_FUNCTION(cos); PHP_FUNCTION(tan); PHP_FUNCTION(asin); PHP_FUNCTION(acos); PHP_FUNCTION(atan); PHP_FUNCTION(atan2); PHP_FUNCTION(pi); PHP_FUNCTION(exp); PHP_FUNCTION(log); PHP_FUNCTION(log10); PHP_FUNCTION(is_finite); PHP_FUNCTION(is_infinite); PHP_FUNCTION(is_nan); PHP_FUNCTION(pow); PHP_FUNCTION(sqrt); PHP_FUNCTION(srand); PHP_FUNCTION(rand); PHP_FUNCTION(getrandmax); PHP_FUNCTION(mt_srand); PHP_FUNCTION(mt_rand); PHP_FUNCTION(mt_getrandmax); PHP_FUNCTION(abs); PHP_FUNCTION(ceil); PHP_FUNCTION(floor); PHP_FUNCTION(round); PHP_FUNCTION(decbin); PHP_FUNCTION(dechex); PHP_FUNCTION(decoct); PHP_FUNCTION(bindec); PHP_FUNCTION(hexdec); PHP_FUNCTION(octdec); PHP_FUNCTION(base_convert); PHP_FUNCTION(number_format); PHP_FUNCTION(fmod); PHP_FUNCTION(deg2rad); PHP_FUNCTION(rad2deg); /* WARNING: these functions are expermental: they could change their names or disappear in the next version of PHP! */ PHP_FUNCTION(hypot); PHP_FUNCTION(expm1); PHP_FUNCTION(log1p); PHP_FUNCTION(sinh); PHP_FUNCTION(cosh); PHP_FUNCTION(tanh); PHP_FUNCTION(asinh); PHP_FUNCTION(acosh); PHP_FUNCTION(atanh); #include #ifndef M_E #define M_E 2.7182818284590452354 /* e */ #endif #ifndef M_LOG2E #define M_LOG2E 1.4426950408889634074 /* log_2 e */ #endif #ifndef M_LOG10E #define M_LOG10E 0.43429448190325182765 /* log_10 e */ #endif #ifndef M_LN2 #define M_LN2 0.69314718055994530942 /* log_e 2 */ #endif #ifndef M_LN10 #define M_LN10 2.30258509299404568402 /* log_e 10 */ #endif #ifndef M_PI #define M_PI 3.14159265358979323846 /* pi */ #endif #ifndef M_PI_2 #define M_PI_2 1.57079632679489661923 /* pi/2 */ #endif #ifndef M_PI_4 #define M_PI_4 0.78539816339744830962 /* pi/4 */ #endif #ifndef M_1_PI #define M_1_PI 0.31830988618379067154 /* 1/pi */ #endif #ifndef M_2_PI #define M_2_PI 0.63661977236758134308 /* 2/pi */ #endif #ifndef M_SQRTPI #define M_SQRTPI 1.77245385090551602729 /* sqrt(pi) */ #endif #ifndef M_2_SQRTPI #define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ #endif #ifndef M_LNPI #define M_LNPI 1.14472988584940017414 /* ln(pi) */ #endif #ifndef M_EULER #define M_EULER 0.57721566490153286061 /* Euler constant */ #endif #ifndef M_SQRT2 #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ #endif #ifndef M_SQRT1_2 #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ #endif #ifndef M_SQRT3 #define M_SQRT3 1.73205080756887729352 /* sqrt(3) */ #endif /* Define rounding modes (all are round-to-nearest) */ #ifndef PHP_ROUND_HALF_UP #define PHP_ROUND_HALF_UP 0x01 /* Arithmetic rounding, up == away from zero */ #endif #ifndef PHP_ROUND_HALF_DOWN #define PHP_ROUND_HALF_DOWN 0x02 /* Down == towards zero */ #endif #ifndef PHP_ROUND_HALF_EVEN #define PHP_ROUND_HALF_EVEN 0x03 /* Banker's rounding */ #endif #ifndef PHP_ROUND_HALF_ODD #define PHP_ROUND_HALF_ODD 0x04 #endif #endif /* PHP_MATH_H */ 070701000af21f000081a40000000000000000000000014dc0f4df000005a6000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/datetime.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: datetime.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef DATETIME_H #define DATETIME_H #if HAVE_STRPTIME PHP_FUNCTION(strptime); #endif PHPAPI char *php_std_date(time_t t TSRMLS_DC); #endif /* DATETIME_H */ 070701000af24c000081a40000000000000000000000014dc0f4e000000703000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/sha1.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: sha1.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SHA1_H #define SHA1_H #include "ext/standard/basic_functions.h" /* SHA1 context. */ typedef struct { php_uint32 state[5]; /* state (ABCD) */ php_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_SHA1_CTX; PHPAPI void PHP_SHA1Init(PHP_SHA1_CTX *); PHPAPI void PHP_SHA1Update(PHP_SHA1_CTX *, const unsigned char *, unsigned int); PHPAPI void PHP_SHA1Final(unsigned char[20], PHP_SHA1_CTX *); PHPAPI void make_sha1_digest(char *sha1str, unsigned char *digest); PHP_FUNCTION(sha1); PHP_FUNCTION(sha1_file); #endif 070701000af241000081a40000000000000000000000014dc0f4df000019b8000000b500010002ffffffffffffffff0000003800000000root/usr/local/include/php/ext/standard/php_smart_str.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: php_smart_str.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_SMART_STR_H #define PHP_SMART_STR_H #include "php_smart_str_public.h" #include #ifndef SMART_STR_USE_REALLOC #include #endif #define smart_str_0(x) do { \ if ((x)->c) { \ (x)->c[(x)->len] = '\0'; \ } \ } while (0) #ifndef SMART_STR_PREALLOC #define SMART_STR_PREALLOC 128 #endif #ifndef SMART_STR_START_SIZE #define SMART_STR_START_SIZE 78 #endif #ifdef SMART_STR_USE_REALLOC #define SMART_STR_REALLOC(a,b,c) realloc((a),(b)) #else #define SMART_STR_REALLOC(a,b,c) perealloc((a),(b),(c)) #endif #define SMART_STR_DO_REALLOC(d, what) \ (d)->c = SMART_STR_REALLOC((d)->c, (d)->a + 1, (what)) #define smart_str_alloc4(d, n, what, newlen) do { \ if (!(d)->c) { \ (d)->len = 0; \ newlen = (n); \ (d)->a = newlen < SMART_STR_START_SIZE \ ? SMART_STR_START_SIZE \ : newlen + SMART_STR_PREALLOC; \ SMART_STR_DO_REALLOC(d, what); \ } else { \ newlen = (d)->len + (n); \ if (newlen >= (d)->a) { \ (d)->a = newlen + SMART_STR_PREALLOC; \ SMART_STR_DO_REALLOC(d, what); \ } \ } \ } while (0) #define smart_str_alloc(d, n, what) \ smart_str_alloc4((d), (n), (what), newlen) /* wrapper */ #define smart_str_appends_ex(dest, src, what) \ smart_str_appendl_ex((dest), (src), strlen(src), (what)) #define smart_str_appends(dest, src) \ smart_str_appendl((dest), (src), strlen(src)) #define smart_str_appendc(dest, c) \ smart_str_appendc_ex((dest), (c), 0) #define smart_str_free(s) \ smart_str_free_ex((s), 0) #define smart_str_appendl(dest, src, len) \ smart_str_appendl_ex((dest), (src), (len), 0) #define smart_str_append(dest, src) \ smart_str_append_ex((dest), (src), 0) #define smart_str_append_long(dest, val) \ smart_str_append_long_ex((dest), (val), 0) #define smart_str_append_off_t(dest, val) \ smart_str_append_off_t_ex((dest), (val), 0) #define smart_str_append_unsigned(dest, val) \ smart_str_append_unsigned_ex((dest), (val), 0) #define smart_str_appendc_ex(dest, ch, what) do { \ register size_t __nl; \ smart_str_alloc4((dest), 1, (what), __nl); \ (dest)->len = __nl; \ ((unsigned char *) (dest)->c)[(dest)->len - 1] = (ch); \ } while (0) #define smart_str_free_ex(s, what) do { \ smart_str *__s = (smart_str *) (s); \ if (__s->c) { \ pefree(__s->c, what); \ __s->c = NULL; \ } \ __s->a = __s->len = 0; \ } while (0) #define smart_str_appendl_ex(dest, src, nlen, what) do { \ register size_t __nl; \ smart_str *__dest = (smart_str *) (dest); \ \ smart_str_alloc4(__dest, (nlen), (what), __nl); \ memcpy(__dest->c + __dest->len, (src), (nlen)); \ __dest->len = __nl; \ } while (0) /* input: buf points to the END of the buffer */ #define smart_str_print_unsigned4(buf, num, vartype, result) do { \ char *__p = (buf); \ vartype __num = (num); \ *__p = '\0'; \ do { \ *--__p = (char) (__num % 10) + '0'; \ __num /= 10; \ } while (__num > 0); \ result = __p; \ } while (0) /* buf points to the END of the buffer */ #define smart_str_print_long4(buf, num, vartype, result) do { \ if (num < 0) { \ /* this might cause problems when dealing with LONG_MIN \ and machines which don't support long long. Works \ flawlessly on 32bit x86 */ \ smart_str_print_unsigned4((buf), -(num), vartype, (result)); \ *--(result) = '-'; \ } else { \ smart_str_print_unsigned4((buf), (num), vartype, (result)); \ } \ } while (0) /* * these could be replaced using a braced-group inside an expression * for GCC compatible compilers, e.g. * * #define f(..) ({char *r;..;__r;}) */ static inline char *smart_str_print_long(char *buf, long num) { char *r; smart_str_print_long4(buf, num, unsigned long, r); return r; } static inline char *smart_str_print_unsigned(char *buf, long num) { char *r; smart_str_print_unsigned4(buf, num, unsigned long, r); return r; } #define smart_str_append_generic_ex(dest, num, type, vartype, func) do { \ char __b[32]; \ char *__t; \ smart_str_print##func##4 (__b + sizeof(__b) - 1, (num), vartype, __t); \ smart_str_appendl_ex((dest), __t, __b + sizeof(__b) - 1 - __t, (type)); \ } while (0) #define smart_str_append_unsigned_ex(dest, num, type) \ smart_str_append_generic_ex((dest), (num), (type), unsigned long, _unsigned) #define smart_str_append_long_ex(dest, num, type) \ smart_str_append_generic_ex((dest), (num), (type), unsigned long, _long) #define smart_str_append_off_t_ex(dest, num, type) \ smart_str_append_generic_ex((dest), (num), (type), off_t, _long) #define smart_str_append_ex(dest, src, what) \ smart_str_appendl_ex((dest), ((smart_str *)(src))->c, \ ((smart_str *)(src))->len, (what)); #define smart_str_setl(dest, src, nlen) do { \ (dest)->len = (nlen); \ (dest)->a = (nlen) + 1; \ (dest)->c = (char *) (src); \ } while (0) #define smart_str_sets(dest, src) \ smart_str_setl((dest), (src), strlen(src)); #endif 070701000af22c000081a40000000000000000000000014dc0f4df0000114e000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/standard/php_array.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | | Rasmus Lerdorf | | Andrei Zmievski | +----------------------------------------------------------------------+ */ /* $Id: php_array.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_ARRAY_H #define PHP_ARRAY_H PHP_MINIT_FUNCTION(array); PHP_MSHUTDOWN_FUNCTION(array); PHP_FUNCTION(ksort); PHP_FUNCTION(krsort); PHP_FUNCTION(natsort); PHP_FUNCTION(natcasesort); PHP_FUNCTION(asort); PHP_FUNCTION(arsort); PHP_FUNCTION(sort); PHP_FUNCTION(rsort); PHP_FUNCTION(usort); PHP_FUNCTION(uasort); PHP_FUNCTION(uksort); PHP_FUNCTION(array_walk); PHP_FUNCTION(array_walk_recursive); PHP_FUNCTION(count); PHP_FUNCTION(end); PHP_FUNCTION(prev); PHP_FUNCTION(next); PHP_FUNCTION(reset); PHP_FUNCTION(current); PHP_FUNCTION(key); PHP_FUNCTION(min); PHP_FUNCTION(max); PHP_FUNCTION(in_array); PHP_FUNCTION(array_search); PHP_FUNCTION(extract); PHP_FUNCTION(compact); PHP_FUNCTION(array_fill); PHP_FUNCTION(array_fill_keys); PHP_FUNCTION(range); PHP_FUNCTION(shuffle); PHP_FUNCTION(array_multisort); PHP_FUNCTION(array_push); PHP_FUNCTION(array_pop); PHP_FUNCTION(array_shift); PHP_FUNCTION(array_unshift); PHP_FUNCTION(array_splice); PHP_FUNCTION(array_slice); PHP_FUNCTION(array_merge); PHP_FUNCTION(array_merge_recursive); PHP_FUNCTION(array_replace); PHP_FUNCTION(array_replace_recursive); PHP_FUNCTION(array_keys); PHP_FUNCTION(array_values); PHP_FUNCTION(array_count_values); PHP_FUNCTION(array_reverse); PHP_FUNCTION(array_reduce); PHP_FUNCTION(array_pad); PHP_FUNCTION(array_flip); PHP_FUNCTION(array_change_key_case); PHP_FUNCTION(array_rand); PHP_FUNCTION(array_unique); PHP_FUNCTION(array_intersect); PHP_FUNCTION(array_intersect_key); PHP_FUNCTION(array_intersect_ukey); PHP_FUNCTION(array_uintersect); PHP_FUNCTION(array_intersect_assoc); PHP_FUNCTION(array_uintersect_assoc); PHP_FUNCTION(array_intersect_uassoc); PHP_FUNCTION(array_uintersect_uassoc); PHP_FUNCTION(array_diff); PHP_FUNCTION(array_diff_key); PHP_FUNCTION(array_diff_ukey); PHP_FUNCTION(array_udiff); PHP_FUNCTION(array_diff_assoc); PHP_FUNCTION(array_udiff_assoc); PHP_FUNCTION(array_diff_uassoc); PHP_FUNCTION(array_udiff_uassoc); PHP_FUNCTION(array_sum); PHP_FUNCTION(array_product); PHP_FUNCTION(array_filter); PHP_FUNCTION(array_map); PHP_FUNCTION(array_key_exists); PHP_FUNCTION(array_chunk); PHP_FUNCTION(array_combine); PHPAPI HashTable* php_splice(HashTable *, int, int, zval ***, int, HashTable **); PHPAPI int php_array_merge(HashTable *dest, HashTable *src, int recursive TSRMLS_DC); PHPAPI int php_array_replace_recursive(HashTable *dest, HashTable *src TSRMLS_DC); PHPAPI int php_multisort_compare(const void *a, const void *b TSRMLS_DC); #define PHP_SORT_REGULAR 0 #define PHP_SORT_NUMERIC 1 #define PHP_SORT_STRING 2 #define PHP_SORT_DESC 3 #define PHP_SORT_ASC 4 #define PHP_SORT_LOCALE_STRING 5 ZEND_BEGIN_MODULE_GLOBALS(array) int *multisort_flags[2]; int (*compare_func)(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_END_MODULE_GLOBALS(array) #ifdef ZTS #define ARRAYG(v) TSRMG(array_globals_id, zend_array_globals *, v) #else #define ARRAYG(v) (array_globals.v) #endif #endif /* PHP_ARRAY_H */ 070701000af24e000081a40000000000000000000000014dc0f4e000000526000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/ext/standard/uniqid.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Stig Sæther Bakken | +----------------------------------------------------------------------+ */ /* $Id: uniqid.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef UNIQID_H #define UNIQID_H #ifdef HAVE_GETTIMEOFDAY PHP_FUNCTION(uniqid); #endif #endif /* UNIQID_H */ 070701000af234000081a40000000000000000000000014dc0f4df00000d52000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/php_filestat.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Jim Winstead | +----------------------------------------------------------------------+ */ /* $Id: php_filestat.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_FILESTAT_H #define PHP_FILESTAT_H PHP_RINIT_FUNCTION(filestat); PHP_RSHUTDOWN_FUNCTION(filestat); PHP_FUNCTION(realpath_cache_size); PHP_FUNCTION(realpath_cache_get); PHP_FUNCTION(clearstatcache); PHP_FUNCTION(fileatime); PHP_FUNCTION(filectime); PHP_FUNCTION(filegroup); PHP_FUNCTION(fileinode); PHP_FUNCTION(filemtime); PHP_FUNCTION(fileowner); PHP_FUNCTION(fileperms); PHP_FUNCTION(filesize); PHP_FUNCTION(filetype); PHP_FUNCTION(is_writable); PHP_FUNCTION(is_readable); PHP_FUNCTION(is_executable); PHP_FUNCTION(is_file); PHP_FUNCTION(is_dir); PHP_FUNCTION(is_link); PHP_FUNCTION(file_exists); PHP_NAMED_FUNCTION(php_if_stat); PHP_NAMED_FUNCTION(php_if_lstat); PHP_FUNCTION(disk_total_space); PHP_FUNCTION(disk_free_space); PHP_FUNCTION(chown); PHP_FUNCTION(chgrp); #if HAVE_LCHOWN PHP_FUNCTION(lchown); #endif #if HAVE_LCHOWN PHP_FUNCTION(lchgrp); #endif PHP_FUNCTION(chmod); #if HAVE_UTIME PHP_FUNCTION(touch); #endif PHP_FUNCTION(clearstatcache); #define MAKE_LONG_ZVAL_INCREF(name, val)\ MAKE_STD_ZVAL(name); \ ZVAL_LONG(name, val); \ Z_ADDREF_P(name); #ifdef PHP_WIN32 #define S_IRUSR S_IREAD #define S_IWUSR S_IWRITE #define S_IXUSR S_IEXEC #define S_IRGRP S_IREAD #define S_IWGRP S_IWRITE #define S_IXGRP S_IEXEC #define S_IROTH S_IREAD #define S_IWOTH S_IWRITE #define S_IXOTH S_IEXEC #undef getgid #define getgroups(a, b) 0 #define getgid() 1 #define getuid() 1 #endif #ifdef PHP_WIN32 typedef unsigned int php_stat_len; #else typedef int php_stat_len; #endif PHPAPI void php_clear_stat_cache(zend_bool clear_realpath_cache, const char *filename, int filename_len TSRMLS_DC); PHPAPI void php_stat(const char *filename, php_stat_len filename_length, int type, zval *return_value TSRMLS_DC); /* Switches for various filestat functions: */ #define FS_PERMS 0 #define FS_INODE 1 #define FS_SIZE 2 #define FS_OWNER 3 #define FS_GROUP 4 #define FS_ATIME 5 #define FS_MTIME 6 #define FS_CTIME 7 #define FS_TYPE 8 #define FS_IS_W 9 #define FS_IS_R 10 #define FS_IS_X 11 #define FS_IS_FILE 12 #define FS_IS_DIR 13 #define FS_IS_LINK 14 #define FS_EXISTS 15 #define FS_LSTAT 16 #define FS_STAT 17 #endif /* PHP_FILESTAT_H */ 070701000af245000081a40000000000000000000000014dc0f4df00000668000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_type.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: php_type.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_TYPE_H #define PHP_TYPE_H PHP_FUNCTION(intval); PHP_FUNCTION(floatval); PHP_FUNCTION(strval); PHP_FUNCTION(gettype); PHP_FUNCTION(settype); PHP_FUNCTION(is_null); PHP_FUNCTION(is_resource); PHP_FUNCTION(is_bool); PHP_FUNCTION(is_long); PHP_FUNCTION(is_float); PHP_FUNCTION(is_numeric); PHP_FUNCTION(is_string); PHP_FUNCTION(is_array); PHP_FUNCTION(is_object); PHP_FUNCTION(is_scalar); PHP_FUNCTION(is_callable); #endif 070701000af22e000081a40000000000000000000000014dc0f4df00000564000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/php_browscap.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: php_browscap.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_BROWSCAP_H #define PHP_BROWSCAP_H PHP_MINIT_FUNCTION(browscap); PHP_MSHUTDOWN_FUNCTION(browscap); PHP_FUNCTION(get_browser); #endif /* PHP_BROWSCAP_H */ 070701000af22f000081a40000000000000000000000014dc0f4df0000064a000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/standard/php_crypt.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Stig Bakken | | Zeev Suraski | | Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: php_crypt.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_CRYPT_H #define PHP_CRYPT_H PHP_FUNCTION(crypt); #if HAVE_CRYPT PHP_MINIT_FUNCTION(crypt); PHP_MSHUTDOWN_FUNCTION(crypt); PHP_RINIT_FUNCTION(crypt); #endif #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af23d000081a40000000000000000000000014dc0f4df000005af000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_mail.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: php_mail.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_MAIL_H #define PHP_MAIL_H PHP_FUNCTION(mail); PHP_MINFO_FUNCTION(mail); PHP_FUNCTION(ezmlm_hash); PHPAPI extern int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC); #endif /* PHP_MAIL_H */ 070701000af238000081a40000000000000000000000014dc0f4df00000983000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/standard/php_image.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: php_image.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_IMAGE_H #define PHP_IMAGE_H PHP_FUNCTION(getimagesize); PHP_FUNCTION(image_type_to_mime_type); PHP_FUNCTION(image_type_to_extension); /* {{{ enum image_filetype This enum is used to have ext/standard/image.c and ext/exif/exif.c use the same constants for file types. */ typedef enum { IMAGE_FILETYPE_UNKNOWN=0, IMAGE_FILETYPE_GIF=1, IMAGE_FILETYPE_JPEG, IMAGE_FILETYPE_PNG, IMAGE_FILETYPE_SWF, IMAGE_FILETYPE_PSD, IMAGE_FILETYPE_BMP, IMAGE_FILETYPE_TIFF_II, /* intel */ IMAGE_FILETYPE_TIFF_MM, /* motorola */ IMAGE_FILETYPE_JPC, IMAGE_FILETYPE_JP2, IMAGE_FILETYPE_JPX, IMAGE_FILETYPE_JB2, IMAGE_FILETYPE_SWC, IMAGE_FILETYPE_IFF, IMAGE_FILETYPE_WBMP, /* IMAGE_FILETYPE_JPEG2000 is a userland alias for IMAGE_FILETYPE_JPC */ IMAGE_FILETYPE_XBM, IMAGE_FILETYPE_ICO, /* WHEN EXTENDING: PLEASE ALSO REGISTER IN image.c:PHP_MINIT_FUNCTION(imagetypes) */ IMAGE_FILETYPE_COUNT } image_filetype; /* }}} */ PHP_MINIT_FUNCTION(imagetypes); PHPAPI int php_getimagetype(php_stream *stream, char *filetype TSRMLS_DC); PHPAPI char * php_image_type_to_mime_type(int image_type); #endif /* PHP_IMAGE_H */ 070701000af242000081a40000000000000000000000014dc0f4df00000563000000b500010002ffffffffffffffff0000003f00000000root/usr/local/include/php/ext/standard/php_smart_str_public.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: php_smart_str_public.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_SMART_STR_PUBLIC_H #define PHP_SMART_STR_PUBLIC_H #include typedef struct { char *c; size_t len; size_t a; } smart_str; #endif 070701000af249000081a40000000000000000000000014dc0f4df0000076c000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/standard/proc_open.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: proc_open.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifdef PHP_WIN32 typedef HANDLE php_file_descriptor_t; typedef DWORD php_process_id_t; #else typedef int php_file_descriptor_t; typedef pid_t php_process_id_t; #endif #define PHP_PROC_OPEN_MAX_DESCRIPTORS 16 /* Environment block under win32 is a NUL terminated sequence of NUL terminated * name=value strings. * Under unix, it is an argv style array. * */ typedef struct _php_process_env { char *envp; #ifndef PHP_WIN32 char **envarray; #endif } php_process_env_t; struct php_process_handle { php_process_id_t child; #ifdef PHP_WIN32 HANDLE childHandle; #endif int npipes; long pipes[PHP_PROC_OPEN_MAX_DESCRIPTORS]; char *command; int is_persistent; php_process_env_t env; }; 070701000af243000081a40000000000000000000000014dc0f4df000008f5000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/php_standard.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: | +----------------------------------------------------------------------+ */ /* $Id: php_standard.h 306939 2011-01-01 02:19:59Z felipe $ */ #include "basic_functions.h" #include "php_math.h" #include "php_string.h" #include "base64.h" #include "php_dir.h" #include "php_dns.h" #include "php_mail.h" #include "md5.h" #include "sha1.h" #include "html.h" #include "exec.h" #include "file.h" #include "php_ext_syslog.h" #include "php_filestat.h" #include "php_browscap.h" #include "pack.h" #include "datetime.h" #include "microtime.h" #include "url.h" #include "pageinfo.h" #include "cyr_convert.h" #include "php_link.h" #include "fsock.h" #include "php_image.h" #include "php_iptc.h" #include "info.h" #include "uniqid.h" #include "php_var.h" #include "quot_print.h" #include "dl.h" #include "php_crypt.h" #include "head.h" #include "php_lcg.h" #include "php_metaphone.h" #include "php_output.h" #include "php_array.h" #include "php_assert.h" #include "php_versioning.h" #include "php_ftok.h" #include "php_type.h" #define phpext_standard_ptr basic_functions_module_ptr PHP_MINIT_FUNCTION(standard_filters); PHP_MSHUTDOWN_FUNCTION(standard_filters); /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af22a000081a40000000000000000000000014dc0f4df0000052b000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/pack.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: pack.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PACK_H #define PACK_H PHP_MINIT_FUNCTION(pack); PHP_FUNCTION(pack); PHP_FUNCTION(unpack); #endif /* PACK_H */ 070701000af230000081a40000000000000000000000014dc0f4df00000882000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/standard/php_crypt_r.h/* $Id: php_crypt_r.h 306939 2011-01-01 02:19:59Z felipe $ */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Pierre Alain Joye | +----------------------------------------------------------------------+ */ /* $Id: php_http.h 307432 2011-01-13 07:27:46Z stas $ */ #ifndef PHP_HTTP_H #define PHP_HTTP_H #include "php.h" #include "php_smart_str.h" PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr, const char *num_prefix, int num_prefix_len, const char *key_prefix, int key_prefix_len, const char *key_suffix, int key_suffix_len, zval *type, char *arg_sep TSRMLS_DC); #define php_url_encode_hash(ht, formstr) php_url_encode_hash_ex((ht), (formstr), NULL, 0, NULL, 0, NULL, 0, NULL TSRMLS_CC) PHP_FUNCTION(http_build_query); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af21c000081a40000000000000000000000014dc0f4df000003ea000000b500010002ffffffffffffffff0000003800000000root/usr/local/include/php/ext/standard/crypt_freesec.h/* $Id: crypt_freesec.h 265472 2008-08-25 14:37:07Z pajoye $ */ #ifndef _CRYPT_FREESEC_H #define _CRYPT_FREESEC_H #if PHP_WIN32 # include "win32/php_stdint.h" # ifndef inline # define inline __inline # endif #else # include "php_config.h" # if HAVE_INTTYPES_H # include # elif HAVE_STDINT_H # include # endif # ifndef HAVE_UINT32_T # if SIZEOF_INT == 4 typedef unsigned int uint32_t; # elif SIZEOF_LONG == 4 typedef unsigned long int uint32_t; # endif # endif #endif #define MD5_HASH_MAX_LEN 120 struct php_crypt_extended_data { int initialized; uint32_t saltbits; uint32_t old_salt; uint32_t en_keysl[16], en_keysr[16]; uint32_t de_keysl[16], de_keysr[16]; uint32_t old_rawkey0, old_rawkey1; char output[21]; }; /* * _crypt_extended_init() must be called explicitly before first use of * _crypt_extended_r(). */ void _crypt_extended_init(void); char *_crypt_extended_r(const char *key, const char *setting, struct php_crypt_extended_data *data); #endif 070701000af218000081a40000000000000000000000014dc0f4df0000134c000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/standard/crc32.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: crc32.h 306939 2011-01-01 02:19:59Z felipe $ */ /* * This code implements the AUTODIN II polynomial * The variable corresponding to the macro argument "crc" should * be an unsigned long. * Oroginal code by Spencer Garrett */ #define CRC32(crc, ch) (crc = (crc >> 8) ^ crc32tab[(crc ^ (ch)) & 0xff]) /* generated using the AUTODIN II polynomial * x^32 + x^26 + x^23 + x^22 + x^16 + * x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + 1 */ static const unsigned int crc32tab[256] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, }; /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af23a000081a40000000000000000000000014dc0f4df0000052a000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_iptc.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Thies C. Arntzen | +----------------------------------------------------------------------+ */ /* $Id: php_iptc.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_IPTC_H #define PHP_IPTC_H PHP_FUNCTION(iptcparse); PHP_FUNCTION(iptcembed); #endif /* PHP_IPTC_H */ 070701000af240000081a40000000000000000000000014dc0f4df00000a5b000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_rand.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | | Pedro Melo | | Sterling Hughes | | | | Based on code from: Shawn Cokus | +----------------------------------------------------------------------+ */ /* $Id: php_rand.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_RAND_H #define PHP_RAND_H #include #include "basic_functions.h" /* System Rand functions */ #ifndef RAND_MAX #define RAND_MAX (1<<15) #endif /* In ZTS mode we rely on rand_r() so we must use RAND_MAX. */ #if !defined(ZTS) && (defined(HAVE_LRAND48) || defined(HAVE_RANDOM)) #define PHP_RAND_MAX 2147483647 #else #define PHP_RAND_MAX RAND_MAX #endif #define RAND_RANGE(__n, __min, __max, __tmax) \ (__n) = (__min) + (long) ((double) ( (double) (__max) - (__min) + 1.0) * ((__n) / ((__tmax) + 1.0))) /* MT Rand */ #define PHP_MT_RAND_MAX ((long) (0x7FFFFFFF)) /* (1<<31) - 1 */ #ifdef PHP_WIN32 #define GENERATE_SEED() (((long) (time(0) * GetCurrentProcessId())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C)))) #else #define GENERATE_SEED() (((long) (time(0) * getpid())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C)))) #endif PHPAPI void php_srand(long seed TSRMLS_DC); PHPAPI long php_rand(TSRMLS_D); PHPAPI void php_mt_srand(php_uint32 seed TSRMLS_DC); PHPAPI php_uint32 php_mt_rand(TSRMLS_D); #endif /* PHP_RAND_H */ 070701000af22d000081a40000000000000000000000014dc0f4df000005c7000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/standard/php_assert.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Thies C. Arntzen | +----------------------------------------------------------------------+ */ /* $Id: php_assert.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_ASSERT_H #define PHP_ASSERT_H PHP_MINIT_FUNCTION(assert); PHP_MSHUTDOWN_FUNCTION(assert); PHP_RINIT_FUNCTION(assert); PHP_RSHUTDOWN_FUNCTION(assert); PHP_MINFO_FUNCTION(assert); PHP_FUNCTION(assert); PHP_FUNCTION(assert_options); #endif /* PHP_ASSERT_H */ 070701000af227000081a40000000000000000000000014dc0f4df00000ea9000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/info.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: info.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef INFO_H #define INFO_H #define PHP_ENTRY_NAME_COLOR "#ccccff" #define PHP_CONTENTS_COLOR "#cccccc" #define PHP_HEADER_COLOR "#9999cc" #define PHP_INFO_GENERAL (1<<0) #define PHP_INFO_CREDITS (1<<1) #define PHP_INFO_CONFIGURATION (1<<2) #define PHP_INFO_MODULES (1<<3) #define PHP_INFO_ENVIRONMENT (1<<4) #define PHP_INFO_VARIABLES (1<<5) #define PHP_INFO_LICENSE (1<<6) #define PHP_INFO_ALL 0xFFFFFFFF #ifndef HAVE_CREDITS_DEFS #define HAVE_CREDITS_DEFS #define PHP_CREDITS_GROUP (1<<0) #define PHP_CREDITS_GENERAL (1<<1) #define PHP_CREDITS_SAPI (1<<2) #define PHP_CREDITS_MODULES (1<<3) #define PHP_CREDITS_DOCS (1<<4) #define PHP_CREDITS_FULLPAGE (1<<5) #define PHP_CREDITS_QA (1<<6) #define PHP_CREDITS_WEB (1<<7) #define PHP_CREDITS_ALL 0xFFFFFFFF #endif /* HAVE_CREDITS_DEFS */ #define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42" #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" BEGIN_EXTERN_C() PHP_FUNCTION(phpversion); PHP_FUNCTION(phpinfo); PHP_FUNCTION(phpcredits); PHP_FUNCTION(php_logo_guid); PHP_FUNCTION(php_real_logo_guid); PHP_FUNCTION(zend_logo_guid); PHP_FUNCTION(php_egg_logo_guid); PHP_FUNCTION(php_sapi_name); PHP_FUNCTION(php_uname); PHP_FUNCTION(php_ini_scanned_files); PHP_FUNCTION(php_ini_loaded_file); PHPAPI char *php_info_html_esc(char *string TSRMLS_DC); PHPAPI void php_info_html_esc_write(char *string, int str_len TSRMLS_DC); PHPAPI void php_print_info_htmlhead(TSRMLS_D); PHPAPI void php_print_info(int flag TSRMLS_DC); PHPAPI void php_print_style(void); PHPAPI void php_info_print_style(TSRMLS_D); PHPAPI void php_info_print_table_colspan_header(int num_cols, char *header); PHPAPI void php_info_print_table_header(int num_cols, ...); PHPAPI void php_info_print_table_row(int num_cols, ...); PHPAPI void php_info_print_table_row_ex(int num_cols, const char *, ...); PHPAPI void php_info_print_table_start(void); PHPAPI void php_info_print_table_end(void); PHPAPI void php_info_print_box_start(int bg); PHPAPI void php_info_print_box_end(void); PHPAPI void php_info_print_hr(void); PHPAPI void php_info_print_module(zend_module_entry *module TSRMLS_DC); PHPAPI char *php_logo_guid(void); PHPAPI char *php_get_uname(char mode); void register_phpinfo_constants(INIT_FUNC_ARGS); END_EXTERN_C() #endif /* INFO_H */ 070701000af246000081a40000000000000000000000014dc0f4df0000060d000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/php_uuencode.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Ilia Alshanetsky | +----------------------------------------------------------------------+ */ /* $Id: php_uuencode.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_UUENCODE_H #define PHP_UUENCODE_H PHP_FUNCTION(convert_uudecode); PHP_FUNCTION(convert_uuencode); PHPAPI int php_uudecode(char *src, int src_len, char **dest); PHPAPI int php_uuencode(char *src, int src_len, char **dest); #endif /* PHP_UUENCODE_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af24a000081a40000000000000000000000014dc0f4df00000638000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/standard/quot_print.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Kirill Maximov (kir@rus.net) | +----------------------------------------------------------------------+ */ /* $Id: quot_print.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef QUOT_PRINT_H #define QUOT_PRINT_H PHPAPI unsigned char *php_quot_print_decode(const unsigned char *str, size_t length, size_t *ret_length, int replace_us_by_ws); PHPAPI unsigned char *php_quot_print_encode(const unsigned char *str, size_t length, size_t *ret_length); PHP_FUNCTION(quoted_printable_decode); PHP_FUNCTION(quoted_printable_encode); #endif /* QUOT_PRINT_H */ 070701000af217000081a40000000000000000000000014dc0f4df00001b5f000000b500010002ffffffffffffffff0000003a00000000root/usr/local/include/php/ext/standard/basic_functions.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: basic_functions.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef BASIC_FUNCTIONS_H #define BASIC_FUNCTIONS_H #include #ifdef HAVE_WCHAR_H #include #endif #include "php_filestat.h" #include "zend_highlight.h" #include "url_scanner_ex.h" extern zend_module_entry basic_functions_module; #define basic_functions_module_ptr &basic_functions_module PHP_MINIT_FUNCTION(basic); PHP_MSHUTDOWN_FUNCTION(basic); PHP_RINIT_FUNCTION(basic); PHP_RSHUTDOWN_FUNCTION(basic); PHP_MINFO_FUNCTION(basic); PHP_FUNCTION(constant); PHP_FUNCTION(sleep); PHP_FUNCTION(usleep); #if HAVE_NANOSLEEP PHP_FUNCTION(time_nanosleep); PHP_FUNCTION(time_sleep_until); #endif PHP_FUNCTION(flush); #ifdef HAVE_INET_NTOP PHP_NAMED_FUNCTION(php_inet_ntop); #endif #ifdef HAVE_INET_PTON PHP_NAMED_FUNCTION(php_inet_pton); #endif PHP_FUNCTION(ip2long); PHP_FUNCTION(long2ip); /* system functions */ PHP_FUNCTION(getenv); PHP_FUNCTION(putenv); PHP_FUNCTION(getopt); PHP_FUNCTION(get_current_user); PHP_FUNCTION(set_time_limit); PHP_FUNCTION(get_cfg_var); PHP_FUNCTION(set_magic_quotes_runtime); PHP_FUNCTION(get_magic_quotes_runtime); PHP_FUNCTION(get_magic_quotes_gpc); PHP_FUNCTION(import_request_variables); PHP_FUNCTION(error_log); PHP_FUNCTION(error_get_last); PHP_FUNCTION(call_user_func); PHP_FUNCTION(call_user_func_array); PHP_FUNCTION(call_user_method); PHP_FUNCTION(call_user_method_array); PHP_FUNCTION(forward_static_call); PHP_FUNCTION(forward_static_call_array); PHP_FUNCTION(register_shutdown_function); PHP_FUNCTION(highlight_file); PHP_FUNCTION(highlight_string); PHP_FUNCTION(php_strip_whitespace); ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini); PHP_FUNCTION(ini_get); PHP_FUNCTION(ini_get_all); PHP_FUNCTION(ini_set); PHP_FUNCTION(ini_restore); PHP_FUNCTION(get_include_path); PHP_FUNCTION(set_include_path); PHP_FUNCTION(restore_include_path); PHP_FUNCTION(print_r); PHP_FUNCTION(fprintf); PHP_FUNCTION(vfprintf); PHP_FUNCTION(connection_aborted); PHP_FUNCTION(connection_status); PHP_FUNCTION(ignore_user_abort); PHP_FUNCTION(getservbyname); PHP_FUNCTION(getservbyport); PHP_FUNCTION(getprotobyname); PHP_FUNCTION(getprotobynumber); PHP_NAMED_FUNCTION(php_if_crc32); PHP_FUNCTION(register_tick_function); PHP_FUNCTION(unregister_tick_function); #ifdef HAVE_GETLOADAVG PHP_FUNCTION(sys_getloadavg); #endif PHP_FUNCTION(is_uploaded_file); PHP_FUNCTION(move_uploaded_file); /* From the INI parser */ PHP_FUNCTION(parse_ini_file); PHP_FUNCTION(parse_ini_string); #if ZEND_DEBUG PHP_FUNCTION(config_get_hash); #endif PHP_FUNCTION(str_rot13); PHP_FUNCTION(stream_get_filters); PHP_FUNCTION(stream_filter_register); PHP_FUNCTION(stream_bucket_make_writeable); PHP_FUNCTION(stream_bucket_prepend); PHP_FUNCTION(stream_bucket_append); PHP_FUNCTION(stream_bucket_new); PHP_MINIT_FUNCTION(user_filters); PHP_RSHUTDOWN_FUNCTION(user_filters); /* Left for BC (not binary safe!) */ PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC); PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC); PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, int var_name_len, zend_bool add_underscore TSRMLS_DC); #if SIZEOF_INT == 4 /* Most 32-bit and 64-bit systems have 32-bit ints */ typedef unsigned int php_uint32; typedef signed int php_int32; #elif SIZEOF_LONG == 4 /* 16-bit systems? */ typedef unsigned long php_uint32; typedef signed long php_int32; #else #error Need type which holds 32 bits #endif #define MT_N (624) typedef struct _php_basic_globals { HashTable *user_shutdown_function_names; HashTable putenv_ht; zval *strtok_zval; char *strtok_string; char *locale_string; char *strtok_last; char strtok_table[256]; ulong strtok_len; char str_ebuf[40]; zend_fcall_info array_walk_fci; zend_fcall_info_cache array_walk_fci_cache; zend_fcall_info user_compare_fci; zend_fcall_info_cache user_compare_fci_cache; zend_llist *user_tick_functions; zval *active_ini_file_section; HashTable sm_protected_env_vars; char *sm_allowed_env_vars; /* pageinfo.c */ long page_uid; long page_gid; long page_inode; time_t page_mtime; /* filestat.c && main/streams/streams.c */ char *CurrentStatFile, *CurrentLStatFile; php_stream_statbuf ssb, lssb; /* rand.c */ php_uint32 state[MT_N+1]; /* state vector + 1 extra to not violate ANSI C */ php_uint32 *next; /* next random value is computed from here */ int left; /* can *next++ this many times before reloading */ unsigned int rand_seed; /* Seed for rand(), in ts version */ zend_bool rand_is_seeded; /* Whether rand() has been seeded */ zend_bool mt_rand_is_seeded; /* Whether mt_rand() has been seeded */ /* syslog.c */ int syslog_started; char *syslog_device; /* var.c */ zend_class_entry *incomplete_class; /* url_scanner_ex.re */ url_adapt_state_ex_t url_adapt_state_ex; #ifdef HAVE_MMAP void *mmap_file; size_t mmap_len; #endif HashTable *user_filter_map; /* file.c */ #if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T) mbstate_t mblen_state; #endif int umask; } php_basic_globals; #ifdef ZTS #define BG(v) TSRMG(basic_globals_id, php_basic_globals *, v) PHPAPI extern int basic_globals_id; #else #define BG(v) (basic_globals.v) PHPAPI extern php_basic_globals basic_globals; #endif #if HAVE_PUTENV typedef struct { char *putenv_string; char *previous_value; char *key; int key_len; } putenv_entry; #endif /* Values are comma-delimited */ #define SAFE_MODE_PROTECTED_ENV_VARS "LD_LIBRARY_PATH" #define SAFE_MODE_ALLOWED_ENV_VARS "PHP_" PHPAPI double php_get_nan(void); PHPAPI double php_get_inf(void); #endif /* BASIC_FUNCTIONS_H */ 070701000af24d000081a40000000000000000000000014dc0f4e000000b30000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/standard/streamsfuncs.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: streamsfuncs.h 306939 2011-01-01 02:19:59Z felipe $ */ /* Flags for stream_socket_client */ #define PHP_STREAM_CLIENT_PERSISTENT 1 #define PHP_STREAM_CLIENT_ASYNC_CONNECT 2 #define PHP_STREAM_CLIENT_CONNECT 4 PHP_FUNCTION(stream_socket_client); PHP_FUNCTION(stream_socket_server); PHP_FUNCTION(stream_socket_accept); PHP_FUNCTION(stream_socket_get_name); PHP_FUNCTION(stream_socket_recvfrom); PHP_FUNCTION(stream_socket_sendto); PHP_FUNCTION(stream_copy_to_stream); PHP_FUNCTION(stream_get_contents); PHP_FUNCTION(stream_set_blocking); PHP_FUNCTION(stream_select); PHP_FUNCTION(stream_set_timeout); PHP_FUNCTION(stream_set_read_buffer); PHP_FUNCTION(stream_set_write_buffer); PHP_FUNCTION(stream_get_transports); PHP_FUNCTION(stream_get_wrappers); PHP_FUNCTION(stream_get_line); PHP_FUNCTION(stream_get_meta_data); PHP_FUNCTION(stream_wrapper_register); PHP_FUNCTION(stream_wrapper_unregister); PHP_FUNCTION(stream_wrapper_restore); PHP_FUNCTION(stream_context_create); PHP_FUNCTION(stream_context_set_params); PHP_FUNCTION(stream_context_get_params); PHP_FUNCTION(stream_context_set_option); PHP_FUNCTION(stream_context_get_options); PHP_FUNCTION(stream_context_get_default); PHP_FUNCTION(stream_context_set_default); PHP_FUNCTION(stream_filter_prepend); PHP_FUNCTION(stream_filter_append); PHP_FUNCTION(stream_filter_remove); PHP_FUNCTION(stream_socket_enable_crypto); PHP_FUNCTION(stream_socket_shutdown); PHP_FUNCTION(stream_resolve_include_path); PHP_FUNCTION(stream_is_local); PHP_FUNCTION(stream_supports_lock); #if HAVE_SOCKETPAIR PHP_FUNCTION(stream_socket_pair); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af24b000081a40000000000000000000000014dc0f4df00000941000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/standard/scanf.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Clayton Collie | +----------------------------------------------------------------------+ */ /* $Id: scanf.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SCANF_H #define SCANF_H #define SCAN_MAX_ARGS 0xFF /* Maximum number of variable which can be */ /* passed to (f|s)scanf. This is an artifical */ /* upper limit to keep resources in check and */ /* minimize the possibility of exploits */ #define SCAN_SUCCESS SUCCESS #define SCAN_ERROR_EOF -1 /* indicates premature termination of scan */ /* can be caused by bad parameters or format*/ /* string. */ #define SCAN_ERROR_INVALID_FORMAT (SCAN_ERROR_EOF - 1) #define SCAN_ERROR_VAR_PASSED_BYVAL (SCAN_ERROR_INVALID_FORMAT - 1) #define SCAN_ERROR_WRONG_PARAM_COUNT (SCAN_ERROR_VAR_PASSED_BYVAL - 1) #define SCAN_ERROR_INTERNAL (SCAN_ERROR_WRONG_PARAM_COUNT - 1) /* * The following are here solely for the benefit of the scanf type functions * e.g. fscanf */ PHPAPI int ValidateFormat(char *format, int numVars, int *totalVars); PHPAPI int php_sscanf_internal(char *string,char *format,int argCount,zval ***args, int varStart, zval **return_value TSRMLS_DC); #endif /* SCANF_H */ 070701000af23f000081a40000000000000000000000014dc0f4df00000510000000b500010002ffffffffffffffff0000003800000000root/usr/local/include/php/ext/standard/php_metaphone.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Thies C. Arntzen | +----------------------------------------------------------------------+ */ /* $Id: php_metaphone.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_METAPHONE_H #define PHP_METAPHONE_H PHP_FUNCTION(metaphone); #endif 070701000af23b000081a40000000000000000000000014dc0f4df0000062f000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/standard/php_lcg.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: php_lcg.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_LCG_H #define PHP_LCG_H #include "ext/standard/basic_functions.h" typedef struct { php_int32 s1; php_int32 s2; int seeded; } php_lcg_globals; PHPAPI double php_combined_lcg(TSRMLS_D); PHP_FUNCTION(lcg_value); PHP_MINIT_FUNCTION(lcg); #ifdef ZTS #define LCG(v) TSRMG(lcg_globals_id, php_lcg_globals *, v) #else #define LCG(v) (lcg_globals.v) #endif #endif 070701000af23c000081a40000000000000000000000014dc0f4df0000058b000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/standard/php_link.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: | +----------------------------------------------------------------------+ */ /* $Id: php_link.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_LINK_H #define PHP_LINK_H #if defined(HAVE_SYMLINK) || defined(PHP_WIN32) PHP_FUNCTION(link); PHP_FUNCTION(readlink); PHP_FUNCTION(linkinfo); PHP_FUNCTION(symlink); #endif #endif /* PHP_LINK_H */ 070701000af219000081a40000000000000000000000014dc0f4df000006f8000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/standard/credits.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: credits.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef CREDITS_H #define CREDITS_H #ifndef HAVE_CREDITS_DEFS #define HAVE_CREDITS_DEFS #define PHP_CREDITS_GROUP (1<<0) #define PHP_CREDITS_GENERAL (1<<1) #define PHP_CREDITS_SAPI (1<<2) #define PHP_CREDITS_MODULES (1<<3) #define PHP_CREDITS_DOCS (1<<4) #define PHP_CREDITS_FULLPAGE (1<<5) #define PHP_CREDITS_QA (1<<6) #define PHP_CREDITS_WEB (1<<7) #define PHP_CREDITS_ALL 0xFFFFFFFF #endif /* HAVE_CREDITS_DEFS */ PHPAPI void php_print_credits(int flag TSRMLS_DC); #endif 070701000af251000081a40000000000000000000000014dc0f4e000000d02000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/ext/standard/winver.h#ifndef _PHP_WINVER_H #define _PHP_WINVER_H #ifndef SM_SERVERR2 #define SM_SERVERR2 89 #endif #ifndef VER_SUITE_WH_SERVER #define VER_SUITE_WH_SERVER 0x8000 #endif #ifndef PRODUCT_ULTIMATE #define PRODUCT_UNDEFINED 0x00000000 #define PRODUCT_ULTIMATE 0x00000001 #define PRODUCT_HOME_BASIC 0x00000002 #define PRODUCT_HOME_PREMIUM 0x00000003 #define PRODUCT_ENTERPRISE 0x00000004 #define PRODUCT_HOME_BASIC_N 0x00000005 #define PRODUCT_BUSINESS 0x00000006 #define PRODUCT_STANDARD_SERVER 0x00000007 #define PRODUCT_DATACENTER_SERVER 0x00000008 #define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 #define PRODUCT_ENTERPRISE_SERVER 0x0000000A #define PRODUCT_STARTER 0x0000000B #define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C #define PRODUCT_STANDARD_SERVER_CORE 0x0000000D #define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E #define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F #define PRODUCT_BUSINESS_N 0x00000010 #define PRODUCT_WEB_SERVER 0x00000011 #define PRODUCT_CLUSTER_SERVER 0x00000012 #define PRODUCT_HOME_SERVER 0x00000013 #define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014 #define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015 #define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016 #define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017 #define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018 #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019 #endif #ifndef VER_NT_WORKSTATION #define VER_NT_WORKSTATION 0x0000001 #define VER_NT_DOMAIN_CONTROLLER 0x0000002 #define VER_NT_SERVER 0x0000003 #endif #ifndef VER_SUITE_SMALLBUSINESS #define VER_SUITE_SMALLBUSINESS 0x00000001 #define VER_SUITE_ENTERPRISE 0x00000002 #define VER_SUITE_BACKOFFICE 0x00000004 #define VER_SUITE_COMMUNICATIONS 0x00000008 #define VER_SUITE_TERMINAL 0x00000010 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 #define VER_SUITE_EMBEDDEDNT 0x00000040 #define VER_SUITE_DATACENTER 0x00000080 #define VER_SUITE_SINGLEUSERTS 0x00000100 #define VER_SUITE_PERSONAL 0x00000200 #define VER_SUITE_BLADE 0x00000400 #define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 #define VER_SUITE_SECURITY_APPLIANCE 0x00001000 #endif #ifndef VER_SUITE_STORAGE_SERVER # define VER_SUITE_STORAGE_SERVER 0x00002000 #endif #ifndef VER_SUITE_COMPUTE_SERVER # define VER_SUITE_COMPUTE_SERVER 0x00004000 #endif #ifndef PROCESSOR_ARCHITECTURE_AMD64 #define PROCESSOR_ARCHITECTURE_AMD64 9 #endif typedef struct _php_win_OSVERSIONINFOEXA { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; CHAR szCSDVersion[128]; WORD wServicePackMajor; WORD wServicePackMinor; WORD wSuiteMask; BYTE wProductType; BYTE wReserved; } php_win_OSVERSIONINFOEX; #endif070701000af239000081a40000000000000000000000014dc0f4df00000a0b000000b500010002ffffffffffffffff0000003f00000000root/usr/local/include/php/ext/standard/php_incomplete_class.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sascha Schumann | +----------------------------------------------------------------------+ */ /* $Id: php_incomplete_class.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H #include "ext/standard/basic_functions.h" #define PHP_IC_ENTRY \ BG(incomplete_class) #define PHP_SET_CLASS_ATTRIBUTES(struc) \ /* OBJECTS_FIXME: Fix for new object model */ \ if (Z_OBJ_HT_P(struc)->get_class_entry && \ Z_OBJCE_P(struc) == BG(incomplete_class)) { \ class_name = php_lookup_class_name(struc, &name_len); \ if (!class_name) { \ name_len = sizeof(INCOMPLETE_CLASS) - 1; \ class_name = estrndup(INCOMPLETE_CLASS, name_len); \ } \ free_class_name = 1; \ incomplete_class = 1; \ } else { \ free_class_name = !zend_get_object_classname(struc, &class_name, &name_len TSRMLS_CC);\ } #define PHP_CLEANUP_CLASS_ATTRIBUTES() \ if (free_class_name) efree(class_name) #define PHP_CLASS_ATTRIBUTES \ char *class_name; \ zend_uint name_len; \ zend_bool free_class_name = 0; \ zend_bool incomplete_class = 0 #define INCOMPLETE_CLASS "__PHP_Incomplete_Class" #define MAGIC_MEMBER "__PHP_Incomplete_Class_Name" #ifdef __cplusplus extern "C" { #endif PHPAPI zend_class_entry *php_create_incomplete_class(TSRMLS_D); PHPAPI char *php_lookup_class_name(zval *object, zend_uint *nlen); PHPAPI void php_store_class_name(zval *object, const char *name, zend_uint len); #ifdef __cplusplus }; #endif #endif 070701000af221000081a40000000000000000000000014dc0f4df000006d4000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/exec.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: exec.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef EXEC_H #define EXEC_H PHP_FUNCTION(system); PHP_FUNCTION(exec); PHP_FUNCTION(escapeshellcmd); PHP_FUNCTION(escapeshellarg); PHP_FUNCTION(passthru); PHP_FUNCTION(shell_exec); PHP_FUNCTION(proc_open); PHP_FUNCTION(proc_get_status); PHP_FUNCTION(proc_close); PHP_FUNCTION(proc_terminate); PHP_FUNCTION(proc_nice); PHP_MINIT_FUNCTION(proc_open); PHPAPI char *php_escape_shell_cmd(char *); PHPAPI char *php_escape_shell_arg(char *); PHPAPI int php_exec(int type, char *cmd, zval *array, zval *return_value TSRMLS_DC); #endif /* EXEC_H */ 070701000af247000081a40000000000000000000000014dc0f4df00001607000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/standard/php_var.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Jani Lehtimäki | +----------------------------------------------------------------------+ */ /* $Id: php_var.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_VAR_H #define PHP_VAR_H #include "ext/standard/php_smart_str_public.h" PHP_FUNCTION(var_dump); PHP_FUNCTION(var_export); PHP_FUNCTION(debug_zval_dump); PHP_FUNCTION(serialize); PHP_FUNCTION(unserialize); PHP_FUNCTION(memory_get_usage); PHP_FUNCTION(memory_get_peak_usage); PHPAPI void php_var_dump(zval **struc, int level TSRMLS_DC); PHPAPI void php_var_export(zval **struc, int level TSRMLS_DC); PHPAPI void php_var_export_ex(zval **struc, int level, smart_str *buf TSRMLS_DC); PHPAPI void php_debug_zval_dump(zval **struc, int level TSRMLS_DC); /* typdef HashTable php_serialize_data_t; */ #define php_serialize_data_t HashTable struct php_unserialize_data { void *first; void *first_dtor; }; typedef struct php_unserialize_data php_unserialize_data_t; PHPAPI void php_var_serialize(smart_str *buf, zval **struc, php_serialize_data_t *var_hash TSRMLS_DC); PHPAPI int php_var_unserialize(zval **rval, const unsigned char **p, const unsigned char *max, php_unserialize_data_t *var_hash TSRMLS_DC); #define PHP_VAR_SERIALIZE_INIT(var_hash) \ zend_hash_init(&(var_hash), 10, NULL, NULL, 0) #define PHP_VAR_SERIALIZE_DESTROY(var_hash) \ zend_hash_destroy(&(var_hash)) #define PHP_VAR_UNSERIALIZE_INIT(var_hash) \ (var_hash).first = 0; \ (var_hash).first_dtor = 0 #define PHP_VAR_UNSERIALIZE_DESTROY(var_hash) \ var_destroy(&(var_hash)) PHPAPI void var_replace(php_unserialize_data_t *var_hash, zval *ozval, zval **nzval); PHPAPI void var_push_dtor(php_unserialize_data_t *var_hash, zval **val); PHPAPI void var_destroy(php_unserialize_data_t *var_hash); #define PHP_VAR_UNSERIALIZE_ZVAL_CHANGED(var_hash, ozval, nzval) \ var_replace((var_hash), (ozval), &(nzval)) PHPAPI zend_class_entry *php_create_empty_class(char *class_name, int len); static inline int php_varname_check(char *name, int name_len, zend_bool silent TSRMLS_DC) /* {{{ */ { if (name_len == sizeof("GLOBALS") - 1 && !memcmp(name, "GLOBALS", sizeof("GLOBALS") - 1)) { if (!silent) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempted GLOBALS variable overwrite"); } return FAILURE; } else if (name[0] == '_' && ( (name_len == sizeof("_GET") - 1 && !memcmp(name, "_GET", sizeof("_GET") - 1)) || (name_len == sizeof("_POST") - 1 && !memcmp(name, "_POST", sizeof("_POST") - 1)) || (name_len == sizeof("_COOKIE") - 1 && !memcmp(name, "_COOKIE", sizeof("_COOKIE") - 1)) || (name_len == sizeof("_ENV") - 1 && !memcmp(name, "_ENV", sizeof("_ENV") - 1)) || (name_len == sizeof("_SERVER") - 1 && !memcmp(name, "_SERVER", sizeof("_SERVER") - 1)) || (name_len == sizeof("_SESSION") - 1 && !memcmp(name, "_SESSION", sizeof("_SESSION") - 1)) || (name_len == sizeof("_FILES") - 1 && !memcmp(name, "_FILES", sizeof("_FILES") - 1)) || (name_len == sizeof("_REQUEST") -1 && !memcmp(name, "_REQUEST", sizeof("_REQUEST") - 1)) ) ) { if (!silent) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempted super-global (%s) variable overwrite", name); } return FAILURE; } else if (name[0] == 'H' && ( (name_len == sizeof("HTTP_POST_VARS") - 1 && !memcmp(name, "HTTP_POST_VARS", sizeof("HTTP_POST_VARS") - 1)) || (name_len == sizeof("HTTP_GET_VARS") - 1 && !memcmp(name, "HTTP_GET_VARS", sizeof("HTTP_GET_VARS") - 1)) || (name_len == sizeof("HTTP_COOKIE_VARS") - 1 && !memcmp(name, "HTTP_COOKIE_VARS", sizeof("HTTP_COOKIE_VARS") - 1)) || (name_len == sizeof("HTTP_ENV_VARS") - 1 && !memcmp(name, "HTTP_ENV_VARS", sizeof("HTTP_ENV_VARS") - 1)) || (name_len == sizeof("HTTP_SERVER_VARS") - 1 && !memcmp(name, "HTTP_SERVER_VARS", sizeof("HTTP_SERVER_VARS") - 1)) || (name_len == sizeof("HTTP_SESSION_VARS") - 1 && !memcmp(name, "HTTP_SESSION_VARS", sizeof("HTTP_SESSION_VARS") - 1)) || (name_len == sizeof("HTTP_RAW_POST_DATA") - 1 && !memcmp(name, "HTTP_RAW_POST_DATA", sizeof("HTTP_RAW_POST_DATA") - 1)) || (name_len == sizeof("HTTP_POST_FILES") - 1 && !memcmp(name, "HTTP_POST_FILES", sizeof("HTTP_POST_FILES") - 1)) ) ) { if (!silent) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempted long input array (%s) overwrite", name); } return FAILURE; } return SUCCESS; } /* }}} */ #endif /* PHP_VAR_H */ 070701000af224000081a40000000000000000000000014dc0f4df00000677000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/standard/fsock.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Paul Panotzki - Bunyip Information Systems | | Jim Winstead | | Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: fsock.h 306939 2011-01-01 02:19:59Z felipe $ */ /* Synced with php 3.0 revision 1.24 1999-06-18 [ssb] */ #ifndef FSOCK_H #define FSOCK_H #include "file.h" #include "php_network.h" PHP_FUNCTION(fsockopen); PHP_FUNCTION(pfsockopen); /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim: sw=4 ts=4 */ #endif /* FSOCK_H */ 070701000af21d000081a40000000000000000000000014dc0f4df00000502000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/ext/standard/css.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Colin Viebrock | +----------------------------------------------------------------------+ */ /* $Id: css.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef CSS_H #define CSS_H PHPAPI void php_info_print_css(TSRMLS_D); #endif 070701000af229000081a40000000000000000000000014dc0f4df00000586000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/standard/microtime.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Paul Panotzki - Bunyip Information Systems | +----------------------------------------------------------------------+ */ /* $Id: microtime.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef MICROTIME_H #define MICROTIME_H #ifdef HAVE_GETTIMEOFDAY PHP_FUNCTION(microtime); PHP_FUNCTION(gettimeofday); #endif #ifdef HAVE_GETRUSAGE PHP_FUNCTION(getrusage); #endif #endif /* MICROTIME_H */ 070701000af222000081a40000000000000000000000014dc0f4df00001165000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/standard/file.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: file.h 306939 2011-01-01 02:19:59Z felipe $ */ /* Synced with php 3.0 revision 1.30 1999-06-16 [ssb] */ #ifndef FILE_H #define FILE_H PHP_MINIT_FUNCTION(file); PHP_MSHUTDOWN_FUNCTION(file); PHP_FUNCTION(tempnam); PHP_NAMED_FUNCTION(php_if_tmpfile); PHP_NAMED_FUNCTION(php_if_fopen); PHPAPI PHP_FUNCTION(fclose); PHP_FUNCTION(popen); PHP_FUNCTION(pclose); PHPAPI PHP_FUNCTION(feof); PHPAPI PHP_FUNCTION(fread); PHPAPI PHP_FUNCTION(fgetc); PHPAPI PHP_FUNCTION(fgets); PHP_FUNCTION(fscanf); PHPAPI PHP_FUNCTION(fgetss); PHP_FUNCTION(fgetcsv); PHP_FUNCTION(fputcsv); PHPAPI PHP_FUNCTION(fwrite); PHPAPI PHP_FUNCTION(fflush); PHPAPI PHP_FUNCTION(rewind); PHPAPI PHP_FUNCTION(ftell); PHPAPI PHP_FUNCTION(fseek); PHP_FUNCTION(mkdir); PHP_FUNCTION(rmdir); PHPAPI PHP_FUNCTION(fpassthru); PHP_FUNCTION(readfile); PHP_FUNCTION(umask); PHP_FUNCTION(rename); PHP_FUNCTION(unlink); PHP_FUNCTION(copy); PHP_FUNCTION(file); PHP_FUNCTION(file_get_contents); PHP_FUNCTION(file_put_contents); PHP_FUNCTION(get_meta_tags); PHP_FUNCTION(flock); PHP_FUNCTION(fd_set); PHP_FUNCTION(fd_isset); #if (!defined(__BEOS__) && !defined(NETWARE) && HAVE_REALPATH) || defined(ZTS) PHP_FUNCTION(realpath); #endif #ifdef HAVE_FNMATCH PHP_FUNCTION(fnmatch); #endif PHP_NAMED_FUNCTION(php_if_ftruncate); PHP_NAMED_FUNCTION(php_if_fstat); PHP_FUNCTION(sys_get_temp_dir); PHP_MINIT_FUNCTION(user_streams); PHPAPI int php_le_stream_context(void); PHPAPI int php_set_sock_blocking(int socketd, int block TSRMLS_DC); PHPAPI int php_copy_file(char *src, char *dest TSRMLS_DC); PHPAPI int php_copy_file_ex(char *src, char *dest, int src_chk TSRMLS_DC); PHPAPI int php_copy_file_ctx(char *src, char *dest, int src_chk, php_stream_context *context TSRMLS_DC); PHPAPI int php_mkdir_ex(char *dir, long mode, int options TSRMLS_DC); PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC); PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char escape_char, size_t buf_len, char *buf, zval *return_value TSRMLS_DC); #define META_DEF_BUFSIZE 8192 #define PHP_FILE_USE_INCLUDE_PATH 1 #define PHP_FILE_IGNORE_NEW_LINES 2 #define PHP_FILE_SKIP_EMPTY_LINES 4 #define PHP_FILE_APPEND 8 #define PHP_FILE_NO_DEFAULT_CONTEXT 16 typedef enum _php_meta_tags_token { TOK_EOF = 0, TOK_OPENTAG, TOK_CLOSETAG, TOK_SLASH, TOK_EQUAL, TOK_SPACE, TOK_ID, TOK_STRING, TOK_OTHER } php_meta_tags_token; typedef struct _php_meta_tags_data { php_stream *stream; int ulc; int lc; char *input_buffer; char *token_data; int token_len; int in_meta; } php_meta_tags_data; php_meta_tags_token php_next_meta_token(php_meta_tags_data * TSRMLS_DC); typedef struct { int pclose_ret; size_t def_chunk_size; long auto_detect_line_endings; long default_socket_timeout; char *user_agent; /* for the http wrapper */ char *user_stream_current_filename; /* for simple recursion protection */ php_stream_context *default_context; HashTable *stream_wrappers; /* per-request copy of url_stream_wrappers_hash */ HashTable *stream_filters; /* per-request copy of stream_filters_hash */ } php_file_globals; #ifdef ZTS #define FG(v) TSRMG(file_globals_id, php_file_globals *, v) extern PHPAPI int file_globals_id; #else #define FG(v) (file_globals.v) extern PHPAPI php_file_globals file_globals; #endif #endif /* FILE_H */ 070701000af235000081a40000000000000000000000014dc0f4df000007d0000000b500010002ffffffffffffffff0000003d00000000root/usr/local/include/php/ext/standard/php_fopen_wrappers.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | | Hartmut Holzgraefe | +----------------------------------------------------------------------+ */ /* $Id: php_fopen_wrappers.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_FOPEN_WRAPPERS_H #define PHP_FOPEN_WRAPPERS_H php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC); php_stream *php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC); extern PHPAPI php_stream_wrapper php_stream_http_wrapper; extern PHPAPI php_stream_wrapper php_stream_ftp_wrapper; extern php_stream_wrapper php_stream_php_wrapper; extern php_stream_wrapper php_plain_files_wrapper; #endif 070701000af1da000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/php/ext/hash070701000af1e5000081a40000000000000000000000014dc0f4dc00000809000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/hash/php_hash_tiger.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_tiger.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_TIGER_H #define PHP_HASH_TIGER_H /* TIGER context */ typedef struct { php_hash_uint64 state[3]; php_hash_uint64 passed; unsigned char buffer[64]; unsigned int passes:1; unsigned int length:7; } PHP_TIGER_CTX; PHP_HASH_API void PHP_3TIGERInit(PHP_TIGER_CTX *context); PHP_HASH_API void PHP_4TIGERInit(PHP_TIGER_CTX *context); PHP_HASH_API void PHP_TIGERUpdate(PHP_TIGER_CTX *context, const unsigned char *input, size_t len); PHP_HASH_API void PHP_TIGER128Final(unsigned char digest[16], PHP_TIGER_CTX *context); PHP_HASH_API void PHP_TIGER160Final(unsigned char digest[20], PHP_TIGER_CTX *context); PHP_HASH_API void PHP_TIGER192Final(unsigned char digest[24], PHP_TIGER_CTX *context); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1df000081a40000000000000000000000014dc0f4dc0000090b000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/hash/php_hash_haval.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sara Golemon | +----------------------------------------------------------------------+ */ /* $Id: php_hash_haval.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_HAVAL_H #define PHP_HASH_HAVAL_H #include "ext/standard/basic_functions.h" /* HAVAL context. */ typedef struct { php_hash_uint32 state[8]; php_hash_uint32 count[2]; unsigned char buffer[128]; char passes; short output; void (*Transform)(php_hash_uint32 state[8], const unsigned char block[128]); } PHP_HAVAL_CTX; #define PHP_HASH_HAVAL_INIT_DECL(p,b) PHP_HASH_API void PHP_##p##HAVAL##b##Init(PHP_HAVAL_CTX *); \ PHP_HASH_API void PHP_HAVAL##b##Final(unsigned char*, PHP_HAVAL_CTX *); PHP_HASH_API void PHP_HAVALUpdate(PHP_HAVAL_CTX *, const unsigned char *, unsigned int); PHP_HASH_HAVAL_INIT_DECL(3,128) PHP_HASH_HAVAL_INIT_DECL(3,160) PHP_HASH_HAVAL_INIT_DECL(3,192) PHP_HASH_HAVAL_INIT_DECL(3,224) PHP_HASH_HAVAL_INIT_DECL(3,256) PHP_HASH_HAVAL_INIT_DECL(4,128) PHP_HASH_HAVAL_INIT_DECL(4,160) PHP_HASH_HAVAL_INIT_DECL(4,192) PHP_HASH_HAVAL_INIT_DECL(4,224) PHP_HASH_HAVAL_INIT_DECL(4,256) PHP_HASH_HAVAL_INIT_DECL(5,128) PHP_HASH_HAVAL_INIT_DECL(5,160) PHP_HASH_HAVAL_INIT_DECL(5,192) PHP_HASH_HAVAL_INIT_DECL(5,224) PHP_HASH_HAVAL_INIT_DECL(5,256) #endif 070701000af1e3000081a40000000000000000000000014dc0f4dc00000f5e000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/hash/php_hash_sha.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | SHA1 Author: Stefan Esser | | SHA256 Author: Sara Golemon | +----------------------------------------------------------------------+ */ /* $Id: php_hash_sha.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_SHA_H #define PHP_HASH_SHA_H /* When SHA is removed from Core, the ext/standard/sha1.c file can be removed and the ext/standard/sha1.h file can be reduced to: #define PHP_HASH_SHA1_NOT_IN_CORE #include "ext/hash/php_hash_sha.h" Don't forget to remove sha1() and sha1_file() from basic_functions.c */ #include "ext/standard/sha1.h" #include "ext/standard/basic_functions.h" #ifdef PHP_HASH_SHA1_NOT_IN_CORE /* SHA1 context. */ typedef struct { php_hash_uint32 state[5]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ unsigned char buffer[64]; /* input buffer */ } PHP_SHA1_CTX; PHP_HASH_API void PHP_SHA1Init(PHP_SHA1_CTX *); PHP_HASH_API void PHP_SHA1Update(PHP_SHA1_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_SHA1Final(unsigned char[20], PHP_SHA1_CTX *); PHP_FUNCTION(sha1); PHP_FUNCTION(sha1_file); #endif /* PHP_HASH_SHA1_NOT_IN_CORE */ /* SHA224 context. */ typedef struct { php_hash_uint32 state[8]; /* state */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ unsigned char buffer[64]; /* input buffer */ } PHP_SHA224_CTX; PHP_HASH_API void PHP_SHA224Init(PHP_SHA224_CTX *); PHP_HASH_API void PHP_SHA224Update(PHP_SHA224_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_SHA224Final(unsigned char[28], PHP_SHA224_CTX *); /* SHA256 context. */ typedef struct { php_hash_uint32 state[8]; /* state */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 */ unsigned char buffer[64]; /* input buffer */ } PHP_SHA256_CTX; PHP_HASH_API void PHP_SHA256Init(PHP_SHA256_CTX *); PHP_HASH_API void PHP_SHA256Update(PHP_SHA256_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_SHA256Final(unsigned char[32], PHP_SHA256_CTX *); /* SHA384 context */ typedef struct { php_hash_uint64 state[8]; /* state */ php_hash_uint64 count[2]; /* number of bits, modulo 2^128 */ unsigned char buffer[128]; /* input buffer */ } PHP_SHA384_CTX; PHP_HASH_API void PHP_SHA384Init(PHP_SHA384_CTX *); PHP_HASH_API void PHP_SHA384Update(PHP_SHA384_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_SHA384Final(unsigned char[48], PHP_SHA384_CTX *); /* SHA512 context */ typedef struct { php_hash_uint64 state[8]; /* state */ php_hash_uint64 count[2]; /* number of bits, modulo 2^128 */ unsigned char buffer[128]; /* input buffer */ } PHP_SHA512_CTX; PHP_HASH_API void PHP_SHA512Init(PHP_SHA512_CTX *); PHP_HASH_API void PHP_SHA512Update(PHP_SHA512_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_SHA512Final(unsigned char[64], PHP_SHA512_CTX *); #endif /* PHP_HASH_SHA_H */ 070701000af1dc000081a40000000000000000000000014dc0f4dc00000759000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/ext/hash/php_hash_adler32.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_adler32.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_ADLER32_H #define PHP_HASH_ADLER32_H #include "ext/standard/basic_functions.h" typedef struct { php_hash_uint32 state; } PHP_ADLER32_CTX; PHP_HASH_API void PHP_ADLER32Init(PHP_ADLER32_CTX *context); PHP_HASH_API void PHP_ADLER32Update(PHP_ADLER32_CTX *context, const unsigned char *input, size_t len); PHP_HASH_API void PHP_ADLER32Final(unsigned char digest[4], PHP_ADLER32_CTX *context); PHP_HASH_API int PHP_ADLER32Copy(const php_hash_ops *ops, PHP_ADLER32_CTX *orig_context, PHP_ADLER32_CTX *copy_context); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1db000081a40000000000000000000000014dc0f4dc00001403000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/hash/php_hash.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sara Golemon | +----------------------------------------------------------------------+ */ /* $Id: php_hash.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_H #define PHP_HASH_H #include "php.h" #include "php_hash_types.h" #define PHP_HASH_EXTNAME "hash" #define PHP_HASH_EXTVER "1.0" #define PHP_HASH_RESNAME "Hash Context" #define PHP_HASH_HMAC 0x0001 typedef void (*php_hash_init_func_t)(void *context); typedef void (*php_hash_update_func_t)(void *context, const unsigned char *buf, unsigned int count); typedef void (*php_hash_final_func_t)(unsigned char *digest, void *context); typedef int (*php_hash_copy_func_t)(const void *ops, void *orig_context, void *dest_context); typedef struct _php_hash_ops { php_hash_init_func_t hash_init; php_hash_update_func_t hash_update; php_hash_final_func_t hash_final; php_hash_copy_func_t hash_copy; int digest_size; int block_size; int context_size; } php_hash_ops; typedef struct _php_hash_data { const php_hash_ops *ops; void *context; long options; unsigned char *key; } php_hash_data; extern const php_hash_ops php_hash_md2_ops; extern const php_hash_ops php_hash_md4_ops; extern const php_hash_ops php_hash_md5_ops; extern const php_hash_ops php_hash_sha1_ops; extern const php_hash_ops php_hash_sha224_ops; extern const php_hash_ops php_hash_sha256_ops; extern const php_hash_ops php_hash_sha384_ops; extern const php_hash_ops php_hash_sha512_ops; extern const php_hash_ops php_hash_ripemd128_ops; extern const php_hash_ops php_hash_ripemd160_ops; extern const php_hash_ops php_hash_ripemd256_ops; extern const php_hash_ops php_hash_ripemd320_ops; extern const php_hash_ops php_hash_whirlpool_ops; extern const php_hash_ops php_hash_3tiger128_ops; extern const php_hash_ops php_hash_3tiger160_ops; extern const php_hash_ops php_hash_3tiger192_ops; extern const php_hash_ops php_hash_4tiger128_ops; extern const php_hash_ops php_hash_4tiger160_ops; extern const php_hash_ops php_hash_4tiger192_ops; extern const php_hash_ops php_hash_snefru_ops; extern const php_hash_ops php_hash_gost_ops; extern const php_hash_ops php_hash_adler32_ops; extern const php_hash_ops php_hash_crc32_ops; extern const php_hash_ops php_hash_crc32b_ops; extern const php_hash_ops php_hash_salsa10_ops; extern const php_hash_ops php_hash_salsa20_ops; #define PHP_HASH_HAVAL_OPS(p,b) extern const php_hash_ops php_hash_##p##haval##b##_ops; PHP_HASH_HAVAL_OPS(3,128) PHP_HASH_HAVAL_OPS(3,160) PHP_HASH_HAVAL_OPS(3,192) PHP_HASH_HAVAL_OPS(3,224) PHP_HASH_HAVAL_OPS(3,256) PHP_HASH_HAVAL_OPS(4,128) PHP_HASH_HAVAL_OPS(4,160) PHP_HASH_HAVAL_OPS(4,192) PHP_HASH_HAVAL_OPS(4,224) PHP_HASH_HAVAL_OPS(4,256) PHP_HASH_HAVAL_OPS(5,128) PHP_HASH_HAVAL_OPS(5,160) PHP_HASH_HAVAL_OPS(5,192) PHP_HASH_HAVAL_OPS(5,224) PHP_HASH_HAVAL_OPS(5,256) extern zend_module_entry hash_module_entry; #define phpext_hash_ptr &hash_module_entry #ifdef PHP_WIN32 # define PHP_HASH_API __declspec(dllexport) #elif defined(__GNUC__) && __GNUC__ >= 4 # define PHP_HASH_API __attribute__ ((visibility("default"))) #else # define PHP_HASH_API #endif #ifdef ZTS #include "TSRM.h" #endif PHP_FUNCTION(hash); PHP_FUNCTION(hash_file); PHP_FUNCTION(hash_hmac); PHP_FUNCTION(hash_hmac_file); PHP_FUNCTION(hash_init); PHP_FUNCTION(hash_update); PHP_FUNCTION(hash_update_stream); PHP_FUNCTION(hash_update_file); PHP_FUNCTION(hash_final); PHP_FUNCTION(hash_algos); PHP_HASH_API const php_hash_ops *php_hash_fetch_ops(const char *algo, int algo_len); PHP_HASH_API void php_hash_register_algo(const char *algo, const php_hash_ops *ops); PHP_HASH_API int php_hash_copy(const void *ops, void *orig_context, void *dest_context); static inline void php_hash_bin2hex(char *out, const unsigned char *in, int in_len) { static const char hexits[17] = "0123456789abcdef"; int i; for(i = 0; i < in_len; i++) { out[i * 2] = hexits[in[i] >> 4]; out[(i * 2) + 1] = hexits[in[i] & 0x0F]; } } #endif /* PHP_HASH_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af1e4000081a40000000000000000000000014dc0f4dc00000777000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/hash/php_hash_snefru.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_snefru.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_SNEFRU_H #define PHP_HASH_SNEFRU_H /* SNEFRU-2.5a with 8 passes and 256 bit hash output * AKA "Xerox Secure Hash Function" */ #include "ext/standard/basic_functions.h" /* SNEFRU context */ typedef struct { php_hash_uint32 state[16]; php_hash_uint32 count[2]; unsigned char length; unsigned char buffer[32]; } PHP_SNEFRU_CTX; PHP_HASH_API void PHP_SNEFRUInit(PHP_SNEFRU_CTX *); PHP_HASH_API void PHP_SNEFRUUpdate(PHP_SNEFRU_CTX *, const unsigned char *, size_t); PHP_HASH_API void PHP_SNEFRUFinal(unsigned char[32], PHP_SNEFRU_CTX *); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1e1000081a40000000000000000000000014dc0f4dc00000c33000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/hash/php_hash_ripemd.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Sara Golemon | +----------------------------------------------------------------------+ */ /* $Id: php_hash_ripemd.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_RIPEMD_H #define PHP_HASH_RIPEMD_H #include "ext/standard/basic_functions.h" /* RIPEMD context. */ typedef struct { php_hash_uint32 state[4]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_RIPEMD128_CTX; typedef struct { php_hash_uint32 state[5]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_RIPEMD160_CTX; typedef struct { php_hash_uint32 state[8]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_RIPEMD256_CTX; typedef struct { php_hash_uint32 state[10]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_RIPEMD320_CTX; PHP_HASH_API void PHP_RIPEMD128Init(PHP_RIPEMD128_CTX *); PHP_HASH_API void PHP_RIPEMD128Update(PHP_RIPEMD128_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_RIPEMD128Final(unsigned char[16], PHP_RIPEMD128_CTX *); PHP_HASH_API void PHP_RIPEMD160Init(PHP_RIPEMD160_CTX *); PHP_HASH_API void PHP_RIPEMD160Update(PHP_RIPEMD160_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_RIPEMD160Final(unsigned char[20], PHP_RIPEMD160_CTX *); PHP_HASH_API void PHP_RIPEMD256Init(PHP_RIPEMD256_CTX *); PHP_HASH_API void PHP_RIPEMD256Update(PHP_RIPEMD256_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_RIPEMD256Final(unsigned char[32], PHP_RIPEMD256_CTX *); PHP_HASH_API void PHP_RIPEMD320Init(PHP_RIPEMD320_CTX *); PHP_HASH_API void PHP_RIPEMD320Update(PHP_RIPEMD320_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_RIPEMD320Final(unsigned char[40], PHP_RIPEMD320_CTX *); #endif /* PHP_HASH_RIPEMD_H */ 070701000af1dd000081a40000000000000000000000014dc0f4dc000007a3000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/hash/php_hash_crc32.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_crc32.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_CRC32_H #define PHP_HASH_CRC32_H #include "ext/standard/basic_functions.h" typedef struct { php_hash_uint32 state; } PHP_CRC32_CTX; PHP_HASH_API void PHP_CRC32Init(PHP_CRC32_CTX *context); PHP_HASH_API void PHP_CRC32Update(PHP_CRC32_CTX *context, const unsigned char *input, size_t len); PHP_HASH_API void PHP_CRC32BUpdate(PHP_CRC32_CTX *context, const unsigned char *input, size_t len); PHP_HASH_API void PHP_CRC32Final(unsigned char digest[4], PHP_CRC32_CTX *context); PHP_HASH_API int PHP_CRC32Copy(const php_hash_ops *ops, PHP_CRC32_CTX *orig_context, PHP_CRC32_CTX *copy_context); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1de000081a40000000000000000000000014dc0f4dc00000702000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/hash/php_hash_gost.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_gost.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_GOST_H #define PHP_HASH_GOST_H #include "ext/standard/basic_functions.h" /* GOST context */ typedef struct { php_hash_uint32 state[16]; php_hash_uint32 count[2]; unsigned char length; unsigned char buffer[32]; } PHP_GOST_CTX; PHP_HASH_API void PHP_GOSTInit(PHP_GOST_CTX *); PHP_HASH_API void PHP_GOSTUpdate(PHP_GOST_CTX *, const unsigned char *, size_t); PHP_HASH_API void PHP_GOSTFinal(unsigned char[64], PHP_GOST_CTX *); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1e7000081a40000000000000000000000014dc0f4dc00000724000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/hash/php_hash_whirlpool.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_whirlpool.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_WHIRLPOOL_H #define PHP_HASH_WHIRLPOOL_H /* WHIRLPOOL context */ typedef struct { php_hash_uint64 state[8]; unsigned char bitlength[32]; struct { int pos; int bits; unsigned char data[64]; } buffer; } PHP_WHIRLPOOL_CTX; PHP_HASH_API void PHP_WHIRLPOOLInit(PHP_WHIRLPOOL_CTX *); PHP_HASH_API void PHP_WHIRLPOOLUpdate(PHP_WHIRLPOOL_CTX *, const unsigned char *, size_t); PHP_HASH_API void PHP_WHIRLPOOLFinal(unsigned char[64], PHP_WHIRLPOOL_CTX *); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1e6000081a40000000000000000000000014dc0f4dd00000894000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/hash/php_hash_types.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_types.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_TYPES_H #define PHP_HASH_TYPES_H #ifdef HAVE_CONFIG_H #include "config.h" #else #ifndef PHP_WIN32 #include "php_config.h" #endif #endif #ifndef PHP_WIN32 #if SIZEOF_LONG == 8 #define L64(x) x typedef unsigned long php_hash_uint64; #if SIZEOF_INT == 4 typedef unsigned int php_hash_uint32; #elif SIZEOF_SHORT == 4 typedef unsigned short php_hash_uint32; #else #error "Need a 32bit integer type" #endif #elif SIZEOF_LONG_LONG == 8 #define L64(x) x##LL typedef unsigned long long php_hash_uint64; #if SIZEOF_INT == 4 typedef unsigned int php_hash_uint32; #elif SIZEOF_LONG == 4 typedef unsigned long php_hash_uint32; #else #error "Need a 32bit integer type" #endif #else #error "Need a 64bit integer type" #endif #else #define L64(x) x##i64 typedef unsigned __int64 php_hash_uint64; typedef unsigned __int32 php_hash_uint32; #endif #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1e2000081a40000000000000000000000014dc0f4dc000007b1000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/hash/php_hash_salsa.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Michael Wallner | +----------------------------------------------------------------------+ */ /* $Id: php_hash_salsa.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_SALSA_H #define PHP_HASH_SALSA_H #include "ext/standard/basic_functions.h" /* SALSA context */ typedef struct { php_hash_uint32 state[16]; unsigned char init:1; unsigned char length:7; unsigned char buffer[64]; void (*Transform)(php_hash_uint32 state[16], php_hash_uint32 data[16]); } PHP_SALSA_CTX; #define PHP_SALSAInit PHP_SALSA20Init PHP_HASH_API void PHP_SALSA10Init(PHP_SALSA_CTX *); PHP_HASH_API void PHP_SALSA20Init(PHP_SALSA_CTX *); PHP_HASH_API void PHP_SALSAUpdate(PHP_SALSA_CTX *, const unsigned char *, size_t); PHP_HASH_API void PHP_SALSAFinal(unsigned char[64], PHP_SALSA_CTX *); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */ 070701000af1e0000081a40000000000000000000000014dc0f4dc00000f69000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/hash/php_hash_md.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Original Author: Rasmus Lerdorf | | Modified for pHASH by: Sara Golemon +----------------------------------------------------------------------+ */ /* $Id: php_hash_md.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_HASH_MD_H #define PHP_HASH_MD_H /* When SHA is removed from Core, the ext/standard/sha1.c file can be removed and the ext/standard/sha1.h file can be reduced to: #define PHP_HASH_SHA1_NOT_IN_CORE #include "ext/hash/php_hash_sha.h" Don't forget to remove md5() and md5_file() entries from basic_functions.c */ #include "ext/standard/md5.h" #ifdef PHP_HASH_MD5_NOT_IN_CORE /* MD5.H - header file for MD5C.C */ /* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved. License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this function. License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing the derived work. RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. These notices must be retained in any copies of any part of this documentation and/or software. */ /* MD5 context. */ typedef struct { php_hash_uint32 state[4]; /* state (ABCD) */ php_hash_uint32 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } PHP_MD5_CTX; PHP_HASH_API void make_digest(char *md5str, unsigned char *digest); PHP_HASH_API void PHP_MD5Init(PHP_MD5_CTX *); PHP_HASH_API void PHP_MD5Update(PHP_MD5_CTX *, const unsigned char *, unsigned int); PHP_HASH_API void PHP_MD5Final(unsigned char[16], PHP_MD5_CTX *); PHP_NAMED_FUNCTION(php_if_md5); PHP_NAMED_FUNCTION(php_if_md5_file); #endif /* PHP_HASH_MD5_NOT_IN_CORE */ /* MD4 context */ typedef struct { php_hash_uint32 state[4]; php_hash_uint32 count[2]; unsigned char buffer[64]; } PHP_MD4_CTX; PHP_HASH_API void PHP_MD4Init(PHP_MD4_CTX *); PHP_HASH_API void PHP_MD4Update(PHP_MD4_CTX *context, const unsigned char *, unsigned int); PHP_HASH_API void PHP_MD4Final(unsigned char[16], PHP_MD4_CTX *); /* MD2 context */ typedef struct { unsigned char state[48]; unsigned char checksum[16]; unsigned char buffer[16]; char in_buffer; } PHP_MD2_CTX; PHP_HASH_API void PHP_MD2Init(PHP_MD2_CTX *context); PHP_HASH_API void PHP_MD2Update(PHP_MD2_CTX *context, const unsigned char *, unsigned int); PHP_HASH_API void PHP_MD2Final(unsigned char[16], PHP_MD2_CTX *); #endif 070701000af252000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002300000000root/usr/local/include/php/ext/xml070701000af254000081a40000000000000000000000014dc0f4e000001210000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/ext/xml/php_xml.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Thies C. Arntzen | | Sterling Hughes | +----------------------------------------------------------------------+ */ /* $Id: php_xml.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_XML_H #define PHP_XML_H #ifdef HAVE_XML extern zend_module_entry xml_module_entry; #define xml_module_ptr &xml_module_entry #else #define xml_module_ptr NULL #endif #ifdef HAVE_XML #include "ext/xml/expat_compat.h" #ifdef XML_UNICODE #error "UTF-16 Unicode support not implemented!" #endif ZEND_BEGIN_MODULE_GLOBALS(xml) XML_Char *default_encoding; ZEND_END_MODULE_GLOBALS(xml) typedef struct { int index; int case_folding; XML_Parser parser; XML_Char *target_encoding; zval *startElementHandler; zval *endElementHandler; zval *characterDataHandler; zval *processingInstructionHandler; zval *defaultHandler; zval *unparsedEntityDeclHandler; zval *notationDeclHandler; zval *externalEntityRefHandler; zval *unknownEncodingHandler; zval *startNamespaceDeclHandler; zval *endNamespaceDeclHandler; zend_function *startElementPtr; zend_function *endElementPtr; zend_function *characterDataPtr; zend_function *processingInstructionPtr; zend_function *defaultPtr; zend_function *unparsedEntityDeclPtr; zend_function *notationDeclPtr; zend_function *externalEntityRefPtr; zend_function *unknownEncodingPtr; zend_function *startNamespaceDeclPtr; zend_function *endNamespaceDeclPtr; zval *object; zval *data; zval *info; int level; int toffset; int curtag; zval **ctag; char **ltags; int lastwasopen; int skipwhite; int isparsing; XML_Char *baseURI; } xml_parser; typedef struct { XML_Char *name; char (*decoding_function)(unsigned short); unsigned short (*encoding_function)(unsigned char); } xml_encoding; enum php_xml_option { PHP_XML_OPTION_CASE_FOLDING = 1, PHP_XML_OPTION_TARGET_ENCODING, PHP_XML_OPTION_SKIP_TAGSTART, PHP_XML_OPTION_SKIP_WHITE }; /* for xml_parse_into_struct */ #define XML_MAXLEVEL 255 /* XXX this should be dynamic */ PHP_FUNCTION(xml_parser_create); PHP_FUNCTION(xml_parser_create_ns); PHP_FUNCTION(xml_set_object); PHP_FUNCTION(xml_set_element_handler); PHP_FUNCTION(xml_set_character_data_handler); PHP_FUNCTION(xml_set_processing_instruction_handler); PHP_FUNCTION(xml_set_default_handler); PHP_FUNCTION(xml_set_unparsed_entity_decl_handler); PHP_FUNCTION(xml_set_notation_decl_handler); PHP_FUNCTION(xml_set_external_entity_ref_handler); PHP_FUNCTION(xml_set_start_namespace_decl_handler); PHP_FUNCTION(xml_set_end_namespace_decl_handler); PHP_FUNCTION(xml_parse); PHP_FUNCTION(xml_get_error_code); PHP_FUNCTION(xml_error_string); PHP_FUNCTION(xml_get_current_line_number); PHP_FUNCTION(xml_get_current_column_number); PHP_FUNCTION(xml_get_current_byte_index); PHP_FUNCTION(xml_parser_free); PHP_FUNCTION(xml_parser_set_option); PHP_FUNCTION(xml_parser_get_option); PHP_FUNCTION(utf8_encode); PHP_FUNCTION(utf8_decode); PHP_FUNCTION(xml_parse_into_struct); PHPAPI char *_xml_zval_strdup(zval *val); PHPAPI char *xml_utf8_decode(const XML_Char *, int, int *, const XML_Char *); PHPAPI char *xml_utf8_encode(const char *s, int len, int *newlen, const XML_Char *encoding); #endif /* HAVE_LIBEXPAT */ #define phpext_xml_ptr xml_module_ptr #ifdef ZTS #define XML(v) TSRMG(xml_globals_id, zend_xml_globals *, v) #else #define XML(v) (xml_globals.v) #endif #endif /* PHP_XML_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af253000081a40000000000000000000000014dc0f4e0000017ff000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/xml/expat_compat.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | +----------------------------------------------------------------------+ */ /* $Id: expat_compat.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_EXPAT_COMPAT_H #define PHP_EXPAT_COMPAT_H #ifdef PHP_WIN32 #include "config.w32.h" #else #include #endif #if !defined(HAVE_LIBEXPAT) && defined(HAVE_LIBXML) #define LIBXML_EXPAT_COMPAT 1 #include "php.h" #include "php_compat.h" #include #include #include #include typedef xmlChar XML_Char; typedef void (*XML_StartElementHandler)(void *, const XML_Char *, const XML_Char **); typedef void (*XML_EndElementHandler)(void *, const XML_Char *); typedef void (*XML_CharacterDataHandler)(void *, const XML_Char *, int); typedef void (*XML_ProcessingInstructionHandler)(void *, const XML_Char *, const XML_Char *); typedef void (*XML_CommentHandler)(void *, const XML_Char *); typedef void (*XML_DefaultHandler)(void *, const XML_Char *, int); typedef void (*XML_UnparsedEntityDeclHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *); typedef void (*XML_NotationDeclHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *); typedef int (*XML_ExternalEntityRefHandler)(void *, const XML_Char *, const XML_Char *, const XML_Char *, const XML_Char *); typedef void (*XML_StartNamespaceDeclHandler)(void *, const XML_Char *, const XML_Char *); typedef void (*XML_EndNamespaceDeclHandler)(void *, const XML_Char *); typedef struct _XML_Memory_Handling_Suite { void *(*malloc_fcn)(size_t size); void *(*realloc_fcn)(void *ptr, size_t size); void (*free_fcn)(void *ptr); } XML_Memory_Handling_Suite; typedef struct _XML_Parser { int use_namespace; xmlChar *_ns_seperator; void *user; xmlParserCtxtPtr parser; XML_StartElementHandler h_start_element; XML_EndElementHandler h_end_element; XML_CharacterDataHandler h_cdata; XML_ProcessingInstructionHandler h_pi; XML_CommentHandler h_comment; XML_DefaultHandler h_default; XML_UnparsedEntityDeclHandler h_unparsed_entity_decl; XML_NotationDeclHandler h_notation_decl; XML_ExternalEntityRefHandler h_external_entity_ref; XML_StartNamespaceDeclHandler h_start_ns; XML_EndNamespaceDeclHandler h_end_ns; } *XML_Parser; enum XML_Error { XML_ERROR_NONE, XML_ERROR_NO_MEMORY, XML_ERROR_SYNTAX, XML_ERROR_NO_ELEMENTS, XML_ERROR_INVALID_TOKEN, XML_ERROR_UNCLOSED_TOKEN, XML_ERROR_PARTIAL_CHAR, XML_ERROR_TAG_MISMATCH, XML_ERROR_DUPLICATE_ATTRIBUTE, XML_ERROR_JUNK_AFTER_DOC_ELEMENT, XML_ERROR_PARAM_ENTITY_REF, XML_ERROR_UNDEFINED_ENTITY, XML_ERROR_RECURSIVE_ENTITY_REF, XML_ERROR_ASYNC_ENTITY, XML_ERROR_BAD_CHAR_REF, XML_ERROR_BINARY_ENTITY_REF, XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, XML_ERROR_MISPLACED_XML_PI, XML_ERROR_UNKNOWN_ENCODING, XML_ERROR_INCORRECT_ENCODING, XML_ERROR_UNCLOSED_CDATA_SECTION, XML_ERROR_EXTERNAL_ENTITY_HANDLING, XML_ERROR_NOT_STANDALONE, XML_ERROR_UNEXPECTED_STATE, XML_ERROR_ENTITY_DECLARED_IN_PE, XML_ERROR_FEATURE_REQUIRES_XML_DTD, XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING }; enum XML_Content_Type { XML_CTYPE_EMPTY = 1, XML_CTYPE_ANY, XML_CTYPE_MIXED, XML_CTYPE_NAME, XML_CTYPE_CHOICE, XML_CTYPE_SEQ }; PHPAPI XML_Parser XML_ParserCreate(const XML_Char *); PHPAPI XML_Parser XML_ParserCreateNS(const XML_Char *, const XML_Char); PHPAPI XML_Parser XML_ParserCreate_MM(const XML_Char *, const XML_Memory_Handling_Suite *, const XML_Char *); PHPAPI void XML_SetUserData(XML_Parser, void *); PHPAPI void *XML_GetUserData(XML_Parser); PHPAPI void XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler); PHPAPI void XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler); PHPAPI void XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler); PHPAPI void XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler); PHPAPI void XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler); PHPAPI void XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler); PHPAPI void XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler); PHPAPI void XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler); PHPAPI void XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler); PHPAPI int XML_Parse(XML_Parser, const XML_Char *, int data_len, int is_final); PHPAPI int XML_GetErrorCode(XML_Parser); PHPAPI const XML_Char *XML_ErrorString(int); PHPAPI int XML_GetCurrentLineNumber(XML_Parser); PHPAPI int XML_GetCurrentColumnNumber(XML_Parser); PHPAPI int XML_GetCurrentByteIndex(XML_Parser); PHPAPI int XML_GetCurrentByteCount(XML_Parser); PHPAPI const XML_Char *XML_ExpatVersion(void); PHPAPI void XML_ParserFree(XML_Parser); #elif defined(HAVE_LIBEXPAT) #include #endif /* HAVE_LIBEXPAT */ #endif /* PHP_EXPAT_COMPAT_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af1e8000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002500000000root/usr/local/include/php/ext/iconv070701000af1f1000081a40000000000000000000000014dc0f4dd00000036000000b500010002ffffffffffffffff0000003c00000000root/usr/local/include/php/ext/iconv/php_php_iconv_h_path.h#define PHP_ICONV_H_PATH 070701000af1ee000081a40000000000000000000000014dc0f4dd00001035000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/ext/iconv/php_iconv.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rui Hirokawa | | Stig Bakken | +----------------------------------------------------------------------+ */ /* $Revision: 306939 $ */ #ifndef PHP_ICONV_H #define PHP_ICONV_H #ifdef PHP_WIN32 # ifdef PHP_ICONV_EXPORTS # define PHP_ICONV_API __declspec(dllexport) # else # define PHP_ICONV_API __declspec(dllimport) # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define PHP_ICONV_API __attribute__ ((visibility("default"))) #else # define PHP_ICONV_API #endif #ifdef PHP_ATOM_INC #include "ext/iconv/php_have_iconv.h" #include "ext/iconv/php_have_libiconv.h" #include "ext/iconv/php_iconv_aliased_libiconv.h" #include "ext/iconv/php_have_glibc_iconv.h" #include "ext/iconv/php_have_bsd_iconv.h" #include "ext/iconv/php_have_ibm_iconv.h" #include "ext/iconv/php_iconv_supports_errno.h" #include "ext/iconv/php_php_iconv_impl.h" #include "ext/iconv/php_php_iconv_h_path.h" #endif #ifdef HAVE_ICONV extern zend_module_entry iconv_module_entry; #define iconv_module_ptr &iconv_module_entry PHP_MINIT_FUNCTION(miconv); PHP_MSHUTDOWN_FUNCTION(miconv); PHP_MINFO_FUNCTION(miconv); PHP_NAMED_FUNCTION(php_if_iconv); PHP_FUNCTION(ob_iconv_handler); PHP_FUNCTION(iconv_get_encoding); PHP_FUNCTION(iconv_set_encoding); PHP_FUNCTION(iconv_strlen); PHP_FUNCTION(iconv_substr); PHP_FUNCTION(iconv_strpos); PHP_FUNCTION(iconv_strrpos); PHP_FUNCTION(iconv_mime_encode); PHP_FUNCTION(iconv_mime_decode); PHP_FUNCTION(iconv_mime_decode_headers); ZEND_BEGIN_MODULE_GLOBALS(iconv) char *input_encoding; char *internal_encoding; char *output_encoding; ZEND_END_MODULE_GLOBALS(iconv) #ifdef ZTS # define ICONVG(v) TSRMG(iconv_globals_id, zend_iconv_globals *, v) #else # define ICONVG(v) (iconv_globals.v) #endif #ifdef HAVE_IBM_ICONV # define ICONV_INPUT_ENCODING "ISO8859-1" # define ICONV_OUTPUT_ENCODING "ISO8859-1" # define ICONV_INTERNAL_ENCODING "ISO8859-1" # define ICONV_ASCII_ENCODING "IBM-850" # define ICONV_UCS4_ENCODING "UCS-4" #else # define ICONV_INPUT_ENCODING "ISO-8859-1" # define ICONV_OUTPUT_ENCODING "ISO-8859-1" # define ICONV_INTERNAL_ENCODING "ISO-8859-1" # define ICONV_ASCII_ENCODING "ASCII" # define ICONV_UCS4_ENCODING "UCS-4LE" #endif #ifndef ICONV_CSNMAXLEN #define ICONV_CSNMAXLEN 64 #endif /* {{{ typedef enum php_iconv_err_t */ typedef enum _php_iconv_err_t { PHP_ICONV_ERR_SUCCESS = SUCCESS, PHP_ICONV_ERR_CONVERTER = 1, PHP_ICONV_ERR_WRONG_CHARSET = 2, PHP_ICONV_ERR_TOO_BIG = 3, PHP_ICONV_ERR_ILLEGAL_SEQ = 4, PHP_ICONV_ERR_ILLEGAL_CHAR = 5, PHP_ICONV_ERR_UNKNOWN = 6, PHP_ICONV_ERR_MALFORMED = 7, PHP_ICONV_ERR_ALLOC = 8 } php_iconv_err_t; /* }}} */ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char * in_p, size_t in_len, char **out, size_t *out_len, const char *out_charset, const char *in_charset); #else #define iconv_module_ptr NULL #endif /* HAVE_ICONV */ #define phpext_iconv_ptr iconv_module_ptr #endif /* PHP_ICONV_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af1ef000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000004200000000root/usr/local/include/php/ext/iconv/php_iconv_aliased_libiconv.h 070701000af1ed000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/iconv/php_have_libiconv.h 070701000af1ec000081a40000000000000000000000014dc0f4dd00000015000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/ext/iconv/php_have_iconv.h#define HAVE_ICONV 1 070701000af1f0000081a40000000000000000000000014dc0f4dd0000001f000000b500010002ffffffffffffffff0000004000000000root/usr/local/include/php/ext/iconv/php_iconv_supports_errno.h#define ICONV_SUPPORTS_ERRNO 1 070701000af1ea000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000003c00000000root/usr/local/include/php/ext/iconv/php_have_glibc_iconv.h 070701000af1eb000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000003a00000000root/usr/local/include/php/ext/iconv/php_have_ibm_iconv.h 070701000af1f2000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000003a00000000root/usr/local/include/php/ext/iconv/php_php_iconv_impl.h 070701000af1e9000081a40000000000000000000000014dc0f4dd00000001000000b500010002ffffffffffffffff0000003a00000000root/usr/local/include/php/ext/iconv/php_have_bsd_iconv.h 070701000af20e000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/php/ext/sqlite070701000af20f000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/sqlite/libsqlite070701000af210000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/sqlite/libsqlite/src070701000af211000081a40000000000000000000000014dc0f4de00009778000000b500010002ffffffffffffffff0000003d00000000root/usr/local/include/php/ext/sqlite/libsqlite/src/sqlite.h/* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This header file defines the interface that the SQLite library ** presents to client programs. ** ** @(#) $Id: sqlite.h.in 195361 2005-09-07 15:11:33Z iliaa $ */ #ifndef _SQLITE_H_ #define _SQLITE_H_ #include /* Needed for the definition of va_list */ /* ** Make sure we can call this stuff from C++. */ #ifdef __cplusplus extern "C" { #endif /* ** The version of the SQLite library. */ #ifdef SQLITE_VERSION # undef SQLITE_VERSION #else # define SQLITE_VERSION "2.8.17" #endif /* ** The version string is also compiled into the library so that a program ** can check to make sure that the lib*.a file and the *.h file are from ** the same version. */ extern const char sqlite_version[]; /* ** The SQLITE_UTF8 macro is defined if the library expects to see ** UTF-8 encoded data. The SQLITE_ISO8859 macro is defined if the ** iso8859 encoded should be used. */ #define SQLITE_ISO8859 1 /* ** The following constant holds one of two strings, "UTF-8" or "iso8859", ** depending on which character encoding the SQLite library expects to ** see. The character encoding makes a difference for the LIKE and GLOB ** operators and for the LENGTH() and SUBSTR() functions. */ extern const char sqlite_encoding[]; /* ** Each open sqlite database is represented by an instance of the ** following opaque structure. */ typedef struct sqlite sqlite; /* ** A function to open a new sqlite database. ** ** If the database does not exist and mode indicates write ** permission, then a new database is created. If the database ** does not exist and mode does not indicate write permission, ** then the open fails, an error message generated (if errmsg!=0) ** and the function returns 0. ** ** If mode does not indicates user write permission, then the ** database is opened read-only. ** ** The Truth: As currently implemented, all databases are opened ** for writing all the time. Maybe someday we will provide the ** ability to open a database readonly. The mode parameters is ** provided in anticipation of that enhancement. */ sqlite *sqlite_open(const char *filename, int mode, char **errmsg); /* ** A function to close the database. ** ** Call this function with a pointer to a structure that was previously ** returned from sqlite_open() and the corresponding database will by closed. */ void sqlite_close(sqlite *); /* ** The type for a callback function. */ typedef int (*sqlite_callback)(void*,int,char**, char**); /* ** A function to executes one or more statements of SQL. ** ** If one or more of the SQL statements are queries, then ** the callback function specified by the 3rd parameter is ** invoked once for each row of the query result. This callback ** should normally return 0. If the callback returns a non-zero ** value then the query is aborted, all subsequent SQL statements ** are skipped and the sqlite_exec() function returns the SQLITE_ABORT. ** ** The 4th parameter is an arbitrary pointer that is passed ** to the callback function as its first parameter. ** ** The 2nd parameter to the callback function is the number of ** columns in the query result. The 3rd parameter to the callback ** is an array of strings holding the values for each column. ** The 4th parameter to the callback is an array of strings holding ** the names of each column. ** ** The callback function may be NULL, even for queries. A NULL ** callback is not an error. It just means that no callback ** will be invoked. ** ** If an error occurs while parsing or evaluating the SQL (but ** not while executing the callback) then an appropriate error ** message is written into memory obtained from malloc() and ** *errmsg is made to point to that message. The calling function ** is responsible for freeing the memory that holds the error ** message. Use sqlite_freemem() for this. If errmsg==NULL, ** then no error message is ever written. ** ** The return value is is SQLITE_OK if there are no errors and ** some other return code if there is an error. The particular ** return value depends on the type of error. ** ** If the query could not be executed because a database file is ** locked or busy, then this function returns SQLITE_BUSY. (This ** behavior can be modified somewhat using the sqlite_busy_handler() ** and sqlite_busy_timeout() functions below.) */ int sqlite_exec( sqlite*, /* An open database */ const char *sql, /* SQL to be executed */ sqlite_callback, /* Callback function */ void *, /* 1st argument to callback function */ char **errmsg /* Error msg written here */ ); /* ** Return values for sqlite_exec() and sqlite_step() */ #define SQLITE_OK 0 /* Successful result */ #define SQLITE_ERROR 1 /* SQL error or missing database */ #define SQLITE_INTERNAL 2 /* An internal logic error in SQLite */ #define SQLITE_PERM 3 /* Access permission denied */ #define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* The database file is locked */ #define SQLITE_LOCKED 6 /* A table in the database is locked */ #define SQLITE_NOMEM 7 /* A malloc() failed */ #define SQLITE_READONLY 8 /* Attempt to write a readonly database */ #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite_interrupt() */ #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11 /* The database disk image is malformed */ #define SQLITE_NOTFOUND 12 /* (Internal Only) Table or record not found */ #define SQLITE_FULL 13 /* Insertion failed because database is full */ #define SQLITE_CANTOPEN 14 /* Unable to open the database file */ #define SQLITE_PROTOCOL 15 /* Database lock protocol error */ #define SQLITE_EMPTY 16 /* (Internal Only) Database table is empty */ #define SQLITE_SCHEMA 17 /* The database schema changed */ #define SQLITE_TOOBIG 18 /* Too much data for one row of a table */ #define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */ #define SQLITE_MISMATCH 20 /* Data type mismatch */ #define SQLITE_MISUSE 21 /* Library used incorrectly */ #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ #define SQLITE_AUTH 23 /* Authorization denied */ #define SQLITE_FORMAT 24 /* Auxiliary database format error */ #define SQLITE_RANGE 25 /* 2nd parameter to sqlite_bind out of range */ #define SQLITE_NOTADB 26 /* File opened that is not a database file */ #define SQLITE_ROW 100 /* sqlite_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite_step() has finished executing */ /* ** Each entry in an SQLite table has a unique integer key. (The key is ** the value of the INTEGER PRIMARY KEY column if there is such a column, ** otherwise the key is generated at random. The unique key is always ** available as the ROWID, OID, or _ROWID_ column.) The following routine ** returns the integer key of the most recent insert in the database. ** ** This function is similar to the mysql_insert_id() function from MySQL. */ int sqlite_last_insert_rowid(sqlite*); /* ** This function returns the number of database rows that were changed ** (or inserted or deleted) by the most recent called sqlite_exec(). ** ** All changes are counted, even if they were later undone by a ** ROLLBACK or ABORT. Except, changes associated with creating and ** dropping tables are not counted. ** ** If a callback invokes sqlite_exec() recursively, then the changes ** in the inner, recursive call are counted together with the changes ** in the outer call. ** ** SQLite implements the command "DELETE FROM table" without a WHERE clause ** by dropping and recreating the table. (This is much faster than going ** through and deleting individual elements form the table.) Because of ** this optimization, the change count for "DELETE FROM table" will be ** zero regardless of the number of elements that were originally in the ** table. To get an accurate count of the number of rows deleted, use ** "DELETE FROM table WHERE 1" instead. */ int sqlite_changes(sqlite*); /* ** This function returns the number of database rows that were changed ** by the last INSERT, UPDATE, or DELETE statment executed by sqlite_exec(), ** or by the last VM to run to completion. The change count is not updated ** by SQL statements other than INSERT, UPDATE or DELETE. ** ** Changes are counted, even if they are later undone by a ROLLBACK or ** ABORT. Changes associated with trigger programs that execute as a ** result of the INSERT, UPDATE, or DELETE statement are not counted. ** ** If a callback invokes sqlite_exec() recursively, then the changes ** in the inner, recursive call are counted together with the changes ** in the outer call. ** ** SQLite implements the command "DELETE FROM table" without a WHERE clause ** by dropping and recreating the table. (This is much faster than going ** through and deleting individual elements form the table.) Because of ** this optimization, the change count for "DELETE FROM table" will be ** zero regardless of the number of elements that were originally in the ** table. To get an accurate count of the number of rows deleted, use ** "DELETE FROM table WHERE 1" instead. ** ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** */ int sqlite_last_statement_changes(sqlite*); /* If the parameter to this routine is one of the return value constants ** defined above, then this routine returns a constant text string which ** descripts (in English) the meaning of the return value. */ const char *sqlite_error_string(int); #define sqliteErrStr sqlite_error_string /* Legacy. Do not use in new code. */ /* This function causes any pending database operation to abort and ** return at its earliest opportunity. This routine is typically ** called in response to a user action such as pressing "Cancel" ** or Ctrl-C where the user wants a long query operation to halt ** immediately. */ void sqlite_interrupt(sqlite*); /* This function returns true if the given input string comprises ** one or more complete SQL statements. ** ** The algorithm is simple. If the last token other than spaces ** and comments is a semicolon, then return true. otherwise return ** false. */ int sqlite_complete(const char *sql); /* ** This routine identifies a callback function that is invoked ** whenever an attempt is made to open a database table that is ** currently locked by another process or thread. If the busy callback ** is NULL, then sqlite_exec() returns SQLITE_BUSY immediately if ** it finds a locked table. If the busy callback is not NULL, then ** sqlite_exec() invokes the callback with three arguments. The ** second argument is the name of the locked table and the third ** argument is the number of times the table has been busy. If the ** busy callback returns 0, then sqlite_exec() immediately returns ** SQLITE_BUSY. If the callback returns non-zero, then sqlite_exec() ** tries to open the table again and the cycle repeats. ** ** The default busy callback is NULL. ** ** Sqlite is re-entrant, so the busy handler may start a new query. ** (It is not clear why anyone would every want to do this, but it ** is allowed, in theory.) But the busy handler may not close the ** database. Closing the database from a busy handler will delete ** data structures out from under the executing query and will ** probably result in a coredump. */ void sqlite_busy_handler(sqlite*, int(*)(void*,const char*,int), void*); /* ** This routine sets a busy handler that sleeps for a while when a ** table is locked. The handler will sleep multiple times until ** at least "ms" milleseconds of sleeping have been done. After ** "ms" milleseconds of sleeping, the handler returns 0 which ** causes sqlite_exec() to return SQLITE_BUSY. ** ** Calling this routine with an argument less than or equal to zero ** turns off all busy handlers. */ void sqlite_busy_timeout(sqlite*, int ms); /* ** This next routine is really just a wrapper around sqlite_exec(). ** Instead of invoking a user-supplied callback for each row of the ** result, this routine remembers each row of the result in memory ** obtained from malloc(), then returns all of the result after the ** query has finished. ** ** As an example, suppose the query result where this table: ** ** Name | Age ** ----------------------- ** Alice | 43 ** Bob | 28 ** Cindy | 21 ** ** If the 3rd argument were &azResult then after the function returns ** azResult will contain the following data: ** ** azResult[0] = "Name"; ** azResult[1] = "Age"; ** azResult[2] = "Alice"; ** azResult[3] = "43"; ** azResult[4] = "Bob"; ** azResult[5] = "28"; ** azResult[6] = "Cindy"; ** azResult[7] = "21"; ** ** Notice that there is an extra row of data containing the column ** headers. But the *nrow return value is still 3. *ncolumn is ** set to 2. In general, the number of values inserted into azResult ** will be ((*nrow) + 1)*(*ncolumn). ** ** After the calling function has finished using the result, it should ** pass the result data pointer to sqlite_free_table() in order to ** release the memory that was malloc-ed. Because of the way the ** malloc() happens, the calling function must not try to call ** malloc() directly. Only sqlite_free_table() is able to release ** the memory properly and safely. ** ** The return value of this routine is the same as from sqlite_exec(). */ int sqlite_get_table( sqlite*, /* An open database */ const char *sql, /* SQL to be executed */ char ***resultp, /* Result written to a char *[] that this points to */ int *nrow, /* Number of result rows written here */ int *ncolumn, /* Number of result columns written here */ char **errmsg /* Error msg written here */ ); /* ** Call this routine to free the memory that sqlite_get_table() allocated. */ void sqlite_free_table(char **result); /* ** The following routines are wrappers around sqlite_exec() and ** sqlite_get_table(). The only difference between the routines that ** follow and the originals is that the second argument to the ** routines that follow is really a printf()-style format ** string describing the SQL to be executed. Arguments to the format ** string appear at the end of the argument list. ** ** All of the usual printf formatting options apply. In addition, there ** is a "%q" option. %q works like %s in that it substitutes a null-terminated ** string from the argument list. But %q also doubles every '\'' character. ** %q is designed for use inside a string literal. By doubling each '\'' ** character it escapes that character and allows it to be inserted into ** the string. ** ** For example, so some string variable contains text as follows: ** ** char *zText = "It's a happy day!"; ** ** We can use this text in an SQL statement as follows: ** ** sqlite_exec_printf(db, "INSERT INTO table VALUES('%q')", ** callback1, 0, 0, zText); ** ** Because the %q format string is used, the '\'' character in zText ** is escaped and the SQL generated is as follows: ** ** INSERT INTO table1 VALUES('It''s a happy day!') ** ** This is correct. Had we used %s instead of %q, the generated SQL ** would have looked like this: ** ** INSERT INTO table1 VALUES('It's a happy day!'); ** ** This second example is an SQL syntax error. As a general rule you ** should always use %q instead of %s when inserting text into a string ** literal. */ int sqlite_exec_printf( sqlite*, /* An open database */ const char *sqlFormat, /* printf-style format string for the SQL */ sqlite_callback, /* Callback function */ void *, /* 1st argument to callback function */ char **errmsg, /* Error msg written here */ ... /* Arguments to the format string. */ ); int sqlite_exec_vprintf( sqlite*, /* An open database */ const char *sqlFormat, /* printf-style format string for the SQL */ sqlite_callback, /* Callback function */ void *, /* 1st argument to callback function */ char **errmsg, /* Error msg written here */ va_list ap /* Arguments to the format string. */ ); int sqlite_get_table_printf( sqlite*, /* An open database */ const char *sqlFormat, /* printf-style format string for the SQL */ char ***resultp, /* Result written to a char *[] that this points to */ int *nrow, /* Number of result rows written here */ int *ncolumn, /* Number of result columns written here */ char **errmsg, /* Error msg written here */ ... /* Arguments to the format string */ ); int sqlite_get_table_vprintf( sqlite*, /* An open database */ const char *sqlFormat, /* printf-style format string for the SQL */ char ***resultp, /* Result written to a char *[] that this points to */ int *nrow, /* Number of result rows written here */ int *ncolumn, /* Number of result columns written here */ char **errmsg, /* Error msg written here */ va_list ap /* Arguments to the format string */ ); char *sqlite_mprintf(const char*,...); char *sqlite_vmprintf(const char*, va_list); /* ** Windows systems should call this routine to free memory that ** is returned in the in the errmsg parameter of sqlite_open() when ** SQLite is a DLL. For some reason, it does not work to call free() ** directly. */ void sqlite_freemem(void *p); /* ** Windows systems need functions to call to return the sqlite_version ** and sqlite_encoding strings. */ const char *sqlite_libversion(void); const char *sqlite_libencoding(void); /* ** A pointer to the following structure is used to communicate with ** the implementations of user-defined functions. */ typedef struct sqlite_func sqlite_func; /* ** Use the following routines to create new user-defined functions. See ** the documentation for details. */ int sqlite_create_function( sqlite*, /* Database where the new function is registered */ const char *zName, /* Name of the new function */ int nArg, /* Number of arguments. -1 means any number */ void (*xFunc)(sqlite_func*,int,const char**), /* C code to implement */ void *pUserData /* Available via the sqlite_user_data() call */ ); int sqlite_create_aggregate( sqlite*, /* Database where the new function is registered */ const char *zName, /* Name of the function */ int nArg, /* Number of arguments */ void (*xStep)(sqlite_func*,int,const char**), /* Called for each row */ void (*xFinalize)(sqlite_func*), /* Called once to get final result */ void *pUserData /* Available via the sqlite_user_data() call */ ); /* ** Use the following routine to define the datatype returned by a ** user-defined function. The second argument can be one of the ** constants SQLITE_NUMERIC, SQLITE_TEXT, or SQLITE_ARGS or it ** can be an integer greater than or equal to zero. When the datatype ** parameter is non-negative, the type of the result will be the ** same as the datatype-th argument. If datatype==SQLITE_NUMERIC ** then the result is always numeric. If datatype==SQLITE_TEXT then ** the result is always text. If datatype==SQLITE_ARGS then the result ** is numeric if any argument is numeric and is text otherwise. */ int sqlite_function_type( sqlite *db, /* The database there the function is registered */ const char *zName, /* Name of the function */ int datatype /* The datatype for this function */ ); #define SQLITE_NUMERIC (-1) /* #define SQLITE_TEXT (-2) // See below */ #define SQLITE_ARGS (-3) /* ** SQLite version 3 defines SQLITE_TEXT differently. To allow both ** version 2 and version 3 to be included, undefine them both if a ** conflict is seen. Define SQLITE2_TEXT to be the version 2 value. */ #ifdef SQLITE_TEXT # undef SQLITE_TEXT #else # define SQLITE_TEXT (-2) #endif #define SQLITE2_TEXT (-2) /* ** The user function implementations call one of the following four routines ** in order to return their results. The first parameter to each of these ** routines is a copy of the first argument to xFunc() or xFinialize(). ** The second parameter to these routines is the result to be returned. ** A NULL can be passed as the second parameter to sqlite_set_result_string() ** in order to return a NULL result. ** ** The 3rd argument to _string and _error is the number of characters to ** take from the string. If this argument is negative, then all characters ** up to and including the first '\000' are used. ** ** The sqlite_set_result_string() function allocates a buffer to hold the ** result and returns a pointer to this buffer. The calling routine ** (that is, the implmentation of a user function) can alter the content ** of this buffer if desired. */ char *sqlite_set_result_string(sqlite_func*,const char*,int); void sqlite_set_result_int(sqlite_func*,int); void sqlite_set_result_double(sqlite_func*,double); void sqlite_set_result_error(sqlite_func*,const char*,int); /* ** The pUserData parameter to the sqlite_create_function() and ** sqlite_create_aggregate() routines used to register user functions ** is available to the implementation of the function using this ** call. */ void *sqlite_user_data(sqlite_func*); /* ** Aggregate functions use the following routine to allocate ** a structure for storing their state. The first time this routine ** is called for a particular aggregate, a new structure of size nBytes ** is allocated, zeroed, and returned. On subsequent calls (for the ** same aggregate instance) the same buffer is returned. The implementation ** of the aggregate can use the returned buffer to accumulate data. ** ** The buffer allocated is freed automatically be SQLite. */ void *sqlite_aggregate_context(sqlite_func*, int nBytes); /* ** The next routine returns the number of calls to xStep for a particular ** aggregate function instance. The current call to xStep counts so this ** routine always returns at least 1. */ int sqlite_aggregate_count(sqlite_func*); /* ** This routine registers a callback with the SQLite library. The ** callback is invoked (at compile-time, not at run-time) for each ** attempt to access a column of a table in the database. The callback ** returns SQLITE_OK if access is allowed, SQLITE_DENY if the entire ** SQL statement should be aborted with an error and SQLITE_IGNORE ** if the column should be treated as a NULL value. */ int sqlite_set_authorizer( sqlite*, int (*xAuth)(void*,int,const char*,const char*,const char*,const char*), void *pUserData ); /* ** The second parameter to the access authorization function above will ** be one of the values below. These values signify what kind of operation ** is to be authorized. The 3rd and 4th parameters to the authorization ** function will be parameters or NULL depending on which of the following ** codes is used as the second parameter. The 5th parameter is the name ** of the database ("main", "temp", etc.) if applicable. The 6th parameter ** is the name of the inner-most trigger or view that is responsible for ** the access attempt or NULL if this access attempt is directly from ** input SQL code. ** ** Arg-3 Arg-4 */ #define SQLITE_COPY 0 /* Table Name File Name */ #define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */ #define SQLITE_CREATE_TABLE 2 /* Table Name NULL */ #define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */ #define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */ #define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */ #define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */ #define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */ #define SQLITE_CREATE_VIEW 8 /* View Name NULL */ #define SQLITE_DELETE 9 /* Table Name NULL */ #define SQLITE_DROP_INDEX 10 /* Index Name Table Name */ #define SQLITE_DROP_TABLE 11 /* Table Name NULL */ #define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */ #define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */ #define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */ #define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */ #define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */ #define SQLITE_DROP_VIEW 17 /* View Name NULL */ #define SQLITE_INSERT 18 /* Table Name NULL */ #define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */ #define SQLITE_READ 20 /* Table Name Column Name */ #define SQLITE_SELECT 21 /* NULL NULL */ #define SQLITE_TRANSACTION 22 /* NULL NULL */ #define SQLITE_UPDATE 23 /* Table Name Column Name */ #define SQLITE_ATTACH 24 /* Filename NULL */ #define SQLITE_DETACH 25 /* Database Name NULL */ /* ** The return value of the authorization function should be one of the ** following constants: */ /* #define SQLITE_OK 0 // Allow access (This is actually defined above) */ #define SQLITE_DENY 1 /* Abort the SQL statement with an error */ #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ /* ** Register a function that is called at every invocation of sqlite_exec() ** or sqlite_compile(). This function can be used (for example) to generate ** a log file of all SQL executed against a database. */ void *sqlite_trace(sqlite*, void(*xTrace)(void*,const char*), void*); /*** The Callback-Free API ** ** The following routines implement a new way to access SQLite that does not ** involve the use of callbacks. ** ** An sqlite_vm is an opaque object that represents a single SQL statement ** that is ready to be executed. */ typedef struct sqlite_vm sqlite_vm; /* ** To execute an SQLite query without the use of callbacks, you first have ** to compile the SQL using this routine. The 1st parameter "db" is a pointer ** to an sqlite object obtained from sqlite_open(). The 2nd parameter ** "zSql" is the text of the SQL to be compiled. The remaining parameters ** are all outputs. ** ** *pzTail is made to point to the first character past the end of the first ** SQL statement in zSql. This routine only compiles the first statement ** in zSql, so *pzTail is left pointing to what remains uncompiled. ** ** *ppVm is left pointing to a "virtual machine" that can be used to execute ** the compiled statement. Or if there is an error, *ppVm may be set to NULL. ** If the input text contained no SQL (if the input is and empty string or ** a comment) then *ppVm is set to NULL. ** ** If any errors are detected during compilation, an error message is written ** into space obtained from malloc() and *pzErrMsg is made to point to that ** error message. The calling routine is responsible for freeing the text ** of this message when it has finished with it. Use sqlite_freemem() to ** free the message. pzErrMsg may be NULL in which case no error message ** will be generated. ** ** On success, SQLITE_OK is returned. Otherwise and error code is returned. */ int sqlite_compile( sqlite *db, /* The open database */ const char *zSql, /* SQL statement to be compiled */ const char **pzTail, /* OUT: uncompiled tail of zSql */ sqlite_vm **ppVm, /* OUT: the virtual machine to execute zSql */ char **pzErrmsg /* OUT: Error message. */ ); /* ** After an SQL statement has been compiled, it is handed to this routine ** to be executed. This routine executes the statement as far as it can ** go then returns. The return value will be one of SQLITE_DONE, ** SQLITE_ERROR, SQLITE_BUSY, SQLITE_ROW, or SQLITE_MISUSE. ** ** SQLITE_DONE means that the execute of the SQL statement is complete ** an no errors have occurred. sqlite_step() should not be called again ** for the same virtual machine. *pN is set to the number of columns in ** the result set and *pazColName is set to an array of strings that ** describe the column names and datatypes. The name of the i-th column ** is (*pazColName)[i] and the datatype of the i-th column is ** (*pazColName)[i+*pN]. *pazValue is set to NULL. ** ** SQLITE_ERROR means that the virtual machine encountered a run-time ** error. sqlite_step() should not be called again for the same ** virtual machine. *pN is set to 0 and *pazColName and *pazValue are set ** to NULL. Use sqlite_finalize() to obtain the specific error code ** and the error message text for the error. ** ** SQLITE_BUSY means that an attempt to open the database failed because ** another thread or process is holding a lock. The calling routine ** can try again to open the database by calling sqlite_step() again. ** The return code will only be SQLITE_BUSY if no busy handler is registered ** using the sqlite_busy_handler() or sqlite_busy_timeout() routines. If ** a busy handler callback has been registered but returns 0, then this ** routine will return SQLITE_ERROR and sqltie_finalize() will return ** SQLITE_BUSY when it is called. ** ** SQLITE_ROW means that a single row of the result is now available. ** The data is contained in *pazValue. The value of the i-th column is ** (*azValue)[i]. *pN and *pazColName are set as described in SQLITE_DONE. ** Invoke sqlite_step() again to advance to the next row. ** ** SQLITE_MISUSE is returned if sqlite_step() is called incorrectly. ** For example, if you call sqlite_step() after the virtual machine ** has halted (after a prior call to sqlite_step() has returned SQLITE_DONE) ** or if you call sqlite_step() with an incorrectly initialized virtual ** machine or a virtual machine that has been deleted or that is associated ** with an sqlite structure that has been closed. */ int sqlite_step( sqlite_vm *pVm, /* The virtual machine to execute */ int *pN, /* OUT: Number of columns in result */ const char ***pazValue, /* OUT: Column data */ const char ***pazColName /* OUT: Column names and datatypes */ ); /* ** This routine is called to delete a virtual machine after it has finished ** executing. The return value is the result code. SQLITE_OK is returned ** if the statement executed successfully and some other value is returned if ** there was any kind of error. If an error occurred and pzErrMsg is not ** NULL, then an error message is written into memory obtained from malloc() ** and *pzErrMsg is made to point to that error message. The calling routine ** should use sqlite_freemem() to delete this message when it has finished ** with it. ** ** This routine can be called at any point during the execution of the ** virtual machine. If the virtual machine has not completed execution ** when this routine is called, that is like encountering an error or ** an interrupt. (See sqlite_interrupt().) Incomplete updates may be ** rolled back and transactions cancelled, depending on the circumstances, ** and the result code returned will be SQLITE_ABORT. */ int sqlite_finalize(sqlite_vm*, char **pzErrMsg); /* ** This routine deletes the virtual machine, writes any error message to ** *pzErrMsg and returns an SQLite return code in the same way as the ** sqlite_finalize() function. ** ** Additionally, if ppVm is not NULL, *ppVm is left pointing to a new virtual ** machine loaded with the compiled version of the original query ready for ** execution. ** ** If sqlite_reset() returns SQLITE_SCHEMA, then *ppVm is set to NULL. ** ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** */ int sqlite_reset(sqlite_vm*, char **pzErrMsg); /* ** If the SQL that was handed to sqlite_compile contains variables that ** are represeted in the SQL text by a question mark ('?'). This routine ** is used to assign values to those variables. ** ** The first parameter is a virtual machine obtained from sqlite_compile(). ** The 2nd "idx" parameter determines which variable in the SQL statement ** to bind the value to. The left most '?' is 1. The 3rd parameter is ** the value to assign to that variable. The 4th parameter is the number ** of bytes in the value, including the terminating \000 for strings. ** Finally, the 5th "copy" parameter is TRUE if SQLite should make its ** own private copy of this value, or false if the space that the 3rd ** parameter points to will be unchanging and can be used directly by ** SQLite. ** ** Unbound variables are treated as having a value of NULL. To explicitly ** set a variable to NULL, call this routine with the 3rd parameter as a ** NULL pointer. ** ** If the 4th "len" parameter is -1, then strlen() is used to find the ** length. ** ** This routine can only be called immediately after sqlite_compile() ** or sqlite_reset() and before any calls to sqlite_step(). ** ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** */ int sqlite_bind(sqlite_vm*, int idx, const char *value, int len, int copy); /* ** This routine configures a callback function - the progress callback - that ** is invoked periodically during long running calls to sqlite_exec(), ** sqlite_step() and sqlite_get_table(). An example use for this API is to keep ** a GUI updated during a large query. ** ** The progress callback is invoked once for every N virtual machine opcodes, ** where N is the second argument to this function. The progress callback ** itself is identified by the third argument to this function. The fourth ** argument to this function is a void pointer passed to the progress callback ** function each time it is invoked. ** ** If a call to sqlite_exec(), sqlite_step() or sqlite_get_table() results ** in less than N opcodes being executed, then the progress callback is not ** invoked. ** ** Calling this routine overwrites any previously installed progress callback. ** To remove the progress callback altogether, pass NULL as the third ** argument to this function. ** ** If the progress callback returns a result other than 0, then the current ** query is immediately terminated and any database changes rolled back. If the ** query was part of a larger transaction, then the transaction is not rolled ** back and remains active. The sqlite_exec() call returns SQLITE_ABORT. ** ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** */ void sqlite_progress_handler(sqlite*, int, int(*)(void*), void*); /* ** Register a callback function to be invoked whenever a new transaction ** is committed. The pArg argument is passed through to the callback. ** callback. If the callback function returns non-zero, then the commit ** is converted into a rollback. ** ** If another function was previously registered, its pArg value is returned. ** Otherwise NULL is returned. ** ** Registering a NULL function disables the callback. ** ******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ****** */ void *sqlite_commit_hook(sqlite*, int(*)(void*), void*); /* ** Open an encrypted SQLite database. If pKey==0 or nKey==0, this routine ** is the same as sqlite_open(). ** ** The code to implement this API is not available in the public release ** of SQLite. */ sqlite *sqlite_open_encrypted( const char *zFilename, /* Name of the encrypted database */ const void *pKey, /* Pointer to the key */ int nKey, /* Number of bytes in the key */ int *pErrcode, /* Write error code here */ char **pzErrmsg /* Write error message here */ ); /* ** Change the key on an open database. If the current database is not ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the ** database is decrypted. ** ** The code to implement this API is not available in the public release ** of SQLite. */ int sqlite_rekey( sqlite *db, /* Database to be rekeyed */ const void *pKey, int nKey /* The new key */ ); /* ** Encode a binary buffer "in" of size n bytes so that it contains ** no instances of characters '\'' or '\000'. The output is ** null-terminated and can be used as a string value in an INSERT ** or UPDATE statement. Use sqlite_decode_binary() to convert the ** string back into its original binary. ** ** The result is written into a preallocated output buffer "out". ** "out" must be able to hold at least 2 +(257*n)/254 bytes. ** In other words, the output will be expanded by as much as 3 ** bytes for every 254 bytes of input plus 2 bytes of fixed overhead. ** (This is approximately 2 + 1.0118*n or about a 1.2% size increase.) ** ** The return value is the number of characters in the encoded ** string, excluding the "\000" terminator. ** ** If out==NULL then no output is generated but the routine still returns ** the number of characters that would have been generated if out had ** not been NULL. */ int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out); /* ** Decode the string "in" into binary data and write it into "out". ** This routine reverses the encoding created by sqlite_encode_binary(). ** The output will always be a few bytes less than the input. The number ** of bytes of output is returned. If the input is not a well-formed ** encoding, -1 is returned. ** ** The "in" and "out" parameters may point to the same buffer in order ** to decode a string in place. */ int sqlite_decode_binary(const unsigned char *in, unsigned char *out); #ifdef __cplusplus } /* End of the 'extern "C"' block */ #endif #endif /* _SQLITE_H_ */ 070701000af1f3000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/php/ext/json070701000af1f4000081a40000000000000000000000014dc0f4dd00000968000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/json/php_json.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Omar Kilani | +----------------------------------------------------------------------+ */ /* $Id: php_json.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_JSON_H #define PHP_JSON_H #define PHP_JSON_VERSION "1.2.1" #include "ext/standard/php_smart_str.h" extern zend_module_entry json_module_entry; #define phpext_json_ptr &json_module_entry #if defined(PHP_WIN32) && defined(JSON_EXPORTS) #define PHP_JSON_API __declspec(dllexport) #else #define PHP_JSON_API PHPAPI #endif #ifdef ZTS #include "TSRM.h" #endif ZEND_BEGIN_MODULE_GLOBALS(json) int error_code; ZEND_END_MODULE_GLOBALS(json) #ifdef ZTS # define JSON_G(v) TSRMG(json_globals_id, zend_json_globals *, v) #else # define JSON_G(v) (json_globals.v) #endif PHP_JSON_API void php_json_encode(smart_str *buf, zval *val, int options TSRMLS_DC); PHP_JSON_API void php_json_decode(zval *return_value, char *str, int str_len, zend_bool assoc, long depth TSRMLS_DC); #define PHP_JSON_HEX_TAG (1<<0) #define PHP_JSON_HEX_AMP (1<<1) #define PHP_JSON_HEX_APOS (1<<2) #define PHP_JSON_HEX_QUOT (1<<3) #define PHP_JSON_FORCE_OBJECT (1<<4) #define PHP_JSON_NUMERIC_CHECK (1<<5) #define PHP_JSON_OUTPUT_ARRAY 0 #define PHP_JSON_OUTPUT_OBJECT 1 #endif /* PHP_JSON_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af1c9000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000002200000000root/usr/local/include/php/ext/gd070701000af1ca000081a40000000000000000000000014dc0f4db00000b32000000b500010002ffffffffffffffff0000002c00000000root/usr/local/include/php/ext/gd/gdcache.h/* * $Id: gdcache.h 242949 2007-09-26 15:44:16Z cvs2svn $ * * Caches of pointers to user structs in which the least-recently-used * element is replaced in the event of a cache miss after the cache has * reached a given size. * * John Ellson (ellson@lucent.com) Oct 31, 1997 * * Test this with: * gcc -o gdcache -g -Wall -DTEST gdcache.c * * The cache is implemented by a singly-linked list of elements * each containing a pointer to a user struct that is being managed by * the cache. * * The head structure has a pointer to the most-recently-used * element, and elements are moved to this position in the list each * time they are used. The head also contains pointers to three * user defined functions: * - a function to test if a cached userdata matches some keydata * - a function to provide a new userdata struct to the cache * if there has been a cache miss. * - a function to release a userdata struct when it is * no longer being managed by the cache * * In the event of a cache miss the cache is allowed to grow up to * a specified maximum size. After the maximum size is reached then * the least-recently-used element is discarded to make room for the * new. The most-recently-returned value is always left at the * beginning of the list after retrieval. * * In the current implementation the cache is traversed by a linear * search from most-recent to least-recent. This linear search * probably limits the usefulness of this implementation to cache * sizes of a few tens of elements. */ /*********************************************************/ /* header */ /*********************************************************/ #if (!defined(_OSD_POSIX) && !defined(__FreeBSD__)) && HAVE_MALLOC_H #include #else #include /* BS2000/OSD defines malloc() & friends in stdlib.h */ #endif #ifndef NULL #define NULL (void *)0 #endif /* user defined function templates */ typedef int (*gdCacheTestFn_t)(void *userdata, void *keydata); typedef void *(*gdCacheFetchFn_t)(char **error, void *keydata); typedef void (*gdCacheReleaseFn_t)(void *userdata); /* element structure */ typedef struct gdCache_element_s gdCache_element_t; struct gdCache_element_s { gdCache_element_t *next; void *userdata; }; /* head structure */ typedef struct gdCache_head_s gdCache_head_t; struct gdCache_head_s { gdCache_element_t *mru; int size; char *error; gdCacheTestFn_t gdCacheTest; gdCacheFetchFn_t gdCacheFetch; gdCacheReleaseFn_t gdCacheRelease; }; /* function templates */ gdCache_head_t * gdCacheCreate( int size, gdCacheTestFn_t gdCacheTest, gdCacheFetchFn_t gdCacheFetch, gdCacheReleaseFn_t gdCacheRelease ); void gdCacheDelete( gdCache_head_t *head ); void * gdCacheGet( gdCache_head_t *head, void *keydata ); 070701000af1cb000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/php/ext/gd/libgd070701000af1d3000081a40000000000000000000000014dc0f4dc000001ef000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/gd/libgd/gdfontmb.h #ifndef _GDFONTMB_H_ #define _GDFONTMB_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-bold-r-normal-sans-13-94-100-100-c-70-iso8859-2 at Thu Jan 8 13:54:57 1998. No copyright info was found in the original bdf. */ #include "gd.h" extern gdFontPtr gdFontMediumBold; extern gdFontPtr gdFontGetMediumBold(void); #ifdef __cplusplus } #endif #endif 070701000af1d5000081a40000000000000000000000014dc0f4dc0000020a000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/gd/libgd/gdfontt.h #ifndef _GDFONTT_H_ #define _GDFONTT_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-2 at Thu Jan 8 13:49:54 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontTiny; extern gdFontPtr gdFontGetTiny(void); #ifdef __cplusplus } #endif #endif 070701000af1d7000081a40000000000000000000000014dc0f4dc000116b6000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/gd/libgd/jisx0208.h#ifndef JISX0208_H #define JISX0208_H /* This file was derived from "src/VF_Ftype.c" in VFlib2-2.24.2 by Dr. Kakugawa */ /* JIS -> Unicode mapping table */ static unsigned short UnicodeTbl[][94] = { { /* category 01 */ 0x0000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, 0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04, 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7}, { /* category 02 */ 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, /**/ 0x00B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25EF}, { /* category 03 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 04 */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 05 */ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 06 */ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 07 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 08 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 09 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 10 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 11 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 12 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 13 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 14 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 15 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 16 */ 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D}, { /* category 17 */ 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC}, { /* category 18 */ 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539}, { /* category 19 */ 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431}, { /* category 20 */ 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4}, { /* category 21 */ 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC}, { /* category 22 */ 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48}, { /* category 23 */ 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372}, { /* category 24 */ 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411}, { /* category 25 */ 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC}, { /* category 26 */ 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237}, { /* category 27 */ 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642}, { /* category 28 */ 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468}, { /* category 29 */ 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F}, { /* category 30 */ 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE}, { /* category 31 */ 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE}, { /* category 32 */ 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA}, { /* category 33 */ 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E}, { /* category 34 */ 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA}, { /* category 35 */ 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5}, { /* category 36 */ 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013}, { /* category 37 */ 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230}, { /* category 38 */ 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165}, { /* category 39 */ 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6}, { /* category 40 */ 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E}, { /* category 41 */ 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D}, { /* category 42 */ 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B}, { /* category 43 */ 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80}, { /* category 44 */ 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652}, { /* category 45 */ 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483}, { /* category 46 */ 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F}, { /* category 47 */ 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, 0x6E7E, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 48 */ 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2}, { /* category 49 */ 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8}, { /* category 50 */ 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8}, { /* category 51 */ 0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709}, { /* category 52 */ 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969}, { /* category 53 */ 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53}, { /* category 54 */ 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF}, { /* category 55 */ 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A}, { /* category 56 */ 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B}, { /* category 57 */ 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC}, { /* category 58 */ 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC}, { /* category 59 */ 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD}, { /* category 60 */ 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3}, { /* category 61 */ 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE}, { /* category 62 */ 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC}, { /* category 63 */ 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC}, { /* category 64 */ 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1}, { /* category 65 */ 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670}, { /* category 66 */ 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC}, { /* category 67 */ 0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50}, { /* category 68 */ 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06}, { /* category 69 */ 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A}, { /* category 70 */ 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B}, { /* category 71 */ 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9}, { /* category 72 */ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548}, { /* category 73 */ 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759}, { /* category 74 */ 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E}, { /* category 75 */ 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B}, { /* category 76 */ 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A}, { /* category 77 */ 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8}, { /* category 78 */ 0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E}, { /* category 79 */ 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E}, { /* category 80 */ 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870}, { /* category 81 */ 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7}, { /* category 82 */ 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48}, { /* category 83 */ 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0}, { /* category 84 */ 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 85 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 86 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 87 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 88 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 89 */ 0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7}, { /* category 90 */ 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E, 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1}, { /* category 91 */ 0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA}, { /* category 92 */ 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02}}; #endif /* JISX0208_H */ 070701000af1d8000081a40000000000000000000000014dc0f4dc00000503000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/gd/libgd/wbmp.h/* WBMP ** ---- ** WBMP Level 0: B/W, Uncompressed ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2. ** It does not support ExtHeaders as defined in the spec. The spec states ** that a WAP client does not need to implement ExtHeaders. ** ** (c) 2000 Johan Van den Brande ** ** Header file */ #ifndef __WBMP_H #define __WBMP_H 1 #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php_compat.h" /* WBMP struct ** ----------- ** A Wireless bitmap structure ** */ typedef struct Wbmp_ { int type; /* type of the wbmp */ int width; /* width of the image */ int height; /* height of the image */ int *bitmap; /* pointer to data: 0 = WHITE , 1 = BLACK */ } Wbmp; #define WBMP_WHITE 1 #define WBMP_BLACK 0 /* Proto's ** ------- ** */ void putmbi( int i, void (*putout)(int c, void *out), void *out); int getmbi ( int (*getin)(void *in), void *in ); int skipheader( int (*getin)(void *in), void *in ); Wbmp *createwbmp( int width, int height, int color ); int readwbmp( int (*getin)(void *in), void *in, Wbmp **wbmp ); int writewbmp( Wbmp *wbmp, void (*putout)( int c, void *out), void *out); void freewbmp( Wbmp *wbmp ); void printwbmp( Wbmp *wbmp ); #endif 070701000af1d6000081a40000000000000000000000014dc0f4dc00000547000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/gd/libgd/gdhelpers.h#ifndef GDHELPERS_H #define GDHELPERS_H 1 #include #include "php.h" /* TBB: strtok_r is not universal; provide an implementation of it. */ extern char *gd_strtok_r(char *s, char *sep, char **state); /* These functions wrap memory management. gdFree is in gd.h, where callers can utilize it to correctly free memory allocated by these functions with the right version of free(). */ #define gdCalloc(nmemb, size) ecalloc(nmemb, size) #define gdMalloc(size) emalloc(size) #define gdRealloc(ptr, size) erealloc(ptr, size) #define gdEstrdup(ptr) estrdup(ptr) #define gdFree(ptr) efree(ptr) #define gdPMalloc(ptr) pemalloc(ptr, 1) #define gdPFree(ptr) pefree(ptr, 1) #define gdPEstrdup(ptr) pestrdup(ptr, 1) /* Returns nonzero if multiplying the two quantities will result in integer overflow. Also returns nonzero if either quantity is negative. By Phil Knirsch based on netpbm fixes by Alan Cox. */ int overflow2(int a, int b); #ifdef ZTS #define gdMutexDeclare(x) MUTEX_T x #define gdMutexSetup(x) x = tsrm_mutex_alloc() #define gdMutexShutdown(x) tsrm_mutex_free(x) #define gdMutexLock(x) tsrm_mutex_lock(x) #define gdMutexUnlock(x) tsrm_mutex_unlock(x) #else #define gdMutexDeclare(x) #define gdMutexSetup(x) #define gdMutexShutdown(x) #define gdMutexLock(x) #define gdMutexUnlock(x) #endif #endif /* GDHELPERS_H */ 070701000af1d0000081a40000000000000000000000014dc0f4dc00000a9c000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/gd/libgd/gdcache.h/* * gdcache.h * * Caches of pointers to user structs in which the least-recently-used * element is replaced in the event of a cache miss after the cache has * reached a given size. * * John Ellson (ellson@graphviz.org) Oct 31, 1997 * * Test this with: * gcc -o gdcache -g -Wall -DTEST gdcache.c * * The cache is implemented by a singly-linked list of elements * each containing a pointer to a user struct that is being managed by * the cache. * * The head structure has a pointer to the most-recently-used * element, and elements are moved to this position in the list each * time they are used. The head also contains pointers to three * user defined functions: * - a function to test if a cached userdata matches some keydata * - a function to provide a new userdata struct to the cache * if there has been a cache miss. * - a function to release a userdata struct when it is * no longer being managed by the cache * * In the event of a cache miss the cache is allowed to grow up to * a specified maximum size. After the maximum size is reached then * the least-recently-used element is discarded to make room for the * new. The most-recently-returned value is always left at the * beginning of the list after retrieval. * * In the current implementation the cache is traversed by a linear * search from most-recent to least-recent. This linear search * probably limits the usefulness of this implementation to cache * sizes of a few tens of elements. */ /*********************************************************/ /* header */ /*********************************************************/ #include #ifdef HAVE_MALLOC_H #include #endif #ifndef NULL #define NULL (void *)0 #endif /* user defined function templates */ typedef int (*gdCacheTestFn_t)(void *userdata, void *keydata); typedef void *(*gdCacheFetchFn_t)(char **error, void *keydata); typedef void (*gdCacheReleaseFn_t)(void *userdata); /* element structure */ typedef struct gdCache_element_s gdCache_element_t; struct gdCache_element_s { gdCache_element_t *next; void *userdata; }; /* head structure */ typedef struct gdCache_head_s gdCache_head_t; struct gdCache_head_s { gdCache_element_t *mru; int size; char *error; gdCacheTestFn_t gdCacheTest; gdCacheFetchFn_t gdCacheFetch; gdCacheReleaseFn_t gdCacheRelease; }; /* function templates */ gdCache_head_t * gdCacheCreate( int size, gdCacheTestFn_t gdCacheTest, gdCacheFetchFn_t gdCacheFetch, gdCacheReleaseFn_t gdCacheRelease ); void gdCacheDelete( gdCache_head_t *head ); void * gdCacheGet( gdCache_head_t *head, void *keydata ); 070701000af1ce000081a40000000000000000000000014dc0f4dc00000105000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/gd/libgd/gd_intern.h#ifndef GD_INTERN_H #define GD_INTERN_H #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) #endif #define MIN3(a,b,c) ((a)<(b)?(MIN(a,c)):(MIN(b,c))) #ifndef MAX #define MAX(a,b) ((a)<(b)?(b):(a)) #endif #define MAX3(a,b,c) ((a)<(b)?(MAX(b,c)):(MAX(a,c))) #endif 070701000af1d1000081a40000000000000000000000014dc0f4dc00000211000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/gd/libgd/gdfontg.h #ifndef _GDFONTG_H_ #define _GDFONTG_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Bold-R-Normal-Sans-15-140-75-75-C-90-ISO8859-2 at Mon Jan 26 14:45:58 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontGiant; extern gdFontPtr gdFontGetGiant(void); #ifdef __cplusplus } #endif #endif 070701000af1cf000081a40000000000000000000000014dc0f4dc000003b6000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/gd/libgd/gd_io.h#ifndef GD_IO_H #define GD_IO_H 1 #include #ifdef VMS #define Putchar gdPutchar #endif typedef struct gdIOCtx { int (*getC)(struct gdIOCtx*); int (*getBuf)(struct gdIOCtx*, void*, int); void (*putC)(struct gdIOCtx*, int); int (*putBuf)(struct gdIOCtx*, const void*, int); int (*seek)(struct gdIOCtx*, const int); long (*tell)(struct gdIOCtx*); void (*gd_free)(struct gdIOCtx*); } gdIOCtx; typedef struct gdIOCtx *gdIOCtxPtr; void Putword(int w, gdIOCtx *ctx); void Putchar(int c, gdIOCtx *ctx); void gdPutC(const unsigned char c, gdIOCtx *ctx); int gdPutBuf(const void *, int, gdIOCtx*); void gdPutWord(int w, gdIOCtx *ctx); void gdPutInt(int w, gdIOCtx *ctx); int gdGetC(gdIOCtx *ctx); int gdGetBuf(void *, int, gdIOCtx*); int gdGetByte(int *result, gdIOCtx *ctx); int gdGetWord(int *result, gdIOCtx *ctx); int gdGetInt(int *result, gdIOCtx *ctx); int gdSeek(gdIOCtx *ctx, const int); long gdTell(gdIOCtx *ctx); #endif 070701000af1cd000081a40000000000000000000000014dc0f4dc000006e2000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/gd/libgd/gd_compat.h#ifndef GD_COMPAT_H #define GD_COMPAT_H 1 #if HAVE_GD_BUNDLED # include "gd.h" #else # include #endif const char * gdPngGetVersionString(); const char * gdJpegGetVersionString(); int gdJpegGetVersionInt(); int overflow2(int a, int b); /* filters section * * Negate the imag src, white becomes black, * The red, green, and blue intensities of an image are negated. * White becomes black, yellow becomes blue, etc. */ int gdImageNegate(gdImagePtr src); /* Convert the image src to a grayscale image */ int gdImageGrayScale(gdImagePtr src); /* Set the brightness level for the image src */ int gdImageBrightness(gdImagePtr src, int brightness); /* Set the contrast level for the image */ int gdImageContrast(gdImagePtr src, double contrast); /* Simply adds or substracts respectively red, green or blue to a pixel */ int gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha); /* Image convolution by a 3x3 custom matrix */ int gdImageConvolution(gdImagePtr src, float ft[3][3], float filter_div, float offset); int gdImageEdgeDetectQuick(gdImagePtr src); int gdImageGaussianBlur(gdImagePtr im); int gdImageSelectiveBlur( gdImagePtr src); int gdImageEmboss(gdImagePtr im); int gdImageMeanRemoval(gdImagePtr im); int gdImageSmooth(gdImagePtr im, float weight); enum gdPixelateMode { GD_PIXELATE_UPPERLEFT, GD_PIXELATE_AVERAGE }; int gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode); #if !HAVE_GD_IMAGEELLIPSE void gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int c); #endif gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent); int gdImageColorMatch (gdImagePtr im1, gdImagePtr im2); #endif 070701000af1cc000081a40000000000000000000000014dc0f4dc00006660000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/ext/gd/libgd/gd.h#ifndef GD_H #define GD_H 1 #ifdef __cplusplus extern "C" { #endif #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php_compat.h" #define GD_MAJOR_VERSION 2 #define GD_MINOR_VERSION 0 #define GD_RELEASE_VERSION 35 #define GD_EXTRA_VERSION "" #define GD_VERSION_STRING "2.0.35" #ifdef NETWARE /* default fontpath for netware systems */ #define DEFAULT_FONTPATH "sys:/java/nwgfx/lib/x11/fonts/ttf;." #define PATHSEPARATOR ";" #elif defined(WIN32) /* default fontpath for windows systems */ #define DEFAULT_FONTPATH "c:\\winnt\\fonts;c:\\windows\\fonts;." #define PATHSEPARATOR ";" #else /* default fontpath for unix systems */ #define DEFAULT_FONTPATH "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:." #define PATHSEPARATOR ":" #endif /* gd.h: declarations file for the graphic-draw module. * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. This software is provided "AS IS." Thomas Boutell and * Boutell.Com, Inc. disclaim all warranties, either express or implied, * including but not limited to implied warranties of merchantability and * fitness for a particular purpose, with respect to this code and accompanying * documentation. */ /* stdio is needed for file I/O. */ #include #include "gd_io.h" void php_gd_error_ex(int type, const char *format, ...); void php_gd_error(const char *format, ...); /* The maximum number of palette entries in palette-based images. In the wonderful new world of gd 2.0, you can of course have many more colors when using truecolor mode. */ #define gdMaxColors 256 /* Image type. See functions below; you will not need to change the elements directly. Use the provided macros to access sx, sy, the color table, and colorsTotal for read-only purposes. */ /* If 'truecolor' is set true, the image is truecolor; pixels are represented by integers, which must be 32 bits wide or more. True colors are repsented as follows: ARGB Where 'A' (alpha channel) occupies only the LOWER 7 BITS of the MSB. This very small loss of alpha channel resolution allows gd 2.x to keep backwards compatibility by allowing signed integers to be used to represent colors, and negative numbers to represent special cases, just as in gd 1.x. */ #define gdAlphaMax 127 #define gdAlphaOpaque 0 #define gdAlphaTransparent 127 #define gdRedMax 255 #define gdGreenMax 255 #define gdBlueMax 255 #define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24) #define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16) #define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8) #define gdTrueColorGetBlue(c) ((c) & 0x0000FF) #define gdEffectReplace 0 #define gdEffectAlphaBlend 1 #define gdEffectNormal 2 #define gdEffectOverlay 3 /* This function accepts truecolor pixel values only. The source color is composited with the destination color based on the alpha channel value of the source color. The resulting color is opaque. */ int gdAlphaBlend(int dest, int src); typedef struct gdImageStruct { /* Palette-based image pixels */ unsigned char ** pixels; int sx; int sy; /* These are valid in palette images only. See also 'alpha', which appears later in the structure to preserve binary backwards compatibility */ int colorsTotal; int red[gdMaxColors]; int green[gdMaxColors]; int blue[gdMaxColors]; int open[gdMaxColors]; /* For backwards compatibility, this is set to the first palette entry with 100% transparency, and is also set and reset by the gdImageColorTransparent function. Newer applications can allocate palette entries with any desired level of transparency; however, bear in mind that many viewers, notably many web browsers, fail to implement full alpha channel for PNG and provide support for full opacity or transparency only. */ int transparent; int *polyInts; int polyAllocated; struct gdImageStruct *brush; struct gdImageStruct *tile; int brushColorMap[gdMaxColors]; int tileColorMap[gdMaxColors]; int styleLength; int stylePos; int *style; int interlace; /* New in 2.0: thickness of line. Initialized to 1. */ int thick; /* New in 2.0: alpha channel for palettes. Note that only Macintosh Internet Explorer and (possibly) Netscape 6 really support multiple levels of transparency in palettes, to my knowledge, as of 2/15/01. Most common browsers will display 100% opaque and 100% transparent correctly, and do something unpredictable and/or undesirable for levels in between. TBB */ int alpha[gdMaxColors]; /* Truecolor flag and pixels. New 2.0 fields appear here at the end to minimize breakage of existing object code. */ int trueColor; int ** tpixels; /* Should alpha channel be copied, or applied, each time a pixel is drawn? This applies to truecolor images only. No attempt is made to alpha-blend in palette images, even if semitransparent palette entries exist. To do that, build your image as a truecolor image, then quantize down to 8 bits. */ int alphaBlendingFlag; /* Should antialias functions be used */ int antialias; /* Should the alpha channel of the image be saved? This affects PNG at the moment; other future formats may also have that capability. JPEG doesn't. */ int saveAlphaFlag; /* 2.0.12: anti-aliased globals */ int AA; int AA_color; int AA_dont_blend; unsigned char **AA_opacity; int AA_polygon; /* Stored and pre-computed variables for determining the perpendicular * distance from a point to the anti-aliased line being drawn: */ int AAL_x1; int AAL_y1; int AAL_x2; int AAL_y2; int AAL_Bx_Ax; int AAL_By_Ay; int AAL_LAB_2; float AAL_LAB; /* 2.0.12: simple clipping rectangle. These values must be checked for safety when set; please use gdImageSetClip */ int cx1; int cy1; int cx2; int cy2; } gdImage; typedef gdImage * gdImagePtr; typedef struct { /* # of characters in font */ int nchars; /* First character is numbered... (usually 32 = space) */ int offset; /* Character width and height */ int w; int h; /* Font data; array of characters, one row after another. Easily included in code, also easily loaded from data files. */ char *data; } gdFont; /* Text functions take these. */ typedef gdFont *gdFontPtr; /* For backwards compatibility only. Use gdImageSetStyle() for MUCH more flexible line drawing. Also see gdImageSetBrush(). */ #define gdDashSize 4 /* Special colors. */ #define gdStyled (-2) #define gdBrushed (-3) #define gdStyledBrushed (-4) #define gdTiled (-5) /* NOT the same as the transparent color index. This is used in line styles only. */ #define gdTransparent (-6) #define gdAntiAliased (-7) /* Functions to manipulate images. */ /* Creates a palette-based image (up to 256 colors). */ gdImagePtr gdImageCreate(int sx, int sy); /* An alternate name for the above (2.0). */ #define gdImageCreatePalette gdImageCreate /* Creates a truecolor image (millions of colors). */ gdImagePtr gdImageCreateTrueColor(int sx, int sy); /* Creates an image from various file types. These functions return a palette or truecolor image based on the nature of the file being loaded. Truecolor PNG stays truecolor; palette PNG stays palette-based; JPEG is always truecolor. */ gdImagePtr gdImageCreateFromPng(FILE *fd); gdImagePtr gdImageCreateFromPngCtx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromWBMP(FILE *inFile); gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile); gdImagePtr gdImageCreateFromJpeg(FILE *infile, int ignore_warning); gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile, int ignore_warning); int gdJpegGetVersionInt(); const char * gdPngGetVersionString(); int gdJpegGetVersionInt(); const char * gdJpegGetVersionString(); /* A custom data source. */ /* The source function must return -1 on error, otherwise the number of bytes fetched. 0 is EOF, not an error! */ /* context will be passed to your source function. */ typedef struct { int (*source) (void *context, char *buffer, int len); void *context; } gdSource, *gdSourcePtr; gdImagePtr gdImageCreateFromPngSource(gdSourcePtr in); gdImagePtr gdImageCreateFromGd(FILE *in); gdImagePtr gdImageCreateFromGdCtx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromGd2(FILE *in); gdImagePtr gdImageCreateFromGd2Ctx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromGd2Part(FILE *in, int srcx, int srcy, int w, int h); gdImagePtr gdImageCreateFromGd2PartCtx(gdIOCtxPtr in, int srcx, int srcy, int w, int h); gdImagePtr gdImageCreateFromXbm(FILE *fd); void gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOCtx * out); gdImagePtr gdImageCreateFromXpm (char *filename); void gdImageDestroy(gdImagePtr im); /* Replaces or blends with the background depending on the most recent call to gdImageAlphaBlending and the alpha channel value of 'color'; default is to overwrite. Tiling and line styling are also implemented here. All other gd drawing functions pass through this call, allowing for many useful effects. */ void gdImageSetPixel(gdImagePtr im, int x, int y, int color); int gdImageGetTrueColorPixel (gdImagePtr im, int x, int y); int gdImageGetPixel(gdImagePtr im, int x, int y); void gdImageAABlend(gdImagePtr im); void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color); void gdImageAALine(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* For backwards compatibility only. Use gdImageSetStyle() for much more flexible line drawing. */ void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* Corners specified (not width and height). Upper left first, lower right second. */ void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* Solid bar. Upper left corner first, lower right corner second. */ void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color); void gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2); void gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P); void gdImageChar(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color); void gdImageCharUp(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color); void gdImageString(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color); void gdImageStringUp(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color); void gdImageString16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color); void gdImageStringUp16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color); /* * The following functions are required to be called prior to the * use of any sort of threads in a module load / shutdown function * respectively. */ void gdFontCacheMutexSetup(); void gdFontCacheMutexShutdown(); /* 2.0.16: for thread-safe use of gdImageStringFT and friends, * call this before allowing any thread to call gdImageStringFT. * Otherwise it is invoked by the first thread to invoke * gdImageStringFT, with a very small but real risk of a race condition. * Return 0 on success, nonzero on failure to initialize freetype. */ int gdFontCacheSetup(void); /* Optional: clean up after application is done using fonts in gdImageStringFT(). */ void gdFontCacheShutdown(void); /* Calls gdImageStringFT. Provided for backwards compatibility only. */ char *gdImageStringTTF(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string); /* FreeType 2 text output */ char *gdImageStringFT(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string); typedef struct { double linespacing; /* fine tune line spacing for '\n' */ int flags; /* Logical OR of gdFTEX_ values */ int charmap; /* TBB: 2.0.12: may be gdFTEX_Unicode, gdFTEX_Shift_JIS, or gdFTEX_Big5; when not specified, maps are searched for in the above order. */ int hdpi; int vdpi; } gdFTStringExtra, *gdFTStringExtraPtr; #define gdFTEX_LINESPACE 1 #define gdFTEX_CHARMAP 2 #define gdFTEX_RESOLUTION 4 /* These are NOT flags; set one in 'charmap' if you set the gdFTEX_CHARMAP bit in 'flags'. */ #define gdFTEX_Unicode 0 #define gdFTEX_Shift_JIS 1 #define gdFTEX_Big5 2 /* FreeType 2 text output with fine tuning */ char * gdImageStringFTEx(gdImage * im, int *brect, int fg, char * fontlist, double ptsize, double angle, int x, int y, char * string, gdFTStringExtraPtr strex); /* Point type for use in polygon drawing. */ typedef struct { int x, y; } gdPoint, *gdPointPtr; void gdImagePolygon(gdImagePtr im, gdPointPtr p, int n, int c); void gdImageFilledPolygon(gdImagePtr im, gdPointPtr p, int n, int c); /* These functions still work with truecolor images, for which they never return error. */ int gdImageColorAllocate(gdImagePtr im, int r, int g, int b); /* gd 2.0: palette entries with non-opaque transparency are permitted. */ int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a); /* Assumes opaque is the preferred alpha channel value */ int gdImageColorClosest(gdImagePtr im, int r, int g, int b); /* Closest match taking all four parameters into account. A slightly different color with the same transparency beats the exact same color with radically different transparency */ int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a); /* An alternate method */ int gdImageColorClosestHWB(gdImagePtr im, int r, int g, int b); /* Returns exact, 100% opaque matches only */ int gdImageColorExact(gdImagePtr im, int r, int g, int b); /* Returns an exact match only, including alpha */ int gdImageColorExactAlpha(gdImagePtr im, int r, int g, int b, int a); /* Opaque only */ int gdImageColorResolve(gdImagePtr im, int r, int g, int b); /* Based on gdImageColorExactAlpha and gdImageColorClosestAlpha */ int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a); /* A simpler way to obtain an opaque truecolor value for drawing on a truecolor image. Not for use with palette images! */ #define gdTrueColor(r, g, b) (((r) << 16) + \ ((g) << 8) + \ (b)) /* Returns a truecolor value with an alpha channel component. gdAlphaMax (127, **NOT 255**) is transparent, 0 is completely opaque. */ #define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \ ((r) << 16) + \ ((g) << 8) + \ (b)) void gdImageColorDeallocate(gdImagePtr im, int color); /* Converts a truecolor image to a palette-based image, using a high-quality two-pass quantization routine which attempts to preserve alpha channel information as well as R/G/B color information when creating a palette. If ditherFlag is set, the image will be dithered to approximate colors better, at the expense of some obvious "speckling." colorsWanted can be anything up to 256. If the original source image includes photographic information or anything that came out of a JPEG, 256 is strongly recommended. Better yet, don't use this function -- write real truecolor PNGs and JPEGs. The disk space gain of conversion to palette is not great (for small images it can be negative) and the quality loss is ugly. */ gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im, int ditherFlag, int colorsWanted); void gdImageTrueColorToPalette(gdImagePtr im, int ditherFlag, int colorsWanted); /* An attempt at getting the results of gdImageTrueColorToPalette to look a bit more like the original (im1 is the original and im2 is the palette version */ int gdImageColorMatch(gdImagePtr im1, gdImagePtr im2); /* Specifies a color index (if a palette image) or an RGB color (if a truecolor image) which should be considered 100% transparent. FOR TRUECOLOR IMAGES, THIS IS IGNORED IF AN ALPHA CHANNEL IS BEING SAVED. Use gdImageSaveAlpha(im, 0); to turn off the saving of a full alpha channel in a truecolor image. Note that gdImageColorTransparent is usually compatible with older browsers that do not understand full alpha channels well. TBB */ void gdImageColorTransparent(gdImagePtr im, int color); void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src); void gdImagePng(gdImagePtr im, FILE *out); void gdImagePngCtx(gdImagePtr im, gdIOCtx *out); void gdImageGif(gdImagePtr im, FILE *out); void gdImageGifCtx(gdImagePtr im, gdIOCtx *out); /* 2.0.12: Compression level: 0-9 or -1, where 0 is NO COMPRESSION at all, * 1 is FASTEST but produces larger files, 9 provides the best * compression (smallest files) but takes a long time to compress, and * -1 selects the default compiled into the zlib library. */ void gdImagePngEx(gdImagePtr im, FILE * out, int level, int basefilter); void gdImagePngCtxEx(gdImagePtr im, gdIOCtx * out, int level, int basefilter); void gdImageWBMP(gdImagePtr image, int fg, FILE *out); void gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out); /* Guaranteed to correctly free memory returned by the gdImage*Ptr functions */ void gdFree(void *m); /* Best to free this memory with gdFree(), not free() */ void *gdImageWBMPPtr(gdImagePtr im, int *size, int fg); /* 100 is highest quality (there is always a little loss with JPEG). 0 is lowest. 10 is about the lowest useful setting. */ void gdImageJpeg(gdImagePtr im, FILE *out, int quality); void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality); /* Best to free this memory with gdFree(), not free() */ void *gdImageJpegPtr(gdImagePtr im, int *size, int quality); gdImagePtr gdImageCreateFromGif(FILE *fd); gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromGifSource(gdSourcePtr in); /* A custom data sink. For backwards compatibility. Use gdIOCtx instead. */ /* The sink function must return -1 on error, otherwise the number of bytes written, which must be equal to len. */ /* context will be passed to your sink function. */ typedef struct { int (*sink) (void *context, const char *buffer, int len); void *context; } gdSink, *gdSinkPtr; void gdImagePngToSink(gdImagePtr im, gdSinkPtr out); void gdImageGd(gdImagePtr im, FILE *out); void gdImageGd2(gdImagePtr im, FILE *out, int cs, int fmt); /* Best to free this memory with gdFree(), not free() */ void* gdImagePngPtr(gdImagePtr im, int *size); /* Best to free this memory with gdFree(), not free() */ void* gdImageGdPtr(gdImagePtr im, int *size); void *gdImagePngPtrEx(gdImagePtr im, int *size, int level, int basefilter); /* Best to free this memory with gdFree(), not free() */ void* gdImageGd2Ptr(gdImagePtr im, int cs, int fmt, int *size); void gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int c); /* Style is a bitwise OR ( | operator ) of these. gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending angles should be connected to the center; this is a good way to outline (rather than fill) a 'pie slice'. */ #define gdArc 0 #define gdPie gdArc #define gdChord 1 #define gdNoFill 2 #define gdEdged 4 void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style); void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color); void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color); void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color); void gdImageFill(gdImagePtr im, int x, int y, int color); void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h); void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct); void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct); /* Stretches or shrinks to fit, as needed. Does NOT attempt to average the entire set of source pixels that scale down onto the destination pixel. */ void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH); /* gd 2.0: stretches or shrinks to fit, as needed. When called with a truecolor destination image, this function averages the entire set of source pixels that scale down onto the destination pixel, taking into account what portion of the destination pixel each source pixel represents. This is a floating point operation, but this is not a performance issue on modern hardware, except for some embedded devices. If the destination is a palette image, gdImageCopyResized is substituted automatically. */ void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH); gdImagePtr gdImageRotate90(gdImagePtr src, int ignoretransparent); gdImagePtr gdImageRotate180(gdImagePtr src, int ignoretransparent); gdImagePtr gdImageRotate270(gdImagePtr src, int ignoretransparent); gdImagePtr gdImageRotate45(gdImagePtr src, double dAngle, int clrBack, int ignoretransparent); gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent); void gdImageSetBrush(gdImagePtr im, gdImagePtr brush); void gdImageSetTile(gdImagePtr im, gdImagePtr tile); void gdImageSetAntiAliased(gdImagePtr im, int c); void gdImageSetAntiAliasedDontBlend(gdImagePtr im, int c, int dont_blend); void gdImageSetStyle(gdImagePtr im, int *style, int noOfPixels); /* Line thickness (defaults to 1). Affects lines, ellipses, rectangles, polygons and so forth. */ void gdImageSetThickness(gdImagePtr im, int thickness); /* On or off (1 or 0) for all three of these. */ void gdImageInterlace(gdImagePtr im, int interlaceArg); void gdImageAlphaBlending(gdImagePtr im, int alphaBlendingArg); void gdImageAntialias(gdImagePtr im, int antialias); void gdImageSaveAlpha(gdImagePtr im, int saveAlphaArg); enum gdPixelateMode { GD_PIXELATE_UPPERLEFT, GD_PIXELATE_AVERAGE }; int gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode); /* Macros to access information about images. */ /* Returns nonzero if the image is a truecolor image, zero for a palette image. */ #define gdImageTrueColor(im) ((im)->trueColor) #define gdImageSX(im) ((im)->sx) #define gdImageSY(im) ((im)->sy) #define gdImageColorsTotal(im) ((im)->colorsTotal) #define gdImageRed(im, c) ((im)->trueColor ? gdTrueColorGetRed(c) : \ (im)->red[(c)]) #define gdImageGreen(im, c) ((im)->trueColor ? gdTrueColorGetGreen(c) : \ (im)->green[(c)]) #define gdImageBlue(im, c) ((im)->trueColor ? gdTrueColorGetBlue(c) : \ (im)->blue[(c)]) #define gdImageAlpha(im, c) ((im)->trueColor ? gdTrueColorGetAlpha(c) : \ (im)->alpha[(c)]) #define gdImageGetTransparent(im) ((im)->transparent) #define gdImageGetInterlaced(im) ((im)->interlace) /* These macros provide direct access to pixels in palette-based and truecolor images, respectively. If you use these macros, you must perform your own bounds checking. Use of the macro for the correct type of image is also your responsibility. */ #define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)] #define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)] /* I/O Support routines. */ gdIOCtx* gdNewFileCtx(FILE*); gdIOCtx* gdNewDynamicCtx(int, void*); gdIOCtx *gdNewDynamicCtxEx(int size, void *data, int freeFlag); gdIOCtx* gdNewSSCtx(gdSourcePtr in, gdSinkPtr out); void* gdDPExtractData(struct gdIOCtx* ctx, int *size); #define GD2_CHUNKSIZE 128 #define GD2_CHUNKSIZE_MIN 64 #define GD2_CHUNKSIZE_MAX 4096 #define GD2_VERS 2 #define GD2_ID "gd2" #define GD2_FMT_RAW 1 #define GD2_FMT_COMPRESSED 2 /* filters section * * Negate the imag src, white becomes black, * The red, green, and blue intensities of an image are negated. * White becomes black, yellow becomes blue, etc. */ int gdImageNegate(gdImagePtr src); /* Convert the image src to a grayscale image */ int gdImageGrayScale(gdImagePtr src); /* Set the brightness level for the image src */ int gdImageBrightness(gdImagePtr src, int brightness); /* Set the contrast level for the image */ int gdImageContrast(gdImagePtr src, double contrast); /* Simply adds or substracts respectively red, green or blue to a pixel */ int gdImageColor(gdImagePtr src, const int red, const int green, const int blue, const int alpha); /* Image convolution by a 3x3 custom matrix */ int gdImageConvolution(gdImagePtr src, float ft[3][3], float filter_div, float offset); int gdImageEdgeDetectQuick(gdImagePtr src); int gdImageGaussianBlur(gdImagePtr im); int gdImageSelectiveBlur( gdImagePtr src); int gdImageEmboss(gdImagePtr im); int gdImageMeanRemoval(gdImagePtr im); int gdImageSmooth(gdImagePtr im, float weight); /* Image comparison definitions */ int gdImageCompare(gdImagePtr im1, gdImagePtr im2); #define GD_CMP_IMAGE 1 /* Actual image IS different */ #define GD_CMP_NUM_COLORS 2 /* Number of Colours in pallette differ */ #define GD_CMP_COLOR 4 /* Image colours differ */ #define GD_CMP_SIZE_X 8 /* Image width differs */ #define GD_CMP_SIZE_Y 16 /* Image heights differ */ #define GD_CMP_TRANSPARENT 32 /* Transparent colour */ #define GD_CMP_BACKGROUND 64 /* Background colour */ #define GD_CMP_INTERLACE 128 /* Interlaced setting */ #define GD_CMP_TRUECOLOR 256 /* Truecolor vs palette differs */ /* resolution affects ttf font rendering, particularly hinting */ #define GD_RESOLUTION 96 /* pixels per inch */ #ifdef __cplusplus } #endif /* 2.0.12: this now checks the clipping rectangle */ #define gdImageBoundsSafe(im, x, y) (!((((y) < (im)->cy1) || ((y) > (im)->cy2)) || (((x) < (im)->cx1) || ((x) > (im)->cx2)))) #endif /* GD_H */ 070701000af1d4000081a40000000000000000000000014dc0f4dc000001eb000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/gd/libgd/gdfonts.h #ifndef _GDFONTS_H_ #define _GDFONTS_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-semicondensed-sans-12-116-75-75-c-60-iso8859-2 at Thu Jan 8 14:13:20 1998. No copyright info was found in the original bdf. */ #include "gd.h" extern gdFontPtr gdFontSmall; extern gdFontPtr gdFontGetSmall(void); #ifdef __cplusplus } #endif #endif 070701000af1d2000081a40000000000000000000000014dc0f4dc0000020f000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/gd/libgd/gdfontl.h #ifndef _GDFONTL_H_ #define _GDFONTL_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-normal--16-140-75-75-c-80-iso8859-2 at Tue Jan 6 19:39:27 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontLarge; extern gdFontPtr gdFontGetLarge(void); #ifdef __cplusplus } #endif #endif 070701000af1d9000081a40000000000000000000000014dc0f4db00001854000000b500010002ffffffffffffffff0000002b00000000root/usr/local/include/php/ext/gd/php_gd.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | +----------------------------------------------------------------------+ */ /* $Id: php_gd.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_GD_H #define PHP_GD_H #define HAVE_GDIMAGECREATEFROMPNG 1 #if HAVE_LIBFREETYPE # ifndef ENABLE_GD_TTF # define ENABLE_GD_TTF # endif #endif #if HAVE_LIBGD /* open_basedir and safe_mode checks */ #define PHP_GD_CHECK_OPEN_BASEDIR(filename, errormsg) \ if (!filename || php_check_open_basedir(filename TSRMLS_CC) || \ (PG(safe_mode) && !php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR)) \ ) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, errormsg); \ RETURN_FALSE; \ } #define PHP_GDIMG_TYPE_GIF 1 #define PHP_GDIMG_TYPE_PNG 2 #define PHP_GDIMG_TYPE_JPG 3 #define PHP_GDIMG_TYPE_WBM 4 #define PHP_GDIMG_TYPE_XBM 5 #define PHP_GDIMG_TYPE_XPM 6 #define PHP_GDIMG_CONVERT_WBM 7 #define PHP_GDIMG_TYPE_GD 8 #define PHP_GDIMG_TYPE_GD2 9 #define PHP_GDIMG_TYPE_GD2PART 10 #ifdef PHP_WIN32 # define PHP_GD_API __declspec(dllexport) #elif defined(__GNUC__) && __GNUC__ >= 4 # define PHP_GD_API __attribute__ ((visibility("default"))) #else # define PHP_GD_API #endif PHPAPI extern const char php_sig_gif[3]; PHPAPI extern const char php_sig_jpg[3]; PHPAPI extern const char php_sig_png[3]; extern zend_module_entry gd_module_entry; #define phpext_gd_ptr &gd_module_entry /* gd.c functions */ PHP_MINFO_FUNCTION(gd); PHP_MINIT_FUNCTION(gd); #if HAVE_LIBT1 || HAVE_GD_FONTMUTEX PHP_MSHUTDOWN_FUNCTION(gd); #endif #if HAVE_GD_STRINGFT PHP_RSHUTDOWN_FUNCTION(gd); #endif PHP_FUNCTION(gd_info); PHP_FUNCTION(imagearc); PHP_FUNCTION(imageellipse); PHP_FUNCTION(imagechar); PHP_FUNCTION(imagecharup); PHP_FUNCTION(imageistruecolor); PHP_FUNCTION(imagecolorallocate); PHP_FUNCTION(imagepalettecopy); PHP_FUNCTION(imagecolorat); PHP_FUNCTION(imagecolorclosest); PHP_FUNCTION(imagecolorclosesthwb); PHP_FUNCTION(imagecolordeallocate); PHP_FUNCTION(imagecolorresolve); PHP_FUNCTION(imagecolorexact); PHP_FUNCTION(imagecolorset); PHP_FUNCTION(imagecolorstotal); PHP_FUNCTION(imagecolorsforindex); PHP_FUNCTION(imagecolortransparent); PHP_FUNCTION(imagecopy); PHP_FUNCTION(imagecopymerge); PHP_FUNCTION(imagecopyresized); PHP_FUNCTION(imagetypes); PHP_FUNCTION(imagecreate); PHP_FUNCTION(imageftbbox); PHP_FUNCTION(imagefttext); PHP_FUNCTION(imagecreatetruecolor); PHP_FUNCTION(imagetruecolortopalette); PHP_FUNCTION(imagesetthickness); PHP_FUNCTION(imagefilledellipse); PHP_FUNCTION(imagefilledarc); PHP_FUNCTION(imagealphablending); PHP_FUNCTION(imagesavealpha); PHP_FUNCTION(imagecolorallocatealpha); PHP_FUNCTION(imagecolorresolvealpha); PHP_FUNCTION(imagecolorclosestalpha); PHP_FUNCTION(imagecolorexactalpha); PHP_FUNCTION(imagecopyresampled); #ifdef PHP_WIN32 PHP_FUNCTION(imagegrabwindow); PHP_FUNCTION(imagegrabscreen); #endif PHP_FUNCTION(imagerotate); #ifdef HAVE_GD_BUNDLED PHP_FUNCTION(imageantialias); #endif PHP_FUNCTION(imagesetthickness); PHP_FUNCTION(imagecopymergegray); PHP_FUNCTION(imagesetbrush); PHP_FUNCTION(imagesettile); PHP_FUNCTION(imagesetstyle); PHP_FUNCTION(imagecreatefromstring); PHP_FUNCTION(imagecreatefromgif); PHP_FUNCTION(imagecreatefromjpeg); PHP_FUNCTION(imagecreatefromxbm); PHP_FUNCTION(imagecreatefrompng); PHP_FUNCTION(imagecreatefromwbmp); PHP_FUNCTION(imagecreatefromgd); PHP_FUNCTION(imagecreatefromgd2); PHP_FUNCTION(imagecreatefromgd2part); #if defined(HAVE_GD_XPM) && defined(HAVE_GD_BUNDLED) PHP_FUNCTION(imagecreatefromxpm); #endif PHP_FUNCTION(imagegammacorrect); PHP_FUNCTION(imagedestroy); PHP_FUNCTION(imagefill); PHP_FUNCTION(imagefilledpolygon); PHP_FUNCTION(imagefilledrectangle); PHP_FUNCTION(imagefilltoborder); PHP_FUNCTION(imagefontwidth); PHP_FUNCTION(imagefontheight); PHP_FUNCTION(imagegif ); PHP_FUNCTION(imagejpeg ); PHP_FUNCTION(imagepng); PHP_FUNCTION(imagewbmp); PHP_FUNCTION(imagegd); PHP_FUNCTION(imagegd2); PHP_FUNCTION(imageinterlace); PHP_FUNCTION(imageline); PHP_FUNCTION(imageloadfont); PHP_FUNCTION(imagepolygon); PHP_FUNCTION(imagerectangle); PHP_FUNCTION(imagesetpixel); PHP_FUNCTION(imagestring); PHP_FUNCTION(imagestringup); PHP_FUNCTION(imagesx); PHP_FUNCTION(imagesy); PHP_FUNCTION(imagedashedline); PHP_FUNCTION(imagettfbbox); PHP_FUNCTION(imagettftext); PHP_FUNCTION(imagepsloadfont); /* PHP_FUNCTION(imagepscopyfont); */ PHP_FUNCTION(imagepsfreefont); PHP_FUNCTION(imagepsencodefont); PHP_FUNCTION(imagepsextendfont); PHP_FUNCTION(imagepsslantfont); PHP_FUNCTION(imagepstext); PHP_FUNCTION(imagepsbbox); PHP_FUNCTION(jpeg2wbmp); PHP_FUNCTION(png2wbmp); PHP_FUNCTION(image2wbmp); PHP_FUNCTION(imagecolormatch); #if HAVE_GD_BUNDLED PHP_FUNCTION(imagelayereffect); PHP_FUNCTION(imagexbm); #endif PHP_FUNCTION(imagefilter); PHP_FUNCTION(imageconvolution); PHP_GD_API int phpi_get_le_gd(void); #else #define phpext_gd_ptr NULL #endif #endif /* PHP_GD_H */ 070701000af202000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002300000000root/usr/local/include/php/ext/spl070701000af209000081a40000000000000000000000014dc0f4de0000062f000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/spl/spl_fixedarray.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Antony Dovgal | | Etienne Kneuss | +----------------------------------------------------------------------+ */ /* $Id: spl_fixedarray.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_FIXEDARRAY_H #define SPL_FIXEDARRAY_H extern PHPAPI zend_class_entry *spl_ce_SplFixedArray; PHP_MINIT_FUNCTION(spl_fixedarray); #endif /* SPL_FIXEDARRAY_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ 070701000af203000081a40000000000000000000000014dc0f4dd00000b09000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/ext/spl/php_spl.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ #ifndef PHP_SPL_H #define PHP_SPL_H #include "php.h" #if defined(PHP_WIN32) # include "win32/php_stdint.h" #elif defined(HAVE_STDINT_H) # include #endif #include #if 0 #define SPL_DEBUG(x) x #else #define SPL_DEBUG(x) #endif extern zend_module_entry spl_module_entry; #define phpext_spl_ptr &spl_module_entry #ifdef PHP_WIN32 # ifdef SPL_EXPORTS # define SPL_API __declspec(dllexport) # elif defined(COMPILE_DL_SPL) # define SPL_API __declspec(dllimport) # else # define SPL_API /* nothing */ # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define SPL_API __attribute__ ((visibility("default"))) #else # define SPL_API #endif #if defined(PHP_WIN32) && !defined(COMPILE_DL_SPL) #undef phpext_spl #define phpext_spl NULL #endif PHP_MINIT_FUNCTION(spl); PHP_MSHUTDOWN_FUNCTION(spl); PHP_RINIT_FUNCTION(spl); PHP_RSHUTDOWN_FUNCTION(spl); PHP_MINFO_FUNCTION(spl); ZEND_BEGIN_MODULE_GLOBALS(spl) char * autoload_extensions; HashTable * autoload_functions; int autoload_running; int autoload_extensions_len; intptr_t hash_mask_handle; intptr_t hash_mask_handlers; int hash_mask_init; ZEND_END_MODULE_GLOBALS(spl) #ifdef ZTS # define SPL_G(v) TSRMG(spl_globals_id, zend_spl_globals *, v) extern int spl_globals_id; #else # define SPL_G(v) (spl_globals.v) extern zend_spl_globals spl_globals; #endif PHP_FUNCTION(spl_classes); PHP_FUNCTION(class_parents); PHP_FUNCTION(class_implements); PHPAPI void php_spl_object_hash(zval *obj, char* md5str TSRMLS_DC); #endif /* PHP_SPL_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af20c000081a40000000000000000000000014dc0f4de00001599000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/spl/spl_iterators.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_iterators.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_ITERATORS_H #define SPL_ITERATORS_H #include "php.h" #include "php_spl.h" #if HAVE_PCRE || HAVE_BUNDLED_PCRE #include "ext/pcre/php_pcre.h" #endif #define spl_ce_Traversable zend_ce_traversable #define spl_ce_Iterator zend_ce_iterator #define spl_ce_Aggregate zend_ce_aggregate #define spl_ce_ArrayAccess zend_ce_arrayaccess #define spl_ce_Serializable zend_ce_serializable extern PHPAPI zend_class_entry *spl_ce_RecursiveIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveIteratorIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveTreeIterator; extern PHPAPI zend_class_entry *spl_ce_FilterIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveFilterIterator; extern PHPAPI zend_class_entry *spl_ce_ParentIterator; extern PHPAPI zend_class_entry *spl_ce_SeekableIterator; extern PHPAPI zend_class_entry *spl_ce_LimitIterator; extern PHPAPI zend_class_entry *spl_ce_CachingIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveCachingIterator; extern PHPAPI zend_class_entry *spl_ce_OuterIterator; extern PHPAPI zend_class_entry *spl_ce_IteratorIterator; extern PHPAPI zend_class_entry *spl_ce_NoRewindIterator; extern PHPAPI zend_class_entry *spl_ce_InfiniteIterator; extern PHPAPI zend_class_entry *spl_ce_EmptyIterator; extern PHPAPI zend_class_entry *spl_ce_AppendIterator; extern PHPAPI zend_class_entry *spl_ce_RegexIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveRegexIterator; extern PHPAPI zend_class_entry *spl_ce_Countable; PHP_MINIT_FUNCTION(spl_iterators); PHP_FUNCTION(iterator_to_array); PHP_FUNCTION(iterator_count); PHP_FUNCTION(iterator_apply); typedef enum { DIT_Default = 0, DIT_FilterIterator = DIT_Default, DIT_RecursiveFilterIterator = DIT_Default, DIT_ParentIterator = DIT_Default, DIT_LimitIterator, DIT_CachingIterator, DIT_RecursiveCachingIterator, DIT_IteratorIterator, DIT_NoRewindIterator, DIT_InfiniteIterator, DIT_AppendIterator, #if HAVE_PCRE || HAVE_BUNDLED_PCRE DIT_RegexIterator, DIT_RecursiveRegexIterator, #endif DIT_Unknown = ~0 } dual_it_type; typedef enum { RIT_Default = 0, RIT_RecursiveIteratorIterator = RIT_Default, RIT_RecursiveTreeIterator, RIT_Unknow = ~0 } recursive_it_it_type; enum { /* public */ CIT_CALL_TOSTRING = 0x00000001, CIT_TOSTRING_USE_KEY = 0x00000002, CIT_TOSTRING_USE_CURRENT = 0x00000004, CIT_TOSTRING_USE_INNER = 0x00000008, CIT_CATCH_GET_CHILD = 0x00000010, CIT_FULL_CACHE = 0x00000100, CIT_PUBLIC = 0x0000FFFF, /* private */ CIT_VALID = 0x00010000, CIT_HAS_CHILDREN = 0x00020000 }; enum { /* public */ REGIT_USE_KEY = 0x00000001, REGIT_INVERTED = 0x00000002 }; typedef enum { REGIT_MODE_MATCH, REGIT_MODE_GET_MATCH, REGIT_MODE_ALL_MATCHES, REGIT_MODE_SPLIT, REGIT_MODE_REPLACE, REGIT_MODE_MAX } regex_mode; typedef struct _spl_dual_it_object { zend_object std; struct { zval *zobject; zend_class_entry *ce; zend_object *object; zend_object_iterator *iterator; } inner; struct { zval *data; char *str_key; uint str_key_len; ulong int_key; int key_type; /* HASH_KEY_IS_STRING or HASH_KEY_IS_LONG */ int pos; } current; dual_it_type dit_type; union { struct { long offset; long count; } limit; struct { long flags; /* CIT_* */ zval *zstr; zval *zchildren; zval *zcache; } caching; struct { zval *zarrayit; zend_object_iterator *iterator; } append; #if HAVE_PCRE || HAVE_BUNDLED_PCRE struct { int use_flags; long flags; regex_mode mode; long preg_flags; pcre_cache_entry *pce; char *regex; } regex; #endif } u; } spl_dual_it_object; typedef int (*spl_iterator_apply_func_t)(zend_object_iterator *iter, void *puser TSRMLS_DC); PHPAPI int spl_iterator_apply(zval *obj, spl_iterator_apply_func_t apply_func, void *puser TSRMLS_DC); #endif /* SPL_ITERATORS_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af20a000081a40000000000000000000000014dc0f4de000011c6000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/spl/spl_functions.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_functions.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_FUNCTIONS_H #define PHP_FUNCTIONS_H #include "php.h" typedef zend_object_value (*create_object_func_t)(zend_class_entry *class_type TSRMLS_DC); #define REGISTER_SPL_STD_CLASS(class_name, obj_ctor) \ spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, NULL TSRMLS_CC); #define REGISTER_SPL_STD_CLASS_EX(class_name, obj_ctor, funcs) \ spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, funcs TSRMLS_CC); #define REGISTER_SPL_SUB_CLASS_EX(class_name, parent_class_name, obj_ctor, funcs) \ spl_register_sub_class(&spl_ce_ ## class_name, spl_ce_ ## parent_class_name, # class_name, obj_ctor, funcs TSRMLS_CC); #define REGISTER_SPL_INTERFACE(class_name) \ spl_register_interface(&spl_ce_ ## class_name, # class_name, spl_funcs_ ## class_name TSRMLS_CC); #define REGISTER_SPL_IMPLEMENTS(class_name, interface_name) \ zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, spl_ce_ ## interface_name); #define REGISTER_SPL_ITERATOR(class_name) \ zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, zend_ce_iterator); #define REGISTER_SPL_PROPERTY(class_name, prop_name, prop_flags) \ spl_register_property(spl_ce_ ## class_name, prop_name, sizeof(prop_name)-1, prop_flags TSRMLS_CC); #define REGISTER_SPL_CLASS_CONST_LONG(class_name, const_name, value) \ zend_declare_class_constant_long(spl_ce_ ## class_name, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); void spl_register_std_class(zend_class_entry ** ppce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC); void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC); void spl_register_interface(zend_class_entry ** ppce, char * class_name, const zend_function_entry *functions TSRMLS_DC); void spl_register_property( zend_class_entry * class_entry, char *prop_name, int prop_name_len, int prop_flags TSRMLS_DC); /* sub: whether to allow subclasses/interfaces allow = 0: allow all classes and interfaces allow > 0: allow all that match and mask ce_flags allow < 0: disallow all that match and mask ce_flags */ void spl_add_class_name(zval * list, zend_class_entry * pce, int allow, int ce_flags TSRMLS_DC); void spl_add_interfaces(zval * list, zend_class_entry * pce, int allow, int ce_flags TSRMLS_DC); int spl_add_classes(zend_class_entry *pce, zval *list, int sub, int allow, int ce_flags TSRMLS_DC); /* caller must efree(return) */ char * spl_gen_private_prop_name(zend_class_entry *ce, char *prop_name, int prop_len, int *name_len TSRMLS_DC); #define SPL_ME(class_name, function_name, arg_info, flags) \ PHP_ME( spl_ ## class_name, function_name, arg_info, flags) #define SPL_ABSTRACT_ME(class_name, function_name, arg_info) \ ZEND_ABSTRACT_ME( spl_ ## class_name, function_name, arg_info) #define SPL_METHOD(class_name, function_name) \ PHP_METHOD(spl_ ## class_name, function_name) #define SPL_MA(class_name, function_name, alias_class, alias_function, arg_info, flags) \ PHP_MALIAS(spl_ ## alias_class, function_name, alias_function, arg_info, flags) #endif /* PHP_FUNCTIONS_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af208000081a40000000000000000000000014dc0f4de000008da000000b500010002ffffffffffffffff0000003400000000root/usr/local/include/php/ext/spl/spl_exceptions.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_exceptions.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_EXCEPTIONS_H #define SPL_EXCEPTIONS_H #include "php.h" #include "php_spl.h" extern PHPAPI zend_class_entry *spl_ce_LogicException; extern PHPAPI zend_class_entry *spl_ce_BadFunctionCallException; extern PHPAPI zend_class_entry *spl_ce_BadMethodCallException; extern PHPAPI zend_class_entry *spl_ce_DomainException; extern PHPAPI zend_class_entry *spl_ce_InvalidArgumentException; extern PHPAPI zend_class_entry *spl_ce_LengthException; extern PHPAPI zend_class_entry *spl_ce_OutOfRangeException; extern PHPAPI zend_class_entry *spl_ce_RuntimeException; extern PHPAPI zend_class_entry *spl_ce_OutOfBoundsException; extern PHPAPI zend_class_entry *spl_ce_OverflowException; extern PHPAPI zend_class_entry *spl_ce_RangeException; extern PHPAPI zend_class_entry *spl_ce_UnderflowException; extern PHPAPI zend_class_entry *spl_ce_UnexpectedValueException; PHP_MINIT_FUNCTION(spl_exceptions); #endif /* SPL_EXCEPTIONS_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af20b000081a40000000000000000000000014dc0f4de00000684000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/ext/spl/spl_heap.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ */ /* $Id: spl_heap.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_HEAP_H #define SPL_HEAP_H #include "php.h" #include "php_spl.h" extern PHPAPI zend_class_entry *spl_ce_SplHeap; extern PHPAPI zend_class_entry *spl_ce_SplMinHeap; extern PHPAPI zend_class_entry *spl_ce_SplMaxHeap; extern PHPAPI zend_class_entry *spl_ce_SplPriorityQueue; PHP_MINIT_FUNCTION(spl_heap); #endif /* SPL_HEAP_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af205000081a40000000000000000000000014dc0f4de00001778000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/spl/spl_directory.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_directory.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_DIRECTORY_H #define SPL_DIRECTORY_H #include "php.h" #include "php_spl.h" extern PHPAPI zend_class_entry *spl_ce_SplFileInfo; extern PHPAPI zend_class_entry *spl_ce_DirectoryIterator; extern PHPAPI zend_class_entry *spl_ce_FilesystemIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveDirectoryIterator; extern PHPAPI zend_class_entry *spl_ce_GlobIterator; extern PHPAPI zend_class_entry *spl_ce_SplFileObject; extern PHPAPI zend_class_entry *spl_ce_SplTempFileObject; PHP_MINIT_FUNCTION(spl_directory); typedef enum { SPL_FS_INFO, /* must be 0 */ SPL_FS_DIR, SPL_FS_FILE } SPL_FS_OBJ_TYPE; typedef struct _spl_filesystem_object spl_filesystem_object; typedef void (*spl_foreign_dtor_t)(spl_filesystem_object *object TSRMLS_DC); typedef void (*spl_foreign_clone_t)(spl_filesystem_object *src, spl_filesystem_object *dst TSRMLS_DC); PHPAPI char* spl_filesystem_object_get_path(spl_filesystem_object *intern, int *len TSRMLS_DC); typedef struct _spl_other_handler { spl_foreign_dtor_t dtor; spl_foreign_clone_t clone; } spl_other_handler; /* define an overloaded iterator structure */ typedef struct { zend_object_iterator intern; zval *current; spl_filesystem_object *object; } spl_filesystem_iterator; struct _spl_filesystem_object { zend_object std; void *oth; spl_other_handler *oth_handler; char *_path; int _path_len; char *orig_path; char *file_name; int file_name_len; SPL_FS_OBJ_TYPE type; long flags; zend_class_entry *file_class; zend_class_entry *info_class; union { struct { php_stream *dirp; php_stream_dirent entry; char *sub_path; int sub_path_len; int index; int is_recursive; zend_function *func_rewind; zend_function *func_next; zend_function *func_valid; } dir; struct { php_stream *stream; php_stream_context *context; zval *zcontext; char *open_mode; int open_mode_len; zval *current_zval; char *current_line; size_t current_line_len; size_t max_line_len; long current_line_num; zval zresource; zend_function *func_getCurr; char delimiter; char enclosure; char escape; } file; } u; spl_filesystem_iterator it; }; static inline spl_filesystem_iterator* spl_filesystem_object_to_iterator(spl_filesystem_object *obj) { return &obj->it; } static inline spl_filesystem_object* spl_filesystem_iterator_to_object(spl_filesystem_iterator *it) { return (spl_filesystem_object*)((char*)it - XtOffsetOf(spl_filesystem_object, it)); } #define SPL_FILE_OBJECT_DROP_NEW_LINE 0x00000001 /* drop new lines */ #define SPL_FILE_OBJECT_READ_AHEAD 0x00000002 /* read on rewind/next */ #define SPL_FILE_OBJECT_SKIP_EMPTY 0x00000006 /* skip empty lines */ #define SPL_FILE_OBJECT_READ_CSV 0x00000008 /* read via fgetcsv */ #define SPL_FILE_OBJECT_MASK 0x0000000F /* read via fgetcsv */ #define SPL_FILE_DIR_CURRENT_AS_FILEINFO 0x00000000 /* make RecursiveDirectoryTree::current() return SplFileInfo */ #define SPL_FILE_DIR_CURRENT_AS_SELF 0x00000010 /* make RecursiveDirectoryTree::current() return getSelf() */ #define SPL_FILE_DIR_CURRENT_AS_PATHNAME 0x00000020 /* make RecursiveDirectoryTree::current() return getPathname() */ #define SPL_FILE_DIR_CURRENT_MODE_MASK 0x000000F0 /* mask RecursiveDirectoryTree::current() */ #define SPL_FILE_DIR_CURRENT(intern,mode) ((intern->flags&SPL_FILE_DIR_CURRENT_MODE_MASK)==mode) #define SPL_FILE_DIR_KEY_AS_PATHNAME 0x00000000 /* make RecursiveDirectoryTree::key() return getPathname() */ #define SPL_FILE_DIR_KEY_AS_FILENAME 0x00000100 /* make RecursiveDirectoryTree::key() return getFilename() */ #define SPL_FILE_DIR_FOLLOW_SYMLINKS 0x00000200 /* make RecursiveDirectoryTree::hasChildren() follow symlinks */ #define SPL_FILE_DIR_KEY_MODE_MASK 0x00000F00 /* mask RecursiveDirectoryTree::key() */ #define SPL_FILE_DIR_KEY(intern,mode) ((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)==mode) #define SPL_FILE_DIR_SKIPDOTS 0x00001000 /* Tells whether it should skip dots or not */ #define SPL_FILE_DIR_UNIXPATHS 0x00002000 /* Whether to unixify path separators */ #define SPL_FILE_DIR_OTHERS_MASK 0x00003000 /* mask used for get/setFlags */ #endif /* SPL_DIRECTORY_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af204000081a40000000000000000000000014dc0f4dd00000721000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/spl/spl_array.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_array.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_ARRAY_H #define SPL_ARRAY_H #include "php.h" #include "php_spl.h" #include "spl_iterators.h" extern PHPAPI zend_class_entry *spl_ce_ArrayObject; extern PHPAPI zend_class_entry *spl_ce_ArrayIterator; extern PHPAPI zend_class_entry *spl_ce_RecursiveArrayIterator; PHP_MINIT_FUNCTION(spl_array); extern void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC); extern void spl_array_iterator_key(zval *object, zval *return_value TSRMLS_DC); #endif /* SPL_ARRAY_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af207000081a40000000000000000000000014dc0f4de00000971000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/spl/spl_engine.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_engine.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_ENGINE_H #define SPL_ENGINE_H #include "php.h" #include "php_spl.h" #include "zend_interfaces.h" PHPAPI void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC); PHPAPI long spl_offset_convert_to_long(zval *offset TSRMLS_DC); /* {{{ spl_instantiate_arg_ex1 */ static inline int spl_instantiate_arg_ex1(zend_class_entry *pce, zval **retval, int alloc, zval *arg1 TSRMLS_DC) { spl_instantiate(pce, retval, alloc TSRMLS_CC); zend_call_method(retval, pce, &pce->constructor, pce->constructor->common.function_name, strlen(pce->constructor->common.function_name), NULL, 1, arg1, NULL TSRMLS_CC); return 0; } /* }}} */ /* {{{ spl_instantiate_arg_ex2 */ static inline int spl_instantiate_arg_ex2(zend_class_entry *pce, zval **retval, int alloc, zval *arg1, zval *arg2 TSRMLS_DC) { spl_instantiate(pce, retval, alloc TSRMLS_CC); zend_call_method(retval, pce, &pce->constructor, pce->constructor->common.function_name, strlen(pce->constructor->common.function_name), NULL, 2, arg1, arg2 TSRMLS_CC); return 0; } /* }}} */ #endif /* SPL_ENGINE_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af206000081a40000000000000000000000014dc0f4de0000065c000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/spl/spl_dllist.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ */ /* $Id: spl_dllist.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_DLLIST_H #define SPL_DLLIST_H #include "php.h" #include "php_spl.h" extern PHPAPI zend_class_entry *spl_ce_SplDoublyLinkedList; extern PHPAPI zend_class_entry *spl_ce_SplQueue; extern PHPAPI zend_class_entry *spl_ce_SplStack; PHP_MINIT_FUNCTION(spl_dllist); #endif /* SPL_DLLIST_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af20d000081a40000000000000000000000014dc0f4de000006a1000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/spl/spl_observer.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: spl_observer.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef SPL_OBSERVER_H #define SPL_OBSERVER_H #include "php.h" #include "php_spl.h" extern PHPAPI zend_class_entry *spl_ce_SplObserver; extern PHPAPI zend_class_entry *spl_ce_SplSubject; extern PHPAPI zend_class_entry *spl_ce_SplObjectStorage; extern PHPAPI zend_class_entry *spl_ce_MultipleIterator; PHP_MINIT_FUNCTION(spl_observer); #endif /* SPL_OBSERVER_H */ /* * Local Variables: * c-basic-offset: 4 * tab-width: 4 * End: * vim600: fdm=marker * vim: noet sw=4 ts=4 */ 070701000af1f5000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002600000000root/usr/local/include/php/ext/libxml070701000af1f6000081a40000000000000000000000014dc0f4db00001136000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/libxml/php_libxml.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Wez Furlong | +----------------------------------------------------------------------+ */ /* $Id: php_libxml.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_LIBXML_H #define PHP_LIBXML_H #if HAVE_LIBXML extern zend_module_entry libxml_module_entry; #define libxml_module_ptr &libxml_module_entry #ifdef PHP_WIN32 # define PHP_LIBXML_API __declspec(dllexport) #elif defined(__GNUC__) && __GNUC__ >= 4 # define PHP_LIBXML_API __attribute__ ((visibility("default"))) #else # define PHP_LIBXML_API #endif #include "ext/standard/php_smart_str.h" #include #define LIBXML_SAVE_NOEMPTYTAG 1<<2 ZEND_BEGIN_MODULE_GLOBALS(libxml) zval *stream_context; smart_str error_buffer; zend_llist *error_list; ZEND_END_MODULE_GLOBALS(libxml) typedef struct _libxml_doc_props { int formatoutput; int validateonparse; int resolveexternals; int preservewhitespace; int substituteentities; int stricterror; int recover; HashTable *classmap; } libxml_doc_props; typedef struct _php_libxml_ref_obj { void *ptr; int refcount; libxml_doc_props *doc_props; } php_libxml_ref_obj; typedef struct _php_libxml_node_ptr { xmlNodePtr node; int refcount; void *_private; } php_libxml_node_ptr; typedef struct _php_libxml_node_object { zend_object std; php_libxml_node_ptr *node; php_libxml_ref_obj *document; HashTable *properties; } php_libxml_node_object; typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC); PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC); PHP_LIBXML_API int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC); PHP_LIBXML_API int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC); PHP_LIBXML_API int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC); PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC); PHP_LIBXML_API int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function); /* When an explicit freeing of node and children is required */ PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC); /* When object dtor is called as node may still be referenced */ PHP_LIBXML_API void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC); PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...); PHP_LIBXML_API void php_libxml_ctx_warning(void *ctx, const char *msg, ...); PHP_LIBXML_API void php_libxml_ctx_error(void *ctx, const char *msg, ...); PHP_LIBXML_API int php_libxml_xmlCheckUTF8(const unsigned char *s); PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC); PHP_LIBXML_API void php_libxml_issue_error(int level, const char *msg TSRMLS_DC); /* Init/shutdown functions*/ PHP_LIBXML_API void php_libxml_initialize(void); PHP_LIBXML_API void php_libxml_shutdown(void); #ifdef ZTS #define LIBXML(v) TSRMG(libxml_globals_id, zend_libxml_globals *, v) #else #define LIBXML(v) (libxml_globals.v) #endif #else /* HAVE_LIBXML */ #define libxml_module_ptr NULL #endif #define phpext_libxml_ptr libxml_module_ptr #endif /* PHP_LIBXML_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af1be000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/php/ext/ereg070701000af1c1000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/php/ext/ereg/regex070701000af1c3000081a40000000000000000000000014dc0f4db00000816000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/ereg/regex/cname.h/* character-name table */ static const struct cname { const char *name; char code; } cnames[] = { {"NUL", '\0'}, {"SOH", '\001'}, {"STX", '\002'}, {"ETX", '\003'}, {"EOT", '\004'}, {"ENQ", '\005'}, {"ACK", '\006'}, {"BEL", '\007'}, {"alert", '\007'}, {"BS", '\010'}, {"backspace", '\b'}, {"HT", '\011'}, {"tab", '\t'}, {"LF", '\012'}, {"newline", '\n'}, {"VT", '\013'}, {"vertical-tab", '\v'}, {"FF", '\014'}, {"form-feed", '\f'}, {"CR", '\015'}, {"carriage-return", '\r'}, {"SO", '\016'}, {"SI", '\017'}, {"DLE", '\020'}, {"DC1", '\021'}, {"DC2", '\022'}, {"DC3", '\023'}, {"DC4", '\024'}, {"NAK", '\025'}, {"SYN", '\026'}, {"ETB", '\027'}, {"CAN", '\030'}, {"EM", '\031'}, {"SUB", '\032'}, {"ESC", '\033'}, {"IS4", '\034'}, {"FS", '\034'}, {"IS3", '\035'}, {"GS", '\035'}, {"IS2", '\036'}, {"RS", '\036'}, {"IS1", '\037'}, {"US", '\037'}, {"space", ' '}, {"exclamation-mark", '!'}, {"quotation-mark", '"'}, {"number-sign", '#'}, {"dollar-sign", '$'}, {"percent-sign", '%'}, {"ampersand", '&'}, {"apostrophe", '\''}, {"left-parenthesis", '('}, {"right-parenthesis", ')'}, {"asterisk", '*'}, {"plus-sign", '+'}, {"comma", ','}, {"hyphen", '-'}, {"hyphen-minus", '-'}, {"period", '.'}, {"full-stop", '.'}, {"slash", '/'}, {"solidus", '/'}, {"zero", '0'}, {"one", '1'}, {"two", '2'}, {"three", '3'}, {"four", '4'}, {"five", '5'}, {"six", '6'}, {"seven", '7'}, {"eight", '8'}, {"nine", '9'}, {"colon", ':'}, {"semicolon", ';'}, {"less-than-sign", '<'}, {"equals-sign", '='}, {"greater-than-sign", '>'}, {"question-mark", '?'}, {"commercial-at", '@'}, {"left-square-bracket", '['}, {"backslash", '\\'}, {"reverse-solidus", '\\'}, {"right-square-bracket", ']'}, {"circumflex", '^'}, {"circumflex-accent", '^'}, {"underscore", '_'}, {"low-line", '_'}, {"grave-accent", '`'}, {"left-brace", '{'}, {"left-curly-bracket", '{'}, {"vertical-line", '|'}, {"right-brace", '}'}, {"right-curly-bracket", '}'}, {"tilde", '~'}, {"DEL", '\177'}, {NULL, 0}, }; 070701000af1c5000081a40000000000000000000000014dc0f4db000015a0000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/ereg/regex/regex2.h/* * First, the stuff that ends up in the outside-world include file = #ifdef WIN32 = #define API_EXPORT(type) __declspec(dllexport) type __stdcall = #else = #define API_EXPORT(type) type = #endif = = typedef off_t regoff_t; = typedef struct { = int re_magic; = size_t re_nsub; // number of parenthesized subexpressions = const unsigned char *re_endp; // end pointer for REG_PEND = struct re_guts *re_g; // none of your business :-) = } regex_t; = typedef struct { = regoff_t rm_so; // start of match = regoff_t rm_eo; // end of match = } regmatch_t; */ /* * internals of regex_t */ #define MAGIC1 ((('r'^0200)<<8) | 'e') /* * The internal representation is a *strip*, a sequence of * operators ending with an endmarker. (Some terminology etc. is a * historical relic of earlier versions which used multiple strips.) * Certain oddities in the representation are there to permit running * the machinery backwards; in particular, any deviation from sequential * flow must be marked at both its source and its destination. Some * fine points: * * - OPLUS_ and O_PLUS are *inside* the loop they create. * - OQUEST_ and O_QUEST are *outside* the bypass they create. * - OCH_ and O_CH are *outside* the multi-way branch they create, while * OOR1 and OOR2 are respectively the end and the beginning of one of * the branches. Note that there is an implicit OOR2 following OCH_ * and an implicit OOR1 preceding O_CH. * * In state representations, an operator's bit is on to signify a state * immediately *preceding* "execution" of that operator. */ typedef long sop; /* strip operator */ typedef long sopno; #define OPRMASK 0x7c000000 #define OPDMASK 0x03ffffff #define OPSHIFT (26) #define OP(n) ((n)&OPRMASK) #define OPND(n) ((n)&OPDMASK) #define SOP(op, opnd) ((op)|(opnd)) /* operators meaning operand */ /* (back, fwd are offsets) */ #define OEND (1< uch [csetsize] */ uch mask; /* bit within array */ uch hash; /* hash code */ size_t smultis; unsigned char *multis; /* -> char[smulti] ab\0cd\0ef\0\0 */ } cset; /* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */ #define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c)) #define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c)) #define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask) #define MCadd(p, cs, cp) mcadd(p, cs, cp) /* regcomp() internal fns */ #define MCsub(p, cs, cp) mcsub(p, cs, cp) #define MCin(p, cs, cp) mcin(p, cs, cp) /* stuff for character categories */ typedef unsigned char cat_t; /* * main compiled-expression structure */ struct re_guts { int magic; # define MAGIC2 ((('R'^0200)<<8)|'E') sop *strip; /* malloced area for strip */ int csetsize; /* number of bits in a cset vector */ int ncsets; /* number of csets in use */ cset *sets; /* -> cset [ncsets] */ uch *setbits; /* -> uch[csetsize][ncsets/CHAR_BIT] */ int cflags; /* copy of regcomp() cflags argument */ sopno nstates; /* = number of sops */ sopno firststate; /* the initial OEND (normally 0) */ sopno laststate; /* the final OEND */ int iflags; /* internal flags */ # define USEBOL 01 /* used ^ */ # define USEEOL 02 /* used $ */ # define BAD 04 /* something wrong */ int nbol; /* number of ^ used */ int neol; /* number of $ used */ int ncategories; /* how many character categories */ cat_t *categories; /* ->catspace[-UCHAR_MIN] */ unsigned char *must; /* match must contain this string */ int mlen; /* length of must */ size_t nsub; /* copy of re_nsub */ int backrefs; /* does it use back references? */ sopno nplus; /* how deep does it nest +s? */ /* catspace must be last */ cat_t catspace[1]; /* actually [NC] */ }; /* misc utilities */ #define OUT (UCHAR_MAX+1) /* a non-character value */ #define ISWORD(c) (isalnum(c) || (c) == '_') 070701000af1c2000081a40000000000000000000000014dc0f4db000003e0000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/ext/ereg/regex/cclass.h/* character-class table */ static const struct cclass { const unsigned char *name; const unsigned char *chars; const unsigned char *multis; } cclasses[] = { {"alnum", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", ""}, {"alpha", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", ""}, {"blank", " \t", ""}, {"cntrl", "\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\ \25\26\27\30\31\32\33\34\35\36\37\177", ""}, {"digit", "0123456789", ""}, {"graph", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\ 0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ""}, {"lower", "abcdefghijklmnopqrstuvwxyz", ""}, {"print", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\ 0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ", ""}, {"punct", "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ""}, {"space", "\t\n\v\f\r ", ""}, {"upper", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", ""}, {"xdigit", "0123456789ABCDEFabcdef", ""}, {NULL, 0, ""} }; 070701000af1c4000081a40000000000000000000000014dc0f4db00000875000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/ereg/regex/regex.h#ifndef _HSREGEX_H_ #define _HSREGEX_H_ #ifndef _HSREGEX_H #define _HSREGEX_H /* never again */ /* ========= begin header generated by ././mkh ========= */ #ifdef __cplusplus extern "C" { #endif /* === regex2.h === */ #ifdef WIN32 #define API_EXPORT(type) __declspec(dllexport) type __stdcall #elif defined(__GNUC__) && __GNUC__ >= 4 #define API_EXPORT(type) __attribute__ ((visibility("default"))) type #else #define API_EXPORT(type) type #endif typedef off_t regoff_t; typedef struct { int re_magic; size_t re_nsub; /* number of parenthesized subexpressions */ const char *re_endp; /* end pointer for REG_PEND */ struct re_guts *re_g; /* none of your business :-) */ } regex_t; typedef struct { regoff_t rm_so; /* start of match */ regoff_t rm_eo; /* end of match */ } regmatch_t; /* === regcomp.c === */ API_EXPORT(int) regcomp(regex_t *, const char *, int); #define REG_BASIC 0000 #define REG_EXTENDED 0001 #define REG_ICASE 0002 #define REG_NOSUB 0004 #define REG_NEWLINE 0010 #define REG_NOSPEC 0020 #define REG_PEND 0040 #define REG_DUMP 0200 /* === regerror.c === */ #define REG_OKAY 0 #define REG_NOMATCH 1 #define REG_BADPAT 2 #define REG_ECOLLATE 3 #define REG_ECTYPE 4 #define REG_EESCAPE 5 #define REG_ESUBREG 6 #define REG_EBRACK 7 #define REG_EPAREN 8 #define REG_EBRACE 9 #define REG_BADBR 10 #define REG_ERANGE 11 #define REG_ESPACE 12 #define REG_BADRPT 13 #define REG_EMPTY 14 #define REG_ASSERT 15 #define REG_INVARG 16 #define REG_ATOI 255 /* convert name to number (!) */ #define REG_ITOA 0400 /* convert number to name (!) */ API_EXPORT(size_t) regerror(int, const regex_t *, char *, size_t); /* === regexec.c === */ API_EXPORT(int) regexec(const regex_t *, const char *, size_t, regmatch_t [], int); #define REG_NOTBOL 00001 #define REG_NOTEOL 00002 #define REG_STARTEND 00004 #define REG_TRACE 00400 /* tracing of execution */ #define REG_LARGE 01000 /* force large representation */ #define REG_BACKR 02000 /* force use of backref code */ /* === regfree.c === */ API_EXPORT(void) regfree(regex_t *); #ifdef __cplusplus } #endif /* ========= end header generated by ././mkh ========= */ #endif #endif 070701000af1c6000081a40000000000000000000000014dc0f4db000001f5000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/ereg/regex/utils.h/* utility definitions */ #ifdef _POSIX2_RE_DUP_MAX #define DUPMAX _POSIX2_RE_DUP_MAX #else #define DUPMAX 255 #endif #define INFINITY (DUPMAX + 1) #define NC (CHAR_MAX - CHAR_MIN + 1) typedef unsigned char uch; /* switch off assertions (if not already off) if no REDEBUG */ #ifndef REDEBUG #ifndef NDEBUG #define NDEBUG /* no assertions please */ #endif #endif #include /* for old systems with bcopy() but no memmove() */ #ifdef USEBCOPY #define memmove(d, s, c) bcopy(s, d, c) #endif 070701000af1bf000081a40000000000000000000000014dc0f4db000007d1000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/ereg/php_ereg.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ /* $Id: php_ereg.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef EREG_H #define EREG_H #include "php_regex.h" extern zend_module_entry ereg_module_entry; #define phpext_ereg_ptr &ereg_module_entry PHPAPI char *php_ereg_replace(const char *pattern, const char *replace, const char *string, int icase, int extended); PHP_FUNCTION(ereg); PHP_FUNCTION(eregi); PHP_FUNCTION(eregi_replace); PHP_FUNCTION(ereg_replace); PHP_FUNCTION(split); PHP_FUNCTION(spliti); PHPAPI PHP_FUNCTION(sql_regcase); ZEND_BEGIN_MODULE_GLOBALS(ereg) HashTable ht_rc; unsigned int lru_counter; ZEND_END_MODULE_GLOBALS(ereg) /* Module functions */ PHP_MINIT_FUNCTION(ereg); PHP_MSHUTDOWN_FUNCTION(ereg); PHP_MINFO_FUNCTION(ereg); #ifdef ZTS #define EREG(v) TSRMG(ereg_globals_id, zend_ereg_globals *, v) #else #define EREG(v) (ereg_globals.v) #endif #endif /* REG_H */ 070701000af1c0000081a40000000000000000000000014dc0f4db0000081e000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/ext/ereg/php_regex.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: | +----------------------------------------------------------------------+ */ /* $Id: php_regex.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_REGEX_H #define PHP_REGEX_H /* * REGEX means: * 0.. system regex * 1.. bundled regex */ #if (REGEX == 1) /* Define aliases */ #define regexec php_regexec #define regerror php_regerror #define regfree php_regfree #define regcomp php_regcomp #include "ext/ereg/regex/regex.h" #undef _PCREPOSIX_H #define _PCREPOSIX_H 1 #ifndef _REGEX_H #define _REGEX_H 1 /* this should stop Apache from loading the system version of regex.h */ #endif #ifndef _REGEX_H_ #define _REGEX_H_ 1 #endif #ifndef _RX_H #define _RX_H 1 /* Try defining these for Linux to */ #endif #ifndef __REGEXP_LIBRARY_H__ #define __REGEXP_LIBRARY_H__ 1 /* avoid Apache including regex.h */ #endif #ifndef _H_REGEX #define _H_REGEX 1 /* This one is for AIX */ #endif #elif REGEX == 0 #include #ifndef _REGEX_H_ #define _REGEX_H_ 1 #endif #endif #endif /* PHP_REGEX_H */ 070701000af1b6000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/php/ext/date070701000af1bb000081a40000000000000000000000014dc0f4da00001674000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/date/php_date.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ */ /* $Id: php_date.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_DATE_H #define PHP_DATE_H #include "lib/timelib.h" #include "Zend/zend_hash.h" extern zend_module_entry date_module_entry; #define phpext_date_ptr &date_module_entry PHP_FUNCTION(date); PHP_FUNCTION(idate); PHP_FUNCTION(gmdate); PHP_FUNCTION(strtotime); PHP_FUNCTION(mktime); PHP_FUNCTION(gmmktime); PHP_FUNCTION(checkdate); #ifdef HAVE_STRFTIME PHP_FUNCTION(strftime); PHP_FUNCTION(gmstrftime); #endif PHP_FUNCTION(time); PHP_FUNCTION(localtime); PHP_FUNCTION(getdate); /* Advanced Interface */ PHP_METHOD(DateTime, __construct); PHP_METHOD(DateTime, __wakeup); PHP_METHOD(DateTime, __set_state); PHP_FUNCTION(date_create); PHP_FUNCTION(date_create_from_format); PHP_FUNCTION(date_parse); PHP_FUNCTION(date_parse_from_format); PHP_FUNCTION(date_get_last_errors); PHP_FUNCTION(date_format); PHP_FUNCTION(date_modify); PHP_FUNCTION(date_add); PHP_FUNCTION(date_sub); PHP_FUNCTION(date_timezone_get); PHP_FUNCTION(date_timezone_set); PHP_FUNCTION(date_offset_get); PHP_FUNCTION(date_diff); PHP_FUNCTION(date_time_set); PHP_FUNCTION(date_date_set); PHP_FUNCTION(date_isodate_set); PHP_FUNCTION(date_timestamp_set); PHP_FUNCTION(date_timestamp_get); PHP_METHOD(DateTimeZone, __construct); PHP_FUNCTION(timezone_open); PHP_FUNCTION(timezone_name_get); PHP_FUNCTION(timezone_name_from_abbr); PHP_FUNCTION(timezone_offset_get); PHP_FUNCTION(timezone_transitions_get); PHP_FUNCTION(timezone_location_get); PHP_FUNCTION(timezone_identifiers_list); PHP_FUNCTION(timezone_abbreviations_list); PHP_FUNCTION(timezone_version_get); PHP_METHOD(DateInterval, __construct); PHP_FUNCTION(date_interval_format); PHP_FUNCTION(date_interval_create_from_date_string); PHP_METHOD(DatePeriod, __construct); /* Options and Configuration */ PHP_FUNCTION(date_default_timezone_set); PHP_FUNCTION(date_default_timezone_get); /* Astro functions */ PHP_FUNCTION(date_sunrise); PHP_FUNCTION(date_sunset); PHP_FUNCTION(date_sun_info); PHP_RINIT_FUNCTION(date); PHP_RSHUTDOWN_FUNCTION(date); PHP_MINIT_FUNCTION(date); PHP_MSHUTDOWN_FUNCTION(date); PHP_MINFO_FUNCTION(date); typedef struct _php_date_obj php_date_obj; typedef struct _php_timezone_obj php_timezone_obj; typedef struct _php_interval_obj php_interval_obj; typedef struct _php_period_obj php_period_obj; struct _php_date_obj { zend_object std; timelib_time *time; HashTable *props; }; struct _php_timezone_obj { zend_object std; int initialized; int type; union { timelib_tzinfo *tz; /* TIMELIB_ZONETYPE_ID; */ timelib_sll utc_offset; /* TIMELIB_ZONETYPE_OFFSET */ struct /* TIMELIB_ZONETYPE_ABBR */ { timelib_sll utc_offset; char *abbr; int dst; } z; } tzi; }; struct _php_interval_obj { zend_object std; timelib_rel_time *diff; HashTable *props; int initialized; }; struct _php_period_obj { zend_object std; timelib_time *start; timelib_time *current; timelib_time *end; timelib_rel_time *interval; int recurrences; int initialized; int include_start_date; }; ZEND_BEGIN_MODULE_GLOBALS(date) char *default_timezone; char *timezone; HashTable *tzcache; timelib_error_container *last_errors; ZEND_END_MODULE_GLOBALS(date) #ifdef ZTS #define DATEG(v) TSRMG(date_globals_id, zend_date_globals *, v) #else #define DATEG(v) (date_globals.v) #endif /* Backwards compability wrapper */ PHPAPI signed long php_parse_date(char *string, signed long *now); PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt); PHPAPI int php_idate(char format, time_t ts, int localtime); #if HAVE_STRFTIME #define _php_strftime php_strftime PHPAPI void php_strftime(INTERNAL_FUNCTION_PARAMETERS, int gm); #endif PHPAPI char *php_format_date(char *format, int format_len, time_t ts, int localtime TSRMLS_DC); /* Mechanism to set new TZ database */ PHPAPI void php_date_set_tzdb(timelib_tzdb *tzdb); PHPAPI timelib_tzinfo *get_timezone_info(TSRMLS_D); /* Grabbing CE's so that other exts can use the date objects too */ PHPAPI zend_class_entry *php_date_get_date_ce(void); PHPAPI zend_class_entry *php_date_get_timezone_ce(void); /* Functions for creating DateTime objects, and initializing them from a string */ PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC); PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int time_str_len, char *format, zval *timezone_object, int ctor TSRMLS_DC); #endif /* PHP_DATE_H */ 070701000af1b7000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002800000000root/usr/local/include/php/ext/date/lib070701000af1b8000081a40000000000000000000000014dc0f4da000016fe000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/ext/date/lib/timelib.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2010 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ */ /* $Id: timelib.h 309055 2011-03-09 20:06:52Z scottmac $ */ #ifndef __TIMELIB_H__ #define __TIMELIB_H__ #include "timelib_structs.h" #if HAVE_LIMITS_H #include #endif #define TIMELIB_VERSION 201101 #define TIMELIB_NONE 0x00 #define TIMELIB_OVERRIDE_TIME 0x01 #define TIMELIB_NO_CLONE 0x02 #define TIMELIB_SPECIAL_WEEKDAY 0x01 #define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH 0x02 #define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03 #ifndef LONG_MAX #define LONG_MAX 2147483647L #endif #ifndef LONG_MIN #define LONG_MIN (- LONG_MAX - 1) #endif #if defined(_MSC_VER) && !defined(strcasecmp) #define strcasecmp stricmp #endif #if defined(_MSC_VER) && !defined(strncasecmp) #define strncasecmp strnicmp #endif /* From dow.c */ timelib_sll timelib_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d); timelib_sll timelib_iso_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d); timelib_sll timelib_day_of_year(timelib_sll y, timelib_sll m, timelib_sll d); timelib_sll timelib_daynr_from_weeknr(timelib_sll y, timelib_sll w, timelib_sll d); timelib_sll timelib_days_in_month(timelib_sll y, timelib_sll m); void timelib_isoweek_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iw, timelib_sll *iy); int timelib_valid_time(timelib_sll h, timelib_sll i, timelib_sll s); int timelib_valid_date(timelib_sll y, timelib_sll m, timelib_sll d); /* From parse_date.re */ timelib_time *timelib_strtotime(char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb); timelib_time *timelib_parse_from_format(char *format, char *s, int len, timelib_error_container **errors, const timelib_tzdb *tzdb); void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options); char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst); const timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void); /* From parse_iso_intervals.re */ void timelib_strtointerval(char *s, int len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, struct timelib_error_container **errors); /* From tm2unixtime.c */ void timelib_update_ts(timelib_time* time, timelib_tzinfo* tzi); void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt); /* From unixtime2tm.c */ int timelib_apply_localtime(timelib_time *t, unsigned int localtime); void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts); void timelib_unixtime2local(timelib_time *tm, timelib_sll ts); void timelib_update_from_sse(timelib_time *tm); void timelib_set_timezone(timelib_time *t, timelib_tzinfo *tz); /* From parse_tz.c */ int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb); timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb); int timelib_timestamp_is_in_dst(timelib_sll ts, timelib_tzinfo *tz); timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *tz); timelib_sll timelib_get_current_offset(timelib_time *t); void timelib_dump_tzinfo(timelib_tzinfo *tz); const timelib_tzdb *timelib_builtin_db(void); const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count); /* From timelib.c */ timelib_tzinfo* timelib_tzinfo_ctor(char *name); void timelib_time_tz_abbr_update(timelib_time* tm, char* tz_abbr); void timelib_time_tz_name_update(timelib_time* tm, char* tz_name); void timelib_tzinfo_dtor(timelib_tzinfo *tz); timelib_tzinfo* timelib_tzinfo_clone(timelib_tzinfo *tz); timelib_rel_time* timelib_rel_time_ctor(void); void timelib_rel_time_dtor(timelib_rel_time* t); timelib_rel_time* timelib_rel_time_clone(timelib_rel_time *tz); timelib_time* timelib_time_ctor(void); void timelib_time_set_option(timelib_time* tm, int option, void* option_value); void timelib_time_dtor(timelib_time* t); timelib_time* timelib_time_clone(timelib_time* orig); timelib_time_offset* timelib_time_offset_ctor(void); void timelib_time_offset_dtor(timelib_time_offset* t); void timelib_error_container_dtor(timelib_error_container *errors); signed long timelib_date_to_int(timelib_time *d, int *error); void timelib_dump_date(timelib_time *d, int options); void timelib_dump_rel_time(timelib_rel_time *d); void timelib_decimal_hour_to_hms(double h, int *hour, int *min, int *sec); /* from astro.c */ double timelib_ts_to_juliandate(timelib_sll ts); int timelib_astro_rise_set_altitude(timelib_time *time, double lon, double lat, double altit, int upper_limb, double *h_rise, double *h_set, timelib_sll *ts_rise, timelib_sll *ts_set, timelib_sll *ts_transit); /* from interval.c */ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two); #endif 070701000af1b9000081a40000000000000000000000014dc0f4db00000050000000b500010002ffffffffffffffff0000003900000000root/usr/local/include/php/ext/date/lib/timelib_config.h#ifdef PHP_WIN32 # include "config.w32.h" #else # include #endif 070701000af1ba000081a40000000000000000000000014dc0f4da000018c5000000b500010002ffffffffffffffff0000003a00000000root/usr/local/include/php/ext/date/lib/timelib_structs.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2010 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ */ /* $Id: timelib_structs.h 307038 2011-01-03 19:24:04Z scottmac $ */ #ifndef __TIMELIB_STRUCTS_H__ #define __TIMELIB_STRUCTS_H__ #include "timelib_config.h" #ifdef HAVE_SYS_TYPES_H #include #endif #if defined(HAVE_INTTYPES_H) #include #elif defined(HAVE_STDINT_H) #include #endif #ifdef PHP_WIN32 /* TODO: Remove these hacks/defs once we have the int definitions in main/ rathen than in each 2nd extension and win32/ */ # include "win32/php_stdint.h" #else # ifndef HAVE_INT32_T # if SIZEOF_INT == 4 typedef int int32_t; # elif SIZEOF_LONG == 4 typedef long int int32_t; # endif # endif # ifndef HAVE_UINT32_T # if SIZEOF_INT == 4 typedef unsigned int uint32_t; # elif SIZEOF_LONG == 4 typedef unsigned long int uint32_t; # endif # endif #endif #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STRING_H #include #else #include #endif #if defined(_MSC_VER) typedef uint64_t timelib_ull; typedef int64_t timelib_sll; # define TIMELIB_LL_CONST(n) n ## i64 #else typedef unsigned long long timelib_ull; typedef signed long long timelib_sll; # define TIMELIB_LL_CONST(n) n ## ll #endif typedef struct ttinfo { int32_t offset; int isdst; unsigned int abbr_idx; unsigned int isstdcnt; unsigned int isgmtcnt; } ttinfo; typedef struct tlinfo { int32_t trans; int32_t offset; } tlinfo; typedef struct tlocinfo { char country_code[3]; double latitude; double longitude; char *comments; } tlocinfo; typedef struct timelib_tzinfo { char *name; uint32_t ttisgmtcnt; uint32_t ttisstdcnt; uint32_t leapcnt; uint32_t timecnt; uint32_t typecnt; uint32_t charcnt; int32_t *trans; unsigned char *trans_idx; ttinfo *type; char *timezone_abbr; tlinfo *leap_times; unsigned char bc; tlocinfo location; } timelib_tzinfo; typedef struct timelib_special { unsigned int type; timelib_sll amount; } timelib_special; typedef struct timelib_rel_time { timelib_sll y, m, d; /* Years, Months and Days */ timelib_sll h, i, s; /* Hours, mInutes and Seconds */ int weekday; /* Stores the day in 'next monday' */ int weekday_behavior; /* 0: the current day should *not* be counted when advancing forwards; 1: the current day *should* be counted */ int first_last_day_of; int invert; /* Whether the difference should be inverted */ timelib_sll days; /* Contains the number of *days*, instead of Y-M-D differences */ timelib_special special; unsigned int have_weekday_relative, have_special_relative; } timelib_rel_time; typedef struct timelib_time_offset { int32_t offset; unsigned int leap_secs; unsigned int is_dst; char *abbr; timelib_sll transistion_time; } timelib_time_offset; typedef struct timelib_time { timelib_sll y, m, d; /* Year, Month, Day */ timelib_sll h, i, s; /* Hour, mInute, Second */ double f; /* Fraction */ int z; /* GMT offset in minutes */ char *tz_abbr; /* Timezone abbreviation (display only) */ timelib_tzinfo *tz_info; /* Timezone structure */ signed int dst; /* Flag if we were parsing a DST zone */ timelib_rel_time relative; timelib_sll sse; /* Seconds since epoch */ unsigned int have_time, have_date, have_zone, have_relative, have_weeknr_day; unsigned int sse_uptodate; /* !0 if the sse member is up to date with the date/time members */ unsigned int tim_uptodate; /* !0 if the date/time members are up to date with the sse member */ unsigned int is_localtime; /* 1 if the current struct represents localtime, 0 if it is in GMT */ unsigned int zone_type; /* 1 time offset, * 3 TimeZone identifier, * 2 TimeZone abbreviation */ } timelib_time; typedef struct timelib_error_message { int position; char character; char *message; } timelib_error_message; typedef struct timelib_error_container { int warning_count; struct timelib_error_message *warning_messages; int error_count; struct timelib_error_message *error_messages; } timelib_error_container; typedef struct _timelib_tz_lookup_table { char *name; int type; float gmtoffset; char *full_tz_name; } timelib_tz_lookup_table; typedef struct _timelib_tzdb_index_entry { char *id; unsigned int pos; } timelib_tzdb_index_entry; typedef struct _timelib_tzdb { char *version; int index_size; const timelib_tzdb_index_entry *index; const unsigned char *data; } timelib_tzdb; #define TIMELIB_ZONETYPE_OFFSET 1 #define TIMELIB_ZONETYPE_ABBR 2 #define TIMELIB_ZONETYPE_ID 3 #define SECS_PER_ERA TIMELIB_LL_CONST(12622780800) #define SECS_PER_DAY 86400 #define DAYS_PER_YEAR 365 #define DAYS_PER_LYEAR 366 /* 400*365 days + 97 leap days */ #define DAYS_PER_LYEAR_PERIOD 146097 #define YEARS_PER_LYEAR_PERIOD 400 #define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) #define TIMELIB_DEBUG(s) if (0) { s } #endif 070701000af212000041ed0000000000000000000000034dc2238c00000000000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/php/ext/sqlite3070701000af213000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/ext/sqlite3/libsqlite070701000af214000081a40000000000000000000000014dc0f4db00048164000000b500010002ffffffffffffffff0000003b00000000root/usr/local/include/php/ext/sqlite3/libsqlite/sqlite3.h/* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This header file defines the interface that the SQLite library ** presents to client programs. If a C-function, structure, datatype, ** or constant definition does not appear in this file, then it is ** not a published API of SQLite, is subject to change without ** notice, and should not be referenced by programs that use SQLite. ** ** Some of the definitions that are in this file are marked as ** "experimental". Experimental interfaces are normally new ** features recently added to SQLite. We do not anticipate changes ** to experimental interfaces but reserve the right to make minor changes ** if experience from use "in the wild" suggest such changes are prudent. ** ** The official C-language API documentation for SQLite is derived ** from comments in this file. This file is the authoritative source ** on how SQLite interfaces are suppose to operate. ** ** The name of this file under configuration management is "sqlite.h.in". ** The makefile makes some minor changes to this file (such as inserting ** the version number) and changes its name to "sqlite3.h" as ** part of the build process. */ #ifndef _SQLITE3_H_ #define _SQLITE3_H_ #include /* Needed for the definition of va_list */ /* ** Make sure we can call this stuff from C++. */ #ifdef __cplusplus extern "C" { #endif /* ** Add the ability to override 'extern' */ #ifndef SQLITE_EXTERN # define SQLITE_EXTERN extern #endif #ifndef SQLITE_API # define SQLITE_API #endif /* ** These no-op macros are used in front of interfaces to mark those ** interfaces as either deprecated or experimental. New applications ** should not use deprecated interfaces - they are support for backwards ** compatibility only. Application writers should be aware that ** experimental interfaces are subject to change in point releases. ** ** These macros used to resolve to various kinds of compiler magic that ** would generate warning messages when they were used. But that ** compiler magic ended up generating such a flurry of bug reports ** that we have taken it all out and gone back to using simple ** noop macros. */ #define SQLITE_DEPRECATED #define SQLITE_EXPERIMENTAL /* ** Ensure these symbols were not defined by some previous header file. */ #ifdef SQLITE_VERSION # undef SQLITE_VERSION #endif #ifdef SQLITE_VERSION_NUMBER # undef SQLITE_VERSION_NUMBER #endif /* ** CAPI3REF: Compile-Time Library Version Numbers ** ** ^(The [SQLITE_VERSION] C preprocessor macro in the sqlite3.h header ** evaluates to a string literal that is the SQLite version in the ** format "X.Y.Z" where X is the major version number (always 3 for ** SQLite3) and Y is the minor version number and Z is the release number.)^ ** ^(The [SQLITE_VERSION_NUMBER] C preprocessor macro resolves to an integer ** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z are the same ** numbers used in [SQLITE_VERSION].)^ ** The SQLITE_VERSION_NUMBER for any given release of SQLite will also ** be larger than the release from which it is derived. Either Y will ** be held constant and Z will be incremented or else Y will be incremented ** and Z will be reset to zero. ** ** Since version 3.6.18, SQLite source code has been stored in the ** Fossil configuration management ** system. ^The SQLITE_SOURCE_ID macro evaluates to ** a string which identifies a particular check-in of SQLite ** within its configuration management system. ^The SQLITE_SOURCE_ID ** string contains the date and time of the check-in (UTC) and an SHA1 ** hash of the entire source tree. ** ** See also: [sqlite3_libversion()], ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ #define SQLITE_VERSION "3.7.4" #define SQLITE_VERSION_NUMBER 3007004 #define SQLITE_SOURCE_ID "2010-12-07 20:14:09 a586a4deeb25330037a49df295b36aaf624d0f45" /* ** CAPI3REF: Run-Time Library Version Numbers ** KEYWORDS: sqlite3_version, sqlite3_sourceid ** ** These interfaces provide the same information as the [SQLITE_VERSION], ** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros ** but are associated with the library instead of the header file. ^(Cautious ** programmers might include assert() statements in their application to ** verify that values returned by these interfaces match the macros in ** the header, and thus insure that the application is ** compiled with matching library and header files. ** **
** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
** assert( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)==0 );
** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
** 
)^ ** ** ^The sqlite3_version[] string constant contains the text of [SQLITE_VERSION] ** macro. ^The sqlite3_libversion() function returns a pointer to the ** to the sqlite3_version[] string constant. The sqlite3_libversion() ** function is provided for use in DLLs since DLL users usually do not have ** direct access to string constants within the DLL. ^The ** sqlite3_libversion_number() function returns an integer equal to ** [SQLITE_VERSION_NUMBER]. ^The sqlite3_sourceid() function returns ** a pointer to a string constant whose value is the same as the ** [SQLITE_SOURCE_ID] C preprocessor macro. ** ** See also: [sqlite_version()] and [sqlite_source_id()]. */ SQLITE_API SQLITE_EXTERN const char sqlite3_version[]; SQLITE_API const char *sqlite3_libversion(void); SQLITE_API const char *sqlite3_sourceid(void); SQLITE_API int sqlite3_libversion_number(void); /* ** CAPI3REF: Run-Time Library Compilation Options Diagnostics ** ** ^The sqlite3_compileoption_used() function returns 0 or 1 ** indicating whether the specified option was defined at ** compile time. ^The SQLITE_ prefix may be omitted from the ** option name passed to sqlite3_compileoption_used(). ** ** ^The sqlite3_compileoption_get() function allows iterating ** over the list of options that were defined at compile time by ** returning the N-th compile time option string. ^If N is out of range, ** sqlite3_compileoption_get() returns a NULL pointer. ^The SQLITE_ ** prefix is omitted from any strings returned by ** sqlite3_compileoption_get(). ** ** ^Support for the diagnostic functions sqlite3_compileoption_used() ** and sqlite3_compileoption_get() may be omitted by specifying the ** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time. ** ** See also: SQL functions [sqlite_compileoption_used()] and ** [sqlite_compileoption_get()] and the [compile_options pragma]. */ #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS SQLITE_API int sqlite3_compileoption_used(const char *zOptName); SQLITE_API const char *sqlite3_compileoption_get(int N); #endif /* ** CAPI3REF: Test To See If The Library Is Threadsafe ** ** ^The sqlite3_threadsafe() function returns zero if and only if ** SQLite was compiled mutexing code omitted due to the ** [SQLITE_THREADSAFE] compile-time option being set to 0. ** ** SQLite can be compiled with or without mutexes. When ** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes ** are enabled and SQLite is threadsafe. When the ** [SQLITE_THREADSAFE] macro is 0, ** the mutexes are omitted. Without the mutexes, it is not safe ** to use SQLite concurrently from more than one thread. ** ** Enabling mutexes incurs a measurable performance penalty. ** So if speed is of utmost importance, it makes sense to disable ** the mutexes. But for maximum safety, mutexes should be enabled. ** ^The default behavior is for mutexes to be enabled. ** ** This interface can be used by an application to make sure that the ** version of SQLite that it is linking against was compiled with ** the desired setting of the [SQLITE_THREADSAFE] macro. ** ** This interface only reports on the compile-time mutex setting ** of the [SQLITE_THREADSAFE] flag. If SQLite is compiled with ** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but ** can be fully or partially disabled using a call to [sqlite3_config()] ** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD], ** or [SQLITE_CONFIG_MUTEX]. ^(The return value of the ** sqlite3_threadsafe() function shows only the compile-time setting of ** thread safety, not any run-time changes to that setting made by ** sqlite3_config(). In other words, the return value from sqlite3_threadsafe() ** is unchanged by calls to sqlite3_config().)^ ** ** See the [threading mode] documentation for additional information. */ SQLITE_API int sqlite3_threadsafe(void); /* ** CAPI3REF: Database Connection Handle ** KEYWORDS: {database connection} {database connections} ** ** Each open SQLite database is represented by a pointer to an instance of ** the opaque structure named "sqlite3". It is useful to think of an sqlite3 ** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and ** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()] ** is its destructor. There are many other interfaces (such as ** [sqlite3_prepare_v2()], [sqlite3_create_function()], and ** [sqlite3_busy_timeout()] to name but three) that are methods on an ** sqlite3 object. */ typedef struct sqlite3 sqlite3; /* ** CAPI3REF: 64-Bit Integer Types ** KEYWORDS: sqlite_int64 sqlite_uint64 ** ** Because there is no cross-platform way to specify 64-bit integer types ** SQLite includes typedefs for 64-bit signed and unsigned integers. ** ** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions. ** The sqlite_int64 and sqlite_uint64 types are supported for backwards ** compatibility only. ** ** ^The sqlite3_int64 and sqlite_int64 types can store integer values ** between -9223372036854775808 and +9223372036854775807 inclusive. ^The ** sqlite3_uint64 and sqlite_uint64 types can store integer values ** between 0 and +18446744073709551615 inclusive. */ #ifdef SQLITE_INT64_TYPE typedef SQLITE_INT64_TYPE sqlite_int64; typedef unsigned SQLITE_INT64_TYPE sqlite_uint64; #elif defined(_MSC_VER) || defined(__BORLANDC__) typedef __int64 sqlite_int64; typedef unsigned __int64 sqlite_uint64; #else typedef long long int sqlite_int64; typedef unsigned long long int sqlite_uint64; #endif typedef sqlite_int64 sqlite3_int64; typedef sqlite_uint64 sqlite3_uint64; /* ** If compiling for a processor that lacks floating point support, ** substitute integer for floating-point. */ #ifdef SQLITE_OMIT_FLOATING_POINT # define double sqlite3_int64 #endif /* ** CAPI3REF: Closing A Database Connection ** ** ^The sqlite3_close() routine is the destructor for the [sqlite3] object. ** ^Calls to sqlite3_close() return SQLITE_OK if the [sqlite3] object is ** successfully destroyed and all associated resources are deallocated. ** ** Applications must [sqlite3_finalize | finalize] all [prepared statements] ** and [sqlite3_blob_close | close] all [BLOB handles] associated with ** the [sqlite3] object prior to attempting to close the object. ^If ** sqlite3_close() is called on a [database connection] that still has ** outstanding [prepared statements] or [BLOB handles], then it returns ** SQLITE_BUSY. ** ** ^If [sqlite3_close()] is invoked while a transaction is open, ** the transaction is automatically rolled back. ** ** The C parameter to [sqlite3_close(C)] must be either a NULL ** pointer or an [sqlite3] object pointer obtained ** from [sqlite3_open()], [sqlite3_open16()], or ** [sqlite3_open_v2()], and not previously closed. ** ^Calling sqlite3_close() with a NULL pointer argument is a ** harmless no-op. */ SQLITE_API int sqlite3_close(sqlite3 *); /* ** The type for a callback function. ** This is legacy and deprecated. It is included for historical ** compatibility and is not documented. */ typedef int (*sqlite3_callback)(void*,int,char**, char**); /* ** CAPI3REF: One-Step Query Execution Interface ** ** The sqlite3_exec() interface is a convenience wrapper around ** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()], ** that allows an application to run multiple statements of SQL ** without having to use a lot of C code. ** ** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded, ** semicolon-separate SQL statements passed into its 2nd argument, ** in the context of the [database connection] passed in as its 1st ** argument. ^If the callback function of the 3rd argument to ** sqlite3_exec() is not NULL, then it is invoked for each result row ** coming out of the evaluated SQL statements. ^The 4th argument to ** to sqlite3_exec() is relayed through to the 1st argument of each ** callback invocation. ^If the callback pointer to sqlite3_exec() ** is NULL, then no callback is ever invoked and result rows are ** ignored. ** ** ^If an error occurs while evaluating the SQL statements passed into ** sqlite3_exec(), then execution of the current statement stops and ** subsequent statements are skipped. ^If the 5th parameter to sqlite3_exec() ** is not NULL then any error message is written into memory obtained ** from [sqlite3_malloc()] and passed back through the 5th parameter. ** To avoid memory leaks, the application should invoke [sqlite3_free()] ** on error message strings returned through the 5th parameter of ** of sqlite3_exec() after the error message string is no longer needed. ** ^If the 5th parameter to sqlite3_exec() is not NULL and no errors ** occur, then sqlite3_exec() sets the pointer in its 5th parameter to ** NULL before returning. ** ** ^If an sqlite3_exec() callback returns non-zero, the sqlite3_exec() ** routine returns SQLITE_ABORT without invoking the callback again and ** without running any subsequent SQL statements. ** ** ^The 2nd argument to the sqlite3_exec() callback function is the ** number of columns in the result. ^The 3rd argument to the sqlite3_exec() ** callback is an array of pointers to strings obtained as if from ** [sqlite3_column_text()], one for each column. ^If an element of a ** result row is NULL then the corresponding string pointer for the ** sqlite3_exec() callback is a NULL pointer. ^The 4th argument to the ** sqlite3_exec() callback is an array of pointers to strings where each ** entry represents the name of corresponding result column as obtained ** from [sqlite3_column_name()]. ** ** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer ** to an empty string, or a pointer that contains only whitespace and/or ** SQL comments, then no SQL statements are evaluated and the database ** is not changed. ** ** Restrictions: ** **
    **
  • The application must insure that the 1st parameter to sqlite3_exec() ** is a valid and open [database connection]. **
  • The application must not close [database connection] specified by ** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running. **
  • The application must not modify the SQL statement text passed into ** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running. **
*/ SQLITE_API int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluated */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ ); /* ** CAPI3REF: Result Codes ** KEYWORDS: SQLITE_OK {error code} {error codes} ** KEYWORDS: {result code} {result codes} ** ** Many SQLite functions return an integer result code from the set shown ** here in order to indicates success or failure. ** ** New error codes may be added in future versions of SQLite. ** ** See also: [SQLITE_IOERR_READ | extended result codes] */ #define SQLITE_OK 0 /* Successful result */ /* beginning-of-error-codes */ #define SQLITE_ERROR 1 /* SQL error or missing database */ #define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */ #define SQLITE_PERM 3 /* Access permission denied */ #define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* The database file is locked */ #define SQLITE_LOCKED 6 /* A table in the database is locked */ #define SQLITE_NOMEM 7 /* A malloc() failed */ #define SQLITE_READONLY 8 /* Attempt to write a readonly database */ #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/ #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11 /* The database disk image is malformed */ #define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */ #define SQLITE_FULL 13 /* Insertion failed because database is full */ #define SQLITE_CANTOPEN 14 /* Unable to open the database file */ #define SQLITE_PROTOCOL 15 /* Database lock protocol error */ #define SQLITE_EMPTY 16 /* Database is empty */ #define SQLITE_SCHEMA 17 /* The database schema changed */ #define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */ #define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */ #define SQLITE_MISMATCH 20 /* Data type mismatch */ #define SQLITE_MISUSE 21 /* Library used incorrectly */ #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ #define SQLITE_AUTH 23 /* Authorization denied */ #define SQLITE_FORMAT 24 /* Auxiliary database format error */ #define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */ #define SQLITE_NOTADB 26 /* File opened that is not a database file */ #define SQLITE_ROW 100 /* sqlite3_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite3_step() has finished executing */ /* end-of-error-codes */ /* ** CAPI3REF: Extended Result Codes ** KEYWORDS: {extended error code} {extended error codes} ** KEYWORDS: {extended result code} {extended result codes} ** ** In its default configuration, SQLite API routines return one of 26 integer ** [SQLITE_OK | result codes]. However, experience has shown that many of ** these result codes are too coarse-grained. They do not provide as ** much information about problems as programmers might like. In an effort to ** address this, newer versions of SQLite (version 3.3.8 and later) include ** support for additional result codes that provide more detailed information ** about errors. The extended result codes are enabled or disabled ** on a per database connection basis using the ** [sqlite3_extended_result_codes()] API. ** ** Some of the available extended result codes are listed here. ** One may expect the number of extended result codes will be expand ** over time. Software that uses extended result codes should expect ** to see new result codes in future releases of SQLite. ** ** The SQLITE_OK result code will never be extended. It will always ** be exactly zero. */ #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) #define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) #define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8)) #define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8)) #define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8)) #define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8)) #define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8)) #define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8)) #define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8)) #define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8)) #define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8)) #define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8)) #define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8)) #define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8)) #define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8)) #define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8)) #define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18<<8)) #define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8)) #define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8)) #define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8)) #define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8)) #define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8)) /* ** CAPI3REF: Flags For File Open Operations ** ** These bit values are intended for use in the ** 3rd parameter to the [sqlite3_open_v2()] interface and ** in the 4th parameter to the xOpen method of the ** [sqlite3_vfs] object. */ #define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */ #define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */ #define SQLITE_OPEN_AUTOPROXY 0x00000020 /* VFS only */ #define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */ #define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */ #define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */ #define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */ #define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */ #define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */ #define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ #define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ /* ** CAPI3REF: Device Characteristics ** ** The xDeviceCharacteristics method of the [sqlite3_io_methods] ** object returns an integer which is a vector of the these ** bit values expressing I/O characteristics of the mass storage ** device that holds the file that the [sqlite3_io_methods] ** refers to. ** ** The SQLITE_IOCAP_ATOMIC property means that all writes of ** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values ** mean that writes of blocks that are nnn bytes in size and ** are aligned to an address which is an integer multiple of ** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means ** that when data is appended to a file, the data is appended ** first then the size of the file is extended, never the other ** way around. The SQLITE_IOCAP_SEQUENTIAL property means that ** information is written to disk in the same order as calls ** to xWrite(). */ #define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 #define SQLITE_IOCAP_ATOMIC4K 0x00000010 #define SQLITE_IOCAP_ATOMIC8K 0x00000020 #define SQLITE_IOCAP_ATOMIC16K 0x00000040 #define SQLITE_IOCAP_ATOMIC32K 0x00000080 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 /* ** CAPI3REF: File Locking Levels ** ** SQLite uses one of these integer values as the second ** argument to calls it makes to the xLock() and xUnlock() methods ** of an [sqlite3_io_methods] object. */ #define SQLITE_LOCK_NONE 0 #define SQLITE_LOCK_SHARED 1 #define SQLITE_LOCK_RESERVED 2 #define SQLITE_LOCK_PENDING 3 #define SQLITE_LOCK_EXCLUSIVE 4 /* ** CAPI3REF: Synchronization Type Flags ** ** When SQLite invokes the xSync() method of an ** [sqlite3_io_methods] object it uses a combination of ** these integer values as the second argument. ** ** When the SQLITE_SYNC_DATAONLY flag is used, it means that the ** sync operation only needs to flush data to mass storage. Inode ** information need not be flushed. If the lower four bits of the flag ** equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics. ** If the lower four bits equal SQLITE_SYNC_FULL, that means ** to use Mac OS X style fullsync instead of fsync(). ** ** Do not confuse the SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags ** with the [PRAGMA synchronous]=NORMAL and [PRAGMA synchronous]=FULL ** settings. The [synchronous pragma] determines when calls to the ** xSync VFS method occur and applies uniformly across all platforms. ** The SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags determine how ** energetic or rigorous or forceful the sync operations are and ** only make a difference on Mac OSX for the default SQLite code. ** (Third-party VFS implementations might also make the distinction ** between SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL, but among the ** operating systems natively supported by SQLite, only Mac OSX ** cares about the difference.) */ #define SQLITE_SYNC_NORMAL 0x00002 #define SQLITE_SYNC_FULL 0x00003 #define SQLITE_SYNC_DATAONLY 0x00010 /* ** CAPI3REF: OS Interface Open File Handle ** ** An [sqlite3_file] object represents an open file in the ** [sqlite3_vfs | OS interface layer]. Individual OS interface ** implementations will ** want to subclass this object by appending additional fields ** for their own use. The pMethods entry is a pointer to an ** [sqlite3_io_methods] object that defines methods for performing ** I/O operations on the open file. */ typedef struct sqlite3_file sqlite3_file; struct sqlite3_file { const struct sqlite3_io_methods *pMethods; /* Methods for an open file */ }; /* ** CAPI3REF: OS Interface File Virtual Methods Object ** ** Every file opened by the [sqlite3_vfs] xOpen method populates an ** [sqlite3_file] object (or, more commonly, a subclass of the ** [sqlite3_file] object) with a pointer to an instance of this object. ** This object defines the methods used to perform various operations ** against the open file represented by the [sqlite3_file] object. ** ** If the xOpen method sets the sqlite3_file.pMethods element ** to a non-NULL pointer, then the sqlite3_io_methods.xClose method ** may be invoked even if the xOpen reported that it failed. The ** only way to prevent a call to xClose following a failed xOpen ** is for the xOpen to set the sqlite3_file.pMethods element to NULL. ** ** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or ** [SQLITE_SYNC_FULL]. The first choice is the normal fsync(). ** The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY] ** flag may be ORed in to indicate that only the data of the file ** and not its inode needs to be synced. ** ** The integer values to xLock() and xUnlock() are one of **
    **
  • [SQLITE_LOCK_NONE], **
  • [SQLITE_LOCK_SHARED], **
  • [SQLITE_LOCK_RESERVED], **
  • [SQLITE_LOCK_PENDING], or **
  • [SQLITE_LOCK_EXCLUSIVE]. **
** xLock() increases the lock. xUnlock() decreases the lock. ** The xCheckReservedLock() method checks whether any database connection, ** either in this process or in some other process, is holding a RESERVED, ** PENDING, or EXCLUSIVE lock on the file. It returns true ** if such a lock exists and false otherwise. ** ** The xFileControl() method is a generic interface that allows custom ** VFS implementations to directly control an open file using the ** [sqlite3_file_control()] interface. The second "op" argument is an ** integer opcode. The third argument is a generic pointer intended to ** point to a structure that may contain arguments or space in which to ** write return values. Potential uses for xFileControl() might be ** functions to enable blocking locks with timeouts, to change the ** locking strategy (for example to use dot-file locks), to inquire ** about the status of a lock, or to break stale locks. The SQLite ** core reserves all opcodes less than 100 for its own use. ** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available. ** Applications that define a custom xFileControl method should use opcodes ** greater than 100 to avoid conflicts. ** ** The xSectorSize() method returns the sector size of the ** device that underlies the file. The sector size is the ** minimum write that can be performed without disturbing ** other bytes in the file. The xDeviceCharacteristics() ** method returns a bit vector describing behaviors of the ** underlying device: ** **
    **
  • [SQLITE_IOCAP_ATOMIC] **
  • [SQLITE_IOCAP_ATOMIC512] **
  • [SQLITE_IOCAP_ATOMIC1K] **
  • [SQLITE_IOCAP_ATOMIC2K] **
  • [SQLITE_IOCAP_ATOMIC4K] **
  • [SQLITE_IOCAP_ATOMIC8K] **
  • [SQLITE_IOCAP_ATOMIC16K] **
  • [SQLITE_IOCAP_ATOMIC32K] **
  • [SQLITE_IOCAP_ATOMIC64K] **
  • [SQLITE_IOCAP_SAFE_APPEND] **
  • [SQLITE_IOCAP_SEQUENTIAL] **
** ** The SQLITE_IOCAP_ATOMIC property means that all writes of ** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values ** mean that writes of blocks that are nnn bytes in size and ** are aligned to an address which is an integer multiple of ** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means ** that when data is appended to a file, the data is appended ** first then the size of the file is extended, never the other ** way around. The SQLITE_IOCAP_SEQUENTIAL property means that ** information is written to disk in the same order as calls ** to xWrite(). ** ** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill ** in the unread portions of the buffer with zeros. A VFS that ** fails to zero-fill short reads might seem to work. However, ** failure to zero-fill short reads will eventually lead to ** database corruption. */ typedef struct sqlite3_io_methods sqlite3_io_methods; struct sqlite3_io_methods { int iVersion; int (*xClose)(sqlite3_file*); int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst); int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst); int (*xTruncate)(sqlite3_file*, sqlite3_int64 size); int (*xSync)(sqlite3_file*, int flags); int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize); int (*xLock)(sqlite3_file*, int); int (*xUnlock)(sqlite3_file*, int); int (*xCheckReservedLock)(sqlite3_file*, int *pResOut); int (*xFileControl)(sqlite3_file*, int op, void *pArg); int (*xSectorSize)(sqlite3_file*); int (*xDeviceCharacteristics)(sqlite3_file*); /* Methods above are valid for version 1 */ int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**); int (*xShmLock)(sqlite3_file*, int offset, int n, int flags); void (*xShmBarrier)(sqlite3_file*); int (*xShmUnmap)(sqlite3_file*, int deleteFlag); /* Methods above are valid for version 2 */ /* Additional methods may be added in future releases */ }; /* ** CAPI3REF: Standard File Control Opcodes ** ** These integer constants are opcodes for the xFileControl method ** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()] ** interface. ** ** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging. This ** opcode causes the xFileControl method to write the current state of ** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED], ** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE]) ** into an integer that the pArg argument points to. This capability ** is used during testing and only needs to be supported when SQLITE_TEST ** is defined. ** ** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS ** layer a hint of how large the database file will grow to be during the ** current transaction. This hint is not guaranteed to be accurate but it ** is often close. The underlying VFS might choose to preallocate database ** file space based on this hint in order to help writes to the database ** file run faster. ** ** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS ** extends and truncates the database file in chunks of a size specified ** by the user. The fourth argument to [sqlite3_file_control()] should ** point to an integer (type int) containing the new chunk-size to use ** for the nominated database. Allocating database file space in large ** chunks (say 1MB at a time), may reduce file-system fragmentation and ** improve performance on some systems. */ #define SQLITE_FCNTL_LOCKSTATE 1 #define SQLITE_GET_LOCKPROXYFILE 2 #define SQLITE_SET_LOCKPROXYFILE 3 #define SQLITE_LAST_ERRNO 4 #define SQLITE_FCNTL_SIZE_HINT 5 #define SQLITE_FCNTL_CHUNK_SIZE 6 #define SQLITE_FCNTL_FILE_POINTER 7 /* ** CAPI3REF: Mutex Handle ** ** The mutex module within SQLite defines [sqlite3_mutex] to be an ** abstract type for a mutex object. The SQLite core never looks ** at the internal representation of an [sqlite3_mutex]. It only ** deals with pointers to the [sqlite3_mutex] object. ** ** Mutexes are created using [sqlite3_mutex_alloc()]. */ typedef struct sqlite3_mutex sqlite3_mutex; /* ** CAPI3REF: OS Interface Object ** ** An instance of the sqlite3_vfs object defines the interface between ** the SQLite core and the underlying operating system. The "vfs" ** in the name of the object stands for "virtual file system". ** ** The value of the iVersion field is initially 1 but may be larger in ** future versions of SQLite. Additional fields may be appended to this ** object when the iVersion value is increased. Note that the structure ** of the sqlite3_vfs object changes in the transaction between ** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not ** modified. ** ** The szOsFile field is the size of the subclassed [sqlite3_file] ** structure used by this VFS. mxPathname is the maximum length of ** a pathname in this VFS. ** ** Registered sqlite3_vfs objects are kept on a linked list formed by ** the pNext pointer. The [sqlite3_vfs_register()] ** and [sqlite3_vfs_unregister()] interfaces manage this list ** in a thread-safe way. The [sqlite3_vfs_find()] interface ** searches the list. Neither the application code nor the VFS ** implementation should use the pNext pointer. ** ** The pNext field is the only field in the sqlite3_vfs ** structure that SQLite will ever modify. SQLite will only access ** or modify this field while holding a particular static mutex. ** The application should never modify anything within the sqlite3_vfs ** object once the object has been registered. ** ** The zName field holds the name of the VFS module. The name must ** be unique across all VFS modules. ** ** ^SQLite guarantees that the zFilename parameter to xOpen ** is either a NULL pointer or string obtained ** from xFullPathname() with an optional suffix added. ** ^If a suffix is added to the zFilename parameter, it will ** consist of a single "-" character followed by no more than ** 10 alphanumeric and/or "-" characters. ** ^SQLite further guarantees that ** the string will be valid and unchanged until xClose() is ** called. Because of the previous sentence, ** the [sqlite3_file] can safely store a pointer to the ** filename if it needs to remember the filename for some reason. ** If the zFilename parameter to xOpen is a NULL pointer then xOpen ** must invent its own temporary name for the file. ^Whenever the ** xFilename parameter is NULL it will also be the case that the ** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE]. ** ** The flags argument to xOpen() includes all bits set in ** the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()] ** or [sqlite3_open16()] is used, then flags includes at least ** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. ** If xOpen() opens a file read-only then it sets *pOutFlags to ** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set. ** ** ^(SQLite will also add one of the following flags to the xOpen() ** call, depending on the object being opened: ** **
    **
  • [SQLITE_OPEN_MAIN_DB] **
  • [SQLITE_OPEN_MAIN_JOURNAL] **
  • [SQLITE_OPEN_TEMP_DB] **
  • [SQLITE_OPEN_TEMP_JOURNAL] **
  • [SQLITE_OPEN_TRANSIENT_DB] **
  • [SQLITE_OPEN_SUBJOURNAL] **
  • [SQLITE_OPEN_MASTER_JOURNAL] **
  • [SQLITE_OPEN_WAL] **
)^ ** ** The file I/O implementation can use the object type flags to ** change the way it deals with files. For example, an application ** that does not care about crash recovery or rollback might make ** the open of a journal file a no-op. Writes to this journal would ** also be no-ops, and any attempt to read the journal would return ** SQLITE_IOERR. Or the implementation might recognize that a database ** file will be doing page-aligned sector reads and writes in a random ** order and set up its I/O subsystem accordingly. ** ** SQLite might also add one of the following flags to the xOpen method: ** **
    **
  • [SQLITE_OPEN_DELETEONCLOSE] **
  • [SQLITE_OPEN_EXCLUSIVE] **
** ** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be ** deleted when it is closed. ^The [SQLITE_OPEN_DELETEONCLOSE] ** will be set for TEMP databases and their journals, transient ** databases, and subjournals. ** ** ^The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction ** with the [SQLITE_OPEN_CREATE] flag, which are both directly ** analogous to the O_EXCL and O_CREAT flags of the POSIX open() ** API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the ** SQLITE_OPEN_CREATE, is used to indicate that file should always ** be created, and that it is an error if it already exists. ** It is not used to indicate the file should be opened ** for exclusive access. ** ** ^At least szOsFile bytes of memory are allocated by SQLite ** to hold the [sqlite3_file] structure passed as the third ** argument to xOpen. The xOpen method does not have to ** allocate the structure; it should just fill it in. Note that ** the xOpen method must set the sqlite3_file.pMethods to either ** a valid [sqlite3_io_methods] object or to NULL. xOpen must do ** this even if the open fails. SQLite expects that the sqlite3_file.pMethods ** element will be valid after xOpen returns regardless of the success ** or failure of the xOpen call. ** ** ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] ** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to ** test whether a file is readable and writable, or [SQLITE_ACCESS_READ] ** to test whether a file is at least readable. The file can be a ** directory. ** ** ^SQLite will always allocate at least mxPathname+1 bytes for the ** output buffer xFullPathname. The exact size of the output buffer ** is also passed as a parameter to both methods. If the output buffer ** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is ** handled as a fatal error by SQLite, vfs implementations should endeavor ** to prevent this by setting mxPathname to a sufficiently large value. ** ** The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64() ** interfaces are not strictly a part of the filesystem, but they are ** included in the VFS structure for completeness. ** The xRandomness() function attempts to return nBytes bytes ** of good-quality randomness into zOut. The return value is ** the actual number of bytes of randomness obtained. ** The xSleep() method causes the calling thread to sleep for at ** least the number of microseconds given. ^The xCurrentTime() ** method returns a Julian Day Number for the current date and time as ** a floating point value. ** ^The xCurrentTimeInt64() method returns, as an integer, the Julian ** Day Number multipled by 86400000 (the number of milliseconds in ** a 24-hour day). ** ^SQLite will use the xCurrentTimeInt64() method to get the current ** date and time if that method is available (if iVersion is 2 or ** greater and the function pointer is not NULL) and will fall back ** to xCurrentTime() if xCurrentTimeInt64() is unavailable. */ typedef struct sqlite3_vfs sqlite3_vfs; struct sqlite3_vfs { int iVersion; /* Structure version number (currently 2) */ int szOsFile; /* Size of subclassed sqlite3_file */ int mxPathname; /* Maximum file pathname length */ sqlite3_vfs *pNext; /* Next registered VFS */ const char *zName; /* Name of this virtual file system */ void *pAppData; /* Pointer to application-specific data */ int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*, int flags, int *pOutFlags); int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir); int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut); int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut); void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename); void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg); void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void); void (*xDlClose)(sqlite3_vfs*, void*); int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut); int (*xSleep)(sqlite3_vfs*, int microseconds); int (*xCurrentTime)(sqlite3_vfs*, double*); int (*xGetLastError)(sqlite3_vfs*, int, char *); /* ** The methods above are in version 1 of the sqlite_vfs object ** definition. Those that follow are added in version 2 or later */ int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*); /* ** The methods above are in versions 1 and 2 of the sqlite_vfs object. ** New fields may be appended in figure versions. The iVersion ** value will increment whenever this happens. */ }; /* ** CAPI3REF: Flags for the xAccess VFS method ** ** These integer constants can be used as the third parameter to ** the xAccess method of an [sqlite3_vfs] object. They determine ** what kind of permissions the xAccess method is looking for. ** With SQLITE_ACCESS_EXISTS, the xAccess method ** simply checks whether the file exists. ** With SQLITE_ACCESS_READWRITE, the xAccess method ** checks whether the named directory is both readable and writable ** (in other words, if files can be added, removed, and renamed within ** the directory). ** The SQLITE_ACCESS_READWRITE constant is currently used only by the ** [temp_store_directory pragma], though this could change in a future ** release of SQLite. ** With SQLITE_ACCESS_READ, the xAccess method ** checks whether the file is readable. The SQLITE_ACCESS_READ constant is ** currently unused, though it might be used in a future release of ** SQLite. */ #define SQLITE_ACCESS_EXISTS 0 #define SQLITE_ACCESS_READWRITE 1 /* Used by PRAGMA temp_store_directory */ #define SQLITE_ACCESS_READ 2 /* Unused */ /* ** CAPI3REF: Flags for the xShmLock VFS method ** ** These integer constants define the various locking operations ** allowed by the xShmLock method of [sqlite3_io_methods]. The ** following are the only legal combinations of flags to the ** xShmLock method: ** **
    **
  • SQLITE_SHM_LOCK | SQLITE_SHM_SHARED **
  • SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE **
  • SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED **
  • SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE **
** ** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as ** was given no the corresponding lock. ** ** The xShmLock method can transition between unlocked and SHARED or ** between unlocked and EXCLUSIVE. It cannot transition between SHARED ** and EXCLUSIVE. */ #define SQLITE_SHM_UNLOCK 1 #define SQLITE_SHM_LOCK 2 #define SQLITE_SHM_SHARED 4 #define SQLITE_SHM_EXCLUSIVE 8 /* ** CAPI3REF: Maximum xShmLock index ** ** The xShmLock method on [sqlite3_io_methods] may use values ** between 0 and this upper bound as its "offset" argument. ** The SQLite core will never attempt to acquire or release a ** lock outside of this range */ #define SQLITE_SHM_NLOCK 8 /* ** CAPI3REF: Initialize The SQLite Library ** ** ^The sqlite3_initialize() routine initializes the ** SQLite library. ^The sqlite3_shutdown() routine ** deallocates any resources that were allocated by sqlite3_initialize(). ** These routines are designed to aid in process initialization and ** shutdown on embedded systems. Workstation applications using ** SQLite normally do not need to invoke either of these routines. ** ** A call to sqlite3_initialize() is an "effective" call if it is ** the first time sqlite3_initialize() is invoked during the lifetime of ** the process, or if it is the first time sqlite3_initialize() is invoked ** following a call to sqlite3_shutdown(). ^(Only an effective call ** of sqlite3_initialize() does any initialization. All other calls ** are harmless no-ops.)^ ** ** A call to sqlite3_shutdown() is an "effective" call if it is the first ** call to sqlite3_shutdown() since the last sqlite3_initialize(). ^(Only ** an effective call to sqlite3_shutdown() does any deinitialization. ** All other valid calls to sqlite3_shutdown() are harmless no-ops.)^ ** ** The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown() ** is not. The sqlite3_shutdown() interface must only be called from a ** single thread. All open [database connections] must be closed and all ** other SQLite resources must be deallocated prior to invoking ** sqlite3_shutdown(). ** ** Among other things, ^sqlite3_initialize() will invoke ** sqlite3_os_init(). Similarly, ^sqlite3_shutdown() ** will invoke sqlite3_os_end(). ** ** ^The sqlite3_initialize() routine returns [SQLITE_OK] on success. ** ^If for some reason, sqlite3_initialize() is unable to initialize ** the library (perhaps it is unable to allocate a needed resource such ** as a mutex) it returns an [error code] other than [SQLITE_OK]. ** ** ^The sqlite3_initialize() routine is called internally by many other ** SQLite interfaces so that an application usually does not need to ** invoke sqlite3_initialize() directly. For example, [sqlite3_open()] ** calls sqlite3_initialize() so the SQLite library will be automatically ** initialized when [sqlite3_open()] is called if it has not be initialized ** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT] ** compile-time option, then the automatic calls to sqlite3_initialize() ** are omitted and the application must call sqlite3_initialize() directly ** prior to using any other SQLite interface. For maximum portability, ** it is recommended that applications always invoke sqlite3_initialize() ** directly prior to using any other SQLite interface. Future releases ** of SQLite may require this. In other words, the behavior exhibited ** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the ** default behavior in some future release of SQLite. ** ** The sqlite3_os_init() routine does operating-system specific ** initialization of the SQLite library. The sqlite3_os_end() ** routine undoes the effect of sqlite3_os_init(). Typical tasks ** performed by these routines include allocation or deallocation ** of static resources, initialization of global variables, ** setting up a default [sqlite3_vfs] module, or setting up ** a default configuration using [sqlite3_config()]. ** ** The application should never invoke either sqlite3_os_init() ** or sqlite3_os_end() directly. The application should only invoke ** sqlite3_initialize() and sqlite3_shutdown(). The sqlite3_os_init() ** interface is called automatically by sqlite3_initialize() and ** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate ** implementations for sqlite3_os_init() and sqlite3_os_end() ** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When [custom builds | built for other platforms] ** (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied ** implementation of sqlite3_os_init() or sqlite3_os_end() ** must return [SQLITE_OK] on success and some other [error code] upon ** failure. */ SQLITE_API int sqlite3_initialize(void); SQLITE_API int sqlite3_shutdown(void); SQLITE_API int sqlite3_os_init(void); SQLITE_API int sqlite3_os_end(void); /* ** CAPI3REF: Configuring The SQLite Library ** ** The sqlite3_config() interface is used to make global configuration ** changes to SQLite in order to tune SQLite to the specific needs of ** the application. The default configuration is recommended for most ** applications and so this routine is usually not necessary. It is ** provided to support rare applications with unusual needs. ** ** The sqlite3_config() interface is not threadsafe. The application ** must insure that no other SQLite interfaces are invoked by other ** threads while sqlite3_config() is running. Furthermore, sqlite3_config() ** may only be invoked prior to library initialization using ** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()]. ** ^If sqlite3_config() is called after [sqlite3_initialize()] and before ** [sqlite3_shutdown()] then it will return SQLITE_MISUSE. ** Note, however, that ^sqlite3_config() can be called as part of the ** implementation of an application-defined [sqlite3_os_init()]. ** ** The first argument to sqlite3_config() is an integer ** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines ** what property of SQLite is to be configured. Subsequent arguments ** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration option] ** in the first argument. ** ** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK]. ** ^If the option is unknown or SQLite is unable to set the option ** then this routine returns a non-zero [error code]. */ SQLITE_API int sqlite3_config(int, ...); /* ** CAPI3REF: Configure database connections ** ** The sqlite3_db_config() interface is used to make configuration ** changes to a [database connection]. The interface is similar to ** [sqlite3_config()] except that the changes apply to a single ** [database connection] (specified in the first argument). The ** sqlite3_db_config() interface should only be used immediately after ** the database connection is created using [sqlite3_open()], ** [sqlite3_open16()], or [sqlite3_open_v2()]. ** ** The second argument to sqlite3_db_config(D,V,...) is the ** configuration verb - an integer code that indicates what ** aspect of the [database connection] is being configured. ** The only choice for this value is [SQLITE_DBCONFIG_LOOKASIDE]. ** New verbs are likely to be added in future releases of SQLite. ** Additional arguments depend on the verb. ** ** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if ** the call is considered successful. */ SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...); /* ** CAPI3REF: Memory Allocation Routines ** ** An instance of this object defines the interface between SQLite ** and low-level memory allocation routines. ** ** This object is used in only one place in the SQLite interface. ** A pointer to an instance of this object is the argument to ** [sqlite3_config()] when the configuration option is ** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC]. ** By creating an instance of this object ** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC]) ** during configuration, an application can specify an alternative ** memory allocation subsystem for SQLite to use for all of its ** dynamic memory needs. ** ** Note that SQLite comes with several [built-in memory allocators] ** that are perfectly adequate for the overwhelming majority of applications ** and that this object is only useful to a tiny minority of applications ** with specialized memory allocation requirements. This object is ** also used during testing of SQLite in order to specify an alternative ** memory allocator that simulates memory out-of-memory conditions in ** order to verify that SQLite recovers gracefully from such ** conditions. ** ** The xMalloc and xFree methods must work like the ** malloc() and free() functions from the standard C library. ** The xRealloc method must work like realloc() from the standard C library ** with the exception that if the second argument to xRealloc is zero, ** xRealloc must be a no-op - it must not perform any allocation or ** deallocation. ^SQLite guarantees that the second argument to ** xRealloc is always a value returned by a prior call to xRoundup. ** And so in cases where xRoundup always returns a positive number, ** xRealloc can perform exactly as the standard library realloc() and ** still be in compliance with this specification. ** ** xSize should return the allocated size of a memory allocation ** previously obtained from xMalloc or xRealloc. The allocated size ** is always at least as big as the requested size but may be larger. ** ** The xRoundup method returns what would be the allocated size of ** a memory allocation given a particular requested size. Most memory ** allocators round up memory allocations at least to the next multiple ** of 8. Some allocators round up to a larger multiple or to a power of 2. ** Every memory allocation request coming in through [sqlite3_malloc()] ** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, ** that causes the corresponding memory allocation to fail. ** ** The xInit method initializes the memory allocator. (For example, ** it might allocate any require mutexes or initialize internal data ** structures. The xShutdown method is invoked (indirectly) by ** [sqlite3_shutdown()] and should deallocate any resources acquired ** by xInit. The pAppData pointer is used as the only parameter to ** xInit and xShutdown. ** ** SQLite holds the [SQLITE_MUTEX_STATIC_MASTER] mutex when it invokes ** the xInit method, so the xInit method need not be threadsafe. The ** xShutdown method is only called from [sqlite3_shutdown()] so it does ** not need to be threadsafe either. For all other methods, SQLite ** holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the ** [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which ** it is by default) and so the methods are automatically serialized. ** However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other ** methods must be threadsafe or else make their own arrangements for ** serialization. ** ** SQLite will never invoke xInit() more than once without an intervening ** call to xShutdown(). */ typedef struct sqlite3_mem_methods sqlite3_mem_methods; struct sqlite3_mem_methods { void *(*xMalloc)(int); /* Memory allocation function */ void (*xFree)(void*); /* Free a prior allocation */ void *(*xRealloc)(void*,int); /* Resize an allocation */ int (*xSize)(void*); /* Return the size of an allocation */ int (*xRoundup)(int); /* Round up request size to allocation size */ int (*xInit)(void*); /* Initialize the memory allocator */ void (*xShutdown)(void*); /* Deinitialize the memory allocator */ void *pAppData; /* Argument to xInit() and xShutdown() */ }; /* ** CAPI3REF: Configuration Options ** ** These constants are the available integer configuration options that ** can be passed as the first argument to the [sqlite3_config()] interface. ** ** New configuration options may be added in future releases of SQLite. ** Existing configuration options might be discontinued. Applications ** should check the return code from [sqlite3_config()] to make sure that ** the call worked. The [sqlite3_config()] interface will return a ** non-zero [error code] if a discontinued or unsupported configuration option ** is invoked. ** **
**
SQLITE_CONFIG_SINGLETHREAD
**
There are no arguments to this option. ^This option sets the ** [threading mode] to Single-thread. In other words, it disables ** all mutexing and puts SQLite into a mode where it can only be used ** by a single thread. ^If SQLite is compiled with ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then ** it is not possible to change the [threading mode] from its default ** value of Single-thread and so [sqlite3_config()] will return ** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD ** configuration option.
** **
SQLITE_CONFIG_MULTITHREAD
**
There are no arguments to this option. ^This option sets the ** [threading mode] to Multi-thread. In other words, it disables ** mutexing on [database connection] and [prepared statement] objects. ** The application is responsible for serializing access to ** [database connections] and [prepared statements]. But other mutexes ** are enabled so that SQLite will be safe to use in a multi-threaded ** environment as long as no two threads attempt to use the same ** [database connection] at the same time. ^If SQLite is compiled with ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then ** it is not possible to set the Multi-thread [threading mode] and ** [sqlite3_config()] will return [SQLITE_ERROR] if called with the ** SQLITE_CONFIG_MULTITHREAD configuration option.
** **
SQLITE_CONFIG_SERIALIZED
**
There are no arguments to this option. ^This option sets the ** [threading mode] to Serialized. In other words, this option enables ** all mutexes including the recursive ** mutexes on [database connection] and [prepared statement] objects. ** In this mode (which is the default when SQLite is compiled with ** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access ** to [database connections] and [prepared statements] so that the ** application is free to use the same [database connection] or the ** same [prepared statement] in different threads at the same time. ** ^If SQLite is compiled with ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then ** it is not possible to set the Serialized [threading mode] and ** [sqlite3_config()] will return [SQLITE_ERROR] if called with the ** SQLITE_CONFIG_SERIALIZED configuration option.
** **
SQLITE_CONFIG_MALLOC
**
^(This option takes a single argument which is a pointer to an ** instance of the [sqlite3_mem_methods] structure. The argument specifies ** alternative low-level memory allocation routines to be used in place of ** the memory allocation routines built into SQLite.)^ ^SQLite makes ** its own private copy of the content of the [sqlite3_mem_methods] structure ** before the [sqlite3_config()] call returns.
** **
SQLITE_CONFIG_GETMALLOC
**
^(This option takes a single argument which is a pointer to an ** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods] ** structure is filled with the currently defined memory allocation routines.)^ ** This option can be used to overload the default memory allocation ** routines with a wrapper that simulations memory allocation failure or ** tracks memory usage, for example.
** **
SQLITE_CONFIG_MEMSTATUS
**
^This option takes single argument of type int, interpreted as a ** boolean, which enables or disables the collection of memory allocation ** statistics. ^(When memory allocation statistics are disabled, the ** following SQLite interfaces become non-operational: **
    **
  • [sqlite3_memory_used()] **
  • [sqlite3_memory_highwater()] **
  • [sqlite3_soft_heap_limit64()] **
  • [sqlite3_status()] **
)^ ** ^Memory allocation statistics are enabled by default unless SQLite is ** compiled with [SQLITE_DEFAULT_MEMSTATUS]=0 in which case memory ** allocation statistics are disabled by default. **
** **
SQLITE_CONFIG_SCRATCH
**
^This option specifies a static memory buffer that SQLite can use for ** scratch memory. There are three arguments: A pointer an 8-byte ** aligned memory buffer from which the scrach allocations will be ** drawn, the size of each scratch allocation (sz), ** and the maximum number of scratch allocations (N). The sz ** argument must be a multiple of 16. ** The first argument must be a pointer to an 8-byte aligned buffer ** of at least sz*N bytes of memory. ** ^SQLite will use no more than two scratch buffers per thread. So ** N should be set to twice the expected maximum number of threads. ** ^SQLite will never require a scratch buffer that is more than 6 ** times the database page size. ^If SQLite needs needs additional ** scratch memory beyond what is provided by this configuration option, then ** [sqlite3_malloc()] will be used to obtain the memory needed.
** **
SQLITE_CONFIG_PAGECACHE
**
^This option specifies a static memory buffer that SQLite can use for ** the database page cache with the default page cache implemenation. ** This configuration should not be used if an application-define page ** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option. ** There are three arguments to this option: A pointer to 8-byte aligned ** memory, the size of each page buffer (sz), and the number of pages (N). ** The sz argument should be the size of the largest database page ** (a power of two between 512 and 32768) plus a little extra for each ** page header. ^The page header size is 20 to 40 bytes depending on ** the host architecture. ^It is harmless, apart from the wasted memory, ** to make sz a little too large. The first ** argument should point to an allocation of at least sz*N bytes of memory. ** ^SQLite will use the memory provided by the first argument to satisfy its ** memory needs for the first N pages that it adds to cache. ^If additional ** page cache memory is needed beyond what is provided by this option, then ** SQLite goes to [sqlite3_malloc()] for the additional storage space. ** The pointer in the first argument must ** be aligned to an 8-byte boundary or subsequent behavior of SQLite ** will be undefined.
** **
SQLITE_CONFIG_HEAP
**
^This option specifies a static memory buffer that SQLite will use ** for all of its dynamic memory allocation needs beyond those provided ** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE]. ** There are three arguments: An 8-byte aligned pointer to the memory, ** the number of bytes in the memory buffer, and the minimum allocation size. ** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts ** to using its default memory allocator (the system malloc() implementation), ** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. ^If the ** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or ** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory ** allocator is engaged to handle all of SQLites memory allocation needs. ** The first pointer (the memory pointer) must be aligned to an 8-byte ** boundary or subsequent behavior of SQLite will be undefined.
** **
SQLITE_CONFIG_MUTEX
**
^(This option takes a single argument which is a pointer to an ** instance of the [sqlite3_mutex_methods] structure. The argument specifies ** alternative low-level mutex routines to be used in place ** the mutex routines built into SQLite.)^ ^SQLite makes a copy of the ** content of the [sqlite3_mutex_methods] structure before the call to ** [sqlite3_config()] returns. ^If SQLite is compiled with ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then ** the entire mutexing subsystem is omitted from the build and hence calls to ** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will ** return [SQLITE_ERROR].
** **
SQLITE_CONFIG_GETMUTEX
**
^(This option takes a single argument which is a pointer to an ** instance of the [sqlite3_mutex_methods] structure. The ** [sqlite3_mutex_methods] ** structure is filled with the currently defined mutex routines.)^ ** This option can be used to overload the default mutex allocation ** routines with a wrapper used to track mutex usage for performance ** profiling or testing, for example. ^If SQLite is compiled with ** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then ** the entire mutexing subsystem is omitted from the build and hence calls to ** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option will ** return [SQLITE_ERROR].
** **
SQLITE_CONFIG_LOOKASIDE
**
^(This option takes two arguments that determine the default ** memory allocation for the lookaside memory allocator on each ** [database connection]. The first argument is the ** size of each lookaside buffer slot and the second is the number of ** slots allocated to each database connection.)^ ^(This option sets the ** default lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE] ** verb to [sqlite3_db_config()] can be used to change the lookaside ** configuration on individual connections.)^
** **
SQLITE_CONFIG_PCACHE
**
^(This option takes a single argument which is a pointer to ** an [sqlite3_pcache_methods] object. This object specifies the interface ** to a custom page cache implementation.)^ ^SQLite makes a copy of the ** object and uses it for page cache memory allocations.
** **
SQLITE_CONFIG_GETPCACHE
**
^(This option takes a single argument which is a pointer to an ** [sqlite3_pcache_methods] object. SQLite copies of the current ** page cache implementation into that object.)^
** **
SQLITE_CONFIG_LOG
**
^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a ** function with a call signature of void(*)(void*,int,const char*), ** and a pointer to void. ^If the function pointer is not NULL, it is ** invoked by [sqlite3_log()] to process each logging event. ^If the ** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op. ** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is ** passed through as the first parameter to the application-defined logger ** function whenever that function is invoked. ^The second parameter to ** the logger function is a copy of the first parameter to the corresponding ** [sqlite3_log()] call and is intended to be a [result code] or an ** [extended result code]. ^The third parameter passed to the logger is ** log message after formatting via [sqlite3_snprintf()]. ** The SQLite logging interface is not reentrant; the logger function ** supplied by the application must not invoke any SQLite interface. ** In a multi-threaded application, the application-defined logger ** function must be threadsafe.
** **
*/ #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */ #define SQLITE_CONFIG_MULTITHREAD 2 /* nil */ #define SQLITE_CONFIG_SERIALIZED 3 /* nil */ #define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */ #define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */ #define SQLITE_CONFIG_SCRATCH 6 /* void*, int sz, int N */ #define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */ #define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */ #define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */ #define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */ #define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */ /* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */ #define SQLITE_CONFIG_LOOKASIDE 13 /* int int */ #define SQLITE_CONFIG_PCACHE 14 /* sqlite3_pcache_methods* */ #define SQLITE_CONFIG_GETPCACHE 15 /* sqlite3_pcache_methods* */ #define SQLITE_CONFIG_LOG 16 /* xFunc, void* */ /* ** CAPI3REF: Database Connection Configuration Options ** ** These constants are the available integer configuration options that ** can be passed as the second argument to the [sqlite3_db_config()] interface. ** ** New configuration options may be added in future releases of SQLite. ** Existing configuration options might be discontinued. Applications ** should check the return code from [sqlite3_db_config()] to make sure that ** the call worked. ^The [sqlite3_db_config()] interface will return a ** non-zero [error code] if a discontinued or unsupported configuration option ** is invoked. ** **
**
SQLITE_DBCONFIG_LOOKASIDE
**
^This option takes three additional arguments that determine the ** [lookaside memory allocator] configuration for the [database connection]. ** ^The first argument (the third parameter to [sqlite3_db_config()] is a ** pointer to an memory buffer to use for lookaside memory. ** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb ** may be NULL in which case SQLite will allocate the ** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the ** size of each lookaside buffer slot. ^The third argument is the number of ** slots. The size of the buffer in the first argument must be greater than ** or equal to the product of the second and third arguments. The buffer ** must be aligned to an 8-byte boundary. ^If the second argument to ** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally ** rounded down to the next smaller multiple of 8. ^(The lookaside memory ** configuration for a database connection can only be changed when that ** connection is not currently using lookaside memory, or in other words ** when the "current value" returned by ** [sqlite3_db_status](D,[SQLITE_CONFIG_LOOKASIDE],...) is zero. ** Any attempt to change the lookaside memory configuration when lookaside ** memory is in use leaves the configuration unchanged and returns ** [SQLITE_BUSY].)^
** **
*/ #define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */ /* ** CAPI3REF: Enable Or Disable Extended Result Codes ** ** ^The sqlite3_extended_result_codes() routine enables or disables the ** [extended result codes] feature of SQLite. ^The extended result ** codes are disabled by default for historical compatibility. */ SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff); /* ** CAPI3REF: Last Insert Rowid ** ** ^Each entry in an SQLite table has a unique 64-bit signed ** integer key called the [ROWID | "rowid"]. ^The rowid is always available ** as an undeclared column named ROWID, OID, or _ROWID_ as long as those ** names are not also used by explicitly declared columns. ^If ** the table has a column of type [INTEGER PRIMARY KEY] then that column ** is another alias for the rowid. ** ** ^This routine returns the [rowid] of the most recent ** successful [INSERT] into the database from the [database connection] ** in the first argument. ^If no successful [INSERT]s ** have ever occurred on that database connection, zero is returned. ** ** ^(If an [INSERT] occurs within a trigger, then the [rowid] of the inserted ** row is returned by this routine as long as the trigger is running. ** But once the trigger terminates, the value returned by this routine ** reverts to the last value inserted before the trigger fired.)^ ** ** ^An [INSERT] that fails due to a constraint violation is not a ** successful [INSERT] and does not change the value returned by this ** routine. ^Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK, ** and INSERT OR ABORT make no changes to the return value of this ** routine when their insertion fails. ^(When INSERT OR REPLACE ** encounters a constraint violation, it does not fail. The ** INSERT continues to completion after deleting rows that caused ** the constraint problem so INSERT OR REPLACE will always change ** the return value of this interface.)^ ** ** ^For the purposes of this routine, an [INSERT] is considered to ** be successful even if it is subsequently rolled back. ** ** This function is accessible to SQL statements via the ** [last_insert_rowid() SQL function]. ** ** If a separate thread performs a new [INSERT] on the same ** database connection while the [sqlite3_last_insert_rowid()] ** function is running and thus changes the last insert [rowid], ** then the value returned by [sqlite3_last_insert_rowid()] is ** unpredictable and might not equal either the old or the new ** last insert [rowid]. */ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*); /* ** CAPI3REF: Count The Number Of Rows Modified ** ** ^This function returns the number of database rows that were changed ** or inserted or deleted by the most recently completed SQL statement ** on the [database connection] specified by the first parameter. ** ^(Only changes that are directly specified by the [INSERT], [UPDATE], ** or [DELETE] statement are counted. Auxiliary changes caused by ** triggers or [foreign key actions] are not counted.)^ Use the ** [sqlite3_total_changes()] function to find the total number of changes ** including changes caused by triggers and foreign key actions. ** ** ^Changes to a view that are simulated by an [INSTEAD OF trigger] ** are not counted. Only real table changes are counted. ** ** ^(A "row change" is a change to a single row of a single table ** caused by an INSERT, DELETE, or UPDATE statement. Rows that ** are changed as side effects of [REPLACE] constraint resolution, ** rollback, ABORT processing, [DROP TABLE], or by any other ** mechanisms do not count as direct row changes.)^ ** ** A "trigger context" is a scope of execution that begins and ** ends with the script of a [CREATE TRIGGER | trigger]. ** Most SQL statements are ** evaluated outside of any trigger. This is the "top level" ** trigger context. If a trigger fires from the top level, a ** new trigger context is entered for the duration of that one ** trigger. Subtriggers create subcontexts for their duration. ** ** ^Calling [sqlite3_exec()] or [sqlite3_step()] recursively does ** not create a new trigger context. ** ** ^This function returns the number of direct row changes in the ** most recent INSERT, UPDATE, or DELETE statement within the same ** trigger context. ** ** ^Thus, when called from the top level, this function returns the ** number of changes in the most recent INSERT, UPDATE, or DELETE ** that also occurred at the top level. ^(Within the body of a trigger, ** the sqlite3_changes() interface can be called to find the number of ** changes in the most recently completed INSERT, UPDATE, or DELETE ** statement within the body of the same trigger. ** However, the number returned does not include changes ** caused by subtriggers since those have their own context.)^ ** ** See also the [sqlite3_total_changes()] interface, the ** [count_changes pragma], and the [changes() SQL function]. ** ** If a separate thread makes changes on the same database connection ** while [sqlite3_changes()] is running then the value returned ** is unpredictable and not meaningful. */ SQLITE_API int sqlite3_changes(sqlite3*); /* ** CAPI3REF: Total Number Of Rows Modified ** ** ^This function returns the number of row changes caused by [INSERT], ** [UPDATE] or [DELETE] statements since the [database connection] was opened. ** ^(The count returned by sqlite3_total_changes() includes all changes ** from all [CREATE TRIGGER | trigger] contexts and changes made by ** [foreign key actions]. However, ** the count does not include changes used to implement [REPLACE] constraints, ** do rollbacks or ABORT processing, or [DROP TABLE] processing. The ** count does not include rows of views that fire an [INSTEAD OF trigger], ** though if the INSTEAD OF trigger makes changes of its own, those changes ** are counted.)^ ** ^The sqlite3_total_changes() function counts the changes as soon as ** the statement that makes them is completed (when the statement handle ** is passed to [sqlite3_reset()] or [sqlite3_finalize()]). ** ** See also the [sqlite3_changes()] interface, the ** [count_changes pragma], and the [total_changes() SQL function]. ** ** If a separate thread makes changes on the same database connection ** while [sqlite3_total_changes()] is running then the value ** returned is unpredictable and not meaningful. */ SQLITE_API int sqlite3_total_changes(sqlite3*); /* ** CAPI3REF: Interrupt A Long-Running Query ** ** ^This function causes any pending database operation to abort and ** return at its earliest opportunity. This routine is typically ** called in response to a user action such as pressing "Cancel" ** or Ctrl-C where the user wants a long query operation to halt ** immediately. ** ** ^It is safe to call this routine from a thread different from the ** thread that is currently running the database operation. But it ** is not safe to call this routine with a [database connection] that ** is closed or might close before sqlite3_interrupt() returns. ** ** ^If an SQL operation is very nearly finished at the time when ** sqlite3_interrupt() is called, then it might not have an opportunity ** to be interrupted and might continue to completion. ** ** ^An SQL operation that is interrupted will return [SQLITE_INTERRUPT]. ** ^If the interrupted SQL operation is an INSERT, UPDATE, or DELETE ** that is inside an explicit transaction, then the entire transaction ** will be rolled back automatically. ** ** ^The sqlite3_interrupt(D) call is in effect until all currently running ** SQL statements on [database connection] D complete. ^Any new SQL statements ** that are started after the sqlite3_interrupt() call and before the ** running statements reaches zero are interrupted as if they had been ** running prior to the sqlite3_interrupt() call. ^New SQL statements ** that are started after the running statement count reaches zero are ** not effected by the sqlite3_interrupt(). ** ^A call to sqlite3_interrupt(D) that occurs when there are no running ** SQL statements is a no-op and has no effect on SQL statements ** that are started after the sqlite3_interrupt() call returns. ** ** If the database connection closes while [sqlite3_interrupt()] ** is running then bad things will likely happen. */ SQLITE_API void sqlite3_interrupt(sqlite3*); /* ** CAPI3REF: Determine If An SQL Statement Is Complete ** ** These routines are useful during command-line input to determine if the ** currently entered text seems to form a complete SQL statement or ** if additional input is needed before sending the text into ** SQLite for parsing. ^These routines return 1 if the input string ** appears to be a complete SQL statement. ^A statement is judged to be ** complete if it ends with a semicolon token and is not a prefix of a ** well-formed CREATE TRIGGER statement. ^Semicolons that are embedded within ** string literals or quoted identifier names or comments are not ** independent tokens (they are part of the token in which they are ** embedded) and thus do not count as a statement terminator. ^Whitespace ** and comments that follow the final semicolon are ignored. ** ** ^These routines return 0 if the statement is incomplete. ^If a ** memory allocation fails, then SQLITE_NOMEM is returned. ** ** ^These routines do not parse the SQL statements thus ** will not detect syntactically incorrect SQL. ** ** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior ** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked ** automatically by sqlite3_complete16(). If that initialization fails, ** then the return value from sqlite3_complete16() will be non-zero ** regardless of whether or not the input SQL is complete.)^ ** ** The input to [sqlite3_complete()] must be a zero-terminated ** UTF-8 string. ** ** The input to [sqlite3_complete16()] must be a zero-terminated ** UTF-16 string in native byte order. */ SQLITE_API int sqlite3_complete(const char *sql); SQLITE_API int sqlite3_complete16(const void *sql); /* ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors ** ** ^This routine sets a callback function that might be invoked whenever ** an attempt is made to open a database table that another thread ** or process has locked. ** ** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] ** is returned immediately upon encountering the lock. ^If the busy callback ** is not NULL, then the callback might be invoked with two arguments. ** ** ^The first argument to the busy handler is a copy of the void* pointer which ** is the third argument to sqlite3_busy_handler(). ^The second argument to ** the busy handler callback is the number of times that the busy handler has ** been invoked for this locking event. ^If the ** busy callback returns 0, then no additional attempts are made to ** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned. ** ^If the callback returns non-zero, then another attempt ** is made to open the database for reading and the cycle repeats. ** ** The presence of a busy handler does not guarantee that it will be invoked ** when there is lock contention. ^If SQLite determines that invoking the busy ** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY] ** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler. ** Consider a scenario where one process is holding a read lock that ** it is trying to promote to a reserved lock and ** a second process is holding a reserved lock that it is trying ** to promote to an exclusive lock. The first process cannot proceed ** because it is blocked by the second and the second process cannot ** proceed because it is blocked by the first. If both processes ** invoke the busy handlers, neither will make any progress. Therefore, ** SQLite returns [SQLITE_BUSY] for the first process, hoping that this ** will induce the first process to release its read lock and allow ** the second process to proceed. ** ** ^The default busy callback is NULL. ** ** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] ** when SQLite is in the middle of a large transaction where all the ** changes will not fit into the in-memory cache. SQLite will ** already hold a RESERVED lock on the database file, but it needs ** to promote this lock to EXCLUSIVE so that it can spill cache ** pages into the database file without harm to concurrent ** readers. ^If it is unable to promote the lock, then the in-memory ** cache will be left in an inconsistent state and so the error ** code is promoted from the relatively benign [SQLITE_BUSY] to ** the more severe [SQLITE_IOERR_BLOCKED]. ^This error code promotion ** forces an automatic rollback of the changes. See the ** ** CorruptionFollowingBusyError wiki page for a discussion of why ** this is important. ** ** ^(There can only be a single busy handler defined for each ** [database connection]. Setting a new busy handler clears any ** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()] ** will also set or clear the busy handler. ** ** The busy callback should not take any actions which modify the ** database connection that invoked the busy handler. Any such actions ** result in undefined behavior. ** ** A busy handler must not close the database connection ** or [prepared statement] that invoked the busy handler. */ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*); /* ** CAPI3REF: Set A Busy Timeout ** ** ^This routine sets a [sqlite3_busy_handler | busy handler] that sleeps ** for a specified amount of time when a table is locked. ^The handler ** will sleep multiple times until at least "ms" milliseconds of sleeping ** have accumulated. ^After at least "ms" milliseconds of sleeping, ** the handler returns 0 which causes [sqlite3_step()] to return ** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]. ** ** ^Calling this routine with an argument less than or equal to zero ** turns off all busy handlers. ** ** ^(There can only be a single busy handler for a particular ** [database connection] any any given moment. If another busy handler ** was defined (using [sqlite3_busy_handler()]) prior to calling ** this routine, that other busy handler is cleared.)^ */ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); /* ** CAPI3REF: Convenience Routines For Running Queries ** ** This is a legacy interface that is preserved for backwards compatibility. ** Use of this interface is not recommended. ** ** Definition: A result table is memory data structure created by the ** [sqlite3_get_table()] interface. A result table records the ** complete query results from one or more queries. ** ** The table conceptually has a number of rows and columns. But ** these numbers are not part of the result table itself. These ** numbers are obtained separately. Let N be the number of rows ** and M be the number of columns. ** ** A result table is an array of pointers to zero-terminated UTF-8 strings. ** There are (N+1)*M elements in the array. The first M pointers point ** to zero-terminated strings that contain the names of the columns. ** The remaining entries all point to query results. NULL values result ** in NULL pointers. All other values are in their UTF-8 zero-terminated ** string representation as returned by [sqlite3_column_text()]. ** ** A result table might consist of one or more memory allocations. ** It is not safe to pass a result table directly to [sqlite3_free()]. ** A result table should be deallocated using [sqlite3_free_table()]. ** ** ^(As an example of the result table format, suppose a query result ** is as follows: ** **
**        Name        | Age
**        -----------------------
**        Alice       | 43
**        Bob         | 28
**        Cindy       | 21
** 
** ** There are two column (M==2) and three rows (N==3). Thus the ** result table has 8 entries. Suppose the result table is stored ** in an array names azResult. Then azResult holds this content: ** **
**        azResult[0] = "Name";
**        azResult[1] = "Age";
**        azResult[2] = "Alice";
**        azResult[3] = "43";
**        azResult[4] = "Bob";
**        azResult[5] = "28";
**        azResult[6] = "Cindy";
**        azResult[7] = "21";
** 
)^ ** ** ^The sqlite3_get_table() function evaluates one or more ** semicolon-separated SQL statements in the zero-terminated UTF-8 ** string of its 2nd parameter and returns a result table to the ** pointer given in its 3rd parameter. ** ** After the application has finished with the result from sqlite3_get_table(), ** it must pass the result table pointer to sqlite3_free_table() in order to ** release the memory that was malloced. Because of the way the ** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling ** function must not try to call [sqlite3_free()] directly. Only ** [sqlite3_free_table()] is able to release the memory properly and safely. ** ** The sqlite3_get_table() interface is implemented as a wrapper around ** [sqlite3_exec()]. The sqlite3_get_table() routine does not have access ** to any internal data structures of SQLite. It uses only the public ** interface defined here. As a consequence, errors that occur in the ** wrapper layer outside of the internal [sqlite3_exec()] call are not ** reflected in subsequent calls to [sqlite3_errcode()] or ** [sqlite3_errmsg()]. */ SQLITE_API int sqlite3_get_table( sqlite3 *db, /* An open database */ const char *zSql, /* SQL to be evaluated */ char ***pazResult, /* Results of the query */ int *pnRow, /* Number of result rows written here */ int *pnColumn, /* Number of result columns written here */ char **pzErrmsg /* Error msg written here */ ); SQLITE_API void sqlite3_free_table(char **result); /* ** CAPI3REF: Formatted String Printing Functions ** ** These routines are work-alikes of the "printf()" family of functions ** from the standard C library. ** ** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their ** results into memory obtained from [sqlite3_malloc()]. ** The strings returned by these two routines should be ** released by [sqlite3_free()]. ^Both routines return a ** NULL pointer if [sqlite3_malloc()] is unable to allocate enough ** memory to hold the resulting string. ** ** ^(In sqlite3_snprintf() routine is similar to "snprintf()" from ** the standard C library. The result is written into the ** buffer supplied as the second parameter whose size is given by ** the first parameter. Note that the order of the ** first two parameters is reversed from snprintf().)^ This is an ** historical accident that cannot be fixed without breaking ** backwards compatibility. ^(Note also that sqlite3_snprintf() ** returns a pointer to its buffer instead of the number of ** characters actually written into the buffer.)^ We admit that ** the number of characters written would be a more useful return ** value but we cannot change the implementation of sqlite3_snprintf() ** now without breaking compatibility. ** ** ^As long as the buffer size is greater than zero, sqlite3_snprintf() ** guarantees that the buffer is always zero-terminated. ^The first ** parameter "n" is the total size of the buffer, including space for ** the zero terminator. So the longest string that can be completely ** written will be n-1 characters. ** ** These routines all implement some additional formatting ** options that are useful for constructing SQL statements. ** All of the usual printf() formatting options apply. In addition, there ** is are "%q", "%Q", and "%z" options. ** ** ^(The %q option works like %s in that it substitutes a null-terminated ** string from the argument list. But %q also doubles every '\'' character. ** %q is designed for use inside a string literal.)^ By doubling each '\'' ** character it escapes that character and allows it to be inserted into ** the string. ** ** For example, assume the string variable zText contains text as follows: ** **
**  char *zText = "It's a happy day!";
** 
** ** One can use this text in an SQL statement as follows: ** **
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
**  sqlite3_exec(db, zSQL, 0, 0, 0);
**  sqlite3_free(zSQL);
** 
** ** Because the %q format string is used, the '\'' character in zText ** is escaped and the SQL generated is as follows: ** **
**  INSERT INTO table1 VALUES('It''s a happy day!')
** 
** ** This is correct. Had we used %s instead of %q, the generated SQL ** would have looked like this: ** **
**  INSERT INTO table1 VALUES('It's a happy day!');
** 
** ** This second example is an SQL syntax error. As a general rule you should ** always use %q instead of %s when inserting text into a string literal. ** ** ^(The %Q option works like %q except it also adds single quotes around ** the outside of the total string. Additionally, if the parameter in the ** argument list is a NULL pointer, %Q substitutes the text "NULL" (without ** single quotes).)^ So, for example, one could say: ** **
**  char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
**  sqlite3_exec(db, zSQL, 0, 0, 0);
**  sqlite3_free(zSQL);
** 
** ** The code above will render a correct SQL statement in the zSQL ** variable even if the zText variable is a NULL pointer. ** ** ^(The "%z" formatting option works like "%s" but with the ** addition that after the string has been read and copied into ** the result, [sqlite3_free()] is called on the input string.)^ */ SQLITE_API char *sqlite3_mprintf(const char*,...); SQLITE_API char *sqlite3_vmprintf(const char*, va_list); SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...); /* ** CAPI3REF: Memory Allocation Subsystem ** ** The SQLite core uses these three routines for all of its own ** internal memory allocation needs. "Core" in the previous sentence ** does not include operating-system specific VFS implementation. The ** Windows VFS uses native malloc() and free() for some operations. ** ** ^The sqlite3_malloc() routine returns a pointer to a block ** of memory at least N bytes in length, where N is the parameter. ** ^If sqlite3_malloc() is unable to obtain sufficient free ** memory, it returns a NULL pointer. ^If the parameter N to ** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns ** a NULL pointer. ** ** ^Calling sqlite3_free() with a pointer previously returned ** by sqlite3_malloc() or sqlite3_realloc() releases that memory so ** that it might be reused. ^The sqlite3_free() routine is ** a no-op if is called with a NULL pointer. Passing a NULL pointer ** to sqlite3_free() is harmless. After being freed, memory ** should neither be read nor written. Even reading previously freed ** memory might result in a segmentation fault or other severe error. ** Memory corruption, a segmentation fault, or other severe error ** might result if sqlite3_free() is called with a non-NULL pointer that ** was not obtained from sqlite3_malloc() or sqlite3_realloc(). ** ** ^(The sqlite3_realloc() interface attempts to resize a ** prior memory allocation to be at least N bytes, where N is the ** second parameter. The memory allocation to be resized is the first ** parameter.)^ ^ If the first parameter to sqlite3_realloc() ** is a NULL pointer then its behavior is identical to calling ** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc(). ** ^If the second parameter to sqlite3_realloc() is zero or ** negative then the behavior is exactly the same as calling ** sqlite3_free(P) where P is the first parameter to sqlite3_realloc(). ** ^sqlite3_realloc() returns a pointer to a memory allocation ** of at least N bytes in size or NULL if sufficient memory is unavailable. ** ^If M is the size of the prior allocation, then min(N,M) bytes ** of the prior allocation are copied into the beginning of buffer returned ** by sqlite3_realloc() and the prior allocation is freed. ** ^If sqlite3_realloc() returns NULL, then the prior allocation ** is not freed. ** ** ^The memory returned by sqlite3_malloc() and sqlite3_realloc() ** is always aligned to at least an 8 byte boundary, or to a ** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time ** option is used. ** ** In SQLite version 3.5.0 and 3.5.1, it was possible to define ** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in ** implementation of these routines to be omitted. That capability ** is no longer provided. Only built-in memory allocators can be used. ** ** The Windows OS interface layer calls ** the system malloc() and free() directly when converting ** filenames between the UTF-8 encoding used by SQLite ** and whatever filename encoding is used by the particular Windows ** installation. Memory allocation errors are detected, but ** they are reported back as [SQLITE_CANTOPEN] or ** [SQLITE_IOERR] rather than [SQLITE_NOMEM]. ** ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()] ** must be either NULL or else pointers obtained from a prior ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have ** not yet been released. ** ** The application must not read or write any part of ** a block of memory after it has been released using ** [sqlite3_free()] or [sqlite3_realloc()]. */ SQLITE_API void *sqlite3_malloc(int); SQLITE_API void *sqlite3_realloc(void*, int); SQLITE_API void sqlite3_free(void*); /* ** CAPI3REF: Memory Allocator Statistics ** ** SQLite provides these two interfaces for reporting on the status ** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()] ** routines, which form the built-in memory allocation subsystem. ** ** ^The [sqlite3_memory_used()] routine returns the number of bytes ** of memory currently outstanding (malloced but not freed). ** ^The [sqlite3_memory_highwater()] routine returns the maximum ** value of [sqlite3_memory_used()] since the high-water mark ** was last reset. ^The values returned by [sqlite3_memory_used()] and ** [sqlite3_memory_highwater()] include any overhead ** added by SQLite in its implementation of [sqlite3_malloc()], ** but not overhead added by the any underlying system library ** routines that [sqlite3_malloc()] may call. ** ** ^The memory high-water mark is reset to the current value of ** [sqlite3_memory_used()] if and only if the parameter to ** [sqlite3_memory_highwater()] is true. ^The value returned ** by [sqlite3_memory_highwater(1)] is the high-water mark ** prior to the reset. */ SQLITE_API sqlite3_int64 sqlite3_memory_used(void); SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag); /* ** CAPI3REF: Pseudo-Random Number Generator ** ** SQLite contains a high-quality pseudo-random number generator (PRNG) used to ** select random [ROWID | ROWIDs] when inserting new records into a table that ** already uses the largest possible [ROWID]. The PRNG is also used for ** the build-in random() and randomblob() SQL functions. This interface allows ** applications to access the same PRNG for other purposes. ** ** ^A call to this routine stores N bytes of randomness into buffer P. ** ** ^The first time this routine is invoked (either internally or by ** the application) the PRNG is seeded using randomness obtained ** from the xRandomness method of the default [sqlite3_vfs] object. ** ^On all subsequent invocations, the pseudo-randomness is generated ** internally and without recourse to the [sqlite3_vfs] xRandomness ** method. */ SQLITE_API void sqlite3_randomness(int N, void *P); /* ** CAPI3REF: Compile-Time Authorization Callbacks ** ** ^This routine registers a authorizer callback with a particular ** [database connection], supplied in the first argument. ** ^The authorizer callback is invoked as SQL statements are being compiled ** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()], ** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. ^At various ** points during the compilation process, as logic is being created ** to perform various actions, the authorizer callback is invoked to ** see if those actions are allowed. ^The authorizer callback should ** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the ** specific action but allow the SQL statement to continue to be ** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be ** rejected with an error. ^If the authorizer callback returns ** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY] ** then the [sqlite3_prepare_v2()] or equivalent call that triggered ** the authorizer will fail with an error message. ** ** When the callback returns [SQLITE_OK], that means the operation ** requested is ok. ^When the callback returns [SQLITE_DENY], the ** [sqlite3_prepare_v2()] or equivalent call that triggered the ** authorizer will fail with an error message explaining that ** access is denied. ** ** ^The first parameter to the authorizer callback is a copy of the third ** parameter to the sqlite3_set_authorizer() interface. ^The second parameter ** to the callback is an integer [SQLITE_COPY | action code] that specifies ** the particular action to be authorized. ^The third through sixth parameters ** to the callback are zero-terminated strings that contain additional ** details about the action to be authorized. ** ** ^If the action code is [SQLITE_READ] ** and the callback returns [SQLITE_IGNORE] then the ** [prepared statement] statement is constructed to substitute ** a NULL value in place of the table column that would have ** been read if [SQLITE_OK] had been returned. The [SQLITE_IGNORE] ** return can be used to deny an untrusted user access to individual ** columns of a table. ** ^If the action code is [SQLITE_DELETE] and the callback returns ** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the ** [truncate optimization] is disabled and all rows are deleted individually. ** ** An authorizer is used when [sqlite3_prepare | preparing] ** SQL statements from an untrusted source, to ensure that the SQL statements ** do not try to access data they are not allowed to see, or that they do not ** try to execute malicious statements that damage the database. For ** example, an application may allow a user to enter arbitrary ** SQL queries for evaluation by a database. But the application does ** not want the user to be able to make arbitrary changes to the ** database. An authorizer could then be put in place while the ** user-entered SQL is being [sqlite3_prepare | prepared] that ** disallows everything except [SELECT] statements. ** ** Applications that need to process SQL from untrusted sources ** might also consider lowering resource limits using [sqlite3_limit()] ** and limiting database size using the [max_page_count] [PRAGMA] ** in addition to using an authorizer. ** ** ^(Only a single authorizer can be in place on a database connection ** at a time. Each call to sqlite3_set_authorizer overrides the ** previous call.)^ ^Disable the authorizer by installing a NULL callback. ** The authorizer is disabled by default. ** ** The authorizer callback must not do anything that will modify ** the database connection that invoked the authorizer callback. ** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their ** database connections for the meaning of "modify" in this paragraph. ** ** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the ** statement might be re-prepared during [sqlite3_step()] due to a ** schema change. Hence, the application should ensure that the ** correct authorizer callback remains in place during the [sqlite3_step()]. ** ** ^Note that the authorizer callback is invoked only during ** [sqlite3_prepare()] or its variants. Authorization is not ** performed during statement evaluation in [sqlite3_step()], unless ** as stated in the previous paragraph, sqlite3_step() invokes ** sqlite3_prepare_v2() to reprepare a statement after a schema change. */ SQLITE_API int sqlite3_set_authorizer( sqlite3*, int (*xAuth)(void*,int,const char*,const char*,const char*,const char*), void *pUserData ); /* ** CAPI3REF: Authorizer Return Codes ** ** The [sqlite3_set_authorizer | authorizer callback function] must ** return either [SQLITE_OK] or one of these two constants in order ** to signal SQLite whether or not the action is permitted. See the ** [sqlite3_set_authorizer | authorizer documentation] for additional ** information. */ #define SQLITE_DENY 1 /* Abort the SQL statement with an error */ #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */ /* ** CAPI3REF: Authorizer Action Codes ** ** The [sqlite3_set_authorizer()] interface registers a callback function ** that is invoked to authorize certain SQL statement actions. The ** second parameter to the callback is an integer code that specifies ** what action is being authorized. These are the integer action codes that ** the authorizer callback may be passed. ** ** These action code values signify what kind of operation is to be ** authorized. The 3rd and 4th parameters to the authorization ** callback function will be parameters or NULL depending on which of these ** codes is used as the second parameter. ^(The 5th parameter to the ** authorizer callback is the name of the database ("main", "temp", ** etc.) if applicable.)^ ^The 6th parameter to the authorizer callback ** is the name of the inner-most trigger or view that is responsible for ** the access attempt or NULL if this access attempt is directly from ** top-level SQL code. */ /******************************************* 3rd ************ 4th ***********/ #define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */ #define SQLITE_CREATE_TABLE 2 /* Table Name NULL */ #define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */ #define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */ #define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */ #define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */ #define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */ #define SQLITE_CREATE_VIEW 8 /* View Name NULL */ #define SQLITE_DELETE 9 /* Table Name NULL */ #define SQLITE_DROP_INDEX 10 /* Index Name Table Name */ #define SQLITE_DROP_TABLE 11 /* Table Name NULL */ #define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */ #define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */ #define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */ #define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */ #define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */ #define SQLITE_DROP_VIEW 17 /* View Name NULL */ #define SQLITE_INSERT 18 /* Table Name NULL */ #define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */ #define SQLITE_READ 20 /* Table Name Column Name */ #define SQLITE_SELECT 21 /* NULL NULL */ #define SQLITE_TRANSACTION 22 /* Operation NULL */ #define SQLITE_UPDATE 23 /* Table Name Column Name */ #define SQLITE_ATTACH 24 /* Filename NULL */ #define SQLITE_DETACH 25 /* Database Name NULL */ #define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */ #define SQLITE_REINDEX 27 /* Index Name NULL */ #define SQLITE_ANALYZE 28 /* Table Name NULL */ #define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */ #define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */ #define SQLITE_FUNCTION 31 /* NULL Function Name */ #define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ #define SQLITE_COPY 0 /* No longer used */ /* ** CAPI3REF: Tracing And Profiling Functions ** ** These routines register callback functions that can be used for ** tracing and profiling the execution of SQL statements. ** ** ^The callback function registered by sqlite3_trace() is invoked at ** various times when an SQL statement is being run by [sqlite3_step()]. ** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the ** SQL statement text as the statement first begins executing. ** ^(Additional sqlite3_trace() callbacks might occur ** as each triggered subprogram is entered. The callbacks for triggers ** contain a UTF-8 SQL comment that identifies the trigger.)^ ** ** ^The callback function registered by sqlite3_profile() is invoked ** as each SQL statement finishes. ^The profile callback contains ** the original statement text and an estimate of wall-clock time ** of how long that statement took to run. ^The profile callback ** time is in units of nanoseconds, however the current implementation ** is only capable of millisecond resolution so the six least significant ** digits in the time are meaningless. Future versions of SQLite ** might provide greater resolution on the profiler callback. The ** sqlite3_profile() function is considered experimental and is ** subject to change in future versions of SQLite. */ SQLITE_API void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*); SQLITE_API SQLITE_EXPERIMENTAL void *sqlite3_profile(sqlite3*, void(*xProfile)(void*,const char*,sqlite3_uint64), void*); /* ** CAPI3REF: Query Progress Callbacks ** ** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback ** function X to be invoked periodically during long running calls to ** [sqlite3_exec()], [sqlite3_step()] and [sqlite3_get_table()] for ** database connection D. An example use for this ** interface is to keep a GUI updated during a large query. ** ** ^The parameter P is passed through as the only parameter to the ** callback function X. ^The parameter N is the number of ** [virtual machine instructions] that are evaluated between successive ** invocations of the callback X. ** ** ^Only a single progress handler may be defined at one time per ** [database connection]; setting a new progress handler cancels the ** old one. ^Setting parameter X to NULL disables the progress handler. ** ^The progress handler is also disabled by setting N to a value less ** than 1. ** ** ^If the progress callback returns non-zero, the operation is ** interrupted. This feature can be used to implement a ** "Cancel" button on a GUI progress dialog box. ** ** The progress handler callback must not do anything that will modify ** the database connection that invoked the progress handler. ** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their ** database connections for the meaning of "modify" in this paragraph. ** */ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); /* ** CAPI3REF: Opening A New Database Connection ** ** ^These routines open an SQLite database file whose name is given by the ** filename argument. ^The filename argument is interpreted as UTF-8 for ** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte ** order for sqlite3_open16(). ^(A [database connection] handle is usually ** returned in *ppDb, even if an error occurs. The only exception is that ** if SQLite is unable to allocate memory to hold the [sqlite3] object, ** a NULL will be written into *ppDb instead of a pointer to the [sqlite3] ** object.)^ ^(If the database is opened (and/or created) successfully, then ** [SQLITE_OK] is returned. Otherwise an [error code] is returned.)^ ^The ** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain ** an English language description of the error following a failure of any ** of the sqlite3_open() routines. ** ** ^The default encoding for the database will be UTF-8 if ** sqlite3_open() or sqlite3_open_v2() is called and ** UTF-16 in the native byte order if sqlite3_open16() is used. ** ** Whether or not an error occurs when it is opened, resources ** associated with the [database connection] handle should be released by ** passing it to [sqlite3_close()] when it is no longer required. ** ** The sqlite3_open_v2() interface works like sqlite3_open() ** except that it accepts two additional parameters for additional control ** over the new database connection. ^(The flags parameter to ** sqlite3_open_v2() can take one of ** the following three values, optionally combined with the ** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE], ** and/or [SQLITE_OPEN_PRIVATECACHE] flags:)^ ** **
** ^(
[SQLITE_OPEN_READONLY]
**
The database is opened in read-only mode. If the database does not ** already exist, an error is returned.
)^ ** ** ^(
[SQLITE_OPEN_READWRITE]
**
The database is opened for reading and writing if possible, or reading ** only if the file is write protected by the operating system. In either ** case the database must already exist, otherwise an error is returned.
)^ ** ** ^(
[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]
**
The database is opened for reading and writing, and is creates it if ** it does not already exist. This is the behavior that is always used for ** sqlite3_open() and sqlite3_open16().
)^ **
** ** If the 3rd parameter to sqlite3_open_v2() is not one of the ** combinations shown above or one of the combinations shown above combined ** with the [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], ** [SQLITE_OPEN_SHAREDCACHE] and/or [SQLITE_OPEN_PRIVATECACHE] flags, ** then the behavior is undefined. ** ** ^If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection ** opens in the multi-thread [threading mode] as long as the single-thread ** mode has not been set at compile-time or start-time. ^If the ** [SQLITE_OPEN_FULLMUTEX] flag is set then the database connection opens ** in the serialized [threading mode] unless single-thread was ** previously selected at compile-time or start-time. ** ^The [SQLITE_OPEN_SHAREDCACHE] flag causes the database connection to be ** eligible to use [shared cache mode], regardless of whether or not shared ** cache is enabled using [sqlite3_enable_shared_cache()]. ^The ** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not ** participate in [shared cache mode] even if it is enabled. ** ** ^If the filename is ":memory:", then a private, temporary in-memory database ** is created for the connection. ^This in-memory database will vanish when ** the database connection is closed. Future versions of SQLite might ** make use of additional special filenames that begin with the ":" character. ** It is recommended that when a database filename actually does begin with ** a ":" character you should prefix the filename with a pathname such as ** "./" to avoid ambiguity. ** ** ^If the filename is an empty string, then a private, temporary ** on-disk database will be created. ^This private database will be ** automatically deleted as soon as the database connection is closed. ** ** ^The fourth parameter to sqlite3_open_v2() is the name of the ** [sqlite3_vfs] object that defines the operating system interface that ** the new database connection should use. ^If the fourth parameter is ** a NULL pointer then the default [sqlite3_vfs] object is used. ** ** Note to Windows users: The encoding used for the filename argument ** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever ** codepage is currently defined. Filenames containing international ** characters must be converted to UTF-8 prior to passing them into ** sqlite3_open() or sqlite3_open_v2(). */ SQLITE_API int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); SQLITE_API int sqlite3_open16( const void *filename, /* Database filename (UTF-16) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); SQLITE_API int sqlite3_open_v2( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb, /* OUT: SQLite db handle */ int flags, /* Flags */ const char *zVfs /* Name of VFS module to use */ ); /* ** CAPI3REF: Error Codes And Messages ** ** ^The sqlite3_errcode() interface returns the numeric [result code] or ** [extended result code] for the most recent failed sqlite3_* API call ** associated with a [database connection]. If a prior API call failed ** but the most recent API call succeeded, the return value from ** sqlite3_errcode() is undefined. ^The sqlite3_extended_errcode() ** interface is the same except that it always returns the ** [extended result code] even when extended result codes are ** disabled. ** ** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language ** text that describes the error, as either UTF-8 or UTF-16 respectively. ** ^(Memory to hold the error message string is managed internally. ** The application does not need to worry about freeing the result. ** However, the error string might be overwritten or deallocated by ** subsequent calls to other SQLite interface functions.)^ ** ** When the serialized [threading mode] is in use, it might be the ** case that a second error occurs on a separate thread in between ** the time of the first error and the call to these interfaces. ** When that happens, the second error will be reported since these ** interfaces always report the most recent result. To avoid ** this, each thread can obtain exclusive use of the [database connection] D ** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning ** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after ** all calls to the interfaces listed here are completed. ** ** If an interface fails with SQLITE_MISUSE, that means the interface ** was invoked incorrectly by the application. In that case, the ** error code and message may or may not be set. */ SQLITE_API int sqlite3_errcode(sqlite3 *db); SQLITE_API int sqlite3_extended_errcode(sqlite3 *db); SQLITE_API const char *sqlite3_errmsg(sqlite3*); SQLITE_API const void *sqlite3_errmsg16(sqlite3*); /* ** CAPI3REF: SQL Statement Object ** KEYWORDS: {prepared statement} {prepared statements} ** ** An instance of this object represents a single SQL statement. ** This object is variously known as a "prepared statement" or a ** "compiled SQL statement" or simply as a "statement". ** ** The life of a statement object goes something like this: ** **
    **
  1. Create the object using [sqlite3_prepare_v2()] or a related ** function. **
  2. Bind values to [host parameters] using the sqlite3_bind_*() ** interfaces. **
  3. Run the SQL by calling [sqlite3_step()] one or more times. **
  4. Reset the statement using [sqlite3_reset()] then go back ** to step 2. Do this zero or more times. **
  5. Destroy the object using [sqlite3_finalize()]. **
** ** Refer to documentation on individual methods above for additional ** information. */ typedef struct sqlite3_stmt sqlite3_stmt; /* ** CAPI3REF: Run-time Limits ** ** ^(This interface allows the size of various constructs to be limited ** on a connection by connection basis. The first parameter is the ** [database connection] whose limit is to be set or queried. The ** second parameter is one of the [limit categories] that define a ** class of constructs to be size limited. The third parameter is the ** new limit for that construct.)^ ** ** ^If the new limit is a negative number, the limit is unchanged. ** ^(For each limit category SQLITE_LIMIT_NAME there is a ** [limits | hard upper bound] ** set at compile-time by a C preprocessor macro called ** [limits | SQLITE_MAX_NAME]. ** (The "_LIMIT_" in the name is changed to "_MAX_".))^ ** ^Attempts to increase a limit above its hard upper bound are ** silently truncated to the hard upper bound. ** ** ^Regardless of whether or not the limit was changed, the ** [sqlite3_limit()] interface returns the prior value of the limit. ** ^Hence, to find the current value of a limit without changing it, ** simply invoke this interface with the third parameter set to -1. ** ** Run-time limits are intended for use in applications that manage ** both their own internal database and also databases that are controlled ** by untrusted external sources. An example application might be a ** web browser that has its own databases for storing history and ** separate databases controlled by JavaScript applications downloaded ** off the Internet. The internal databases can be given the ** large, default limits. Databases managed by external sources can ** be given much smaller limits designed to prevent a denial of service ** attack. Developers might also want to use the [sqlite3_set_authorizer()] ** interface to further control untrusted SQL. The size of the database ** created by an untrusted script can be contained using the ** [max_page_count] [PRAGMA]. ** ** New run-time limit categories may be added in future releases. */ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal); /* ** CAPI3REF: Run-Time Limit Categories ** KEYWORDS: {limit category} {*limit categories} ** ** These constants define various performance limits ** that can be lowered at run-time using [sqlite3_limit()]. ** The synopsis of the meanings of the various limits is shown below. ** Additional information is available at [limits | Limits in SQLite]. ** **
** ^(
SQLITE_LIMIT_LENGTH
**
The maximum size of any string or BLOB or table row, in bytes.
)^ ** ** ^(
SQLITE_LIMIT_SQL_LENGTH
**
The maximum length of an SQL statement, in bytes.
)^ ** ** ^(
SQLITE_LIMIT_COLUMN
**
The maximum number of columns in a table definition or in the ** result set of a [SELECT] or the maximum number of columns in an index ** or in an ORDER BY or GROUP BY clause.
)^ ** ** ^(
SQLITE_LIMIT_EXPR_DEPTH
**
The maximum depth of the parse tree on any expression.
)^ ** ** ^(
SQLITE_LIMIT_COMPOUND_SELECT
**
The maximum number of terms in a compound SELECT statement.
)^ ** ** ^(
SQLITE_LIMIT_VDBE_OP
**
The maximum number of instructions in a virtual machine program ** used to implement an SQL statement. This limit is not currently ** enforced, though that might be added in some future release of ** SQLite.
)^ ** ** ^(
SQLITE_LIMIT_FUNCTION_ARG
**
The maximum number of arguments on a function.
)^ ** ** ^(
SQLITE_LIMIT_ATTACHED
**
The maximum number of [ATTACH | attached databases].)^
** ** ^(
SQLITE_LIMIT_LIKE_PATTERN_LENGTH
**
The maximum length of the pattern argument to the [LIKE] or ** [GLOB] operators.
)^ ** ** ^(
SQLITE_LIMIT_VARIABLE_NUMBER
**
The maximum index number of any [parameter] in an SQL statement.)^ ** ** ^(
SQLITE_LIMIT_TRIGGER_DEPTH
**
The maximum depth of recursion for triggers.
)^ **
*/ #define SQLITE_LIMIT_LENGTH 0 #define SQLITE_LIMIT_SQL_LENGTH 1 #define SQLITE_LIMIT_COLUMN 2 #define SQLITE_LIMIT_EXPR_DEPTH 3 #define SQLITE_LIMIT_COMPOUND_SELECT 4 #define SQLITE_LIMIT_VDBE_OP 5 #define SQLITE_LIMIT_FUNCTION_ARG 6 #define SQLITE_LIMIT_ATTACHED 7 #define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8 #define SQLITE_LIMIT_VARIABLE_NUMBER 9 #define SQLITE_LIMIT_TRIGGER_DEPTH 10 /* ** CAPI3REF: Compiling An SQL Statement ** KEYWORDS: {SQL statement compiler} ** ** To execute an SQL query, it must first be compiled into a byte-code ** program using one of these routines. ** ** The first argument, "db", is a [database connection] obtained from a ** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or ** [sqlite3_open16()]. The database connection must not have been closed. ** ** The second argument, "zSql", is the statement to be compiled, encoded ** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2() ** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2() ** use UTF-16. ** ** ^If the nByte argument is less than zero, then zSql is read up to the ** first zero terminator. ^If nByte is non-negative, then it is the maximum ** number of bytes read from zSql. ^When nByte is non-negative, the ** zSql string ends at either the first '\000' or '\u0000' character or ** the nByte-th byte, whichever comes first. If the caller knows ** that the supplied string is nul-terminated, then there is a small ** performance advantage to be gained by passing an nByte parameter that ** is equal to the number of bytes in the input string including ** the nul-terminator bytes. ** ** ^If pzTail is not NULL then *pzTail is made to point to the first byte ** past the end of the first SQL statement in zSql. These routines only ** compile the first statement in zSql, so *pzTail is left pointing to ** what remains uncompiled. ** ** ^*ppStmt is left pointing to a compiled [prepared statement] that can be ** executed using [sqlite3_step()]. ^If there is an error, *ppStmt is set ** to NULL. ^If the input text contains no SQL (if the input is an empty ** string or a comment) then *ppStmt is set to NULL. ** The calling procedure is responsible for deleting the compiled ** SQL statement using [sqlite3_finalize()] after it has finished with it. ** ppStmt may not be NULL. ** ** ^On success, the sqlite3_prepare() family of routines return [SQLITE_OK]; ** otherwise an [error code] is returned. ** ** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are ** recommended for all new programs. The two older interfaces are retained ** for backwards compatibility, but their use is discouraged. ** ^In the "v2" interfaces, the prepared statement ** that is returned (the [sqlite3_stmt] object) contains a copy of the ** original SQL text. This causes the [sqlite3_step()] interface to ** behave differently in three ways: ** **
    **
  1. ** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it ** always used to do, [sqlite3_step()] will automatically recompile the SQL ** statement and try to run it again. **
  2. ** **
  3. ** ^When an error occurs, [sqlite3_step()] will return one of the detailed ** [error codes] or [extended error codes]. ^The legacy behavior was that ** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code ** and the application would have to make a second call to [sqlite3_reset()] ** in order to find the underlying cause of the problem. With the "v2" prepare ** interfaces, the underlying reason for the error is returned immediately. **
  4. ** **
  5. ** ^If the specific value bound to [parameter | host parameter] in the ** WHERE clause might influence the choice of query plan for a statement, ** then the statement will be automatically recompiled, as if there had been ** a schema change, on the first [sqlite3_step()] call following any change ** to the [sqlite3_bind_text | bindings] of that [parameter]. ** ^The specific value of WHERE-clause [parameter] might influence the ** choice of query plan if the parameter is the left-hand side of a [LIKE] ** or [GLOB] operator or if the parameter is compared to an indexed column ** and the [SQLITE_ENABLE_STAT2] compile-time option is enabled. ** the **
  6. **
*/ SQLITE_API int sqlite3_prepare( sqlite3 *db, /* Database handle */ const char *zSql, /* SQL statement, UTF-8 encoded */ int nByte, /* Maximum length of zSql in bytes. */ sqlite3_stmt **ppStmt, /* OUT: Statement handle */ const char **pzTail /* OUT: Pointer to unused portion of zSql */ ); SQLITE_API int sqlite3_prepare_v2( sqlite3 *db, /* Database handle */ const char *zSql, /* SQL statement, UTF-8 encoded */ int nByte, /* Maximum length of zSql in bytes. */ sqlite3_stmt **ppStmt, /* OUT: Statement handle */ const char **pzTail /* OUT: Pointer to unused portion of zSql */ ); SQLITE_API int sqlite3_prepare16( sqlite3 *db, /* Database handle */ const void *zSql, /* SQL statement, UTF-16 encoded */ int nByte, /* Maximum length of zSql in bytes. */ sqlite3_stmt **ppStmt, /* OUT: Statement handle */ const void **pzTail /* OUT: Pointer to unused portion of zSql */ ); SQLITE_API int sqlite3_prepare16_v2( sqlite3 *db, /* Database handle */ const void *zSql, /* SQL statement, UTF-16 encoded */ int nByte, /* Maximum length of zSql in bytes. */ sqlite3_stmt **ppStmt, /* OUT: Statement handle */ const void **pzTail /* OUT: Pointer to unused portion of zSql */ ); /* ** CAPI3REF: Retrieving Statement SQL ** ** ^This interface can be used to retrieve a saved copy of the original ** SQL text used to create a [prepared statement] if that statement was ** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()]. */ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt); /* ** CAPI3REF: Determine If An SQL Statement Writes The Database ** ** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if ** the [prepared statement] X is [SELECT] statement and false (zero) if ** X is an [INSERT], [UPDATE], [DELETE], CREATE, DROP, [ANALYZE], ** [ALTER], or [REINDEX] statement. ** If X is a NULL pointer or any other kind of statement, including but ** not limited to [ATTACH], [DETACH], [COMMIT], [ROLLBACK], [RELEASE], ** [SAVEPOINT], [PRAGMA], or [VACUUM] the result of sqlite3_stmt_readonly(X) is ** undefined. */ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt); /* ** CAPI3REF: Dynamically Typed Value Object ** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value} ** ** SQLite uses the sqlite3_value object to represent all values ** that can be stored in a database table. SQLite uses dynamic typing ** for the values it stores. ^Values stored in sqlite3_value objects ** can be integers, floating point values, strings, BLOBs, or NULL. ** ** An sqlite3_value object may be either "protected" or "unprotected". ** Some interfaces require a protected sqlite3_value. Other interfaces ** will accept either a protected or an unprotected sqlite3_value. ** Every interface that accepts sqlite3_value arguments specifies ** whether or not it requires a protected sqlite3_value. ** ** The terms "protected" and "unprotected" refer to whether or not ** a mutex is held. A internal mutex is held for a protected ** sqlite3_value object but no mutex is held for an unprotected ** sqlite3_value object. If SQLite is compiled to be single-threaded ** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0) ** or if SQLite is run in one of reduced mutex modes ** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD] ** then there is no distinction between protected and unprotected ** sqlite3_value objects and they can be used interchangeably. However, ** for maximum code portability it is recommended that applications ** still make the distinction between protected and unprotected ** sqlite3_value objects even when not strictly required. ** ** ^The sqlite3_value objects that are passed as parameters into the ** implementation of [application-defined SQL functions] are protected. ** ^The sqlite3_value object returned by ** [sqlite3_column_value()] is unprotected. ** Unprotected sqlite3_value objects may only be used with ** [sqlite3_result_value()] and [sqlite3_bind_value()]. ** The [sqlite3_value_blob | sqlite3_value_type()] family of ** interfaces require protected sqlite3_value objects. */ typedef struct Mem sqlite3_value; /* ** CAPI3REF: SQL Function Context Object ** ** The context in which an SQL function executes is stored in an ** sqlite3_context object. ^A pointer to an sqlite3_context object ** is always first parameter to [application-defined SQL functions]. ** The application-defined SQL function implementation will pass this ** pointer through into calls to [sqlite3_result_int | sqlite3_result()], ** [sqlite3_aggregate_context()], [sqlite3_user_data()], ** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()], ** and/or [sqlite3_set_auxdata()]. */ typedef struct sqlite3_context sqlite3_context; /* ** CAPI3REF: Binding Values To Prepared Statements ** KEYWORDS: {host parameter} {host parameters} {host parameter name} ** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding} ** ** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants, ** literals may be replaced by a [parameter] that matches one of following ** templates: ** **
    **
  • ? **
  • ?NNN **
  • :VVV **
  • @VVV **
  • $VVV **
** ** In the templates above, NNN represents an integer literal, ** and VVV represents an alphanumeric identifier.)^ ^The values of these ** parameters (also called "host parameter names" or "SQL parameters") ** can be set using the sqlite3_bind_*() routines defined here. ** ** ^The first argument to the sqlite3_bind_*() routines is always ** a pointer to the [sqlite3_stmt] object returned from ** [sqlite3_prepare_v2()] or its variants. ** ** ^The second argument is the index of the SQL parameter to be set. ** ^The leftmost SQL parameter has an index of 1. ^When the same named ** SQL parameter is used more than once, second and subsequent ** occurrences have the same index as the first occurrence. ** ^The index for named parameters can be looked up using the ** [sqlite3_bind_parameter_index()] API if desired. ^The index ** for "?NNN" parameters is the value of NNN. ** ^The NNN value must be between 1 and the [sqlite3_limit()] ** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). ** ** ^The third argument is the value to bind to the parameter. ** ** ^(In those routines that have a fourth argument, its value is the ** number of bytes in the parameter. To be clear: the value is the ** number of bytes in the value, not the number of characters.)^ ** ^If the fourth parameter is negative, the length of the string is ** the number of bytes up to the first zero terminator. ** ** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and ** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or ** string after SQLite has finished with it. ^The destructor is called ** to dispose of the BLOB or string even if the call to sqlite3_bind_blob(), ** sqlite3_bind_text(), or sqlite3_bind_text16() fails. ** ^If the fifth argument is ** the special value [SQLITE_STATIC], then SQLite assumes that the ** information is in static, unmanaged space and does not need to be freed. ** ^If the fifth argument has the value [SQLITE_TRANSIENT], then ** SQLite makes its own private copy of the data immediately, before ** the sqlite3_bind_*() routine returns. ** ** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that ** is filled with zeroes. ^A zeroblob uses a fixed amount of memory ** (just an integer to hold its size) while it is being processed. ** Zeroblobs are intended to serve as placeholders for BLOBs whose ** content is later written using ** [sqlite3_blob_open | incremental BLOB I/O] routines. ** ^A negative value for the zeroblob results in a zero-length BLOB. ** ** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer ** for the [prepared statement] or with a prepared statement for which ** [sqlite3_step()] has been called more recently than [sqlite3_reset()], ** then the call will return [SQLITE_MISUSE]. If any sqlite3_bind_() ** routine is passed a [prepared statement] that has been finalized, the ** result is undefined and probably harmful. ** ** ^Bindings are not cleared by the [sqlite3_reset()] routine. ** ^Unbound parameters are interpreted as NULL. ** ** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an ** [error code] if anything goes wrong. ** ^[SQLITE_RANGE] is returned if the parameter ** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails. ** ** See also: [sqlite3_bind_parameter_count()], ** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()]. */ SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double); SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int); SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64); SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int); SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*)); SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*)); SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*); SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n); /* ** CAPI3REF: Number Of SQL Parameters ** ** ^This routine can be used to find the number of [SQL parameters] ** in a [prepared statement]. SQL parameters are tokens of the ** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as ** placeholders for values that are [sqlite3_bind_blob | bound] ** to the parameters at a later time. ** ** ^(This routine actually returns the index of the largest (rightmost) ** parameter. For all forms except ?NNN, this will correspond to the ** number of unique parameters. If parameters of the ?NNN form are used, ** there may be gaps in the list.)^ ** ** See also: [sqlite3_bind_blob|sqlite3_bind()], ** [sqlite3_bind_parameter_name()], and ** [sqlite3_bind_parameter_index()]. */ SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*); /* ** CAPI3REF: Name Of A Host Parameter ** ** ^The sqlite3_bind_parameter_name(P,N) interface returns ** the name of the N-th [SQL parameter] in the [prepared statement] P. ** ^(SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA" ** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA" ** respectively. ** In other words, the initial ":" or "$" or "@" or "?" ** is included as part of the name.)^ ** ^Parameters of the form "?" without a following integer have no name ** and are referred to as "nameless" or "anonymous parameters". ** ** ^The first host parameter has an index of 1, not 0. ** ** ^If the value N is out of range or if the N-th parameter is ** nameless, then NULL is returned. ^The returned string is ** always in UTF-8 encoding even if the named parameter was ** originally specified as UTF-16 in [sqlite3_prepare16()] or ** [sqlite3_prepare16_v2()]. ** ** See also: [sqlite3_bind_blob|sqlite3_bind()], ** [sqlite3_bind_parameter_count()], and ** [sqlite3_bind_parameter_index()]. */ SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int); /* ** CAPI3REF: Index Of A Parameter With A Given Name ** ** ^Return the index of an SQL parameter given its name. ^The ** index value returned is suitable for use as the second ** parameter to [sqlite3_bind_blob|sqlite3_bind()]. ^A zero ** is returned if no matching parameter is found. ^The parameter ** name must be given in UTF-8 even if the original statement ** was prepared from UTF-16 text using [sqlite3_prepare16_v2()]. ** ** See also: [sqlite3_bind_blob|sqlite3_bind()], ** [sqlite3_bind_parameter_count()], and ** [sqlite3_bind_parameter_index()]. */ SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName); /* ** CAPI3REF: Reset All Bindings On A Prepared Statement ** ** ^Contrary to the intuition of many, [sqlite3_reset()] does not reset ** the [sqlite3_bind_blob | bindings] on a [prepared statement]. ** ^Use this routine to reset all host parameters to NULL. */ SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*); /* ** CAPI3REF: Number Of Columns In A Result Set ** ** ^Return the number of columns in the result set returned by the ** [prepared statement]. ^This routine returns 0 if pStmt is an SQL ** statement that does not return data (for example an [UPDATE]). ** ** See also: [sqlite3_data_count()] */ SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt); /* ** CAPI3REF: Column Names In A Result Set ** ** ^These routines return the name assigned to a particular column ** in the result set of a [SELECT] statement. ^The sqlite3_column_name() ** interface returns a pointer to a zero-terminated UTF-8 string ** and sqlite3_column_name16() returns a pointer to a zero-terminated ** UTF-16 string. ^The first parameter is the [prepared statement] ** that implements the [SELECT] statement. ^The second parameter is the ** column number. ^The leftmost column is number 0. ** ** ^The returned string pointer is valid until either the [prepared statement] ** is destroyed by [sqlite3_finalize()] or until the next call to ** sqlite3_column_name() or sqlite3_column_name16() on the same column. ** ** ^If sqlite3_malloc() fails during the processing of either routine ** (for example during a conversion from UTF-8 to UTF-16) then a ** NULL pointer is returned. ** ** ^The name of a result column is the value of the "AS" clause for ** that column, if there is an AS clause. If there is no AS clause ** then the name of the column is unspecified and may change from ** one release of SQLite to the next. */ SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N); SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N); /* ** CAPI3REF: Source Of Data In A Query Result ** ** ^These routines provide a means to determine the database, table, and ** table column that is the origin of a particular result column in ** [SELECT] statement. ** ^The name of the database or table or column can be returned as ** either a UTF-8 or UTF-16 string. ^The _database_ routines return ** the database name, the _table_ routines return the table name, and ** the origin_ routines return the column name. ** ^The returned string is valid until the [prepared statement] is destroyed ** using [sqlite3_finalize()] or until the same information is requested ** again in a different encoding. ** ** ^The names returned are the original un-aliased names of the ** database, table, and column. ** ** ^The first argument to these interfaces is a [prepared statement]. ** ^These functions return information about the Nth result column returned by ** the statement, where N is the second function argument. ** ^The left-most column is column 0 for these routines. ** ** ^If the Nth column returned by the statement is an expression or ** subquery and is not a column value, then all of these functions return ** NULL. ^These routine might also return NULL if a memory allocation error ** occurs. ^Otherwise, they return the name of the attached database, table, ** or column that query result column was extracted from. ** ** ^As with all other SQLite APIs, those whose names end with "16" return ** UTF-16 encoded strings and the other functions return UTF-8. ** ** ^These APIs are only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol. ** ** If two or more threads call one or more of these routines against the same ** prepared statement and column at the same time then the results are ** undefined. ** ** If two or more threads call one or more ** [sqlite3_column_database_name | column metadata interfaces] ** for the same [prepared statement] and result column ** at the same time then the results are undefined. */ SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int); SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int); /* ** CAPI3REF: Declared Datatype Of A Query Result ** ** ^(The first parameter is a [prepared statement]. ** If this statement is a [SELECT] statement and the Nth column of the ** returned result set of that [SELECT] is a table column (not an ** expression or subquery) then the declared type of the table ** column is returned.)^ ^If the Nth column of the result set is an ** expression or subquery, then a NULL pointer is returned. ** ^The returned string is always UTF-8 encoded. ** ** ^(For example, given the database schema: ** ** CREATE TABLE t1(c1 VARIANT); ** ** and the following statement to be compiled: ** ** SELECT c1 + 1, c1 FROM t1; ** ** this routine would return the string "VARIANT" for the second result ** column (i==1), and a NULL pointer for the first result column (i==0).)^ ** ** ^SQLite uses dynamic run-time typing. ^So just because a column ** is declared to contain a particular type does not mean that the ** data stored in that column is of the declared type. SQLite is ** strongly typed, but the typing is dynamic not static. ^Type ** is associated with individual values, not with the containers ** used to hold those values. */ SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int); SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int); /* ** CAPI3REF: Evaluate An SQL Statement ** ** After a [prepared statement] has been prepared using either ** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy ** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function ** must be called one or more times to evaluate the statement. ** ** The details of the behavior of the sqlite3_step() interface depend ** on whether the statement was prepared using the newer "v2" interface ** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy ** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the ** new "v2" interface is recommended for new applications but the legacy ** interface will continue to be supported. ** ** ^In the legacy interface, the return value will be either [SQLITE_BUSY], ** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE]. ** ^With the "v2" interface, any of the other [result codes] or ** [extended result codes] might be returned as well. ** ** ^[SQLITE_BUSY] means that the database engine was unable to acquire the ** database locks it needs to do its job. ^If the statement is a [COMMIT] ** or occurs outside of an explicit transaction, then you can retry the ** statement. If the statement is not a [COMMIT] and occurs within a ** explicit transaction then you should rollback the transaction before ** continuing. ** ** ^[SQLITE_DONE] means that the statement has finished executing ** successfully. sqlite3_step() should not be called again on this virtual ** machine without first calling [sqlite3_reset()] to reset the virtual ** machine back to its initial state. ** ** ^If the SQL statement being executed returns any data, then [SQLITE_ROW] ** is returned each time a new row of data is ready for processing by the ** caller. The values may be accessed using the [column access functions]. ** sqlite3_step() is called again to retrieve the next row of data. ** ** ^[SQLITE_ERROR] means that a run-time error (such as a constraint ** violation) has occurred. sqlite3_step() should not be called again on ** the VM. More information may be found by calling [sqlite3_errmsg()]. ** ^With the legacy interface, a more specific error code (for example, ** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth) ** can be obtained by calling [sqlite3_reset()] on the ** [prepared statement]. ^In the "v2" interface, ** the more specific error code is returned directly by sqlite3_step(). ** ** [SQLITE_MISUSE] means that the this routine was called inappropriately. ** Perhaps it was called on a [prepared statement] that has ** already been [sqlite3_finalize | finalized] or on one that had ** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could ** be the case that the same database connection is being used by two or ** more threads at the same moment in time. ** ** For all versions of SQLite up to and including 3.6.23.1, it was required ** after sqlite3_step() returned anything other than [SQLITE_ROW] that ** [sqlite3_reset()] be called before any subsequent invocation of ** sqlite3_step(). Failure to invoke [sqlite3_reset()] in this way would ** result in an [SQLITE_MISUSE] return from sqlite3_step(). But after ** version 3.6.23.1, sqlite3_step() began calling [sqlite3_reset()] ** automatically in this circumstance rather than returning [SQLITE_MISUSE]. ** ** Goofy Interface Alert: In the legacy interface, the sqlite3_step() ** API always returns a generic error code, [SQLITE_ERROR], following any ** error other than [SQLITE_BUSY] and [SQLITE_MISUSE]. You must call ** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the ** specific [error codes] that better describes the error. ** We admit that this is a goofy design. The problem has been fixed ** with the "v2" interface. If you prepare all of your SQL statements ** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead ** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces, ** then the more specific [error codes] are returned directly ** by sqlite3_step(). The use of the "v2" interface is recommended. */ SQLITE_API int sqlite3_step(sqlite3_stmt*); /* ** CAPI3REF: Number of columns in a result set ** ** ^The sqlite3_data_count(P) interface returns the number of columns in the ** current row of the result set of [prepared statement] P. ** ^If prepared statement P does not have results ready to return ** (via calls to the [sqlite3_column_int | sqlite3_column_*()] of ** interfaces) then sqlite3_data_count(P) returns 0. ** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer. ** ** See also: [sqlite3_column_count()] */ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt); /* ** CAPI3REF: Fundamental Datatypes ** KEYWORDS: SQLITE_TEXT ** ** ^(Every value in SQLite has one of five fundamental datatypes: ** **
    **
  • 64-bit signed integer **
  • 64-bit IEEE floating point number **
  • string **
  • BLOB **
  • NULL **
)^ ** ** These constants are codes for each of those types. ** ** Note that the SQLITE_TEXT constant was also used in SQLite version 2 ** for a completely different meaning. Software that links against both ** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not ** SQLITE_TEXT. */ #define SQLITE_INTEGER 1 #define SQLITE_FLOAT 2 #define SQLITE_BLOB 4 #define SQLITE_NULL 5 #ifdef SQLITE_TEXT # undef SQLITE_TEXT #else # define SQLITE_TEXT 3 #endif #define SQLITE3_TEXT 3 /* ** CAPI3REF: Result Values From A Query ** KEYWORDS: {column access functions} ** ** These routines form the "result set" interface. ** ** ^These routines return information about a single column of the current ** result row of a query. ^In every case the first argument is a pointer ** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*] ** that was returned from [sqlite3_prepare_v2()] or one of its variants) ** and the second argument is the index of the column for which information ** should be returned. ^The leftmost column of the result set has the index 0. ** ^The number of columns in the result can be determined using ** [sqlite3_column_count()]. ** ** If the SQL statement does not currently point to a valid row, or if the ** column index is out of range, the result is undefined. ** These routines may only be called when the most recent call to ** [sqlite3_step()] has returned [SQLITE_ROW] and neither ** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently. ** If any of these routines are called after [sqlite3_reset()] or ** [sqlite3_finalize()] or after [sqlite3_step()] has returned ** something other than [SQLITE_ROW], the results are undefined. ** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()] ** are called from a different thread while any of these routines ** are pending, then the results are undefined. ** ** ^The sqlite3_column_type() routine returns the ** [SQLITE_INTEGER | datatype code] for the initial data type ** of the result column. ^The returned value is one of [SQLITE_INTEGER], ** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value ** returned by sqlite3_column_type() is only meaningful if no type ** conversions have occurred as described below. After a type conversion, ** the value returned by sqlite3_column_type() is undefined. Future ** versions of SQLite may change the behavior of sqlite3_column_type() ** following a type conversion. ** ** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes() ** routine returns the number of bytes in that BLOB or string. ** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts ** the string to UTF-8 and then returns the number of bytes. ** ^If the result is a numeric value then sqlite3_column_bytes() uses ** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns ** the number of bytes in that string. ** ^If the result is NULL, then sqlite3_column_bytes() returns zero. ** ** ^If the result is a BLOB or UTF-16 string then the sqlite3_column_bytes16() ** routine returns the number of bytes in that BLOB or string. ** ^If the result is a UTF-8 string, then sqlite3_column_bytes16() converts ** the string to UTF-16 and then returns the number of bytes. ** ^If the result is a numeric value then sqlite3_column_bytes16() uses ** [sqlite3_snprintf()] to convert that value to a UTF-16 string and returns ** the number of bytes in that string. ** ^If the result is NULL, then sqlite3_column_bytes16() returns zero. ** ** ^The values returned by [sqlite3_column_bytes()] and ** [sqlite3_column_bytes16()] do not include the zero terminators at the end ** of the string. ^For clarity: the values returned by ** [sqlite3_column_bytes()] and [sqlite3_column_bytes16()] are the number of ** bytes in the string, not the number of characters. ** ** ^Strings returned by sqlite3_column_text() and sqlite3_column_text16(), ** even empty strings, are always zero terminated. ^The return ** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer. ** ** ^The object returned by [sqlite3_column_value()] is an ** [unprotected sqlite3_value] object. An unprotected sqlite3_value object ** may only be used with [sqlite3_bind_value()] and [sqlite3_result_value()]. ** If the [unprotected sqlite3_value] object returned by ** [sqlite3_column_value()] is used in any other way, including calls ** to routines like [sqlite3_value_int()], [sqlite3_value_text()], ** or [sqlite3_value_bytes()], then the behavior is undefined. ** ** These routines attempt to convert the value where appropriate. ^For ** example, if the internal representation is FLOAT and a text result ** is requested, [sqlite3_snprintf()] is used internally to perform the ** conversion automatically. ^(The following table details the conversions ** that are applied: ** **
** **
Internal
Type
Requested
Type
Conversion ** **
NULL INTEGER Result is 0 **
NULL FLOAT Result is 0.0 **
NULL TEXT Result is NULL pointer **
NULL BLOB Result is NULL pointer **
INTEGER FLOAT Convert from integer to float **
INTEGER TEXT ASCII rendering of the integer **
INTEGER BLOB Same as INTEGER->TEXT **
FLOAT INTEGER Convert from float to integer **
FLOAT TEXT ASCII rendering of the float **
FLOAT BLOB Same as FLOAT->TEXT **
TEXT INTEGER Use atoi() **
TEXT FLOAT Use atof() **
TEXT BLOB No change **
BLOB INTEGER Convert to TEXT then use atoi() **
BLOB FLOAT Convert to TEXT then use atof() **
BLOB TEXT Add a zero terminator if needed **
**
)^ ** ** The table above makes reference to standard C library functions atoi() ** and atof(). SQLite does not really use these functions. It has its ** own equivalent internal routines. The atoi() and atof() names are ** used in the table for brevity and because they are familiar to most ** C programmers. ** ** Note that when type conversions occur, pointers returned by prior ** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or ** sqlite3_column_text16() may be invalidated. ** Type conversions and pointer invalidations might occur ** in the following cases: ** **
    **
  • The initial content is a BLOB and sqlite3_column_text() or ** sqlite3_column_text16() is called. A zero-terminator might ** need to be added to the string.
  • **
  • The initial content is UTF-8 text and sqlite3_column_bytes16() or ** sqlite3_column_text16() is called. The content must be converted ** to UTF-16.
  • **
  • The initial content is UTF-16 text and sqlite3_column_bytes() or ** sqlite3_column_text() is called. The content must be converted ** to UTF-8.
  • **
** ** ^Conversions between UTF-16be and UTF-16le are always done in place and do ** not invalidate a prior pointer, though of course the content of the buffer ** that the prior pointer references will have been modified. Other kinds ** of conversion are done in place when it is possible, but sometimes they ** are not possible and in those cases prior pointers are invalidated. ** ** The safest and easiest to remember policy is to invoke these routines ** in one of the following ways: ** **
    **
  • sqlite3_column_text() followed by sqlite3_column_bytes()
  • **
  • sqlite3_column_blob() followed by sqlite3_column_bytes()
  • **
  • sqlite3_column_text16() followed by sqlite3_column_bytes16()
  • **
** ** In other words, you should call sqlite3_column_text(), ** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result ** into the desired format, then invoke sqlite3_column_bytes() or ** sqlite3_column_bytes16() to find the size of the result. Do not mix calls ** to sqlite3_column_text() or sqlite3_column_blob() with calls to ** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16() ** with calls to sqlite3_column_bytes(). ** ** ^The pointers returned are valid until a type conversion occurs as ** described above, or until [sqlite3_step()] or [sqlite3_reset()] or ** [sqlite3_finalize()] is called. ^The memory space used to hold strings ** and BLOBs is freed automatically. Do not pass the pointers returned ** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into ** [sqlite3_free()]. ** ** ^(If a memory allocation error occurs during the evaluation of any ** of these routines, a default value is returned. The default value ** is either the integer 0, the floating point number 0.0, or a NULL ** pointer. Subsequent calls to [sqlite3_errcode()] will return ** [SQLITE_NOMEM].)^ */ SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol); SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol); SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol); /* ** CAPI3REF: Destroy A Prepared Statement Object ** ** ^The sqlite3_finalize() function is called to delete a [prepared statement]. ** ^If the most recent evaluation of the statement encountered no errors or ** or if the statement is never been evaluated, then sqlite3_finalize() returns ** SQLITE_OK. ^If the most recent evaluation of statement S failed, then ** sqlite3_finalize(S) returns the appropriate [error code] or ** [extended error code]. ** ** ^The sqlite3_finalize(S) routine can be called at any point during ** the life cycle of [prepared statement] S: ** before statement S is ever evaluated, after ** one or more calls to [sqlite3_reset()], or after any call ** to [sqlite3_step()] regardless of whether or not the statement has ** completed execution. ** ** ^Invoking sqlite3_finalize() on a NULL pointer is a harmless no-op. ** ** The application must finalize every [prepared statement] in order to avoid ** resource leaks. It is a grievous error for the application to try to use ** a prepared statement after it has been finalized. Any use of a prepared ** statement after it has been finalized can result in undefined and ** undesirable behavior such as segfaults and heap corruption. */ SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt); /* ** CAPI3REF: Reset A Prepared Statement Object ** ** The sqlite3_reset() function is called to reset a [prepared statement] ** object back to its initial state, ready to be re-executed. ** ^Any SQL statement variables that had values bound to them using ** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values. ** Use [sqlite3_clear_bindings()] to reset the bindings. ** ** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S ** back to the beginning of its program. ** ** ^If the most recent call to [sqlite3_step(S)] for the ** [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE], ** or if [sqlite3_step(S)] has never before been called on S, ** then [sqlite3_reset(S)] returns [SQLITE_OK]. ** ** ^If the most recent call to [sqlite3_step(S)] for the ** [prepared statement] S indicated an error, then ** [sqlite3_reset(S)] returns an appropriate [error code]. ** ** ^The [sqlite3_reset(S)] interface does not change the values ** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S. */ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt); /* ** CAPI3REF: Create Or Redefine SQL Functions ** KEYWORDS: {function creation routines} ** KEYWORDS: {application-defined SQL function} ** KEYWORDS: {application-defined SQL functions} ** ** ^These functions (collectively known as "function creation routines") ** are used to add SQL functions or aggregates or to redefine the behavior ** of existing SQL functions or aggregates. The only differences between ** these routines are the text encoding expected for ** the the second parameter (the name of the function being created) ** and the presence or absence of a destructor callback for ** the application data pointer. ** ** ^The first parameter is the [database connection] to which the SQL ** function is to be added. ^If an application uses more than one database ** connection then application-defined SQL functions must be added ** to each database connection separately. ** ** ^The second parameter is the name of the SQL function to be created or ** redefined. ^The length of the name is limited to 255 bytes in a UTF-8 ** representation, exclusive of the zero-terminator. ^Note that the name ** length limit is in UTF-8 bytes, not characters nor UTF-16 bytes. ** ^Any attempt to create a function with a longer name ** will result in [SQLITE_MISUSE] being returned. ** ** ^The third parameter (nArg) ** is the number of arguments that the SQL function or ** aggregate takes. ^If this parameter is -1, then the SQL function or ** aggregate may take any number of arguments between 0 and the limit ** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]). If the third ** parameter is less than -1 or greater than 127 then the behavior is ** undefined. ** ** ^The fourth parameter, eTextRep, specifies what ** [SQLITE_UTF8 | text encoding] this SQL function prefers for ** its parameters. Every SQL function implementation must be able to work ** with UTF-8, UTF-16le, or UTF-16be. But some implementations may be ** more efficient with one encoding than another. ^An application may ** invoke sqlite3_create_function() or sqlite3_create_function16() multiple ** times with the same function but with different values of eTextRep. ** ^When multiple implementations of the same function are available, SQLite ** will pick the one that involves the least amount of data conversion. ** If there is only a single implementation which does not care what text ** encoding is used, then the fourth argument should be [SQLITE_ANY]. ** ** ^(The fifth parameter is an arbitrary pointer. The implementation of the ** function can gain access to this pointer using [sqlite3_user_data()].)^ ** ** ^The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are ** pointers to C-language functions that implement the SQL function or ** aggregate. ^A scalar SQL function requires an implementation of the xFunc ** callback only; NULL pointers must be passed as the xStep and xFinal ** parameters. ^An aggregate SQL function requires an implementation of xStep ** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing ** SQL function or aggregate, pass NULL poiners for all three function ** callbacks. ** ** ^(If the tenth parameter to sqlite3_create_function_v2() is not NULL, ** then it is destructor for the application data pointer. ** The destructor is invoked when the function is deleted, either by being ** overloaded or when the database connection closes.)^ ** ^The destructor is also invoked if the call to ** sqlite3_create_function_v2() fails. ** ^When the destructor callback of the tenth parameter is invoked, it ** is passed a single argument which is a copy of the application data ** pointer which was the fifth parameter to sqlite3_create_function_v2(). ** ** ^It is permitted to register multiple implementations of the same ** functions with the same name but with either differing numbers of ** arguments or differing preferred text encodings. ^SQLite will use ** the implementation that most closely matches the way in which the ** SQL function is used. ^A function implementation with a non-negative ** nArg parameter is a better match than a function implementation with ** a negative nArg. ^A function where the preferred text encoding ** matches the database encoding is a better ** match than a function where the encoding is different. ** ^A function where the encoding difference is between UTF16le and UTF16be ** is a closer match than a function where the encoding difference is ** between UTF8 and UTF16. ** ** ^Built-in functions may be overloaded by new application-defined functions. ** ** ^An application-defined function is permitted to call other ** SQLite interfaces. However, such calls must not ** close the database connection nor finalize or reset the prepared ** statement in which the function is running. */ SQLITE_API int sqlite3_create_function( sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void (*xFunc)(sqlite3_context*,int,sqlite3_value**), void (*xStep)(sqlite3_context*,int,sqlite3_value**), void (*xFinal)(sqlite3_context*) ); SQLITE_API int sqlite3_create_function16( sqlite3 *db, const void *zFunctionName, int nArg, int eTextRep, void *pApp, void (*xFunc)(sqlite3_context*,int,sqlite3_value**), void (*xStep)(sqlite3_context*,int,sqlite3_value**), void (*xFinal)(sqlite3_context*) ); SQLITE_API int sqlite3_create_function_v2( sqlite3 *db, const char *zFunctionName, int nArg, int eTextRep, void *pApp, void (*xFunc)(sqlite3_context*,int,sqlite3_value**), void (*xStep)(sqlite3_context*,int,sqlite3_value**), void (*xFinal)(sqlite3_context*), void(*xDestroy)(void*) ); /* ** CAPI3REF: Text Encodings ** ** These constant define integer codes that represent the various ** text encodings supported by SQLite. */ #define SQLITE_UTF8 1 #define SQLITE_UTF16LE 2 #define SQLITE_UTF16BE 3 #define SQLITE_UTF16 4 /* Use native byte order */ #define SQLITE_ANY 5 /* sqlite3_create_function only */ #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ /* ** CAPI3REF: Deprecated Functions ** DEPRECATED ** ** These functions are [deprecated]. In order to maintain ** backwards compatibility with older code, these functions continue ** to be supported. However, new applications should avoid ** the use of these functions. To help encourage people to avoid ** using these functions, we are not going to tell you what they do. */ #ifndef SQLITE_OMIT_DEPRECATED SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*); SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*); SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*); SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void); SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void); SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64); #endif /* ** CAPI3REF: Obtaining SQL Function Parameter Values ** ** The C-language implementation of SQL functions and aggregates uses ** this set of interface routines to access the parameter values on ** the function or aggregate. ** ** The xFunc (for scalar functions) or xStep (for aggregates) parameters ** to [sqlite3_create_function()] and [sqlite3_create_function16()] ** define callbacks that implement the SQL functions and aggregates. ** The 4th parameter to these callbacks is an array of pointers to ** [protected sqlite3_value] objects. There is one [sqlite3_value] object for ** each parameter to the SQL function. These routines are used to ** extract values from the [sqlite3_value] objects. ** ** These routines work only with [protected sqlite3_value] objects. ** Any attempt to use these routines on an [unprotected sqlite3_value] ** object results in undefined behavior. ** ** ^These routines work just like the corresponding [column access functions] ** except that these routines take a single [protected sqlite3_value] object ** pointer instead of a [sqlite3_stmt*] pointer and an integer column number. ** ** ^The sqlite3_value_text16() interface extracts a UTF-16 string ** in the native byte-order of the host machine. ^The ** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces ** extract UTF-16 strings as big-endian and little-endian respectively. ** ** ^(The sqlite3_value_numeric_type() interface attempts to apply ** numeric affinity to the value. This means that an attempt is ** made to convert the value to an integer or floating point. If ** such a conversion is possible without loss of information (in other ** words, if the value is a string that looks like a number) ** then the conversion is performed. Otherwise no conversion occurs. ** The [SQLITE_INTEGER | datatype] after conversion is returned.)^ ** ** Please pay particular attention to the fact that the pointer returned ** from [sqlite3_value_blob()], [sqlite3_value_text()], or ** [sqlite3_value_text16()] can be invalidated by a subsequent call to ** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()], ** or [sqlite3_value_text16()]. ** ** These routines must be called from the same thread as ** the SQL function that supplied the [sqlite3_value*] parameters. */ SQLITE_API const void *sqlite3_value_blob(sqlite3_value*); SQLITE_API int sqlite3_value_bytes(sqlite3_value*); SQLITE_API int sqlite3_value_bytes16(sqlite3_value*); SQLITE_API double sqlite3_value_double(sqlite3_value*); SQLITE_API int sqlite3_value_int(sqlite3_value*); SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*); SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*); SQLITE_API const void *sqlite3_value_text16(sqlite3_value*); SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*); SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*); SQLITE_API int sqlite3_value_type(sqlite3_value*); SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*); /* ** CAPI3REF: Obtain Aggregate Function Context ** ** Implementations of aggregate SQL functions use this ** routine to allocate memory for storing their state. ** ** ^The first time the sqlite3_aggregate_context(C,N) routine is called ** for a particular aggregate function, SQLite ** allocates N of memory, zeroes out that memory, and returns a pointer ** to the new memory. ^On second and subsequent calls to ** sqlite3_aggregate_context() for the same aggregate function instance, ** the same buffer is returned. Sqlite3_aggregate_context() is normally ** called once for each invocation of the xStep callback and then one ** last time when the xFinal callback is invoked. ^(When no rows match ** an aggregate query, the xStep() callback of the aggregate function ** implementation is never called and xFinal() is called exactly once. ** In those cases, sqlite3_aggregate_context() might be called for the ** first time from within xFinal().)^ ** ** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer if N is ** less than or equal to zero or if a memory allocate error occurs. ** ** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is ** determined by the N parameter on first successful call. Changing the ** value of N in subsequent call to sqlite3_aggregate_context() within ** the same aggregate function instance will not resize the memory ** allocation.)^ ** ** ^SQLite automatically frees the memory allocated by ** sqlite3_aggregate_context() when the aggregate query concludes. ** ** The first parameter must be a copy of the ** [sqlite3_context | SQL function context] that is the first parameter ** to the xStep or xFinal callback routine that implements the aggregate ** function. ** ** This routine must be called from the same thread in which ** the aggregate SQL function is running. */ SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes); /* ** CAPI3REF: User Data For Functions ** ** ^The sqlite3_user_data() interface returns a copy of ** the pointer that was the pUserData parameter (the 5th parameter) ** of the [sqlite3_create_function()] ** and [sqlite3_create_function16()] routines that originally ** registered the application defined function. ** ** This routine must be called from the same thread in which ** the application-defined function is running. */ SQLITE_API void *sqlite3_user_data(sqlite3_context*); /* ** CAPI3REF: Database Connection For Functions ** ** ^The sqlite3_context_db_handle() interface returns a copy of ** the pointer to the [database connection] (the 1st parameter) ** of the [sqlite3_create_function()] ** and [sqlite3_create_function16()] routines that originally ** registered the application defined function. */ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*); /* ** CAPI3REF: Function Auxiliary Data ** ** The following two functions may be used by scalar SQL functions to ** associate metadata with argument values. If the same value is passed to ** multiple invocations of the same SQL function during query execution, under ** some circumstances the associated metadata may be preserved. This may ** be used, for example, to add a regular-expression matching scalar ** function. The compiled version of the regular expression is stored as ** metadata associated with the SQL value passed as the regular expression ** pattern. The compiled regular expression can be reused on multiple ** invocations of the same function so that the original pattern string ** does not need to be recompiled on each invocation. ** ** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata ** associated by the sqlite3_set_auxdata() function with the Nth argument ** value to the application-defined function. ^If no metadata has been ever ** been set for the Nth argument of the function, or if the corresponding ** function parameter has changed since the meta-data was set, ** then sqlite3_get_auxdata() returns a NULL pointer. ** ** ^The sqlite3_set_auxdata() interface saves the metadata ** pointed to by its 3rd parameter as the metadata for the N-th ** argument of the application-defined function. Subsequent ** calls to sqlite3_get_auxdata() might return this data, if it has ** not been destroyed. ** ^If it is not NULL, SQLite will invoke the destructor ** function given by the 4th parameter to sqlite3_set_auxdata() on ** the metadata when the corresponding function parameter changes ** or when the SQL statement completes, whichever comes first. ** ** SQLite is free to call the destructor and drop metadata on any ** parameter of any function at any time. ^The only guarantee is that ** the destructor will be called before the metadata is dropped. ** ** ^(In practice, metadata is preserved between function calls for ** expressions that are constant at compile time. This includes literal ** values and [parameters].)^ ** ** These routines must be called from the same thread in which ** the SQL function is running. */ SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N); SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*)); /* ** CAPI3REF: Constants Defining Special Destructor Behavior ** ** These are special values for the destructor that is passed in as the ** final argument to routines like [sqlite3_result_blob()]. ^If the destructor ** argument is SQLITE_STATIC, it means that the content pointer is constant ** and will never change. It does not need to be destroyed. ^The ** SQLITE_TRANSIENT value means that the content will likely change in ** the near future and that SQLite should make its own private copy of ** the content before returning. ** ** The typedef is necessary to work around problems in certain ** C++ compilers. See ticket #2191. */ typedef void (*sqlite3_destructor_type)(void*); #define SQLITE_STATIC ((sqlite3_destructor_type)0) #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) /* ** CAPI3REF: Setting The Result Of An SQL Function ** ** These routines are used by the xFunc or xFinal callbacks that ** implement SQL functions and aggregates. See ** [sqlite3_create_function()] and [sqlite3_create_function16()] ** for additional information. ** ** These functions work very much like the [parameter binding] family of ** functions used to bind values to host parameters in prepared statements. ** Refer to the [SQL parameter] documentation for additional information. ** ** ^The sqlite3_result_blob() interface sets the result from ** an application-defined function to be the BLOB whose content is pointed ** to by the second parameter and which is N bytes long where N is the ** third parameter. ** ** ^The sqlite3_result_zeroblob() interfaces set the result of ** the application-defined function to be a BLOB containing all zero ** bytes and N bytes in size, where N is the value of the 2nd parameter. ** ** ^The sqlite3_result_double() interface sets the result from ** an application-defined function to be a floating point value specified ** by its 2nd argument. ** ** ^The sqlite3_result_error() and sqlite3_result_error16() functions ** cause the implemented SQL function to throw an exception. ** ^SQLite uses the string pointed to by the ** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16() ** as the text of an error message. ^SQLite interprets the error ** message string from sqlite3_result_error() as UTF-8. ^SQLite ** interprets the string from sqlite3_result_error16() as UTF-16 in native ** byte order. ^If the third parameter to sqlite3_result_error() ** or sqlite3_result_error16() is negative then SQLite takes as the error ** message all text up through the first zero character. ** ^If the third parameter to sqlite3_result_error() or ** sqlite3_result_error16() is non-negative then SQLite takes that many ** bytes (not characters) from the 2nd parameter as the error message. ** ^The sqlite3_result_error() and sqlite3_result_error16() ** routines make a private copy of the error message text before ** they return. Hence, the calling function can deallocate or ** modify the text after they return without harm. ** ^The sqlite3_result_error_code() function changes the error code ** returned by SQLite as a result of an error in a function. ^By default, ** the error code is SQLITE_ERROR. ^A subsequent call to sqlite3_result_error() ** or sqlite3_result_error16() resets the error code to SQLITE_ERROR. ** ** ^The sqlite3_result_toobig() interface causes SQLite to throw an error ** indicating that a string or BLOB is too long to represent. ** ** ^The sqlite3_result_nomem() interface causes SQLite to throw an error ** indicating that a memory allocation failed. ** ** ^The sqlite3_result_int() interface sets the return value ** of the application-defined function to be the 32-bit signed integer ** value given in the 2nd argument. ** ^The sqlite3_result_int64() interface sets the return value ** of the application-defined function to be the 64-bit signed integer ** value given in the 2nd argument. ** ** ^The sqlite3_result_null() interface sets the return value ** of the application-defined function to be NULL. ** ** ^The sqlite3_result_text(), sqlite3_result_text16(), ** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces ** set the return value of the application-defined function to be ** a text string which is represented as UTF-8, UTF-16 native byte order, ** UTF-16 little endian, or UTF-16 big endian, respectively. ** ^SQLite takes the text result from the application from ** the 2nd parameter of the sqlite3_result_text* interfaces. ** ^If the 3rd parameter to the sqlite3_result_text* interfaces ** is negative, then SQLite takes result text from the 2nd parameter ** through the first zero character. ** ^If the 3rd parameter to the sqlite3_result_text* interfaces ** is non-negative, then as many bytes (not characters) of the text ** pointed to by the 2nd parameter are taken as the application-defined ** function result. ** ^If the 4th parameter to the sqlite3_result_text* interfaces ** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that ** function as the destructor on the text or BLOB result when it has ** finished using that result. ** ^If the 4th parameter to the sqlite3_result_text* interfaces or to ** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite ** assumes that the text or BLOB result is in constant space and does not ** copy the content of the parameter nor call a destructor on the content ** when it has finished using that result. ** ^If the 4th parameter to the sqlite3_result_text* interfaces ** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT ** then SQLite makes a copy of the result into space obtained from ** from [sqlite3_malloc()] before it returns. ** ** ^The sqlite3_result_value() interface sets the result of ** the application-defined function to be a copy the ** [unprotected sqlite3_value] object specified by the 2nd parameter. ^The ** sqlite3_result_value() interface makes a copy of the [sqlite3_value] ** so that the [sqlite3_value] specified in the parameter may change or ** be deallocated after sqlite3_result_value() returns without harm. ** ^A [protected sqlite3_value] object may always be used where an ** [unprotected sqlite3_value] object is required, so either ** kind of [sqlite3_value] object can be used with this interface. ** ** If these routines are called from within the different thread ** than the one containing the application-defined function that received ** the [sqlite3_context] pointer, the results are undefined. */ SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*)); SQLITE_API void sqlite3_result_double(sqlite3_context*, double); SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int); SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int); SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*); SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*); SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int); SQLITE_API void sqlite3_result_int(sqlite3_context*, int); SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64); SQLITE_API void sqlite3_result_null(sqlite3_context*); SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*)); SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*)); SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*)); SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*)); SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*); SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n); /* ** CAPI3REF: Define New Collating Sequences ** ** ^These functions add, remove, or modify a [collation] associated ** with the [database connection] specified as the first argument. ** ** ^The name of the collation is a UTF-8 string ** for sqlite3_create_collation() and sqlite3_create_collation_v2() ** and a UTF-16 string in native byte order for sqlite3_create_collation16(). ** ^Collation names that compare equal according to [sqlite3_strnicmp()] are ** considered to be the same name. ** ** ^(The third argument (eTextRep) must be one of the constants: **
    **
  • [SQLITE_UTF8], **
  • [SQLITE_UTF16LE], **
  • [SQLITE_UTF16BE], **
  • [SQLITE_UTF16], or **
  • [SQLITE_UTF16_ALIGNED]. **
)^ ** ^The eTextRep argument determines the encoding of strings passed ** to the collating function callback, xCallback. ** ^The [SQLITE_UTF16] and [SQLITE_UTF16_ALIGNED] values for eTextRep ** force strings to be UTF16 with native byte order. ** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin ** on an even byte address. ** ** ^The fourth argument, pArg, is a application data pointer that is passed ** through as the first argument to the collating function callback. ** ** ^The fifth argument, xCallback, is a pointer to the collating function. ** ^Multiple collating functions can be registered using the same name but ** with different eTextRep parameters and SQLite will use whichever ** function requires the least amount of data transformation. ** ^If the xCallback argument is NULL then the collating function is ** deleted. ^When all collating functions having the same name are deleted, ** that collation is no longer usable. ** ** ^The collating function callback is invoked with a copy of the pArg ** application data pointer and with two strings in the encoding specified ** by the eTextRep argument. The collating function must return an ** integer that is negative, zero, or positive ** if the first string is less than, equal to, or greater than the second, ** respectively. A collating function must alway return the same answer ** given the same inputs. If two or more collating functions are registered ** to the same collation name (using different eTextRep values) then all ** must give an equivalent answer when invoked with equivalent strings. ** The collating function must obey the following properties for all ** strings A, B, and C: ** **
    **
  1. If A==B then B==A. **
  2. If A==B and B==C then A==C. **
  3. If A<B THEN B>A. **
  4. If A<B and B<C then A<C. **
** ** If a collating function fails any of the above constraints and that ** collating function is registered and used, then the behavior of SQLite ** is undefined. ** ** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation() ** with the addition that the xDestroy callback is invoked on pArg when ** the collating function is deleted. ** ^Collating functions are deleted when they are overridden by later ** calls to the collation creation functions or when the ** [database connection] is closed using [sqlite3_close()]. ** ** ^The xDestroy callback is not called if the ** sqlite3_create_collation_v2() function fails. Applications that invoke ** sqlite3_create_collation_v2() with a non-NULL xDestroy argument should ** check the return code and dispose of the application data pointer ** themselves rather than expecting SQLite to deal with it for them. ** This is different from every other SQLite interface. The inconsistency ** is unfortunate but cannot be changed without breaking backwards ** compatibility. ** ** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()]. */ SQLITE_API int sqlite3_create_collation( sqlite3*, const char *zName, int eTextRep, void *pArg, int(*xCompare)(void*,int,const void*,int,const void*) ); SQLITE_API int sqlite3_create_collation_v2( sqlite3*, const char *zName, int eTextRep, void *pArg, int(*xCompare)(void*,int,const void*,int,const void*), void(*xDestroy)(void*) ); SQLITE_API int sqlite3_create_collation16( sqlite3*, const void *zName, int eTextRep, void *pArg, int(*xCompare)(void*,int,const void*,int,const void*) ); /* ** CAPI3REF: Collation Needed Callbacks ** ** ^To avoid having to register all collation sequences before a database ** can be used, a single callback function may be registered with the ** [database connection] to be invoked whenever an undefined collation ** sequence is required. ** ** ^If the function is registered using the sqlite3_collation_needed() API, ** then it is passed the names of undefined collation sequences as strings ** encoded in UTF-8. ^If sqlite3_collation_needed16() is used, ** the names are passed as UTF-16 in machine native byte order. ** ^A call to either function replaces the existing collation-needed callback. ** ** ^(When the callback is invoked, the first argument passed is a copy ** of the second argument to sqlite3_collation_needed() or ** sqlite3_collation_needed16(). The second argument is the database ** connection. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], ** or [SQLITE_UTF16LE], indicating the most desirable form of the collation ** sequence function required. The fourth parameter is the name of the ** required collation sequence.)^ ** ** The callback function should register the desired collation using ** [sqlite3_create_collation()], [sqlite3_create_collation16()], or ** [sqlite3_create_collation_v2()]. */ SQLITE_API int sqlite3_collation_needed( sqlite3*, void*, void(*)(void*,sqlite3*,int eTextRep,const char*) ); SQLITE_API int sqlite3_collation_needed16( sqlite3*, void*, void(*)(void*,sqlite3*,int eTextRep,const void*) ); #ifdef SQLITE_HAS_CODEC /* ** Specify the key for an encrypted database. This routine should be ** called right after sqlite3_open(). ** ** The code to implement this API is not available in the public release ** of SQLite. */ SQLITE_API int sqlite3_key( sqlite3 *db, /* Database to be rekeyed */ const void *pKey, int nKey /* The key */ ); /* ** Change the key on an open database. If the current database is not ** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the ** database is decrypted. ** ** The code to implement this API is not available in the public release ** of SQLite. */ SQLITE_API int sqlite3_rekey( sqlite3 *db, /* Database to be rekeyed */ const void *pKey, int nKey /* The new key */ ); /* ** Specify the activation key for a SEE database. Unless ** activated, none of the SEE routines will work. */ SQLITE_API void sqlite3_activate_see( const char *zPassPhrase /* Activation phrase */ ); #endif #ifdef SQLITE_ENABLE_CEROD /* ** Specify the activation key for a CEROD database. Unless ** activated, none of the CEROD routines will work. */ SQLITE_API void sqlite3_activate_cerod( const char *zPassPhrase /* Activation phrase */ ); #endif /* ** CAPI3REF: Suspend Execution For A Short Time ** ** The sqlite3_sleep() function causes the current thread to suspend execution ** for at least a number of milliseconds specified in its parameter. ** ** If the operating system does not support sleep requests with ** millisecond time resolution, then the time will be rounded up to ** the nearest second. The number of milliseconds of sleep actually ** requested from the operating system is returned. ** ** ^SQLite implements this interface by calling the xSleep() ** method of the default [sqlite3_vfs] object. If the xSleep() method ** of the default VFS is not implemented correctly, or not implemented at ** all, then the behavior of sqlite3_sleep() may deviate from the description ** in the previous paragraphs. */ SQLITE_API int sqlite3_sleep(int); /* ** CAPI3REF: Name Of The Folder Holding Temporary Files ** ** ^(If this global variable is made to point to a string which is ** the name of a folder (a.k.a. directory), then all temporary files ** created by SQLite when using a built-in [sqlite3_vfs | VFS] ** will be placed in that directory.)^ ^If this variable ** is a NULL pointer, then SQLite performs a search for an appropriate ** temporary file directory. ** ** It is not safe to read or modify this variable in more than one ** thread at a time. It is not safe to read or modify this variable ** if a [database connection] is being used at the same time in a separate ** thread. ** It is intended that this variable be set once ** as part of process initialization and before any SQLite interface ** routines have been called and that this variable remain unchanged ** thereafter. ** ** ^The [temp_store_directory pragma] may modify this variable and cause ** it to point to memory obtained from [sqlite3_malloc]. ^Furthermore, ** the [temp_store_directory pragma] always assumes that any string ** that this variable points to is held in memory obtained from ** [sqlite3_malloc] and the pragma may attempt to free that memory ** using [sqlite3_free]. ** Hence, if this variable is modified directly, either it should be ** made NULL or made to point to memory obtained from [sqlite3_malloc] ** or else the use of the [temp_store_directory pragma] should be avoided. */ SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory; /* ** CAPI3REF: Test For Auto-Commit Mode ** KEYWORDS: {autocommit mode} ** ** ^The sqlite3_get_autocommit() interface returns non-zero or ** zero if the given database connection is or is not in autocommit mode, ** respectively. ^Autocommit mode is on by default. ** ^Autocommit mode is disabled by a [BEGIN] statement. ** ^Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK]. ** ** If certain kinds of errors occur on a statement within a multi-statement ** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR], ** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the ** transaction might be rolled back automatically. The only way to ** find out whether SQLite automatically rolled back the transaction after ** an error is to use this function. ** ** If another thread changes the autocommit status of the database ** connection while this routine is running, then the return value ** is undefined. */ SQLITE_API int sqlite3_get_autocommit(sqlite3*); /* ** CAPI3REF: Find The Database Handle Of A Prepared Statement ** ** ^The sqlite3_db_handle interface returns the [database connection] handle ** to which a [prepared statement] belongs. ^The [database connection] ** returned by sqlite3_db_handle is the same [database connection] ** that was the first argument ** to the [sqlite3_prepare_v2()] call (or its variants) that was used to ** create the statement in the first place. */ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*); /* ** CAPI3REF: Find the next prepared statement ** ** ^This interface returns a pointer to the next [prepared statement] after ** pStmt associated with the [database connection] pDb. ^If pStmt is NULL ** then this interface returns a pointer to the first prepared statement ** associated with the database connection pDb. ^If no prepared statement ** satisfies the conditions of this routine, it returns NULL. ** ** The [database connection] pointer D in a call to ** [sqlite3_next_stmt(D,S)] must refer to an open database ** connection and in particular must not be a NULL pointer. */ SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt); /* ** CAPI3REF: Commit And Rollback Notification Callbacks ** ** ^The sqlite3_commit_hook() interface registers a callback ** function to be invoked whenever a transaction is [COMMIT | committed]. ** ^Any callback set by a previous call to sqlite3_commit_hook() ** for the same database connection is overridden. ** ^The sqlite3_rollback_hook() interface registers a callback ** function to be invoked whenever a transaction is [ROLLBACK | rolled back]. ** ^Any callback set by a previous call to sqlite3_rollback_hook() ** for the same database connection is overridden. ** ^The pArg argument is passed through to the callback. ** ^If the callback on a commit hook function returns non-zero, ** then the commit is converted into a rollback. ** ** ^The sqlite3_commit_hook(D,C,P) and sqlite3_rollback_hook(D,C,P) functions ** return the P argument from the previous call of the same function ** on the same [database connection] D, or NULL for ** the first call for each function on D. ** ** The callback implementation must not do anything that will modify ** the database connection that invoked the callback. Any actions ** to modify the database connection must be deferred until after the ** completion of the [sqlite3_step()] call that triggered the commit ** or rollback hook in the first place. ** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their ** database connections for the meaning of "modify" in this paragraph. ** ** ^Registering a NULL function disables the callback. ** ** ^When the commit hook callback routine returns zero, the [COMMIT] ** operation is allowed to continue normally. ^If the commit hook ** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK]. ** ^The rollback hook is invoked on a rollback that results from a commit ** hook returning non-zero, just as it would be with any other rollback. ** ** ^For the purposes of this API, a transaction is said to have been ** rolled back if an explicit "ROLLBACK" statement is executed, or ** an error or constraint causes an implicit rollback to occur. ** ^The rollback callback is not invoked if a transaction is ** automatically rolled back because the database connection is closed. ** ** See also the [sqlite3_update_hook()] interface. */ SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*); SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*); /* ** CAPI3REF: Data Change Notification Callbacks ** ** ^The sqlite3_update_hook() interface registers a callback function ** with the [database connection] identified by the first argument ** to be invoked whenever a row is updated, inserted or deleted. ** ^Any callback set by a previous call to this function ** for the same database connection is overridden. ** ** ^The second argument is a pointer to the function to invoke when a ** row is updated, inserted or deleted. ** ^The first argument to the callback is a copy of the third argument ** to sqlite3_update_hook(). ** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE], ** or [SQLITE_UPDATE], depending on the operation that caused the callback ** to be invoked. ** ^The third and fourth arguments to the callback contain pointers to the ** database and table name containing the affected row. ** ^The final callback parameter is the [rowid] of the row. ** ^In the case of an update, this is the [rowid] after the update takes place. ** ** ^(The update hook is not invoked when internal system tables are ** modified (i.e. sqlite_master and sqlite_sequence).)^ ** ** ^In the current implementation, the update hook ** is not invoked when duplication rows are deleted because of an ** [ON CONFLICT | ON CONFLICT REPLACE] clause. ^Nor is the update hook ** invoked when rows are deleted using the [truncate optimization]. ** The exceptions defined in this paragraph might change in a future ** release of SQLite. ** ** The update hook implementation must not do anything that will modify ** the database connection that invoked the update hook. Any actions ** to modify the database connection must be deferred until after the ** completion of the [sqlite3_step()] call that triggered the update hook. ** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their ** database connections for the meaning of "modify" in this paragraph. ** ** ^The sqlite3_update_hook(D,C,P) function ** returns the P argument from the previous call ** on the same [database connection] D, or NULL for ** the first call on D. ** ** See also the [sqlite3_commit_hook()] and [sqlite3_rollback_hook()] ** interfaces. */ SQLITE_API void *sqlite3_update_hook( sqlite3*, void(*)(void *,int ,char const *,char const *,sqlite3_int64), void* ); /* ** CAPI3REF: Enable Or Disable Shared Pager Cache ** KEYWORDS: {shared cache} ** ** ^(This routine enables or disables the sharing of the database cache ** and schema data structures between [database connection | connections] ** to the same database. Sharing is enabled if the argument is true ** and disabled if the argument is false.)^ ** ** ^Cache sharing is enabled and disabled for an entire process. ** This is a change as of SQLite version 3.5.0. In prior versions of SQLite, ** sharing was enabled or disabled for each thread separately. ** ** ^(The cache sharing mode set by this interface effects all subsequent ** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()]. ** Existing database connections continue use the sharing mode ** that was in effect at the time they were opened.)^ ** ** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled ** successfully. An [error code] is returned otherwise.)^ ** ** ^Shared cache is disabled by default. But this might change in ** future releases of SQLite. Applications that care about shared ** cache setting should set it explicitly. ** ** See Also: [SQLite Shared-Cache Mode] */ SQLITE_API int sqlite3_enable_shared_cache(int); /* ** CAPI3REF: Attempt To Free Heap Memory ** ** ^The sqlite3_release_memory() interface attempts to free N bytes ** of heap memory by deallocating non-essential memory allocations ** held by the database library. Memory used to cache database ** pages to improve performance is an example of non-essential memory. ** ^sqlite3_release_memory() returns the number of bytes actually freed, ** which might be more or less than the amount requested. ** ^The sqlite3_release_memory() routine is a no-op returning zero ** if SQLite is not compiled with [SQLITE_ENABLE_MEMORY_MANAGEMENT]. */ SQLITE_API int sqlite3_release_memory(int); /* ** CAPI3REF: Impose A Limit On Heap Size ** ** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the ** soft limit on the amount of heap memory that may be allocated by SQLite. ** ^SQLite strives to keep heap memory utilization below the soft heap ** limit by reducing the number of pages held in the page cache ** as heap memory usages approaches the limit. ** ^The soft heap limit is "soft" because even though SQLite strives to stay ** below the limit, it will exceed the limit rather than generate ** an [SQLITE_NOMEM] error. In other words, the soft heap limit ** is advisory only. ** ** ^The return value from sqlite3_soft_heap_limit64() is the size of ** the soft heap limit prior to the call. ^If the argument N is negative ** then no change is made to the soft heap limit. Hence, the current ** size of the soft heap limit can be determined by invoking ** sqlite3_soft_heap_limit64() with a negative argument. ** ** ^If the argument N is zero then the soft heap limit is disabled. ** ** ^(The soft heap limit is not enforced in the current implementation ** if one or more of following conditions are true: ** **
    **
  • The soft heap limit is set to zero. **
  • Memory accounting is disabled using a combination of the ** [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and ** the [SQLITE_DEFAULT_MEMSTATUS] compile-time option. **
  • An alternative page cache implementation is specifed using ** [sqlite3_config]([SQLITE_CONFIG_PCACHE],...). **
  • The page cache allocates from its own memory pool supplied ** by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than ** from the heap. **
)^ ** ** Beginning with SQLite version 3.7.3, the soft heap limit is enforced ** regardless of whether or not the [SQLITE_ENABLE_MEMORY_MANAGEMENT] ** compile-time option is invoked. With [SQLITE_ENABLE_MEMORY_MANAGEMENT], ** the soft heap limit is enforced on every memory allocation. Without ** [SQLITE_ENABLE_MEMORY_MANAGEMENT], the soft heap limit is only enforced ** when memory is allocated by the page cache. Testing suggests that because ** the page cache is the predominate memory user in SQLite, most ** applications will achieve adequate soft heap limit enforcement without ** the use of [SQLITE_ENABLE_MEMORY_MANAGEMENT]. ** ** The circumstances under which SQLite will enforce the soft heap limit may ** changes in future releases of SQLite. */ SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N); /* ** CAPI3REF: Deprecated Soft Heap Limit Interface ** DEPRECATED ** ** This is a deprecated version of the [sqlite3_soft_heap_limit64()] ** interface. This routine is provided for historical compatibility ** only. All new applications should use the ** [sqlite3_soft_heap_limit64()] interface rather than this one. */ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N); /* ** CAPI3REF: Extract Metadata About A Column Of A Table ** ** ^This routine returns metadata about a specific column of a specific ** database table accessible using the [database connection] handle ** passed as the first function argument. ** ** ^The column is identified by the second, third and fourth parameters to ** this function. ^The second parameter is either the name of the database ** (i.e. "main", "temp", or an attached database) containing the specified ** table or NULL. ^If it is NULL, then all attached databases are searched ** for the table using the same algorithm used by the database engine to ** resolve unqualified table references. ** ** ^The third and fourth parameters to this function are the table and column ** name of the desired column, respectively. Neither of these parameters ** may be NULL. ** ** ^Metadata is returned by writing to the memory locations passed as the 5th ** and subsequent parameters to this function. ^Any of these arguments may be ** NULL, in which case the corresponding element of metadata is omitted. ** ** ^(
** **
Parameter Output
Type
Description ** **
5th const char* Data type **
6th const char* Name of default collation sequence **
7th int True if column has a NOT NULL constraint **
8th int True if column is part of the PRIMARY KEY **
9th int True if column is [AUTOINCREMENT] **
**
)^ ** ** ^The memory pointed to by the character pointers returned for the ** declaration type and collation sequence is valid only until the next ** call to any SQLite API function. ** ** ^If the specified table is actually a view, an [error code] is returned. ** ** ^If the specified column is "rowid", "oid" or "_rowid_" and an ** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output ** parameters are set for the explicitly declared column. ^(If there is no ** explicitly declared [INTEGER PRIMARY KEY] column, then the output ** parameters are set as follows: ** **
**     data type: "INTEGER"
**     collation sequence: "BINARY"
**     not null: 0
**     primary key: 1
**     auto increment: 0
** 
)^ ** ** ^(This function may load one or more schemas from database files. If an ** error occurs during this process, or if the requested table or column ** cannot be found, an [error code] is returned and an error message left ** in the [database connection] (to be retrieved using sqlite3_errmsg()).)^ ** ** ^This API is only available if the library was compiled with the ** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined. */ SQLITE_API int sqlite3_table_column_metadata( sqlite3 *db, /* Connection handle */ const char *zDbName, /* Database name or NULL */ const char *zTableName, /* Table name */ const char *zColumnName, /* Column name */ char const **pzDataType, /* OUTPUT: Declared data type */ char const **pzCollSeq, /* OUTPUT: Collation sequence name */ int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ int *pPrimaryKey, /* OUTPUT: True if column part of PK */ int *pAutoinc /* OUTPUT: True if column is auto-increment */ ); /* ** CAPI3REF: Load An Extension ** ** ^This interface loads an SQLite extension library from the named file. ** ** ^The sqlite3_load_extension() interface attempts to load an ** SQLite extension library contained in the file zFile. ** ** ^The entry point is zProc. ** ^zProc may be 0, in which case the name of the entry point ** defaults to "sqlite3_extension_init". ** ^The sqlite3_load_extension() interface returns ** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong. ** ^If an error occurs and pzErrMsg is not 0, then the ** [sqlite3_load_extension()] interface shall attempt to ** fill *pzErrMsg with error message text stored in memory ** obtained from [sqlite3_malloc()]. The calling function ** should free this memory by calling [sqlite3_free()]. ** ** ^Extension loading must be enabled using ** [sqlite3_enable_load_extension()] prior to calling this API, ** otherwise an error will be returned. ** ** See also the [load_extension() SQL function]. */ SQLITE_API int sqlite3_load_extension( sqlite3 *db, /* Load the extension into this database connection */ const char *zFile, /* Name of the shared library containing extension */ const char *zProc, /* Entry point. Derived from zFile if 0 */ char **pzErrMsg /* Put error message here if not 0 */ ); /* ** CAPI3REF: Enable Or Disable Extension Loading ** ** ^So as not to open security holes in older applications that are ** unprepared to deal with extension loading, and as a means of disabling ** extension loading while evaluating user-entered SQL, the following API ** is provided to turn the [sqlite3_load_extension()] mechanism on and off. ** ** ^Extension loading is off by default. See ticket #1863. ** ^Call the sqlite3_enable_load_extension() routine with onoff==1 ** to turn extension loading on and call it with onoff==0 to turn ** it back off again. */ SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff); /* ** CAPI3REF: Automatically Load Statically Linked Extensions ** ** ^This interface causes the xEntryPoint() function to be invoked for ** each new [database connection] that is created. The idea here is that ** xEntryPoint() is the entry point for a statically linked SQLite extension ** that is to be automatically loaded into all new database connections. ** ** ^(Even though the function prototype shows that xEntryPoint() takes ** no arguments and returns void, SQLite invokes xEntryPoint() with three ** arguments and expects and integer result as if the signature of the ** entry point where as follows: ** **
**    int xEntryPoint(
**      sqlite3 *db,
**      const char **pzErrMsg,
**      const struct sqlite3_api_routines *pThunk
**    );
** 
)^ ** ** If the xEntryPoint routine encounters an error, it should make *pzErrMsg ** point to an appropriate error message (obtained from [sqlite3_mprintf()]) ** and return an appropriate [error code]. ^SQLite ensures that *pzErrMsg ** is NULL before calling the xEntryPoint(). ^SQLite will invoke ** [sqlite3_free()] on *pzErrMsg after xEntryPoint() returns. ^If any ** xEntryPoint() returns an error, the [sqlite3_open()], [sqlite3_open16()], ** or [sqlite3_open_v2()] call that provoked the xEntryPoint() will fail. ** ** ^Calling sqlite3_auto_extension(X) with an entry point X that is already ** on the list of automatic extensions is a harmless no-op. ^No entry point ** will be called more than once for each database connection that is opened. ** ** See also: [sqlite3_reset_auto_extension()]. */ SQLITE_API int sqlite3_auto_extension(void (*xEntryPoint)(void)); /* ** CAPI3REF: Reset Automatic Extension Loading ** ** ^This interface disables all automatic extensions previously ** registered using [sqlite3_auto_extension()]. */ SQLITE_API void sqlite3_reset_auto_extension(void); /* ** The interface to the virtual-table mechanism is currently considered ** to be experimental. The interface might change in incompatible ways. ** If this is a problem for you, do not use the interface at this time. ** ** When the virtual-table mechanism stabilizes, we will declare the ** interface fixed, support it indefinitely, and remove this comment. */ /* ** Structures used by the virtual table interface */ typedef struct sqlite3_vtab sqlite3_vtab; typedef struct sqlite3_index_info sqlite3_index_info; typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor; typedef struct sqlite3_module sqlite3_module; /* ** CAPI3REF: Virtual Table Object ** KEYWORDS: sqlite3_module {virtual table module} ** ** This structure, sometimes called a a "virtual table module", ** defines the implementation of a [virtual tables]. ** This structure consists mostly of methods for the module. ** ** ^A virtual table module is created by filling in a persistent ** instance of this structure and passing a pointer to that instance ** to [sqlite3_create_module()] or [sqlite3_create_module_v2()]. ** ^The registration remains valid until it is replaced by a different ** module or until the [database connection] closes. The content ** of this structure must not change while it is registered with ** any database connection. */ struct sqlite3_module { int iVersion; int (*xCreate)(sqlite3*, void *pAux, int argc, const char *const*argv, sqlite3_vtab **ppVTab, char**); int (*xConnect)(sqlite3*, void *pAux, int argc, const char *const*argv, sqlite3_vtab **ppVTab, char**); int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); int (*xDisconnect)(sqlite3_vtab *pVTab); int (*xDestroy)(sqlite3_vtab *pVTab); int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor); int (*xClose)(sqlite3_vtab_cursor*); int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr, int argc, sqlite3_value **argv); int (*xNext)(sqlite3_vtab_cursor*); int (*xEof)(sqlite3_vtab_cursor*); int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int); int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid); int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *); int (*xBegin)(sqlite3_vtab *pVTab); int (*xSync)(sqlite3_vtab *pVTab); int (*xCommit)(sqlite3_vtab *pVTab); int (*xRollback)(sqlite3_vtab *pVTab); int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName, void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), void **ppArg); int (*xRename)(sqlite3_vtab *pVtab, const char *zNew); }; /* ** CAPI3REF: Virtual Table Indexing Information ** KEYWORDS: sqlite3_index_info ** ** The sqlite3_index_info structure and its substructures is used as part ** of the [virtual table] interface to ** pass information into and receive the reply from the [xBestIndex] ** method of a [virtual table module]. The fields under **Inputs** are the ** inputs to xBestIndex and are read-only. xBestIndex inserts its ** results into the **Outputs** fields. ** ** ^(The aConstraint[] array records WHERE clause constraints of the form: ** **
column OP expr
** ** where OP is =, <, <=, >, or >=.)^ ^(The particular operator is ** stored in aConstraint[].op using one of the ** [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^ ** ^(The index of the column is stored in ** aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the ** expr on the right-hand side can be evaluated (and thus the constraint ** is usable) and false if it cannot.)^ ** ** ^The optimizer automatically inverts terms of the form "expr OP column" ** and makes other simplifications to the WHERE clause in an attempt to ** get as many WHERE clause terms into the form shown above as possible. ** ^The aConstraint[] array only reports WHERE clause terms that are ** relevant to the particular virtual table being queried. ** ** ^Information about the ORDER BY clause is stored in aOrderBy[]. ** ^Each term of aOrderBy records a column of the ORDER BY clause. ** ** The [xBestIndex] method must fill aConstraintUsage[] with information ** about what parameters to pass to xFilter. ^If argvIndex>0 then ** the right-hand side of the corresponding aConstraint[] is evaluated ** and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit ** is true, then the constraint is assumed to be fully handled by the ** virtual table and is not checked again by SQLite.)^ ** ** ^The idxNum and idxPtr values are recorded and passed into the ** [xFilter] method. ** ^[sqlite3_free()] is used to free idxPtr if and only if ** needToFreeIdxPtr is true. ** ** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in ** the correct order to satisfy the ORDER BY clause so that no separate ** sorting step is required. ** ** ^The estimatedCost value is an estimate of the cost of doing the ** particular lookup. A full scan of a table with N entries should have ** a cost of N. A binary search of a table of N entries should have a ** cost of approximately log(N). */ struct sqlite3_index_info { /* Inputs */ int nConstraint; /* Number of entries in aConstraint */ struct sqlite3_index_constraint { int iColumn; /* Column on left-hand side of constraint */ unsigned char op; /* Constraint operator */ unsigned char usable; /* True if this constraint is usable */ int iTermOffset; /* Used internally - xBestIndex should ignore */ } *aConstraint; /* Table of WHERE clause constraints */ int nOrderBy; /* Number of terms in the ORDER BY clause */ struct sqlite3_index_orderby { int iColumn; /* Column number */ unsigned char desc; /* True for DESC. False for ASC. */ } *aOrderBy; /* The ORDER BY clause */ /* Outputs */ struct sqlite3_index_constraint_usage { int argvIndex; /* if >0, constraint is part of argv to xFilter */ unsigned char omit; /* Do not code a test for this constraint */ } *aConstraintUsage; int idxNum; /* Number used to identify the index */ char *idxStr; /* String, possibly obtained from sqlite3_malloc */ int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ int orderByConsumed; /* True if output is already ordered */ double estimatedCost; /* Estimated cost of using this index */ }; /* ** CAPI3REF: Virtual Table Constraint Operator Codes ** ** These macros defined the allowed values for the ** [sqlite3_index_info].aConstraint[].op field. Each value represents ** an operator that is part of a constraint term in the wHERE clause of ** a query that uses a [virtual table]. */ #define SQLITE_INDEX_CONSTRAINT_EQ 2 #define SQLITE_INDEX_CONSTRAINT_GT 4 #define SQLITE_INDEX_CONSTRAINT_LE 8 #define SQLITE_INDEX_CONSTRAINT_LT 16 #define SQLITE_INDEX_CONSTRAINT_GE 32 #define SQLITE_INDEX_CONSTRAINT_MATCH 64 /* ** CAPI3REF: Register A Virtual Table Implementation ** ** ^These routines are used to register a new [virtual table module] name. ** ^Module names must be registered before ** creating a new [virtual table] using the module and before using a ** preexisting [virtual table] for the module. ** ** ^The module name is registered on the [database connection] specified ** by the first parameter. ^The name of the module is given by the ** second parameter. ^The third parameter is a pointer to ** the implementation of the [virtual table module]. ^The fourth ** parameter is an arbitrary client data pointer that is passed through ** into the [xCreate] and [xConnect] methods of the virtual table module ** when a new virtual table is be being created or reinitialized. ** ** ^The sqlite3_create_module_v2() interface has a fifth parameter which ** is a pointer to a destructor for the pClientData. ^SQLite will ** invoke the destructor function (if it is not NULL) when SQLite ** no longer needs the pClientData pointer. ^The destructor will also ** be invoked if the call to sqlite3_create_module_v2() fails. ** ^The sqlite3_create_module() ** interface is equivalent to sqlite3_create_module_v2() with a NULL ** destructor. */ SQLITE_API int sqlite3_create_module( sqlite3 *db, /* SQLite connection to register module with */ const char *zName, /* Name of the module */ const sqlite3_module *p, /* Methods for the module */ void *pClientData /* Client data for xCreate/xConnect */ ); SQLITE_API int sqlite3_create_module_v2( sqlite3 *db, /* SQLite connection to register module with */ const char *zName, /* Name of the module */ const sqlite3_module *p, /* Methods for the module */ void *pClientData, /* Client data for xCreate/xConnect */ void(*xDestroy)(void*) /* Module destructor function */ ); /* ** CAPI3REF: Virtual Table Instance Object ** KEYWORDS: sqlite3_vtab ** ** Every [virtual table module] implementation uses a subclass ** of this object to describe a particular instance ** of the [virtual table]. Each subclass will ** be tailored to the specific needs of the module implementation. ** The purpose of this superclass is to define certain fields that are ** common to all module implementations. ** ** ^Virtual tables methods can set an error message by assigning a ** string obtained from [sqlite3_mprintf()] to zErrMsg. The method should ** take care that any prior string is freed by a call to [sqlite3_free()] ** prior to assigning a new string to zErrMsg. ^After the error message ** is delivered up to the client application, the string will be automatically ** freed by sqlite3_free() and the zErrMsg field will be zeroed. */ struct sqlite3_vtab { const sqlite3_module *pModule; /* The module for this virtual table */ int nRef; /* NO LONGER USED */ char *zErrMsg; /* Error message from sqlite3_mprintf() */ /* Virtual table implementations will typically add additional fields */ }; /* ** CAPI3REF: Virtual Table Cursor Object ** KEYWORDS: sqlite3_vtab_cursor {virtual table cursor} ** ** Every [virtual table module] implementation uses a subclass of the ** following structure to describe cursors that point into the ** [virtual table] and are used ** to loop through the virtual table. Cursors are created using the ** [sqlite3_module.xOpen | xOpen] method of the module and are destroyed ** by the [sqlite3_module.xClose | xClose] method. Cursors are used ** by the [xFilter], [xNext], [xEof], [xColumn], and [xRowid] methods ** of the module. Each module implementation will define ** the content of a cursor structure to suit its own needs. ** ** This superclass exists in order to define fields of the cursor that ** are common to all implementations. */ struct sqlite3_vtab_cursor { sqlite3_vtab *pVtab; /* Virtual table of this cursor */ /* Virtual table implementations will typically add additional fields */ }; /* ** CAPI3REF: Declare The Schema Of A Virtual Table ** ** ^The [xCreate] and [xConnect] methods of a ** [virtual table module] call this interface ** to declare the format (the names and datatypes of the columns) of ** the virtual tables they implement. */ SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL); /* ** CAPI3REF: Overload A Function For A Virtual Table ** ** ^(Virtual tables can provide alternative implementations of functions ** using the [xFindFunction] method of the [virtual table module]. ** But global versions of those functions ** must exist in order to be overloaded.)^ ** ** ^(This API makes sure a global version of a function with a particular ** name and number of parameters exists. If no such function exists ** before this API is called, a new function is created.)^ ^The implementation ** of the new function always causes an exception to be thrown. So ** the new function is not good for anything by itself. Its only ** purpose is to be a placeholder function that can be overloaded ** by a [virtual table]. */ SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg); /* ** The interface to the virtual-table mechanism defined above (back up ** to a comment remarkably similar to this one) is currently considered ** to be experimental. The interface might change in incompatible ways. ** If this is a problem for you, do not use the interface at this time. ** ** When the virtual-table mechanism stabilizes, we will declare the ** interface fixed, support it indefinitely, and remove this comment. */ /* ** CAPI3REF: A Handle To An Open BLOB ** KEYWORDS: {BLOB handle} {BLOB handles} ** ** An instance of this object represents an open BLOB on which ** [sqlite3_blob_open | incremental BLOB I/O] can be performed. ** ^Objects of this type are created by [sqlite3_blob_open()] ** and destroyed by [sqlite3_blob_close()]. ** ^The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces ** can be used to read or write small subsections of the BLOB. ** ^The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes. */ typedef struct sqlite3_blob sqlite3_blob; /* ** CAPI3REF: Open A BLOB For Incremental I/O ** ** ^(This interfaces opens a [BLOB handle | handle] to the BLOB located ** in row iRow, column zColumn, table zTable in database zDb; ** in other words, the same BLOB that would be selected by: ** **
**     SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
** 
)^ ** ** ^If the flags parameter is non-zero, then the BLOB is opened for read ** and write access. ^If it is zero, the BLOB is opened for read access. ** ^It is not possible to open a column that is part of an index or primary ** key for writing. ^If [foreign key constraints] are enabled, it is ** not possible to open a column that is part of a [child key] for writing. ** ** ^Note that the database name is not the filename that contains ** the database but rather the symbolic name of the database that ** appears after the AS keyword when the database is connected using [ATTACH]. ** ^For the main database file, the database name is "main". ** ^For TEMP tables, the database name is "temp". ** ** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is written ** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set ** to be a null pointer.)^ ** ^This function sets the [database connection] error code and message ** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related ** functions. ^Note that the *ppBlob variable is always initialized in a ** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob ** regardless of the success or failure of this routine. ** ** ^(If the row that a BLOB handle points to is modified by an ** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects ** then the BLOB handle is marked as "expired". ** This is true if any column of the row is changed, even a column ** other than the one the BLOB handle is open on.)^ ** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for ** a expired BLOB handle fail with an return code of [SQLITE_ABORT]. ** ^(Changes written into a BLOB prior to the BLOB expiring are not ** rolled back by the expiration of the BLOB. Such changes will eventually ** commit if the transaction continues to completion.)^ ** ** ^Use the [sqlite3_blob_bytes()] interface to determine the size of ** the opened blob. ^The size of a blob may not be changed by this ** interface. Use the [UPDATE] SQL command to change the size of a ** blob. ** ** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces ** and the built-in [zeroblob] SQL function can be used, if desired, ** to create an empty, zero-filled blob in which to read or write using ** this interface. ** ** To avoid a resource leak, every open [BLOB handle] should eventually ** be released by a call to [sqlite3_blob_close()]. */ SQLITE_API int sqlite3_blob_open( sqlite3*, const char *zDb, const char *zTable, const char *zColumn, sqlite3_int64 iRow, int flags, sqlite3_blob **ppBlob ); /* ** CAPI3REF: Move a BLOB Handle to a New Row ** ** ^This function is used to move an existing blob handle so that it points ** to a different row of the same database table. ^The new row is identified ** by the rowid value passed as the second argument. Only the row can be ** changed. ^The database, table and column on which the blob handle is open ** remain the same. Moving an existing blob handle to a new row can be ** faster than closing the existing handle and opening a new one. ** ** ^(The new row must meet the same criteria as for [sqlite3_blob_open()] - ** it must exist and there must be either a blob or text value stored in ** the nominated column.)^ ^If the new row is not present in the table, or if ** it does not contain a blob or text value, or if another error occurs, an ** SQLite error code is returned and the blob handle is considered aborted. ** ^All subsequent calls to [sqlite3_blob_read()], [sqlite3_blob_write()] or ** [sqlite3_blob_reopen()] on an aborted blob handle immediately return ** SQLITE_ABORT. ^Calling [sqlite3_blob_bytes()] on an aborted blob handle ** always returns zero. ** ** ^This function sets the database handle error code and message. */ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64); /* ** CAPI3REF: Close A BLOB Handle ** ** ^Closes an open [BLOB handle]. ** ** ^Closing a BLOB shall cause the current transaction to commit ** if there are no other BLOBs, no pending prepared statements, and the ** database connection is in [autocommit mode]. ** ^If any writes were made to the BLOB, they might be held in cache ** until the close operation if they will fit. ** ** ^(Closing the BLOB often forces the changes ** out to disk and so if any I/O errors occur, they will likely occur ** at the time when the BLOB is closed. Any errors that occur during ** closing are reported as a non-zero return value.)^ ** ** ^(The BLOB is closed unconditionally. Even if this routine returns ** an error code, the BLOB is still closed.)^ ** ** ^Calling this routine with a null pointer (such as would be returned ** by a failed call to [sqlite3_blob_open()]) is a harmless no-op. */ SQLITE_API int sqlite3_blob_close(sqlite3_blob *); /* ** CAPI3REF: Return The Size Of An Open BLOB ** ** ^Returns the size in bytes of the BLOB accessible via the ** successfully opened [BLOB handle] in its only argument. ^The ** incremental blob I/O routines can only read or overwriting existing ** blob content; they cannot change the size of a blob. ** ** This routine only works on a [BLOB handle] which has been created ** by a prior successful call to [sqlite3_blob_open()] and which has not ** been closed by [sqlite3_blob_close()]. Passing any other pointer in ** to this routine results in undefined and probably undesirable behavior. */ SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *); /* ** CAPI3REF: Read Data From A BLOB Incrementally ** ** ^(This function is used to read data from an open [BLOB handle] into a ** caller-supplied buffer. N bytes of data are copied into buffer Z ** from the open BLOB, starting at offset iOffset.)^ ** ** ^If offset iOffset is less than N bytes from the end of the BLOB, ** [SQLITE_ERROR] is returned and no data is read. ^If N or iOffset is ** less than zero, [SQLITE_ERROR] is returned and no data is read. ** ^The size of the blob (and hence the maximum value of N+iOffset) ** can be determined using the [sqlite3_blob_bytes()] interface. ** ** ^An attempt to read from an expired [BLOB handle] fails with an ** error code of [SQLITE_ABORT]. ** ** ^(On success, sqlite3_blob_read() returns SQLITE_OK. ** Otherwise, an [error code] or an [extended error code] is returned.)^ ** ** This routine only works on a [BLOB handle] which has been created ** by a prior successful call to [sqlite3_blob_open()] and which has not ** been closed by [sqlite3_blob_close()]. Passing any other pointer in ** to this routine results in undefined and probably undesirable behavior. ** ** See also: [sqlite3_blob_write()]. */ SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset); /* ** CAPI3REF: Write Data Into A BLOB Incrementally ** ** ^This function is used to write data into an open [BLOB handle] from a ** caller-supplied buffer. ^N bytes of data are copied from the buffer Z ** into the open BLOB, starting at offset iOffset. ** ** ^If the [BLOB handle] passed as the first argument was not opened for ** writing (the flags parameter to [sqlite3_blob_open()] was zero), ** this function returns [SQLITE_READONLY]. ** ** ^This function may only modify the contents of the BLOB; it is ** not possible to increase the size of a BLOB using this API. ** ^If offset iOffset is less than N bytes from the end of the BLOB, ** [SQLITE_ERROR] is returned and no data is written. ^If N is ** less than zero [SQLITE_ERROR] is returned and no data is written. ** The size of the BLOB (and hence the maximum value of N+iOffset) ** can be determined using the [sqlite3_blob_bytes()] interface. ** ** ^An attempt to write to an expired [BLOB handle] fails with an ** error code of [SQLITE_ABORT]. ^Writes to the BLOB that occurred ** before the [BLOB handle] expired are not rolled back by the ** expiration of the handle, though of course those changes might ** have been overwritten by the statement that expired the BLOB handle ** or by other independent statements. ** ** ^(On success, sqlite3_blob_write() returns SQLITE_OK. ** Otherwise, an [error code] or an [extended error code] is returned.)^ ** ** This routine only works on a [BLOB handle] which has been created ** by a prior successful call to [sqlite3_blob_open()] and which has not ** been closed by [sqlite3_blob_close()]. Passing any other pointer in ** to this routine results in undefined and probably undesirable behavior. ** ** See also: [sqlite3_blob_read()]. */ SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset); /* ** CAPI3REF: Virtual File System Objects ** ** A virtual filesystem (VFS) is an [sqlite3_vfs] object ** that SQLite uses to interact ** with the underlying operating system. Most SQLite builds come with a ** single default VFS that is appropriate for the host computer. ** New VFSes can be registered and existing VFSes can be unregistered. ** The following interfaces are provided. ** ** ^The sqlite3_vfs_find() interface returns a pointer to a VFS given its name. ** ^Names are case sensitive. ** ^Names are zero-terminated UTF-8 strings. ** ^If there is no match, a NULL pointer is returned. ** ^If zVfsName is NULL then the default VFS is returned. ** ** ^New VFSes are registered with sqlite3_vfs_register(). ** ^Each new VFS becomes the default VFS if the makeDflt flag is set. ** ^The same VFS can be registered multiple times without injury. ** ^To make an existing VFS into the default VFS, register it again ** with the makeDflt flag set. If two different VFSes with the ** same name are registered, the behavior is undefined. If a ** VFS is registered with a name that is NULL or an empty string, ** then the behavior is undefined. ** ** ^Unregister a VFS with the sqlite3_vfs_unregister() interface. ** ^(If the default VFS is unregistered, another VFS is chosen as ** the default. The choice for the new VFS is arbitrary.)^ */ SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName); SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt); SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); /* ** CAPI3REF: Mutexes ** ** The SQLite core uses these routines for thread ** synchronization. Though they are intended for internal ** use by SQLite, code that links against SQLite is ** permitted to use any of these routines. ** ** The SQLite source code contains multiple implementations ** of these mutex routines. An appropriate implementation ** is selected automatically at compile-time. ^(The following ** implementations are available in the SQLite core: ** **
    **
  • SQLITE_MUTEX_OS2 **
  • SQLITE_MUTEX_PTHREAD **
  • SQLITE_MUTEX_W32 **
  • SQLITE_MUTEX_NOOP **
)^ ** ** ^The SQLITE_MUTEX_NOOP implementation is a set of routines ** that does no real locking and is appropriate for use in ** a single-threaded application. ^The SQLITE_MUTEX_OS2, ** SQLITE_MUTEX_PTHREAD, and SQLITE_MUTEX_W32 implementations ** are appropriate for use on OS/2, Unix, and Windows. ** ** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor ** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex ** implementation is included with the library. In this case the ** application must supply a custom mutex implementation using the ** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function ** before calling sqlite3_initialize() or any other public sqlite3_ ** function that calls sqlite3_initialize().)^ ** ** ^The sqlite3_mutex_alloc() routine allocates a new ** mutex and returns a pointer to it. ^If it returns NULL ** that means that a mutex could not be allocated. ^SQLite ** will unwind its stack and return an error. ^(The argument ** to sqlite3_mutex_alloc() is one of these integer constants: ** **
    **
  • SQLITE_MUTEX_FAST **
  • SQLITE_MUTEX_RECURSIVE **
  • SQLITE_MUTEX_STATIC_MASTER **
  • SQLITE_MUTEX_STATIC_MEM **
  • SQLITE_MUTEX_STATIC_MEM2 **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU **
  • SQLITE_MUTEX_STATIC_LRU2 **
)^ ** ** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) ** cause sqlite3_mutex_alloc() to create ** a new mutex. ^The new mutex is recursive when SQLITE_MUTEX_RECURSIVE ** is used but not necessarily so when SQLITE_MUTEX_FAST is used. ** The mutex implementation does not need to make a distinction ** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does ** not want to. ^SQLite will only request a recursive mutex in ** cases where it really needs one. ^If a faster non-recursive mutex ** implementation is available on the host platform, the mutex subsystem ** might return such a mutex in response to SQLITE_MUTEX_FAST. ** ** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other ** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return ** a pointer to a static preexisting mutex. ^Six static mutexes are ** used by the current version of SQLite. Future versions of SQLite ** may add additional static mutexes. Static mutexes are for internal ** use by SQLite only. Applications that use SQLite mutexes should ** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or ** SQLITE_MUTEX_RECURSIVE. ** ** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc() ** returns a different mutex on every call. ^But for the static ** mutex types, the same mutex is returned on every call that has ** the same type number. ** ** ^The sqlite3_mutex_free() routine deallocates a previously ** allocated dynamic mutex. ^SQLite is careful to deallocate every ** dynamic mutex that it allocates. The dynamic mutexes must not be in ** use when they are deallocated. Attempting to deallocate a static ** mutex results in undefined behavior. ^SQLite never deallocates ** a static mutex. ** ** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt ** to enter a mutex. ^If another thread is already within the mutex, ** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return ** SQLITE_BUSY. ^The sqlite3_mutex_try() interface returns [SQLITE_OK] ** upon successful entry. ^(Mutexes created using ** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread. ** In such cases the, ** mutex must be exited an equal number of times before another thread ** can enter.)^ ^(If the same thread tries to enter any other ** kind of mutex more than once, the behavior is undefined. ** SQLite will never exhibit ** such behavior in its own use of mutexes.)^ ** ** ^(Some systems (for example, Windows 95) do not support the operation ** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try() ** will always return SQLITE_BUSY. The SQLite core only ever uses ** sqlite3_mutex_try() as an optimization so this is acceptable behavior.)^ ** ** ^The sqlite3_mutex_leave() routine exits a mutex that was ** previously entered by the same thread. ^(The behavior ** is undefined if the mutex is not currently entered by the ** calling thread or is not currently allocated. SQLite will ** never do either.)^ ** ** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or ** sqlite3_mutex_leave() is a NULL pointer, then all three routines ** behave as no-ops. ** ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()]. */ SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int); SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*); SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*); /* ** CAPI3REF: Mutex Methods Object ** ** An instance of this structure defines the low-level routines ** used to allocate and use mutexes. ** ** Usually, the default mutex implementations provided by SQLite are ** sufficient, however the user has the option of substituting a custom ** implementation for specialized deployments or systems for which SQLite ** does not provide a suitable implementation. In this case, the user ** creates and populates an instance of this structure to pass ** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option. ** Additionally, an instance of this structure can be used as an ** output variable when querying the system for the current mutex ** implementation, using the [SQLITE_CONFIG_GETMUTEX] option. ** ** ^The xMutexInit method defined by this structure is invoked as ** part of system initialization by the sqlite3_initialize() function. ** ^The xMutexInit routine is called by SQLite exactly once for each ** effective call to [sqlite3_initialize()]. ** ** ^The xMutexEnd method defined by this structure is invoked as ** part of system shutdown by the sqlite3_shutdown() function. The ** implementation of this method is expected to release all outstanding ** resources obtained by the mutex methods implementation, especially ** those obtained by the xMutexInit method. ^The xMutexEnd() ** interface is invoked exactly once for each call to [sqlite3_shutdown()]. ** ** ^(The remaining seven methods defined by this structure (xMutexAlloc, ** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and ** xMutexNotheld) implement the following interfaces (respectively): ** **
    **
  • [sqlite3_mutex_alloc()]
  • **
  • [sqlite3_mutex_free()]
  • **
  • [sqlite3_mutex_enter()]
  • **
  • [sqlite3_mutex_try()]
  • **
  • [sqlite3_mutex_leave()]
  • **
  • [sqlite3_mutex_held()]
  • **
  • [sqlite3_mutex_notheld()]
  • **
)^ ** ** The only difference is that the public sqlite3_XXX functions enumerated ** above silently ignore any invocations that pass a NULL pointer instead ** of a valid mutex handle. The implementations of the methods defined ** by this structure are not required to handle this case, the results ** of passing a NULL pointer instead of a valid mutex handle are undefined ** (i.e. it is acceptable to provide an implementation that segfaults if ** it is passed a NULL pointer). ** ** The xMutexInit() method must be threadsafe. ^It must be harmless to ** invoke xMutexInit() multiple times within the same process and without ** intervening calls to xMutexEnd(). Second and subsequent calls to ** xMutexInit() must be no-ops. ** ** ^xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()] ** and its associates). ^Similarly, xMutexAlloc() must not use SQLite memory ** allocation for a static mutex. ^However xMutexAlloc() may use SQLite ** memory allocation for a fast or recursive mutex. ** ** ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is ** called, but only if the prior call to xMutexInit returned SQLITE_OK. ** If xMutexInit fails in any way, it is expected to clean up after itself ** prior to returning. */ typedef struct sqlite3_mutex_methods sqlite3_mutex_methods; struct sqlite3_mutex_methods { int (*xMutexInit)(void); int (*xMutexEnd)(void); sqlite3_mutex *(*xMutexAlloc)(int); void (*xMutexFree)(sqlite3_mutex *); void (*xMutexEnter)(sqlite3_mutex *); int (*xMutexTry)(sqlite3_mutex *); void (*xMutexLeave)(sqlite3_mutex *); int (*xMutexHeld)(sqlite3_mutex *); int (*xMutexNotheld)(sqlite3_mutex *); }; /* ** CAPI3REF: Mutex Verification Routines ** ** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines ** are intended for use inside assert() statements. ^The SQLite core ** never uses these routines except inside an assert() and applications ** are advised to follow the lead of the core. ^The SQLite core only ** provides implementations for these routines when it is compiled ** with the SQLITE_DEBUG flag. ^External mutex implementations ** are only required to provide these routines if SQLITE_DEBUG is ** defined and if NDEBUG is not defined. ** ** ^These routines should return true if the mutex in their argument ** is held or not held, respectively, by the calling thread. ** ** ^The implementation is not required to provided versions of these ** routines that actually work. If the implementation does not provide working ** versions of these routines, it should at least provide stubs that always ** return true so that one does not get spurious assertion failures. ** ** ^If the argument to sqlite3_mutex_held() is a NULL pointer then ** the routine should return 1. This seems counter-intuitive since ** clearly the mutex cannot be held if it does not exist. But the ** the reason the mutex does not exist is because the build is not ** using mutexes. And we do not want the assert() containing the ** call to sqlite3_mutex_held() to fail, so a non-zero return is ** the appropriate thing to do. ^The sqlite3_mutex_notheld() ** interface should also return 1 when given a NULL pointer. */ #ifndef NDEBUG SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*); SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); #endif /* ** CAPI3REF: Mutex Types ** ** The [sqlite3_mutex_alloc()] interface takes a single argument ** which is one of these integer constants. ** ** The set of static mutexes may change from one SQLite release to the ** next. Applications that override the built-in mutex logic must be ** prepared to accommodate additional static mutexes. */ #define SQLITE_MUTEX_FAST 0 #define SQLITE_MUTEX_RECURSIVE 1 #define SQLITE_MUTEX_STATIC_MASTER 2 #define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */ #define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */ #define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */ #define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */ #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */ #define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */ /* ** CAPI3REF: Retrieve the mutex for a database connection ** ** ^This interface returns a pointer the [sqlite3_mutex] object that ** serializes access to the [database connection] given in the argument ** when the [threading mode] is Serialized. ** ^If the [threading mode] is Single-thread or Multi-thread then this ** routine returns a NULL pointer. */ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); /* ** CAPI3REF: Low-Level Control Of Database Files ** ** ^The [sqlite3_file_control()] interface makes a direct call to the ** xFileControl method for the [sqlite3_io_methods] object associated ** with a particular database identified by the second argument. ^The ** name of the database is "main" for the main database or "temp" for the ** TEMP database, or the name that appears after the AS keyword for ** databases that are added using the [ATTACH] SQL command. ** ^A NULL pointer can be used in place of "main" to refer to the ** main database file. ** ^The third and fourth parameters to this routine ** are passed directly through to the second and third parameters of ** the xFileControl method. ^The return value of the xFileControl ** method becomes the return value of this routine. ** ** ^The SQLITE_FCNTL_FILE_POINTER value for the op parameter causes ** a pointer to the underlying [sqlite3_file] object to be written into ** the space pointed to by the 4th parameter. ^The SQLITE_FCNTL_FILE_POINTER ** case is a short-circuit path which does not actually invoke the ** underlying sqlite3_io_methods.xFileControl method. ** ** ^If the second parameter (zDbName) does not match the name of any ** open database file, then SQLITE_ERROR is returned. ^This error ** code is not remembered and will not be recalled by [sqlite3_errcode()] ** or [sqlite3_errmsg()]. The underlying xFileControl method might ** also return SQLITE_ERROR. There is no way to distinguish between ** an incorrect zDbName and an SQLITE_ERROR return from the underlying ** xFileControl method. ** ** See also: [SQLITE_FCNTL_LOCKSTATE] */ SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*); /* ** CAPI3REF: Testing Interface ** ** ^The sqlite3_test_control() interface is used to read out internal ** state of SQLite and to inject faults into SQLite for testing ** purposes. ^The first parameter is an operation code that determines ** the number, meaning, and operation of all subsequent parameters. ** ** This interface is not for use by applications. It exists solely ** for verifying the correct operation of the SQLite library. Depending ** on how the SQLite library is compiled, this interface might not exist. ** ** The details of the operation codes, their meanings, the parameters ** they take, and what they do are all subject to change without notice. ** Unlike most of the SQLite API, this function is not guaranteed to ** operate consistently from one release to the next. */ SQLITE_API int sqlite3_test_control(int op, ...); /* ** CAPI3REF: Testing Interface Operation Codes ** ** These constants are the valid operation code parameters used ** as the first argument to [sqlite3_test_control()]. ** ** These parameters and their meanings are subject to change ** without notice. These values are for testing purposes only. ** Applications should not use any of these parameters or the ** [sqlite3_test_control()] interface. */ #define SQLITE_TESTCTRL_FIRST 5 #define SQLITE_TESTCTRL_PRNG_SAVE 5 #define SQLITE_TESTCTRL_PRNG_RESTORE 6 #define SQLITE_TESTCTRL_PRNG_RESET 7 #define SQLITE_TESTCTRL_BITVEC_TEST 8 #define SQLITE_TESTCTRL_FAULT_INSTALL 9 #define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10 #define SQLITE_TESTCTRL_PENDING_BYTE 11 #define SQLITE_TESTCTRL_ASSERT 12 #define SQLITE_TESTCTRL_ALWAYS 13 #define SQLITE_TESTCTRL_RESERVE 14 #define SQLITE_TESTCTRL_OPTIMIZATIONS 15 #define SQLITE_TESTCTRL_ISKEYWORD 16 #define SQLITE_TESTCTRL_PGHDRSZ 17 #define SQLITE_TESTCTRL_SCRATCHMALLOC 18 #define SQLITE_TESTCTRL_LAST 18 /* ** CAPI3REF: SQLite Runtime Status ** ** ^This interface is used to retrieve runtime status information ** about the performance of SQLite, and optionally to reset various ** highwater marks. ^The first argument is an integer code for ** the specific parameter to measure. ^(Recognized integer codes ** are of the form [SQLITE_STATUS_MEMORY_USED | SQLITE_STATUS_...].)^ ** ^The current value of the parameter is returned into *pCurrent. ** ^The highest recorded value is returned in *pHighwater. ^If the ** resetFlag is true, then the highest record value is reset after ** *pHighwater is written. ^(Some parameters do not record the highest ** value. For those parameters ** nothing is written into *pHighwater and the resetFlag is ignored.)^ ** ^(Other parameters record only the highwater mark and not the current ** value. For these latter parameters nothing is written into *pCurrent.)^ ** ** ^The sqlite3_status() routine returns SQLITE_OK on success and a ** non-zero [error code] on failure. ** ** This routine is threadsafe but is not atomic. This routine can be ** called while other threads are running the same or different SQLite ** interfaces. However the values returned in *pCurrent and ** *pHighwater reflect the status of SQLite at different points in time ** and it is possible that another thread might change the parameter ** in between the times when *pCurrent and *pHighwater are written. ** ** See also: [sqlite3_db_status()] */ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); /* ** CAPI3REF: Status Parameters ** ** These integer constants designate various run-time status parameters ** that can be returned by [sqlite3_status()]. ** **
** ^(
SQLITE_STATUS_MEMORY_USED
**
This parameter is the current amount of memory checked out ** using [sqlite3_malloc()], either directly or indirectly. The ** figure includes calls made to [sqlite3_malloc()] by the application ** and internal memory usage by the SQLite library. Scratch memory ** controlled by [SQLITE_CONFIG_SCRATCH] and auxiliary page-cache ** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in ** this parameter. The amount returned is the sum of the allocation ** sizes as reported by the xSize method in [sqlite3_mem_methods].
)^ ** ** ^(
SQLITE_STATUS_MALLOC_SIZE
**
This parameter records the largest memory allocation request ** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their ** internal equivalents). Only the value returned in the ** *pHighwater parameter to [sqlite3_status()] is of interest. ** The value written into the *pCurrent parameter is undefined.
)^ ** ** ^(
SQLITE_STATUS_MALLOC_COUNT
**
This parameter records the number of separate memory allocations.
)^ ** ** ^(
SQLITE_STATUS_PAGECACHE_USED
**
This parameter returns the number of pages used out of the ** [pagecache memory allocator] that was configured using ** [SQLITE_CONFIG_PAGECACHE]. The ** value returned is in pages, not in bytes.
)^ ** ** ^(
SQLITE_STATUS_PAGECACHE_OVERFLOW
**
This parameter returns the number of bytes of page cache ** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE] ** buffer and where forced to overflow to [sqlite3_malloc()]. The ** returned value includes allocations that overflowed because they ** where too large (they were larger than the "sz" parameter to ** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because ** no space was left in the page cache.
)^ ** ** ^(
SQLITE_STATUS_PAGECACHE_SIZE
**
This parameter records the largest memory allocation request ** handed to [pagecache memory allocator]. Only the value returned in the ** *pHighwater parameter to [sqlite3_status()] is of interest. ** The value written into the *pCurrent parameter is undefined.
)^ ** ** ^(
SQLITE_STATUS_SCRATCH_USED
**
This parameter returns the number of allocations used out of the ** [scratch memory allocator] configured using ** [SQLITE_CONFIG_SCRATCH]. The value returned is in allocations, not ** in bytes. Since a single thread may only have one scratch allocation ** outstanding at time, this parameter also reports the number of threads ** using scratch memory at the same time.
)^ ** ** ^(
SQLITE_STATUS_SCRATCH_OVERFLOW
**
This parameter returns the number of bytes of scratch memory ** allocation which could not be satisfied by the [SQLITE_CONFIG_SCRATCH] ** buffer and where forced to overflow to [sqlite3_malloc()]. The values ** returned include overflows because the requested allocation was too ** larger (that is, because the requested allocation was larger than the ** "sz" parameter to [SQLITE_CONFIG_SCRATCH]) and because no scratch buffer ** slots were available. **
)^ ** ** ^(
SQLITE_STATUS_SCRATCH_SIZE
**
This parameter records the largest memory allocation request ** handed to [scratch memory allocator]. Only the value returned in the ** *pHighwater parameter to [sqlite3_status()] is of interest. ** The value written into the *pCurrent parameter is undefined.
)^ ** ** ^(
SQLITE_STATUS_PARSER_STACK
**
This parameter records the deepest parser stack. It is only ** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].
)^ **
** ** New status parameters may be added from time to time. */ #define SQLITE_STATUS_MEMORY_USED 0 #define SQLITE_STATUS_PAGECACHE_USED 1 #define SQLITE_STATUS_PAGECACHE_OVERFLOW 2 #define SQLITE_STATUS_SCRATCH_USED 3 #define SQLITE_STATUS_SCRATCH_OVERFLOW 4 #define SQLITE_STATUS_MALLOC_SIZE 5 #define SQLITE_STATUS_PARSER_STACK 6 #define SQLITE_STATUS_PAGECACHE_SIZE 7 #define SQLITE_STATUS_SCRATCH_SIZE 8 #define SQLITE_STATUS_MALLOC_COUNT 9 /* ** CAPI3REF: Database Connection Status ** ** ^This interface is used to retrieve runtime status information ** about a single [database connection]. ^The first argument is the ** database connection object to be interrogated. ^The second argument ** is an integer constant, taken from the set of ** [SQLITE_DBSTATUS_LOOKASIDE_USED | SQLITE_DBSTATUS_*] macros, that ** determines the parameter to interrogate. The set of ** [SQLITE_DBSTATUS_LOOKASIDE_USED | SQLITE_DBSTATUS_*] macros is likely ** to grow in future releases of SQLite. ** ** ^The current value of the requested parameter is written into *pCur ** and the highest instantaneous value is written into *pHiwtr. ^If ** the resetFlg is true, then the highest instantaneous value is ** reset back down to the current value. ** ** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a ** non-zero [error code] on failure. ** ** See also: [sqlite3_status()] and [sqlite3_stmt_status()]. */ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg); /* ** CAPI3REF: Status Parameters for database connections ** ** These constants are the available integer "verbs" that can be passed as ** the second argument to the [sqlite3_db_status()] interface. ** ** New verbs may be added in future releases of SQLite. Existing verbs ** might be discontinued. Applications should check the return code from ** [sqlite3_db_status()] to make sure that the call worked. ** The [sqlite3_db_status()] interface will return a non-zero error code ** if a discontinued or unsupported verb is invoked. ** **
** ^(
SQLITE_DBSTATUS_LOOKASIDE_USED
**
This parameter returns the number of lookaside memory slots currently ** checked out.
)^ ** ** ^(
SQLITE_DBSTATUS_CACHE_USED
**
This parameter returns the approximate number of of bytes of heap ** memory used by all pager caches associated with the database connection.)^ ** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0. ** ** ^(
SQLITE_DBSTATUS_SCHEMA_USED
**
This parameter returns the approximate number of of bytes of heap ** memory used to store the schema for all databases associated ** with the connection - main, temp, and any [ATTACH]-ed databases.)^ ** ^The full amount of memory used by the schemas is reported, even if the ** schema memory is shared with other database connections due to ** [shared cache mode] being enabled. ** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0. ** ** ^(
SQLITE_DBSTATUS_STMT_USED
**
This parameter returns the approximate number of of bytes of heap ** and lookaside memory used by all prepared statements associated with ** the database connection.)^ ** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0. **
**
*/ #define SQLITE_DBSTATUS_LOOKASIDE_USED 0 #define SQLITE_DBSTATUS_CACHE_USED 1 #define SQLITE_DBSTATUS_SCHEMA_USED 2 #define SQLITE_DBSTATUS_STMT_USED 3 #define SQLITE_DBSTATUS_MAX 3 /* Largest defined DBSTATUS */ /* ** CAPI3REF: Prepared Statement Status ** ** ^(Each prepared statement maintains various ** [SQLITE_STMTSTATUS_SORT | counters] that measure the number ** of times it has performed specific operations.)^ These counters can ** be used to monitor the performance characteristics of the prepared ** statements. For example, if the number of table steps greatly exceeds ** the number of table searches or result rows, that would tend to indicate ** that the prepared statement is using a full table scan rather than ** an index. ** ** ^(This interface is used to retrieve and reset counter values from ** a [prepared statement]. The first argument is the prepared statement ** object to be interrogated. The second argument ** is an integer code for a specific [SQLITE_STMTSTATUS_SORT | counter] ** to be interrogated.)^ ** ^The current value of the requested counter is returned. ** ^If the resetFlg is true, then the counter is reset to zero after this ** interface call returns. ** ** See also: [sqlite3_status()] and [sqlite3_db_status()]. */ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg); /* ** CAPI3REF: Status Parameters for prepared statements ** ** These preprocessor macros define integer codes that name counter ** values associated with the [sqlite3_stmt_status()] interface. ** The meanings of the various counters are as follows: ** **
**
SQLITE_STMTSTATUS_FULLSCAN_STEP
**
^This is the number of times that SQLite has stepped forward in ** a table as part of a full table scan. Large numbers for this counter ** may indicate opportunities for performance improvement through ** careful use of indices.
** **
SQLITE_STMTSTATUS_SORT
**
^This is the number of sort operations that have occurred. ** A non-zero value in this counter may indicate an opportunity to ** improvement performance through careful use of indices.
** **
SQLITE_STMTSTATUS_AUTOINDEX
**
^This is the number of rows inserted into transient indices that ** were created automatically in order to help joins run faster. ** A non-zero value in this counter may indicate an opportunity to ** improvement performance by adding permanent indices that do not ** need to be reinitialized each time the statement is run.
** **
*/ #define SQLITE_STMTSTATUS_FULLSCAN_STEP 1 #define SQLITE_STMTSTATUS_SORT 2 #define SQLITE_STMTSTATUS_AUTOINDEX 3 /* ** CAPI3REF: Custom Page Cache Object ** ** The sqlite3_pcache type is opaque. It is implemented by ** the pluggable module. The SQLite core has no knowledge of ** its size or internal structure and never deals with the ** sqlite3_pcache object except by holding and passing pointers ** to the object. ** ** See [sqlite3_pcache_methods] for additional information. */ typedef struct sqlite3_pcache sqlite3_pcache; /* ** CAPI3REF: Application Defined Page Cache. ** KEYWORDS: {page cache} ** ** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can ** register an alternative page cache implementation by passing in an ** instance of the sqlite3_pcache_methods structure.)^ ** In many applications, most of the heap memory allocated by ** SQLite is used for the page cache. ** By implementing a ** custom page cache using this API, an application can better control ** the amount of memory consumed by SQLite, the way in which ** that memory is allocated and released, and the policies used to ** determine exactly which parts of a database file are cached and for ** how long. ** ** The alternative page cache mechanism is an ** extreme measure that is only needed by the most demanding applications. ** The built-in page cache is recommended for most uses. ** ** ^(The contents of the sqlite3_pcache_methods structure are copied to an ** internal buffer by SQLite within the call to [sqlite3_config]. Hence ** the application may discard the parameter after the call to ** [sqlite3_config()] returns.)^ ** ** ^(The xInit() method is called once for each effective ** call to [sqlite3_initialize()])^ ** (usually only once during the lifetime of the process). ^(The xInit() ** method is passed a copy of the sqlite3_pcache_methods.pArg value.)^ ** The intent of the xInit() method is to set up global data structures ** required by the custom page cache implementation. ** ^(If the xInit() method is NULL, then the ** built-in default page cache is used instead of the application defined ** page cache.)^ ** ** ^The xShutdown() method is called by [sqlite3_shutdown()]. ** It can be used to clean up ** any outstanding resources before process shutdown, if required. ** ^The xShutdown() method may be NULL. ** ** ^SQLite automatically serializes calls to the xInit method, ** so the xInit method need not be threadsafe. ^The ** xShutdown method is only called from [sqlite3_shutdown()] so it does ** not need to be threadsafe either. All other methods must be threadsafe ** in multithreaded applications. ** ** ^SQLite will never invoke xInit() more than once without an intervening ** call to xShutdown(). ** ** ^SQLite invokes the xCreate() method to construct a new cache instance. ** SQLite will typically create one cache instance for each open database file, ** though this is not guaranteed. ^The ** first parameter, szPage, is the size in bytes of the pages that must ** be allocated by the cache. ^szPage will not be a power of two. ^szPage ** will the page size of the database file that is to be cached plus an ** increment (here called "R") of about 100 or 200. SQLite will use the ** extra R bytes on each page to store metadata about the underlying ** database page on disk. The value of R depends ** on the SQLite version, the target platform, and how SQLite was compiled. ** ^R is constant for a particular build of SQLite. ^The second argument to ** xCreate(), bPurgeable, is true if the cache being created will ** be used to cache database pages of a file stored on disk, or ** false if it is used for an in-memory database. The cache implementation ** does not have to do anything special based with the value of bPurgeable; ** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will ** never invoke xUnpin() except to deliberately delete a page. ** ^In other words, calls to xUnpin() on a cache with bPurgeable set to ** false will always have the "discard" flag set to true. ** ^Hence, a cache created with bPurgeable false will ** never contain any unpinned pages. ** ** ^(The xCachesize() method may be called at any time by SQLite to set the ** suggested maximum cache-size (number of pages stored by) the cache ** instance passed as the first argument. This is the value configured using ** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable ** parameter, the implementation is not required to do anything with this ** value; it is advisory only. ** ** The xPagecount() method must return the number of pages currently ** stored in the cache, both pinned and unpinned. ** ** The xFetch() method locates a page in the cache and returns a pointer to ** the page, or a NULL pointer. ** A "page", in this context, means a buffer of szPage bytes aligned at an ** 8-byte boundary. The page to be fetched is determined by the key. ^The ** mimimum key value is 1. After it has been retrieved using xFetch, the page ** is considered to be "pinned". ** ** If the requested page is already in the page cache, then the page cache ** implementation must return a pointer to the page buffer with its content ** intact. If the requested page is not already in the cache, then the ** behavior of the cache implementation should use the value of the createFlag ** parameter to help it determined what action to take: ** ** **
createFlag Behaviour when page is not already in cache **
0 Do not allocate a new page. Return NULL. **
1 Allocate a new page if it easy and convenient to do so. ** Otherwise return NULL. **
2 Make every effort to allocate a new page. Only return ** NULL if allocating a new page is effectively impossible. **
** ** ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite ** will only use a createFlag of 2 after a prior call with a createFlag of 1 ** failed.)^ In between the to xFetch() calls, SQLite may ** attempt to unpin one or more cache pages by spilling the content of ** pinned pages to disk and synching the operating system disk cache. ** ** ^xUnpin() is called by SQLite with a pointer to a currently pinned page ** as its second argument. If the third parameter, discard, is non-zero, ** then the page must be evicted from the cache. ** ^If the discard parameter is ** zero, then the page may be discarded or retained at the discretion of ** page cache implementation. ^The page cache implementation ** may choose to evict unpinned pages at any time. ** ** The cache must not perform any reference counting. A single ** call to xUnpin() unpins the page regardless of the number of prior calls ** to xFetch(). ** ** The xRekey() method is used to change the key value associated with the ** page passed as the second argument. If the cache ** previously contains an entry associated with newKey, it must be ** discarded. ^Any prior cache entry associated with newKey is guaranteed not ** to be pinned. ** ** When SQLite calls the xTruncate() method, the cache must discard all ** existing cache entries with page numbers (keys) greater than or equal ** to the value of the iLimit parameter passed to xTruncate(). If any ** of these pages are pinned, they are implicitly unpinned, meaning that ** they can be safely discarded. ** ** ^The xDestroy() method is used to delete a cache allocated by xCreate(). ** All resources associated with the specified cache should be freed. ^After ** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*] ** handle invalid, and will not use it with any other sqlite3_pcache_methods ** functions. */ typedef struct sqlite3_pcache_methods sqlite3_pcache_methods; struct sqlite3_pcache_methods { void *pArg; int (*xInit)(void*); void (*xShutdown)(void*); sqlite3_pcache *(*xCreate)(int szPage, int bPurgeable); void (*xCachesize)(sqlite3_pcache*, int nCachesize); int (*xPagecount)(sqlite3_pcache*); void *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag); void (*xUnpin)(sqlite3_pcache*, void*, int discard); void (*xRekey)(sqlite3_pcache*, void*, unsigned oldKey, unsigned newKey); void (*xTruncate)(sqlite3_pcache*, unsigned iLimit); void (*xDestroy)(sqlite3_pcache*); }; /* ** CAPI3REF: Online Backup Object ** ** The sqlite3_backup object records state information about an ongoing ** online backup operation. ^The sqlite3_backup object is created by ** a call to [sqlite3_backup_init()] and is destroyed by a call to ** [sqlite3_backup_finish()]. ** ** See Also: [Using the SQLite Online Backup API] */ typedef struct sqlite3_backup sqlite3_backup; /* ** CAPI3REF: Online Backup API. ** ** The backup API copies the content of one database into another. ** It is useful either for creating backups of databases or ** for copying in-memory databases to or from persistent files. ** ** See Also: [Using the SQLite Online Backup API] ** ** ^Exclusive access is required to the destination database for the ** duration of the operation. ^However the source database is only ** read-locked while it is actually being read; it is not locked ** continuously for the entire backup operation. ^Thus, the backup may be ** performed on a live source database without preventing other users from ** reading or writing to the source database while the backup is underway. ** ** ^(To perform a backup operation: **
    **
  1. sqlite3_backup_init() is called once to initialize the ** backup, **
  2. sqlite3_backup_step() is called one or more times to transfer ** the data between the two databases, and finally **
  3. sqlite3_backup_finish() is called to release all resources ** associated with the backup operation. **
)^ ** There should be exactly one call to sqlite3_backup_finish() for each ** successful call to sqlite3_backup_init(). ** ** sqlite3_backup_init() ** ** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the ** [database connection] associated with the destination database ** and the database name, respectively. ** ^The database name is "main" for the main database, "temp" for the ** temporary database, or the name specified after the AS keyword in ** an [ATTACH] statement for an attached database. ** ^The S and M arguments passed to ** sqlite3_backup_init(D,N,S,M) identify the [database connection] ** and database name of the source database, respectively. ** ^The source and destination [database connections] (parameters S and D) ** must be different or else sqlite3_backup_init(D,N,S,M) will file with ** an error. ** ** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is ** returned and an error code and error message are store3d in the ** destination [database connection] D. ** ^The error code and message for the failed call to sqlite3_backup_init() ** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or ** [sqlite3_errmsg16()] functions. ** ^A successful call to sqlite3_backup_init() returns a pointer to an ** [sqlite3_backup] object. ** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and ** sqlite3_backup_finish() functions to perform the specified backup ** operation. ** ** sqlite3_backup_step() ** ** ^Function sqlite3_backup_step(B,N) will copy up to N pages between ** the source and destination databases specified by [sqlite3_backup] object B. ** ^If N is negative, all remaining source pages are copied. ** ^If sqlite3_backup_step(B,N) successfully copies N pages and there ** are still more pages to be copied, then the function resturns [SQLITE_OK]. ** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages ** from source to destination, then it returns [SQLITE_DONE]. ** ^If an error occurs while running sqlite3_backup_step(B,N), ** then an [error code] is returned. ^As well as [SQLITE_OK] and ** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY], ** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code. ** ** ^(The sqlite3_backup_step() might return [SQLITE_READONLY] if **
    **
  1. the destination database was opened read-only, or **
  2. the destination database is using write-ahead-log journaling ** and the destination and source page sizes differ, or **
  3. The destination database is an in-memory database and the ** destination and source page sizes differ. **
)^ ** ** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then ** the [sqlite3_busy_handler | busy-handler function] ** is invoked (if one is specified). ^If the ** busy-handler returns non-zero before the lock is available, then ** [SQLITE_BUSY] is returned to the caller. ^In this case the call to ** sqlite3_backup_step() can be retried later. ^If the source ** [database connection] ** is being used to write to the source database when sqlite3_backup_step() ** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this ** case the call to sqlite3_backup_step() can be retried later on. ^(If ** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or ** [SQLITE_READONLY] is returned, then ** there is no point in retrying the call to sqlite3_backup_step(). These ** errors are considered fatal.)^ The application must accept ** that the backup operation has failed and pass the backup operation handle ** to the sqlite3_backup_finish() to release associated resources. ** ** ^The first call to sqlite3_backup_step() obtains an exclusive lock ** on the destination file. ^The exclusive lock is not released until either ** sqlite3_backup_finish() is called or the backup operation is complete ** and sqlite3_backup_step() returns [SQLITE_DONE]. ^Every call to ** sqlite3_backup_step() obtains a [shared lock] on the source database that ** lasts for the duration of the sqlite3_backup_step() call. ** ^Because the source database is not locked between calls to ** sqlite3_backup_step(), the source database may be modified mid-way ** through the backup process. ^If the source database is modified by an ** external process or via a database connection other than the one being ** used by the backup operation, then the backup will be automatically ** restarted by the next call to sqlite3_backup_step(). ^If the source ** database is modified by the using the same database connection as is used ** by the backup operation, then the backup database is automatically ** updated at the same time. ** ** sqlite3_backup_finish() ** ** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the ** application wishes to abandon the backup operation, the application ** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish(). ** ^The sqlite3_backup_finish() interfaces releases all ** resources associated with the [sqlite3_backup] object. ** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any ** active write-transaction on the destination database is rolled back. ** The [sqlite3_backup] object is invalid ** and may not be used following a call to sqlite3_backup_finish(). ** ** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no ** sqlite3_backup_step() errors occurred, regardless or whether or not ** sqlite3_backup_step() completed. ** ^If an out-of-memory condition or IO error occurred during any prior ** sqlite3_backup_step() call on the same [sqlite3_backup] object, then ** sqlite3_backup_finish() returns the corresponding [error code]. ** ** ^A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step() ** is not a permanent error and does not affect the return value of ** sqlite3_backup_finish(). ** ** sqlite3_backup_remaining(), sqlite3_backup_pagecount() ** ** ^Each call to sqlite3_backup_step() sets two values inside ** the [sqlite3_backup] object: the number of pages still to be backed ** up and the total number of pages in the source database file. ** The sqlite3_backup_remaining() and sqlite3_backup_pagecount() interfaces ** retrieve these two values, respectively. ** ** ^The values returned by these functions are only updated by ** sqlite3_backup_step(). ^If the source database is modified during a backup ** operation, then the values are not updated to account for any extra ** pages that need to be updated or the size of the source database file ** changing. ** ** Concurrent Usage of Database Handles ** ** ^The source [database connection] may be used by the application for other ** purposes while a backup operation is underway or being initialized. ** ^If SQLite is compiled and configured to support threadsafe database ** connections, then the source database connection may be used concurrently ** from within other threads. ** ** However, the application must guarantee that the destination ** [database connection] is not passed to any other API (by any thread) after ** sqlite3_backup_init() is called and before the corresponding call to ** sqlite3_backup_finish(). SQLite does not currently check to see ** if the application incorrectly accesses the destination [database connection] ** and so no error code is reported, but the operations may malfunction ** nevertheless. Use of the destination database connection while a ** backup is in progress might also also cause a mutex deadlock. ** ** If running in [shared cache mode], the application must ** guarantee that the shared cache used by the destination database ** is not accessed while the backup is running. In practice this means ** that the application must guarantee that the disk file being ** backed up to is not accessed by any connection within the process, ** not just the specific connection that was passed to sqlite3_backup_init(). ** ** The [sqlite3_backup] object itself is partially threadsafe. Multiple ** threads may safely make multiple concurrent calls to sqlite3_backup_step(). ** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount() ** APIs are not strictly speaking threadsafe. If they are invoked at the ** same time as another thread is invoking sqlite3_backup_step() it is ** possible that they return invalid values. */ SQLITE_API sqlite3_backup *sqlite3_backup_init( sqlite3 *pDest, /* Destination database handle */ const char *zDestName, /* Destination database name */ sqlite3 *pSource, /* Source database handle */ const char *zSourceName /* Source database name */ ); SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage); SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p); SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p); SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p); /* ** CAPI3REF: Unlock Notification ** ** ^When running in shared-cache mode, a database operation may fail with ** an [SQLITE_LOCKED] error if the required locks on the shared-cache or ** individual tables within the shared-cache cannot be obtained. See ** [SQLite Shared-Cache Mode] for a description of shared-cache locking. ** ^This API may be used to register a callback that SQLite will invoke ** when the connection currently holding the required lock relinquishes it. ** ^This API is only available if the library was compiled with the ** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined. ** ** See Also: [Using the SQLite Unlock Notification Feature]. ** ** ^Shared-cache locks are released when a database connection concludes ** its current transaction, either by committing it or rolling it back. ** ** ^When a connection (known as the blocked connection) fails to obtain a ** shared-cache lock and SQLITE_LOCKED is returned to the caller, the ** identity of the database connection (the blocking connection) that ** has locked the required resource is stored internally. ^After an ** application receives an SQLITE_LOCKED error, it may call the ** sqlite3_unlock_notify() method with the blocked connection handle as ** the first argument to register for a callback that will be invoked ** when the blocking connections current transaction is concluded. ^The ** callback is invoked from within the [sqlite3_step] or [sqlite3_close] ** call that concludes the blocking connections transaction. ** ** ^(If sqlite3_unlock_notify() is called in a multi-threaded application, ** there is a chance that the blocking connection will have already ** concluded its transaction by the time sqlite3_unlock_notify() is invoked. ** If this happens, then the specified callback is invoked immediately, ** from within the call to sqlite3_unlock_notify().)^ ** ** ^If the blocked connection is attempting to obtain a write-lock on a ** shared-cache table, and more than one other connection currently holds ** a read-lock on the same table, then SQLite arbitrarily selects one of ** the other connections to use as the blocking connection. ** ** ^(There may be at most one unlock-notify callback registered by a ** blocked connection. If sqlite3_unlock_notify() is called when the ** blocked connection already has a registered unlock-notify callback, ** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is ** called with a NULL pointer as its second argument, then any existing ** unlock-notify callback is canceled. ^The blocked connections ** unlock-notify callback may also be canceled by closing the blocked ** connection using [sqlite3_close()]. ** ** The unlock-notify callback is not reentrant. If an application invokes ** any sqlite3_xxx API functions from within an unlock-notify callback, a ** crash or deadlock may be the result. ** ** ^Unless deadlock is detected (see below), sqlite3_unlock_notify() always ** returns SQLITE_OK. ** ** Callback Invocation Details ** ** When an unlock-notify callback is registered, the application provides a ** single void* pointer that is passed to the callback when it is invoked. ** However, the signature of the callback function allows SQLite to pass ** it an array of void* context pointers. The first argument passed to ** an unlock-notify callback is a pointer to an array of void* pointers, ** and the second is the number of entries in the array. ** ** When a blocking connections transaction is concluded, there may be ** more than one blocked connection that has registered for an unlock-notify ** callback. ^If two or more such blocked connections have specified the ** same callback function, then instead of invoking the callback function ** multiple times, it is invoked once with the set of void* context pointers ** specified by the blocked connections bundled together into an array. ** This gives the application an opportunity to prioritize any actions ** related to the set of unblocked database connections. ** ** Deadlock Detection ** ** Assuming that after registering for an unlock-notify callback a ** database waits for the callback to be issued before taking any further ** action (a reasonable assumption), then using this API may cause the ** application to deadlock. For example, if connection X is waiting for ** connection Y's transaction to be concluded, and similarly connection ** Y is waiting on connection X's transaction, then neither connection ** will proceed and the system may remain deadlocked indefinitely. ** ** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock ** detection. ^If a given call to sqlite3_unlock_notify() would put the ** system in a deadlocked state, then SQLITE_LOCKED is returned and no ** unlock-notify callback is registered. The system is said to be in ** a deadlocked state if connection A has registered for an unlock-notify ** callback on the conclusion of connection B's transaction, and connection ** B has itself registered for an unlock-notify callback when connection ** A's transaction is concluded. ^Indirect deadlock is also detected, so ** the system is also considered to be deadlocked if connection B has ** registered for an unlock-notify callback on the conclusion of connection ** C's transaction, where connection C is waiting on connection A. ^Any ** number of levels of indirection are allowed. ** ** The "DROP TABLE" Exception ** ** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost ** always appropriate to call sqlite3_unlock_notify(). There is however, ** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement, ** SQLite checks if there are any currently executing SELECT statements ** that belong to the same connection. If there are, SQLITE_LOCKED is ** returned. In this case there is no "blocking connection", so invoking ** sqlite3_unlock_notify() results in the unlock-notify callback being ** invoked immediately. If the application then re-attempts the "DROP TABLE" ** or "DROP INDEX" query, an infinite loop might be the result. ** ** One way around this problem is to check the extended error code returned ** by an sqlite3_step() call. ^(If there is a blocking connection, then the ** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in ** the special "DROP TABLE/INDEX" case, the extended error code is just ** SQLITE_LOCKED.)^ */ SQLITE_API int sqlite3_unlock_notify( sqlite3 *pBlocked, /* Waiting connection */ void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */ void *pNotifyArg /* Argument to pass to xNotify */ ); /* ** CAPI3REF: String Comparison ** ** ^The [sqlite3_strnicmp()] API allows applications and extensions to ** compare the contents of two buffers containing UTF-8 strings in a ** case-independent fashion, using the same definition of case independence ** that SQLite uses internally when comparing identifiers. */ SQLITE_API int sqlite3_strnicmp(const char *, const char *, int); /* ** CAPI3REF: Error Logging Interface ** ** ^The [sqlite3_log()] interface writes a message into the error log ** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()]. ** ^If logging is enabled, the zFormat string and subsequent arguments are ** used with [sqlite3_snprintf()] to generate the final output string. ** ** The sqlite3_log() interface is intended for use by extensions such as ** virtual tables, collating functions, and SQL functions. While there is ** nothing to prevent an application from calling sqlite3_log(), doing so ** is considered bad form. ** ** The zFormat string must not be NULL. ** ** To avoid deadlocks and other threading problems, the sqlite3_log() routine ** will not use dynamically allocated memory. The log message is stored in ** a fixed-length buffer on the stack. If the log message is longer than ** a few hundred characters, it will be truncated to the length of the ** buffer. */ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...); /* ** CAPI3REF: Write-Ahead Log Commit Hook ** ** ^The [sqlite3_wal_hook()] function is used to register a callback that ** will be invoked each time a database connection commits data to a ** [write-ahead log] (i.e. whenever a transaction is committed in ** [journal_mode | journal_mode=WAL mode]). ** ** ^The callback is invoked by SQLite after the commit has taken place and ** the associated write-lock on the database released, so the implementation ** may read, write or [checkpoint] the database as required. ** ** ^The first parameter passed to the callback function when it is invoked ** is a copy of the third parameter passed to sqlite3_wal_hook() when ** registering the callback. ^The second is a copy of the database handle. ** ^The third parameter is the name of the database that was written to - ** either "main" or the name of an [ATTACH]-ed database. ^The fourth parameter ** is the number of pages currently in the write-ahead log file, ** including those that were just committed. ** ** The callback function should normally return [SQLITE_OK]. ^If an error ** code is returned, that error will propagate back up through the ** SQLite code base to cause the statement that provoked the callback ** to report an error, though the commit will have still occurred. If the ** callback returns [SQLITE_ROW] or [SQLITE_DONE], or if it returns a value ** that does not correspond to any valid SQLite error code, the results ** are undefined. ** ** A single database handle may have at most a single write-ahead log callback ** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any ** previously registered write-ahead log callback. ^Note that the ** [sqlite3_wal_autocheckpoint()] interface and the ** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will ** those overwrite any prior [sqlite3_wal_hook()] settings. */ SQLITE_API void *sqlite3_wal_hook( sqlite3*, int(*)(void *,sqlite3*,const char*,int), void* ); /* ** CAPI3REF: Configure an auto-checkpoint ** ** ^The [sqlite3_wal_autocheckpoint(D,N)] is a wrapper around ** [sqlite3_wal_hook()] that causes any database on [database connection] D ** to automatically [checkpoint] ** after committing a transaction if there are N or ** more frames in the [write-ahead log] file. ^Passing zero or ** a negative value as the nFrame parameter disables automatic ** checkpoints entirely. ** ** ^The callback registered by this function replaces any existing callback ** registered using [sqlite3_wal_hook()]. ^Likewise, registering a callback ** using [sqlite3_wal_hook()] disables the automatic checkpoint mechanism ** configured by this function. ** ** ^The [wal_autocheckpoint pragma] can be used to invoke this interface ** from SQL. ** ** ^Every new [database connection] defaults to having the auto-checkpoint ** enabled with a threshold of 1000 pages. The use of this interface ** is only necessary if the default setting is found to be suboptimal ** for a particular application. */ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N); /* ** CAPI3REF: Checkpoint a database ** ** ^The [sqlite3_wal_checkpoint(D,X)] interface causes database named X ** on [database connection] D to be [checkpointed]. ^If X is NULL or an ** empty string, then a checkpoint is run on all databases of ** connection D. ^If the database connection D is not in ** [WAL | write-ahead log mode] then this interface is a harmless no-op. ** ** ^The [wal_checkpoint pragma] can be used to invoke this interface ** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the ** [wal_autocheckpoint pragma] can be used to cause this interface to be ** run whenever the WAL reaches a certain size threshold. */ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb); /* ** Undo the hack that converts floating point types to integer for ** builds on processors without floating point support. */ #ifdef SQLITE_OMIT_FLOATING_POINT # undef double #endif #ifdef __cplusplus } /* End of the 'extern "C"' block */ #endif #endif /* ** 2010 August 30 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* */ #ifndef _SQLITE3RTREE_H_ #define _SQLITE3RTREE_H_ #ifdef __cplusplus extern "C" { #endif typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; /* ** Register a geometry callback named zGeom that can be used as part of an ** R-Tree geometry query as follows: ** ** SELECT ... FROM WHERE MATCH $zGeom(... params ...) */ SQLITE_API int sqlite3_rtree_geometry_callback( sqlite3 *db, const char *zGeom, int (*xGeom)(sqlite3_rtree_geometry *, int nCoord, double *aCoord, int *pRes), void *pContext ); /* ** A pointer to a structure of the following type is passed as the first ** argument to callbacks registered using rtree_geometry_callback(). */ struct sqlite3_rtree_geometry { void *pContext; /* Copy of pContext passed to s_r_g_c() */ int nParam; /* Size of array aParam[] */ double *aParam; /* Parameters passed to SQL geom function */ void *pUser; /* Callback implementation user data */ void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ }; #ifdef __cplusplus } /* end of the 'extern "C"' block */ #endif #endif /* ifndef _SQLITE3RTREE_H_ */ 070701000af200000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/php/ext/sockets070701000af201000081a40000000000000000000000014dc0f4dd00000f09000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/ext/sockets/php_sockets.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | | | | WinSock: Daniel Beulshausen | +----------------------------------------------------------------------+ */ #ifndef PHP_SOCKETS_H #define PHP_SOCKETS_H /* $Id: php_sockets.h 306939 2011-01-01 02:19:59Z felipe $ */ #if HAVE_SOCKETS extern zend_module_entry sockets_module_entry; #define phpext_sockets_ptr &sockets_module_entry #ifdef PHP_WIN32 #include #else #if HAVE_SYS_SOCKET_H #include #endif #endif PHP_MINIT_FUNCTION(sockets); PHP_MINFO_FUNCTION(sockets); PHP_RSHUTDOWN_FUNCTION(sockets); PHP_FUNCTION(socket_select); PHP_FUNCTION(socket_create_listen); #ifdef HAVE_SOCKETPAIR PHP_FUNCTION(socket_create_pair); #endif PHP_FUNCTION(socket_accept); PHP_FUNCTION(socket_set_nonblock); PHP_FUNCTION(socket_set_block); PHP_FUNCTION(socket_listen); PHP_FUNCTION(socket_close); PHP_FUNCTION(socket_write); PHP_FUNCTION(socket_read); PHP_FUNCTION(socket_getsockname); PHP_FUNCTION(socket_getpeername); PHP_FUNCTION(socket_create); PHP_FUNCTION(socket_connect); PHP_FUNCTION(socket_strerror); PHP_FUNCTION(socket_bind); PHP_FUNCTION(socket_recv); PHP_FUNCTION(socket_send); PHP_FUNCTION(socket_recvfrom); PHP_FUNCTION(socket_sendto); PHP_FUNCTION(socket_get_option); PHP_FUNCTION(socket_set_option); #ifdef HAVE_SHUTDOWN PHP_FUNCTION(socket_shutdown); #endif PHP_FUNCTION(socket_last_error); PHP_FUNCTION(socket_clear_error); #ifndef PHP_WIN32 typedef int PHP_SOCKET; # define PHP_SOCKETS_API PHPAPI #else # define PHP_SOCKETS_API __declspec(dllexport) typedef SOCKET PHP_SOCKET; #endif typedef struct { PHP_SOCKET bsd_socket; int type; int error; int blocking; } php_socket; #ifdef PHP_WIN32 struct sockaddr_un { short sun_family; char sun_path[108]; }; #endif PHP_SOCKETS_API int php_sockets_le_socket(void); #define php_sockets_le_socket_name "Socket" /* Prototypes */ #ifdef ilia_0 /* not needed, only causes a compiler warning */ static int php_open_listen_sock(php_socket **php_sock, int port, int backlog TSRMLS_DC); static int php_accept_connect(php_socket *in_sock, php_socket **new_sock, struct sockaddr *la TSRMLS_DC); static int php_read(php_socket *sock, void *buf, size_t maxlen, int flags); static char *php_strerror(int error TSRMLS_DC); #endif ZEND_BEGIN_MODULE_GLOBALS(sockets) int last_error; char *strerror_buf; ZEND_END_MODULE_GLOBALS(sockets) #ifdef ZTS #define SOCKETS_G(v) TSRMG(sockets_globals_id, zend_sockets_globals *, v) #else #define SOCKETS_G(v) (sockets_globals.v) #endif #else #define phpext_sockets_ptr NULL #endif #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ 070701000af1f7000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002400000000root/usr/local/include/php/ext/pcre070701000af1f8000081a40000000000000000000000014dc0f4db00000cd0000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/ext/pcre/php_pcre.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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: Andrei Zmievski | +----------------------------------------------------------------------+ */ /* $Id: php_pcre.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef PHP_PCRE_H #define PHP_PCRE_H #if HAVE_PCRE || HAVE_BUNDLED_PCRE #if HAVE_BUNDLED_PCRE #include "pcrelib/pcre.h" #else #include "pcre.h" #endif #if HAVE_LOCALE_H #include #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); PHPAPI pcre* pcre_get_compiled_regex(char *regex, pcre_extra **extra, int *options TSRMLS_DC); 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; #define pcre_module_ptr &pcre_module_entry typedef struct { pcre *re; pcre_extra *extra; int preg_options; #if HAVE_SETLOCALE char *locale; unsigned const char *tables; #endif int compile_options; int refcount; } pcre_cache_entry; PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(char *regex, int regex_len TSRMLS_DC); PHPAPI void php_pcre_match_impl( pcre_cache_entry *pce, char *subject, int subject_len, zval *return_value, zval *subpats, int global, int use_flags, long flags, long start_offset TSRMLS_DC); PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int subject_len, zval *return_value, int is_callable_replace, int *result_len, int limit, int *replace_count TSRMLS_DC); PHPAPI void php_pcre_split_impl( pcre_cache_entry *pce, char *subject, int subject_len, zval *return_value, long limit_val, long flags TSRMLS_DC); PHPAPI void php_pcre_grep_impl( pcre_cache_entry *pce, zval *input, zval *return_value, long flags TSRMLS_DC); ZEND_BEGIN_MODULE_GLOBALS(pcre) HashTable pcre_cache; long backtrack_limit; long recursion_limit; int error_code; ZEND_END_MODULE_GLOBALS(pcre) #ifdef ZTS # define PCRE_G(v) TSRMG(pcre_globals_id, zend_pcre_globals *, v) #else # define PCRE_G(v) (pcre_globals.v) #endif #else #define pcre_module_ptr NULL #endif /* HAVE_PCRE || HAVE_BUNDLED_PCRE */ #define phpext_pcre_ptr pcre_module_ptr #endif /* PHP_PCRE_H */ 070701000af170000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002000000000root/usr/local/include/php/TSRM070701000af179000081a40000000000000000000000014dc0f4e200002f1d000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/TSRM/tsrm_virtual_cwd.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Sascha Schumann | | Pierre Joye | +----------------------------------------------------------------------+ */ /* $Id: tsrm_virtual_cwd.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef VIRTUAL_CWD_H #define VIRTUAL_CWD_H #include "TSRM.h" #include "tsrm_config_common.h" #include #include #include #ifdef HAVE_UTIME_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef ZTS #define VIRTUAL_DIR #endif #ifndef TSRM_WIN32 #include #else #include #endif #if defined(__osf__) || defined(_AIX) #include #endif #ifdef TSRM_WIN32 #include "readdir.h" #include /* mode_t isn't defined on Windows */ typedef unsigned short mode_t; #define DEFAULT_SLASH '\\' #define DEFAULT_DIR_SEPARATOR ';' #define IS_SLASH(c) ((c) == '/' || (c) == '\\') #define IS_SLASH_P(c) (*(c) == '/' || \ (*(c) == '\\' && !IsDBCSLeadByte(*(c-1)))) /* COPY_WHEN_ABSOLUTE is 2 under Win32 because by chance both regular absolute paths in the file system and UNC paths need copying of two characters */ #define COPY_WHEN_ABSOLUTE(path) 2 #define IS_UNC_PATH(path, len) \ (len >= 2 && IS_SLASH(path[0]) && IS_SLASH(path[1])) #define IS_ABSOLUTE_PATH(path, len) \ (len >= 2 && ((isalpha(path[0]) && path[1] == ':') || IS_UNC_PATH(path, len))) #elif defined(NETWARE) #ifdef HAVE_DIRENT_H #include #endif #define DEFAULT_SLASH '/' #define DEFAULT_DIR_SEPARATOR ';' #define IS_SLASH(c) ((c) == '/' || (c) == '\\') #define IS_SLASH_P(c) IS_SLASH(*(c)) /* Colon indicates volume name, either first character should be forward slash or backward slash */ #define IS_ABSOLUTE_PATH(path, len) \ ((strchr(path, ':') != NULL) || ((len >= 1) && ((path[0] == '/') || (path[0] == '\\')))) #else #ifdef HAVE_DIRENT_H #include #endif #define DEFAULT_SLASH '/' #ifdef __riscos__ #define DEFAULT_DIR_SEPARATOR ';' #else #define DEFAULT_DIR_SEPARATOR ':' #endif #define IS_SLASH(c) ((c) == '/') #define IS_SLASH_P(c) (*(c) == '/') #endif #ifndef COPY_WHEN_ABSOLUTE #define COPY_WHEN_ABSOLUTE(path) 0 #endif #ifndef IS_ABSOLUTE_PATH #define IS_ABSOLUTE_PATH(path, len) \ (IS_SLASH(path[0])) #endif #ifdef TSRM_EXPORTS #define CWD_EXPORTS #endif #ifdef TSRM_WIN32 # ifdef CWD_EXPORTS # define CWD_API __declspec(dllexport) # else # define CWD_API __declspec(dllimport) # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define CWD_API __attribute__ ((visibility("default"))) #else # define CWD_API #endif #ifdef TSRM_WIN32 CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat); CWD_API int php_sys_stat(const char *path, struct stat *buf); CWD_API int php_sys_lstat(const char *path, struct stat *buf); CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len); #else # define php_sys_stat stat # define php_sys_lstat lstat # ifdef HAVE_SYMLINK # define php_sys_readlink(link, target, target_len) readlink(link, target, target_len) # endif #endif typedef struct _cwd_state { char *cwd; int cwd_length; } cwd_state; typedef int (*verify_path_func)(const cwd_state *); CWD_API void virtual_cwd_startup(void); CWD_API void virtual_cwd_shutdown(void); CWD_API char *virtual_getcwd_ex(size_t *length TSRMLS_DC); CWD_API char *virtual_getcwd(char *buf, size_t size TSRMLS_DC); CWD_API int virtual_chdir(const char *path TSRMLS_DC); CWD_API int virtual_chdir_file(const char *path, int (*p_chdir)(const char *path TSRMLS_DC) TSRMLS_DC); CWD_API int virtual_filepath(const char *path, char **filepath TSRMLS_DC); CWD_API int virtual_filepath_ex(const char *path, char **filepath, verify_path_func verify_path TSRMLS_DC); CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC); CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC); CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...); CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC); CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC); CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC); CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC); CWD_API int virtual_unlink(const char *path TSRMLS_DC); CWD_API int virtual_mkdir(const char *pathname, mode_t mode TSRMLS_DC); CWD_API int virtual_rmdir(const char *pathname TSRMLS_DC); CWD_API DIR *virtual_opendir(const char *pathname TSRMLS_DC); CWD_API FILE *virtual_popen(const char *command, const char *type TSRMLS_DC); CWD_API int virtual_access(const char *pathname, int mode TSRMLS_DC); #if defined(TSRM_WIN32) /* these are not defined in win32 headers */ #ifndef W_OK #define W_OK 0x02 #endif #ifndef R_OK #define R_OK 0x04 #endif #ifndef X_OK #define X_OK 0x01 #endif #ifndef F_OK #define F_OK 0x00 #endif #endif #if HAVE_UTIME CWD_API int virtual_utime(const char *filename, struct utimbuf *buf TSRMLS_DC); #endif CWD_API int virtual_chmod(const char *filename, mode_t mode TSRMLS_DC); #if !defined(TSRM_WIN32) && !defined(NETWARE) CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int link TSRMLS_DC); #endif /* One of the following constants must be used as the last argument in virtual_file_ex() call. */ #define CWD_EXPAND 0 /* expand "." and ".." but dont resolve symlinks */ #define CWD_FILEPATH 1 /* resolve symlinks if file is exist otherwise expand */ #define CWD_REALPATH 2 /* call realpath(), resolve symlinks. File must exist */ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath); CWD_API char *tsrm_realpath(const char *path, char *real_path TSRMLS_DC); #define REALPATH_CACHE_TTL (2*60) /* 2 minutes */ #define REALPATH_CACHE_SIZE 0 /* disabled while php.ini isn't loaded */ typedef struct _realpath_cache_bucket { unsigned long key; char *path; int path_len; char *realpath; int realpath_len; int is_dir; time_t expires; #ifdef PHP_WIN32 unsigned char is_rvalid; unsigned char is_readable; unsigned char is_wvalid; unsigned char is_writable; #endif struct _realpath_cache_bucket *next; } realpath_cache_bucket; typedef struct _virtual_cwd_globals { cwd_state cwd; long realpath_cache_size; long realpath_cache_size_limit; long realpath_cache_ttl; realpath_cache_bucket *realpath_cache[1024]; } virtual_cwd_globals; #ifdef ZTS extern ts_rsrc_id cwd_globals_id; # define CWDG(v) TSRMG(cwd_globals_id, virtual_cwd_globals *, v) #else extern virtual_cwd_globals cwd_globals; # define CWDG(v) (cwd_globals.v) #endif CWD_API void realpath_cache_clean(TSRMLS_D); CWD_API void realpath_cache_del(const char *path, int path_len TSRMLS_DC); CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, int path_len, time_t t TSRMLS_DC); CWD_API int realpath_cache_size(TSRMLS_D); CWD_API int realpath_cache_max_buckets(TSRMLS_D); CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D); /* The actual macros to be used in programs using TSRM * If the program defines VIRTUAL_DIR it will use the * virtual_* functions */ #ifdef VIRTUAL_DIR #define VCWD_GETCWD(buff, size) virtual_getcwd(buff, size TSRMLS_CC) #define VCWD_FOPEN(path, mode) virtual_fopen(path, mode TSRMLS_CC) /* Because open() has two modes, we have to macros to replace it */ #define VCWD_OPEN(path, flags) virtual_open(path TSRMLS_CC, flags) #define VCWD_OPEN_MODE(path, flags, mode) virtual_open(path TSRMLS_CC, flags, mode) #define VCWD_CREAT(path, mode) virtual_creat(path, mode TSRMLS_CC) #define VCWD_CHDIR(path) virtual_chdir(path TSRMLS_CC) #define VCWD_CHDIR_FILE(path) virtual_chdir_file(path, virtual_chdir TSRMLS_CC) #define VCWD_GETWD(buf) #define VCWD_REALPATH(path, real_path) virtual_realpath(path, real_path TSRMLS_CC) #define VCWD_RENAME(oldname, newname) virtual_rename(oldname, newname TSRMLS_CC) #define VCWD_STAT(path, buff) virtual_stat(path, buff TSRMLS_CC) #define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC) #define VCWD_UNLINK(path) virtual_unlink(path TSRMLS_CC) #define VCWD_MKDIR(pathname, mode) virtual_mkdir(pathname, mode TSRMLS_CC) #define VCWD_RMDIR(pathname) virtual_rmdir(pathname TSRMLS_CC) #define VCWD_OPENDIR(pathname) virtual_opendir(pathname TSRMLS_CC) #define VCWD_POPEN(command, type) virtual_popen(command, type TSRMLS_CC) #define VCWD_ACCESS(pathname, mode) virtual_access(pathname, mode TSRMLS_CC) #if HAVE_UTIME #define VCWD_UTIME(path, time) virtual_utime(path, time TSRMLS_CC) #endif #define VCWD_CHMOD(path, mode) virtual_chmod(path, mode TSRMLS_CC) #if !defined(TSRM_WIN32) && !defined(NETWARE) #define VCWD_CHOWN(path, owner, group) virtual_chown(path, owner, group, 0 TSRMLS_CC) #if HAVE_LCHOWN #define VCWD_LCHOWN(path, owner, group) virtual_chown(path, owner, group, 1 TSRMLS_CC) #endif #endif #else #define VCWD_GETCWD(buff, size) getcwd(buff, size) #define VCWD_FOPEN(path, mode) fopen(path, mode) #define VCWD_OPEN(path, flags) open(path, flags) #define VCWD_OPEN_MODE(path, flags, mode) open(path, flags, mode) #define VCWD_CREAT(path, mode) creat(path, mode) /* rename on windows will fail if newname already exists. MoveFileEx has to be used */ #if defined(TSRM_WIN32) # define VCWD_RENAME(oldname, newname) (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED) == 0 ? -1 : 0) #else # define VCWD_RENAME(oldname, newname) rename(oldname, newname) #endif #define VCWD_CHDIR(path) chdir(path) #define VCWD_CHDIR_FILE(path) virtual_chdir_file(path, chdir) #define VCWD_GETWD(buf) getwd(buf) #define VCWD_STAT(path, buff) php_sys_stat(path, buff) #define VCWD_LSTAT(path, buff) lstat(path, buff) #define VCWD_UNLINK(path) unlink(path) #define VCWD_MKDIR(pathname, mode) mkdir(pathname, mode) #define VCWD_RMDIR(pathname) rmdir(pathname) #define VCWD_OPENDIR(pathname) opendir(pathname) #define VCWD_POPEN(command, type) popen(command, type) #if defined(TSRM_WIN32) #define VCWD_ACCESS(pathname, mode) tsrm_win32_access(pathname, mode) #else #define VCWD_ACCESS(pathname, mode) access(pathname, mode) #endif #define VCWD_REALPATH(path, real_path) tsrm_realpath(path, real_path TSRMLS_CC) #if HAVE_UTIME # ifdef TSRM_WIN32 # define VCWD_UTIME(path, time) win32_utime(path, time) # else # define VCWD_UTIME(path, time) utime(path, time) # endif #endif #define VCWD_CHMOD(path, mode) chmod(path, mode) #if !defined(TSRM_WIN32) && !defined(NETWARE) #define VCWD_CHOWN(path, owner, group) chown(path, owner, group) #if HAVE_LCHOWN #define VCWD_LCHOWN(path, owner, group) lchown(path, owner, group) #endif #endif #endif #endif /* VIRTUAL_CWD_H */ 070701000af176000081a40000000000000000000000014dc0f4e2000005b6000000b500010002ffffffffffffffff0000003500000000root/usr/local/include/php/TSRM/tsrm_config_common.h#ifndef TSRM_CONFIG_COMMON_H #define TSRM_CONFIG_COMMON_H #ifndef __CYGWIN__ # if WINNT|WIN32 # define TSRM_WIN32 # endif #endif #ifdef TSRM_WIN32 # include "tsrm_config.w32.h" #else # include # include #endif #if HAVE_ALLOCA_H && !defined(_ALLOCA_H) # include #endif /* AIX requires this to be the first thing in the file. */ #ifndef __GNUC__ # ifndef HAVE_ALLOCA_H # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ # ifndef NETWARE char *alloca (); # endif # endif # endif # endif #endif #if HAVE_UNISTD_H #include #endif #if HAVE_LIMITS_H #include #endif #ifndef MAXPATHLEN # ifdef PATH_MAX # define MAXPATHLEN PATH_MAX # elif defined(MAX_PATH) # define MAXPATHLEN MAX_PATH # else # define MAXPATHLEN 256 # endif #endif #if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) # define TSRM_ALLOCA_MAX_SIZE 4096 # define TSRM_ALLOCA_FLAG(name) \ int name; # define tsrm_do_alloca_ex(size, limit, use_heap) \ ((use_heap = ((size) > (limit))) ? malloc(size) : alloca(size)) # define tsrm_do_alloca(size, use_heap) \ tsrm_do_alloca_ex(size, TSRM_ALLOCA_MAX_SIZE, use_heap) # define tsrm_free_alloca(p, use_heap) \ do { if (use_heap) free(p); } while (0) #else # define TSRM_ALLOCA_FLAG(name) # define tsrm_do_alloca(p, use_heap) malloc(p) # define tsrm_free_alloca(p, use_heap) free(p) #endif #endif /* TSRM_CONFIG_COMMON_H */ 070701000af174000081a40000000000000000000000014dc0f4e200000020000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/TSRM/tsrm_config.h#include <../main/php_config.h> 070701000af171000081a40000000000000000000000014dc0f4e1000014d9000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/php/TSRM/TSRM.h/* +----------------------------------------------------------------------+ | Thread Safe Resource Manager | +----------------------------------------------------------------------+ | Copyright (c) 1999-2011, Andi Gutmans, Sascha Schumann, Zeev Suraski | | This source file is subject to the TSRM license, that is bundled | | with this package in the file LICENSE | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | +----------------------------------------------------------------------+ */ #ifndef TSRM_H #define TSRM_H #if !defined(__CYGWIN__) && defined(WIN32) # define TSRM_WIN32 # include "tsrm_config.w32.h" #else # include #endif #ifdef TSRM_WIN32 # ifdef TSRM_EXPORTS # define TSRM_API __declspec(dllexport) # else # define TSRM_API __declspec(dllimport) # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define TSRM_API __attribute__ ((visibility("default"))) #else # define TSRM_API #endif #ifdef _WIN64 typedef __int64 tsrm_intptr_t; typedef unsigned __int64 tsrm_uintptr_t; #else typedef long tsrm_intptr_t; typedef unsigned long tsrm_uintptr_t; #endif /* Only compile multi-threading functions if we're in ZTS mode */ #ifdef ZTS #ifdef TSRM_WIN32 # ifndef TSRM_INCLUDE_FULL_WINDOWS_HEADERS # define WIN32_LEAN_AND_MEAN # endif # include # include #elif defined(GNUPTH) # include #elif defined(PTHREADS) # include #elif defined(TSRM_ST) # include #elif defined(BETHREADS) #include #include #endif typedef int ts_rsrc_id; /* Define THREAD_T and MUTEX_T */ #ifdef TSRM_WIN32 # define THREAD_T DWORD # define MUTEX_T CRITICAL_SECTION * #elif defined(GNUPTH) # define THREAD_T pth_t # define MUTEX_T pth_mutex_t * #elif defined(PTHREADS) # define THREAD_T pthread_t # define MUTEX_T pthread_mutex_t * #elif defined(NSAPI) # define THREAD_T SYS_THREAD # define MUTEX_T CRITICAL #elif defined(PI3WEB) # define THREAD_T PIThread * # define MUTEX_T PISync * #elif defined(TSRM_ST) # define THREAD_T st_thread_t # define MUTEX_T st_mutex_t #elif defined(BETHREADS) # define THREAD_T thread_id typedef struct { sem_id sem; int32 ben; } beos_ben; # define MUTEX_T beos_ben * #endif typedef void (*ts_allocate_ctor)(void *, void ***); typedef void (*ts_allocate_dtor)(void *, void ***); #define THREAD_HASH_OF(thr,ts) (unsigned long)thr%(unsigned long)ts #ifdef __cplusplus extern "C" { #endif /* startup/shutdown */ TSRM_API int tsrm_startup(int expected_threads, int expected_resources, int debug_level, char *debug_filename); TSRM_API void tsrm_shutdown(void); /* allocates a new thread-safe-resource id */ TSRM_API ts_rsrc_id ts_allocate_id(ts_rsrc_id *rsrc_id, size_t size, ts_allocate_ctor ctor, ts_allocate_dtor dtor); /* fetches the requested resource for the current thread */ TSRM_API void *ts_resource_ex(ts_rsrc_id id, THREAD_T *th_id); #define ts_resource(id) ts_resource_ex(id, NULL) /* frees all resources allocated for the current thread */ TSRM_API void ts_free_thread(void); /* frees all resources allocated for all threads except current */ void ts_free_worker_threads(void); /* deallocates all occurrences of a given id */ TSRM_API void ts_free_id(ts_rsrc_id id); /* Debug support */ #define TSRM_ERROR_LEVEL_ERROR 1 #define TSRM_ERROR_LEVEL_CORE 2 #define TSRM_ERROR_LEVEL_INFO 3 typedef void (*tsrm_thread_begin_func_t)(THREAD_T thread_id, void ***tsrm_ls); typedef void (*tsrm_thread_end_func_t)(THREAD_T thread_id, void ***tsrm_ls); TSRM_API int tsrm_error(int level, const char *format, ...); TSRM_API void tsrm_error_set(int level, char *debug_filename); /* utility functions */ TSRM_API THREAD_T tsrm_thread_id(void); TSRM_API MUTEX_T tsrm_mutex_alloc(void); TSRM_API void tsrm_mutex_free(MUTEX_T mutexp); TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp); TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp); TSRM_API void *tsrm_set_new_thread_begin_handler(tsrm_thread_begin_func_t new_thread_begin_handler); TSRM_API void *tsrm_set_new_thread_end_handler(tsrm_thread_end_func_t new_thread_end_handler); /* these 3 APIs should only be used by people that fully understand the threading model * used by PHP/Zend and the selected SAPI. */ TSRM_API void *tsrm_new_interpreter_context(void); TSRM_API void *tsrm_set_interpreter_context(void *new_ctx); TSRM_API void tsrm_free_interpreter_context(void *context); #define TSRM_SHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)+1) #define TSRM_UNSHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)-1) #define TSRMLS_FETCH() void ***tsrm_ls = (void ***) ts_resource_ex(0, NULL) #define TSRMLS_FETCH_FROM_CTX(ctx) void ***tsrm_ls = (void ***) ctx #define TSRMLS_SET_CTX(ctx) ctx = (void ***) tsrm_ls #define TSRMG(id, type, element) (((type) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element) #define TSRMLS_D void ***tsrm_ls #define TSRMLS_DC , TSRMLS_D #define TSRMLS_C tsrm_ls #define TSRMLS_CC , TSRMLS_C #ifdef __cplusplus } #endif #else /* non ZTS */ #define TSRMLS_FETCH() #define TSRMLS_FETCH_FROM_CTX(ctx) #define TSRMLS_SET_CTX(ctx) #define TSRMLS_D void #define TSRMLS_DC #define TSRMLS_C #define TSRMLS_CC #endif /* ZTS */ #endif /* TSRM_H */ 070701000af172000081a40000000000000000000000014dc0f4e200000010000000b500010002ffffffffffffffff0000002b00000000root/usr/local/include/php/TSRM/acconfig.h#undef PTHREADS 070701000af173000081a40000000000000000000000014dc0f4e20000044e000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/php/TSRM/readdir.h#ifndef READDIR_H #define READDIR_H /* * Structures and types used to implement opendir/readdir/closedir * on Windows 95/NT. */ #include #include #include #include #include #include /* struct dirent - same as Unix */ struct dirent { long d_ino; /* inode (always 1 in WIN32) */ off_t d_off; /* offset to this dirent */ unsigned short d_reclen; /* length of d_name */ char d_name[_MAX_FNAME + 1]; /* filename (null terminated) */ }; /* typedef DIR - not the same as Unix */ typedef struct { HANDLE handle; /* _findfirst/_findnext handle */ short offset; /* offset into directory */ short finished; /* 1 if there are not more files */ WIN32_FIND_DATA fileinfo; /* from _findfirst/_findnext */ char *dir; /* the dir we are reading */ struct dirent dent; /* the dirent to return */ } DIR; /* Function prototypes */ DIR *opendir(const char *); struct dirent *readdir(DIR *); int readdir_r(DIR *, struct dirent *, struct dirent **); int closedir(DIR *); int rewinddir(DIR *); #endif /* READDIR_H */ 070701000af177000081a40000000000000000000000014dc0f4e200000568000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/php/TSRM/tsrm_nw.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Venkat Raghavan S | | Anantha Kesari H Y | +----------------------------------------------------------------------+ */ #ifndef TSRM_NW_H #define TSRM_NW_H #include "TSRM.h" TSRM_API FILE* popen(const char *command, const char *type); TSRM_API int pclose(FILE* stream); #endif 070701000af178000081a40000000000000000000000014dc0f4e200000073000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/TSRM/tsrm_strtok_r.h#ifndef TSRM_STRTOK_R #define TSRM_STRTOK_R char *tsrm_strtok_r(char *s, const char *delim, char **last); #endif 070701000af17a000081a40000000000000000000000014dc0f4e200000caf000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/TSRM/tsrm_win32.h/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2011 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Authors: Daniel Beulshausen | +----------------------------------------------------------------------+ */ /* $Id: tsrm_win32.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef TSRM_WIN32_H #define TSRM_WIN32_H #include "TSRM.h" #include struct ipc_perm { int key; unsigned short uid; unsigned short gid; unsigned short cuid; unsigned short cgid; unsigned short mode; unsigned short seq; }; struct shmid_ds { struct ipc_perm shm_perm; int shm_segsz; time_t shm_atime; time_t shm_dtime; time_t shm_ctime; unsigned short shm_cpid; unsigned short shm_lpid; short shm_nattch; }; typedef struct { FILE *stream; HANDLE prochnd; } process_pair; typedef struct { void *addr; HANDLE info; HANDLE segment; struct shmid_ds *descriptor; } shm_pair; typedef struct { process_pair *process; shm_pair *shm; int process_size; int shm_size; char *comspec; HANDLE impersonation_token; PSID impersonation_token_sid; } tsrm_win32_globals; #ifdef ZTS # define TWG(v) TSRMG(win32_globals_id, tsrm_win32_globals *, v) #else # define TWG(v) (win32_globals.v) #endif #define IPC_PRIVATE 0 #define IPC_CREAT 00001000 #define IPC_EXCL 00002000 #define IPC_NOWAIT 00004000 #define IPC_RMID 0 #define IPC_SET 1 #define IPC_STAT 2 #define IPC_INFO 3 #define SHM_R PAGE_READONLY #define SHM_W PAGE_READWRITE #define SHM_RDONLY FILE_MAP_READ #define SHM_RND FILE_MAP_WRITE #define SHM_REMAP FILE_MAP_COPY char * tsrm_win32_get_path_sid_key(const char *pathname TSRMLS_DC); TSRM_API void tsrm_win32_startup(void); TSRM_API void tsrm_win32_shutdown(void); TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env); TSRM_API FILE *popen(const char *command, const char *type); TSRM_API int pclose(FILE *stream); TSRM_API int tsrm_win32_access(const char *pathname, int mode); TSRM_API int win32_utime(const char *filename, struct utimbuf *buf); TSRM_API int shmget(int key, int size, int flags); TSRM_API void *shmat(int key, const void *shmaddr, int flags); TSRM_API int shmdt(const void *shmaddr); TSRM_API int shmctl(int key, int cmd, struct shmid_ds *buf); TSRM_API char *realpath(char *orig_path, char *buffer); #endif 070701000af175000081a40000000000000000000000014dc0f4e200000148000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/TSRM/tsrm_config.w32.h#ifndef TSRM_CONFIG_W32_H #define TSRM_CONFIG_W32_H #include <../main/config.w32.h> #define HAVE_UTIME 1 #define HAVE_ALLOCA 1 #define HAVE_REALPATH 1 #include #include #include #undef inline #ifdef ZEND_WIN32_FORCE_INLINE # define inline __forceinline #else # define inline #endif #endif 070701000af17b000041ed0000000000000000000000024dc2238c00000000000000b500010002ffffffffffffffff0000002000000000root/usr/local/include/php/Zend070701000af189000081a40000000000000000000000014dc0f4e100000897000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/Zend/zend_errors.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_errors.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_ERRORS_H #define ZEND_ERRORS_H #define E_ERROR (1<<0L) #define E_WARNING (1<<1L) #define E_PARSE (1<<2L) #define E_NOTICE (1<<3L) #define E_CORE_ERROR (1<<4L) #define E_CORE_WARNING (1<<5L) #define E_COMPILE_ERROR (1<<6L) #define E_COMPILE_WARNING (1<<7L) #define E_USER_ERROR (1<<8L) #define E_USER_WARNING (1<<9L) #define E_USER_NOTICE (1<<10L) #define E_STRICT (1<<11L) #define E_RECOVERABLE_ERROR (1<<12L) #define E_DEPRECATED (1<<13L) #define E_USER_DEPRECATED (1<<14L) #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) #define E_CORE (E_CORE_ERROR | E_CORE_WARNING) #endif /* ZEND_ERRORS_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1a4000081a40000000000000000000000014dc0f4e1000021e9000000b500010002ffffffffffffffff0000003700000000root/usr/local/include/php/Zend/zend_object_handlers.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_object_handlers.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_OBJECT_HANDLERS_H #define ZEND_OBJECT_HANDLERS_H union _zend_function; struct _zend_property_info; /* The following rule applies to read_property() and read_dimension() implementations: If you return a zval which is not otherwise referenced by the extension or the engine's symbol table, its reference count should be 0. */ /* Used to fetch property from the object, read-only */ typedef zval *(*zend_object_read_property_t)(zval *object, zval *member, int type TSRMLS_DC); /* Used to fetch dimension from the object, read-only */ typedef zval *(*zend_object_read_dimension_t)(zval *object, zval *offset, int type TSRMLS_DC); /* The following rule applies to write_property() and write_dimension() implementations: If you receive a value zval in write_property/write_dimension, you may only modify it if its reference count is 1. Otherwise, you must create a copy of that zval before making any changes. You should NOT modify the reference count of the value passed to you. */ /* Used to set property of the object */ typedef void (*zend_object_write_property_t)(zval *object, zval *member, zval *value TSRMLS_DC); /* Used to set dimension of the object */ typedef void (*zend_object_write_dimension_t)(zval *object, zval *offset, zval *value TSRMLS_DC); /* Used to create pointer to the property of the object, for future direct r/w access */ typedef zval **(*zend_object_get_property_ptr_ptr_t)(zval *object, zval *member TSRMLS_DC); /* Used to set object value. Can be used to override assignments and scalar write ops (like ++, +=) on the object */ typedef void (*zend_object_set_t)(zval **object, zval *value TSRMLS_DC); /* Used to get object value. Can be used when converting object value to * one of the basic types and when using scalar ops (like ++, +=) on the object */ typedef zval* (*zend_object_get_t)(zval *object TSRMLS_DC); /* Used to check if a property of the object exists */ /* param has_set_exists: * 0 (has) whether property exists and is not NULL * 1 (set) whether property exists and is true * 2 (exists) whether property exists */ typedef int (*zend_object_has_property_t)(zval *object, zval *member, int has_set_exists TSRMLS_DC); /* Used to check if a dimension of the object exists */ typedef int (*zend_object_has_dimension_t)(zval *object, zval *member, int check_empty TSRMLS_DC); /* Used to remove a property of the object */ typedef void (*zend_object_unset_property_t)(zval *object, zval *member TSRMLS_DC); /* Used to remove a dimension of the object */ typedef void (*zend_object_unset_dimension_t)(zval *object, zval *offset TSRMLS_DC); /* Used to get hash of the properties of the object, as hash of zval's */ typedef HashTable *(*zend_object_get_properties_t)(zval *object TSRMLS_DC); typedef HashTable *(*zend_object_get_debug_info_t)(zval *object, int *is_temp TSRMLS_DC); /* Used to call methods */ /* args on stack! */ /* Andi - EX(fbc) (function being called) needs to be initialized already in the INIT fcall opcode so that the parameters can be parsed the right way. We need to add another callback for this. */ typedef int (*zend_object_call_method_t)(char *method, INTERNAL_FUNCTION_PARAMETERS); typedef union _zend_function *(*zend_object_get_method_t)(zval **object_ptr, char *method, int method_len TSRMLS_DC); typedef union _zend_function *(*zend_object_get_constructor_t)(zval *object TSRMLS_DC); /* Object maintenance/destruction */ typedef void (*zend_object_add_ref_t)(zval *object TSRMLS_DC); typedef void (*zend_object_del_ref_t)(zval *object TSRMLS_DC); typedef void (*zend_object_delete_obj_t)(zval *object TSRMLS_DC); typedef zend_object_value (*zend_object_clone_obj_t)(zval *object TSRMLS_DC); typedef zend_class_entry *(*zend_object_get_class_entry_t)(const zval *object TSRMLS_DC); typedef int (*zend_object_get_class_name_t)(const zval *object, char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC); typedef int (*zend_object_compare_t)(zval *object1, zval *object2 TSRMLS_DC); /* Cast an object to some other type */ typedef int (*zend_object_cast_t)(zval *readobj, zval *retval, int type TSRMLS_DC); /* updates *count to hold the number of elements present and returns SUCCESS. * Returns FAILURE if the object does not have any sense of overloaded dimensions */ typedef int (*zend_object_count_elements_t)(zval *object, long *count TSRMLS_DC); typedef int (*zend_object_get_closure_t)(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC); struct _zend_object_handlers { /* general object functions */ zend_object_add_ref_t add_ref; zend_object_del_ref_t del_ref; zend_object_clone_obj_t clone_obj; /* individual object functions */ zend_object_read_property_t read_property; zend_object_write_property_t write_property; zend_object_read_dimension_t read_dimension; zend_object_write_dimension_t write_dimension; zend_object_get_property_ptr_ptr_t get_property_ptr_ptr; zend_object_get_t get; zend_object_set_t set; zend_object_has_property_t has_property; zend_object_unset_property_t unset_property; zend_object_has_dimension_t has_dimension; zend_object_unset_dimension_t unset_dimension; zend_object_get_properties_t get_properties; zend_object_get_method_t get_method; zend_object_call_method_t call_method; zend_object_get_constructor_t get_constructor; zend_object_get_class_entry_t get_class_entry; zend_object_get_class_name_t get_class_name; zend_object_compare_t compare_objects; zend_object_cast_t cast_object; zend_object_count_elements_t count_elements; zend_object_get_debug_info_t get_debug_info; zend_object_get_closure_t get_closure; }; extern ZEND_API zend_object_handlers std_object_handlers; BEGIN_EXTERN_C() ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce, char *function_name_strval, int function_name_strlen TSRMLS_DC); ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, char *property_name, int property_name_len, zend_bool silent TSRMLS_DC); ZEND_API zend_bool zend_std_unset_static_property(zend_class_entry *ce, char *property_name, int property_name_len TSRMLS_DC); ZEND_API union _zend_function *zend_std_get_constructor(zval *object TSRMLS_DC); ZEND_API struct _zend_property_info *zend_get_property_info(zend_class_entry *ce, zval *member, int silent TSRMLS_DC); ZEND_API HashTable *zend_std_get_properties(zval *object TSRMLS_DC); ZEND_API HashTable *zend_std_get_debug_info(zval *object, int *is_temp TSRMLS_DC); ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int type TSRMLS_DC); #define IS_ZEND_STD_OBJECT(z) (Z_TYPE(z) == IS_OBJECT && (Z_OBJ_HT((z))->get_class_entry != NULL)) #define HAS_CLASS_ENTRY(z) (Z_OBJ_HT(z)->get_class_entry != NULL) ZEND_API int zend_check_private(union _zend_function *fbc, zend_class_entry *ce, char *function_name_strval, int function_name_strlen TSRMLS_DC); ZEND_API int zend_check_protected(zend_class_entry *ce, zend_class_entry *scope); ZEND_API int zend_check_property_access(zend_object *zobj, char *prop_info_name, int prop_info_name_len TSRMLS_DC); ZEND_API void zend_std_call_user_call(INTERNAL_FUNCTION_PARAMETERS); END_EXTERN_C() #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af180000081a40000000000000000000000014dc0f4e10000065b000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/Zend/zend_build.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ */ #ifndef ZEND_BUILD_H #define ZEND_BUILD_H #define ZEND_TOSTR_(x) #x #define ZEND_TOSTR(x) ZEND_TOSTR_(x) #ifdef ZTS #define ZEND_BUILD_TS ",TS" #else #define ZEND_BUILD_TS ",NTS" #endif #if ZEND_DEBUG #define ZEND_BUILD_DEBUG ",debug" #else #define ZEND_BUILD_DEBUG #endif #if defined(ZEND_WIN32) && defined(PHP_COMPILER_ID) #define ZEND_BUILD_SYSTEM "," PHP_COMPILER_ID #else #define ZEND_BUILD_SYSTEM #endif /* for private applications */ #define ZEND_BUILD_EXTRA #endif 070701000af1a7000081a40000000000000000000000014dc0f4e100003dc8000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/Zend/zend_operators.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_operators.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_OPERATORS_H #define ZEND_OPERATORS_H #include #include #include #ifdef HAVE_IEEEFP_H #include #endif #include "zend_strtod.h" #if 0&&HAVE_BCMATH #include "ext/bcmath/libbcmath/src/bcmath.h" #endif BEGIN_EXTERN_C() ZEND_API int add_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int sub_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int mul_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int div_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int mod_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int boolean_xor_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int boolean_not_function(zval *result, zval *op1 TSRMLS_DC); ZEND_API int bitwise_not_function(zval *result, zval *op1 TSRMLS_DC); ZEND_API int bitwise_or_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int bitwise_and_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int bitwise_xor_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int shift_left_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int shift_right_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int concat_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_equal_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_identical_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_not_identical_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_not_equal_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_smaller_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int is_smaller_or_equal_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API zend_bool instanceof_function_ex(const zend_class_entry *instance_ce, const zend_class_entry *ce, zend_bool interfaces_only TSRMLS_DC); ZEND_API zend_bool instanceof_function(const zend_class_entry *instance_ce, const zend_class_entry *ce TSRMLS_DC); END_EXTERN_C() #if ZEND_DVAL_TO_LVAL_CAST_OK # define zend_dval_to_lval(d) ((long) (d)) #elif SIZEOF_LONG == 4 && defined(HAVE_ZEND_LONG64) static zend_always_inline long zend_dval_to_lval(double d) { if (d > LONG_MAX || d < LONG_MIN) { return (long)(unsigned long)(zend_long64) d; } return (long) d; } #else static zend_always_inline long zend_dval_to_lval(double d) { if (d > LONG_MAX) { return (long)(unsigned long) d; } return (long) d; } #endif /* }}} */ #define ZEND_IS_DIGIT(c) ((c) >= '0' && (c) <= '9') #define ZEND_IS_XDIGIT(c) (((c) >= 'A' && (c) <= 'F') || ((c) >= 'a' && (c) <= 'f')) /** * Checks whether the string "str" with length "length" is numeric. The value * of allow_errors determines whether it's required to be entirely numeric, or * just its prefix. Leading whitespace is allowed. * * The function returns 0 if the string did not contain a valid number; IS_LONG * if it contained a number that fits within the range of a long; or IS_DOUBLE * if the number was out of long range or contained a decimal point/exponent. * The number's value is returned into the respective pointer, *lval or *dval, * if that pointer is not NULL. */ static inline zend_uchar is_numeric_string(const char *str, int length, long *lval, double *dval, int allow_errors) { const char *ptr; int base = 10, digits = 0, dp_or_e = 0; double local_dval; zend_uchar type; if (!length) { return 0; } /* Skip any whitespace * This is much faster than the isspace() function */ while (*str == ' ' || *str == '\t' || *str == '\n' || *str == '\r' || *str == '\v' || *str == '\f') { str++; length--; } ptr = str; if (*ptr == '-' || *ptr == '+') { ptr++; } if (ZEND_IS_DIGIT(*ptr)) { /* Handle hex numbers * str is used instead of ptr to disallow signs and keep old behavior */ if (length > 2 && *str == '0' && (str[1] == 'x' || str[1] == 'X')) { base = 16; ptr += 2; } /* Skip any leading 0s */ while (*ptr == '0') { ptr++; } /* Count the number of digits. If a decimal point/exponent is found, * it's a double. Otherwise, if there's a dval or no need to check for * a full match, stop when there are too many digits for a long */ for (type = IS_LONG; !(digits >= MAX_LENGTH_OF_LONG && (dval || allow_errors == 1)); digits++, ptr++) { check_digits: if (ZEND_IS_DIGIT(*ptr) || (base == 16 && ZEND_IS_XDIGIT(*ptr))) { continue; } else if (base == 10) { if (*ptr == '.' && dp_or_e < 1) { goto process_double; } else if ((*ptr == 'e' || *ptr == 'E') && dp_or_e < 2) { const char *e = ptr + 1; if (*e == '-' || *e == '+') { ptr = e++; } if (ZEND_IS_DIGIT(*e)) { goto process_double; } } } break; } if (base == 10) { if (digits >= MAX_LENGTH_OF_LONG) { dp_or_e = -1; goto process_double; } } else if (!(digits < SIZEOF_LONG * 2 || (digits == SIZEOF_LONG * 2 && ptr[-digits] <= '7'))) { if (dval) { local_dval = zend_hex_strtod(str, (char **)&ptr); } type = IS_DOUBLE; } } else if (*ptr == '.' && ZEND_IS_DIGIT(ptr[1])) { process_double: type = IS_DOUBLE; /* If there's a dval, do the conversion; else continue checking * the digits if we need to check for a full match */ if (dval) { local_dval = zend_strtod(str, (char **)&ptr); } else if (allow_errors != 1 && dp_or_e != -1) { dp_or_e = (*ptr++ == '.') ? 1 : 2; goto check_digits; } } else { return 0; } if (ptr != str + length) { if (!allow_errors) { return 0; } if (allow_errors == -1) { zend_error(E_NOTICE, "A non well formed numeric value encountered"); } } if (type == IS_LONG) { if (digits == MAX_LENGTH_OF_LONG - 1) { int cmp = strcmp(&ptr[-digits], long_min_digits); if (!(cmp < 0 || (cmp == 0 && *str == '-'))) { if (dval) { *dval = zend_strtod(str, NULL); } return IS_DOUBLE; } } if (lval) { *lval = strtol(str, NULL, base); } return IS_LONG; } else { if (dval) { *dval = local_dval; } return IS_DOUBLE; } } static inline char * zend_memnstr(char *haystack, char *needle, int needle_len, char *end) { char *p = haystack; char ne = needle[needle_len-1]; if (needle_len == 1) { return (char *)memchr(p, *needle, (end-p)); } if (needle_len > end-haystack) { return NULL; } end -= needle_len; while (p <= end) { if ((p = (char *)memchr(p, *needle, (end-p+1))) && ne == p[needle_len-1]) { if (!memcmp(needle, p, needle_len-1)) { return p; } } if (p == NULL) { return NULL; } p++; } return NULL; } static inline void *zend_memrchr(const void *s, int c, size_t n) { register unsigned char *e; if (n <= 0) { return NULL; } for (e = (unsigned char *)s + n - 1; e >= (unsigned char *)s; e--) { if (*e == (unsigned char)c) { return (void *)e; } } return NULL; } BEGIN_EXTERN_C() ZEND_API int increment_function(zval *op1); ZEND_API int decrement_function(zval *op2); ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC); ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC); ZEND_API void convert_to_long(zval *op); ZEND_API void convert_to_double(zval *op); ZEND_API void convert_to_long_base(zval *op, int base); ZEND_API void convert_to_null(zval *op); ZEND_API void convert_to_boolean(zval *op); ZEND_API void convert_to_array(zval *op); ZEND_API void convert_to_object(zval *op); ZEND_API void multi_convert_to_long_ex(int argc, ...); ZEND_API void multi_convert_to_double_ex(int argc, ...); ZEND_API void multi_convert_to_string_ex(int argc, ...); ZEND_API int add_char_to_string(zval *result, const zval *op1, const zval *op2); ZEND_API int add_string_to_string(zval *result, const zval *op1, const zval *op2); #define convert_to_string(op) if ((op)->type != IS_STRING) { _convert_to_string((op) ZEND_FILE_LINE_CC); } ZEND_API double zend_string_to_double(const char *number, zend_uint length); ZEND_API int zval_is_true(zval *op); ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int numeric_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int string_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); #if HAVE_STRCOLL ZEND_API int string_locale_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); #endif ZEND_API void zend_str_tolower(char *str, unsigned int length); ZEND_API char *zend_str_tolower_copy(char *dest, const char *source, unsigned int length); ZEND_API char *zend_str_tolower_dup(const char *source, unsigned int length); ZEND_API int zend_binary_zval_strcmp(zval *s1, zval *s2); ZEND_API int zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3); ZEND_API int zend_binary_zval_strcasecmp(zval *s1, zval *s2); ZEND_API int zend_binary_zval_strncasecmp(zval *s1, zval *s2, zval *s3); ZEND_API int zend_binary_strcmp(const char *s1, uint len1, const char *s2, uint len2); ZEND_API int zend_binary_strncmp(const char *s1, uint len1, const char *s2, uint len2, uint length); ZEND_API int zend_binary_strcasecmp(const char *s1, uint len1, const char *s2, uint len2); ZEND_API int zend_binary_strncasecmp(const char *s1, uint len1, const char *s2, uint len2, uint length); ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2); ZEND_API void zend_compare_symbol_tables(zval *result, HashTable *ht1, HashTable *ht2 TSRMLS_DC); ZEND_API void zend_compare_arrays(zval *result, zval *a1, zval *a2 TSRMLS_DC); ZEND_API void zend_compare_objects(zval *result, zval *o1, zval *o2 TSRMLS_DC); ZEND_API int zend_atoi(const char *str, int str_len); ZEND_API long zend_atol(const char *str, int str_len); ZEND_API void zend_locale_sprintf_double(zval *op ZEND_FILE_LINE_DC); END_EXTERN_C() #define convert_to_ex_master(ppzv, lower_type, upper_type) \ if (Z_TYPE_PP(ppzv)!=IS_##upper_type) { \ SEPARATE_ZVAL_IF_NOT_REF(ppzv); \ convert_to_##lower_type(*ppzv); \ } #define convert_to_explicit_type(pzv, type) \ do { \ switch (type) { \ case IS_NULL: \ convert_to_null(pzv); \ break; \ case IS_LONG: \ convert_to_long(pzv); \ break; \ case IS_DOUBLE: \ convert_to_double(pzv); \ break; \ case IS_BOOL: \ convert_to_boolean(pzv); \ break; \ case IS_ARRAY: \ convert_to_array(pzv); \ break; \ case IS_OBJECT: \ convert_to_object(pzv); \ break; \ case IS_STRING: \ convert_to_string(pzv); \ break; \ default: \ assert(0); \ break; \ } \ } while (0); #define convert_to_explicit_type_ex(ppzv, str_type) \ if (Z_TYPE_PP(ppzv) != str_type) { \ SEPARATE_ZVAL_IF_NOT_REF(ppzv); \ convert_to_explicit_type(*ppzv, str_type); \ } #define convert_to_boolean_ex(ppzv) convert_to_ex_master(ppzv, boolean, BOOL) #define convert_to_long_ex(ppzv) convert_to_ex_master(ppzv, long, LONG) #define convert_to_double_ex(ppzv) convert_to_ex_master(ppzv, double, DOUBLE) #define convert_to_string_ex(ppzv) convert_to_ex_master(ppzv, string, STRING) #define convert_to_array_ex(ppzv) convert_to_ex_master(ppzv, array, ARRAY) #define convert_to_object_ex(ppzv) convert_to_ex_master(ppzv, object, OBJECT) #define convert_to_null_ex(ppzv) convert_to_ex_master(ppzv, null, NULL) #define convert_scalar_to_number_ex(ppzv) \ if (Z_TYPE_PP(ppzv)!=IS_LONG && Z_TYPE_PP(ppzv)!=IS_DOUBLE) { \ if (!Z_ISREF_PP(ppzv)) { \ SEPARATE_ZVAL(ppzv); \ } \ convert_scalar_to_number(*ppzv TSRMLS_CC); \ } #define Z_LVAL(zval) (zval).value.lval #define Z_BVAL(zval) ((zend_bool)(zval).value.lval) #define Z_DVAL(zval) (zval).value.dval #define Z_STRVAL(zval) (zval).value.str.val #define Z_STRLEN(zval) (zval).value.str.len #define Z_ARRVAL(zval) (zval).value.ht #define Z_OBJVAL(zval) (zval).value.obj #define Z_OBJ_HANDLE(zval) Z_OBJVAL(zval).handle #define Z_OBJ_HT(zval) Z_OBJVAL(zval).handlers #define Z_OBJCE(zval) zend_get_class_entry(&(zval) TSRMLS_CC) #define Z_OBJPROP(zval) Z_OBJ_HT((zval))->get_properties(&(zval) TSRMLS_CC) #define Z_OBJ_HANDLER(zval, hf) Z_OBJ_HT((zval))->hf #define Z_RESVAL(zval) (zval).value.lval #define Z_OBJDEBUG(zval,is_tmp) (Z_OBJ_HANDLER((zval),get_debug_info)?Z_OBJ_HANDLER((zval),get_debug_info)(&(zval),&is_tmp TSRMLS_CC):(is_tmp=0,Z_OBJ_HANDLER((zval),get_properties)?Z_OBJPROP(zval):NULL)) #define Z_LVAL_P(zval_p) Z_LVAL(*zval_p) #define Z_BVAL_P(zval_p) Z_BVAL(*zval_p) #define Z_DVAL_P(zval_p) Z_DVAL(*zval_p) #define Z_STRVAL_P(zval_p) Z_STRVAL(*zval_p) #define Z_STRLEN_P(zval_p) Z_STRLEN(*zval_p) #define Z_ARRVAL_P(zval_p) Z_ARRVAL(*zval_p) #define Z_OBJPROP_P(zval_p) Z_OBJPROP(*zval_p) #define Z_OBJCE_P(zval_p) Z_OBJCE(*zval_p) #define Z_RESVAL_P(zval_p) Z_RESVAL(*zval_p) #define Z_OBJVAL_P(zval_p) Z_OBJVAL(*zval_p) #define Z_OBJ_HANDLE_P(zval_p) Z_OBJ_HANDLE(*zval_p) #define Z_OBJ_HT_P(zval_p) Z_OBJ_HT(*zval_p) #define Z_OBJ_HANDLER_P(zval_p, h) Z_OBJ_HANDLER(*zval_p, h) #define Z_OBJDEBUG_P(zval_p,is_tmp) Z_OBJDEBUG(*zval_p,is_tmp) #define Z_LVAL_PP(zval_pp) Z_LVAL(**zval_pp) #define Z_BVAL_PP(zval_pp) Z_BVAL(**zval_pp) #define Z_DVAL_PP(zval_pp) Z_DVAL(**zval_pp) #define Z_STRVAL_PP(zval_pp) Z_STRVAL(**zval_pp) #define Z_STRLEN_PP(zval_pp) Z_STRLEN(**zval_pp) #define Z_ARRVAL_PP(zval_pp) Z_ARRVAL(**zval_pp) #define Z_OBJPROP_PP(zval_pp) Z_OBJPROP(**zval_pp) #define Z_OBJCE_PP(zval_pp) Z_OBJCE(**zval_pp) #define Z_RESVAL_PP(zval_pp) Z_RESVAL(**zval_pp) #define Z_OBJVAL_PP(zval_pp) Z_OBJVAL(**zval_pp) #define Z_OBJ_HANDLE_PP(zval_p) Z_OBJ_HANDLE(**zval_p) #define Z_OBJ_HT_PP(zval_p) Z_OBJ_HT(**zval_p) #define Z_OBJ_HANDLER_PP(zval_p, h) Z_OBJ_HANDLER(**zval_p, h) #define Z_OBJDEBUG_PP(zval_pp,is_tmp) Z_OBJDEBUG(**zval_pp,is_tmp) #define Z_TYPE(zval) (zval).type #define Z_TYPE_P(zval_p) Z_TYPE(*zval_p) #define Z_TYPE_PP(zval_pp) Z_TYPE(**zval_pp) #if HAVE_SETLOCALE && defined(ZEND_WIN32) && !defined(ZTS) && defined(_MSC_VER) && (_MSC_VER >= 1400) /* This is performance improvement of tolower() on Windows and VC2005 * Gives 10-18% on bench.php */ #define ZEND_USE_TOLOWER_L 1 #endif #ifdef ZEND_USE_TOLOWER_L ZEND_API void zend_update_current_locale(void); #else #define zend_update_current_locale() #endif #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af184000081a40000000000000000000000014dc0f4e10000006b000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/Zend/zend_config.h#include <../main/php_config.h> #if defined(APACHE) && defined(PHP_API_VERSION) #undef HAVE_DLFCN_H #endif 070701000af195000081a40000000000000000000000014dc0f4e100002769000000b500010002ffffffffffffffff0000002b00000000root/usr/local/include/php/Zend/zend_ini.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_ini.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_INI_H #define ZEND_INI_H #define ZEND_INI_USER (1<<0) #define ZEND_INI_PERDIR (1<<1) #define ZEND_INI_SYSTEM (1<<2) #define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM) #ifndef XtOffsetOf # if defined(CRAY) || (defined(__arm) && !defined(LINUX)) # ifdef __STDC__ # define XtOffset(p_type, field) _Offsetof(p_type, field) # else # ifdef CRAY2 # define XtOffset(p_type, field) \ (sizeof(int)*((unsigned int)&(((p_type)NULL)->field))) # else /* !CRAY2 */ # define XtOffset(p_type, field) ((unsigned int)&(((p_type)NULL)->field)) # endif /* !CRAY2 */ # endif /* __STDC__ */ # else /* ! (CRAY || __arm) */ # define XtOffset(p_type, field) \ ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL))) # endif /* !CRAY */ # ifdef offsetof # define XtOffsetOf(s_type, field) offsetof(s_type, field) # else # define XtOffsetOf(s_type, field) XtOffset(s_type*, field) # endif #endif typedef struct _zend_ini_entry zend_ini_entry; #define ZEND_INI_MH(name) int name(zend_ini_entry *entry, char *new_value, uint new_value_length, void *mh_arg1, void *mh_arg2, void *mh_arg3, int stage TSRMLS_DC) #define ZEND_INI_DISP(name) void name(zend_ini_entry *ini_entry, int type) struct _zend_ini_entry { int module_number; int modifiable; char *name; uint name_length; ZEND_INI_MH((*on_modify)); void *mh_arg1; void *mh_arg2; void *mh_arg3; char *value; uint value_length; char *orig_value; uint orig_value_length; int orig_modifiable; int modified; void (*displayer)(zend_ini_entry *ini_entry, int type); }; BEGIN_EXTERN_C() ZEND_API int zend_ini_startup(TSRMLS_D); ZEND_API int zend_ini_shutdown(TSRMLS_D); ZEND_API int zend_ini_global_shutdown(TSRMLS_D); ZEND_API int zend_ini_deactivate(TSRMLS_D); ZEND_API int zend_copy_ini_directives(TSRMLS_D); ZEND_API void zend_ini_sort_entries(TSRMLS_D); ZEND_API int zend_register_ini_entries(const zend_ini_entry *ini_entry, int module_number TSRMLS_DC); ZEND_API void zend_unregister_ini_entries(int module_number TSRMLS_DC); ZEND_API void zend_ini_refresh_caches(int stage TSRMLS_DC); ZEND_API int zend_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type, int stage); ZEND_API int zend_alter_ini_entry_ex(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type, int stage, int force_change TSRMLS_DC); ZEND_API int zend_restore_ini_entry(char *name, uint name_length, int stage); ZEND_API void display_ini_entries(zend_module_entry *module); ZEND_API long zend_ini_long(char *name, uint name_length, int orig); ZEND_API double zend_ini_double(char *name, uint name_length, int orig); ZEND_API char *zend_ini_string(char *name, uint name_length, int orig); ZEND_API char *zend_ini_string_ex(char *name, uint name_length, int orig, zend_bool *exists); ZEND_API int zend_ini_register_displayer(char *name, uint name_length, void (*displayer)(zend_ini_entry *ini_entry, int type)); ZEND_API ZEND_INI_DISP(zend_ini_boolean_displayer_cb); ZEND_API ZEND_INI_DISP(zend_ini_color_displayer_cb); ZEND_API ZEND_INI_DISP(display_link_numbers); END_EXTERN_C() #define ZEND_INI_BEGIN() static const zend_ini_entry ini_entries[] = { #define ZEND_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, 0, NULL } }; #define ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, displayer) \ { 0, modifiable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, 0, displayer }, #define ZEND_INI_ENTRY3(name, default_value, modifiable, on_modify, arg1, arg2, arg3) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, arg3, NULL) #define ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, arg1, arg2, displayer) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, arg2, NULL, displayer) #define ZEND_INI_ENTRY2(name, default_value, modifiable, on_modify, arg1, arg2) \ ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, arg1, arg2, NULL) #define ZEND_INI_ENTRY1_EX(name, default_value, modifiable, on_modify, arg1, displayer) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, arg1, NULL, NULL, displayer) #define ZEND_INI_ENTRY1(name, default_value, modifiable, on_modify, arg1) \ ZEND_INI_ENTRY1_EX(name, default_value, modifiable, on_modify, arg1, NULL) #define ZEND_INI_ENTRY_EX(name, default_value, modifiable, on_modify, displayer) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, NULL, NULL, NULL, displayer) #define ZEND_INI_ENTRY(name, default_value, modifiable, on_modify) \ ZEND_INI_ENTRY_EX(name, default_value, modifiable, on_modify, NULL) #ifdef ZTS #define STD_ZEND_INI_ENTRY(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr) \ ZEND_INI_ENTRY2(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id) #define STD_ZEND_INI_ENTRY_EX(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr, displayer) \ ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, displayer) #define STD_ZEND_INI_BOOLEAN(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, NULL, zend_ini_boolean_displayer_cb) #else #define STD_ZEND_INI_ENTRY(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr) \ ZEND_INI_ENTRY2(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr) #define STD_ZEND_INI_ENTRY_EX(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr, displayer) \ ZEND_INI_ENTRY2_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, displayer) #define STD_ZEND_INI_BOOLEAN(name, default_value, modifiable, on_modify, property_name, struct_type, struct_ptr) \ ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, NULL, zend_ini_boolean_displayer_cb) #endif #define INI_INT(name) zend_ini_long((name), sizeof(name), 0) #define INI_FLT(name) zend_ini_double((name), sizeof(name), 0) #define INI_STR(name) zend_ini_string_ex((name), sizeof(name), 0, NULL) #define INI_BOOL(name) ((zend_bool) INI_INT(name)) #define INI_ORIG_INT(name) zend_ini_long((name), sizeof(name), 1) #define INI_ORIG_FLT(name) zend_ini_double((name), sizeof(name), 1) #define INI_ORIG_STR(name) zend_ini_string((name), sizeof(name), 1) #define INI_ORIG_BOOL(name) ((zend_bool) INI_ORIG_INT(name)) #define REGISTER_INI_ENTRIES() zend_register_ini_entries(ini_entries, module_number TSRMLS_CC) #define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries(module_number TSRMLS_CC) #define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module) #define REGISTER_INI_DISPLAYER(name, displayer) zend_ini_register_displayer((name), sizeof(name), displayer) #define REGISTER_INI_BOOLEAN(name) REGISTER_INI_DISPLAYER(name, zend_ini_boolean_displayer_cb) /* Standard message handlers */ BEGIN_EXTERN_C() ZEND_API ZEND_INI_MH(OnUpdateBool); ZEND_API ZEND_INI_MH(OnUpdateLong); ZEND_API ZEND_INI_MH(OnUpdateLongGEZero); ZEND_API ZEND_INI_MH(OnUpdateReal); ZEND_API ZEND_INI_MH(OnUpdateString); ZEND_API ZEND_INI_MH(OnUpdateStringUnempty); END_EXTERN_C() #define ZEND_INI_DISPLAY_ORIG 1 #define ZEND_INI_DISPLAY_ACTIVE 2 #define ZEND_INI_STAGE_STARTUP (1<<0) #define ZEND_INI_STAGE_SHUTDOWN (1<<1) #define ZEND_INI_STAGE_ACTIVATE (1<<2) #define ZEND_INI_STAGE_DEACTIVATE (1<<3) #define ZEND_INI_STAGE_RUNTIME (1<<4) #define ZEND_INI_STAGE_HTACCESS (1<<5) /* INI parsing engine */ typedef void (*zend_ini_parser_cb_t)(zval *arg1, zval *arg2, zval *arg3, int callback_type, void *arg TSRMLS_DC); BEGIN_EXTERN_C() ZEND_API int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, int scanner_mode, zend_ini_parser_cb_t ini_parser_cb, void *arg TSRMLS_DC); ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int scanner_mode, zend_ini_parser_cb_t ini_parser_cb, void *arg TSRMLS_DC); END_EXTERN_C() /* INI entries */ #define ZEND_INI_PARSER_ENTRY 1 /* Normal entry: foo = bar */ #define ZEND_INI_PARSER_SECTION 2 /* Section: [foobar] */ #define ZEND_INI_PARSER_POP_ENTRY 3 /* Offset entry: foo[] = bar */ typedef struct _zend_ini_parser_param { zend_ini_parser_cb_t ini_parser_cb; void *arg; } zend_ini_parser_param; #endif /* ZEND_INI_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af17d000081a40000000000000000000000014dc0f4e10000600d000000b500010002ffffffffffffffff0000002700000000root/usr/local/include/php/Zend/zend.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend.h 307522 2011-01-16 20:39:22Z stas $ */ #ifndef ZEND_H #define ZEND_H #define ZEND_VERSION "2.3.0" #define ZEND_ENGINE_2 #ifdef __cplusplus #define BEGIN_EXTERN_C() extern "C" { #define END_EXTERN_C() } #else #define BEGIN_EXTERN_C() #define END_EXTERN_C() #endif /* * general definitions */ #ifdef ZEND_WIN32 # include "zend_config.w32.h" # define ZEND_PATHS_SEPARATOR ';' #elif defined(NETWARE) # include # define ZEND_PATHS_SEPARATOR ';' #elif defined(__riscos__) # include # define ZEND_PATHS_SEPARATOR ';' #else # include # define ZEND_PATHS_SEPARATOR ':' #endif #ifdef ZEND_WIN32 /* Only use this macro if you know for sure that all of the switches values are covered by its case statements */ #define EMPTY_SWITCH_DEFAULT_CASE() \ default: \ __assume(0); \ break; #else #define EMPTY_SWITCH_DEFAULT_CASE() #endif /* all HAVE_XXX test have to be after the include of zend_config above */ #include #ifdef HAVE_UNIX_H # include #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_DLFCN_H # include #endif #if defined(HAVE_LIBDL) && !defined(ZEND_WIN32) # ifndef RTLD_LAZY # define RTLD_LAZY 1 /* Solaris 1, FreeBSD's (2.1.7.1 and older) */ # endif # ifndef RTLD_GLOBAL # define RTLD_GLOBAL 0 # endif # if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT) # define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT) # elif defined(RTLD_DEEPBIND) # define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND) # else # define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL) # endif # define DL_UNLOAD dlclose # if defined(DLSYM_NEEDS_UNDERSCORE) # define DL_FETCH_SYMBOL(h,s) dlsym((h), "_" s) # else # define DL_FETCH_SYMBOL dlsym # endif # define DL_ERROR dlerror # define DL_HANDLE void * # define ZEND_EXTENSIONS_SUPPORT 1 #elif defined(ZEND_WIN32) # define DL_LOAD(libname) LoadLibrary(libname) # define DL_FETCH_SYMBOL GetProcAddress # define DL_UNLOAD FreeLibrary # define DL_HANDLE HMODULE # define ZEND_EXTENSIONS_SUPPORT 1 #else # define DL_HANDLE void * # define ZEND_EXTENSIONS_SUPPORT 0 #endif #if HAVE_ALLOCA_H && !defined(_ALLOCA_H) # include #endif /* AIX requires this to be the first thing in the file. */ #ifndef __GNUC__ # ifndef HAVE_ALLOCA_H # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif #endif /* GCC x.y.z supplies __GNUC__ = x and __GNUC_MINOR__ = y */ #ifdef __GNUC__ # define ZEND_GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) #else # define ZEND_GCC_VERSION 0 #endif #if ZEND_GCC_VERSION >= 2096 # define ZEND_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) #else # define ZEND_ATTRIBUTE_MALLOC #endif #if ZEND_GCC_VERSION >= 2007 # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first))) #else # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) #endif #if ZEND_GCC_VERSION >= 3001 && !defined(__INTEL_COMPILER) # define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first))) #else # define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first) #endif #if ZEND_GCC_VERSION >= 3001 # define ZEND_ATTRIBUTE_DEPRECATED __attribute__((deprecated)) #elif defined(ZEND_WIN32) && defined(_MSC_VER) && _MSC_VER >= 1300 # define ZEND_ATTRIBUTE_DEPRECATED __declspec(deprecated) #else # define ZEND_ATTRIBUTE_DEPRECATED #endif #if defined(__GNUC__) && ZEND_GCC_VERSION >= 3004 && defined(__i386__) # define ZEND_FASTCALL __attribute__((fastcall)) #elif defined(_MSC_VER) && defined(_M_IX86) # define ZEND_FASTCALL __fastcall #else # define ZEND_FASTCALL #endif #if defined(__GNUC__) && ZEND_GCC_VERSION >= 3004 #else # define __restrict__ #endif #define restrict __restrict__ #if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && defined(ZEND_WIN32)) && !(defined(ZTS) && defined(NETWARE)) && !(defined(ZTS) && defined(HPUX)) && !defined(DARWIN) # define ZEND_ALLOCA_MAX_SIZE (32 * 1024) # define ALLOCA_FLAG(name) \ zend_bool name; # define SET_ALLOCA_FLAG(name) \ name = 1 # define do_alloca_ex(size, limit, use_heap) \ ((use_heap = (UNEXPECTED((size) > (limit)))) ? emalloc(size) : alloca(size)) # define do_alloca(size, use_heap) \ do_alloca_ex(size, ZEND_ALLOCA_MAX_SIZE, use_heap) # define free_alloca(p, use_heap) \ do { if (UNEXPECTED(use_heap)) efree(p); } while (0) #else # define ALLOCA_FLAG(name) # define SET_ALLOCA_FLAG(name) # define do_alloca(p, use_heap) emalloc(p) # define free_alloca(p, use_heap) efree(p) #endif #if ZEND_DEBUG #define ZEND_FILE_LINE_D char *__zend_filename, uint __zend_lineno #define ZEND_FILE_LINE_DC , ZEND_FILE_LINE_D #define ZEND_FILE_LINE_ORIG_D char *__zend_orig_filename, uint __zend_orig_lineno #define ZEND_FILE_LINE_ORIG_DC , ZEND_FILE_LINE_ORIG_D #define ZEND_FILE_LINE_RELAY_C __zend_filename, __zend_lineno #define ZEND_FILE_LINE_RELAY_CC , ZEND_FILE_LINE_RELAY_C #define ZEND_FILE_LINE_C __FILE__, __LINE__ #define ZEND_FILE_LINE_CC , ZEND_FILE_LINE_C #define ZEND_FILE_LINE_EMPTY_C NULL, 0 #define ZEND_FILE_LINE_EMPTY_CC , ZEND_FILE_LINE_EMPTY_C #define ZEND_FILE_LINE_ORIG_RELAY_C __zend_orig_filename, __zend_orig_lineno #define ZEND_FILE_LINE_ORIG_RELAY_CC , ZEND_FILE_LINE_ORIG_RELAY_C #else #define ZEND_FILE_LINE_D #define ZEND_FILE_LINE_DC #define ZEND_FILE_LINE_ORIG_D #define ZEND_FILE_LINE_ORIG_DC #define ZEND_FILE_LINE_RELAY_C #define ZEND_FILE_LINE_RELAY_CC #define ZEND_FILE_LINE_C #define ZEND_FILE_LINE_CC #define ZEND_FILE_LINE_EMPTY_C #define ZEND_FILE_LINE_EMPTY_CC #define ZEND_FILE_LINE_ORIG_RELAY_C #define ZEND_FILE_LINE_ORIG_RELAY_CC #endif /* ZEND_DEBUG */ #ifdef ZTS #define ZTS_V 1 #else #define ZTS_V 0 #endif #include "zend_errors.h" #include "zend_alloc.h" #include "zend_types.h" #ifdef HAVE_LIMITS_H # include #endif #ifndef LONG_MAX #define LONG_MAX 2147483647L #endif #ifndef LONG_MIN #define LONG_MIN (- LONG_MAX - 1) #endif #if SIZEOF_LONG == 4 #define MAX_LENGTH_OF_LONG 11 static const char long_min_digits[] = "2147483648"; #elif SIZEOF_LONG == 8 #define MAX_LENGTH_OF_LONG 20 static const char long_min_digits[] = "9223372036854775808"; #else #error "Unknown SIZEOF_LONG" #endif #define MAX_LENGTH_OF_DOUBLE 32 #undef SUCCESS #undef FAILURE #define SUCCESS 0 #define FAILURE -1 /* this MUST stay a negative number, or it may affect functions! */ #include "zend_hash.h" #include "zend_ts_hash.h" #include "zend_llist.h" #define INTERNAL_FUNCTION_PARAMETERS int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, int return_value_used TSRMLS_DC #define INTERNAL_FUNCTION_PARAM_PASSTHRU ht, return_value, return_value_ptr, this_ptr, return_value_used TSRMLS_CC #if defined(__GNUC__) && __GNUC__ >= 3 && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) && !defined(__osf__) void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((noreturn)); #else # define zend_error_noreturn zend_error #endif /* * zval */ typedef struct _zval_struct zval; typedef struct _zend_class_entry zend_class_entry; typedef struct _zend_guard { zend_bool in_get; zend_bool in_set; zend_bool in_unset; zend_bool in_isset; zend_bool dummy; /* sizeof(zend_guard) must not be equal to sizeof(void*) */ } zend_guard; typedef struct _zend_object { zend_class_entry *ce; HashTable *properties; HashTable *guards; /* protects from __get/__set ... recursion */ } zend_object; #include "zend_object_handlers.h" typedef union _zvalue_value { long lval; /* long value */ double dval; /* double value */ struct { char *val; int len; } str; HashTable *ht; /* hash table value */ zend_object_value obj; } zvalue_value; struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_uchar type; /* active type */ zend_uchar is_ref__gc; }; #define Z_REFCOUNT_PP(ppz) Z_REFCOUNT_P(*(ppz)) #define Z_SET_REFCOUNT_PP(ppz, rc) Z_SET_REFCOUNT_P(*(ppz), rc) #define Z_ADDREF_PP(ppz) Z_ADDREF_P(*(ppz)) #define Z_DELREF_PP(ppz) Z_DELREF_P(*(ppz)) #define Z_ISREF_PP(ppz) Z_ISREF_P(*(ppz)) #define Z_SET_ISREF_PP(ppz) Z_SET_ISREF_P(*(ppz)) #define Z_UNSET_ISREF_PP(ppz) Z_UNSET_ISREF_P(*(ppz)) #define Z_SET_ISREF_TO_PP(ppz, isref) Z_SET_ISREF_TO_P(*(ppz), isref) #define Z_REFCOUNT_P(pz) zval_refcount_p(pz) #define Z_SET_REFCOUNT_P(pz, rc) zval_set_refcount_p(pz, rc) #define Z_ADDREF_P(pz) zval_addref_p(pz) #define Z_DELREF_P(pz) zval_delref_p(pz) #define Z_ISREF_P(pz) zval_isref_p(pz) #define Z_SET_ISREF_P(pz) zval_set_isref_p(pz) #define Z_UNSET_ISREF_P(pz) zval_unset_isref_p(pz) #define Z_SET_ISREF_TO_P(pz, isref) zval_set_isref_to_p(pz, isref) #define Z_REFCOUNT(z) Z_REFCOUNT_P(&(z)) #define Z_SET_REFCOUNT(z, rc) Z_SET_REFCOUNT_P(&(z), rc) #define Z_ADDREF(z) Z_ADDREF_P(&(z)) #define Z_DELREF(z) Z_DELREF_P(&(z)) #define Z_ISREF(z) Z_ISREF_P(&(z)) #define Z_SET_ISREF(z) Z_SET_ISREF_P(&(z)) #define Z_UNSET_ISREF(z) Z_UNSET_ISREF_P(&(z)) #define Z_SET_ISREF_TO(z, isref) Z_SET_ISREF_TO_P(&(z), isref) #if defined(__GNUC__) #if __GNUC__ >= 3 #define zend_always_inline inline __attribute__((always_inline)) #else #define zend_always_inline inline #endif #elif defined(_MSC_VER) #define zend_always_inline __forceinline #else #define zend_always_inline inline #endif #if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(__INTEL_COMPILER) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX) # define EXPECTED(condition) __builtin_expect(condition, 1) # define UNEXPECTED(condition) __builtin_expect(condition, 0) #else # define EXPECTED(condition) (condition) # define UNEXPECTED(condition) (condition) #endif static zend_always_inline zend_uint zval_refcount_p(zval* pz) { return pz->refcount__gc; } static zend_always_inline zend_uint zval_set_refcount_p(zval* pz, zend_uint rc) { return pz->refcount__gc = rc; } static zend_always_inline zend_uint zval_addref_p(zval* pz) { return ++pz->refcount__gc; } static zend_always_inline zend_uint zval_delref_p(zval* pz) { return --pz->refcount__gc; } static zend_always_inline zend_bool zval_isref_p(zval* pz) { return pz->is_ref__gc; } static zend_always_inline zend_bool zval_set_isref_p(zval* pz) { return pz->is_ref__gc = 1; } static zend_always_inline zend_bool zval_unset_isref_p(zval* pz) { return pz->is_ref__gc = 0; } static zend_always_inline zend_bool zval_set_isref_to_p(zval* pz, zend_bool isref) { return pz->is_ref__gc = isref; } /* excpt.h on Digital Unix 4.0 defines function_table */ #undef function_table /* A lot of stuff needs shifiting around in order to include zend_compile.h here */ union _zend_function; #include "zend_iterators.h" struct _zend_serialize_data; struct _zend_unserialize_data; typedef struct _zend_serialize_data zend_serialize_data; typedef struct _zend_unserialize_data zend_unserialize_data; struct _zend_class_entry { char type; char *name; zend_uint name_length; struct _zend_class_entry *parent; int refcount; zend_bool constants_updated; zend_uint ce_flags; HashTable function_table; HashTable default_properties; HashTable properties_info; HashTable default_static_members; HashTable *static_members; HashTable constants_table; const struct _zend_function_entry *builtin_functions; union _zend_function *constructor; union _zend_function *destructor; union _zend_function *clone; union _zend_function *__get; union _zend_function *__set; union _zend_function *__unset; union _zend_function *__isset; union _zend_function *__call; union _zend_function *__callstatic; union _zend_function *__tostring; union _zend_function *serialize_func; union _zend_function *unserialize_func; zend_class_iterator_funcs iterator_funcs; /* handlers */ zend_object_value (*create_object)(zend_class_entry *class_type TSRMLS_DC); zend_object_iterator *(*get_iterator)(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC); int (*interface_gets_implemented)(zend_class_entry *iface, zend_class_entry *class_type TSRMLS_DC); /* a class implements this interface */ union _zend_function *(*get_static_method)(zend_class_entry *ce, char* method, int method_len TSRMLS_DC); /* serializer callbacks */ int (*serialize)(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC); int (*unserialize)(zval **object, zend_class_entry *ce, const unsigned char *buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC); zend_class_entry **interfaces; zend_uint num_interfaces; char *filename; zend_uint line_start; zend_uint line_end; char *doc_comment; zend_uint doc_comment_len; struct _zend_module_entry *module; }; #include "zend_stream.h" typedef struct _zend_utility_functions { void (*error_function)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 4, 0); int (*printf_function)(const char *format, ...) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 1, 2); int (*write_function)(const char *str, uint str_length); FILE *(*fopen_function)(const char *filename, char **opened_path TSRMLS_DC); void (*message_handler)(long message, void *data TSRMLS_DC); void (*block_interruptions)(void); void (*unblock_interruptions)(void); int (*get_configuration_directive)(const char *name, uint name_length, zval *contents); void (*ticks_function)(int ticks); void (*on_timeout)(int seconds TSRMLS_DC); int (*stream_open_function)(const char *filename, zend_file_handle *handle TSRMLS_DC); int (*vspprintf_function)(char **pbuf, size_t max_len, const char *format, va_list ap); char *(*getenv_function)(char *name, size_t name_len TSRMLS_DC); char *(*resolve_path_function)(const char *filename, int filename_len TSRMLS_DC); } zend_utility_functions; typedef struct _zend_utility_values { char *import_use_extension; uint import_use_extension_length; zend_bool html_errors; } zend_utility_values; typedef int (*zend_write_func_t)(const char *str, uint str_length); #undef MIN #undef MAX #define MAX(a, b) (((a)>(b))?(a):(b)) #define MIN(a, b) (((a)<(b))?(a):(b)) #define ZEND_STRL(str) (str), (sizeof(str)-1) #define ZEND_STRS(str) (str), (sizeof(str)) #define ZEND_NORMALIZE_BOOL(n) \ ((n) ? (((n)>0) ? 1 : -1) : 0) #define ZEND_TRUTH(x) ((x) ? 1 : 0) #define ZEND_LOG_XOR(a, b) (ZEND_TRUTH(a) ^ ZEND_TRUTH(b)) /* data types */ /* All data types <= IS_BOOL have their constructor/destructors skipped */ #define IS_NULL 0 #define IS_LONG 1 #define IS_DOUBLE 2 #define IS_BOOL 3 #define IS_ARRAY 4 #define IS_OBJECT 5 #define IS_STRING 6 #define IS_RESOURCE 7 #define IS_CONSTANT 8 #define IS_CONSTANT_ARRAY 9 /* Ugly hack to support constants as static array indices */ #define IS_CONSTANT_TYPE_MASK 0x0f #define IS_CONSTANT_UNQUALIFIED 0x10 #define IS_CONSTANT_INDEX 0x80 #define IS_LEXICAL_VAR 0x20 #define IS_LEXICAL_REF 0x40 /* overloaded elements data types */ #define OE_IS_ARRAY (1<<0) #define OE_IS_OBJECT (1<<1) #define OE_IS_METHOD (1<<2) int zend_startup(zend_utility_functions *utility_functions, char **extensions TSRMLS_DC); void zend_shutdown(TSRMLS_D); void zend_register_standard_ini_entries(TSRMLS_D); void zend_post_startup(TSRMLS_D); void zend_set_utility_values(zend_utility_values *utility_values); BEGIN_EXTERN_C() ZEND_API void _zend_bailout(char *filename, uint lineno); END_EXTERN_C() #define zend_bailout() _zend_bailout(__FILE__, __LINE__) #ifdef HAVE_SIGSETJMP # define SETJMP(a) sigsetjmp(a, 0) # define LONGJMP(a,b) siglongjmp(a, b) # define JMP_BUF sigjmp_buf #else # define SETJMP(a) setjmp(a) # define LONGJMP(a,b) longjmp(a, b) # define JMP_BUF jmp_buf #endif #define zend_try \ { \ JMP_BUF *__orig_bailout = EG(bailout); \ JMP_BUF __bailout; \ \ EG(bailout) = &__bailout; \ if (SETJMP(__bailout)==0) { #define zend_catch \ } else { \ EG(bailout) = __orig_bailout; #define zend_end_try() \ } \ EG(bailout) = __orig_bailout; \ } #define zend_first_try EG(bailout)=NULL; zend_try BEGIN_EXTERN_C() ZEND_API char *get_zend_version(void); ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_copy); ZEND_API int zend_print_zval(zval *expr, int indent); ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent); ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC); ZEND_API void zend_print_flat_zval_r(zval *expr TSRMLS_DC); ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC); ZEND_API void zend_output_debug_string(zend_bool trigger_break, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); END_EXTERN_C() void zend_activate(TSRMLS_D); void zend_deactivate(TSRMLS_D); void zend_call_destructors(TSRMLS_D); void zend_activate_modules(TSRMLS_D); void zend_deactivate_modules(TSRMLS_D); void zend_post_deactivate_modules(TSRMLS_D); #if ZEND_DEBUG #define Z_DBG(expr) (expr) #else #define Z_DBG(expr) #endif BEGIN_EXTERN_C() ZEND_API void free_estring(char **str_p); END_EXTERN_C() /* FIXME: Check if we can save if (ptr) too */ #define STR_FREE(ptr) if (ptr) { efree(ptr); } #define STR_FREE_REL(ptr) if (ptr) { efree_rel(ptr); } #define STR_EMPTY_ALLOC() estrndup("", sizeof("")-1) #define STR_REALLOC(ptr, size) \ ptr = (char *) erealloc(ptr, size); /* output support */ #define ZEND_WRITE(str, str_len) zend_write((str), (str_len)) #define ZEND_WRITE_EX(str, str_len) write_func((str), (str_len)) #define ZEND_PUTS(str) zend_write((str), strlen((str))) #define ZEND_PUTS_EX(str) write_func((str), strlen((str))) #define ZEND_PUTC(c) zend_write(&(c), 1), (c) BEGIN_EXTERN_C() extern ZEND_API int (*zend_printf)(const char *format, ...) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 1, 2); extern ZEND_API zend_write_func_t zend_write; extern ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path TSRMLS_DC); extern ZEND_API void (*zend_block_interruptions)(void); extern ZEND_API void (*zend_unblock_interruptions)(void); extern ZEND_API void (*zend_ticks_function)(int ticks); extern ZEND_API void (*zend_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 4, 0); extern void (*zend_on_timeout)(int seconds TSRMLS_DC); extern ZEND_API int (*zend_stream_open_function)(const char *filename, zend_file_handle *handle TSRMLS_DC); 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); ZEND_API void zend_error(int type, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); void zenderror(const char *error); /* The following #define is used for code duality in PHP for Engine 1 & 2 */ #define ZEND_STANDARD_CLASS_DEF_PTR zend_standard_class_def extern ZEND_API zend_class_entry *zend_standard_class_def; extern ZEND_API zend_utility_values zend_uv; extern ZEND_API zval zval_used_for_init; END_EXTERN_C() #define ZEND_UV(name) (zend_uv.name) #define HANDLE_BLOCK_INTERRUPTIONS() if (zend_block_interruptions) { zend_block_interruptions(); } #define HANDLE_UNBLOCK_INTERRUPTIONS() if (zend_unblock_interruptions) { zend_unblock_interruptions(); } BEGIN_EXTERN_C() ZEND_API void zend_message_dispatcher(long message, void *data TSRMLS_DC); ZEND_API int zend_get_configuration_directive(const char *name, uint name_length, zval *contents); END_EXTERN_C() /* Messages for applications of Zend */ #define ZMSG_FAILED_INCLUDE_FOPEN 1L #define ZMSG_FAILED_REQUIRE_FOPEN 2L #define ZMSG_FAILED_HIGHLIGHT_FOPEN 3L #define ZMSG_MEMORY_LEAK_DETECTED 4L #define ZMSG_MEMORY_LEAK_REPEATED 5L #define ZMSG_LOG_SCRIPT_NAME 6L #define ZMSG_MEMORY_LEAKS_GRAND_TOTAL 7L #define INIT_PZVAL(z) \ (z)->refcount__gc = 1; \ (z)->is_ref__gc = 0; #define INIT_ZVAL(z) z = zval_used_for_init; #define ALLOC_INIT_ZVAL(zp) \ ALLOC_ZVAL(zp); \ INIT_ZVAL(*zp); #define MAKE_STD_ZVAL(zv) \ ALLOC_ZVAL(zv); \ INIT_PZVAL(zv); #define PZVAL_IS_REF(z) Z_ISREF_P(z) #define SEPARATE_ZVAL(ppzv) \ { \ zval *orig_ptr = *(ppzv); \ \ if (Z_REFCOUNT_P(orig_ptr) > 1) { \ Z_DELREF_P(orig_ptr); \ ALLOC_ZVAL(*(ppzv)); \ **(ppzv) = *orig_ptr; \ zval_copy_ctor(*(ppzv)); \ Z_SET_REFCOUNT_PP(ppzv, 1); \ Z_UNSET_ISREF_PP((ppzv)); \ } \ } #define SEPARATE_ZVAL_IF_NOT_REF(ppzv) \ if (!PZVAL_IS_REF(*ppzv)) { \ SEPARATE_ZVAL(ppzv); \ } #define SEPARATE_ZVAL_TO_MAKE_IS_REF(ppzv) \ if (!PZVAL_IS_REF(*ppzv)) { \ SEPARATE_ZVAL(ppzv); \ Z_SET_ISREF_PP((ppzv)); \ } #define COPY_PZVAL_TO_ZVAL(zv, pzv) \ (zv) = *(pzv); \ if (Z_REFCOUNT_P(pzv)>1) { \ zval_copy_ctor(&(zv)); \ Z_DELREF_P((pzv)); \ } else { \ FREE_ZVAL(pzv); \ } \ INIT_PZVAL(&(zv)); #define MAKE_COPY_ZVAL(ppzv, pzv) \ *(pzv) = **(ppzv); \ zval_copy_ctor((pzv)); \ INIT_PZVAL((pzv)); #define REPLACE_ZVAL_VALUE(ppzv_dest, pzv_src, copy) { \ int is_ref, refcount; \ \ SEPARATE_ZVAL_IF_NOT_REF(ppzv_dest); \ is_ref = Z_ISREF_PP(ppzv_dest); \ refcount = Z_REFCOUNT_PP(ppzv_dest); \ zval_dtor(*ppzv_dest); \ **ppzv_dest = *pzv_src; \ if (copy) { \ zval_copy_ctor(*ppzv_dest); \ } \ Z_SET_ISREF_TO_PP(ppzv_dest, is_ref); \ Z_SET_REFCOUNT_PP(ppzv_dest, refcount); \ } #define SEPARATE_ARG_IF_REF(varptr) \ if (PZVAL_IS_REF(varptr)) { \ zval *original_var = varptr; \ ALLOC_ZVAL(varptr); \ varptr->value = original_var->value; \ Z_TYPE_P(varptr) = Z_TYPE_P(original_var); \ Z_UNSET_ISREF_P(varptr); \ Z_SET_REFCOUNT_P(varptr, 1); \ zval_copy_ctor(varptr); \ } else { \ Z_ADDREF_P(varptr); \ } #define READY_TO_DESTROY(zv) \ (Z_REFCOUNT_P(zv) == 1 && \ (Z_TYPE_P(zv) != IS_OBJECT || \ zend_objects_store_get_refcount(zv TSRMLS_CC) == 1)) #define ZEND_MAX_RESERVED_RESOURCES 4 #include "zend_gc.h" #include "zend_operators.h" #include "zend_variables.h" typedef enum { EH_NORMAL = 0, EH_SUPPRESS, EH_THROW } zend_error_handling_t; typedef struct { zend_error_handling_t handling; zend_class_entry *exception; zval *user_handler; } zend_error_handling; ZEND_API void zend_save_error_handling(zend_error_handling *current TSRMLS_DC); ZEND_API void zend_replace_error_handling(zend_error_handling_t error_handling, zend_class_entry *exception_class, zend_error_handling *current TSRMLS_DC); ZEND_API void zend_restore_error_handling(zend_error_handling *saved TSRMLS_DC); #define DEBUG_BACKTRACE_PROVIDE_OBJECT (1<<0) #define DEBUG_BACKTRACE_IGNORE_ARGS (1<<1) #endif /* ZEND_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af19d000081a40000000000000000000000014dc0f4e1000009bf000000b500010002ffffffffffffffff0000003800000000root/usr/local/include/php/Zend/zend_language_scanner.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_language_scanner.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_SCANNER_H #define ZEND_SCANNER_H typedef struct _zend_lex_state { unsigned int yy_leng; unsigned char *yy_start; unsigned char *yy_text; unsigned char *yy_cursor; unsigned char *yy_marker; unsigned char *yy_limit; int yy_state; zend_stack state_stack; zend_file_handle *in; uint lineno; char *filename; #ifdef ZEND_MULTIBYTE /* original (unfiltered) script */ unsigned char *script_org; size_t script_org_size; /* filtered script */ unsigned char *script_filtered; size_t script_filtered_size; /* input/ouput filters */ zend_encoding_filter input_filter; zend_encoding_filter output_filter; zend_encoding *script_encoding; zend_encoding *internal_encoding; #endif /* ZEND_MULTIBYTE */ } zend_lex_state; BEGIN_EXTERN_C() int zend_compare_file_handles(zend_file_handle *fh1, zend_file_handle *fh2); ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC); ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC); ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC); END_EXTERN_C() #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1a3000081a40000000000000000000000014dc0f4e100000a02000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/Zend/zend_multiply.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Ard Biesheuvel | +----------------------------------------------------------------------+ */ /* $Id: zend_multiply.h 306939 2011-01-01 02:19:59Z felipe $ */ #if defined(__i386__) && defined(__GNUC__) #define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ long __tmpvar; \ __asm__ ("imul %3,%0\n" \ "adc $0,%1" \ : "=r"(__tmpvar),"=r"(usedval) \ : "0"(a), "r"(b), "1"(0)); \ if (usedval) (dval) = (double) (a) * (double) (b); \ else (lval) = __tmpvar; \ } while (0) #elif SIZEOF_LONG == 4 && defined(HAVE_ZEND_LONG64) #define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ zend_long64 __result = (zend_long64) (a) * (zend_long64) (b); \ if (__result > LONG_MAX || __result < LONG_MIN) { \ (dval) = (double) __result; \ (usedval) = 1; \ } else { \ (lval) = (long) __result; \ (usedval) = 0; \ } \ } while (0) #else #define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ long __lres = (a) * (b); \ long double __dres = (long double)(a) * (long double)(b); \ long double __delta = (long double) __lres - __dres; \ if ( ((usedval) = (( __dres + __delta ) != __dres))) { \ (dval) = __dres; \ } else { \ (lval) = __lres; \ } \ } while (0) #endif 070701000af1a6000081a40000000000000000000000014dc0f4e100001136000000b500010002ffffffffffffffff0000003300000000root/usr/local/include/php/Zend/zend_objects_API.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_objects_API.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_OBJECTS_API_H #define ZEND_OBJECTS_API_H #include "zend.h" typedef void (*zend_objects_store_dtor_t)(void *object, zend_object_handle handle TSRMLS_DC); typedef void (*zend_objects_free_object_storage_t)(void *object TSRMLS_DC); typedef void (*zend_objects_store_clone_t)(void *object, void **object_clone TSRMLS_DC); typedef struct _zend_object_store_bucket { zend_bool destructor_called; zend_bool valid; union _store_bucket { struct _store_object { void *object; zend_objects_store_dtor_t dtor; zend_objects_free_object_storage_t free_storage; zend_objects_store_clone_t clone; const zend_object_handlers *handlers; zend_uint refcount; gc_root_buffer *buffered; } obj; struct { int next; } free_list; } bucket; } zend_object_store_bucket; typedef struct _zend_objects_store { zend_object_store_bucket *object_buckets; zend_uint top; zend_uint size; int free_list_head; } zend_objects_store; /* Global store handling functions */ BEGIN_EXTERN_C() ZEND_API void zend_objects_store_init(zend_objects_store *objects, zend_uint init_size); ZEND_API void zend_objects_store_call_destructors(zend_objects_store *objects TSRMLS_DC); ZEND_API void zend_objects_store_mark_destructed(zend_objects_store *objects TSRMLS_DC); ZEND_API void zend_objects_store_destroy(zend_objects_store *objects); /* Store API functions */ ZEND_API zend_object_handle zend_objects_store_put(void *object, zend_objects_store_dtor_t dtor, zend_objects_free_object_storage_t storage, zend_objects_store_clone_t clone TSRMLS_DC); ZEND_API void zend_objects_store_add_ref(zval *object TSRMLS_DC); ZEND_API void zend_objects_store_del_ref(zval *object TSRMLS_DC); ZEND_API void zend_objects_store_add_ref_by_handle(zend_object_handle handle TSRMLS_DC); ZEND_API void zend_objects_store_del_ref_by_handle_ex(zend_object_handle handle, const zend_object_handlers *handlers TSRMLS_DC); static inline void zend_objects_store_del_ref_by_handle(zend_object_handle handle TSRMLS_DC) { zend_objects_store_del_ref_by_handle_ex(handle, NULL TSRMLS_CC); } ZEND_API zend_uint zend_objects_store_get_refcount(zval *object TSRMLS_DC); ZEND_API zend_object_value zend_objects_store_clone_obj(zval *object TSRMLS_DC); ZEND_API void *zend_object_store_get_object(const zval *object TSRMLS_DC); ZEND_API void *zend_object_store_get_object_by_handle(zend_object_handle handle TSRMLS_DC); /* See comment in zend_objects_API.c before you use this */ ZEND_API void zend_object_store_set_object(zval *zobject, void *object TSRMLS_DC); ZEND_API void zend_object_store_ctor_failed(zval *zobject TSRMLS_DC); ZEND_API void zend_objects_store_free_object_storage(zend_objects_store *objects TSRMLS_DC); #define ZEND_OBJECTS_STORE_HANDLERS zend_objects_store_add_ref, zend_objects_store_del_ref, zend_objects_store_clone_obj ZEND_API zval *zend_object_create_proxy(zval *object, zval *member TSRMLS_DC); ZEND_API zend_object_handlers *zend_get_std_object_handlers(void); END_EXTERN_C() #endif /* ZEND_OBJECTS_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af18a000081a40000000000000000000000014dc0f4e100000c04000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/Zend/zend_exceptions.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Marcus Boerger | | Sterling Hughes | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_exceptions.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_EXCEPTIONS_H #define ZEND_EXCEPTIONS_H BEGIN_EXTERN_C() ZEND_API void zend_exception_set_previous(zval *exception, zval *add_previous TSRMLS_DC); ZEND_API void zend_exception_save(TSRMLS_D); ZEND_API void zend_exception_restore(TSRMLS_D); void zend_throw_exception_internal(zval *exception TSRMLS_DC); void zend_register_default_exception(TSRMLS_D); ZEND_API zend_class_entry *zend_exception_get_default(TSRMLS_D); ZEND_API zend_class_entry *zend_get_error_exception(TSRMLS_D); ZEND_API void zend_register_default_classes(TSRMLS_D); /* exception_ce NULL or zend_exception_get_default() or a derived class * message NULL or the message of the exception */ ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC); ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...); ZEND_API void zend_throw_exception_object(zval *exception TSRMLS_DC); ZEND_API void zend_clear_exception(TSRMLS_D); ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC); extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC); /* show an exception using zend_error(severity,...), severity should be E_ERROR */ ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC); /* do not export, in php it's available thru spprintf directly */ int zend_spprintf(char **message, int max_len, char *format, ...); END_EXTERN_C() #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af182000081a40000000000000000000000014dc0f4e10000073a000000b500010002ffffffffffffffff0000003000000000root/usr/local/include/php/Zend/zend_closures.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Christian Seiler | | Dmitry Stogov | +----------------------------------------------------------------------+ */ /* $Id: zend_closures.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_CLOSURES_H #define ZEND_CLOSURES_H BEGIN_EXTERN_C() #define ZEND_INVOKE_FUNC_NAME "__invoke" void zend_register_closure_ce(TSRMLS_D); extern ZEND_API zend_class_entry *zend_ce_closure; ZEND_API void zend_create_closure(zval *res, zend_function *op_array TSRMLS_DC); ZEND_API zend_function *zend_get_closure_invoke_method(zval *obj TSRMLS_DC); ZEND_API const zend_function *zend_get_closure_method_def(zval *obj TSRMLS_DC); END_EXTERN_C() #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af194000081a40000000000000000000000014dc0f4e1000005f1000000b500010002ffffffffffffffff0000002e00000000root/usr/local/include/php/Zend/zend_indent.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_indent.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_INDENT_H #define ZEND_INDENT_H BEGIN_EXTERN_C() ZEND_API void zend_indent(void); END_EXTERN_C() #endif /* ZEND_INDENT_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1a9000081a40000000000000000000000014dc0f4e1000005e8000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/Zend/zend_qsort.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | +----------------------------------------------------------------------+ */ /* $Id: zend_qsort.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_QSORT_H #define ZEND_QSORT_H BEGIN_EXTERN_C() ZEND_API void zend_qsort(void *base, size_t nmemb, size_t siz, compare_func_t compare TSRMLS_DC); END_EXTERN_C() #endif /* ZEND_QSORT_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1b1000081a40000000000000000000000014dc0f4e10000059b000000b500010002ffffffffffffffff0000002a00000000root/usr/local/include/php/Zend/zend_vm.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ */ /* $Id: zend_vm.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_VM_H #define ZEND_VM_H ZEND_API void zend_vm_use_old_executor(void); ZEND_API void zend_vm_set_opcode_handler(zend_op* opcode); #define ZEND_VM_SET_OPCODE_HANDLER(opline) zend_vm_set_opcode_handler(opline) #endif 070701000af1af000081a40000000000000000000000014dc0f4e100000940000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/Zend/zend_types.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_types.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_TYPES_H #define ZEND_TYPES_H typedef unsigned char zend_bool; typedef unsigned char zend_uchar; typedef unsigned int zend_uint; typedef unsigned long zend_ulong; typedef unsigned short zend_ushort; #define HAVE_ZEND_LONG64 #ifdef ZEND_WIN32 typedef __int64 zend_long64; typedef unsigned __int64 zend_ulong64; #elif SIZEOF_LONG_LONG_INT == 8 typedef long long int zend_long64; typedef unsigned long long int zend_ulong64; #elif SIZEOF_LONG_LONG == 8 typedef long long zend_long64; typedef unsigned long long zend_ulong64; #else # undef HAVE_ZEND_LONG64 #endif #ifdef _WIN64 typedef __int64 zend_intptr_t; typedef unsigned __int64 zend_uintptr_t; #else typedef long zend_intptr_t; typedef unsigned long zend_uintptr_t; #endif typedef unsigned int zend_object_handle; typedef struct _zend_object_handlers zend_object_handlers; typedef struct _zend_object_value { zend_object_handle handle; zend_object_handlers *handlers; } zend_object_value; #endif /* ZEND_TYPES_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af191000081a40000000000000000000000014dc0f4e100000cd5000000b500010002ffffffffffffffff0000003600000000root/usr/local/include/php/Zend/zend_globals_macros.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_globals_macros.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_GLOBALS_MACROS_H #define ZEND_GLOBALS_MACROS_H typedef struct _zend_compiler_globals zend_compiler_globals; typedef struct _zend_executor_globals zend_executor_globals; typedef struct _zend_php_scanner_globals zend_php_scanner_globals; typedef struct _zend_ini_scanner_globals zend_ini_scanner_globals; BEGIN_EXTERN_C() /* Compiler */ #ifdef ZTS # define CG(v) TSRMG(compiler_globals_id, zend_compiler_globals *, v) int zendparse(void *compiler_globals); #else # define CG(v) (compiler_globals.v) extern ZEND_API struct _zend_compiler_globals compiler_globals; int zendparse(void); #endif /* Executor */ #ifdef ZTS # define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v) #else # define EG(v) (executor_globals.v) extern ZEND_API zend_executor_globals executor_globals; #endif /* Language Scanner */ #ifdef ZTS # define LANG_SCNG(v) TSRMG(language_scanner_globals_id, zend_php_scanner_globals *, v) extern ZEND_API ts_rsrc_id language_scanner_globals_id; #else # define LANG_SCNG(v) (language_scanner_globals.v) extern ZEND_API zend_php_scanner_globals language_scanner_globals; #endif /* INI Scanner */ #ifdef ZTS # define INI_SCNG(v) TSRMG(ini_scanner_globals_id, zend_ini_scanner_globals *, v) extern ZEND_API ts_rsrc_id ini_scanner_globals_id; #else # define INI_SCNG(v) (ini_scanner_globals.v) extern ZEND_API zend_ini_scanner_globals ini_scanner_globals; #endif END_EXTERN_C() /* For limited downwards source compatibility */ #define CLS_FETCH() #define ELS_FETCH() #define ALS_FETCH() #define PLS_FETCH() #define SLS_FETCH() #define CLS_D #define ELS_D #define ALS_D #define PLS_D #define SLS_D #define CLS_DC #define ELS_DC #define ALS_DC #define PLS_DC #define SLS_DC #define CLS_C #define ELS_C #define ALS_C #define PLS_C #define SLS_C #define CLS_CC #define ELS_CC #define ALS_CC #define PLS_CC #define SLS_CC #endif /* ZEND_GLOBALS_MACROS_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af187000081a40000000000000000000000014dc0f4e1000013cb000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/Zend/zend_constants.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_constants.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_CONSTANTS_H #define ZEND_CONSTANTS_H #include "zend_globals.h" #define CONST_CS (1<<0) /* Case Sensitive */ #define CONST_PERSISTENT (1<<1) /* Persistent */ #define CONST_CT_SUBST (1<<2) /* Allow compile-time substitution */ #define PHP_USER_CONSTANT INT_MAX /* a constant defined in user space */ typedef struct _zend_constant { zval value; int flags; char *name; uint name_len; int module_number; } zend_constant; #define REGISTER_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name), (lval), (flags), module_number TSRMLS_CC) #define REGISTER_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name), (dval), (flags), module_number TSRMLS_CC) #define REGISTER_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), module_number TSRMLS_CC) #define REGISTER_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name), (str), (len), (flags), module_number TSRMLS_CC) #define REGISTER_NS_LONG_CONSTANT(ns, name, lval, flags) zend_register_long_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (lval), (flags), module_number TSRMLS_CC) #define REGISTER_NS_DOUBLE_CONSTANT(ns, name, dval, flags) zend_register_double_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (dval), (flags), module_number TSRMLS_CC) #define REGISTER_NS_STRING_CONSTANT(ns, name, str, flags) zend_register_string_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (flags), module_number TSRMLS_CC) #define REGISTER_NS_STRINGL_CONSTANT(ns, name, str, len, flags) zend_register_stringl_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (len), (flags), module_number TSRMLS_CC) #define REGISTER_MAIN_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name), (lval), (flags), 0 TSRMLS_CC) #define REGISTER_MAIN_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name), (dval), (flags), 0 TSRMLS_CC) #define REGISTER_MAIN_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), 0 TSRMLS_CC) #define REGISTER_MAIN_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name), (str), (len), (flags), 0 TSRMLS_CC) BEGIN_EXTERN_C() void clean_module_constants(int module_number TSRMLS_DC); void free_zend_constant(zend_constant *c); int zend_startup_constants(TSRMLS_D); int zend_shutdown_constants(TSRMLS_D); void zend_register_standard_constants(TSRMLS_D); void clean_non_persistent_constants(TSRMLS_D); ZEND_API int zend_get_constant(const char *name, uint name_len, zval *result TSRMLS_DC); ZEND_API int zend_get_constant_ex(const char *name, uint name_len, zval *result, zend_class_entry *scope, ulong flags TSRMLS_DC); ZEND_API void zend_register_long_constant(const char *name, uint name_len, long lval, int flags, int module_number TSRMLS_DC); ZEND_API void zend_register_double_constant(const char *name, uint name_len, double dval, int flags, int module_number TSRMLS_DC); ZEND_API void zend_register_string_constant(const char *name, uint name_len, char *strval, int flags, int module_number TSRMLS_DC); ZEND_API void zend_register_stringl_constant(const char *name, uint name_len, char *strval, uint strlen, int flags, int module_number TSRMLS_DC); ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC); void zend_copy_constants(HashTable *target, HashTable *sourc); void copy_zend_constant(zend_constant *c); END_EXTERN_C() #define ZEND_CONSTANT_DTOR (void (*)(void *)) free_zend_constant #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af17f000081a40000000000000000000000014dc0f4e1000030e0000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/Zend/zend_alloc.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_alloc.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_ALLOC_H #define ZEND_ALLOC_H #include #include "../TSRM/TSRM.h" #include "zend.h" #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) #define ZEND_MM_ALIGNED_SIZE(size) (((size) + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK) typedef struct _zend_leak_info { void *addr; size_t size; char *filename; uint lineno; char *orig_filename; uint orig_lineno; } zend_leak_info; BEGIN_EXTERN_C() ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC; ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API void *_safe_malloc(size_t nmemb, size_t size, size_t offset) ZEND_ATTRIBUTE_MALLOC; ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset); ZEND_API char *_estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API char *_estrndup(const char *s, unsigned int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API size_t _zend_mem_block_size(void *ptr TSRMLS_DC ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); /* Standard wrapper macros */ #define emalloc(size) _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define safe_emalloc(nmemb, size, offset) _safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define efree(ptr) _efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define ecalloc(nmemb, size) _ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define erealloc(ptr, size) _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define safe_erealloc(ptr, nmemb, size, offset) _safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define erealloc_recoverable(ptr, size) _erealloc((ptr), (size), 1 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrdup(s) _estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrndup(s, length) _estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define zend_mem_block_size(ptr) _zend_mem_block_size((ptr) TSRMLS_CC ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) /* Relay wrapper macros */ #define emalloc_rel(size) _emalloc((size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define safe_emalloc_rel(nmemb, size, offset) _safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define efree_rel(ptr) _efree((ptr) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define ecalloc_rel(nmemb, size) _ecalloc((nmemb), (size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define erealloc_rel(ptr, size) _erealloc((ptr), (size), 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define erealloc_recoverable_rel(ptr, size) _erealloc((ptr), (size), 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define safe_erealloc_rel(ptr, nmemb, size, offset) _safe_erealloc((ptr), (nmemb), (size), (offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define estrdup_rel(s) _estrdup((s) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define estrndup_rel(s, length) _estrndup((s), (length) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define zend_mem_block_size_rel(ptr) _zend_mem_block_size((ptr) TSRMLS_CC ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) inline static void * __zend_malloc(size_t len) { void *tmp = malloc(len); if (tmp) { return tmp; } fprintf(stderr, "Out of memory\n"); exit(1); } inline static void * __zend_calloc(size_t nmemb, size_t len) { void *tmp = _safe_malloc(nmemb, len, 0); memset(tmp, 0, nmemb * len); return tmp; } inline static void * __zend_realloc(void *p, size_t len) { p = realloc(p, len); if (p) { return p; } fprintf(stderr, "Out of memory\n"); exit(1); } /* Selective persistent/non persistent allocation macros */ #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size):emalloc(size)) #define safe_pemalloc(nmemb, size, offset, persistent) ((persistent)?_safe_malloc(nmemb, size, offset):safe_emalloc(nmemb, size, offset)) #define pefree(ptr, persistent) ((persistent)?free(ptr):efree(ptr)) #define pecalloc(nmemb, size, persistent) ((persistent)?__zend_calloc((nmemb), (size)):ecalloc((nmemb), (size))) #define perealloc(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size)):erealloc((ptr), (size))) #define safe_perealloc(ptr, nmemb, size, offset, persistent) ((persistent)?_safe_realloc((ptr), (nmemb), (size), (offset)):safe_erealloc((ptr), (nmemb), (size), (offset))) #define perealloc_recoverable(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size)):erealloc_recoverable((ptr), (size))) #define pestrdup(s, persistent) ((persistent)?strdup(s):estrdup(s)) #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length))) #define pemalloc_rel(size, persistent) ((persistent)?__zend_malloc(size):emalloc_rel(size)) #define pefree_rel(ptr, persistent) ((persistent)?free(ptr):efree_rel(ptr)) #define pecalloc_rel(nmemb, size, persistent) ((persistent)?__zend_calloc((nmemb), (size)):ecalloc_rel((nmemb), (size))) #define perealloc_rel(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size)):erealloc_rel((ptr), (size))) #define perealloc_recoverable_rel(ptr, size, persistent) ((persistent)?__zend_realloc((ptr), (size)):erealloc_recoverable_rel((ptr), (size))) #define pestrdup_rel(s, persistent) ((persistent)?strdup(s):estrdup_rel(s)) #define safe_estrdup(ptr) ((ptr)?(estrdup(ptr)):STR_EMPTY_ALLOC()) #define safe_estrndup(ptr, len) ((ptr)?(estrndup((ptr), (len))):STR_EMPTY_ALLOC()) ZEND_API int zend_set_memory_limit(size_t memory_limit); ZEND_API void start_memory_manager(TSRMLS_D); ZEND_API void shutdown_memory_manager(int silent, int full_shutdown TSRMLS_DC); ZEND_API int is_zend_mm(TSRMLS_D); #if ZEND_DEBUG ZEND_API int _mem_block_check(void *ptr, int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void _full_mem_check(int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); void zend_debug_alloc_output(char *format, ...); #define mem_block_check(ptr, silent) _mem_block_check(ptr, silent ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define full_mem_check(silent) _full_mem_check(silent ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #else #define mem_block_check(type, ptr, silent) #define full_mem_check(silent) #endif ZEND_API size_t zend_memory_usage(int real_usage TSRMLS_DC); ZEND_API size_t zend_memory_peak_usage(int real_usage TSRMLS_DC); END_EXTERN_C() /* Macroses for zend_fast_cache.h compatibility */ #define ZEND_FAST_ALLOC(p, type, fc_type) \ (p) = (type *) emalloc(sizeof(type)) #define ZEND_FAST_FREE(p, fc_type) \ efree(p) #define ZEND_FAST_ALLOC_REL(p, type, fc_type) \ (p) = (type *) emalloc_rel(sizeof(type)) #define ZEND_FAST_FREE_REL(p, fc_type) \ efree_rel(p) /* fast cache for zval's */ #define ALLOC_ZVAL(z) \ ZEND_FAST_ALLOC(z, zval, ZVAL_CACHE_LIST) #define FREE_ZVAL(z) \ ZEND_FAST_FREE(z, ZVAL_CACHE_LIST) #define ALLOC_ZVAL_REL(z) \ ZEND_FAST_ALLOC_REL(z, zval, ZVAL_CACHE_LIST) #define FREE_ZVAL_REL(z) \ ZEND_FAST_FREE_REL(z, ZVAL_CACHE_LIST) /* fast cache for HashTables */ #define ALLOC_HASHTABLE(ht) \ ZEND_FAST_ALLOC(ht, HashTable, HASHTABLE_CACHE_LIST) #define FREE_HASHTABLE(ht) \ ZEND_FAST_FREE(ht, HASHTABLE_CACHE_LIST) #define ALLOC_HASHTABLE_REL(ht) \ ZEND_FAST_ALLOC_REL(ht, HashTable, HASHTABLE_CACHE_LIST) #define FREE_HASHTABLE_REL(ht) \ ZEND_FAST_FREE_REL(ht, HASHTABLE_CACHE_LIST) /* Heap functions */ typedef struct _zend_mm_heap zend_mm_heap; 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); ZEND_API void *_zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; ZEND_API void _zend_mm_free(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_zend_mm_realloc(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API size_t _zend_mm_block_size(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); #define zend_mm_alloc(heap, size) _zend_mm_alloc((heap), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define zend_mm_free(heap, p) _zend_mm_free((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define zend_mm_realloc(heap, p, size) _zend_mm_realloc((heap), (p), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define zend_mm_block_size(heap, p) _zend_mm_block_size((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define zend_mm_alloc_rel(heap, size) _zend_mm_alloc((heap), (size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define zend_mm_free_rel(heap, p) _zend_mm_free((heap), (p) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define zend_mm_realloc_rel(heap, p, size) _zend_mm_realloc((heap), (p), (size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define zend_mm_block_size_rel(heap, p) _zend_mm_block_size((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) /* Heaps with user defined storage */ typedef struct _zend_mm_storage zend_mm_storage; typedef struct _zend_mm_segment { size_t size; struct _zend_mm_segment *next_segment; } zend_mm_segment; typedef struct _zend_mm_mem_handlers { const char *name; zend_mm_storage* (*init)(void *params); void (*dtor)(zend_mm_storage *storage); void (*compact)(zend_mm_storage *storage); zend_mm_segment* (*_alloc)(zend_mm_storage *storage, size_t size); zend_mm_segment* (*_realloc)(zend_mm_storage *storage, zend_mm_segment *ptr, size_t size); void (*_free)(zend_mm_storage *storage, zend_mm_segment *ptr); } zend_mm_mem_handlers; struct _zend_mm_storage { const zend_mm_mem_handlers *handlers; void *data; }; 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); ZEND_API zend_mm_heap *zend_mm_set_heap(zend_mm_heap *new_heap TSRMLS_DC); ZEND_API zend_mm_storage *zend_mm_get_storage(zend_mm_heap *heap); ZEND_API void zend_mm_set_custom_handlers(zend_mm_heap *heap, void* (*_malloc)(size_t), void (*_free)(void*), void* (*_realloc)(void*, size_t)); #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af185000081a40000000000000000000000014dc0f4e1000009fc000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/Zend/zend_config.nw.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_config.nw.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_CONFIG_NW_H #define ZEND_CONFIG_NW_H #include #include typedef unsigned long ulong; typedef unsigned int uint; #define HAVE_ALLOCA 1 #define HAVE_LIMITS_H 1 /* #include */ #define HAVE_STRING_H 1 #define HAVE_SYS_SELECT_H 1 #define HAVE_STDLIB_H 1 #undef HAVE_KILL #define HAVE_GETPID 1 /* #define HAVE_ALLOCA_H 1 */ #define HAVE_MEMCPY 1 #define HAVE_STRDUP 1 #define HAVE_SYS_TYPES_H 1 /* #define HAVE_STDIOSTR_H 1 */ #define HAVE_CLASS_ISTDIOSTREAM #define istdiostream stdiostream #define HAVE_STDARG_H 1 #define HAVE_DLFCN_H 1 /* #define HAVE_LIBDL 1 */ #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 /* #define snprintf _snprintf #define vsnprintf _vsnprintf #define zend_isinf(a) 0 #define zend_finite(x) _finite(x) #define zend_isnan(x) _isnan(x) */ #define zend_sprintf sprintf /* This will cause the compilation process to be MUCH longer, but will generate * a much quicker PHP binary */ /* #undef inline #ifdef ZEND_WIN32_FORCE_INLINE # define inline __forceinline #else # define inline #endif */ /* #define zend_finite(A) _finite(A) #define zend_isnan(A) _isnan(A) */ #endif /* ZEND_CONFIG_NW_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1a2000081a40000000000000000000000014dc0f4e100000f15000000b500010002ffffffffffffffff0000003100000000root/usr/local/include/php/Zend/zend_multibyte.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Masaki Fujimoto | | Rui Hirokawa | +----------------------------------------------------------------------+ */ /* $Id: zend_multibyte.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_MULTIBYTE_H #define ZEND_MULTIBYTE_H #ifdef ZEND_MULTIBYTE #define BOM_UTF32_BE "\x00\x00\xfe\xff" #define BOM_UTF32_LE "\xff\xfe\x00\x00" #define BOM_UTF16_BE "\xfe\xff" #define BOM_UTF16_LE "\xff\xfe" #define BOM_UTF8 "\xef\xbb\xbf" typedef size_t (*zend_encoding_filter)(unsigned char **str, size_t *str_length, const unsigned char *buf, size_t length TSRMLS_DC); typedef char* (*zend_encoding_detector)(const unsigned char *string, size_t length, char *list TSRMLS_DC); typedef int (*zend_encoding_converter)(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const char *encoding_to, const char *encoding_from TSRMLS_DC); typedef size_t (*zend_encoding_oddlen)(const unsigned char *string, size_t length, const char *encoding TSRMLS_DC); typedef struct _zend_encoding { zend_encoding_filter input_filter; /* escape input filter */ zend_encoding_filter output_filter; /* escape output filter */ const char *name; /* encoding name */ const char *(*aliases)[]; /* encoding name aliases */ zend_bool compatible; /* flex compatible or not */ } zend_encoding; /* * zend multibyte APIs */ BEGIN_EXTERN_C() ZEND_API int zend_multibyte_set_script_encoding(const char *encoding_list, size_t encoding_list_size TSRMLS_DC); ZEND_API int zend_multibyte_set_internal_encoding(const char *encoding_name TSRMLS_DC); ZEND_API int zend_multibyte_set_functions(zend_encoding_detector encoding_detector, zend_encoding_converter encoding_converter, zend_encoding_oddlen encoding_oddlen TSRMLS_DC); ZEND_API int zend_multibyte_set_filter(zend_encoding *onetime_encoding TSRMLS_DC); ZEND_API zend_encoding* zend_multibyte_fetch_encoding(const char *encoding_name); ZEND_API size_t zend_multibyte_script_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC); ZEND_API size_t zend_multibyte_internal_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC); /* in zend_language_scanner.l */ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC); ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC); ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC); END_EXTERN_C() #endif /* ZEND_MULTIBYTE */ #endif /* ZEND_MULTIBYTE_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 tw=78 * vim<600: sw=4 ts=4 tw=78 */ 070701000af1a0000081a40000000000000000000000014dc0f4e100000fbb000000b500010002ffffffffffffffff0000002d00000000root/usr/local/include/php/Zend/zend_llist.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_llist.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_LLIST_H #define ZEND_LLIST_H typedef struct _zend_llist_element { struct _zend_llist_element *next; struct _zend_llist_element *prev; char data[1]; /* Needs to always be last in the struct */ } zend_llist_element; typedef void (*llist_dtor_func_t)(void *); typedef int (*llist_compare_func_t)(const zend_llist_element **, const zend_llist_element ** TSRMLS_DC); typedef void (*llist_apply_with_args_func_t)(void *data, int num_args, va_list args TSRMLS_DC); typedef void (*llist_apply_with_arg_func_t)(void *data, void *arg TSRMLS_DC); typedef void (*llist_apply_func_t)(void * TSRMLS_DC); typedef struct _zend_llist { zend_llist_element *head; zend_llist_element *tail; size_t count; size_t size; llist_dtor_func_t dtor; unsigned char persistent; zend_llist_element *traverse_ptr; } zend_llist; typedef zend_llist_element* zend_llist_position; BEGIN_EXTERN_C() ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent); ZEND_API void zend_llist_add_element(zend_llist *l, void *element); ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element); ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2)); ZEND_API void zend_llist_destroy(zend_llist *l); ZEND_API void zend_llist_clean(zend_llist *l); ZEND_API void *zend_llist_remove_tail(zend_llist *l); ZEND_API void zend_llist_copy(zend_llist *dst, zend_llist *src); ZEND_API void zend_llist_apply(zend_llist *l, llist_apply_func_t func TSRMLS_DC); ZEND_API void zend_llist_apply_with_del(zend_llist *l, int (*func)(void *data)); ZEND_API void zend_llist_apply_with_argument(zend_llist *l, llist_apply_with_arg_func_t func, void *arg TSRMLS_DC); ZEND_API void zend_llist_apply_with_arguments(zend_llist *l, llist_apply_with_args_func_t func TSRMLS_DC, int num_args, ...); ZEND_API int zend_llist_count(zend_llist *l); ZEND_API void zend_llist_sort(zend_llist *l, llist_compare_func_t comp_func TSRMLS_DC); /* traversal */ ZEND_API void *zend_llist_get_first_ex(zend_llist *l, zend_llist_position *pos); ZEND_API void *zend_llist_get_last_ex(zend_llist *l, zend_llist_position *pos); ZEND_API void *zend_llist_get_next_ex(zend_llist *l, zend_llist_position *pos); ZEND_API void *zend_llist_get_prev_ex(zend_llist *l, zend_llist_position *pos); #define zend_llist_get_first(l) zend_llist_get_first_ex(l, NULL) #define zend_llist_get_last(l) zend_llist_get_last_ex(l, NULL) #define zend_llist_get_next(l) zend_llist_get_next_ex(l, NULL) #define zend_llist_get_prev(l) zend_llist_get_prev_ex(l, NULL) END_EXTERN_C() #endif /* ZEND_LLIST_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af1a5000081a40000000000000000000000014dc0f4e1000008db000000b500010002ffffffffffffffff0000002f00000000root/usr/local/include/php/Zend/zend_objects.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id: zend_objects.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_OBJECTS_H #define ZEND_OBJECTS_H #include "zend.h" BEGIN_EXTERN_C() ZEND_API void zend_object_std_init(zend_object *object, zend_class_entry *ce TSRMLS_DC); ZEND_API void zend_object_std_dtor(zend_object *object TSRMLS_DC); ZEND_API zend_object_value zend_objects_new(zend_object **object, zend_class_entry *class_type TSRMLS_DC); ZEND_API void zend_objects_destroy_object(zend_object *object, zend_object_handle handle TSRMLS_DC); ZEND_API zend_object *zend_objects_get_address(const zval *object TSRMLS_DC); ZEND_API void zend_objects_clone_members(zend_object *new_object, zend_object_value new_obj_val, zend_object *old_object, zend_object_handle handle TSRMLS_DC); ZEND_API zend_object_value zend_objects_clone_obj(zval *object TSRMLS_DC); ZEND_API void zend_objects_free_object_storage(zend_object *object TSRMLS_DC); END_EXTERN_C() #endif /* ZEND_OBJECTS_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * indent-tabs-mode: t * End: */ 070701000af199000081a40000000000000000000000014dc0f4e100001024000000b500010002ffffffffffffffff0000003200000000root/usr/local/include/php/Zend/zend_interfaces.h/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2011 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ */ /* $Id: zend_interfaces.h 306939 2011-01-01 02:19:59Z felipe $ */ #ifndef ZEND_INTERFACES_H #define ZEND_INTERFACES_H #include "zend.h" #include "zend_API.h" BEGIN_EXTERN_C() extern ZEND_API zend_class_entry *zend_ce_traversable; extern ZEND_API zend_class_entry *zend_ce_aggregate; extern ZEND_API zend_class_entry *zend_ce_iterator; extern ZEND_API zend_class_entry *zend_ce_arrayaccess; extern ZEND_API zend_class_entry *zend_ce_serializable; typedef struct _zend_user_iterator { zend_object_iterator it; zend_class_entry *ce; zval *value; } zend_user_iterator; ZEND_API zval* zend_call_method(zval *