mirror of
https://github.com/php/php-src.git
synced 2024-11-27 20:03:40 +08:00
More thread safety work
This commit is contained in:
parent
7a87fcbbda
commit
c5af324ec3
@ -1732,6 +1732,7 @@ void php3_call_user_method(INTERNAL_FUNCTION_PARAMETERS)
|
||||
pval **params;
|
||||
pval retval;
|
||||
int arg_count=ARG_COUNT(ht);
|
||||
CLS_FETCH();
|
||||
|
||||
if (arg_count<2) {
|
||||
WRONG_PARAM_COUNT;
|
||||
|
@ -342,6 +342,7 @@ PHP_FUNCTION(shell_exec)
|
||||
FILE *in;
|
||||
int readbytes,total_readbytes=0,allocated_space;
|
||||
pval *cmd;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &cmd)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "tls.h"
|
||||
#endif
|
||||
#include "php.h"
|
||||
#include "php_globals.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -126,8 +127,8 @@ extern int le_uploads;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
char *
|
||||
tempnam(const char *dir, const char *pfx)
|
||||
|
||||
char *tempnam(const char *dir, const char *pfx)
|
||||
{
|
||||
int save_errno;
|
||||
char *f, *name;
|
||||
@ -172,6 +173,7 @@ tempnam(const char *dir, const char *pfx)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
function_entry php3_file_functions[] = {
|
||||
{"pclose", php3_pclose, NULL},
|
||||
{"popen", php3_popen, NULL},
|
||||
@ -208,9 +210,11 @@ php3_module_entry php3_file_module_entry = {
|
||||
"PHP_file", php3_file_functions, php3_minit_file, NULL, NULL, NULL, NULL, STANDARD_MODULE_PROPERTIES
|
||||
};
|
||||
|
||||
|
||||
/* {{{ proto array get_meta_tags(string filename [, int use_include_path])
|
||||
Extracts all meta tag content attributes from a file and returns an array */
|
||||
void php3_get_meta_tags(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_get_meta_tags(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *filename, *arg2;
|
||||
FILE *fp;
|
||||
char buf[8192];
|
||||
@ -222,20 +226,20 @@ void php3_get_meta_tags(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
|
||||
/* check args */
|
||||
switch (ARG_COUNT(ht)) {
|
||||
case 1:
|
||||
if (getParameters(ht,1,&filename) == FAILURE) {
|
||||
case 1:
|
||||
if (getParameters(ht,1,&filename) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (getParameters(ht,2,&filename,&arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg2);
|
||||
use_include_path = arg2->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (getParameters(ht,2,&filename,&arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg2);
|
||||
use_include_path = arg2->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_string(filename);
|
||||
|
||||
@ -337,9 +341,11 @@ void php3_get_meta_tags(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto array file(string filename)
|
||||
Read entire file into an array */
|
||||
void php3_file(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_file(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *filename, *arg2;
|
||||
FILE *fp;
|
||||
char *slashed, buf[8192];
|
||||
@ -350,20 +356,20 @@ void php3_file(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
|
||||
/* check args */
|
||||
switch (ARG_COUNT(ht)) {
|
||||
case 1:
|
||||
if (getParameters(ht,1,&filename) == FAILURE) {
|
||||
case 1:
|
||||
if (getParameters(ht,1,&filename) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (getParameters(ht,2,&filename,&arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg2);
|
||||
use_include_path = arg2->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (getParameters(ht,2,&filename,&arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg2);
|
||||
use_include_path = arg2->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_string(filename);
|
||||
|
||||
@ -408,10 +414,10 @@ void php3_file(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
|
||||
static void __pclose(FILE *pipe)
|
||||
{
|
||||
TLS_VARS;
|
||||
GLOBAL(pclose_ret) = pclose(pipe);
|
||||
}
|
||||
|
||||
|
||||
static void _php3_closesocket(int *sock) {
|
||||
int socketd=*sock;
|
||||
if (socketd){
|
||||
@ -424,16 +430,17 @@ static void _php3_closesocket(int *sock) {
|
||||
}
|
||||
}
|
||||
|
||||
static void _php3_unlink_uploaded_file(char *file) {
|
||||
|
||||
static void _php3_unlink_uploaded_file(char *file)
|
||||
{
|
||||
if(file) {
|
||||
unlink(file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int php3_minit_file(INIT_FUNC_ARGS)
|
||||
{
|
||||
TLS_VARS;
|
||||
|
||||
GLOBAL(le_fp) = register_list_destructors(fclose,NULL);
|
||||
GLOBAL(le_pp) = register_list_destructors(__pclose,NULL);
|
||||
GLOBAL(wsa_fp) = register_list_destructors(_php3_closesocket,NULL);
|
||||
@ -441,14 +448,15 @@ int php3_minit_file(INIT_FUNC_ARGS)
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* {{{ proto string tempnam(string dir, string prefix)
|
||||
Create a unique filename in a directory */
|
||||
void php3_tempnam(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_tempnam(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
char *d;
|
||||
char *t;
|
||||
char p[64];
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -464,9 +472,11 @@ void php3_tempnam(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int fopen(string filename, string mode [, int use_include_path])
|
||||
Open a file or a URL and return a file pointer */
|
||||
void php3_fopen(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_fopen(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2, *arg3;
|
||||
FILE *fp;
|
||||
char *p;
|
||||
@ -474,23 +484,22 @@ void php3_fopen(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
int id;
|
||||
int use_include_path = 0;
|
||||
int issock=0, socketd=0;
|
||||
TLS_VARS;
|
||||
|
||||
switch(ARG_COUNT(ht)) {
|
||||
case 2:
|
||||
if (getParameters(ht,2,&arg1,&arg2) == FAILURE) {
|
||||
case 2:
|
||||
if (getParameters(ht,2,&arg1,&arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht,3,&arg1,&arg2,&arg3) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg3);
|
||||
use_include_path = arg3->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht,3,&arg1,&arg2,&arg3) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(arg3);
|
||||
use_include_path = arg3->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_string(arg1);
|
||||
convert_to_string(arg2);
|
||||
@ -523,13 +532,14 @@ void php3_fopen(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int fclose(int fp)
|
||||
Close an open file pointer */
|
||||
void php3_fclose(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_fclose(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int id, type;
|
||||
FILE *fp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -546,15 +556,17 @@ void php3_fclose(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int popen(string command, string mode)
|
||||
Execute a command and open either a read or a write pipe to it */
|
||||
void php3_popen(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_popen(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
FILE *fp;
|
||||
int id;
|
||||
char *p;
|
||||
char *b, buf[1024];
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -563,47 +575,51 @@ void php3_popen(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
convert_to_string(arg2);
|
||||
p = estrndup(arg2->value.str.val,arg2->value.str.len);
|
||||
if (PG(safe_mode)){
|
||||
b = strchr(arg1->value.str.val,' ');
|
||||
if (!b) {
|
||||
b = strrchr(arg1->value.str.val,'/');
|
||||
b = strchr(arg1->value.str.val,' ');
|
||||
if (!b) {
|
||||
b = strrchr(arg1->value.str.val,'/');
|
||||
} else {
|
||||
char *c;
|
||||
c = arg1->value.str.val;
|
||||
while((*b!='/')&&(b!=c)) {
|
||||
b--;
|
||||
}
|
||||
if (b==c) {
|
||||
b=NULL;
|
||||
}
|
||||
}
|
||||
if (b) {
|
||||
snprintf(buf,sizeof(buf),"%s%s",PG(safe_mode_exec_dir),b);
|
||||
} else {
|
||||
snprintf(buf,sizeof(buf),"%s/%s",PG(safe_mode_exec_dir),arg1->value.str.val);
|
||||
}
|
||||
fp = popen(buf,p);
|
||||
if (!fp) {
|
||||
php3_error(E_WARNING,"popen(\"%s\",\"%s\") - %s",buf,p,strerror(errno));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
} else {
|
||||
char *c;
|
||||
c = arg1->value.str.val;
|
||||
while((*b!='/')&&(b!=c)) b--;
|
||||
if (b==c) b=NULL;
|
||||
fp = popen(arg1->value.str.val,p);
|
||||
if (!fp) {
|
||||
php3_error(E_WARNING,"popen(\"%s\",\"%s\") - %s",arg1->value.str.val,p,strerror(errno));
|
||||
efree(p);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
}
|
||||
if (b) {
|
||||
snprintf(buf,sizeof(buf),"%s%s",PG(safe_mode_exec_dir),b);
|
||||
} else {
|
||||
snprintf(buf,sizeof(buf),"%s/%s",PG(safe_mode_exec_dir),arg1->value.str.val);
|
||||
}
|
||||
fp = popen(buf,p);
|
||||
if (!fp) {
|
||||
php3_error(E_WARNING,"popen(\"%s\",\"%s\") - %s",buf,p,strerror(errno));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
} else {
|
||||
fp = popen(arg1->value.str.val,p);
|
||||
if (!fp) {
|
||||
php3_error(E_WARNING,"popen(\"%s\",\"%s\") - %s",arg1->value.str.val,p,strerror(errno));
|
||||
efree(p);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
}
|
||||
/* #endif */
|
||||
id = php3_list_insert(fp,GLOBAL(le_pp));
|
||||
efree(p);
|
||||
RETURN_LONG(id);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int pclose(int fp)
|
||||
Close a file pointer opened by popen() */
|
||||
void php3_pclose(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_pclose(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int id,type;
|
||||
FILE *fp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -621,16 +637,17 @@ void php3_pclose(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int feof(int fp)
|
||||
Test for end-of-file on a file pointer */
|
||||
void php3_feof(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_feof(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
FILE *fp;
|
||||
int id, type;
|
||||
int issock=0;
|
||||
int socketd=0, *sock;
|
||||
unsigned int temp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -656,6 +673,7 @@ void php3_feof(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int set_socket_blocking(int socket descriptor, int mode)
|
||||
Set blocking/non-blocking mode on a socket */
|
||||
void php3_set_socket_blocking(INTERNAL_FUNCTION_PARAMETERS)
|
||||
@ -664,7 +682,6 @@ void php3_set_socket_blocking(INTERNAL_FUNCTION_PARAMETERS)
|
||||
int id, type, block;
|
||||
int flags;
|
||||
int socketd=0, *sock;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -746,6 +763,7 @@ void php3_set_socket_timeout(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* {{{ proto string fgets(int fp, int length)
|
||||
Get a line from file pointer */
|
||||
void php3_fgets(INTERNAL_FUNCTION_PARAMETERS)
|
||||
@ -795,6 +813,7 @@ void php3_fgets(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto string fgetc(int fp)
|
||||
Get a character from file pointer */
|
||||
void php3_fgetc(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
@ -804,7 +823,6 @@ void php3_fgetc(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
char *buf;
|
||||
int issock=0;
|
||||
int *sock, socketd=0;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -836,6 +854,7 @@ void php3_fgetc(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* Strip any HTML tags while reading */
|
||||
/* {{{ proto string fgetss(int fp, int length)
|
||||
Get a line from file pointer and strip HTML tags */
|
||||
@ -847,7 +866,6 @@ void php3_fgetss(INTERNAL_FUNCTION_PARAMETERS)
|
||||
char *buf, *p, *rbuf, *rp, c, lc;
|
||||
int issock=0;
|
||||
int *sock,socketd=0;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &fd, &bytes) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -961,6 +979,7 @@ void php3_fgetss(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int fwrite(int fp, string str [, int length])
|
||||
Binary-safe file write */
|
||||
void php3_fwrite(INTERNAL_FUNCTION_PARAMETERS)
|
||||
@ -1022,13 +1041,14 @@ void php3_fwrite(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int rewind(int fp)
|
||||
Rewind the position of a file pointer */
|
||||
void php3_rewind(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_rewind(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int id,type;
|
||||
FILE *fp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1045,14 +1065,15 @@ void php3_rewind(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int ftell(int fp)
|
||||
Get file pointer's read/write position */
|
||||
void php3_ftell(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_ftell(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int id, type;
|
||||
long pos;
|
||||
FILE *fp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1069,14 +1090,15 @@ void php3_ftell(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int fseek(int fp, int offset)
|
||||
Seek on a file pointer */
|
||||
void php3_fseek(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_fseek(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
int ret,id,type;
|
||||
long pos;
|
||||
FILE *fp;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1105,12 +1127,14 @@ void php3_fseek(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int mkdir(string pathname, int mode)
|
||||
Create a directory */
|
||||
void php3_mkdir(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_mkdir(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
int ret,mode;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1130,12 +1154,14 @@ void php3_mkdir(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int rmdir(string dirname)
|
||||
Remove a directory */
|
||||
void php3_rmdir(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_rmdir(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int ret;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1153,17 +1179,17 @@ void php3_rmdir(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int readfile(string filename [, int use_include_path])
|
||||
Output a file or a URL */
|
||||
void php3_readfile(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_readfile(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1, *arg2;
|
||||
char buf[8192];
|
||||
FILE *fp;
|
||||
int b, size;
|
||||
int use_include_path = 0;
|
||||
|
||||
int issock=0, socketd=0;
|
||||
TLS_VARS;
|
||||
|
||||
/* check args */
|
||||
switch (ARG_COUNT(ht)) {
|
||||
@ -1214,13 +1240,14 @@ void php3_readfile(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int umask([int mask])
|
||||
Return or change the umask */
|
||||
void php3_fileumask(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_fileumask(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
int oldumask;
|
||||
int arg_count = ARG_COUNT(ht);
|
||||
TLS_VARS;
|
||||
|
||||
oldumask = umask(077);
|
||||
|
||||
@ -1238,19 +1265,20 @@ void php3_fileumask(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/*
|
||||
* Read to EOF on a file descriptor and write the output to stdout.
|
||||
*/
|
||||
/* {{{ proto int fpassthru(int fp)
|
||||
Output all remaining data from a file pointer */
|
||||
void php3_fpassthru(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
void php3_fpassthru(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *arg1;
|
||||
FILE *fp;
|
||||
char buf[8192];
|
||||
int id, size, b, type;
|
||||
int issock=0;
|
||||
int socketd=0, *sock;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg1) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1290,28 +1318,30 @@ void php3_fpassthru(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int rename(string old_name, string new_name)
|
||||
Rename a file */
|
||||
void php3_rename(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
pval *OLD, *NEW;
|
||||
char *old, *new;
|
||||
void php3_rename(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *old_arg, *new_arg;
|
||||
char *old_name, *new_name;
|
||||
int ret;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &OLD, &NEW) == FAILURE) {
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &old_arg, &new_arg) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(OLD);
|
||||
convert_to_string(NEW);
|
||||
convert_to_string(old_arg);
|
||||
convert_to_string(new_arg);
|
||||
|
||||
old = OLD->value.str.val;
|
||||
new = NEW->value.str.val;
|
||||
old_name = old_arg->value.str.val;
|
||||
new_name = new_arg->value.str.val;
|
||||
|
||||
if (PG(safe_mode) &&(!_php3_checkuid(old,2))) {
|
||||
if (PG(safe_mode) &&(!_php3_checkuid(old_name, 2))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
ret = rename(old, new);
|
||||
ret = rename(old_name, new_name);
|
||||
|
||||
if (ret == -1) {
|
||||
php3_error(E_WARNING,
|
||||
@ -1323,6 +1353,7 @@ void php3_rename(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int copy(string source_file, string destination_file)
|
||||
Copy a file */
|
||||
void php3_file_copy(INTERNAL_FUNCTION_PARAMETERS)
|
||||
@ -1330,7 +1361,7 @@ void php3_file_copy(INTERNAL_FUNCTION_PARAMETERS)
|
||||
pval *source, *target;
|
||||
char buffer[8192];
|
||||
int fd_s,fd_t,read_bytes;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &source, &target) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -1377,6 +1408,7 @@ void php3_file_copy(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto int fread(int fp, int length)
|
||||
Binary-safe file read */
|
||||
void php3_fread(INTERNAL_FUNCTION_PARAMETERS)
|
||||
@ -1422,9 +1454,10 @@ void php3_fread(INTERNAL_FUNCTION_PARAMETERS)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* aparently needed for pdf to be compiled as a module under windows */
|
||||
PHPAPI int php3i_get_le_fp(void){
|
||||
TLS_VARS;
|
||||
PHPAPI int php3i_get_le_fp(void)
|
||||
{
|
||||
return GLOBAL(le_fp);
|
||||
}
|
||||
|
||||
|
@ -99,8 +99,6 @@ static struct stat lsb;
|
||||
|
||||
int php3_init_filestat(INIT_FUNC_ARGS)
|
||||
{
|
||||
TLS_VARS;
|
||||
|
||||
GLOBAL(CurrentStatFile)=NULL;
|
||||
GLOBAL(CurrentStatLength)=0;
|
||||
return SUCCESS;
|
||||
@ -109,10 +107,9 @@ int php3_init_filestat(INIT_FUNC_ARGS)
|
||||
|
||||
int php3_shutdown_filestat(SHUTDOWN_FUNC_ARGS)
|
||||
{
|
||||
TLS_VARS;
|
||||
|
||||
if (GLOBAL(CurrentStatFile))
|
||||
if (GLOBAL(CurrentStatFile)) {
|
||||
efree (GLOBAL(CurrentStatFile));
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@ -122,11 +119,7 @@ void php3_chgrp(INTERNAL_FUNCTION_PARAMETERS)
|
||||
pval *filename, *group;
|
||||
gid_t gid;
|
||||
struct group *gr=NULL;
|
||||
#endif
|
||||
int ret;
|
||||
TLS_VARS;
|
||||
ret = 0;
|
||||
#ifndef WINDOWS
|
||||
|
||||
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&filename,&group)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -145,11 +138,9 @@ void php3_chgrp(INTERNAL_FUNCTION_PARAMETERS)
|
||||
gid = group->value.lval;
|
||||
}
|
||||
|
||||
/* #if PHP_SAFE_MODE */
|
||||
if (PG(safe_mode) &&(!_php3_checkuid(filename->value.str.val, 1))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
/* #endif */
|
||||
|
||||
/* Check the basedir */
|
||||
if (_php3_check_open_basedir(filename->value.str.val)) RETURN_FALSE;
|
||||
@ -159,10 +150,13 @@ void php3_chgrp(INTERNAL_FUNCTION_PARAMETERS)
|
||||
php3_error(E_WARNING, "chgrp failed: %s", strerror(errno));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
#endif
|
||||
RETURN_TRUE;
|
||||
#else
|
||||
RETURN_FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void php3_chown(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
#ifndef WINDOWS
|
||||
@ -170,7 +164,6 @@ void php3_chown(INTERNAL_FUNCTION_PARAMETERS)
|
||||
int ret;
|
||||
uid_t uid;
|
||||
struct passwd *pw = NULL;
|
||||
TLS_VARS;
|
||||
|
||||
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&filename,&user)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -201,16 +194,16 @@ void php3_chown(INTERNAL_FUNCTION_PARAMETERS)
|
||||
php3_error(E_WARNING, "chown failed: %s", strerror(errno));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
#else
|
||||
TLS_VARS;
|
||||
#endif
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
void php3_chmod(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
|
||||
void php3_chmod(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *filename, *mode;
|
||||
int ret;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht)!=2 || getParameters(ht,2,&filename,&mode)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
@ -233,7 +226,9 @@ void php3_chmod(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
void php3_touch(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
|
||||
void php3_touch(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
#if HAVE_UTIME
|
||||
pval *filename, *filetime;
|
||||
int ret;
|
||||
@ -241,7 +236,7 @@ void php3_touch(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
FILE *file;
|
||||
struct utimbuf *newtime = NULL;
|
||||
int ac = ARG_COUNT(ht);
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ac == 1 && getParameters(ht,1,&filename) != FAILURE) {
|
||||
#ifndef HAVE_UTIME_NULL
|
||||
@ -298,19 +293,19 @@ void php3_touch(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void php3_clearstatcache(INTERNAL_FUNCTION_PARAMETERS) {
|
||||
TLS_VARS;
|
||||
|
||||
|
||||
void php3_clearstatcache(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
if (GLOBAL(CurrentStatFile)) {
|
||||
efree(GLOBAL(CurrentStatFile));
|
||||
GLOBAL(CurrentStatFile) = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void _php3_stat(const char *filename, int type, pval *return_value)
|
||||
{
|
||||
struct stat *stat_sb = &GLOBAL(sb);
|
||||
TLS_VARS;
|
||||
|
||||
if (!GLOBAL(CurrentStatFile) || strcmp(filename,GLOBAL(CurrentStatFile))) {
|
||||
if (!GLOBAL(CurrentStatFile)
|
||||
|
@ -174,7 +174,7 @@ void php3_unlink(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *filename;
|
||||
int ret;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &filename) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
|
7
main.h
7
main.h
@ -36,6 +36,7 @@
|
||||
#define _MAIN_H
|
||||
|
||||
#include "zend_globals.h"
|
||||
#include "php_globals.h"
|
||||
|
||||
#define INIT_ENVIRONMENT 0x80
|
||||
#define INIT_REQUEST_INFO 0x400
|
||||
@ -46,11 +47,11 @@
|
||||
#define INIT_WINSOCK 0x100000
|
||||
#define INIT_CLASS_TABLE 0x400000
|
||||
|
||||
int php3_request_startup(CLS_D ELS_DC);
|
||||
int php3_request_startup(CLS_D ELS_DC PLS_DC);
|
||||
extern void php3_request_shutdown(void *dummy INLINE_TLS);
|
||||
extern void php3_request_shutdown_for_exec(void *dummy);
|
||||
extern int php3_module_startup(CLS_D ELS_DC);
|
||||
extern void php3_module_shutdown(INLINE_TLS_VOID);
|
||||
extern int php3_module_startup();
|
||||
extern void php3_module_shutdown();
|
||||
extern void php3_module_shutdown_for_exec(void);
|
||||
|
||||
#ifndef THREAD_SAFE
|
||||
|
@ -41,6 +41,9 @@
|
||||
#include "ext/standard/php3_browscap.h"
|
||||
#include "zend_extensions.h"
|
||||
|
||||
#undef YYPARSE_PARAM
|
||||
#undef YYLEX_PARAM
|
||||
|
||||
#if WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
@ -154,7 +157,7 @@ static void pvalue_browscap_destructor(pval *pvalue)
|
||||
|
||||
int php3_init_config(void)
|
||||
{
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if (_php3_hash_init(&configuration_hash, 0, NULL, (void (*)(void *))pvalue_config_destructor, 1)==FAILURE) {
|
||||
return FAILURE;
|
||||
|
@ -106,6 +106,7 @@ PHPAPI int _php3_check_open_basedir(char *path)
|
||||
char resolved_name[MAXPATHLEN];
|
||||
char local_open_basedir[MAXPATHLEN];
|
||||
int local_open_basedir_pos;
|
||||
PLS_FETCH();
|
||||
|
||||
/* Only check when open_basedir is available */
|
||||
if (PG(open_basedir) && *PG(open_basedir)) {
|
||||
@ -177,6 +178,8 @@ PHPAPI int _php3_check_open_basedir(char *path)
|
||||
PHPAPI FILE *php3_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd)
|
||||
{
|
||||
int cm=2; /* checkuid mode: 2 = if file does not exist, check directory */
|
||||
PLS_FETCH();
|
||||
|
||||
#if PHP3_URL_FOPEN
|
||||
if (!(options & IGNORE_URL)) {
|
||||
return php3_fopen_url_wrapper(path, mode, options, issock, socketd);
|
||||
@ -203,8 +206,7 @@ FILE *php3_fopen_for_parser(void)
|
||||
struct stat st;
|
||||
char *temp, *path_info, *fn;
|
||||
int l;
|
||||
TLS_VARS;
|
||||
|
||||
PLS_FETCH();
|
||||
|
||||
fn = GLOBAL(request_info).filename;
|
||||
path_info = GLOBAL(request_info).path_info;
|
||||
@ -306,7 +308,7 @@ PHPAPI FILE *php3_fopen_with_path(char *filename, char *mode, char *path, char *
|
||||
struct stat sb;
|
||||
FILE *fp;
|
||||
int cm=2;
|
||||
TLS_VARS;
|
||||
PLS_FETCH();
|
||||
|
||||
if(!strcmp(mode,"r") || !strcmp(mode,"r+")) cm=0;
|
||||
if (opened_path) {
|
||||
@ -879,6 +881,8 @@ static FILE *php3_fopen_url_wrapper(const char *path, char *mode, int options, i
|
||||
return (fp);
|
||||
|
||||
} else {
|
||||
PLS_FETCH();
|
||||
|
||||
if (options & USE_PATH) {
|
||||
fp = php3_fopen_with_path((char *) path, mode, PG(include_path), NULL);
|
||||
} else {
|
||||
|
86
main/main.c
86
main/main.c
@ -97,13 +97,11 @@ struct sapi_request_info *sapi_rqst;
|
||||
#include "getopt.h"
|
||||
#endif
|
||||
|
||||
#ifdef ZTS
|
||||
int compiler_globals_id;
|
||||
int executor_globals_id;
|
||||
#endif
|
||||
|
||||
#ifndef ZTS
|
||||
php_core_globals core_globals;
|
||||
#else
|
||||
int core_globals_id;
|
||||
#endif
|
||||
|
||||
void _php3_build_argv(char * ELS_DC);
|
||||
@ -381,6 +379,7 @@ PHPAPI void php3_error(int type, const char *format,...)
|
||||
char buffer[1024];
|
||||
int size = 0;
|
||||
ELS_FETCH();
|
||||
PLS_FETCH();
|
||||
|
||||
if (!(type & E_CORE)) {
|
||||
if (!GLOBAL(initialized)) { /* don't display further errors after php3_request_shutdown() */
|
||||
@ -550,6 +549,7 @@ static void php3_unset_timeout(INLINE_TLS_VOID)
|
||||
void php3_set_time_limit(INTERNAL_FUNCTION_PARAMETERS)
|
||||
{
|
||||
pval *new_timeout;
|
||||
PLS_FETCH();
|
||||
|
||||
if (PG(safe_mode)) {
|
||||
php3_error(E_WARNING, "Cannot set time limit in safe mode");
|
||||
@ -589,8 +589,11 @@ static FILE *php_fopen_wrapper_for_zend(const char *filename)
|
||||
static void php_message_handler_for_zend(long message, void *data)
|
||||
{
|
||||
switch (message) {
|
||||
case ZMSG_ENABLE_TRACK_VARS:
|
||||
PG(track_vars) = 1;
|
||||
case ZMSG_ENABLE_TRACK_VARS: {
|
||||
PLS_FETCH();
|
||||
|
||||
PG(track_vars) = 1;
|
||||
}
|
||||
break;
|
||||
case ZMSG_FAILED_INCLUDE_FOPEN:
|
||||
php3_error(E_WARNING, "Failed opening '%s' for inclusion", php3_strip_url_passwd((char *) data));
|
||||
@ -627,9 +630,10 @@ static void php_message_handler_for_zend(long message, void *data)
|
||||
}
|
||||
|
||||
|
||||
int php3_request_startup(CLS_D ELS_DC)
|
||||
int php3_request_startup(CLS_D ELS_DC PLS_DC)
|
||||
{
|
||||
zend_output_startup();
|
||||
|
||||
#if APACHE && defined(CRASH_DETECTION)
|
||||
{
|
||||
char log_message[256];
|
||||
@ -795,7 +799,7 @@ void php3_request_shutdown(void *dummy INLINE_TLS)
|
||||
}
|
||||
|
||||
|
||||
static int php3_config_ini_startup(ELS_D)
|
||||
static int php3_config_ini_startup()
|
||||
{
|
||||
if (php3_init_config() == FAILURE) {
|
||||
php3_printf("PHP: Unable to parse configuration file.\n");
|
||||
@ -816,11 +820,15 @@ static void php3_config_ini_shutdown(INLINE_TLS_VOID)
|
||||
#endif
|
||||
}
|
||||
|
||||
int php3_module_startup(CLS_D ELS_DC)
|
||||
|
||||
int php3_module_startup()
|
||||
{
|
||||
zend_utility_functions zuf;
|
||||
zend_utility_values zuv;
|
||||
int module_number=0; /* for REGISTER_INI_ENTRIES() */
|
||||
#ifdef ZTS
|
||||
php_core_globals *core_globals;
|
||||
#endif
|
||||
|
||||
#if (WIN32|WINNT) && !(USE_SAPI)
|
||||
WORD wVersionRequested;
|
||||
@ -845,12 +853,15 @@ int php3_module_startup(CLS_D ELS_DC)
|
||||
|
||||
zend_startup(&zuf, NULL);
|
||||
|
||||
#ifdef ZTS
|
||||
core_globals_id = ts_allocate_id(sizeof(php_core_globals), NULL, NULL);
|
||||
core_globals = ts_resource(core_globals_id);
|
||||
#endif
|
||||
|
||||
#if HAVE_SETLOCALE
|
||||
setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
|
||||
EG(error_reporting) = E_ALL;
|
||||
|
||||
#if (WIN32|WINNT) && !(USE_SAPI)
|
||||
/* start up winsock services */
|
||||
if (WSAStartup(wVersionRequested, &wsaData) != 0) {
|
||||
@ -864,7 +875,7 @@ int php3_module_startup(CLS_D ELS_DC)
|
||||
le_index_ptr = _register_list_destructors(NULL, NULL, 0);
|
||||
FREE_MUTEX(gLock);
|
||||
|
||||
if (php3_config_ini_startup(ELS_C) == FAILURE) {
|
||||
if (php3_config_ini_startup() == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@ -926,7 +937,7 @@ void php3_module_shutdown()
|
||||
|
||||
|
||||
/* in 3.1 some of this should move into sapi */
|
||||
int _php3_hash_environment(void)
|
||||
int _php3_hash_environment(PLS_D)
|
||||
{
|
||||
char **env, *p, *t;
|
||||
unsigned char _gpc_flags[3] = {0,0,0};
|
||||
@ -1162,7 +1173,7 @@ void _php3_build_argv(char *s ELS_DC)
|
||||
|
||||
#include "logos.h"
|
||||
|
||||
static void php3_parse(zend_file_handle *primary_file CLS_DC ELS_DC)
|
||||
static void php3_parse(zend_file_handle *primary_file CLS_DC ELS_DC PLS_DC)
|
||||
{
|
||||
zend_file_handle *prepend_file_p, *append_file_p;
|
||||
zend_file_handle prepend_file, append_file;
|
||||
@ -1272,23 +1283,16 @@ int main(int argc, char *argv[])
|
||||
#ifdef ZTS
|
||||
zend_compiler_globals *compiler_globals;
|
||||
zend_executor_globals *executor_globals;
|
||||
php_core_globals *core_globals;
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef ZTS
|
||||
if (setjmp(EG(bailout))!=0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef ZTS
|
||||
sapi_startup(1,1,0);
|
||||
compiler_globals_id = ts_allocate_id(sizeof(zend_compiler_globals));
|
||||
executor_globals_id = ts_allocate_id(sizeof(zend_executor_globals));
|
||||
|
||||
compiler_globals = ts_resource(compiler_globals_id);
|
||||
executor_globals = ts_resource(executor_globals_id);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if WIN32|WINNT
|
||||
_fmode = _O_BINARY; /*sets default for file streams to binary */
|
||||
setmode(_fileno(stdin), O_BINARY); /* make the stdio mode be binary */
|
||||
@ -1331,6 +1335,14 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
#endif /* FORCE_CGI_REDIRECT */
|
||||
}
|
||||
|
||||
if (php3_module_startup()==FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
#ifdef ZTS
|
||||
compiler_globals = ts_resource(compiler_globals_id);
|
||||
executor_globals = ts_resource(executor_globals_id);
|
||||
core_globals = ts_resource(core_globals_id);
|
||||
#endif
|
||||
|
||||
CG(extended_info) = 0;
|
||||
|
||||
@ -1340,7 +1352,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
switch (c) {
|
||||
case 'f':
|
||||
if (!_cgi_started){
|
||||
if (php3_module_startup(CLS_C ELS_CC) == FAILURE || php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC)==FAILURE) {
|
||||
php3_module_shutdown();
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
@ -1352,7 +1365,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
break;
|
||||
case 'v':
|
||||
if (!_cgi_started) {
|
||||
if (php3_module_startup(CLS_C ELS_CC) == FAILURE || php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC)==FAILURE) {
|
||||
php3_module_shutdown();
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
@ -1361,7 +1375,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
break;
|
||||
case 'i':
|
||||
if (!_cgi_started) {
|
||||
if (php3_module_startup(CLS_C ELS_CC) == FAILURE || php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC)==FAILURE) {
|
||||
php3_module_shutdown();
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
@ -1408,7 +1423,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
#endif
|
||||
|
||||
if (!_cgi_started) {
|
||||
if (php3_module_startup(CLS_C ELS_CC) == FAILURE || php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC)==FAILURE) {
|
||||
php3_module_shutdown();
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
@ -1483,7 +1499,7 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
|
||||
|
||||
switch (behavior) {
|
||||
case PHP_MODE_STANDARD:
|
||||
php3_parse(&file_handle CLS_CC ELS_CC);
|
||||
php3_parse(&file_handle CLS_CC ELS_CC PLS_CC);
|
||||
break;
|
||||
case PHP_MODE_HIGHLIGHT: {
|
||||
zend_syntax_highlighter_ini syntax_highlighter_ini;
|
||||
@ -1528,13 +1544,15 @@ PHPAPI int apache_php3_module_main(request_rec * r, int fd, int display_source_m
|
||||
#ifdef ZTS
|
||||
zend_compiler_globals cg;
|
||||
zend_executor_globals eg;
|
||||
php_core_globals pcg;
|
||||
zend_compiler_globals *compiler_globals=&cg;
|
||||
zend_executor_globals *executor_globals=⪚
|
||||
php_core_globals *core_globals=&pcg;
|
||||
#endif
|
||||
|
||||
GLOBAL(php3_rqst) = r;
|
||||
|
||||
if (php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC) == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
php3_TreatHeaders();
|
||||
@ -1637,7 +1655,7 @@ int main(int argc, char **argv)
|
||||
setlocale(LC_CTYPE, "");
|
||||
#endif
|
||||
|
||||
if (php3_module_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_module_startup() == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
@ -1891,7 +1909,7 @@ PHPAPI int php3_sapi_main(struct sapi_request_info *sapi_info)
|
||||
return FAILURE;
|
||||
}*/
|
||||
|
||||
if (php3_request_startup(CLS_C ELS_CC) == FAILURE) {
|
||||
if (php3_request_startup(CLS_C ELS_CC PLS_CC) == FAILURE) {
|
||||
#if DEBUG
|
||||
snprintf(logmessage,1024,"%d:php3_sapi_main: request starup failed\n",GLOBAL(sapi_rqst)->scid);
|
||||
OutputDebugString(logmessage);
|
||||
@ -2068,7 +2086,7 @@ BOOL WINAPI DllMain(HANDLE hModule,
|
||||
if (php3_config_ini_startup(_INLINE_TLS_VOID) == FAILURE) {
|
||||
return 0;
|
||||
}
|
||||
if (php3_module_startup(php3_globals) == FAILURE) {
|
||||
if (php3_module_startup() == FAILURE) {
|
||||
ErrorExit("module startup failed");
|
||||
return 0;
|
||||
}
|
||||
@ -2085,7 +2103,7 @@ BOOL WINAPI DllMain(HANDLE hModule,
|
||||
return 0;
|
||||
php3_globals = TlsGetValue(TlsIndex);
|
||||
yy_init_tls();
|
||||
if (php3_module_startup(php3_globals) == FAILURE) {
|
||||
if (php3_module_startup() == FAILURE) {
|
||||
ErrorExit("module startup failed");
|
||||
#if DEBUG
|
||||
OutputDebugString("PHP_Core DllMain module startup failed\n");
|
||||
|
@ -370,7 +370,7 @@ extern void html_putc(char c);
|
||||
#ifndef THREAD_SAFE
|
||||
extern int end_current_file_execution(int *retval);
|
||||
#endif
|
||||
extern int _php3_hash_environment(void);
|
||||
extern int _php3_hash_environment(PLS_D);
|
||||
extern int module_startup_modules(void);
|
||||
|
||||
/* needed for modules only */
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef _PHP_GLOBALS_H
|
||||
#define _PHP_GLOBALS_H
|
||||
|
||||
#include "zend_globals.h"
|
||||
|
||||
typedef struct _php_core_globals php_core_globals;
|
||||
|
||||
#ifdef ZTS
|
||||
@ -10,6 +12,7 @@ typedef struct _php_core_globals php_core_globals;
|
||||
# define PLS_CC , PLS_C
|
||||
# define PG(v) (core_globals->v)
|
||||
# define PLS_FETCH() php_core_globals *core_globals = ts_resource(core_globals_id)
|
||||
extern int core_globals_id;
|
||||
#else
|
||||
# define PLS_D
|
||||
# define PLS_DC
|
||||
|
12
php4.dsw
12
php4.dsw
@ -3,6 +3,18 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "TSRM"=..\tsrm\TSRM.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "libzend"=..\libzend\libzend.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
Loading…
Reference in New Issue
Block a user