cvs: /php4 configuration-parser.y /php4/build ltlib.mk /php4/ext/standard browscap.c /php4/sapi/apache mod_php4.c php_apache.c sapi_apache.c

From: Date: Wed, 16 Feb 2000 17:46:14 +0000
Subject: cvs: /php4 configuration-parser.y /php4/build ltlib.mk /php4/ext/standard browscap.c /php4/sapi/apache mod_php4.c php_apache.c sapi_apache.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-10366@lists.php.net to get a copy of this message
zeev Wed Feb 16 09:46:14 2000 EDT Modified files: /php4 configuration-parser.y /php4/build ltlib.mk /php4/ext/standard browscap.c /php4/sapi/apache mod_php4.c php_apache.c sapi_apache.c Log: @- Updated the browscap module to work with PHP 4.0 (Zeev) Index: php4/configuration-parser.y diff -u php4/configuration-parser.y:1.32 php4/configuration-parser.y:1.33 --- php4/configuration-parser.y:1.32 Fri Feb 11 07:59:26 2000 +++ php4/configuration-parser.y Wed Feb 16 09:46:13 2000 @@ -19,7 +19,7 @@ -/* $Id: configuration-parser.y,v 1.32 2000/02/11 15:59:26 zeev Exp $ */ +/* $Id: configuration-parser.y,v 1.33 2000/02/16 17:46:13 zeev Exp $ */ #define DEBUG_CFG_PARSER 0 #include "php.h" @@ -38,7 +38,7 @@ #include "win32/wfile.h" #endif -#define YYSTYPE pval +#define YYSTYPE zval #define PARSING_MODE_CFG 0 #define PARSING_MODE_BROWSCAP 1 @@ -49,21 +49,21 @@ PHPAPI extern char *php_ini_path; #endif static HashTable *active_hash_table; -static pval *current_section; +static zval *current_section; static char *currently_parsed_filename; static int parsing_mode; -pval yylval; +zval yylval; -extern int cfglex(pval *cfglval); +extern int cfglex(zval *cfglval); extern FILE *cfgin; extern int cfglineno; extern void init_cfg_scanner(void); -pval *cfg_get_entry(char *name, uint name_length) +zval *cfg_get_entry(char *name, uint name_length) { - pval *tmp; + zval *tmp; if (zend_hash_find(&configuration_hash, name, name_length, (void **) &tmp)==SUCCESS) { return tmp; @@ -75,14 +75,14 @@ PHPAPI int cfg_get_long(char *varname,long *result) { - pval *tmp,var; + zval *tmp,var; if (zend_hash_find(&configuration_hash,varname,strlen(varname)+1,(void **) &tmp)==FAILURE) { *result=(long)NULL; return FAILURE; } var = *tmp; - pval_copy_constructor(&var); + zval_copy_ctor(&var); convert_to_long(&var); *result = var.value.lval; return SUCCESS; @@ -91,14 +91,14 @@ PHPAPI int cfg_get_double(char *varname,double *result) { - pval *tmp,var; + zval *tmp,var; if (zend_hash_find(&configuration_hash,varname,strlen(varname)+1,(void **) &tmp)==FAILURE) { *result=(double)0; return FAILURE; } var = *tmp; - pval_copy_constructor(&var); + zval_copy_ctor(&var); convert_to_double(&var); *result = var.value.dval; return SUCCESS; @@ -107,7 +107,7 @@ PHPAPI int cfg_get_string(char *varname, char **result) { - pval *tmp; + zval *tmp; if (zend_hash_find(&configuration_hash,varname,strlen(varname)+1,(void **) &tmp)==FAILURE) { *result=NULL; @@ -124,19 +124,20 @@ } -static void pvalue_config_destructor(pval *pvalue) +static void pvalue_config_destructor(zval **pvalue) { - if (pvalue->type == IS_STRING && pvalue->value.str.val != empty_string) { - free(pvalue->value.str.val); + if ((*pvalue)->type == IS_STRING && (*pvalue)->value.str.val != empty_string) { + free((*pvalue)->value.str.val); } + free(*pvalue); } -static void pvalue_browscap_destructor(pval *pvalue) +static void pvalue_browscap_destructor(zval *pvalue) { if (pvalue->type == IS_OBJECT || pvalue->type == IS_ARRAY) { - zend_hash_destroy(pvalue->value.ht); - free(pvalue->value.ht); + zend_hash_destroy(pvalue->value.obj.properties); + free(pvalue->value.obj.properties); } } @@ -145,7 +146,7 @@ { PLS_FETCH(); - if (zend_hash_init(&configuration_hash, 0, NULL, (void (*)(void *))pvalue_config_destructor, 1)==FAILURE) { + if (zend_hash_init(&configuration_hash, 0, NULL, (dtor_func_t) pvalue_config_destructor, 1)==FAILURE) { return FAILURE; } @@ -214,12 +215,12 @@ } if (opened_path) { - pval tmp; + zval tmp; tmp.value.str.val = opened_path; tmp.value.str.len = strlen(opened_path); tmp.type = IS_STRING; - zend_hash_update(&configuration_hash,"cfg_file_path",sizeof("cfg_file_path"),(void *) &tmp,sizeof(pval),NULL); + zend_hash_update(&configuration_hash,"cfg_file_path",sizeof("cfg_file_path"),(void *) &tmp,sizeof(zval),NULL); #if DEBUG_CFG_PARSER php_printf("INI file opened at '%s'\n",opened_path); #endif @@ -244,7 +245,7 @@ char *browscap = INI_STR("browscap"); if (browscap) { - if (zend_hash_init(&browser_hash, 0, NULL, (void (*)(void *))pvalue_browscap_destructor, 1)==FAILURE) { + if (zend_hash_init(&browser_hash, 0, NULL, (dtor_func_t) pvalue_browscap_destructor, 1)==FAILURE) { return FAILURE; } @@ -281,7 +282,7 @@ } -static void convert_browscap_pattern(pval *pattern) +static void convert_browscap_pattern(zval *pattern) { register int i,j; char *t; @@ -293,7 +294,7 @@ } if (i==pattern->value.str.len) { /* no wildcards */ - return; + pattern->value.str.val = zend_strndup(pattern->value.str.val, pattern->value.str.len); } t = (char *) malloc(pattern->value.str.len*2); @@ -317,10 +318,8 @@ } } t[j]=0; - free(pattern->value.str.val); pattern->value.str.val = t; pattern->value.str.len = j; - return; } @@ -410,19 +409,28 @@ #endif $3.type = IS_STRING; if (parsing_mode==PARSING_MODE_CFG) { - zend_hash_update(active_hash_table, $1.value.str.val, $1.value.str.len+1, &$3, sizeof(pval), NULL); + zend_hash_update(active_hash_table, $1.value.str.val, $1.value.str.len+1, &$3, sizeof(zval), NULL); if (active_hash_table == &configuration_hash) { php_alter_ini_entry($1.value.str.val, $1.value.str.len+1, $3.value.str.val, $3.value.str.len+1, PHP_INI_SYSTEM); } } else if (parsing_mode==PARSING_MODE_BROWSCAP) { - zend_str_tolower($1.value.str.val,$1.value.str.len); - zend_hash_update(current_section->value.ht, $1.value.str.val, $1.value.str.len+1, &$3, sizeof(pval), NULL); + if (current_section) { + zval *new_property; + + new_property = (zval *) malloc(sizeof(zval)); + INIT_PZVAL(new_property); + new_property->value.str.val = $3.value.str.val; + new_property->value.str.len = $3.value.str.len; + new_property->type = IS_STRING; + zend_str_tolower(new_property->value.str.val, new_property->value.str.len); + zend_hash_update(current_section->value.obj.properties, $1.value.str.val, $1.value.str.len+1, &new_property, sizeof(zval *), NULL); + } } free($1.value.str.val); } | TC_STRING { free($1.value.str.val); } | EXTENSION '=' string_foo { - pval dummy; + zval dummy; #if DEBUG_CFG_PARSER printf("Loading '%s'\n",$3.value.str.val); #endif @@ -455,18 +463,25 @@ } | SECTION { if (parsing_mode==PARSING_MODE_BROWSCAP) { - pval tmp; + zval *processed; /*printf("'%s' (%d)\n",$1.value.str.val,$1.value.str.len+1);*/ - tmp.value.ht = (HashTable *) malloc(sizeof(HashTable)); - zend_hash_init(tmp.value.ht, 0, NULL, (void (*)(void *))pvalue_config_destructor, 1); - tmp.type = IS_OBJECT; - zend_hash_update(active_hash_table, $1.value.str.val, $1.value.str.len+1, (void *) &tmp, sizeof(pval), (void **) &current_section); - tmp.value.str.val = zend_strndup($1.value.str.val,$1.value.str.len); - tmp.value.str.len = $1.value.str.len; - tmp.type = IS_STRING; - convert_browscap_pattern(&tmp); - zend_hash_update(current_section->value.ht,"browser_name_pattern",sizeof("browser_name_pattern"),(void *) &tmp, sizeof(pval), NULL); + current_section = (zval *) malloc(sizeof(zval)); + INIT_PZVAL(current_section); + processed = (zval *) malloc(sizeof(zval)); + INIT_PZVAL(processed); + + current_section->value.obj.ce = &zend_standard_class_def; + current_section->value.obj.properties = (HashTable *) malloc(sizeof(HashTable)); + current_section->type = IS_OBJECT; + zend_hash_init(current_section->value.obj.properties, 0, NULL, (dtor_func_t) pvalue_config_destructor, 1); + zend_hash_update(active_hash_table, $1.value.str.val, $1.value.str.len+1, (void *) &current_section, sizeof(zval *), NULL); + + processed->value.str.val = $1.value.str.val; + processed->value.str.len = $1.value.str.len; + processed->type = IS_STRING; + convert_browscap_pattern(processed); + zend_hash_update(current_section->value.obj.properties, "browser_name_pattern", sizeof("browser_name_pattern"), (void *) &processed, sizeof(zval *), NULL); } free($1.value.str.val); } Index: php4/build/ltlib.mk diff -u php4/build/ltlib.mk:1.1 php4/build/ltlib.mk:1.2 --- php4/build/ltlib.mk:1.1 Wed Dec 29 18:58:32 1999 +++ php4/build/ltlib.mk Wed Feb 16 09:46:13 2000 @@ -21,7 +21,7 @@ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ############################################################################## -# $Id: ltlib.mk,v 1.1 1999/12/30 02:58:32 sas Exp $ +# $Id: ltlib.mk,v 1.2 2000/02/16 17:46:13 zeev Exp $ # targets = $(LTLIBRARY_NAME) @@ -29,3 +29,5 @@ include $(topsrcdir)/build/rules.mk include $(topsrcdir)/build/library.mk +# CC = insure +CC = gcc Index: php4/ext/standard/browscap.c diff -u php4/ext/standard/browscap.c:1.21 php4/ext/standard/browscap.c:1.22 --- php4/ext/standard/browscap.c:1.21 Thu Feb 10 11:41:19 2000 +++ php4/ext/standard/browscap.c Wed Feb 16 09:46:13 2000 @@ -48,7 +48,7 @@ if (found_browser_entry) { /* already found */ return 0; } - zend_hash_find(browser->value.ht,"browser_name_pattern",sizeof("browser_name_pattern"),(void **) &browser_name); + zend_hash_find(browser->value.obj.properties, "browser_name_pattern",sizeof("browser_name_pattern"),(void **) &browser_name); if (!strchr(browser_name->value.str.val,'*')) { return 0; } @@ -64,7 +64,7 @@ PHP_FUNCTION(get_browser) { - pval **agent_name,**agent,tmp; + pval **agent_name,**agent, tmp; if (!INI_STR("browscap")) { RETURN_FALSE; @@ -104,13 +104,15 @@ *return_value = **agent; return_value->type = IS_OBJECT; pval_copy_constructor(return_value); - return_value->value.ht->pDestructor = ZVAL_DESTRUCTOR; + return_value->value.obj.properties->pDestructor = ZVAL_DESTRUCTOR; - while (zend_hash_find((*agent)->value.ht, "parent",sizeof("parent"), (void **) &agent_name)==SUCCESS) { + while (zend_hash_find((*agent)->value.obj.properties, "parent",sizeof("parent"), (void **) &agent_name)==SUCCESS) { + zval *tmp_copy; + if (zend_hash_find(&browser_hash,(*agent_name)->value.str.val, (*agent_name)->value.str.len+1, (void **)&agent)==FAILURE) { break; } - zend_hash_merge(return_value->value.ht,(*agent)->value.ht, ZVAL_COPY_CTOR, (void *) &tmp, sizeof(pval), 0); + zend_hash_merge(return_value->value.obj.properties,(*agent)->value.obj.properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(pval *), 0); } } Index: php4/sapi/apache/mod_php4.c diff -u php4/sapi/apache/mod_php4.c:1.30 php4/sapi/apache/mod_php4.c:1.31 --- php4/sapi/apache/mod_php4.c:1.30 Thu Feb 10 11:41:20 2000 +++ php4/sapi/apache/mod_php4.c Wed Feb 16 09:46:14 2000 @@ -17,7 +17,9 @@ | PHP 4.0 patches by Zeev Suraski <zeev@zend.com> | +----------------------------------------------------------------------+ */ -/* $Id: mod_php4.c,v 1.30 2000/02/10 19:41:20 zeev Exp $ */ +/* $Id: mod_php4.c,v 1.31 2000/02/16 17:46:14 zeev Exp $ */ + +#define _PHP_REGEX_H 1 #include "zend.h" #include "php.h" Index: php4/sapi/apache/php_apache.c diff -u php4/sapi/apache/php_apache.c:1.3 php4/sapi/apache/php_apache.c:1.4 --- php4/sapi/apache/php_apache.c:1.3 Thu Feb 10 12:24:28 2000 +++ php4/sapi/apache/php_apache.c Wed Feb 16 09:46:14 2000 @@ -17,8 +17,10 @@ | David Sklar <sklar@student.net> | +----------------------------------------------------------------------+ */ +/* $Id: php_apache.c,v 1.4 2000/02/16 17:46:14 zeev Exp $ */ -/* $Id: php_apache.c,v 1.3 2000/02/10 20:24:28 zeev Exp $ */ +#define _PHP_REGEX_H 1 + #include "php.h" #include "ext/standard/head.h" #include "php_globals.h" Index: php4/sapi/apache/sapi_apache.c diff -u php4/sapi/apache/sapi_apache.c:1.8 php4/sapi/apache/sapi_apache.c:1.9 --- php4/sapi/apache/sapi_apache.c:1.8 Fri Dec 31 17:32:00 1999 +++ php4/sapi/apache/sapi_apache.c Wed Feb 16 09:46:14 2000 @@ -19,7 +19,9 @@ | Stig Bakken <ssb@fast.no> | +----------------------------------------------------------------------+ */ -/* $Id: sapi_apache.c,v 1.8 2000/01/01 01:32:00 sas Exp $ */ +/* $Id: sapi_apache.c,v 1.9 2000/02/16 17:46:14 zeev Exp $ */ + +#define _PHP_REGEX_H 1 #include "php.h"

« previous php.version4 (#10366) next »