cvs: php-src(PHP_4_3) /win32 php_registry.h registry.c
| From: | Stanislav Malyshev | Date: | Tue, 16 Mar 2004 18:27:58 +0000 |
| Subject: | cvs: php-src(PHP_4_3) /win32 php_registry.h registry.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-26677@lists.php.net to get a copy of this message | ||
stas Tue Mar 16 13:27:58 2004 EDT
Modified files: (Branch: PHP_4_3)
/php-src/win32 php_registry.h registry.c
Log:
MFH registry fixes:
fix off-by-one in registry per-dir values
add IniFilePath value for setting php.ini path via registry
http://cvs.php.net/diff.php/php-src/win32/php_registry.h?r1=1.3&r2=1.3.10.1&ty=u
Index: php-src/win32/php_registry.h
diff -u php-src/win32/php_registry.h:1.3 php-src/win32/php_registry.h:1.3.10.1
--- php-src/win32/php_registry.h:1.3 Sat Aug 4 21:42:48 2001
+++ php-src/win32/php_registry.h Tue Mar 16 13:27:55 2004
@@ -3,5 +3,6 @@
void UpdateIniFromRegistry(char *path TSRMLS_DC);
+char *GetIniPathFromRegistry();
#endif /* PHP_REGISTRY_H */
http://cvs.php.net/diff.php/php-src/win32/registry.c?r1=1.12&r2=1.12.2.1&ty=u
Index: php-src/win32/registry.c
diff -u php-src/win32/registry.c:1.12 php-src/win32/registry.c:1.12.2.1
--- php-src/win32/registry.c:1.12 Mon Oct 14 08:05:09 2002
+++ php-src/win32/registry.c Tue Mar 16 13:27:55 2004
@@ -1,13 +1,15 @@
#include "php.h"
#include "php_ini.h"
+#define PHP_REGISTRY_KEY "SOFTWARE\\PHP"
+
void UpdateIniFromRegistry(char *path TSRMLS_DC)
{
char *p, *orig_path;
HKEY MainKey;
char *strtok_buf = NULL;
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\PHP\\Per Directory Values", 0, KEY_READ,
&MainKey)!=ERROR_SUCCESS) {
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY "\\Per Directory Values", 0,
KEY_READ, &MainKey)!=ERROR_SUCCESS) {
return;
}
@@ -70,7 +72,8 @@
RegEnumValue(hKey, i, namebuf, &namebuf_len, NULL, &lType, valuebuf,
&valuebuf_len);
if ((lType == REG_SZ) || (lType == REG_EXPAND_SZ)) {
- zend_alter_ini_entry(namebuf, namebuf_len + 1, valuebuf, valuebuf_len, PHP_INI_SYSTEM,
PHP_INI_STAGE_ACTIVATE);
+ /* valuebuf_len includes terminating 0 */
+ zend_alter_ini_entry(namebuf, namebuf_len + 1, valuebuf, valuebuf_len?valuebuf_len-1:0,
PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
}
i++;
@@ -86,3 +89,23 @@
RegCloseKey(MainKey);
efree(orig_path);
}
+
+#define PHPRC_REGISTRY_NAME "IniFilePath"
+
+char *GetIniPathFromRegistry()
+{
+ char *reg_location = NULL;
+ HKEY hKey;
+
+ if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, PHP_REGISTRY_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS) {
+ DWORD buflen = MAXPATHLEN;
+ reg_location = emalloc(MAXPATHLEN+1);
+ if(RegQueryValueEx(hKey, PHPRC_REGISTRY_NAME, 0, NULL, reg_location, &buflen) !=
ERROR_SUCCESS) {
+ efree(reg_location);
+ reg_location = NULL;
+ return reg_location;
+ }
+ RegCloseKey(hKey);
+ }
+ return reg_location;
+}