Hello,
here is a patch that implements shell_exit(). It is simliar to exit(), but
it does not print the return value.
regards,
Derick Rethans
---------------------------------------------------------------------
PHP: Scripting the Web - www.php.net - [EMAIL PROTECTED]
SRM: Site Resource Manager - www.vl-srm.net
---------------------------------------------------------------------
JDI Media Solutions - www.jdimedia.nl - [EMAIL PROTECTED]
Boulevard Heuvelink 102 - 6828 KT Arnhem - The Netherlands
---------------------------------------------------------------------
? .zend_compile.h.swp
Index: zend_compile.c
===================================================================
RCS file: /repository/Zend/zend_compile.c,v
retrieving revision 1.223
diff -u -r1.223 zend_compile.c
--- zend_compile.c 2001/12/04 17:56:19 1.223
+++ zend_compile.c 2001/12/18 10:44:47
@@ -2231,13 +2231,15 @@
}
-void zend_do_exit(znode *result, znode *message TSRMLS_DC)
+void zend_do_exit(znode *result, znode *message, int type TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
opline->opcode = ZEND_EXIT;
opline->op1 = *message;
- SET_UNUSED(opline->op2);
+ opline->op2.op_type = IS_CONST;
+ opline->op2.u.constant.type = IS_BOOL;
+ opline->op2.u.constant.value.lval = type;
result->op_type = IS_CONST;
result->u.constant.type = IS_BOOL;
Index: zend_compile.h
===================================================================
RCS file: /repository/Zend/zend_compile.h,v
retrieving revision 1.139
diff -u -r1.139 zend_compile.h
--- zend_compile.h 2001/12/04 17:56:19 1.139
+++ zend_compile.h 2001/12/18 10:44:48
@@ -335,7 +335,7 @@
void zend_do_end_heredoc(TSRMLS_D);
-void zend_do_exit(znode *result, znode *message TSRMLS_DC);
+void zend_do_exit(znode *result, znode *message, int type TSRMLS_DC);
void zend_do_begin_silence(znode *strudel_token TSRMLS_DC);
void zend_do_end_silence(znode *strudel_token TSRMLS_DC);
Index: zend_execute.c
===================================================================
RCS file: /repository/Zend/zend_execute.c,v
retrieving revision 1.291
diff -u -r1.291 zend_execute.c
--- zend_execute.c 2001/12/04 17:56:19 1.291
+++ zend_execute.c 2001/12/18 10:44:49
@@ -2392,7 +2392,9 @@
if (Z_TYPE_P(ptr) == IS_LONG) {
EG(exit_status) = Z_LVAL_P(ptr);
}
- zend_print_variable(ptr);
+ if (EX(opline)->op2.op_type == IS_CONST &&
+EX(opline)->op2.u.constant.value.lval) {
+ zend_print_variable(ptr);
+ }
FREE_OP(EX(Ts), &EX(opline)->op1,
EG(free_op1));
}
zend_bailout();
Index: zend_language_parser.y
===================================================================
RCS file: /repository/Zend/zend_language_parser.y,v
retrieving revision 1.15
diff -u -r1.15 zend_language_parser.y
--- zend_language_parser.y 2001/12/04 17:56:19 1.15
+++ zend_language_parser.y 2001/12/18 10:44:50
@@ -69,6 +69,7 @@
%right '['
%nonassoc T_NEW
%token T_EXIT
+%token T_SHELL_EXIT
%token T_IF
%left T_ELSEIF
%left T_ELSE
@@ -477,7 +478,8 @@
| T_OBJECT_CAST expr { zend_do_cast(&$$, &$2, IS_OBJECT TSRMLS_CC);
}
| T_BOOL_CAST expr { zend_do_cast(&$$, &$2, IS_BOOL TSRMLS_CC); }
| T_UNSET_CAST expr { zend_do_cast(&$$, &$2, IS_NULL TSRMLS_CC); }
- | T_EXIT exit_expr { zend_do_exit(&$$, &$2 TSRMLS_CC); }
+ | T_EXIT exit_expr { zend_do_exit(&$$, &$2, 1 TSRMLS_CC); }
+ | T_SHELL_EXIT exit_expr { zend_do_exit(&$$, &$2, 0 TSRMLS_CC); }
| '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr {
zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; }
| scalar { $$ = $1; }
| T_ARRAY '(' array_pair_list ')' { $$ = $3; }
Index: zend_language_scanner.l
===================================================================
RCS file: /repository/Zend/zend_language_scanner.l,v
retrieving revision 1.41
diff -u -r1.41 zend_language_scanner.l
--- zend_language_scanner.l 2001/12/04 17:56:19 1.41
+++ zend_language_scanner.l 2001/12/18 10:44:51
@@ -471,6 +471,10 @@
return T_EXIT;
}
+<ST_IN_SCRIPTING>"shell_exit" {
+ return T_SHELL_EXIT;
+}
+
<ST_IN_SCRIPTING>"die" {
return T_EXIT;
}
--
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]