static FILE *php_fopen_url_wrapper(const char *, char *, int, int *, int *, char **);
-PHPAPI char *expand_filepath(const char *filepath, char *real_path);
-
-
HashTable fopen_url_wrappers_hash;
/* {{{ php_register_url_wrapper
}
fp = VCWD_FOPEN(path, mode);
if (fp && opened_path) {
- *opened_path = expand_filepath(path,NULL);
+ *opened_path = expand_filepath(path, NULL);
}
return fp;
}
/* {{{ php_fopen_primary_script
*/
-PHPAPI FILE *php_fopen_primary_script(void)
+PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle)
{
FILE *fp;
struct stat st;
we're not adding it in this case */
STR_FREE(SG(request_info).path_translated);
SG(request_info).path_translated = NULL;
- return NULL;
+ file_handle->handle.fp = NULL;
+ return FAILURE;
}
fp = VCWD_FOPEN(filename, "rb");
if (!fp) {
php_error(E_ERROR, "Unable to open %s", filename);
STR_FREE(SG(request_info).path_translated); /* for same reason as above */
- return NULL;
+ file_handle->handle.fp = NULL;
+ return FAILURE;
}
+
+ file_handle->opened_path = expand_filepath(filename, NULL);
+
if (!(SG(options) & SAPI_OPTION_NO_CHDIR)) {
VCWD_CHDIR_FILE(filename);
}
SG(request_info).path_translated = filename;
- return fp;
+ file_handle->filename = SG(request_info).path_translated;
+ file_handle->free_filename = 0;
+ file_handle->handle.fp = fp;
+ file_handle->type = ZEND_HANDLE_FP;
+
+ return SUCCESS;
}
/* }}} */
if(real_path) {
int copy_len = new_state.cwd_length>MAXPATHLEN-1?MAXPATHLEN-1:new_state.cwd_length;
- memcpy(real_path,new_state.cwd,copy_len);
+ memcpy(real_path, new_state.cwd, copy_len);
real_path[copy_len]='\0';
} else {
real_path = estrndup(new_state.cwd, new_state.cwd_length);
PHPAPI FILE *php_fopen_wrapper(char *filename, char *mode, int options, int *issock, int *socketd, char **opened_path);
-PHPAPI FILE *php_fopen_primary_script(void);
+PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle);
+PHPAPI char *expand_filepath(const char *filepath, char *real_path);
PHPAPI int php_check_open_basedir(char *path);
PHPAPI int php_check_specific_open_basedir(char *basedir, char *path PLS_DC);
int exit_status = SUCCESS;
int cgi = 0, c, i, len;
zend_file_handle file_handle;
+ int retval = FAILURE;
char *s;
/* temporary locals */
int behavior=PHP_MODE_STANDARD;
file_handle.type = ZEND_HANDLE_FP;
file_handle.handle.fp = stdin;
file_handle.opened_path = NULL;
+ file_handle.free_filename = 0;
/* This actually destructs the elements of the list - ugly hack */
zend_llist_apply(&global_vars, (llist_apply_func_t) php_register_command_line_global_vars);
}
}
if (cgi || SG(request_info).path_translated) {
- file_handle.handle.fp = php_fopen_primary_script();
- file_handle.filename = SG(request_info).path_translated;
+ retval = php_fopen_primary_script(&file_handle);
}
- if (cgi && !file_handle.handle.fp) {
+ if (cgi && (retval == FAILURE)) {
if(!argv0 || !(file_handle.handle.fp = VCWD_FOPEN(argv0, "rb"))) {
PUTS("No input file specified.\n");
php_request_shutdown((void *) 0);
return FAILURE;
}
file_handle.filename = argv0;
- } else if (file_handle.handle.fp && file_handle.handle.fp!=stdin) {
+ file_handle.opened_path = expand_filepath(argv0, NULL);
+ } else if (retval == SUCCESS) {
/* #!php support */
c = fgetc(file_handle.handle.fp);
if (c == '#') {
}
}
- file_handle.free_filename = 0;
switch (behavior) {
case PHP_MODE_STANDARD:
exit_status = php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
jstring authUser, jboolean display_source_mode)
{
zend_file_handle file_handle;
+ int retval;
#ifndef VIRTUAL_DIR
char cwd[MAXPATHLEN];
#endif
*/
SETSTRING( SG(request_info).path_translated, pathTranslated );
#ifdef VIRTUAL_DIR
- file_handle.handle.fp = php_fopen_primary_script();
+ retval = php_fopen_primary_script(&file_handle);
#else
/*
* The java runtime doesn't like the working directory to be
* in the hopes that Java doesn't notice.
*/
getcwd(cwd,MAXPATHLEN);
- file_handle.handle.fp = php_fopen_primary_script();
+ retval = php_fopen_primary_script(&file_handle);
chdir(cwd);
#endif
- file_handle.filename = SG(request_info).path_translated;
- file_handle.opened_path = NULL;
- file_handle.free_filename = 0;
- file_handle.type = ZEND_HANDLE_FP;
-
- if (!file_handle.handle.fp) {
+
+ if (retval == FAILURE) {
php_request_shutdown((void *) 0);
php_module_shutdown();
ThrowIOException(jenv,file_handle.filename);
if (open_file_for_scanning(&file_handle CLS_CC)==SUCCESS) {
php_get_highlight_struct(&syntax_highlighter_ini);
- sapi_send_headers();
+ sapi_send_headers();
zend_highlight(&syntax_highlighter_ini);
}
} else {