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 /* Deprecated type aliases -- use the standard types instead */ 55 typedef uint32_t php_uint32; 56 typedef int32_t php_int32; 57 58 typedef struct _php_basic_globals { 59 HashTable *user_shutdown_function_names; 60 HashTable putenv_ht; 61 zend_string *strtok_string; 62 zend_string *ctype_string; /* current LC_CTYPE locale (or NULL for 'C') */ 63 bool locale_changed; /* locale was changed and has to be restored */ 64 char *strtok_last; 65 char strtok_table[256]; 66 size_t strtok_len; 67 zend_fcall_info user_compare_fci; 68 zend_fcall_info_cache user_compare_fci_cache; 69 zend_llist *user_tick_functions; 70 71 zval active_ini_file_section; 72 73 /* pageinfo.c */ 74 zend_long page_uid; 75 zend_long page_gid; 76 zend_long page_inode; 77 time_t page_mtime; 78 79 /* filestat.c && main/streams/streams.c */ 80 zend_string *CurrentStatFile, *CurrentLStatFile; 81 php_stream_statbuf ssb, lssb; 82 83 /* syslog.c */ 84 char *syslog_device; 85 86 /* var.c */ 87 unsigned serialize_lock; /* whether to use the locally supplied var_hash instead (__sleep/__wakeup) */ 88 struct { 89 struct php_serialize_data *data; 90 unsigned level; 91 } serialize; 92 struct { 93 struct php_unserialize_data *data; 94 unsigned level; 95 } unserialize; 96 97 /* url_scanner_ex.re */ 98 url_adapt_state_ex_t url_adapt_session_ex; 99 HashTable url_adapt_session_hosts_ht; 100 url_adapt_state_ex_t url_adapt_output_ex; 101 HashTable url_adapt_output_hosts_ht; 102 HashTable *user_filter_map; 103 104 /* file.c */ 105 #if defined(_REENTRANT) 106 mbstate_t mblen_state; 107 #endif 108 109 int umask; 110 zend_long unserialize_max_depth; 111 } php_basic_globals; 112 113 #ifdef ZTS 114 #define BG(v) ZEND_TSRMG(basic_globals_id, php_basic_globals *, v) 115 PHPAPI extern int basic_globals_id; 116 #else 117 #define BG(v) (basic_globals.v) 118 PHPAPI extern php_basic_globals basic_globals; 119 #endif 120 121 PHPAPI zend_string *php_getenv(const char *str, size_t str_len); 122 123 PHPAPI double php_get_nan(void); 124 PHPAPI double php_get_inf(void); 125 126 typedef struct _php_shutdown_function_entry { 127 zend_fcall_info fci; 128 zend_fcall_info_cache fci_cache; 129 } php_shutdown_function_entry; 130 131 PHPAPI extern bool register_user_shutdown_function(const char *function_name, size_t function_len, php_shutdown_function_entry *shutdown_function_entry); 132 PHPAPI extern bool remove_user_shutdown_function(const char *function_name, size_t function_len); 133 PHPAPI extern bool append_user_shutdown_function(php_shutdown_function_entry *shutdown_function_entry); 134 135 PHPAPI void php_call_shutdown_functions(void); 136 PHPAPI void php_free_shutdown_functions(void); 137 138 139 #endif /* BASIC_FUNCTIONS_H */ 140