If you do: - unpack cli.tar.gz in /sapi - apply main.diff.txt patch in /main - ./configure --with-cli
That's it. This is cut-down version of cgi sapi with most of cgi specific stuff removed. Some bugs (like #12219) fixed (therefore the need for patch of /main). Edin P.S. If the list kills the attachments you can find them at: http://www.edin.dk/php/
cli.tar.gz
Description: GNU Zip compressed data
? main.diff.txt
Index: SAPI.h
===================================================================
RCS file: /repository/php4/main/SAPI.h,v
retrieving revision 1.78
diff -u -3 -p -r1.78 SAPI.h
--- SAPI.h 11 Dec 2001 15:31:01 -0000 1.78
+++ SAPI.h 6 Jan 2002 04:20:33 -0000
@@ -97,6 +97,10 @@ typedef struct {
/* this is necessary for Safe Mode */
char *current_user;
int current_user_length;
+
+ /* this is necessary for CLI module */
+ int argc;
+ char **argv;
} sapi_request_info;
Index: main.c
===================================================================
RCS file: /repository/php4/main/main.c,v
retrieving revision 1.416
diff -u -3 -p -r1.416 main.c
--- main.c 16 Dec 2001 22:45:57 -0000 1.416
+++ main.c 6 Jan 2002 04:20:33 -0000
@@ -861,6 +861,8 @@ int php_module_startup(sapi_module_struc
PG(header_is_being_sent) = 0;
SG(request_info).headers_only = 0;
SG(request_info).argv0 = NULL;
+ SG(request_info).argc=0;
+ SG(request_info).argv=(char **)NULL;
PG(connection_status) = PHP_CONNECTION_NORMAL;
PG(during_request_startup) = 0;
@@ -1195,7 +1197,21 @@ static void php_build_argv(char *s, zval
INIT_PZVAL(arr);
/* Prepare argv */
- if (s && *s) {
+ if (SG(request_info).argc) { /* are we in cli sapi? */
+ int i;
+ for (i=0; i<SG(request_info).argc; i++) {
+ ALLOC_ZVAL(tmp);
+ Z_TYPE_P(tmp) = IS_STRING;
+ Z_STRLEN_P(tmp) = strlen(SG(request_info).argv[i]);
+ Z_STRVAL_P(tmp) = estrndup(SG(request_info).argv[i],
+Z_STRLEN_P(tmp));
+ INIT_PZVAL(tmp);
+ if (zend_hash_next_index_insert(Z_ARRVAL_P(arr), &tmp,
+sizeof(pval *), NULL)==FAILURE) {
+ if (Z_TYPE_P(tmp) == IS_STRING) {
+ efree(Z_STRVAL_P(tmp));
+ }
+ }
+ }
+ } else if (s && *s) {
ss = s;
while (ss) {
space = strchr(ss, '+');
@@ -1225,7 +1241,11 @@ static void php_build_argv(char *s, zval
/* prepare argc */
ALLOC_ZVAL(argc);
- Z_LVAL_P(argc) = count;
+ if (SG(request_info).argc) {
+ Z_LVAL_P(argc) = SG(request_info).argc;
+ } else {
+ Z_LVAL_P(argc) = count;
+ }
Z_TYPE_P(argc) = IS_LONG;
INIT_PZVAL(argc);
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
