xref: /PHP-5.5/ext/standard/basic_functions.h (revision 73c1be26)
1 /*
2    +----------------------------------------------------------------------+
3    | PHP Version 5                                                        |
4    +----------------------------------------------------------------------+
5    | Copyright (c) 1997-2015 The PHP Group                                |
6    +----------------------------------------------------------------------+
7    | This source file is subject to version 3.01 of the PHP license,      |
8    | that is bundled with this package in the file LICENSE, and is        |
9    | available through the world-wide-web at the following url:           |
10    | http://www.php.net/license/3_01.txt                                  |
11    | If you did not receive a copy of the PHP license and are unable to   |
12    | obtain it through the world-wide-web, please send a note to          |
13    | license@php.net so we can mail you a copy immediately.               |
14    +----------------------------------------------------------------------+
15    | Authors: Andi Gutmans <andi@zend.com>                                |
16    |          Zeev Suraski <zeev@zend.com>                                |
17    +----------------------------------------------------------------------+
18 */
19 
20 /* $Id$ */
21 
22 #ifndef BASIC_FUNCTIONS_H
23 #define BASIC_FUNCTIONS_H
24 
25 #include <sys/stat.h>
26 
27 #ifdef HAVE_WCHAR_H
28 #include <wchar.h>
29 #endif
30 
31 #include "php_filestat.h"
32 
33 #include "zend_highlight.h"
34 
35 #include "url_scanner_ex.h"
36 
37 extern zend_module_entry basic_functions_module;
38 #define basic_functions_module_ptr &basic_functions_module
39 
40 PHP_MINIT_FUNCTION(basic);
41 PHP_MSHUTDOWN_FUNCTION(basic);
42 PHP_RINIT_FUNCTION(basic);
43 PHP_RSHUTDOWN_FUNCTION(basic);
44 PHP_MINFO_FUNCTION(basic);
45 
46 PHP_FUNCTION(constant);
47 PHP_FUNCTION(sleep);
48 PHP_FUNCTION(usleep);
49 #if HAVE_NANOSLEEP
50 PHP_FUNCTION(time_nanosleep);
51 PHP_FUNCTION(time_sleep_until);
52 #endif
53 PHP_FUNCTION(flush);
54 #ifdef HAVE_INET_NTOP
55 PHP_NAMED_FUNCTION(php_inet_ntop);
56 #endif
57 #ifdef HAVE_INET_PTON
58 PHP_NAMED_FUNCTION(php_inet_pton);
59 #endif
60 PHP_FUNCTION(ip2long);
61 PHP_FUNCTION(long2ip);
62 
63 /* system functions */
64 PHP_FUNCTION(getenv);
65 PHP_FUNCTION(putenv);
66 
67 PHP_FUNCTION(getopt);
68 
69 PHP_FUNCTION(get_current_user);
70 PHP_FUNCTION(set_time_limit);
71 
72 PHP_FUNCTION(header_register_callback);
73 
74 PHP_FUNCTION(get_cfg_var);
75 PHP_FUNCTION(set_magic_quotes_runtime);
76 PHP_FUNCTION(get_magic_quotes_runtime);
77 PHP_FUNCTION(get_magic_quotes_gpc);
78 
79 PHP_FUNCTION(error_log);
80 PHP_FUNCTION(error_get_last);
81 
82 PHP_FUNCTION(call_user_func);
83 PHP_FUNCTION(call_user_func_array);
84 PHP_FUNCTION(call_user_method);
85 PHP_FUNCTION(call_user_method_array);
86 PHP_FUNCTION(forward_static_call);
87 PHP_FUNCTION(forward_static_call_array);
88 
89 PHP_FUNCTION(register_shutdown_function);
90 PHP_FUNCTION(highlight_file);
91 PHP_FUNCTION(highlight_string);
92 PHP_FUNCTION(php_strip_whitespace);
93 ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini);
94 
95 PHP_FUNCTION(ini_get);
96 PHP_FUNCTION(ini_get_all);
97 PHP_FUNCTION(ini_set);
98 PHP_FUNCTION(ini_restore);
99 PHP_FUNCTION(get_include_path);
100 PHP_FUNCTION(set_include_path);
101 PHP_FUNCTION(restore_include_path);
102 
103 PHP_FUNCTION(print_r);
104 PHP_FUNCTION(fprintf);
105 PHP_FUNCTION(vfprintf);
106 
107 PHP_FUNCTION(connection_aborted);
108 PHP_FUNCTION(connection_status);
109 PHP_FUNCTION(ignore_user_abort);
110 
111 PHP_FUNCTION(getservbyname);
112 PHP_FUNCTION(getservbyport);
113 PHP_FUNCTION(getprotobyname);
114 PHP_FUNCTION(getprotobynumber);
115 
116 PHP_NAMED_FUNCTION(php_if_crc32);
117 
118 PHP_FUNCTION(register_tick_function);
119 PHP_FUNCTION(unregister_tick_function);
120 #ifdef HAVE_GETLOADAVG
121 PHP_FUNCTION(sys_getloadavg);
122 #endif
123 
124 PHP_FUNCTION(is_uploaded_file);
125 PHP_FUNCTION(move_uploaded_file);
126 
127 /* From the INI parser */
128 PHP_FUNCTION(parse_ini_file);
129 PHP_FUNCTION(parse_ini_string);
130 #if ZEND_DEBUG
131 PHP_FUNCTION(config_get_hash);
132 #endif
133 
134 PHP_FUNCTION(str_rot13);
135 PHP_FUNCTION(stream_get_filters);
136 PHP_FUNCTION(stream_filter_register);
137 PHP_FUNCTION(stream_bucket_make_writeable);
138 PHP_FUNCTION(stream_bucket_prepend);
139 PHP_FUNCTION(stream_bucket_append);
140 PHP_FUNCTION(stream_bucket_new);
141 PHP_MINIT_FUNCTION(user_filters);
142 PHP_RSHUTDOWN_FUNCTION(user_filters);
143 PHP_RSHUTDOWN_FUNCTION(browscap);
144 
145 /* Left for BC (not binary safe!) */
146 PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC);
147 PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC);
148 PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, int var_name_len, zend_bool add_underscore TSRMLS_DC);
149 
150 #if SIZEOF_INT == 4
151 /* Most 32-bit and 64-bit systems have 32-bit ints */
152 typedef unsigned int php_uint32;
153 typedef signed int php_int32;
154 #elif SIZEOF_LONG == 4
155 /* 16-bit systems? */
156 typedef unsigned long php_uint32;
157 typedef signed long php_int32;
158 #else
159 #error Need type which holds 32 bits
160 #endif
161 
162 #define MT_N (624)
163 
164 typedef struct _php_basic_globals {
165 	HashTable *user_shutdown_function_names;
166 	HashTable putenv_ht;
167 	zval *strtok_zval;
168 	char *strtok_string;
169 	char *locale_string;
170 	char *strtok_last;
171 	char strtok_table[256];
172 	ulong strtok_len;
173 	char str_ebuf[40];
174 	zend_fcall_info array_walk_fci;
175 	zend_fcall_info_cache array_walk_fci_cache;
176 	zend_fcall_info user_compare_fci;
177 	zend_fcall_info_cache user_compare_fci_cache;
178 	zend_llist *user_tick_functions;
179 
180 	zval *active_ini_file_section;
181 
182 	/* pageinfo.c */
183 	long page_uid;
184 	long page_gid;
185 	long page_inode;
186 	time_t page_mtime;
187 
188 	/* filestat.c && main/streams/streams.c */
189 	char *CurrentStatFile, *CurrentLStatFile;
190 	php_stream_statbuf ssb, lssb;
191 
192 	/* rand.c */
193 	php_uint32   state[MT_N+1];  /* state vector + 1 extra to not violate ANSI C */
194 	php_uint32   *next;       /* next random value is computed from here */
195 	int      left;        /* can *next++ this many times before reloading */
196 
197 	unsigned int rand_seed; /* Seed for rand(), in ts version */
198 
199 	zend_bool rand_is_seeded; /* Whether rand() has been seeded */
200 	zend_bool mt_rand_is_seeded; /* Whether mt_rand() has been seeded */
201 
202 	/* syslog.c */
203 	char *syslog_device;
204 
205 	/* var.c */
206 	zend_class_entry *incomplete_class;
207 	unsigned serialize_lock; /* whether to use the locally supplied var_hash instead (__sleep/__wakeup) */
208 	struct {
209 		void *var_hash;
210 		unsigned level;
211 	} serialize;
212 	struct {
213 		void *var_hash;
214 		unsigned level;
215 	} unserialize;
216 
217 	/* url_scanner_ex.re */
218 	url_adapt_state_ex_t url_adapt_state_ex;
219 
220 #ifdef HAVE_MMAP
221 	void *mmap_file;
222 	size_t mmap_len;
223 #endif
224 
225 	HashTable *user_filter_map;
226 
227 	/* file.c */
228 #if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
229 	mbstate_t mblen_state;
230 #endif
231 
232 	int umask;
233 } php_basic_globals;
234 
235 #ifdef ZTS
236 #define BG(v) TSRMG(basic_globals_id, php_basic_globals *, v)
237 PHPAPI extern int basic_globals_id;
238 #else
239 #define BG(v) (basic_globals.v)
240 PHPAPI extern php_basic_globals basic_globals;
241 #endif
242 
243 #if HAVE_PUTENV
244 typedef struct {
245 	char *putenv_string;
246 	char *previous_value;
247 	char *key;
248 	int key_len;
249 } putenv_entry;
250 #endif
251 
252 PHPAPI double php_get_nan(void);
253 PHPAPI double php_get_inf(void);
254 
255 typedef struct _php_shutdown_function_entry {
256 	zval **arguments;
257 	int arg_count;
258 } php_shutdown_function_entry;
259 
260 PHPAPI extern zend_bool register_user_shutdown_function(char *function_name, size_t function_len, php_shutdown_function_entry *shutdown_function_entry TSRMLS_DC);
261 PHPAPI extern zend_bool remove_user_shutdown_function(char *function_name, size_t function_len TSRMLS_DC);
262 PHPAPI extern zend_bool append_user_shutdown_function(php_shutdown_function_entry shutdown_function_entry TSRMLS_DC);
263 
264 #endif /* BASIC_FUNCTIONS_H */
265