summaryrefslogtreecommitdiff
path: root/nt/addpm.c
diff options
context:
space:
mode:
authorJuanma Barranquero <lekktu@gmail.com>2015-10-24 04:31:30 +0200
committerJuanma Barranquero <lekktu@gmail.com>2015-10-25 00:34:52 +0200
commitcbbea701c6956961b55ed754fbfe2ae6329f940b (patch)
treee3c394c90ad974d2dba5a6c1c6e972a4c98f5fc5 /nt/addpm.c
parent8c5747ea98e82b3f2112abf0b62a509649101903 (diff)
downloademacs-cbbea701c6956961b55ed754fbfe2ae6329f940b.tar.gz
addpm.c: Replace existing entries, but do not create new ones
* nt/addpm.c (add_registry): If the Emacs registry key exists, replace existing values from previous versions, but do not add new ones; the key could exist for other reasons unrelated to old Emacsen, like X-style resources, or to set some environment variables like HOME or LANG, and in that case we don't want to populate it with obsolete values.
Diffstat (limited to 'nt/addpm.c')
-rw-r--r--nt/addpm.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/nt/addpm.c b/nt/addpm.c
index ba0eb36b080..caa3272180e 100644
--- a/nt/addpm.c
+++ b/nt/addpm.c
@@ -186,17 +186,20 @@ add_registry (const char *path)
have any resources. */
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_ROOT, 0,
- KEY_WRITE, &hrootkey) != ERROR_SUCCESS
+ KEY_WRITE | KEY_QUERY_VALUE, &hrootkey) != ERROR_SUCCESS
&& RegOpenKeyEx (HKEY_CURRENT_USER, REG_ROOT, 0,
- KEY_WRITE, &hrootkey) != ERROR_SUCCESS)
+ KEY_WRITE | KEY_QUERY_VALUE, &hrootkey) != ERROR_SUCCESS)
return;
for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++)
{
const char * value = env_vars[i].value ? env_vars[i].value : path;
- RegSetValueEx (hrootkey, env_vars[i].name, 0, REG_EXPAND_SZ,
- value, lstrlen (value) + 1);
+ /* Replace only those settings that already exist. */
+ if (RegQueryValueEx (hrootkey, env_vars[i].name, NULL,
+ NULL, NULL, NULL) == ERROR_SUCCESS)
+ RegSetValueEx (hrootkey, env_vars[i].name, 0, REG_EXPAND_SZ,
+ value, lstrlen (value) + 1);
}
RegCloseKey (hrootkey);