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]