annotate netinstall/postinstall.cc @ 800:a5954632b187

[xemacs-hg @ 2002-03-31 08:27:14 by ben] more fixes, first crack at finishing behavior implementation TODO.ben-mule-21-5: Update. configure.in: Fix for new error-checking types. make-mswin-unicode.pl: Don't be fucked up by CRLF. Output code to force errors when nonintercepted Windows calls issued. behavior.el, dumped-lisp.el, menubar-items.el: Add support for saving using custom. Load into a dumped XEmacs. Correct :title to :short-doc in accordance with behavior-defs.el. Add a submenu under Options for turning on/off behaviors. cl-macs.el: Properly document `loop'. Fix a minor bug in keymap iteration and add support for bit-vector iteration. lisp-mode.el: Rearrange and add items for macro expanding. menubar-items.el: Document connection between these two functions. window.el: Port stuff from GNU 21.1. config.inc.samp, xemacs.mak: Separate out and add new variable for controlling error-checking. s/windowsnt.h: Use new ERROR_CHECK_ALL; not related to DEBUG_XEMACS. alloc.c, backtrace.h, buffer.c, buffer.h, bytecode.c, callproc.c, casetab.c, charset.h, chartab.c, cmdloop.c, config.h.in, console-msw.c, console-stream.c, console-tty.c, console.c, console.h, data.c, device-msw.c, device.c, device.h, dired-msw.c, dired.c, dumper.c, editfns.c, eldap.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, file-coding.h, fileio.c, frame-msw.c, frame.c, frame.h, glyphs-gtk.c, glyphs-msw.c, glyphs-shared.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, insdel.c, intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, intl-win32.c, keymap.c, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, macros.c, marker.c, md5.c, menubar-x.c, menubar.c, mule-coding.c, ntproc.c, objects-gtk.c, objects-msw.c, objects-x.c, objects.c, opaque.c, print.c, process-nt.c, process-unix.c, process.c, rangetab.c, redisplay-msw.c, redisplay-output.c, redisplay.c, regex.c, scrollbar-msw.c, select-msw.c, signal.c, specifier.c, specifier.h, symbols.c, sysdep.c, syswindows.h, text.c, text.h, toolbar-msw.c, tooltalk.c, ui-gtk.c, unicode.c, window.c: Redo error-checking macros: ERROR_CHECK_TYPECHECK -> ERROR_CHECK_TYPES, ERROR_CHECK_CHARBPOS -> ERROR_CHECK_TEXT, add ERROR_CHECK_DISPLAY, ERROR_CHECK_STRUCTURES. Document these in config.h.in. Fix code to follow docs. Fix *_checking_assert() in accordance with new names. Attempt to fix periodic redisplay crash freeing display line structures. Add first implementation of sledgehammer redisplay check. Redo print_*() to use write_fmt_string(), write_fmt_string_lisp(). Fix bug in md5 handling. Rename character-to-unicode to char-to-unicode; same for unicode-to-char{acter}. Move chartab documentation to `make-char-table'. Some header cleanup. Clean up remaining places where nonintercepted Windows calls are being used. automated/mule-tests.el: Fix for new Unicode support.
author ben
date Sun, 31 Mar 2002 08:30:17 +0000
parents 3d3049ae1304
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 /* The purpose of this file is to run all the post-install scripts
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 in their various forms. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 #include <io.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 #include <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24 #ifndef WIN32_NATIVE
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 #include <unistd.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 #endif
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 #include "state.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #include "dialog.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #include "find.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31 #include "concat.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #include "regedit.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 #include "reginfo.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 #include "resource.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 #include "port.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 static char *sh = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 static char *cmd = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39 static OSVERSIONINFO verinfo;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 run (char *shscript, char *args, char *file)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 BOOL b;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 char cmdline [_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46 STARTUPINFO si;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 PROCESS_INFORMATION pi;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 sprintf (cmdline, "%s %s %s", shscript, args, file);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 memset (&pi, 0, sizeof (pi));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 memset (&si, 0, sizeof (si));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 si.cb = sizeof (si);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 si.lpTitle = "XEmacs Setup Post-Install Script";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 si.dwFlags = STARTF_USEPOSITION;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 b = CreateProcess (0, cmdline, 0, 0, 0,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57 CREATE_NEW_CONSOLE, 0, root_dir, &si, &pi);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 if (b)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 WaitForSingleObject (pi.hProcess, INFINITE);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64 each (char *fname, unsigned int size)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66 char *ext = strrchr (fname, '.');
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 if (!ext)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70 if (sh && strcmp (ext, ".sh") == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 char *f2 = concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 run (sh, "-c", f2);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 free (f2);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76 else if (cmd && strcmp (ext, ".bat") == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78 char *f2 = backslash (concat (root_dir, XEMACS_SETUP_DIR, "postinstall/",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 fname, 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 run (cmd, "/c", f2);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 free (f2);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 rename (concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, 0),
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, ".done", 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90 static char *shells [] = {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 "/bin/sh.exe",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92 "/usr/bin/sh.exe",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93 "/bin/bash.exe",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94 "/usr/bin/bash.exe",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
96 };
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
97
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98 void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 do_postinstall (HINSTANCE h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
101 int issystem;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
102 next_dialog = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
103 char* cygroot = find_cygwin_root (&issystem);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
104 int i;
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
105
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
106 sh = 0;
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
107
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
108 if (cygroot)
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
109 {
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
110 for (i=0; shells[i]; i++)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
111 {
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
112 sh = backslash (concat (cygroot, shells[i], 0));
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
113 if (_access (sh, 0) == 0)
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
114 break;
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
115 free (sh);
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
116 sh = 0;
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
117 }
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
118 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
119
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
120 char old_path[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
121 GetEnvironmentVariable ("PATH", old_path, sizeof (old_path));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
122 #if 0
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
123 SetEnvironmentVariable ("PATH",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
124 backslash (concat (root_dir, "/bin;",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
125 root_dir, "/usr/bin;",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
126 old_path, 0)));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
127
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
128 SetEnvironmentVariable ("CYGWINROOT", root_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
129 #endif
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
130 SetCurrentDirectory (root_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
131
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
132 verinfo.dwOSVersionInfoSize = sizeof (verinfo);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
133 GetVersionEx (&verinfo);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
134
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
135 switch (verinfo.dwPlatformId)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
136 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
137 case VER_PLATFORM_WIN32_NT:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
138 cmd = "cmd.exe";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
139 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
140 case VER_PLATFORM_WIN32_WINDOWS:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
141 cmd = "command.com";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
142 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
143 default:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
144 cmd = "command.com";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
145 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
146 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
147
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
148 find (concat (root_dir, XEMACS_SETUP_DIR, "postinstall", 0), each);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
149 }