1 /* 2 +----------------------------------------------------------------------+ 3 | Copyright (c) The PHP Group | 4 +----------------------------------------------------------------------+ 5 | This source file is subject to version 3.01 of the PHP license, | 6 | that is bundled with this package in the file LICENSE, and is | 7 | available through the world-wide-web at the following url: | 8 | https://www.php.net/license/3_01.txt | 9 | If you did not receive a copy of the PHP license and are unable to | 10 | obtain it through the world-wide-web, please send a note to | 11 | license@php.net so we can mail you a copy immediately. | 12 +----------------------------------------------------------------------+ 13 | Authors: Andi Gutmans <andi@php.net> | 14 | Zeev Suraski <zeev@php.net> | 15 +----------------------------------------------------------------------+ 16 */ 17 18 #ifndef BASIC_FUNCTIONS_H 19 #define BASIC_FUNCTIONS_H 20 21 #include <sys/stat.h> 22 #include <wchar.h> 23 24 #include "php_filestat.h" 25 26 #include "zend_highlight.h" 27 28 #include "url_scanner_ex.h" 29 30 #if defined(_WIN32) && !defined(__clang__) 31 #include <intrin.h> 32 #endif 33 34 extern zend_module_entry basic_functions_module; 35 #define basic_functions_module_ptr &basic_functions_module 36 37 PHP_MINIT_FUNCTION(basic); 38 PHP_MSHUTDOWN_FUNCTION(basic); 39 PHP_RINIT_FUNCTION(basic); 40 PHP_RSHUTDOWN_FUNCTION(basic); 41 PHP_MINFO_FUNCTION(basic); 42 43 ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini); 44 45 PHP_MINIT_FUNCTION(user_filters); 46 PHP_RSHUTDOWN_FUNCTION(user_filters); 47 PHP_RSHUTDOWN_FUNCTION(browscap); 48 49 /* Left for BC (not binary safe!) */ 50 PHPAPI int _php_error_log(int opt_err, const char *message, const char *opt, const char *headers); 51 PHPAPI int _php_error_log_ex(int opt_err, const char *message, size_t message_len, const char *opt, const char *headers); 52 PHPAPI int php_prefix_varname(zval *result, zend_string *prefix, const char *var_name, size_t var_name_len, bool add_underscore); 53 54 typedef struct _php_basic_globals { 55 HashTable *user_shutdown_function_names; 56 HashTable putenv_ht; 57 zend_string *strtok_string; 58 zend_string *ctype_string; /* current LC_CTYPE locale (or NULL for 'C') */ 59 bool locale_changed; /* locale was changed and has to be restored */ 60 char *strtok_last; 61 char strtok_table[256]; 62 size_t strtok_len; 63 zend_fcall_info user_compare_fci; 64 zend_fcall_info_cache user_compare_fci_cache; 65 zend_llist *user_tick_functions; 66 67 zval active_ini_file_section; 68 69 /* http_fopen_wrapper.c */ 70 zval last_http_headers; 71 72 /* pageinfo.c */ 73 zend_long page_uid; 74 zend_long page_gid; 75 zend_long page_inode; 76 time_t page_mtime; 77 78 /* filestat.c && main/streams/streams.c */ 79 zend_string *CurrentStatFile, *CurrentLStatFile; 80 php_stream_statbuf ssb, lssb; 81 82 /* syslog.c */ 83 char *syslog_device; 84 85 /* var.c */ 86 unsigned serialize_lock; /* whether to use the locally supplied var_hash instead (__sleep/__wakeup) */ 87 struct { 88 struct php_serialize_data *data; 89 unsigned level; 90 } serialize; 91 struct { 92 struct php_unserialize_data *data; 93 unsigned level; 94 } unserialize; 95 96 /* url_scanner_ex.re */ 97 url_adapt_state_ex_t url_adapt_session_ex; 98 HashTable url_adapt_session_hosts_ht; 99 url_adapt_state_ex_t url_adapt_output_ex; 100 HashTable url_adapt_output_hosts_ht; 101 HashTable *user_filter_map; 102 103 /* file.c */ 104 #if defined(_REENTRANT) 105 mbstate_t mblen_state; 106 #endif 107 108 int umask; 109 zend_long unserialize_max_depth; 110 } php_basic_globals; 111 112 #ifdef ZTS 113 #define BG(v) ZEND_TSRMG(basic_globals_id, php_basic_globals *, v) 114 PHPAPI extern int basic_globals_id; 115 #else 116 #define BG(v) (basic_globals.v) 117 PHPAPI extern php_basic_globals basic_globals; 118 #endif 119 120 PHPAPI zend_string *php_getenv(const char *str, size_t str_len); 121 122 PHPAPI double php_get_nan(void); 123 PHPAPI double php_get_inf(void); 124 125 typedef struct _php_shutdown_function_entry { 126 zend_fcall_info fci; 127 zend_fcall_info_cache fci_cache; 128 } php_shutdown_function_entry; 129 130 PHPAPI extern bool register_user_shutdown_function(const char *function_name, size_t function_len, php_shutdown_function_entry *shutdown_function_entry); 131 PHPAPI extern bool remove_user_shutdown_function(const char *function_name, size_t function_len); 132 PHPAPI extern bool append_user_shutdown_function(php_shutdown_function_entry *shutdown_function_entry); 133 134 PHPAPI void php_call_shutdown_functions(void); 135 PHPAPI void php_free_shutdown_functions(void); 136 137 138 #endif /* BASIC_FUNCTIONS_H */ 139