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 --- |