Commit fc5f9b45 authored by Eli Zaretskii's avatar Eli Zaretskii

Last part of fix for bug #8562 with Emacs on Windows 9X.

 nt/runemacs.c (ensure_unicows_dll): New function, tries to load
 UNICOWS.DLL on Windows 9X.
 (WinMain): If ensure_unicows_dll fails to find UNICOWS.DLL,
 display a dialog to the effect that Emacs cannot be started.
parent a58c13ed
2011-11-04 Eli Zaretskii <eliz@gnu.org>
* runemacs.c (ensure_unicows_dll): New function, tries to load
UNICOWS.DLL on Windows 9X.
(WinMain): If ensure_unicows_dll fails to find UNICOWS.DLL,
display a dialog to the effect that Emacs cannot be started.
(Bug#8562)
2011-10-28 Eli Zaretskii <eliz@gnu.org> 2011-10-28 Eli Zaretskii <eliz@gnu.org>
* README.W32: Mention UNICOWS.DLL as prerequisite for running * README.W32: Mention UNICOWS.DLL as prerequisite for running
......
...@@ -45,6 +45,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ ...@@ -45,6 +45,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <malloc.h> #include <malloc.h>
static void set_user_model_id (void); static void set_user_model_id (void);
static int ensure_unicows_dll (void);
int WINAPI int WINAPI
WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow)
...@@ -59,6 +60,9 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) ...@@ -59,6 +60,9 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow)
char *p; char *p;
char modname[MAX_PATH]; char modname[MAX_PATH];
if (!ensure_unicows_dll ())
goto error;
set_user_model_id (); set_user_model_id ();
if (!GetModuleFileName (NULL, modname, MAX_PATH)) if (!GetModuleFileName (NULL, modname, MAX_PATH))
...@@ -203,3 +207,43 @@ set_user_model_id (void) ...@@ -203,3 +207,43 @@ set_user_model_id (void)
} }
} }
static int
ensure_unicows_dll (void)
{
OSVERSIONINFO os_ver;
HMODULE h;
ZeroMemory (&os_ver, sizeof (OSVERSIONINFO));
os_ver.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (!GetVersionEx (&os_ver))
return 0;
if (os_ver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
h = LoadLibrary ("Unicows.dll");
if (!h)
{
int button;
button = MessageBox (NULL,
"Emacs cannot load the UNICOWS.DLL library.\n"
"This library is essential for using Emacs\n"
"on this system. You need to install it.\n\n"
"However, you can still use Emacs by invoking\n"
"it with the '-nw' command-line option.\n\n"
"Emacs will exit when you click OK.",
"Emacs cannot load UNICOWS.DLL",
MB_ICONERROR | MB_TASKMODAL
| MB_SETFOREGROUND | MB_OK);
switch (button)
{
case IDOK:
default:
return 0;
}
}
FreeLibrary (h);
return 1;
}
return 1;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment