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.
This commit is contained in:
parent
a58c13ed78
commit
fc5f9b45f6
2 changed files with 52 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
|||
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>
|
||||
|
||||
* 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/>. */
|
|||
#include <malloc.h>
|
||||
|
||||
static void set_user_model_id (void);
|
||||
static int ensure_unicows_dll (void);
|
||||
|
||||
int WINAPI
|
||||
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 modname[MAX_PATH];
|
||||
|
||||
if (!ensure_unicows_dll ())
|
||||
goto error;
|
||||
|
||||
set_user_model_id ();
|
||||
|
||||
if (!GetModuleFileName (NULL, modname, MAX_PATH))
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue