1 /* 2 +----------------------------------------------------------------------+ 3 | PHP Version 7 | 4 +----------------------------------------------------------------------+ 5 | Copyright (c) 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 | Author: Rasmus Lerdorf <rasmus@lerdorf.on.ca> | 16 +----------------------------------------------------------------------+ 17 */ 18 19 #ifndef FILE_H 20 #define FILE_H 21 22 #include "php_network.h" 23 24 PHP_MINIT_FUNCTION(file); 25 PHP_MSHUTDOWN_FUNCTION(file); 26 27 PHP_FUNCTION(tempnam); 28 PHP_NAMED_FUNCTION(php_if_tmpfile); 29 PHP_NAMED_FUNCTION(php_if_fopen); 30 PHPAPI PHP_FUNCTION(fclose); 31 PHP_FUNCTION(popen); 32 PHP_FUNCTION(pclose); 33 PHPAPI PHP_FUNCTION(feof); 34 PHPAPI PHP_FUNCTION(fread); 35 PHPAPI PHP_FUNCTION(fgetc); 36 PHPAPI PHP_FUNCTION(fgets); 37 PHP_FUNCTION(fscanf); 38 PHPAPI PHP_FUNCTION(fgetss); 39 PHP_FUNCTION(fgetcsv); 40 PHP_FUNCTION(fputcsv); 41 PHPAPI PHP_FUNCTION(fwrite); 42 PHPAPI PHP_FUNCTION(fflush); 43 PHPAPI PHP_FUNCTION(rewind); 44 PHPAPI PHP_FUNCTION(ftell); 45 PHPAPI PHP_FUNCTION(fseek); 46 PHP_FUNCTION(mkdir); 47 PHP_FUNCTION(rmdir); 48 PHPAPI PHP_FUNCTION(fpassthru); 49 PHP_FUNCTION(readfile); 50 PHP_FUNCTION(umask); 51 PHP_FUNCTION(rename); 52 PHP_FUNCTION(unlink); 53 PHP_FUNCTION(copy); 54 PHP_FUNCTION(file); 55 PHP_FUNCTION(file_get_contents); 56 PHP_FUNCTION(file_put_contents); 57 PHP_FUNCTION(get_meta_tags); 58 PHP_FUNCTION(flock); 59 PHP_FUNCTION(fd_set); 60 PHP_FUNCTION(fd_isset); 61 #if HAVE_REALPATH || defined(ZTS) 62 PHP_FUNCTION(realpath); 63 #endif 64 #ifdef HAVE_FNMATCH 65 PHP_FUNCTION(fnmatch); 66 #endif 67 PHP_NAMED_FUNCTION(php_if_ftruncate); 68 PHP_NAMED_FUNCTION(php_if_fstat); 69 PHP_FUNCTION(sys_get_temp_dir); 70 71 PHP_MINIT_FUNCTION(user_streams); 72 73 PHPAPI int php_le_stream_context(void); 74 PHPAPI int php_set_sock_blocking(php_socket_t socketd, int block); 75 PHPAPI int php_copy_file(const char *src, const char *dest); 76 PHPAPI int php_copy_file_ex(const char *src, const char *dest, int src_chk); 77 PHPAPI int php_copy_file_ctx(const char *src, const char *dest, int src_chk, php_stream_context *ctx); 78 PHPAPI int php_mkdir_ex(const char *dir, zend_long mode, int options); 79 PHPAPI int php_mkdir(const char *dir, zend_long mode); 80 81 #define PHP_CSV_NO_ESCAPE EOF 82 PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, int escape_char, size_t buf_len, char *buf, zval *return_value); 83 PHPAPI ssize_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, int escape_char); 84 85 #define META_DEF_BUFSIZE 8192 86 87 #define PHP_FILE_USE_INCLUDE_PATH 1 88 #define PHP_FILE_IGNORE_NEW_LINES 2 89 #define PHP_FILE_SKIP_EMPTY_LINES 4 90 #define PHP_FILE_APPEND 8 91 #define PHP_FILE_NO_DEFAULT_CONTEXT 16 92 93 typedef enum _php_meta_tags_token { 94 TOK_EOF = 0, 95 TOK_OPENTAG, 96 TOK_CLOSETAG, 97 TOK_SLASH, 98 TOK_EQUAL, 99 TOK_SPACE, 100 TOK_ID, 101 TOK_STRING, 102 TOK_OTHER 103 } php_meta_tags_token; 104 105 typedef struct _php_meta_tags_data { 106 php_stream *stream; 107 int ulc; 108 int lc; 109 char *input_buffer; 110 char *token_data; 111 int token_len; 112 int in_meta; 113 } php_meta_tags_data; 114 115 php_meta_tags_token php_next_meta_token(php_meta_tags_data *); 116 117 typedef struct { 118 int pclose_ret; 119 size_t def_chunk_size; 120 zend_bool auto_detect_line_endings; 121 zend_long default_socket_timeout; 122 char *user_agent; /* for the http wrapper */ 123 char *from_address; /* for the ftp and http wrappers */ 124 const char *user_stream_current_filename; /* for simple recursion protection */ 125 php_stream_context *default_context; 126 HashTable *stream_wrappers; /* per-request copy of url_stream_wrappers_hash */ 127 HashTable *stream_filters; /* per-request copy of stream_filters_hash */ 128 HashTable *wrapper_errors; /* key: wrapper address; value: linked list of char* */ 129 int pclose_wait; 130 #if defined(HAVE_GETHOSTBYNAME_R) 131 struct hostent tmp_host_info; 132 char *tmp_host_buf; 133 size_t tmp_host_buf_len; 134 #endif 135 } php_file_globals; 136 137 #ifdef ZTS 138 #define FG(v) ZEND_TSRMG(file_globals_id, php_file_globals *, v) 139 extern PHPAPI int file_globals_id; 140 #else 141 #define FG(v) (file_globals.v) 142 extern PHPAPI php_file_globals file_globals; 143 #endif 144 145 146 #endif /* FILE_H */ 147