annotate netinstall/main.cc @ 1318:b531bf8658e9

[xemacs-hg @ 2003-02-21 06:56:46 by ben] redisplay fixes et al. PROBLEMS: Add comment about Cygwin, unexec and sysmalloc. Move some non-general stuff out of general. Make a section for x86. configure.in: Add check for broken alloca in funcalls. mule/mule-cmds.el: Alias file-name to native not vice-versa. Do set EOL of native but not of process output to fix various problems and be consistent with code-init.el. code-cmds.el: Return a name not a coding system. code-init.el: Reindent. Remove `file-name' since it should always be the same as native. unicode.el: Rename to load-unicode-mapping-table as suggested by the anonymous (but rather Turnbullian) comment in unicode.c. xemacs.dsp: Add /k to default build. alloc.c: Make gc_currently_forbidden static. config.h.in, lisp.h: Move some stuff to lisp.h. console-gtk.h, console-impl.h, console-msw.h, console-x.h, event-Xt.c, event-msw.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-x.c, gtk-xemacs.c: Remove duplicated code to redraw exposed area. Add deadbox method needed by the generalized redraw code. Defer redrawing if already in redisplay. frame-msw.c, event-stream.c, frame.c: Add comments about calling Lisp. debug.c, general-slots.h: Move generalish symbols to general-slots.h. doprnt.c: reindent. lisp.h, dynarr.c: Add debug code for locking a dynarr to catch invalid mods. Use in redisplay.c. eval.c: file-coding.c: Define file-name as alias for native not vice-versa. frame-gtk.c, frame-x.c: Move Qwindow_id to general-slots. dialog-msw.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, gui.c, gui.h, menubar-msw.c, menubar.c: Ensure that various glyph functions that eval within redisplay protect the evals. Same for calls to internal_equal(). Modify various functions, e.g. gui_item_*(), to protect evals within redisplay, taking an in_redisplay parameter if it's possible for them to be called both inside and outside of redisplay. gutter.c: Defer specifier-changed updating till after redisplay, if necessary, since we need to enter redisplay to do it. gutter.c: Do nothing if in redisplay. lisp.h: Add version of alloca() for use in function calls. lisp.h: Add XCAD[D+]R up to 6 D's, and aliases X1ST, X2ND, etc. frame.c, frame.h, redisplay.c, redisplay.h, signal.c, toolbar.c: Redo critical-section code and move from frame.c to redisplay.c. Require that every place inside of redisplay catch errors itself, not at the edge of the critical section (thereby bypassing the rest of redisplay and leaving things in an inconsistent state). Introduce separate means of holding frame-size changes without entering a complete critical section. Introduce "post-redisplay" methods for deferring things till after redisplay. Abort if we enter redisplay reentrantly. Disable all quit checking in redisplay since it's too dangerous. Ensure that all calls to QUIT trigger an abort if unprotected. redisplay.c, scrollbar-gtk.c, scrollbar-x.c, scrollbar.c: Create enter/exit_redisplay_critical_section_maybe() for code that needs to ensure it's in a critical section but doesn't interfere with an existing critical section. sysdep.c: Use _wexecve() when under Windows NT for Unicode correctness. text.c, text.h: Add new_dfc() functions, which return an alloca()ed value rather than requiring an lvalue. (Not really used yet; used in another workspace, to come.) Add some macros for SIZED_EXTERNAL. Update the encoding aliases after involved scrutinization of the X manual. unicode.c: Answer the anonymous but suspiciously Turnbullian questions. Rename parse-unicode-translation-table to load-unicode-mapping-table, as suggested.
author ben
date Fri, 21 Feb 2003 06:57:21 +0000
parents ce0b3f2eff35
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 /* OK, here's how this works. Each of the steps needed for install -
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 dialogs, downloads, installs - are in their own files and have some
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18 "do_*" function (prototype in dialog.h) and a resource id (IDD_* or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 IDD_S_* in resource.h) for that step. Each step is responsible for
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 selecting the next step! See the NEXT macro in dialog.h. Note
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 that the IDD_S_* ids are fake; those are for steps that don't
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 really have a controlling dialog (some have progress dialogs, but
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 those don't count, although they could). Replace the IDD_S_* with
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24 IDD_* if you create a real dialog for those steps. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 #include "win32.h"
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 <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #include "resource.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31 #include "dialog.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #include "state.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 #include "msg.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 #include "netio.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 #include "find.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 #include "log.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 #include "port.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 void netio_test (char *);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 int next_dialog;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 int exit_msg = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 HINSTANCE hinstance;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 int WINAPI
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 WinMain (HINSTANCE h,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 HINSTANCE hPrevInstance,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 LPSTR command_line,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 int cmd_show)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 hinstance = h;
657
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
54 int pos = -1;
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
55 if ((pos = strcspn(command_line, "-")) >= 0
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
56 &&
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
57 command_line[pos+1] == 'u')
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
58 {
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
59 next_dialog = IDD_UNINSTALL;
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
60 log (LOG_TIMESTAMP, "Starting XEmacs uninstall");
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
61 uninstall = 1;
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
62 }
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
63 else
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
64 {
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
65 next_dialog = IDD_SPLASH;
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
66 log (LOG_TIMESTAMP, "Starting XEmacs install");
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
67 }
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68
657
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
69 do_init(h);
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 while (next_dialog)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 switch (next_dialog)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 case IDD_SPLASH: do_splash (h); break;
657
ce0b3f2eff35 [xemacs-hg @ 2001-09-09 04:37:41 by andyp]
andyp
parents: 448
diff changeset
76 case IDD_UNINSTALL: do_uninstall (h); break;
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 case IDD_SOURCE: do_source (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78 case IDD_LOCAL_DIR: do_local_dir (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 case IDD_ROOT: do_root (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 case IDD_NET: do_net (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 case IDD_SITE: do_site (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 case IDD_OTHER_URL: do_other (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 case IDD_S_LOAD_INI: do_ini (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 case IDD_S_FROM_CWD: do_fromcwd (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 case IDD_CHOOSE: do_choose (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 case IDD_S_DOWNLOAD: do_download (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 case IDD_S_INSTALL: do_install (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 case IDD_DESKTOP: do_desktop (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 case IDD_S_POSTINSTALL: do_postinstall (h); break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 default:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92 next_dialog = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 }
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 exit_setup (0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 return EXIT_SUCCESS;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 }