Skip to content

Commit 49bac9b

Browse files
committed
Introduce zend_stream_init_filename()
Avoid more ad-hoc initialization of zend_file_handle structures.
1 parent 46faf8f commit 49bac9b

File tree

13 files changed

+29
-88
lines changed

13 files changed

+29
-88
lines changed

Zend/zend_language_scanner.l

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -659,11 +659,7 @@ zend_op_array *compile_filename(int type, zval *filename)
659659
ZVAL_STR(&tmp, zval_get_string(filename));
660660
filename = &tmp;
661661
}
662-
file_handle.filename = Z_STRVAL_P(filename);
663-
file_handle.free_filename = 0;
664-
file_handle.type = ZEND_HANDLE_FILENAME;
665-
file_handle.opened_path = NULL;
666-
file_handle.handle.fp = NULL;
662+
zend_stream_init_filename(&file_handle, Z_STRVAL_P(filename));
667663

668664
retval = zend_compile_file(&file_handle, type);
669665
if (retval && file_handle.handle.stream.handle) {
@@ -789,10 +785,7 @@ int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlight
789785
zend_lex_state original_lex_state;
790786
zend_file_handle file_handle;
791787

792-
file_handle.type = ZEND_HANDLE_FILENAME;
793-
file_handle.filename = filename;
794-
file_handle.free_filename = 0;
795-
file_handle.opened_path = NULL;
788+
zend_stream_init_filename(&file_handle, filename);
796789
zend_save_lexical_state(&original_lex_state);
797790
if (open_file_for_scanning(&file_handle)==FAILURE) {
798791
zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename);

Zend/zend_stream.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ ZEND_API void zend_stream_init_fp(zend_file_handle *handle, FILE *fp, const char
101101
handle->filename = filename;
102102
}
103103

104+
ZEND_API void zend_stream_init_filename(zend_file_handle *handle, const char *filename) {
105+
memset(handle, 0, sizeof(zend_file_handle));
106+
handle->type = ZEND_HANDLE_FILENAME;
107+
handle->filename = filename;
108+
}
109+
104110
ZEND_API int zend_stream_open(const char *filename, zend_file_handle *handle) /* {{{ */
105111
{
106112
if (zend_stream_open_function) {

Zend/zend_stream.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ typedef struct _zend_file_handle {
7070

7171
BEGIN_EXTERN_C()
7272
ZEND_API void zend_stream_init_fp(zend_file_handle *handle, FILE *fp, const char *filename);
73+
ZEND_API void zend_stream_init_filename(zend_file_handle *handle, const char *filename);
7374
ZEND_API int zend_stream_open(const char *filename, zend_file_handle *handle);
7475
ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t *len);
7576
ZEND_API void zend_file_handle_dtor(zend_file_handle *fh);

ext/opcache/ZendAccelerator.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,8 +1071,7 @@ static inline int do_validate_timestamps(zend_persistent_script *persistent_scri
10711071
file_handle->opened_path = NULL;
10721072
}
10731073

1074-
ps_handle.type = ZEND_HANDLE_FILENAME;
1075-
ps_handle.filename = ZSTR_VAL(persistent_script->script.filename);
1074+
zend_stream_init_filename(&ps_handle, ZSTR_VAL(persistent_script->script.filename));
10761075
ps_handle.opened_path = persistent_script->script.filename;
10771076

10781077
if (zend_get_file_handle_timestamp(&ps_handle, NULL) == persistent_script->timestamp) {
@@ -1297,9 +1296,7 @@ int zend_accel_invalidate(const char *filename, size_t filename_len, zend_bool f
12971296
persistent_script = zend_accel_hash_find(&ZCSG(hash), realpath);
12981297
if (persistent_script && !persistent_script->corrupted) {
12991298
zend_file_handle file_handle;
1300-
1301-
file_handle.type = ZEND_HANDLE_FILENAME;
1302-
file_handle.filename = ZSTR_VAL(realpath);
1299+
zend_stream_init_filename(&file_handle, ZSTR_VAL(realpath));
13031300
file_handle.opened_path = realpath;
13041301

13051302
if (force ||
@@ -2198,10 +2195,8 @@ static int persistent_stream_open_function(const char *filename, zend_file_handl
21982195
ZCG(cache_opline) == EG(current_execute_data)->opline)) {
21992196

22002197
/* we are in include_once or FastCGI request */
2201-
handle->filename = (char*)filename;
2202-
handle->free_filename = 0;
2198+
zend_stream_init_filename(handle, (char*) filename);
22032199
handle->opened_path = zend_string_copy(ZCG(cache_persistent_script)->script.filename);
2204-
handle->type = ZEND_HANDLE_FILENAME;
22052200
return SUCCESS;
22062201
}
22072202
ZCG(cache_opline) = NULL;
@@ -4139,12 +4134,7 @@ static int accel_preload(const char *config)
41394134
orig_map_ptr_last = CG(map_ptr_last);
41404135

41414136
/* Compile and execute proloading script */
4142-
memset(&file_handle, 0, sizeof(file_handle));
4143-
file_handle.filename = (char*)config;
4144-
file_handle.free_filename = 0;
4145-
file_handle.type = ZEND_HANDLE_FILENAME;
4146-
file_handle.opened_path = NULL;
4147-
file_handle.handle.fp = NULL;
4137+
zend_stream_init_filename(&file_handle, (char *) config);
41484138

41494139
preload_scripts = emalloc(sizeof(HashTable));
41504140
zend_hash_init(preload_scripts, 0, NULL, NULL, 0);

ext/opcache/zend_accelerator_module.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -332,12 +332,9 @@ static int filename_is_in_cache(zend_string *filename)
332332
if (key != NULL) {
333333
zend_persistent_script *persistent_script = zend_accel_hash_str_find(&ZCSG(hash), key, key_length);
334334
if (persistent_script && !persistent_script->corrupted) {
335-
zend_file_handle handle = {{0}, NULL, NULL, 0, 0};
336-
337-
handle.filename = ZSTR_VAL(filename);
338-
handle.type = ZEND_HANDLE_FILENAME;
339-
340335
if (ZCG(accel_directives).validate_timestamps) {
336+
zend_file_handle handle;
337+
zend_stream_init_filename(&handle, ZSTR_VAL(filename));
341338
return validate_timestamp_and_record_ex(persistent_script, &handle) == SUCCESS;
342339
}
343340

@@ -849,10 +846,7 @@ static ZEND_FUNCTION(opcache_compile_file)
849846
return;
850847
}
851848

852-
handle.filename = script_name;
853-
handle.free_filename = 0;
854-
handle.opened_path = NULL;
855-
handle.type = ZEND_HANDLE_FILENAME;
849+
zend_stream_init_filename(&handle, script_name);
856850

857851
orig_execute_data = EG(current_execute_data);
858852
orig_compiler_options = CG(compiler_options);

ext/phar/phar_object.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,7 @@ static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char
219219
name_len = spprintf(&name, 4096, "phar://%s/%s", arch, entry);
220220
}
221221

222-
file_handle.type = ZEND_HANDLE_FILENAME;
223-
file_handle.filename = name;
224-
file_handle.opened_path = NULL;
225-
file_handle.free_filename = 0;
222+
zend_stream_init_filename(&file_handle, name);
226223

227224
PHAR_G(cwd) = NULL;
228225
PHAR_G(cwd_len) = 0;

ext/readline/readline_cli.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -592,17 +592,9 @@ static int readline_shell_run(void) /* {{{ */
592592
int history_lines_to_write = 0;
593593

594594
if (PG(auto_prepend_file) && PG(auto_prepend_file)[0]) {
595-
zend_file_handle *prepend_file_p;
596595
zend_file_handle prepend_file;
597-
598-
memset(&prepend_file, 0, sizeof(prepend_file));
599-
prepend_file.filename = PG(auto_prepend_file);
600-
prepend_file.opened_path = NULL;
601-
prepend_file.free_filename = 0;
602-
prepend_file.type = ZEND_HANDLE_FILENAME;
603-
prepend_file_p = &prepend_file;
604-
605-
zend_execute_scripts(ZEND_REQUIRE, NULL, 1, prepend_file_p);
596+
zend_stream_init_filename(&prepend_file, PG(auto_prepend_file));
597+
zend_execute_scripts(ZEND_REQUIRE, NULL, 1, &prepend_file);
606598
}
607599

608600
#ifndef PHP_WIN32

ext/standard/basic_functions.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5315,11 +5315,7 @@ PHP_FUNCTION(php_strip_whitespace)
53155315

53165316
php_output_start_default();
53175317

5318-
memset(&file_handle, 0, sizeof(file_handle));
5319-
file_handle.type = ZEND_HANDLE_FILENAME;
5320-
file_handle.filename = filename;
5321-
file_handle.free_filename = 0;
5322-
file_handle.opened_path = NULL;
5318+
zend_stream_init_filename(&file_handle, filename);
53235319
zend_save_lexical_state(&original_lex_state);
53245320
if (open_file_for_scanning(&file_handle) == FAILURE) {
53255321
zend_restore_lexical_state(&original_lex_state);
@@ -6082,9 +6078,7 @@ PHP_FUNCTION(parse_ini_file)
60826078
}
60836079

60846080
/* Setup filehandle */
6085-
memset(&fh, 0, sizeof(fh));
6086-
fh.filename = filename;
6087-
fh.type = ZEND_HANDLE_FILENAME;
6081+
zend_stream_init_filename(&fh, filename);
60886082

60896083
array_init(return_value);
60906084
if (zend_parse_ini_file(&fh, 0, (int)scanner_mode, ini_parser_cb, return_value) == FAILURE) {

main/main.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2517,7 +2517,7 @@ void php_module_shutdown(void)
25172517
PHPAPI int php_execute_script(zend_file_handle *primary_file)
25182518
{
25192519
zend_file_handle *prepend_file_p, *append_file_p;
2520-
zend_file_handle prepend_file = {{0}, NULL, NULL, 0, 0}, append_file = {{0}, NULL, NULL, 0, 0};
2520+
zend_file_handle prepend_file, append_file;
25212521
#if HAVE_BROKEN_GETCWD
25222522
volatile int old_cwd_fd = -1;
25232523
#else
@@ -2569,20 +2569,14 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file)
25692569
}
25702570

25712571
if (PG(auto_prepend_file) && PG(auto_prepend_file)[0]) {
2572-
prepend_file.filename = PG(auto_prepend_file);
2573-
prepend_file.opened_path = NULL;
2574-
prepend_file.free_filename = 0;
2575-
prepend_file.type = ZEND_HANDLE_FILENAME;
2572+
zend_stream_init_filename(&prepend_file, PG(auto_prepend_file));
25762573
prepend_file_p = &prepend_file;
25772574
} else {
25782575
prepend_file_p = NULL;
25792576
}
25802577

25812578
if (PG(auto_append_file) && PG(auto_append_file)[0]) {
2582-
append_file.filename = PG(auto_append_file);
2583-
append_file.opened_path = NULL;
2584-
append_file.free_filename = 0;
2585-
append_file.type = ZEND_HANDLE_FILENAME;
2579+
zend_stream_init_filename(&append_file, PG(auto_append_file));
25862580
append_file_p = &append_file;
25872581
} else {
25882582
append_file_p = NULL;

sapi/apache2handler/sapi_apache2.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -694,11 +694,7 @@ zend_first_try {
694694
highlight_file((char *)r->filename, &syntax_highlighter_ini);
695695
} else {
696696
zend_file_handle zfd;
697-
698-
zfd.type = ZEND_HANDLE_FILENAME;
699-
zfd.filename = (char *) r->filename;
700-
zfd.free_filename = 0;
701-
zfd.opened_path = NULL;
697+
zend_stream_init_filename(&zfd, (char *) r->filename);
702698

703699
if (!parent_req) {
704700
php_execute_script(&zfd);

sapi/cgi/cgi_main.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2476,11 +2476,7 @@ consult the installation file that came with this distribution, or visit \n\
24762476
we need in the environment.
24772477
*/
24782478
if (SG(request_info).path_translated || cgi || fastcgi) {
2479-
file_handle.type = ZEND_HANDLE_FILENAME;
2480-
file_handle.filename = SG(request_info).path_translated;
2481-
file_handle.handle.fp = NULL;
2482-
file_handle.opened_path = NULL;
2483-
file_handle.free_filename = 0;
2479+
zend_stream_init_filename(&file_handle, SG(request_info).path_translated);
24842480
} else {
24852481
zend_stream_init_fp(&file_handle, stdin, "Standard input code");
24862482
}

sapi/cli/php_cli_server.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,11 +2072,7 @@ static int php_cli_server_dispatch_script(php_cli_server *server, php_cli_server
20722072
}
20732073
{
20742074
zend_file_handle zfd;
2075-
zfd.type = ZEND_HANDLE_FILENAME;
2076-
zfd.filename = SG(request_info).path_translated;
2077-
zfd.handle.fp = NULL;
2078-
zfd.free_filename = 0;
2079-
zfd.opened_path = NULL;
2075+
zend_stream_init_filename(&zfd, SG(request_info).path_translated);
20802076
zend_try {
20812077
php_execute_script(&zfd);
20822078
} zend_end_try();
@@ -2197,11 +2193,7 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
21972193
old_cwd[0] = '\0';
21982194
php_ignore_value(VCWD_GETCWD(old_cwd, MAXPATHLEN - 1));
21992195

2200-
zfd.type = ZEND_HANDLE_FILENAME;
2201-
zfd.filename = server->router;
2202-
zfd.handle.fp = NULL;
2203-
zfd.free_filename = 0;
2204-
zfd.opened_path = NULL;
2196+
zend_stream_init_filename(&zfd, server->router);
22052197

22062198
zend_try {
22072199
zval retval;

sapi/litespeed/lsapi_main.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -657,11 +657,7 @@ static int lsapi_execute_script( zend_file_handle * file_handle)
657657
{
658658
char *p;
659659
int len;
660-
file_handle->type = ZEND_HANDLE_FILENAME;
661-
file_handle->handle.fd = 0;
662-
file_handle->filename = SG(request_info).path_translated;
663-
file_handle->free_filename = 0;
664-
file_handle->opened_path = NULL;
660+
zend_stream_init_filename(file_handle, SG(request_info).path_translated);
665661

666662
p = argv0;
667663
*p++ = ':';

0 commit comments

Comments
 (0)