summaryrefslogtreecommitdiff
path: root/ext/standard/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/exec.c')
-rw-r--r--ext/standard/exec.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/ext/standard/exec.c b/ext/standard/exec.c
index 088f856d18..1adaa2b2e6 100644
--- a/ext/standard/exec.c
+++ b/ext/standard/exec.c
@@ -111,7 +111,7 @@ static int _Exec(int type, char *cmd, pval *array, pval *return_value)
}
buf[0] = '\0';
if (type==2) {
- if (array->type != IS_ARRAY) {
+ if (Z_TYPE_P(array) != IS_ARRAY) {
pval_destructor(array);
array_init(array);
}
@@ -209,13 +209,13 @@ PHP_FUNCTION(exec)
}
switch (arg_count) {
case 1:
- ret = _Exec(0, (*arg1)->value.str.val, NULL,return_value);
+ ret = _Exec(0, Z_STRVAL_PP(arg1), NULL,return_value);
break;
case 2:
if (!ParameterPassedByReference(ht,2)) {
php_error(E_WARNING,"Array argument to exec() not passed by reference");
}
- ret = _Exec(2, (*arg1)->value.str.val,*arg2,return_value);
+ ret = _Exec(2, Z_STRVAL_PP(arg1),*arg2,return_value);
break;
case 3:
if (!ParameterPassedByReference(ht,2)) {
@@ -224,9 +224,9 @@ PHP_FUNCTION(exec)
if (!ParameterPassedByReference(ht,3)) {
php_error(E_WARNING,"return_status argument to exec() not passed by reference");
}
- ret = _Exec(2,(*arg1)->value.str.val,*arg2,return_value);
- (*arg3)->type = IS_LONG;
- (*arg3)->value.lval=ret;
+ ret = _Exec(2,Z_STRVAL_PP(arg1),*arg2,return_value);
+ Z_TYPE_PP(arg3) = IS_LONG;
+ Z_LVAL_PP(arg3)=ret;
break;
}
}
@@ -246,15 +246,15 @@ PHP_FUNCTION(system)
}
switch (arg_count) {
case 1:
- ret = _Exec(1, (*arg1)->value.str.val, NULL,return_value);
+ ret = _Exec(1, Z_STRVAL_PP(arg1), NULL,return_value);
break;
case 2:
if (!ParameterPassedByReference(ht,2)) {
php_error(E_WARNING,"return_status argument to system() not passed by reference");
}
- ret = _Exec(1, (*arg1)->value.str.val, NULL,return_value);
- (*arg2)->type = IS_LONG;
- (*arg2)->value.lval=ret;
+ ret = _Exec(1, Z_STRVAL_PP(arg1), NULL,return_value);
+ Z_TYPE_PP(arg2) = IS_LONG;
+ Z_LVAL_PP(arg2)=ret;
break;
}
}
@@ -273,15 +273,15 @@ PHP_FUNCTION(passthru)
}
switch (arg_count) {
case 1:
- ret = _Exec(3, (*arg1)->value.str.val, NULL,return_value);
+ ret = _Exec(3, Z_STRVAL_PP(arg1), NULL,return_value);
break;
case 2:
if (!ParameterPassedByReference(ht,2)) {
php_error(E_WARNING,"return_status argument to system() not passed by reference");
}
- ret = _Exec(3, (*arg1)->value.str.val, NULL,return_value);
- (*arg2)->type = IS_LONG;
- (*arg2)->value.lval=ret;
+ ret = _Exec(3, Z_STRVAL_PP(arg1), NULL,return_value);
+ Z_TYPE_PP(arg2) = IS_LONG;
+ Z_LVAL_PP(arg2)=ret;
break;
}
}
@@ -363,8 +363,8 @@ PHP_FUNCTION(escapeshellcmd)
}
convert_to_string_ex(arg1);
- if ((*arg1)->value.str.len) {
- cmd = php_escape_shell_cmd((*arg1)->value.str.val);
+ if (Z_STRLEN_PP(arg1)) {
+ cmd = php_escape_shell_cmd(Z_STRVAL_PP(arg1));
RETVAL_STRING(cmd, 1);
efree(cmd);
}
@@ -383,8 +383,8 @@ PHP_FUNCTION(escapeshellarg)
}
convert_to_string_ex(arg1);
- if ((*arg1)->value.str.len) {
- cmd = php_escape_shell_arg((*arg1)->value.str.val);
+ if (Z_STRLEN_PP(arg1)) {
+ cmd = php_escape_shell_arg(Z_STRVAL_PP(arg1));
RETVAL_STRING(cmd, 1);
efree(cmd);
}
@@ -398,6 +398,7 @@ PHP_FUNCTION(shell_exec)
FILE *in;
int readbytes,total_readbytes=0,allocated_space;
pval **cmd;
+ char *ret;
PLS_FETCH();
if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1,&cmd)==FAILURE) {
@@ -411,29 +412,27 @@ PHP_FUNCTION(shell_exec)
convert_to_string_ex(cmd);
#ifdef PHP_WIN32
- if ((in=V_POPEN((*cmd)->value.str.val,"rt"))==NULL) {
+ if ((in=V_POPEN(Z_STRVAL_PP(cmd),"rt"))==NULL) {
#else
- if ((in=V_POPEN((*cmd)->value.str.val,"r"))==NULL) {
+ if ((in=V_POPEN(Z_STRVAL_PP(cmd),"r"))==NULL) {
#endif
- php_error(E_WARNING,"Unable to execute '%s'",(*cmd)->value.str.val);
+ php_error(E_WARNING,"Unable to execute '%s'",Z_STRVAL_PP(cmd));
}
allocated_space = EXEC_INPUT_BUF;
- return_value->value.str.val = (char *) emalloc(allocated_space);
+ ret = (char *) emalloc(allocated_space);
while (1) {
- readbytes = fread(return_value->value.str.val+total_readbytes,1,EXEC_INPUT_BUF,in);
+ readbytes = fread(ret+total_readbytes,1,EXEC_INPUT_BUF,in);
if (readbytes<=0) {
break;
}
total_readbytes += readbytes;
allocated_space = total_readbytes+EXEC_INPUT_BUF;
- return_value->value.str.val = (char *) erealloc(return_value->value.str.val,allocated_space);
+ ret = (char *) erealloc(ret,allocated_space);
}
pclose(in);
-
- return_value->value.str.val = erealloc(return_value->value.str.val,total_readbytes+1);
- return_value->value.str.val[total_readbytes]=0;
- return_value->value.str.len = total_readbytes;
- return_value->type = IS_STRING;
+
+ RETVAL_STRINGL(ret, total_readbytes, 0);
+ Z_STRVAL_P(return_value)[total_readbytes] = '\0';
}
/* }}} */