install.c revision 8262
1/*
2 * The new sysinstall program.
3 *
4 * This is probably the last program in the `sysinstall' line - the next
5 * generation being essentially a complete rewrite.
6 *
7 * $Id: install.c,v 1.4 1995/05/01 21:56:22 jkh Exp $
8 *
9 * Copyright (c) 1995
10 *	Jordan Hubbard.  All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions and the following disclaimer,
17 *    verbatim and that no modifications are made prior to this
18 *    point in the file.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 *    notice, this list of conditions and the following disclaimer in the
21 *    documentation and/or other materials provided with the distribution.
22 * 3. All advertising materials mentioning features or use of this software
23 *    must display the following acknowledgement:
24 *	This product includes software developed by Jordan Hubbard
25 *	for the FreeBSD Project.
26 * 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
27 *    endorse or promote products derived from this software without specific
28 *    prior written permission.
29 *
30 * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
31 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED.  IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
34 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
38 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
39 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
40 * SUCH DAMAGE.
41 *
42 */
43
44#include "sysinstall.h"
45
46static int
47installHook(char *str)
48{
49    int i;
50    struct disk *disks[100];	/* some ridiculously large number */
51
52    i = 0;
53    /* Clip garbage off the ends */
54    string_prune(str);
55    str = string_skipwhite(str);
56    while (str) {
57	char *cp;
58
59	cp = index(str, '\n');
60	if (cp)
61	   *cp++ = 0;
62	if (!*str) {
63	    beep();
64	    return 0;
65	}
66	disks[i++] = device_slice_disk(str);
67	str = cp;
68    }
69    disks[i] = NULL;
70    if (!i)
71	return 0;
72    else {
73#ifdef notdoneyet
74	partition_disks(disks);
75	if (!confirm_write(disks)) {
76	    for (i = 0; disks[i]; i++)
77		Free_Disk(disks[i]);
78	    return 0;
79	}
80	else {
81	    make_filesystems(disks);
82	    cpio_extract(disks);
83	    extract_dists(disks);
84	    do_final_setup(disks);
85	    systemShutdown();
86	}
87#endif
88    }
89    return 1;
90}
91
92int
93installCustom(char *str)
94{
95    int scroll, choice, curr, max;
96    extern DMenu MenuDiskDevices;
97    DMenu *menu;
98    Device *devs;
99
100    variable_set2("install_type", "custom");
101    menu = device_create_disk_menu(&MenuDiskDevices, &devs, installHook);
102    if (!menu)
103	return 0;
104    choice = scroll = curr = max = 0;
105    dmenuOpen(menu, &choice, &scroll, &curr, &max);
106    free(menu);
107    free(devs);
108    return 1;
109}
110
111int
112installExpress(char *str)
113{
114    int scroll, choice, curr, max;
115    extern DMenu MenuDiskDevices;
116    DMenu *menu;
117    Device *devs;
118
119    variable_set2("install_type", "express");
120    menu = device_create_disk_menu(&MenuDiskDevices, &devs, installHook);
121    if (!menu)
122	return 0;
123    choice = scroll = curr = max = 0;
124    dmenuOpen(menu, &choice, &scroll, &curr, &max);
125    free(menu);
126    free(devs);
127    return 1;
128}
129
130int
131installMaint(char *str)
132{
133    msgConfirm("Sorry, maintainance mode is not implemented in this version.");
134    return 0;
135}
136
137int
138installSetDeveloper(char *str)
139{
140    /* Dists = DIST_BIN | DIST_MAN | DIST_FOO; */
141    return 0;
142}
143
144int
145installSetXDeveloper(char *str)
146{
147    return 0;
148}
149
150int
151installSetUser(char *str)
152{
153    return 0;
154}
155
156int
157installSetXUser(char *str)
158{
159    return 0;
160}
161
162int
163installSetMinimum(char *str)
164{
165    return 0;
166}
167
168int
169installSetEverything(char *str)
170{
171    return 0;
172}
173