update.
[chise/xemacs-chise.git.1] / netinstall / main.cc
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;
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     }
68
69   do_init(h);
70
71   while (next_dialog)
72     {
73       switch (next_dialog)
74         {
75         case IDD_SPLASH:        do_splash (h);  break;
76         case IDD_UNINSTALL:     do_uninstall (h);       break;
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 }