Skip to content

Commit

Permalink
Forgot to add these - Win32 registry support
Browse files Browse the repository at this point in the history
  • Loading branch information
zsuraski committed Apr 18, 1999
1 parent 342c6e0 commit f432c05
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
7 changes: 7 additions & 0 deletions win32/php_registry.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#ifndef _PHP_REGISTRY_H
#define _PHP_REGISTRY_H


void UpdateIniFromRegistry(char *path);

#endif /* _PHP_REGISTRY_H */
74 changes: 74 additions & 0 deletions win32/registry.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#include "php.h"
#include "php_ini.h"
#include "php_registry.h"

void UpdateIniFromRegistry(char *path)
{
char *p, *orig_path;
HKEY MainKey;


if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\PHP\\Per Directory Values", 0, KEY_READ, &MainKey)!=ERROR_SUCCESS) {
return;
}


orig_path = path = estrdup(path);

/* Get rid of C:, if exists */
p = strchr(path, ':');
if (p) {
path = p+1;
} else {
if (path[0] != '\\' && path[0] != '/') {
char tmp_buf[MAXPATHLEN], *cwd;

/* get current working directory and prepend it to the path */
if (!getcwd(tmp_buf, MAXPATHLEN)) {
efree(orig_path);
return;
}
cwd = strchr(tmp_buf, ':');
if (!cwd) {
cwd = tmp_buf;
} else {
cwd++;
}
path = (char *) emalloc(strlen(cwd)+1+strlen(orig_path)+1);
sprintf(path, "%s\\%s", cwd, orig_path);
efree(orig_path);
orig_path = path;
}
}


path++; /* step over the first / */
path = p = strtok(path, "\\/");

while (p) {
HKEY hKey;
char namebuf[256], valuebuf[256];
DWORD lType;
DWORD namebuf_length=256, valuebuf_length=256;
DWORD i=0;

if (p>path) {
*(p-1) = '\\';
}
if (RegOpenKeyEx(MainKey, path, 0, KEY_READ, &hKey)!=ERROR_SUCCESS) {
break;
}
while (RegEnumValue(hKey, i++, namebuf, &namebuf_length, NULL, &lType, valuebuf, &valuebuf_length)==ERROR_SUCCESS) {
if (lType != REG_SZ) {
continue;
}
printf("%s -> %s\n", namebuf, valuebuf);
php_alter_ini_entry(namebuf, namebuf_length+1, valuebuf, valuebuf_length+1, PHP_INI_PERDIR);
}

RegCloseKey(hKey);
p = strtok(NULL, "\\/");
}
RegCloseKey(MainKey);
efree(orig_path);
}

0 comments on commit f432c05

Please sign in to comment.