Deleted Added
full compact
install.c (8208) install.c (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 *
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.3 1995/04/29 19:33:01 jkh Exp $
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

--- 25 unchanged lines hidden (view full) ---

41 *
42 */
43
44#include "sysinstall.h"
45
46static int
47installHook(char *str)
48{
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

--- 25 unchanged lines hidden (view full) ---

41 *
42 */
43
44#include "sysinstall.h"
45
46static int
47installHook(char *str)
48{
49 int rcode = 0;
49 int i;
50 struct disk *disks[100]; /* some ridiculously large number */
50
51
52 i = 0;
51 /* Clip garbage off the ends */
52 string_prune(str);
53 str = string_skipwhite(str);
54 while (str) {
55 char *cp;
56
53 /* Clip garbage off the ends */
54 string_prune(str);
55 str = string_skipwhite(str);
56 while (str) {
57 char *cp;
58
57 cp = index(str, ' ');
59 cp = index(str, '\n');
58 if (cp)
59 *cp++ = 0;
60 if (cp)
61 *cp++ = 0;
60 rcode = !device_slice_disk(str);
62 if (!*str) {
63 beep();
64 return 0;
65 }
66 disks[i++] = device_slice_disk(str);
61 str = cp;
62 }
67 str = cp;
68 }
63 return rcode;
64}
65
66/* Create a menu listing all the devices in the system. */
67static DMenu *
68getAllDisks(DMenu *menu, Device **rdevs)
69{
70 Device *devices;
71 int numdevs;
72
73 devices = device_get_all(DEVICE_TYPE_DISK, &numdevs);
74 *rdevs = devices;
75 if (!devices) {
76 msgConfirm("No devices suitable for installation found!\n\nPlease verify that your disk controller (and attached drives) were detected properly. This can be done by selecting the ``Bootmsg'' option on the main menu and reviewing the boot messages carefully.");
77 return NULL;
78 }
69 disks[i] = NULL;
70 if (!i)
71 return 0;
79 else {
72 else {
80 Device *start;
81 DMenu *tmp;
82 int i;
83
84 tmp = (DMenu *)safe_malloc(sizeof(DMenu) +
85 (sizeof(DMenuItem) * (numdevs + 1)));
86 bcopy(menu, tmp, sizeof(DMenu));
87 for (start = devices, i = 0; start->name[0]; start++, i++) {
88 tmp->items[i].title = start->name;
89 if (!strncmp(start->name, "sd", 2))
90 tmp->items[i].prompt = "SCSI disk";
91 else if (!strncmp(start->name, "wd", 2))
92 tmp->items[i].prompt = "IDE/ESDI/MFM/ST506 disk";
93 else
94 msgFatal("Unknown disk type: %s!", start->name);
95 tmp->items[i].type = DMENU_CALL;
96 tmp->items[i].ptr = installHook;
97 tmp->items[i].disabled = FALSE;
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;
98 }
79 }
99 tmp->items[i].type = DMENU_NOP;
100 tmp->items[i].title = NULL;
101 return tmp;
80 else {
81 make_filesystems(disks);
82 cpio_extract(disks);
83 extract_dists(disks);
84 do_final_setup(disks);
85 systemShutdown();
86 }
87#endif
102 }
88 }
89 return 1;
103}
104
105int
106installCustom(char *str)
107{
108 int scroll, choice, curr, max;
109 extern DMenu MenuDiskDevices;
110 DMenu *menu;
111 Device *devs;
112
90}
91
92int
93installCustom(char *str)
94{
95 int scroll, choice, curr, max;
96 extern DMenu MenuDiskDevices;
97 DMenu *menu;
98 Device *devs;
99
113 msgInfo("Installating the system custom");
114 variable_set2("install_type", "custom");
100 variable_set2("install_type", "custom");
115 menu = getAllDisks(&MenuDiskDevices, &devs);
101 menu = device_create_disk_menu(&MenuDiskDevices, &devs, installHook);
116 if (!menu)
117 return 0;
118 choice = scroll = curr = max = 0;
119 dmenuOpen(menu, &choice, &scroll, &curr, &max);
120 free(menu);
121 free(devs);
122 return 1;
123}
124
125int
126installExpress(char *str)
127{
128 int scroll, choice, curr, max;
129 extern DMenu MenuDiskDevices;
130 DMenu *menu;
131 Device *devs;
132
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
133 msgInfo("Installating the system express");
134 variable_set2("install_type", "express");
119 variable_set2("install_type", "express");
135 menu = getAllDisks(&MenuDiskDevices, &devs);
120 menu = device_create_disk_menu(&MenuDiskDevices, &devs, installHook);
136 if (!menu)
137 return 0;
138 choice = scroll = curr = max = 0;
139 dmenuOpen(menu, &choice, &scroll, &curr, &max);
140 free(menu);
141 free(devs);
142 return 1;
143}

--- 44 unchanged lines hidden ---
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}

--- 44 unchanged lines hidden ---