diff options
author | Geoff Voelker <voelker@cs.washington.edu> | 1997-08-17 01:44:27 +0000 |
---|---|---|
committer | Geoff Voelker <voelker@cs.washington.edu> | 1997-08-17 01:44:27 +0000 |
commit | 7dec566dc47955fb043042264f7f95e76baa8add (patch) | |
tree | abd44a33bee3d3eb909c84d69f79cb67eea70e90 | |
parent | 31515f9bbd17f048839d9079139b8a836447a77a (diff) | |
download | emacs-7dec566dc47955fb043042264f7f95e76baa8add.tar.gz |
(env_vars): Set SHELL to cmdproxy.
(main): Initialize idDde to 0.
Determine emacs_path from module file name.
Prompt for install.
-rw-r--r-- | nt/addpm.c | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/nt/addpm.c b/nt/addpm.c index 2138143ccd9..56718f9a76b 100644 --- a/nt/addpm.c +++ b/nt/addpm.c @@ -55,7 +55,7 @@ env_vars[] = { {"emacs_dir", NULL}, {"EMACSLOADPATH", "%emacs_dir%/lisp;%emacs_dir%/site-lisp"}, - {"SHELL", "%COMSPEC%"}, + {"SHELL", "%emacs_dir/bin/cmdproxy.exe%"}, {"EMACSDATA", "%emacs_dir%/etc"}, {"EMACSPATH", "%emacs_dir%/bin"}, {"EMACSLOCKDIR", "%emacs_dir%/lock"}, @@ -106,19 +106,61 @@ main (argc, argv) int argc; char *argv[]; { - DWORD idDde; + DWORD idDde = 0; HCONV HConversation; HSZ ProgMan; + char modname[MAX_PATH]; char additem[MAX_PATH*2 + 100]; char *lpext; + char *emacs_path; + char *p; + /* If no args specified, use our location to set emacs_path. */ +#if 0 if (argc < 2 || argc > 3) { fprintf (stderr, "usage: addpm emacs_path [icon_path]\n"); exit (1); } +#endif - lpext = add_registry (argv[1]) ? "exe" : "bat"; + if (argc > 1) + emacs_path = argv[1]; + else + { + if (!GetModuleFileName (NULL, modname, MAX_PATH) || + (p = strrchr (modname, '\\')) == NULL) + { + fprintf (stderr, "fatal error"); + exit (1); + } + *p = 0; + + /* Set emacs_path to emacs_dir if we are in "%emacs_dir%\bin". */ + if ((p = strrchr (modname, '\\')) && stricmp (p, "\\bin") == 0) + { + *p = 0; + emacs_path = modname; + } + else + { + fprintf (stderr, "usage: addpm emacs_path [icon_path]\n"); + exit (1); + } + + /* Tell user what we are going to do. */ + { + char msg[ MAX_PATH ]; + sprintf (msg, "Install Emacs at %s?\n", emacs_path); + if (!MessageBox (NULL, msg, "Install Emacs", MB_OKCANCEL | MB_ICONQUESTION)) + { + fprintf (stderr, "Install cancelled\n"); + exit (1); + } + } + } + + lpext = add_registry (emacs_path) ? "exe" : "bat"; DdeInitialize (&idDde, (PFNCALLBACK)DdeCallback, APPCMD_CLIENTONLY, 0); @@ -129,7 +171,7 @@ main (argc, argv) DdeCommand ("[CreateGroup (Gnu Emacs)]"); DdeCommand ("[ReplaceItem (Emacs)]"); sprintf (additem, "[AddItem (%s\\bin\\runemacs.%s, Emacs%c%s)]", - argv[1], lpext, (argc>2 ? ',' : ' '), + emacs_path, lpext, (argc>2 ? ',' : ' '), (argc>2 ? argv[2] : "")); DdeCommand (additem); |