addpm.c: Do not add obsolete GTK libraries to the path.

* nt/addpm.c (REG_GTK, REG_RUNEMACS_PATH): Delete.
(add_registry): Remove variables `size' and `gtk_key'.
Do not add the GTK DLL directory to the library search path; it is
confusing behavior (in particular, the same Emacs version with and
without invoking addpm will use a different path), and the GTK image
libraries are obsolete anyway.
This commit is contained in:
Juanma Barranquero 2015-10-25 00:20:03 +02:00
parent cbbea701c6
commit 87a30649e7

View file

@ -66,11 +66,8 @@ DdeCallback (UINT uType, UINT uFmt, HCONV hconv,
CF_TEXT, XTYP_EXECUTE, 30000, NULL)
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
#define REG_GTK "SOFTWARE\\GTK\\2.0"
#define REG_APP_PATH \
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe"
#define REG_RUNEMACS_PATH \
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\runemacs.exe"
static struct entry
{
@ -109,7 +106,6 @@ add_registry (const char *path)
{
HKEY hrootkey = NULL;
int i;
DWORD size;
/* Record the location of Emacs to the App Paths key if we have
sufficient permissions to do so. This helps Windows find emacs quickly
@ -126,54 +122,12 @@ add_registry (const char *path)
{
int len;
char *emacs_path;
HKEY gtk_key = NULL;
len = strlen (path) + 15; /* \bin\emacs.exe + terminator. */
emacs_path = (char *) alloca (len);
sprintf (emacs_path, "%s\\bin\\emacs.exe", path);
RegSetValueEx (hrootkey, NULL, 0, REG_EXPAND_SZ, emacs_path, len);
/* Look for a GTK installation. If found, add it to the library search
path for Emacs so that the image libraries it provides are available
to Emacs regardless of whether it is in the path or not. */
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_GTK, 0,
KEY_READ, &gtk_key) == ERROR_SUCCESS)
{
if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL,
NULL, &size) == ERROR_SUCCESS)
{
char *gtk_path = (char *) alloca (size);
if (RegQueryValueEx (gtk_key, "DllPath", NULL, NULL,
gtk_path, &size) == ERROR_SUCCESS)
{
/* Make sure the emacs bin directory continues to be searched
first by including it as well. */
char *dll_paths;
HKEY runemacs_key = NULL;
len = strlen (path) + 5 + size;
dll_paths = (char *) alloca (size + strlen (path) + 1);
sprintf (dll_paths, "%s\\bin;%s", path, gtk_path);
RegSetValueEx (hrootkey, "Path", 0, REG_EXPAND_SZ,
dll_paths, len);
/* Set the same path for runemacs.exe, as the Explorer shell
looks this up, so the above does not take effect when
emacs.exe is spawned from runemacs.exe. */
if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_RUNEMACS_PATH,
0, "", REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, &runemacs_key, NULL)
== ERROR_SUCCESS)
{
RegSetValueEx (runemacs_key, "Path", 0, REG_EXPAND_SZ,
dll_paths, len);
RegCloseKey (runemacs_key);
}
}
}
RegCloseKey (gtk_key);
}
RegCloseKey (hrootkey);
}