cvs: /php4 configuration-parser.y php4.dsw php4dll.dsp /php4/ext/standard basic_functions.c basic_functions.h
| From: | Zeev Suraski | Date: | Sat, 04 Mar 2000 02:59:45 +0000 |
| Subject: | cvs: /php4 configuration-parser.y php4.dsw php4dll.dsp /php4/ext/standard basic_functions.c basic_functions.h | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-11502@lists.php.net to get a copy of this message | ||
zeev Fri Mar 3 18:59:45 2000 EDT
Modified files:
/php4 configuration-parser.y php4.dsw php4dll.dsp
/php4/ext/standard basic_functions.c basic_functions.h
Log:
@- Added parse_ini_file(). Currently implemented in non thread safe version
@ of PHP, and currently lacks section support (Zeev)
- Bring the non thread safe .dsp's uptodate
Index: php4/configuration-parser.y
diff -u php4/configuration-parser.y:1.37 php4/configuration-parser.y:1.38
--- php4/configuration-parser.y:1.37 Sat Feb 26 14:14:49 2000
+++ php4/configuration-parser.y Fri Mar 3 18:59:14 2000
@@ -19,7 +19,7 @@
-/* $Id: configuration-parser.y,v 1.37 2000/02/26 22:14:49 zeev Exp $ */
+/* $Id: configuration-parser.y,v 1.38 2000/03/04 02:59:14 zeev Exp $ */
#define DEBUG_CFG_PARSER 0
#include "php.h"
@@ -40,8 +40,9 @@
#define YYSTYPE zval
-#define PARSING_MODE_CFG 0
-#define PARSING_MODE_BROWSCAP 1
+#define PARSING_MODE_CFG 0
+#define PARSING_MODE_BROWSCAP 1
+#define PARSING_MODE_STANDALONE 2
static HashTable configuration_hash;
extern HashTable browser_hash;
@@ -263,6 +264,34 @@
}
+PHP_FUNCTION(parse_ini_file)
+{
+#if ZTS
+ php_error(E_WARNING, "parse_ini_file() is not supported in multithreaded PHP");
+ RETURN_FALSE;
+#else
+ zval **filename;
+
+ if (ARG_COUNT(ht)!=1 || zend_get_parameters_ex(1, &filename)==FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_string_ex(filename);
+ cfgin = fopen((*filename)->value.str.val, "r");
+ if (!cfgin) {
+ php_error(E_WARNING,"Cannot open '%s' for reading",
(*filename)->value.str.val);
+ return FAILURE;
+ }
+ array_init(return_value);
+ init_cfg_scanner();
+ active_hash_table = return_value->value.ht;
+ parsing_mode = PARSING_MODE_STANDALONE;
+ currently_parsed_filename = (*filename)->value.str.val;
+ yyparse();
+ fclose(cfgin);
+#endif
+}
+
+
int php_shutdown_config(void)
{
zend_hash_destroy(&configuration_hash);
@@ -405,24 +434,38 @@
printf("'%s' = '%s'\n",$1.value.str.val,$3.value.str.val);
#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(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, PHP_INI_STAGE_STARTUP);
- }
- } else if (parsing_mode==PARSING_MODE_BROWSCAP) {
- 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);
- }
- }
+ switch (parsing_mode) {
+ case PARSING_MODE_CFG:
+ 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, PHP_INI_STAGE_STARTUP);
+ }
+ break;
+ case PARSING_MODE_BROWSCAP:
+ 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);
+ }
+ break;
+ case PARSING_MODE_STANDALONE: {
+ zval *entry;
+
+ MAKE_STD_ZVAL(entry);
+ entry->value.str.val = estrndup($3.value.str.val, $3.value.str.len);
+ entry->value.str.len = $3.value.str.len;
+ entry->type = IS_STRING;
+ zend_hash_update(active_hash_table, $1.value.str.val, $1.value.str.len+1, &entry,
sizeof(zval *), NULL);
+ pvalue_config_destructor(&$3);
+ }
+ break;
+ }
free($1.value.str.val);
}
| TC_STRING { free($1.value.str.val); }
Index: php4/php4.dsw
diff -u php4/php4.dsw:1.7 php4/php4.dsw:1.8
--- php4/php4.dsw:1.7 Sun Dec 19 13:29:06 1999
+++ php4/php4.dsw Fri Mar 3 18:59:14 2000
@@ -15,6 +15,18 @@
###############################################################################
+Project: "libmysql"=.\ext\mysql\libmysql\libmysql.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "php4"=.\php4.dsp - Package Owner=<4>
Package=<5>
@@ -40,6 +52,9 @@
{{{
Begin Project Dependency
Project_Dep_Name Zend
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name libmysql
End Project Dependency
}}}
Index: php4/php4dll.dsp
diff -u php4/php4dll.dsp:1.34 php4/php4dll.dsp:1.35
--- php4/php4dll.dsp:1.34 Wed Feb 16 08:46:01 2000
+++ php4/php4dll.dsp Fri Mar 3 18:59:14 2000
@@ -54,7 +54,7 @@
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug
/machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib /nologo /dll
/debug /machine:I386 /nodefaultlib:"libcmt" /nodefaultlib:"libc"
/nodefaultlib:"libcmtd" /out:"Debug/php4nts.dll" /pdbtype:sept
/libpath:"TSRM\Debug" /libpath:"Zend\Debug"
/libpath:"..\bindlib_w32\Debug"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib libmysql.lib
/nologo /dll /debug /machine:I386 /nodefaultlib:"libcmt" /nodefaultlib:"libc"
/nodefaultlib:"libcmtd" /out:"Debug/php4nts.dll" /pdbtype:sept
/libpath:"TSRM\Debug" /libpath:"Zend\Debug"
/libpath:"..\bindlib_w32\Debug" /libpath:"ext\mysql\libmysql\Debug_TS"
!ELSEIF "$(CFG)" == "php4dll - Win32 Release"
@@ -80,7 +80,7 @@
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib /nologo /dll
/machine:I386 /nodefaultlib:"libc.lib" /out:"Release/php4nts.dll"
/libpath:"TSRM\Release" /libpath:"Zend\Release"
/libpath:"..\bindlib_w32\Release"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib libmysql.lib
/nologo /dll /machine:I386 /nodefaultlib:"libc.lib" /out:"Release/php4nts.dll"
/libpath:"TSRM\Release" /libpath:"Zend\Release"
/libpath:"..\bindlib_w32\Release" /libpath:"ext\mysql\libmysql\Release_TS"
!ELSEIF "$(CFG)" == "php4dll - Win32 Release_inline"
@@ -107,7 +107,7 @@
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib
/nologo /dll /machine:I386 /nodefaultlib:"libc.lib" /out:"Release/php4nts.dll"
/libpath:"TSRM\Release" /libpath:"Zend\Release"
/libpath:"..\bindlib_w32\Release"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib /nologo /dll
/machine:I386 /nodefaultlib:"libc.lib" /out:"Release/php4nts.dll"
/libpath:"TSRM\Release" /libpath:"Zend\Release"
/libpath:"..\bindlib_w32\Release"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Zend.lib resolv.lib libmysql.lib
/nologo /dll /machine:I386 /nodefaultlib:"libc.lib" /out:"Release/php4nts.dll"
/libpath:"TSRM\Release" /libpath:"Zend\Release"
/libpath:"..\bindlib_w32\Release"
!ENDIF
@@ -183,6 +183,10 @@
# End Source File
# Begin Source File
+SOURCE=.\php_ticks.c
+# End Source File
+# Begin Source File
+
SOURCE=.\php_variables.c
# End Source File
# Begin Source File
@@ -279,6 +283,10 @@
# End Source File
# Begin Source File
+SOURCE=.\php_ticks.h
+# End Source File
+# Begin Source File
+
SOURCE=.\php_variables.h
# End Source File
# Begin Source File
@@ -443,6 +451,11 @@
# End Source File
# Begin Source File
+SOURCE=.\ext\mysql\php_mysql.c
+# ADD CPP /I "ext\mysql\libmysql"
+# End Source File
+# Begin Source File
+
SOURCE=.\ext\odbc\php_odbc.c
# End Source File
# Begin Source File
@@ -591,6 +604,10 @@
# Begin Source File
SOURCE=.\ext\standard\php_mail.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\ext\mysql\php_mysql.h
# End Source File
# Begin Source File
Index: php4/ext/standard/basic_functions.c
diff -u php4/ext/standard/basic_functions.c:1.168 php4/ext/standard/basic_functions.c:1.169
--- php4/ext/standard/basic_functions.c:1.168 Sat Feb 26 07:36:23 2000
+++ php4/ext/standard/basic_functions.c Fri Mar 3 18:59:14 2000
@@ -305,7 +305,9 @@
PHP_FE(get_loaded_extensions, NULL)
PHP_FE(extension_loaded, NULL)
PHP_FE(get_extension_funcs, NULL)
-
+
+ PHP_FE(parse_ini_file, NULL)
+
{NULL, NULL, NULL}
};
Index: php4/ext/standard/basic_functions.h
diff -u php4/ext/standard/basic_functions.h:1.47 php4/ext/standard/basic_functions.h:1.48
--- php4/ext/standard/basic_functions.h:1.47 Sat Feb 26 06:53:18 2000
+++ php4/ext/standard/basic_functions.h Fri Mar 3 18:59:14 2000
@@ -29,7 +29,7 @@
*/
-/* $Id: basic_functions.h,v 1.47 2000/02/26 14:53:18 zeev Exp $ */
+/* $Id: basic_functions.h,v 1.48 2000/03/04 02:59:14 zeev Exp $ */
#ifndef _BASIC_FUNCTIONS_H
#define _BASIC_FUNCTIONS_H
@@ -106,6 +106,9 @@
PHP_FUNCTION(get_loaded_extensions);
PHP_FUNCTION(extension_loaded);
PHP_FUNCTION(get_extension_funcs);
+
+/* From the INI parser */
+PHP_FUNCTION(parse_ini_file);
#ifdef PHP_WIN32
typedef unsigned int php_stat_len;