cvs: php4 /ext/standard/ exec.c file.c /main/ php.h php_virtual_cwd.c
| From: | Andi Gutmans | Date: | Mon, 12 Jun 2000 19:39:04 +0000 |
| Subject: | cvs: php4 /ext/standard/ exec.c file.c /main/ php.h php_virtual_cwd.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-199@lists.php.net to get a copy of this message | ||
andi Mon Jun 12 12:39:04 2000 EDT
Modified files:
/php4/ext/standard exec.c file.c
/php4/main php.h php_virtual_cwd.c
Log:
- On UNIX support popen() which works with current working directory
- when in VIRTUAL_DIR mode.
Index: php4/ext/standard/exec.c
diff -u php4/ext/standard/exec.c:1.34 php4/ext/standard/exec.c:1.35
--- php4/ext/standard/exec.c:1.34 Mon Jun 5 12:47:44 2000
+++ php4/ext/standard/exec.c Mon Jun 12 12:39:04 2000
@@ -15,7 +15,7 @@
| Author: Rasmus Lerdorf |
+----------------------------------------------------------------------+
*/
-/* $Id: exec.c,v 1.34 2000/06/05 19:47:44 andi Exp $ */
+/* $Id: exec.c,v 1.35 2000/06/12 19:39:04 andi Exp $ */
#include <stdio.h>
#include "php.h"
@@ -87,9 +87,9 @@
efree(d);
d = tmp;
#ifdef PHP_WIN32
- fp = popen(d, "rb");
+ fp = V_POPEN(d, "rb");
#else
- fp = popen(d, "r");
+ fp = V_POPEN(d, "r");
#endif
if (!fp) {
php_error(E_WARNING, "Unable to fork [%s]", d);
@@ -99,9 +99,9 @@
}
} else { /* not safe_mode */
#ifdef PHP_WIN32
- fp = popen(cmd, "rb");
+ fp = V_POPEN(cmd, "rb");
#else
- fp = popen(cmd, "r");
+ fp = V_POPEN(cmd, "r");
#endif
if (!fp) {
php_error(E_WARNING, "Unable to fork [%s]", cmd);
@@ -364,9 +364,9 @@
convert_to_string_ex(cmd);
#ifdef PHP_WIN32
- if ((in=popen((*cmd)->value.str.val,"rt"))==NULL) {
+ if ((in=V_POPEN((*cmd)->value.str.val,"rt"))==NULL) {
#else
- if ((in=popen((*cmd)->value.str.val,"r"))==NULL) {
+ if ((in=V_POPEN((*cmd)->value.str.val,"r"))==NULL) {
#endif
php_error(E_WARNING,"Unable to execute '%s'",(*cmd)->value.str.val);
}
Index: php4/ext/standard/file.c
diff -u php4/ext/standard/file.c:1.89 php4/ext/standard/file.c:1.90
--- php4/ext/standard/file.c:1.89 Tue Jun 6 11:58:15 2000
+++ php4/ext/standard/file.c Mon Jun 12 12:39:04 2000
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.89 2000/06/06 18:58:15 ccollie Exp $ */
+/* $Id: file.c,v 1.90 2000/06/12 19:39:04 andi Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -713,7 +713,7 @@
}
tmp = php_escape_shell_cmd(buf);
- fp = popen(tmp,p);
+ fp = V_POPEN(tmp,p);
efree(tmp);
if (!fp) {
@@ -721,7 +721,7 @@
RETURN_FALSE;
}
} else {
- fp = popen((*arg1)->value.str.val,p);
+ fp = V_POPEN((*arg1)->value.str.val,p);
if (!fp) {
php_error(E_WARNING,"popen(\"%s\",\"%s\") -
%s",(*arg1)->value.str.val,p,strerror(errno));
efree(p);
Index: php4/main/php.h
diff -u php4/main/php.h:1.104 php4/main/php.h:1.105
--- php4/main/php.h:1.104 Mon Jun 12 11:48:18 2000
+++ php4/main/php.h Mon Jun 12 12:39:04 2000
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php.h,v 1.104 2000/06/12 18:48:18 andi Exp $ */
+/* $Id: php.h,v 1.105 2000/06/12 19:39:04 andi Exp $ */
#ifndef _PHP_H
#define _PHP_H
@@ -289,6 +289,7 @@
/* Virtual current directory support */
#ifdef VIRTUAL_DIR
+
#define V_GETCWD(buff, size) virtual_getcwd(buff,size)
#define V_FOPEN(path, mode) virtual_fopen(path, mode)
/* The V_OPEN macro will need to be used as V_OPEN((path, flags, ...)) */
@@ -307,8 +308,15 @@
#define V_MKDIR(pathname, mode) virtual_mkdir(pathname, mode)
#define V_RMDIR(pathname) virtual_rmdir(pathname)
#define V_OPENDIR(pathname) virtual_opendir(pathname)
+#ifdef PHP_WIN32
+/* Under Windows the "cd /cwd ; command" trick doesn't work */
+#define V_POPEN(command, type) popen(command, type)
+#else
#define V_POPEN(command, type) virtual_popen(command, type)
+#endif
+
#else
+
#define V_GETCWD(buff, size) getcwd(buff,size)
#define V_FOPEN(path, mode) fopen(path, mode)
#define V_OPEN(open_args) open open_args
@@ -323,6 +331,7 @@
#define V_RMDIR(pathname) rmdir(pathname)
#define V_OPENDIR(pathname) opendir(pathname)
#define V_POPEN(command, type) popen(command, type)
+
#endif
#include "zend_constants.h"
Index: php4/main/php_virtual_cwd.c
diff -u php4/main/php_virtual_cwd.c:1.53 php4/main/php_virtual_cwd.c:1.54
--- php4/main/php_virtual_cwd.c:1.53 Mon Jun 12 11:48:18 2000
+++ php4/main/php_virtual_cwd.c Mon Jun 12 12:39:04 2000
@@ -570,7 +570,7 @@
return NULL;
}
memcpy(ptr, "cd ", sizeof("cd ")-1);
- ptr += sizeof("cd ");
+ ptr += sizeof("cd ")-1;
if (CWDG(cwd).cwd_length == 0) {
*ptr++ = DEFAULT_SLASH;