A) Isn't it late in the RC cycle to be adding features?

B) You're mising a ;   (line 259)

-Sara

----- Original Message ----- 
From: "Andrei Zmievski" <[EMAIL PROTECTED]>
Newsgroups: php.zend-engine.cvs
To: <[EMAIL PROTECTED]>
Sent: Friday, May 14, 2004 1:58 PM
Subject: cvs: ZendEngine2 / zend_ini_parser.y zend_ini_scanner.l


> andrei Fri May 14 16:58:15 2004 EDT
>
>   Modified files:
>     /ZendEngine2 zend_ini_parser.y zend_ini_scanner.l
>   Log:
>   Adding ability to refer to existing .ini variables from within .ini
>   files. Example:
>
>   open_basedir = ${open_basedir} ":/new/dir"
>
>
>
>
http://cvs.php.net/diff.php/ZendEngine2/zend_ini_parser.y?r1=1.29&r2=1.30&ty=u
> Index: ZendEngine2/zend_ini_parser.y
> diff -u ZendEngine2/zend_ini_parser.y:1.29
ZendEngine2/zend_ini_parser.y:1.30
> --- ZendEngine2/zend_ini_parser.y:1.29 Tue Jan 13 12:00:10 2004
> +++ ZendEngine2/zend_ini_parser.y Fri May 14 16:58:15 2004
> @@ -17,7 +17,7 @@
>
+----------------------------------------------------------------------+
>  */
>
> -/* $Id: zend_ini_parser.y,v 1.29 2004/01/13 17:00:10 wez Exp $ */
> +/* $Id: zend_ini_parser.y,v 1.30 2004/05/14 20:58:15 andrei Exp $ */
>
>  #define DEBUG_CFG_PARSER 0
>  #include "zend.h"
> @@ -92,6 +92,24 @@
>   result->type = IS_STRING;
>  }
>
> +void zend_ini_init_string(zval *result)
> +{
> + result->value.str.val = malloc(1);
> + result->value.str.val[0] = 0;
> + result->value.str.len = 0;
> + result->type = IS_STRING;
> +}
> +
> +void zend_ini_add_string(zval *result, zval *op1, zval *op2)
> +{
> +    int length = op1->value.str.len + op2->value.str.len;
> +
> + result->value.str.val = (char *) realloc(op1->value.str.val, length+1);
> +    memcpy(result->value.str.val+op1->value.str.len, op2->value.str.val,
op2->value.str.len);
> +    result->value.str.val[length] = 0;
> +    result->value.str.len = length;
> +    result->type = IS_STRING;
> +}
>
>  void zend_ini_get_constant(zval *result, zval *name)
>  {
> @@ -112,6 +130,20 @@
>   }
>  }
>
> +void zend_ini_get_var(zval *result, zval *name)
> +{
> + zval curval;
> + char *envvar;
> + TSRMLS_FETCH();
> +
> + if (zend_get_configuration_directive(name->value.str.val,
name->value.str.len+1, &curval) == SUCCESS) {
> + result->value.str.val = zend_strndup(curval.value.str.val,
curval.value.str.len);
> + result->value.str.len = curval.value.str.len;
> + } else {
> + zend_ini_init_string(result);
> + }
> +}
> +
>
>  static void ini_error(char *str)
>  {
> @@ -175,6 +207,7 @@
>  %token SECTION
>  %token CFG_TRUE
>  %token CFG_FALSE
> +%token TC_DOLLAR_CURLY
>  %left '|' '&'
>  %right '~' '!'
>
> @@ -210,13 +243,25 @@
>
>  string_or_value:
>   expr { $$ = $1; }
> - | TC_ENCAPSULATED_STRING { $$ = $1; }
>   | CFG_TRUE { $$ = $1; }
>   | CFG_FALSE { $$ = $1; }
> - | '\n' { $$.value.str.val = strdup(""); $$.value.str.len=0; $$.type =
IS_STRING; }
> - | /* empty */ { $$.value.str.val = strdup(""); $$.value.str.len=0;
$$.type = IS_STRING; }
> + |   var_string_list { $$ = $1; }
> + | '\n' { zend_ini_init_string(&$$); }
> + | /* empty */ { zend_ini_init_string(&$$); }
>  ;
>
> +
> +var_string_list:
> + var_string_list cfg_var_ref { zend_ini_add_string(&$$, &$1, &$2);
free($2.value.str.val); }
> + | var_string_list TC_ENCAPSULATED_STRING { zend_ini_add_string(&$$, &$1,
&$2); }
> + | var_string_list constant_string { zend_ini_add_string(&$$, &$1,
&$2); }
> + | /* empty */ { zend_ini_init_string(&$$); }
> +
> +
> +cfg_var_ref:
> + TC_DOLLAR_CURLY TC_STRING '}' { zend_ini_get_var(&$$, &$2); }
> +
> +
>  expr:
>   constant_string { $$ = $1; }
>   | expr '|' expr { zend_ini_do_op('|', &$$, &$1, &$3); }
>
http://cvs.php.net/diff.php/ZendEngine2/zend_ini_scanner.l?r1=1.33&r2=1.34&ty=u
> Index: ZendEngine2/zend_ini_scanner.l
> diff -u ZendEngine2/zend_ini_scanner.l:1.33
ZendEngine2/zend_ini_scanner.l:1.34
> --- ZendEngine2/zend_ini_scanner.l:1.33 Thu Jan  8 03:23:23 2004
> +++ ZendEngine2/zend_ini_scanner.l Fri May 14 16:58:15 2004
> @@ -17,7 +17,7 @@
>
+----------------------------------------------------------------------+
>  */
>
> -/* $Id: zend_ini_scanner.l,v 1.33 2004/01/08 08:23:23 andi Exp $ */
> +/* $Id: zend_ini_scanner.l,v 1.34 2004/05/14 20:58:15 andrei Exp $ */
>
>  #define yyleng SCNG(yy_leng)
>  #define yytext SCNG(yy_text)
> @@ -153,12 +153,20 @@
>   return TC_ENCAPSULATED_STRING;
>  }
>
> -<INITIAL>[&|~()!] {
> +<INITIAL>[&|~$(){}!] {
>   return yytext[0];
>  }
>
> +<INITIAL>"${" {
> + return TC_DOLLAR_CURLY;
> +}
> +
> +<INITIAL>"}" {
> + ini_lval->value.lval = (long) yytext[0];
> + return yytext[0];
> +}
>
> -<INITIAL>[^=\n\r\t;|&~()!"\[]+ {
> +<INITIAL>[^=\n\r\t;|&$~(){}!"\[]+ {
>   /* STRING */
>   register int i;
>
> @@ -190,8 +198,6 @@
>   }
>  }
>
> -
> -
>  <INITIAL>[=\n] {
>   if (yytext[0] == '\n') {
>   SCNG(lineno)++;

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to