Initial revision
[chise/xemacs-chise.git] / 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
55   next_dialog = IDD_SPLASH;
56
57   log (LOG_TIMESTAMP, "Starting XEmacs install");
58
59   char cwd[_MAX_PATH];
60   GetCurrentDirectory (sizeof (cwd), cwd);
61   local_dir = strdup (cwd);
62   log (0, "Current Directory: %s", cwd);
63
64   while (next_dialog)
65     {
66       switch (next_dialog)
67         {
68         case IDD_SPLASH:        do_splash (h);  break;
69         case IDD_SOURCE:        do_source (h);  break;
70         case IDD_LOCAL_DIR:     do_local_dir (h); break;
71         case IDD_ROOT:          do_root (h);    break;
72         case IDD_NET:           do_net (h);     break;
73         case IDD_SITE:          do_site (h);    break;
74         case IDD_OTHER_URL:     do_other (h);   break;
75         case IDD_S_LOAD_INI:    do_ini (h);     break;
76         case IDD_S_FROM_CWD:    do_fromcwd (h); break;
77         case IDD_CHOOSE:        do_choose (h);  break;
78         case IDD_S_DOWNLOAD:    do_download (h); break;
79         case IDD_S_INSTALL:     do_install (h); break;
80         case IDD_DESKTOP:       do_desktop (h); break;
81         case IDD_S_POSTINSTALL: do_postinstall (h); break;
82
83         default:
84           next_dialog = 0;
85           break;
86         }
87     }
88
89   exit_setup (0);
90
91   return EXIT_SUCCESS;
92 }