448
+ − 1 /*
+ − 2 * Copyright (c) 2000, Red Hat, Inc.
+ − 3 *
+ − 4 * This program is free software; you can redistribute it and/or modify
+ − 5 * it under the terms of the GNU General Public License as published by
+ − 6 * the Free Software Foundation; either version 2 of the License, or
+ − 7 * (at your option) any later version.
+ − 8 *
+ − 9 * A copy of the GNU General Public License can be found at
+ − 10 * http://www.gnu.org/
+ − 11 *
+ − 12 * Written by DJ Delorie <dj@cygnus.com>
+ − 13 *
+ − 14 */
+ − 15
+ − 16 /* OK, here's how this works. Each of the steps needed for install -
+ − 17 dialogs, downloads, installs - are in their own files and have some
+ − 18 "do_*" function (prototype in dialog.h) and a resource id (IDD_* or
+ − 19 IDD_S_* in resource.h) for that step. Each step is responsible for
+ − 20 selecting the next step! See the NEXT macro in dialog.h. Note
+ − 21 that the IDD_S_* ids are fake; those are for steps that don't
+ − 22 really have a controlling dialog (some have progress dialogs, but
+ − 23 those don't count, although they could). Replace the IDD_S_* with
+ − 24 IDD_* if you create a real dialog for those steps. */
+ − 25
+ − 26 #include "win32.h"
+ − 27
+ − 28 #include <stdio.h>
+ − 29 #include <stdlib.h>
+ − 30 #include "resource.h"
+ − 31 #include "dialog.h"
+ − 32 #include "state.h"
+ − 33 #include "msg.h"
+ − 34 #include "netio.h"
+ − 35 #include "find.h"
+ − 36 #include "log.h"
+ − 37
+ − 38 #include "port.h"
+ − 39
+ − 40 void netio_test (char *);
+ − 41
+ − 42 int next_dialog;
+ − 43 int exit_msg = 0;
+ − 44
+ − 45 HINSTANCE hinstance;
+ − 46
+ − 47 int WINAPI
+ − 48 WinMain (HINSTANCE h,
+ − 49 HINSTANCE hPrevInstance,
+ − 50 LPSTR command_line,
+ − 51 int cmd_show)
+ − 52 {
+ − 53 hinstance = h;
657
+ − 54 int pos = -1;
+ − 55 if ((pos = strcspn(command_line, "-")) >= 0
+ − 56 &&
+ − 57 command_line[pos+1] == 'u')
+ − 58 {
+ − 59 next_dialog = IDD_UNINSTALL;
+ − 60 log (LOG_TIMESTAMP, "Starting XEmacs uninstall");
+ − 61 uninstall = 1;
+ − 62 }
+ − 63 else
+ − 64 {
+ − 65 next_dialog = IDD_SPLASH;
+ − 66 log (LOG_TIMESTAMP, "Starting XEmacs install");
+ − 67 }
448
+ − 68
657
+ − 69 do_init(h);
448
+ − 70
+ − 71 while (next_dialog)
+ − 72 {
+ − 73 switch (next_dialog)
+ − 74 {
+ − 75 case IDD_SPLASH: do_splash (h); break;
657
+ − 76 case IDD_UNINSTALL: do_uninstall (h); break;
448
+ − 77 case IDD_SOURCE: do_source (h); break;
+ − 78 case IDD_LOCAL_DIR: do_local_dir (h); break;
+ − 79 case IDD_ROOT: do_root (h); break;
+ − 80 case IDD_NET: do_net (h); break;
+ − 81 case IDD_SITE: do_site (h); break;
+ − 82 case IDD_OTHER_URL: do_other (h); break;
+ − 83 case IDD_S_LOAD_INI: do_ini (h); break;
+ − 84 case IDD_S_FROM_CWD: do_fromcwd (h); break;
+ − 85 case IDD_CHOOSE: do_choose (h); break;
+ − 86 case IDD_S_DOWNLOAD: do_download (h); break;
+ − 87 case IDD_S_INSTALL: do_install (h); break;
+ − 88 case IDD_DESKTOP: do_desktop (h); break;
+ − 89 case IDD_S_POSTINSTALL: do_postinstall (h); break;
+ − 90
+ − 91 default:
+ − 92 next_dialog = 0;
+ − 93 break;
+ − 94 }
+ − 95 }
+ − 96
+ − 97 exit_setup (0);
+ − 98
+ − 99 return EXIT_SUCCESS;
+ − 100 }