mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 17:22:46 -04:00
Major surgery.
1. Use new dialog menu hacks (no strings, just arrays of dialogMenuItem structs) so that I can create composite menus with radio/checkbox/... items in them, removing some long-standing UI bogons in various menus. This work isn't finished yet, but will be done in two phases. This is phase one. 2. Remove all the script installation stuff. I never got time to document it, it was arcane and it just complicated much of the code. There are better ways of doing this if I want to do auto-driven installations later. 3. Remove much dead code and otherwise attempt to remove as much historical grot as possible so that this code is easier to hack on. This is also a two-stage process, phase one of which is now complete.
This commit is contained in:
parent
f6284247b7
commit
957bdf511e
50 changed files with 2501 additions and 3681 deletions
|
|
@ -4,11 +4,11 @@ CLEANFILES= makedevs.c rtermcap
|
|||
|
||||
.PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum
|
||||
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c decode.c \
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c \
|
||||
devices.c disks.c dist.c dmenu.c doc.c dos.c floppy.c ftp.c \
|
||||
ftp_strat.c globals.c index.c install.c installFinal.c \
|
||||
installPreconfig.c installUpgrade.c label.c lndir.c main.c \
|
||||
makedevs.c media.c menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
installUpgrade.c label.c lndir.c main.c makedevs.c media.c \
|
||||
menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
package.c system.c tape.c tcpip.c termcap.c ufs.c variable.c wizard.c
|
||||
|
||||
CFLAGS+= -Wall -I${.CURDIR}/../../gnu/lib/libdialog
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: anonFTP.c,v 1.8 1996/03/18 15:27:39 jkh Exp $
|
||||
* $Id: anonFTP.c,v 1.9 1996/03/23 07:21:28 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Coranth Gryphon. All rights reserved.
|
||||
|
|
@ -402,7 +402,7 @@ anonftpOpenDialog(void)
|
|||
}
|
||||
|
||||
int
|
||||
configAnonFTP(char *unused)
|
||||
configAnonFTP(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: apache.c,v 1.15 1996/03/18 15:27:41 jkh Exp $
|
||||
* $Id: apache.c,v 1.16 1996/03/23 07:23:39 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Coranth Gryphon. All rights reserved.
|
||||
|
|
@ -400,7 +400,7 @@ apacheOpenDialog(void)
|
|||
}
|
||||
|
||||
int
|
||||
configApache(char *unused)
|
||||
configApache(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
char company[64], file[128];
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: config.c,v 1.21 1996/03/21 09:30:08 jkh Exp $
|
||||
* $Id: config.c,v 1.22 1996/03/24 18:57:34 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -326,18 +326,32 @@ configSysconfig(void)
|
|||
}
|
||||
|
||||
int
|
||||
configSaverTimeout(char *str)
|
||||
configSaverTimeout(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver")
|
||||
? RET_SUCCESS : RET_FAIL;
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver") ?
|
||||
RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configNTP(char *str)
|
||||
configNTP(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_NTPDATE, "Enter the name of an NTP server") ? RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configXFree86(dialogMenuItem *self)
|
||||
{
|
||||
if (file_executable("/usr/X11R6/bin/xf86config")) {
|
||||
systemExecute("/usr/X11R6/bin/xf86config");
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
else {
|
||||
msgConfirm("XFree86 does not appear to be installed! Please install\n"
|
||||
"The XFree86 distribution before attempting to configure it.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
configResolv(void)
|
||||
{
|
||||
|
|
@ -398,7 +412,7 @@ skip:
|
|||
}
|
||||
|
||||
int
|
||||
configRoutedFlags(char *str)
|
||||
configRoutedFlags(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_ROUTEDFLAGS,
|
||||
"Specify the flags for routed; -q is the default, -s is\n"
|
||||
|
|
@ -406,7 +420,7 @@ configRoutedFlags(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPackages(char *str)
|
||||
configPackages(dialogMenuItem *self)
|
||||
{
|
||||
static PkgNode top, plist;
|
||||
static Boolean index_initted = FALSE;
|
||||
|
|
@ -483,7 +497,7 @@ configPackages(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPorts(char *str)
|
||||
configPorts(dialogMenuItem *self)
|
||||
{
|
||||
char *cp, *dist = NULL; /* Shut up compiler */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,154 +0,0 @@
|
|||
/*
|
||||
* The new sysinstall program.
|
||||
*
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: decode.c,v 1.6.2.5 1995/11/03 12:02:26 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* verbatim and that no modifications are made prior to this
|
||||
* point in the file.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Jordan Hubbard
|
||||
* for the FreeBSD Project.
|
||||
* 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
|
||||
DMenuItem *
|
||||
decode(DMenu *menu, char *name)
|
||||
{
|
||||
DMenuItem *tmp;
|
||||
|
||||
for (tmp = menu->items; tmp->title; tmp++)
|
||||
if (!strcmp(name, tmp->title))
|
||||
break;
|
||||
if (!tmp->title)
|
||||
return NULL;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
int
|
||||
dispatch(DMenuItem *tmp, char *name)
|
||||
{
|
||||
int val = RET_SUCCESS;
|
||||
|
||||
switch (tmp->type) {
|
||||
/* We want to simply display a help file */
|
||||
case DMENU_DISPLAY_FILE:
|
||||
systemDisplayHelp((char *)tmp->ptr);
|
||||
break;
|
||||
|
||||
/* It's a sub-menu; recurse on it */
|
||||
case DMENU_SUBMENU:
|
||||
(void)dmenuOpenSimple((DMenu *)tmp->ptr);
|
||||
break;
|
||||
|
||||
/* Execute it as a direct exec */
|
||||
case DMENU_SYSTEM_COMMAND:
|
||||
(void)systemExecute((char *)tmp->ptr);
|
||||
break;
|
||||
|
||||
/* Same as above, but execute it in a prgbox */
|
||||
case DMENU_SYSTEM_COMMAND_BOX:
|
||||
use_helpfile(NULL);
|
||||
use_helpline("Select OK to dismiss this dialog");
|
||||
dialog_prgbox(tmp->title, (char *)tmp->ptr, 22, 76, 1, 1);
|
||||
dialog_clear();
|
||||
break;
|
||||
|
||||
case DMENU_CALL:
|
||||
val = (((int (*)())tmp->ptr)(name));
|
||||
break;
|
||||
|
||||
case DMENU_CANCEL:
|
||||
val = RET_DONE;
|
||||
break;
|
||||
|
||||
case DMENU_SET_VARIABLE:
|
||||
variable_set((char *)tmp->ptr);
|
||||
msgInfo("Set %s", tmp->ptr);
|
||||
break;
|
||||
|
||||
case DMENU_SET_FLAG:
|
||||
*((unsigned int *)tmp->ptr) |= tmp->parm;
|
||||
break;
|
||||
|
||||
case DMENU_SET_VALUE:
|
||||
*((unsigned int *)tmp->ptr) = tmp->parm;
|
||||
break;
|
||||
|
||||
case DMENU_NOP:
|
||||
break;
|
||||
|
||||
default:
|
||||
msgFatal("Don't know how to deal with menu type %d", tmp->type);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
int
|
||||
decode_and_dispatch_multiple(DMenu *menu, char *names)
|
||||
{
|
||||
DMenuItem *tmp;
|
||||
int errors = 0;
|
||||
|
||||
string_prune(names);
|
||||
names = string_skipwhite(names);
|
||||
|
||||
/* KLUDGE ALERT:
|
||||
* To make multi-choice flag arrays work this assumes that ALL items in
|
||||
* a menu appear in the same mask!! If you need mixed masks, use
|
||||
* submenus.
|
||||
*/
|
||||
if (menu->items[0].type == DMENU_SET_FLAG)
|
||||
*((unsigned int *)menu->items[0].ptr) = 0;
|
||||
|
||||
while (names) {
|
||||
char *cp;
|
||||
|
||||
cp = index(names, '\n');
|
||||
if (cp)
|
||||
*cp++ = 0;
|
||||
/* Were no options actually selected? */
|
||||
if (!*names)
|
||||
return FALSE;
|
||||
if ((tmp = decode(menu, names)) != NULL) {
|
||||
if (dispatch(tmp, names) != RET_SUCCESS)
|
||||
++errors;
|
||||
}
|
||||
else
|
||||
msgFatal("Couldn't find a handler for item `%s' in menu `%s'!",
|
||||
names, menu->title);
|
||||
names = cp;
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: devices.c,v 1.41 1996/03/18 15:27:46 jkh Exp $
|
||||
* $Id: devices.c,v 1.42 1996/03/24 09:36:41 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -368,24 +368,21 @@ deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)())
|
|||
return NULL;
|
||||
|
||||
for (numdevs = 0; devs[numdevs]; numdevs++);
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(DMenuItem) * (numdevs + 1)));
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(dialogMenuItem) * (numdevs + 1)));
|
||||
bcopy(menu, tmp, sizeof(DMenu));
|
||||
for (i = 0; devs[i]; i++) {
|
||||
tmp->items[i].title = devs[i]->name;
|
||||
tmp->items[i].prompt = devs[i]->name;
|
||||
for (j = 0; device_names[j].name; j++) {
|
||||
if (!strncmp(devs[i]->name, device_names[j].name, strlen(device_names[j].name))) {
|
||||
tmp->items[i].prompt = device_names[j].description;
|
||||
tmp->items[i].title = device_names[j].description;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!device_names[j].name)
|
||||
tmp->items[i].prompt = "<unknown device type>";
|
||||
tmp->items[i].type = DMENU_CALL;
|
||||
tmp->items[i].ptr = hook;
|
||||
tmp->items[i].disabled = FALSE;
|
||||
tmp->items[i].check = NULL;
|
||||
tmp->items[i].title = "<unknown device type>";
|
||||
tmp->items[i].fire = hook;
|
||||
tmp->items[i].checked = NULL;
|
||||
}
|
||||
tmp->items[i].type = DMENU_NOP;
|
||||
tmp->items[i].title = NULL;
|
||||
return tmp;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: disks.c,v 1.37 1996/03/20 14:11:21 jkh Exp $
|
||||
* $Id: disks.c,v 1.38 1996/03/24 18:57:35 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -135,92 +135,6 @@ print_command_summary()
|
|||
move(0, 0);
|
||||
}
|
||||
|
||||
/* Partition a disk based wholly on which variables are set */
|
||||
static void
|
||||
scriptPartition(Device *dev, Disk *d)
|
||||
{
|
||||
char *cp;
|
||||
int i, sz;
|
||||
|
||||
record_chunks(d);
|
||||
cp = variable_get(VAR_GEOMETRY);
|
||||
if (cp) {
|
||||
msgDebug("Setting geometry from script to: %s\n", cp);
|
||||
d->bios_cyl = strtol(cp, &cp, 0);
|
||||
d->bios_hd = strtol(cp + 1, &cp, 0);
|
||||
d->bios_sect = strtol(cp + 1, 0, 0);
|
||||
}
|
||||
|
||||
cp = variable_get(VAR_DISKSPACE);
|
||||
if (cp) {
|
||||
if (!strcmp(cp, "free")) {
|
||||
/* Do free disk space case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least 10MB in size, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size > (10 * ONE_MEG)) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, chunk_info[i]->size, freebsd, 3,
|
||||
(chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any free space on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "all")) {
|
||||
/* Do all disk space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, FALSE);
|
||||
}
|
||||
else if (!strcmp(cp, "exclusive")) {
|
||||
/* Do really-all-the-disk-space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, TRUE);
|
||||
}
|
||||
else if ((sz = strtol(cp, &cp, 0))) {
|
||||
/* Look for sz bytes free */
|
||||
if (*cp && toupper(*cp) == 'M')
|
||||
sz *= ONE_MEG;
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least sz MB, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size >= sz) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, sz, freebsd, 3, (chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find %d free blocks on this disk!", sz);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "existing")) {
|
||||
/* Do existing FreeBSD case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
if (chunk_info[i]->type == freebsd)
|
||||
break;
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any existing FreeBSD partitions on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
dialog_clear();
|
||||
msgConfirm("`%s' is an invalid value for %s - is config file valid?", cp, VAR_DISKSPACE);
|
||||
return;
|
||||
}
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
}
|
||||
}
|
||||
|
||||
static u_char *
|
||||
getBootMgr(char *dname)
|
||||
{
|
||||
|
|
@ -533,14 +447,15 @@ partitionHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionEditor(char *str)
|
||||
diskPartitionEditor(dialogMenuItem *self)
|
||||
{
|
||||
DMenu *menu;
|
||||
Device **devs;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str= variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -552,10 +467,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
else if (cnt == 1) {
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
scriptPartition(devs[0], (Disk *)devs[0]->private);
|
||||
else
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
i = RET_SUCCESS;
|
||||
variable_set2(DISK_SELECTED, "yes");
|
||||
}
|
||||
|
|
@ -584,7 +496,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionWrite(char *str)
|
||||
diskPartitionWrite(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
char *cp;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dist.c,v 1.38 1995/12/07 10:33:41 peter Exp $
|
||||
* $Id: dist.c,v 1.39 1996/02/02 06:43:59 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -165,7 +165,7 @@ static Distribution XF86FontDistTable[] = {
|
|||
};
|
||||
|
||||
int
|
||||
distReset(char *str)
|
||||
distReset(dialogMenuItem *self)
|
||||
{
|
||||
Dists = 0;
|
||||
SrcDists = 0;
|
||||
|
|
@ -176,7 +176,7 @@ distReset(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetDeveloper(char *str)
|
||||
distSetDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER;
|
||||
|
|
@ -185,7 +185,7 @@ distSetDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetXDeveloper(char *str)
|
||||
distSetXDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER | DIST_XF86;
|
||||
|
|
@ -198,7 +198,7 @@ distSetXDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetKernDeveloper(char *str)
|
||||
distSetKernDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER;
|
||||
|
|
@ -207,7 +207,7 @@ distSetKernDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetUser(char *str)
|
||||
distSetUser(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_USER;
|
||||
|
|
@ -215,7 +215,7 @@ distSetUser(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetXUser(char *str)
|
||||
distSetXUser(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_USER;
|
||||
|
|
@ -227,7 +227,7 @@ distSetXUser(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetMinimum(char *str)
|
||||
distSetMinimum(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = DIST_BIN;
|
||||
|
|
@ -235,7 +235,7 @@ distSetMinimum(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetEverything(char *str)
|
||||
distSetEverything(dialogMenuItem *self)
|
||||
{
|
||||
Dists = DIST_ALL;
|
||||
SrcDists = DIST_SRC_ALL;
|
||||
|
|
@ -246,54 +246,47 @@ distSetEverything(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetCustom(char *str)
|
||||
distSetDES(dialogMenuItem *self)
|
||||
{
|
||||
/* These *ALL* have to be set at once. It's for power users only! :) */
|
||||
if (sscanf(str, "%d %d %d %d %d %d",
|
||||
&Dists, &DESDists, &SrcDists, &XF86Dists, &XF86ServerDists, &XF86FontDists) != 6) {
|
||||
dialog_clear();
|
||||
msgConfirm("Warning: A `%s' set was configured which did not set all\n"
|
||||
"distributions explicitly. Some distributions will default to\n"
|
||||
"unselected as a result.", str);
|
||||
if (dmenuOpenSimple(&MenuDESDistributions)) {
|
||||
if (DESDists) {
|
||||
if (DESDists & DIST_DES_KERBEROS)
|
||||
DESDists |= DIST_DES_DES;
|
||||
Dists |= DIST_DES;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
else
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
distSetDES(char *str)
|
||||
distSetSrc(dialogMenuItem *self)
|
||||
{
|
||||
dmenuOpenSimple(&MenuDESDistributions);
|
||||
if (DESDists) {
|
||||
if (DESDists & DIST_DES_KERBEROS)
|
||||
DESDists |= DIST_DES_DES;
|
||||
Dists |= DIST_DES;
|
||||
if (dmenuOpenSimple(&MenuSrcDistributions)) {
|
||||
if (SrcDists)
|
||||
Dists |= DIST_SRC;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
distSetSrc(char *str)
|
||||
distSetXF86(dialogMenuItem *self)
|
||||
{
|
||||
dmenuOpenSimple(&MenuSrcDistributions);
|
||||
if (SrcDists)
|
||||
Dists |= DIST_SRC;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
distSetXF86(char *str)
|
||||
{
|
||||
dmenuOpenSimple(&MenuXF86Select);
|
||||
if (XF86ServerDists)
|
||||
XF86Dists |= DIST_XF86_SERVER;
|
||||
if (XF86FontDists)
|
||||
XF86Dists |= DIST_XF86_FONTS;
|
||||
if (XF86Dists)
|
||||
Dists |= DIST_XF86;
|
||||
if (isDebug())
|
||||
msgDebug("SetXF86 Masks: Server: %0x, Fonts: %0x, XDists: %0x, Dists: %0x\n",
|
||||
XF86ServerDists, XF86FontDists, XF86Dists, Dists);
|
||||
return RET_SUCCESS;
|
||||
if (dmenuOpenSimple(&MenuXF86Select)) {
|
||||
if (XF86ServerDists)
|
||||
XF86Dists |= DIST_XF86_SERVER;
|
||||
if (XF86FontDists)
|
||||
XF86Dists |= DIST_XF86_FONTS;
|
||||
if (XF86Dists)
|
||||
Dists |= DIST_XF86;
|
||||
if (isDebug())
|
||||
msgDebug("SetXF86 Masks: Server: %0x, Fonts: %0x, XDists: %0x, Dists: %0x\n",
|
||||
XF86ServerDists, XF86FontDists, XF86Dists, Dists);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
static Boolean
|
||||
|
|
@ -477,7 +470,7 @@ printSelected(char *buf, int selected, Distribution *me)
|
|||
}
|
||||
|
||||
int
|
||||
distExtractAll(char *ptr)
|
||||
distExtractAll(dialogMenuItem *self)
|
||||
{
|
||||
int retries = 0;
|
||||
char buf[512];
|
||||
|
|
@ -485,7 +478,7 @@ distExtractAll(char *ptr)
|
|||
/* First try to initialize the state of things */
|
||||
if (!mediaDevice->init(mediaDevice))
|
||||
return RET_FAIL;
|
||||
if (!Dists && ptr) {
|
||||
if (!Dists) {
|
||||
msgConfirm("You haven't selected any distributions to extract.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,11 +12,12 @@
|
|||
#define DIST_INFO 0x0080
|
||||
#define DIST_COMPAT1X 0x0100
|
||||
#define DIST_COMPAT20 0x0200
|
||||
#define DIST_XF86 0x0400
|
||||
#define DIST_COMMERCIAL 0x0800
|
||||
#define DIST_DES 0x1000
|
||||
#define DIST_EXPERIMENTAL 0x2000
|
||||
#define DIST_ALL 0x0FFF
|
||||
#define DIST_COMPAT21 0x0400
|
||||
#define DIST_XF86 0x0800
|
||||
#define DIST_COMMERCIAL 0x1000
|
||||
#define DIST_DES 0x2000
|
||||
#define DIST_EXPERIMENTAL 0x4000
|
||||
#define DIST_ALL 0x0FFF /* Don't include commerce, DES or experimental in "all" */
|
||||
|
||||
/* Canned distribution sets */
|
||||
#define _DIST_DEVELOPER \
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dmenu.c,v 1.13 1995/12/07 10:33:44 peter Exp $
|
||||
* $Id: dmenu.c,v 1.14 1996/03/02 07:31:51 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -46,6 +46,71 @@
|
|||
|
||||
#define MAX_MENU 15
|
||||
|
||||
static Boolean cancelled;
|
||||
|
||||
int
|
||||
dmenuDisplayFile(dialogMenuItem *tmp)
|
||||
{
|
||||
systemDisplayHelp((char *)tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSubmenu(dialogMenuItem *tmp)
|
||||
{
|
||||
dialog_clear();
|
||||
return dmenuOpenSimple((DMenu *)tmp->data);
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommand(dialogMenuItem *tmp)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = systemExecute((char *)tmp->data) ? RET_FAIL : RET_SUCCESS;
|
||||
dialog_clear();
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommandBox(dialogMenuItem *tmp)
|
||||
{
|
||||
use_helpfile(NULL);
|
||||
use_helpline("Select OK to dismiss this dialog");
|
||||
dialog_prgbox(tmp->title, (char *)tmp->data, 22, 76, 1, 1);
|
||||
dialog_clear();
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuCancel(dialogMenuItem *tmp)
|
||||
{
|
||||
cancelled = TRUE;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetVariable(dialogMenuItem *tmp)
|
||||
{
|
||||
variable_set((char *)tmp->data);
|
||||
msgInfo("Set %s", tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetFlag(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) |= tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetValue(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) = tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
/* Traverse menu but give user no control over positioning */
|
||||
Boolean
|
||||
dmenuOpenSimple(DMenu *menu)
|
||||
|
|
@ -53,56 +118,44 @@ dmenuOpenSimple(DMenu *menu)
|
|||
int choice, scroll, curr, max;
|
||||
|
||||
choice = scroll = curr = max = 0;
|
||||
dialog_clear();
|
||||
return dmenuOpen(menu, &choice, &scroll, &curr, &max);
|
||||
}
|
||||
|
||||
/* Work functions for the state hook */
|
||||
char *
|
||||
dmenuFlagCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuFlagCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) & item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
return (*((unsigned int *)item->data) & item->aux);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuVarCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuVarCheck(dialogMenuItem *item)
|
||||
{
|
||||
char *w, *cp, *cp2, tmp[256];
|
||||
|
||||
w = (char *)item->parm;
|
||||
w = (char *)item->aux;
|
||||
if (!w)
|
||||
w = (char *)item->ptr;
|
||||
w = (char *)item->data;
|
||||
if (!w)
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
strncpy(tmp, w, 256);
|
||||
if ((cp = index(tmp, '=')) != NULL) {
|
||||
*(cp++) = '\0';
|
||||
cp2 = getenv(tmp);
|
||||
if (cp2)
|
||||
return !strcmp(cp, cp2) ? "ON" : "OFF";
|
||||
return !strcmp(cp, cp2);
|
||||
else
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return getenv(tmp) ? "ON" : "OFF";
|
||||
return (int)getenv(tmp);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuRadioCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuRadioCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) == item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
}
|
||||
|
||||
static char *
|
||||
checkHookVal(DMenuItem *item)
|
||||
{
|
||||
|
||||
if (!item->check)
|
||||
return "OFF";
|
||||
return (*item->check)(item);
|
||||
return (*((unsigned int *)item->data) == item->aux);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -122,21 +175,10 @@ menu_height(DMenu *menu, int n)
|
|||
Boolean
|
||||
dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
||||
{
|
||||
char result[FILENAME_MAX];
|
||||
char **nitems = NULL;
|
||||
DMenuItem *tmp;
|
||||
int rval = 0, n = 0;
|
||||
int n, rval = 0;
|
||||
|
||||
/* First, construct the menu */
|
||||
for (tmp = menu->items; tmp->title; tmp++) {
|
||||
if (!tmp->disabled) {
|
||||
nitems = item_add_pair(nitems, tmp->title, tmp->prompt, curr, max);
|
||||
if (menu->options & (DMENU_RADIO_TYPE | DMENU_MULTIPLE_TYPE))
|
||||
nitems = item_add(nitems, checkHookVal(tmp), curr, max);
|
||||
++n;
|
||||
}
|
||||
}
|
||||
nitems = item_add(nitems, NULL, curr, max); /* Terminate it */
|
||||
/* Count up all the items */
|
||||
for (n = 0; menu->items[n].title; n++);
|
||||
|
||||
while (1) {
|
||||
char buf[FILENAME_MAX];
|
||||
|
|
@ -146,40 +188,25 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
|||
use_helpfile(systemHelpFile(menu->helpfile, buf));
|
||||
|
||||
/* Pop up that dialog! */
|
||||
if (menu->options & DMENU_NORMAL_TYPE)
|
||||
if (menu->type == DMENU_NORMAL_TYPE)
|
||||
rval = dialog_menu((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result, choice, scroll);
|
||||
menu_height(menu, n), -n, menu->items, NULL, choice, scroll);
|
||||
|
||||
else if (menu->options & DMENU_RADIO_TYPE)
|
||||
else if (menu->type == DMENU_RADIO_TYPE)
|
||||
rval = dialog_radiolist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
else if (menu->options & DMENU_MULTIPLE_TYPE)
|
||||
else if (menu->type == DMENU_CHECKLIST_TYPE)
|
||||
rval = dialog_checklist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
/* This seems to be the only technique that works for getting the display to look right */
|
||||
dialog_clear();
|
||||
|
||||
if (!rval) {
|
||||
if (menu->options & DMENU_MULTIPLE_TYPE) {
|
||||
if (decode_and_dispatch_multiple(menu, result) || menu->options & DMENU_SELECTION_RETURNS) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((tmp = decode(menu, result)) == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
if (dispatch(tmp, result) == RET_DONE || (menu->options & DMENU_SELECTION_RETURNS)) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
items_free(nitems, curr, max);
|
||||
if (rval)
|
||||
return FALSE;
|
||||
else if (cancelled) {
|
||||
cancelled = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: doc.c,v 1.9 1995/11/04 08:47:22 jkh Exp $
|
||||
* $Id: doc.c,v 1.10 1995/11/06 12:49:23 jkh Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
* and fire it up on the first copy of the handbook we can find.
|
||||
*/
|
||||
int
|
||||
docBrowser(char *junk)
|
||||
docBrowser(dialogMenuItem *self)
|
||||
{
|
||||
char *browser = variable_get(VAR_BROWSER_PACKAGE);
|
||||
|
||||
|
|
@ -53,17 +53,20 @@ docBrowser(char *junk)
|
|||
}
|
||||
|
||||
/* Run browser on the appropriate doc */
|
||||
dmenuOpenSimple(&MenuHTMLDoc);
|
||||
return RET_SUCCESS;
|
||||
if (dmenuOpenSimple(&MenuHTMLDoc))
|
||||
return RET_SUCCESS;
|
||||
else
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
/* Try to show one of the documents requested from the HTML doc menu */
|
||||
int
|
||||
docShowDocument(char *str)
|
||||
docShowDocument(dialogMenuItem *self)
|
||||
{
|
||||
char tmp[512], target[512];
|
||||
char *where = NULL;
|
||||
char *browser = variable_get(VAR_BROWSER_BINARY);
|
||||
char *str = self->prompt;
|
||||
|
||||
if (!file_executable(browser)) {
|
||||
dialog_clear();
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.80 1996/03/24 09:43:53 jkh Exp $
|
||||
* $Id: install.c,v 1.81 1996/03/24 18:57:36 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -219,12 +219,13 @@ installInitial(void)
|
|||
}
|
||||
|
||||
int
|
||||
installFixit(char *str)
|
||||
installFixit(dialogMenuItem *self)
|
||||
{
|
||||
struct ufs_args args;
|
||||
pid_t child;
|
||||
int waitstatus;
|
||||
|
||||
variable_set2(SYSTEM_STATE, "fixit");
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.fspec = "/dev/fd0";
|
||||
Mkdir("/mnt2", NULL);
|
||||
|
|
@ -297,12 +298,13 @@ installFixit(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installExpress(char *str)
|
||||
installExpress(dialogMenuItem *self)
|
||||
{
|
||||
if (diskPartitionEditor("express") == RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "express");
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (diskLabelEditor("express") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (!Dists) {
|
||||
|
|
@ -315,7 +317,7 @@ installExpress(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("express") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -323,8 +325,9 @@ installExpress(char *str)
|
|||
|
||||
/* Novice mode installation */
|
||||
int
|
||||
installNovice(char *str)
|
||||
installNovice(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(SYSTEM_STATE, "novice");
|
||||
dialog_clear();
|
||||
msgConfirm("In the next menu, you will need to set up a DOS-style (\"fdisk\") partitioning\n"
|
||||
"scheme for your hard disk. If you simply wish to devote all disk space\n"
|
||||
|
|
@ -333,7 +336,7 @@ installNovice(char *str)
|
|||
"by a (Q)uit. If you wish to allocate only free space to FreeBSD, move to a\n"
|
||||
"partition marked \"unused\" and use the (C)reate command.");
|
||||
|
||||
if (diskPartitionEditor("novice") == RET_FAIL)
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -344,7 +347,7 @@ installNovice(char *str)
|
|||
"care for the layout chosen by (A)uto, press F1 for more information on\n"
|
||||
"manual layout.");
|
||||
|
||||
if (diskLabelEditor("novice") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -367,7 +370,7 @@ installNovice(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("novice") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -382,14 +385,16 @@ installNovice(char *str)
|
|||
* DES dist.
|
||||
*/
|
||||
int
|
||||
installCommit(char *str)
|
||||
installCommit(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
extern int cdromMounted;
|
||||
char *str;
|
||||
|
||||
if (!mediaVerify())
|
||||
return RET_FAIL;
|
||||
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
i = RET_DONE;
|
||||
if (RunningAsInit) {
|
||||
if (installInitial() == RET_FAIL)
|
||||
|
|
@ -404,15 +409,12 @@ installCommit(char *str)
|
|||
}
|
||||
}
|
||||
|
||||
if (distExtractAll(NULL) == RET_FAIL)
|
||||
if (distExtractAll(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (installFixup(NULL) == RET_FAIL)
|
||||
if (installFixup(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (i != RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "base-install");
|
||||
|
||||
if (i != RET_FAIL && !strcmp(str, "novice")) {
|
||||
dialog_clear();
|
||||
msgConfirm("Since you're running the novice installation, a few post-configuration\n"
|
||||
|
|
@ -434,7 +436,7 @@ installCommit(char *str)
|
|||
if (!msgYesNo("Would you like to configure Samba for connecting NETBUI clients to this\n"
|
||||
"machine? Windows 95, Windows NT and Windows for Workgroups\n"
|
||||
"machines can use NETBUI transport for disk and printer sharing."))
|
||||
configSamba(NULL);
|
||||
configSamba(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Will this machine be an IP gateway (e.g. will it forward packets\n"
|
||||
|
|
@ -443,11 +445,11 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to allow anonymous FTP connections to this machine?"))
|
||||
configAnonFTP(NULL);
|
||||
configAnonFTP(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS server?"))
|
||||
configNFSServer(NULL);
|
||||
configNFSServer(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS client?"))
|
||||
|
|
@ -455,7 +457,7 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as a WEB server?"))
|
||||
configApache(NULL);
|
||||
configApache(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Would you like to customize your system console settings?"))
|
||||
|
|
@ -482,14 +484,14 @@ installCommit(char *str)
|
|||
"drive to use the ports collection, but at a substantial savings\n"
|
||||
"in disk space (NOTE: This may take as long as 15 or 20 minutes\n"
|
||||
"depending on the speed of your CDROM drive)."))
|
||||
configPorts(NULL);
|
||||
configPorts(self);
|
||||
}
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("The FreeBSD package collection is a collection of over 300 ready-to-run\n"
|
||||
"applications, from text editors to games to WEB servers. Would you like\n"
|
||||
"to browse the collection now?"))
|
||||
configPackages(NULL);
|
||||
configPackages(self);
|
||||
|
||||
/* XXX Put whatever other nice configuration questions you'd like to ask the user here XXX */
|
||||
|
||||
|
|
@ -505,8 +507,6 @@ installCommit(char *str)
|
|||
configResolv();
|
||||
configSysconfig();
|
||||
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
/* Don't print this if we're express or novice installing */
|
||||
if (strcmp(str, "express") && strcmp(str, "novice")) {
|
||||
if (Dists || i == RET_FAIL) {
|
||||
|
|
@ -541,11 +541,13 @@ installCommit(char *str)
|
|||
"may do so by typing: /stand/sysinstall.");
|
||||
}
|
||||
}
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
installFixup(char *str)
|
||||
installFixup(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int i;
|
||||
|
|
@ -625,18 +627,20 @@ installFixup(char *str)
|
|||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
int
|
||||
installFilesystems(char *str)
|
||||
installFilesystems(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
Disk *disk;
|
||||
Chunk *c1, *c2, *rootdev, *swapdev, *usrdev;
|
||||
Device **devs;
|
||||
PartInfo *root;
|
||||
char dname[80];
|
||||
char dname[80], *str;
|
||||
extern int MakeDevChunk(Chunk *c, char *n);
|
||||
Boolean upgrade = FALSE;
|
||||
|
||||
if (!(str && !strcmp(str, "script")) && !checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
|
||||
if (!checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
return RET_FAIL;
|
||||
|
||||
root = (PartInfo *)rootdev->private_data;
|
||||
|
|
@ -779,7 +783,7 @@ installFilesystems(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installVarDefaults(char *unused)
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: installFinal.c,v 1.23 1996/03/23 07:11:58 jkh Exp $
|
||||
* $Id: installFinal.c,v 1.24 1996/03/23 07:21:30 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard & Coranth Gryphon. All rights reserved.
|
||||
|
|
@ -55,17 +55,17 @@
|
|||
/* This file contains all the final configuration thingies */
|
||||
|
||||
static DMenu MenuSamba = {
|
||||
DMENU_MULTIPLE_TYPE | DMENU_SELECTION_RETURNS,
|
||||
DMENU_CHECKLIST_TYPE,
|
||||
"Samba Services Menu",
|
||||
"This allows you to configure various aspects of your Samba server.",
|
||||
NULL,
|
||||
NULL,
|
||||
{ { "Homes", "Make home directories available to users.",
|
||||
DMENU_SET_VARIABLE, "SAMBA_homes=YES", 0, 0, dmenuVarCheck },
|
||||
dmenuVarCheck, dmenuSetVariable, NULL, "SAMBA_homes=YES" },
|
||||
{ "Printers", "Allows for sharing of local printers.",
|
||||
DMENU_SET_VARIABLE, "SAMBA_printers=YES", 0, 0, dmenuVarCheck},
|
||||
dmenuVarCheck, dmenuSetVariable, NULL, "SAMBA_printers=YES" },
|
||||
{ "Export Paths", "Specify local directories to make available.",
|
||||
DMENU_SET_VARIABLE, "SAMBA_export=YES", 0, 0, dmenuVarCheck },
|
||||
dmenuVarCheck, dmenuSetVariable, NULL, "SAMBA_export=YES" },
|
||||
{ NULL } },
|
||||
};
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ static DMenu MenuSamba = {
|
|||
|
||||
/* Load gated package */
|
||||
int
|
||||
configGated(char *unused)
|
||||
configGated(dialogMenuItem *self)
|
||||
{
|
||||
if (package_add("gated-3.5a11") == RET_SUCCESS)
|
||||
variable_set2("gated", "YES");
|
||||
|
|
@ -84,7 +84,7 @@ configGated(char *unused)
|
|||
|
||||
/* Load pcnfsd package */
|
||||
int
|
||||
configPCNFSD(char *unused)
|
||||
configPCNFSD(dialogMenuItem *self)
|
||||
{
|
||||
if (package_add("pcnfsd-93.02.16") == RET_SUCCESS)
|
||||
variable_set2("pcnfsd", "YES");
|
||||
|
|
@ -92,7 +92,7 @@ configPCNFSD(char *unused)
|
|||
}
|
||||
|
||||
int
|
||||
configSamba(char *unused)
|
||||
configSamba(dialogMenuItem *self)
|
||||
{
|
||||
int i = RET_SUCCESS;
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ configSamba(char *unused)
|
|||
}
|
||||
|
||||
int
|
||||
configNFSServer(char *unused)
|
||||
configNFSServer(dialogMenuItem *self)
|
||||
{
|
||||
char cmd[256];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,221 +0,0 @@
|
|||
/*
|
||||
* The new sysinstall program.
|
||||
*
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: installPreconfig.c,v 1.16 1995/10/27 17:00:23 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* verbatim and that no modifications are made prior to this
|
||||
* point in the file.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Jordan Hubbard
|
||||
* for the FreeBSD Project.
|
||||
* 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <ctype.h>
|
||||
#include <sys/disklabel.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/param.h>
|
||||
#define MSDOSFS
|
||||
#include <sys/mount.h>
|
||||
#undef MSDOSFS
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mount.h>
|
||||
|
||||
static struct _word {
|
||||
char *name;
|
||||
int (*handler)(char *str);
|
||||
} resWords[] = {
|
||||
{ "configAnonFTP", configAnonFTP },
|
||||
{ "configApache", configApache },
|
||||
{ "configGated", configGated },
|
||||
{ "configNFSServer", configNFSServer },
|
||||
{ "configSamba", configSamba },
|
||||
{ "diskPartitionEditor", diskPartitionEditor },
|
||||
{ "diskPartitionWrite", diskPartitionWrite },
|
||||
{ "diskLabelEditor", diskLabelEditor },
|
||||
{ "diskLabelCommit", diskLabelCommit },
|
||||
{ "distReset", distReset },
|
||||
{ "distSetCustom", distSetCustom },
|
||||
{ "distSetDeveloper", distSetDeveloper },
|
||||
{ "distSetXDeveloper", distSetXDeveloper },
|
||||
{ "distSetKernDeveloper", distSetKernDeveloper },
|
||||
{ "distSetUser", distSetUser },
|
||||
{ "distSetXUser", distSetXUser },
|
||||
{ "distSetMinimum", distSetMinimum },
|
||||
{ "distSetEverything", distSetEverything },
|
||||
{ "distSetDES", distSetDES },
|
||||
{ "distSetSrc", distSetSrc },
|
||||
{ "distSetXF86", distSetXF86 },
|
||||
{ "distExtractAll", distExtractAll },
|
||||
{ "docBrowser", docBrowser },
|
||||
{ "docShowDocument", docShowDocument },
|
||||
{ "installCommit", installCommit },
|
||||
{ "installExpress", installExpress },
|
||||
{ "installUpgrade", installUpgrade },
|
||||
{ "installPreconfig", installPreconfig },
|
||||
{ "installFixup", installFixup },
|
||||
{ "installFilesystems", installFilesystems },
|
||||
{ "mediaSetCDROM", mediaSetCDROM },
|
||||
{ "mediaSetFloppy", mediaSetFloppy },
|
||||
{ "mediaSetDOS", mediaSetDOS },
|
||||
{ "mediaSetTape", mediaSetTape },
|
||||
{ "mediaSetFTP", mediaSetFTP },
|
||||
{ "mediaSetFTPActive", mediaSetFTPActive },
|
||||
{ "mediaSetFTPPassive", mediaSetFTPPassive },
|
||||
{ "mediaSetUFS", mediaSetUFS },
|
||||
{ "mediaSetNFS", mediaSetNFS },
|
||||
{ "mediaSetFtpUserPass", mediaSetFtpUserPass },
|
||||
{ "mediaSetCPIOVerbosity", mediaSetCPIOVerbosity },
|
||||
{ "mediaGetType", mediaGetType },
|
||||
{ "msgConfirm", msgSimpleConfirm },
|
||||
{ "msgNotify", msgSimpleNotify },
|
||||
{ "packageAdd", package_add },
|
||||
{ "system", (int (*)(char *))vsystem },
|
||||
{ "systemInteractive", systemExecute },
|
||||
{ "tcpInstallDevice", tcpInstallDevice },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
static int
|
||||
call_possible_resword(char *name, char *value, int *status)
|
||||
{
|
||||
int i, rval;
|
||||
|
||||
rval = 0;
|
||||
for (i = 0; resWords[i].name; i++) {
|
||||
if (!strcmp(name, resWords[i].name)) {
|
||||
*status = resWords[i].handler(value);
|
||||
rval = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return rval;
|
||||
}
|
||||
|
||||
/* From the top menu - try to mount the floppy and read a configuration file from it */
|
||||
int
|
||||
installPreconfig(char *str)
|
||||
{
|
||||
struct ufs_args u_args;
|
||||
struct msdosfs_args m_args;
|
||||
int fd, i;
|
||||
char buf[128];
|
||||
char *cfg_file;
|
||||
|
||||
memset(&u_args, 0, sizeof(u_args));
|
||||
u_args.fspec = "/dev/fd0";
|
||||
Mkdir("/mnt2", NULL);
|
||||
|
||||
memset(&m_args, 0, sizeof(m_args));
|
||||
m_args.fspec = "/dev/fd0";
|
||||
m_args.uid = m_args.gid = 0;
|
||||
m_args.mask = 0777;
|
||||
|
||||
i = RET_FAIL;
|
||||
while (1) {
|
||||
if (!(cfg_file = variable_get_value(VAR_CONFIG_FILE,
|
||||
"Please insert the floppy containing this configuration file\n"
|
||||
"into drive A now and press [ENTER].")))
|
||||
break;
|
||||
|
||||
if (mount(MOUNT_UFS, "/mnt2", MNT_RDONLY, (caddr_t)&u_args) == -1) {
|
||||
if (mount(MOUNT_MSDOS, "/mnt2", MNT_RDONLY, (caddr_t)&m_args) == -1) {
|
||||
dialog_clear();
|
||||
if (msgYesNo("Unable to mount the configuration floppy - do you want to try again?"))
|
||||
break;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
}
|
||||
fnord:
|
||||
if (!cfg_file)
|
||||
break;
|
||||
sprintf(buf, "/mnt2/%s", cfg_file);
|
||||
msgDebug("Attempting to open configuration file: %s\n", buf);
|
||||
fd = open(buf, O_RDONLY);
|
||||
if (fd == -1) {
|
||||
dialog_clear();
|
||||
if (msgYesNo("Unable to find the configuration file: %s\n"
|
||||
"Do you want to try again?", buf)) {
|
||||
unmount("/mnt2", MNT_FORCE);
|
||||
break;
|
||||
}
|
||||
else
|
||||
goto fnord;
|
||||
}
|
||||
else {
|
||||
Attribs *cattr = safe_malloc(sizeof(Attribs) * MAX_ATTRIBS);
|
||||
int i, j;
|
||||
|
||||
if (attr_parse(cattr, fd) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Cannot parse configuration file %s! Please verify your media.", cfg_file);
|
||||
}
|
||||
else {
|
||||
i = RET_SUCCESS;
|
||||
for (j = 0; cattr[j].name[0]; j++) {
|
||||
int status;
|
||||
|
||||
if (call_possible_resword(cattr[j].name, cattr[j].value, &status)) {
|
||||
if (status != RET_SUCCESS) {
|
||||
msgDebug("macro call to %s(%s) returns %d status!\n", cattr[j].name, cattr[j].value,
|
||||
status);
|
||||
i = status;
|
||||
}
|
||||
}
|
||||
else
|
||||
variable_set2(cattr[j].name, cattr[j].value);
|
||||
}
|
||||
if (i == RET_SUCCESS) {
|
||||
dialog_clear();
|
||||
msgConfirm("Configuration file %s loaded successfully!\n"
|
||||
"Some parameters may now have new default values.", buf);
|
||||
}
|
||||
else if (i == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Configuration file %s loaded with some errors.", buf);
|
||||
}
|
||||
}
|
||||
close(fd);
|
||||
safe_free(cattr);
|
||||
unmount("/mnt2", MNT_FORCE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: installUpgrade.c,v 1.17 1995/11/08 07:09:27 jkh Exp $
|
||||
* $Id: installUpgrade.c,v 1.18 1995/11/17 14:17:12 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -185,7 +185,7 @@ traverseHitlist(HitList *h)
|
|||
}
|
||||
|
||||
int
|
||||
installUpgrade(char *str)
|
||||
installUpgrade(dialogMenuItem *self)
|
||||
{
|
||||
char *saved_etc = NULL;
|
||||
Boolean extractingBin = TRUE;
|
||||
|
|
@ -198,6 +198,7 @@ installUpgrade(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
variable_set2(SYSTEM_STATE, "upgrade");
|
||||
systemDisplayHelp("upgrade");
|
||||
|
||||
if (msgYesNo("Given all that scary stuff you just read, are you sure you want to\n"
|
||||
|
|
@ -247,7 +248,7 @@ installUpgrade(char *str)
|
|||
"Once you're done in the label editor, press Q to return here for the next\n"
|
||||
"step.");
|
||||
|
||||
if (diskLabelEditor(NULL) == RET_FAIL) {
|
||||
if (diskLabelEditor(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("The disk label editor failed to work properly! Upgrade operation\n"
|
||||
"aborted.");
|
||||
|
|
@ -256,7 +257,7 @@ installUpgrade(char *str)
|
|||
|
||||
/* Don't write out MBR info */
|
||||
variable_set2(DISK_PARTITIONED, "written");
|
||||
if (diskLabelCommit("upgrade") == RET_FAIL) {
|
||||
if (diskLabelCommit(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Not all file systems were properly mounted. Upgrade operation\n"
|
||||
"aborted.");
|
||||
|
|
@ -321,7 +322,7 @@ installUpgrade(char *str)
|
|||
}
|
||||
|
||||
msgNotify("Beginning extraction of distributions..");
|
||||
if (distExtractAll("upgrade") == RET_FAIL) {
|
||||
if (distExtractAll(self) == RET_FAIL) {
|
||||
if (extractingBin && (Dists & DIST_BIN)) {
|
||||
dialog_clear();
|
||||
msgConfirm("Hmmmm. We couldn't even extract the bin distribution. This upgrade\n"
|
||||
|
|
@ -340,7 +341,7 @@ installUpgrade(char *str)
|
|||
"/dev entries and such that a 2.1 system expects to see. I'll also perform a\n"
|
||||
"few \"fixup\" operations to repair the effects of splatting a bin distribution\n"
|
||||
"on top of an existing system..");
|
||||
if (installFixup("upgrade") == RET_FAIL) {
|
||||
if (installFixup(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Hmmmmm. The fixups don't seem to have been very happy.\n"
|
||||
"You may wish to examine the system a little more closely when\n"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: label.c,v 1.39 1996/03/20 14:11:22 jkh Exp $
|
||||
* $Id: label.c,v 1.40 1996/03/24 18:57:37 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -81,7 +81,6 @@ static struct {
|
|||
static int here;
|
||||
|
||||
static int diskLabel(char *str);
|
||||
static int scriptLabel(char *str);
|
||||
|
||||
static int
|
||||
labelHook(char *str)
|
||||
|
|
@ -115,14 +114,15 @@ labelHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelEditor(char *str)
|
||||
diskLabelEditor(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
DMenu *menu;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -135,10 +135,7 @@ diskLabelEditor(char *str)
|
|||
else if (cnt == 1 || variable_get(DISK_SELECTED)) {
|
||||
if (cnt == 1)
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
i = scriptLabel(str);
|
||||
else
|
||||
i = diskLabel(str);
|
||||
i = diskLabel(str);
|
||||
}
|
||||
else {
|
||||
menu = deviceCreateMenu(&MenuDiskDevices, DEVICE_TYPE_DISK, labelHook);
|
||||
|
|
@ -163,7 +160,7 @@ diskLabelEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelCommit(char *str)
|
||||
diskLabelCommit(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
int i;
|
||||
|
|
@ -179,9 +176,9 @@ diskLabelCommit(char *str)
|
|||
i = RET_FAIL;
|
||||
}
|
||||
/* The routine will guard against redundant writes, just as this one does */
|
||||
else if (diskPartitionWrite(str) != RET_SUCCESS)
|
||||
else if (diskPartitionWrite(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else if (installFilesystems(str) != RET_SUCCESS)
|
||||
else if (installFilesystems(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else {
|
||||
msgInfo("All filesystem information written successfully.");
|
||||
|
|
@ -399,119 +396,6 @@ getNewfsCmd(PartInfo *p)
|
|||
strncpy(p->newfs_cmd, val, NEWFS_CMD_MAX);
|
||||
}
|
||||
|
||||
static int
|
||||
scriptLabel(char *str)
|
||||
{
|
||||
char *cp;
|
||||
PartType type;
|
||||
PartInfo *p;
|
||||
u_long flags = 0;
|
||||
int i, status;
|
||||
Device **devs;
|
||||
Disk *d;
|
||||
|
||||
status = RET_SUCCESS;
|
||||
cp = variable_get(VAR_DISK);
|
||||
if (!cp) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk selected - can't label automatically.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
if (!devs) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk device %s found!", cp);
|
||||
return RET_FAIL;
|
||||
}
|
||||
d = devs[0]->private;
|
||||
|
||||
record_label_chunks(devs);
|
||||
for (i = 0; label_chunk_info[i].c; i++) {
|
||||
Chunk *c1 = label_chunk_info[i].c;
|
||||
|
||||
if (label_chunk_info[i].type == PART_SLICE) {
|
||||
if ((cp = variable_get(c1->name)) != NULL) {
|
||||
int sz;
|
||||
char typ[10], mpoint[50];
|
||||
|
||||
if (sscanf(cp, "%s %d %s", typ, &sz, mpoint) != 3) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
Chunk *tmp;
|
||||
|
||||
if (!strcmp(typ, "swap")) {
|
||||
type = PART_SWAP;
|
||||
strcpy(mpoint, "<swap>");
|
||||
}
|
||||
else {
|
||||
type = PART_FILESYSTEM;
|
||||
if (!strcmp(mpoint, "/"))
|
||||
flags |= CHUNK_IS_ROOT;
|
||||
}
|
||||
if (!sz)
|
||||
sz = space_free(c1);
|
||||
if (sz > space_free(c1)) {
|
||||
dialog_clear();
|
||||
msgConfirm("Not enough free space to create partition: %s", mpoint);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
if (!(tmp = Create_Chunk_DWIM(d, c1, sz, part,
|
||||
(type == PART_SWAP) ? FS_SWAP : FS_BSDFFS, flags))) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to create from partition spec: %s. Too big?", cp);
|
||||
status = RET_FAIL;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
tmp->private_data = new_part(mpoint, TRUE, sz);
|
||||
tmp->private_free = safe_free;
|
||||
status = RET_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Must be something we can set a mountpoint */
|
||||
cp = variable_get(c1->name);
|
||||
if (cp) {
|
||||
char mpoint[50], nwfs[8];
|
||||
Boolean newfs = FALSE;
|
||||
|
||||
nwfs[0] = '\0';
|
||||
if (sscanf(cp, "%s %s", mpoint, nwfs) != 2) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
newfs = toupper(nwfs[0]) == 'Y' ? TRUE : FALSE;
|
||||
if (c1->private_data) {
|
||||
p = c1->private_data;
|
||||
p->newfs = newfs;
|
||||
strcpy(p->mountpoint, mpoint);
|
||||
}
|
||||
else {
|
||||
c1->private_data = new_part(mpoint, newfs, 0);
|
||||
c1->private_free = safe_free;
|
||||
}
|
||||
if (!strcmp(mpoint, "/"))
|
||||
c1->flags |= CHUNK_IS_ROOT;
|
||||
else
|
||||
c1->flags &= ~CHUNK_IS_ROOT;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (status == RET_SUCCESS)
|
||||
variable_set2(DISK_LABELLED, "yes");
|
||||
return status;
|
||||
}
|
||||
|
||||
#define MAX_MOUNT_NAME 12
|
||||
|
||||
#define PART_PART_COL 0
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: main.c,v 1.14 1995/09/18 16:52:29 peter Exp $
|
||||
* $Id: main.c,v 1.15 1995/12/07 10:33:55 peter Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,18 @@ main(int argc, char **argv)
|
|||
{
|
||||
int choice, scroll, curr, max;
|
||||
|
||||
/* Catch fatal signals and complain about them if running as init */
|
||||
if (getpid() == 1) {
|
||||
signal(SIGBUS, screech);
|
||||
signal(SIGSEGV, screech);
|
||||
}
|
||||
|
||||
/* We don't work too well when running as non-root anymore */
|
||||
if (geteuid() != 0) {
|
||||
fprintf(stderr, "Warning: This utility should be run as root.\n");
|
||||
sleep(1);
|
||||
fprintf(stderr, "Error: This utility should only be run as root.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Set up whatever things need setting up */
|
||||
systemInitialize(argc, argv);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: media.c,v 1.29 1996/03/19 12:02:20 jkh Exp $
|
||||
* $Id: media.c,v 1.30 1996/03/21 17:20:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -87,7 +87,7 @@ cpioVerbosity()
|
|||
* be a CD.
|
||||
*/
|
||||
int
|
||||
mediaSetCDROM(char *str)
|
||||
mediaSetCDROM(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -130,7 +130,7 @@ floppyHook(char *str)
|
|||
* be a floppy
|
||||
*/
|
||||
int
|
||||
mediaSetFloppy(char *str)
|
||||
mediaSetFloppy(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -172,7 +172,7 @@ DOSHook(char *str)
|
|||
* be a DOS partition.
|
||||
*/
|
||||
int
|
||||
mediaSetDOS(char *str)
|
||||
mediaSetDOS(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -212,7 +212,7 @@ tapeHook(char *str)
|
|||
* be a tape drive.
|
||||
*/
|
||||
int
|
||||
mediaSetTape(char *str)
|
||||
mediaSetTape(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -261,12 +261,12 @@ mediaSetTape(char *str)
|
|||
* be an ftp server
|
||||
*/
|
||||
int
|
||||
mediaSetFTP(char *str)
|
||||
mediaSetFTP(dialogMenuItem *self)
|
||||
{
|
||||
static Device ftpDevice;
|
||||
char *cp;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (cp = variable_get(VAR_FTP_PATH)))) {
|
||||
if (!(cp = variable_get(VAR_FTP_PATH))) {
|
||||
if (!dmenuOpenSimple(&MenuMediaFTP))
|
||||
return RET_FAIL;
|
||||
else
|
||||
|
|
@ -296,8 +296,7 @@ mediaSetFTP(char *str)
|
|||
}
|
||||
strcpy(ftpDevice.name, cp);
|
||||
|
||||
/* If str == NULL || "script", we were called just to change FTP sites, not network devices */
|
||||
if (str && strcmp(str, "script") && !tcpDeviceSelect())
|
||||
if (!tcpDeviceSelect())
|
||||
return RET_FAIL;
|
||||
|
||||
ftpDevice.type = DEVICE_TYPE_FTP;
|
||||
|
|
@ -311,26 +310,26 @@ mediaSetFTP(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
mediaSetFTPActive(char *str)
|
||||
mediaSetFTPActive(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(VAR_FTP_STATE, "active");
|
||||
return mediaSetFTP(str);
|
||||
return mediaSetFTP(self);
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetFTPPassive(char *str)
|
||||
mediaSetFTPPassive(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(VAR_FTP_STATE, "passive");
|
||||
return mediaSetFTP(str);
|
||||
return mediaSetFTP(self);
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetUFS(char *str)
|
||||
mediaSetUFS(dialogMenuItem *self)
|
||||
{
|
||||
static Device ufsDevice;
|
||||
char *val;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (val = variable_get(VAR_UFS_PATH)))) {
|
||||
if (!(val = variable_get(VAR_UFS_PATH))) {
|
||||
val = variable_get_value(VAR_UFS_PATH, "Enter a fully qualified pathname for the directory\n"
|
||||
"containing the FreeBSD distribution files:");
|
||||
if (!val)
|
||||
|
|
@ -348,21 +347,19 @@ mediaSetUFS(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
mediaSetNFS(char *str)
|
||||
mediaSetNFS(dialogMenuItem *self)
|
||||
{
|
||||
static Device nfsDevice;
|
||||
char *cp;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (cp = variable_get(VAR_NFS_PATH)))) {
|
||||
cp = variable_get_value(VAR_NFS_PATH, "Please enter the full NFS file specification for the remote\n"
|
||||
"host and directory containing the FreeBSD distribution files.\n"
|
||||
"This should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!cp)
|
||||
return RET_FAIL;
|
||||
}
|
||||
cp = variable_get_value(VAR_NFS_PATH, "Please enter the full NFS file specification for the remote\n"
|
||||
"host and directory containing the FreeBSD distribution files.\n"
|
||||
"This should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!cp)
|
||||
return RET_FAIL;
|
||||
strncpy(nfsDevice.name, cp, DEV_NAME_MAX);
|
||||
/* str == NULL means we were just called to change NFS paths, not network interfaces */
|
||||
if (str && strcmp(str, "script") && !tcpDeviceSelect())
|
||||
if (!tcpDeviceSelect())
|
||||
return RET_FAIL;
|
||||
nfsDevice.type = DEVICE_TYPE_NFS;
|
||||
nfsDevice.init = mediaInitNFS;
|
||||
|
|
@ -519,7 +516,7 @@ mediaExtractDist(char *dir, int fd)
|
|||
}
|
||||
|
||||
int
|
||||
mediaGetType(char *unused)
|
||||
mediaGetType(dialogMenuItem *self)
|
||||
{
|
||||
if (!dmenuOpenSimple(&MenuMedia))
|
||||
return RET_FAIL;
|
||||
|
|
@ -541,7 +538,7 @@ mediaVerify(void)
|
|||
|
||||
/* Set FTP error behavior */
|
||||
int
|
||||
mediaSetFtpOnError(char *str)
|
||||
mediaSetFtpOnError(dialogMenuItem *self)
|
||||
{
|
||||
char *cp = variable_get(VAR_FTP_ONERROR);
|
||||
|
||||
|
|
@ -563,7 +560,7 @@ mediaSetFtpOnError(char *str)
|
|||
|
||||
/* Set the FTP username and password fields */
|
||||
int
|
||||
mediaSetFtpUserPass(char *str)
|
||||
mediaSetFtpUserPass(dialogMenuItem *self)
|
||||
{
|
||||
char *pass;
|
||||
|
||||
|
|
@ -578,7 +575,7 @@ mediaSetFtpUserPass(char *str)
|
|||
|
||||
/* Set CPIO verbosity level */
|
||||
int
|
||||
mediaSetCPIOVerbosity(char *str)
|
||||
mediaSetCPIOVerbosity(dialogMenuItem *self)
|
||||
{
|
||||
char *cp = variable_get(VAR_CPIO_VERBOSITY);
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: options.c,v 1.30 1996/03/23 07:21:30 jkh Exp $
|
||||
* $Id: options.c,v 1.31 1996/03/24 12:06:13 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -197,7 +197,7 @@ fire(Option opt)
|
|||
}
|
||||
|
||||
int
|
||||
optionsEditor(char *str)
|
||||
optionsEditor(dialogMenuItem *self)
|
||||
{
|
||||
int i, optcol, optrow, key;
|
||||
static int currOpt = 0;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.47 1996/03/21 09:30:15 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.48 1996/03/23 07:21:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,6 @@
|
|||
|
||||
/*** Defines ***/
|
||||
|
||||
/* Bitfields for menu options */
|
||||
#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */
|
||||
#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */
|
||||
#define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */
|
||||
|
||||
/* XXX This goes away soon XXX */
|
||||
#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */
|
||||
|
||||
/* variable limits */
|
||||
#define VAR_NAME_MAX 128
|
||||
#define VAR_VALUE_MAX 1024
|
||||
|
|
@ -153,36 +145,15 @@ typedef unsigned int Boolean;
|
|||
typedef struct disk Disk;
|
||||
typedef struct chunk Chunk;
|
||||
|
||||
typedef enum {
|
||||
DMENU_DISPLAY_FILE, /* Display a file's contents */
|
||||
DMENU_SUBMENU, /* Recurse into another menu */
|
||||
DMENU_SYSTEM_COMMAND, /* Run shell commmand */
|
||||
DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */
|
||||
DMENU_SET_VARIABLE, /* Set an environment/system var */
|
||||
DMENU_SET_FLAG, /* Set flag in an unsigned int */
|
||||
DMENU_SET_VALUE, /* Set unsigned int to value */
|
||||
DMENU_CALL, /* Call back a C function */
|
||||
DMENU_CANCEL, /* Cancel out of this menu */
|
||||
DMENU_NOP, /* Do nothing special for item */
|
||||
} DMenuItemType;
|
||||
|
||||
typedef struct _dmenuItem {
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
DMenuItemType type; /* What type of item we are */
|
||||
void *ptr; /* Generic data ptr */
|
||||
int parm; /* Parameter for above */
|
||||
Boolean disabled; /* Are we temporarily disabled? */
|
||||
char * (*check)(struct _dmenuItem *); /* Our state */
|
||||
} DMenuItem;
|
||||
typedef enum { DMENU_NORMAL_TYPE, DMENU_RADIO_TYPE, DMENU_CHECKLIST_TYPE } dmenuType;
|
||||
|
||||
typedef struct _dmenu {
|
||||
unsigned int options; /* What sort of menu we are */
|
||||
dmenuType type; /* What sort of menu we are */
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
char *helpline; /* Line of help at bottom */
|
||||
char *helpfile; /* Help file for "F1" */
|
||||
DMenuItem items[0]; /* Array of menu items */
|
||||
dialogMenuItem items[0]; /* Array of menu items */
|
||||
} DMenu;
|
||||
|
||||
/* A sysconfig variable */
|
||||
|
|
@ -358,10 +329,10 @@ extern DMenu MenuHTMLDoc; /* HTML Documentation menu */
|
|||
/*** Prototypes ***/
|
||||
|
||||
/* apache.c */
|
||||
extern int configApache(char *str);
|
||||
extern int configApache(dialogMenuItem *self);
|
||||
|
||||
/* anonFTP.c */
|
||||
extern int configAnonFTP(char *unused);
|
||||
extern int configAnonFTP(dialogMenuItem *self);
|
||||
|
||||
/* attrs.c */
|
||||
extern char *attr_match(Attribs *attr, char *name);
|
||||
|
|
@ -384,20 +355,16 @@ extern void command_func_add(char *key, commandFunc func, void *data);
|
|||
extern int configFstab(void);
|
||||
extern void configSysconfig(void);
|
||||
extern void configResolv(void);
|
||||
extern int configPorts(char *str);
|
||||
extern int configPackages(char *str);
|
||||
extern int configSaverTimeout(char *str);
|
||||
extern int configNTP(char *str);
|
||||
extern int configRoutedFlags(char *str);
|
||||
extern int configPorts(dialogMenuItem *self);
|
||||
extern int configPackages(dialogMenuItem *self);
|
||||
extern int configSaverTimeout(dialogMenuItem *self);
|
||||
extern int configNTP(dialogMenuItem *self);
|
||||
extern int configXFree86(dialogMenuItem *self);
|
||||
extern int configRoutedFlags(dialogMenuItem *self);
|
||||
|
||||
/* crc.c */
|
||||
extern int crc(int, unsigned long *, unsigned long *);
|
||||
|
||||
/* decode.c */
|
||||
extern DMenuItem *decode(DMenu *menu, char *name);
|
||||
extern int dispatch(DMenuItem *tmp, char *name);
|
||||
extern int decode_and_dispatch_multiple(DMenu *menu, char *names);
|
||||
|
||||
/* devices.c */
|
||||
extern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)());
|
||||
extern void deviceGetAll(void);
|
||||
|
|
@ -414,34 +381,42 @@ extern Boolean dummyClose(Device *dev, int fd);
|
|||
extern void dummyShutdown(Device *dev);
|
||||
|
||||
/* disks.c */
|
||||
extern int diskPartitionEditor(char *unused);
|
||||
extern int diskPartitionWrite(char *unused);
|
||||
extern int diskPartitionEditor(dialogMenuItem *self);
|
||||
extern int diskPartitionWrite(dialogMenuItem *self);
|
||||
|
||||
/* dist.c */
|
||||
extern int distReset(char *str);
|
||||
extern int distSetCustom(char *str);
|
||||
extern int distSetDeveloper(char *str);
|
||||
extern int distSetXDeveloper(char *str);
|
||||
extern int distSetKernDeveloper(char *str);
|
||||
extern int distSetUser(char *str);
|
||||
extern int distSetXUser(char *str);
|
||||
extern int distSetMinimum(char *str);
|
||||
extern int distSetEverything(char *str);
|
||||
extern int distSetDES(char *str);
|
||||
extern int distSetSrc(char *str);
|
||||
extern int distSetXF86(char *str);
|
||||
extern int distExtractAll(char *str);
|
||||
extern int distReset(dialogMenuItem *self);
|
||||
extern int distSetDeveloper(dialogMenuItem *self);
|
||||
extern int distSetXDeveloper(dialogMenuItem *self);
|
||||
extern int distSetKernDeveloper(dialogMenuItem *self);
|
||||
extern int distSetUser(dialogMenuItem *self);
|
||||
extern int distSetXUser(dialogMenuItem *self);
|
||||
extern int distSetMinimum(dialogMenuItem *self);
|
||||
extern int distSetEverything(dialogMenuItem *self);
|
||||
extern int distSetDES(dialogMenuItem *self);
|
||||
extern int distSetSrc(dialogMenuItem *self);
|
||||
extern int distSetXF86(dialogMenuItem *self);
|
||||
extern int distExtractAll(dialogMenuItem *self);
|
||||
|
||||
/* dmenu.c */
|
||||
extern int dmenuDisplayFile(dialogMenuItem *tmp);
|
||||
extern int dmenuSubmenu(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommand(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommandBox(dialogMenuItem *tmp);
|
||||
extern int dmenuCancel(dialogMenuItem *tmp);
|
||||
extern int dmenuSetVariable(dialogMenuItem *tmp);
|
||||
extern int dmenuSetFlag(dialogMenuItem *tmp);
|
||||
extern int dmenuSetValue(dialogMenuItem *tmp);
|
||||
extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max);
|
||||
extern Boolean dmenuOpenSimple(DMenu *menu);
|
||||
extern char *dmenuVarCheck(DMenuItem *item);
|
||||
extern char *dmenuFlagCheck(DMenuItem *item);
|
||||
extern char *dmenuRadioCheck(DMenuItem *item);
|
||||
extern int dmenuVarCheck(dialogMenuItem *item);
|
||||
extern int dmenuFlagCheck(dialogMenuItem *item);
|
||||
extern int dmenuRadioCheck(dialogMenuItem *item);
|
||||
|
||||
/* doc.c */
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
extern int docBrowser(dialogMenuItem *self);
|
||||
extern int docShowDocument(dialogMenuItem *self);
|
||||
|
||||
/* dos.c */
|
||||
extern Boolean mediaInitDOS(Device *dev);
|
||||
|
|
@ -474,27 +449,26 @@ void index_print(PkgNodePtr top, int level);
|
|||
int index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist);
|
||||
|
||||
/* install.c */
|
||||
extern int installCommit(char *str);
|
||||
extern int installExpress(char *str);
|
||||
extern int installNovice(char *str);
|
||||
extern int installFixit(char *str);
|
||||
extern int installFixup(char *str);
|
||||
extern int installUpgrade(char *str);
|
||||
extern int installPreconfig(char *str);
|
||||
extern int installFilesystems(char *str);
|
||||
extern int installVarDefaults(char *str);
|
||||
extern int installCommit(dialogMenuItem *self);
|
||||
extern int installExpress(dialogMenuItem *self);
|
||||
extern int installNovice(dialogMenuItem *self);
|
||||
extern int installFixit(dialogMenuItem *self);
|
||||
extern int installFixup(dialogMenuItem *self);
|
||||
extern int installUpgrade(dialogMenuItem *self);
|
||||
extern int installFilesystems(dialogMenuItem *self);
|
||||
extern int installVarDefaults(dialogMenuItem *self);
|
||||
extern Boolean copySelf(void);
|
||||
extern Boolean rootExtract(void);
|
||||
|
||||
/* installFinal.c */
|
||||
extern int configGated(char *unused);
|
||||
extern int configSamba(char *unused);
|
||||
extern int configPCNFSD(char *unused);
|
||||
extern int configNFSServer(char *unused);
|
||||
extern int configGated(dialogMenuItem *self);
|
||||
extern int configSamba(dialogMenuItem *self);
|
||||
extern int configPCNFSD(dialogMenuItem *self);
|
||||
extern int configNFSServer(dialogMenuItem *self);
|
||||
|
||||
/* label.c */
|
||||
extern int diskLabelEditor(char *str);
|
||||
extern int diskLabelCommit(char *str);
|
||||
extern int diskLabelEditor(dialogMenuItem *self);
|
||||
extern int diskLabelCommit(dialogMenuItem *self);
|
||||
|
||||
/* lndir.c */
|
||||
extern int lndir(char *from, char *to);
|
||||
|
|
@ -515,19 +489,19 @@ extern u_char default_scrnmap[];
|
|||
|
||||
/* media.c */
|
||||
extern char *cpioVerbosity(void);
|
||||
extern int mediaSetCDROM(char *str);
|
||||
extern int mediaSetFloppy(char *str);
|
||||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFTPActive(char *str);
|
||||
extern int mediaSetFTPPassive(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern int mediaSetFtpOnError(char *str);
|
||||
extern int mediaSetFtpUserPass(char *str);
|
||||
extern int mediaSetCPIOVerbosity(char *str);
|
||||
extern int mediaGetType(char *str);
|
||||
extern int mediaSetCDROM(dialogMenuItem *self);
|
||||
extern int mediaSetFloppy(dialogMenuItem *self);
|
||||
extern int mediaSetDOS(dialogMenuItem *self);
|
||||
extern int mediaSetTape(dialogMenuItem *self);
|
||||
extern int mediaSetFTP(dialogMenuItem *self);
|
||||
extern int mediaSetFTPActive(dialogMenuItem *self);
|
||||
extern int mediaSetFTPPassive(dialogMenuItem *self);
|
||||
extern int mediaSetUFS(dialogMenuItem *self);
|
||||
extern int mediaSetNFS(dialogMenuItem *self);
|
||||
extern int mediaSetFtpOnError(dialogMenuItem *self);
|
||||
extern int mediaSetFtpUserPass(dialogMenuItem *self);
|
||||
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
|
||||
extern int mediaGetType(dialogMenuItem *self);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
|
|
@ -579,7 +553,7 @@ extern int mediaGetNFS(Device *dev, char *file, Boolean probe);
|
|||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* options.c */
|
||||
extern int optionsEditor(char *str);
|
||||
extern int optionsEditor(dialogMenuItem *self);
|
||||
|
||||
/* package.c */
|
||||
extern int package_add(char *name);
|
||||
|
|
@ -598,8 +572,6 @@ extern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mo
|
|||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern void systemCreateHoloshell(void);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
|
||||
/* tape.c */
|
||||
extern char *mediaTapeBlocksize(void);
|
||||
|
|
@ -609,7 +581,7 @@ extern void mediaShutdownTape(Device *dev);
|
|||
|
||||
/* tcpip.c */
|
||||
extern int tcpOpenDialog(Device *dev);
|
||||
extern int tcpMenuSelect(char *str);
|
||||
extern int tcpMenuSelect(dialogMenuItem *self);
|
||||
extern int tcpInstallDevice(char *str);
|
||||
extern Boolean tcpDeviceSelect(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: tcpip.c,v 1.32 1995/12/07 10:34:19 peter Exp $
|
||||
* $Id: tcpip.c,v 1.33 1996/03/02 07:31:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Gary J Palmer. All rights reserved.
|
||||
|
|
@ -569,7 +569,7 @@ tcpDeviceSelect(void)
|
|||
|
||||
/* Do it from a menu that doesn't care about status */
|
||||
int
|
||||
tcpMenuSelect(char *str)
|
||||
tcpMenuSelect(dialogMenuItem *self)
|
||||
{
|
||||
(void)tcpDeviceSelect();
|
||||
configResolv();
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ CLEANFILES= makedevs.c rtermcap
|
|||
|
||||
.PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum
|
||||
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c decode.c \
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c \
|
||||
devices.c disks.c dist.c dmenu.c doc.c dos.c floppy.c ftp.c \
|
||||
ftp_strat.c globals.c index.c install.c installFinal.c \
|
||||
installPreconfig.c installUpgrade.c label.c lndir.c main.c \
|
||||
makedevs.c media.c menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
installUpgrade.c label.c lndir.c main.c makedevs.c media.c \
|
||||
menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
package.c system.c tape.c tcpip.c termcap.c ufs.c variable.c wizard.c
|
||||
|
||||
CFLAGS+= -Wall -I${.CURDIR}/../../gnu/lib/libdialog
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: config.c,v 1.21 1996/03/21 09:30:08 jkh Exp $
|
||||
* $Id: config.c,v 1.22 1996/03/24 18:57:34 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -326,18 +326,32 @@ configSysconfig(void)
|
|||
}
|
||||
|
||||
int
|
||||
configSaverTimeout(char *str)
|
||||
configSaverTimeout(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver")
|
||||
? RET_SUCCESS : RET_FAIL;
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver") ?
|
||||
RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configNTP(char *str)
|
||||
configNTP(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_NTPDATE, "Enter the name of an NTP server") ? RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configXFree86(dialogMenuItem *self)
|
||||
{
|
||||
if (file_executable("/usr/X11R6/bin/xf86config")) {
|
||||
systemExecute("/usr/X11R6/bin/xf86config");
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
else {
|
||||
msgConfirm("XFree86 does not appear to be installed! Please install\n"
|
||||
"The XFree86 distribution before attempting to configure it.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
configResolv(void)
|
||||
{
|
||||
|
|
@ -398,7 +412,7 @@ skip:
|
|||
}
|
||||
|
||||
int
|
||||
configRoutedFlags(char *str)
|
||||
configRoutedFlags(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_ROUTEDFLAGS,
|
||||
"Specify the flags for routed; -q is the default, -s is\n"
|
||||
|
|
@ -406,7 +420,7 @@ configRoutedFlags(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPackages(char *str)
|
||||
configPackages(dialogMenuItem *self)
|
||||
{
|
||||
static PkgNode top, plist;
|
||||
static Boolean index_initted = FALSE;
|
||||
|
|
@ -483,7 +497,7 @@ configPackages(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPorts(char *str)
|
||||
configPorts(dialogMenuItem *self)
|
||||
{
|
||||
char *cp, *dist = NULL; /* Shut up compiler */
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: devices.c,v 1.41 1996/03/18 15:27:46 jkh Exp $
|
||||
* $Id: devices.c,v 1.42 1996/03/24 09:36:41 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -368,24 +368,21 @@ deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)())
|
|||
return NULL;
|
||||
|
||||
for (numdevs = 0; devs[numdevs]; numdevs++);
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(DMenuItem) * (numdevs + 1)));
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(dialogMenuItem) * (numdevs + 1)));
|
||||
bcopy(menu, tmp, sizeof(DMenu));
|
||||
for (i = 0; devs[i]; i++) {
|
||||
tmp->items[i].title = devs[i]->name;
|
||||
tmp->items[i].prompt = devs[i]->name;
|
||||
for (j = 0; device_names[j].name; j++) {
|
||||
if (!strncmp(devs[i]->name, device_names[j].name, strlen(device_names[j].name))) {
|
||||
tmp->items[i].prompt = device_names[j].description;
|
||||
tmp->items[i].title = device_names[j].description;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!device_names[j].name)
|
||||
tmp->items[i].prompt = "<unknown device type>";
|
||||
tmp->items[i].type = DMENU_CALL;
|
||||
tmp->items[i].ptr = hook;
|
||||
tmp->items[i].disabled = FALSE;
|
||||
tmp->items[i].check = NULL;
|
||||
tmp->items[i].title = "<unknown device type>";
|
||||
tmp->items[i].fire = hook;
|
||||
tmp->items[i].checked = NULL;
|
||||
}
|
||||
tmp->items[i].type = DMENU_NOP;
|
||||
tmp->items[i].title = NULL;
|
||||
return tmp;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: disks.c,v 1.37 1996/03/20 14:11:21 jkh Exp $
|
||||
* $Id: disks.c,v 1.38 1996/03/24 18:57:35 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -135,92 +135,6 @@ print_command_summary()
|
|||
move(0, 0);
|
||||
}
|
||||
|
||||
/* Partition a disk based wholly on which variables are set */
|
||||
static void
|
||||
scriptPartition(Device *dev, Disk *d)
|
||||
{
|
||||
char *cp;
|
||||
int i, sz;
|
||||
|
||||
record_chunks(d);
|
||||
cp = variable_get(VAR_GEOMETRY);
|
||||
if (cp) {
|
||||
msgDebug("Setting geometry from script to: %s\n", cp);
|
||||
d->bios_cyl = strtol(cp, &cp, 0);
|
||||
d->bios_hd = strtol(cp + 1, &cp, 0);
|
||||
d->bios_sect = strtol(cp + 1, 0, 0);
|
||||
}
|
||||
|
||||
cp = variable_get(VAR_DISKSPACE);
|
||||
if (cp) {
|
||||
if (!strcmp(cp, "free")) {
|
||||
/* Do free disk space case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least 10MB in size, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size > (10 * ONE_MEG)) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, chunk_info[i]->size, freebsd, 3,
|
||||
(chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any free space on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "all")) {
|
||||
/* Do all disk space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, FALSE);
|
||||
}
|
||||
else if (!strcmp(cp, "exclusive")) {
|
||||
/* Do really-all-the-disk-space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, TRUE);
|
||||
}
|
||||
else if ((sz = strtol(cp, &cp, 0))) {
|
||||
/* Look for sz bytes free */
|
||||
if (*cp && toupper(*cp) == 'M')
|
||||
sz *= ONE_MEG;
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least sz MB, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size >= sz) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, sz, freebsd, 3, (chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find %d free blocks on this disk!", sz);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "existing")) {
|
||||
/* Do existing FreeBSD case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
if (chunk_info[i]->type == freebsd)
|
||||
break;
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any existing FreeBSD partitions on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
dialog_clear();
|
||||
msgConfirm("`%s' is an invalid value for %s - is config file valid?", cp, VAR_DISKSPACE);
|
||||
return;
|
||||
}
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
}
|
||||
}
|
||||
|
||||
static u_char *
|
||||
getBootMgr(char *dname)
|
||||
{
|
||||
|
|
@ -533,14 +447,15 @@ partitionHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionEditor(char *str)
|
||||
diskPartitionEditor(dialogMenuItem *self)
|
||||
{
|
||||
DMenu *menu;
|
||||
Device **devs;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str= variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -552,10 +467,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
else if (cnt == 1) {
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
scriptPartition(devs[0], (Disk *)devs[0]->private);
|
||||
else
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
i = RET_SUCCESS;
|
||||
variable_set2(DISK_SELECTED, "yes");
|
||||
}
|
||||
|
|
@ -584,7 +496,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionWrite(char *str)
|
||||
diskPartitionWrite(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
char *cp;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dmenu.c,v 1.13 1995/12/07 10:33:44 peter Exp $
|
||||
* $Id: dmenu.c,v 1.14 1996/03/02 07:31:51 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -46,6 +46,71 @@
|
|||
|
||||
#define MAX_MENU 15
|
||||
|
||||
static Boolean cancelled;
|
||||
|
||||
int
|
||||
dmenuDisplayFile(dialogMenuItem *tmp)
|
||||
{
|
||||
systemDisplayHelp((char *)tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSubmenu(dialogMenuItem *tmp)
|
||||
{
|
||||
dialog_clear();
|
||||
return dmenuOpenSimple((DMenu *)tmp->data);
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommand(dialogMenuItem *tmp)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = systemExecute((char *)tmp->data) ? RET_FAIL : RET_SUCCESS;
|
||||
dialog_clear();
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommandBox(dialogMenuItem *tmp)
|
||||
{
|
||||
use_helpfile(NULL);
|
||||
use_helpline("Select OK to dismiss this dialog");
|
||||
dialog_prgbox(tmp->title, (char *)tmp->data, 22, 76, 1, 1);
|
||||
dialog_clear();
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuCancel(dialogMenuItem *tmp)
|
||||
{
|
||||
cancelled = TRUE;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetVariable(dialogMenuItem *tmp)
|
||||
{
|
||||
variable_set((char *)tmp->data);
|
||||
msgInfo("Set %s", tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetFlag(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) |= tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetValue(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) = tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
/* Traverse menu but give user no control over positioning */
|
||||
Boolean
|
||||
dmenuOpenSimple(DMenu *menu)
|
||||
|
|
@ -53,56 +118,44 @@ dmenuOpenSimple(DMenu *menu)
|
|||
int choice, scroll, curr, max;
|
||||
|
||||
choice = scroll = curr = max = 0;
|
||||
dialog_clear();
|
||||
return dmenuOpen(menu, &choice, &scroll, &curr, &max);
|
||||
}
|
||||
|
||||
/* Work functions for the state hook */
|
||||
char *
|
||||
dmenuFlagCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuFlagCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) & item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
return (*((unsigned int *)item->data) & item->aux);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuVarCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuVarCheck(dialogMenuItem *item)
|
||||
{
|
||||
char *w, *cp, *cp2, tmp[256];
|
||||
|
||||
w = (char *)item->parm;
|
||||
w = (char *)item->aux;
|
||||
if (!w)
|
||||
w = (char *)item->ptr;
|
||||
w = (char *)item->data;
|
||||
if (!w)
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
strncpy(tmp, w, 256);
|
||||
if ((cp = index(tmp, '=')) != NULL) {
|
||||
*(cp++) = '\0';
|
||||
cp2 = getenv(tmp);
|
||||
if (cp2)
|
||||
return !strcmp(cp, cp2) ? "ON" : "OFF";
|
||||
return !strcmp(cp, cp2);
|
||||
else
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return getenv(tmp) ? "ON" : "OFF";
|
||||
return (int)getenv(tmp);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuRadioCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuRadioCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) == item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
}
|
||||
|
||||
static char *
|
||||
checkHookVal(DMenuItem *item)
|
||||
{
|
||||
|
||||
if (!item->check)
|
||||
return "OFF";
|
||||
return (*item->check)(item);
|
||||
return (*((unsigned int *)item->data) == item->aux);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -122,21 +175,10 @@ menu_height(DMenu *menu, int n)
|
|||
Boolean
|
||||
dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
||||
{
|
||||
char result[FILENAME_MAX];
|
||||
char **nitems = NULL;
|
||||
DMenuItem *tmp;
|
||||
int rval = 0, n = 0;
|
||||
int n, rval = 0;
|
||||
|
||||
/* First, construct the menu */
|
||||
for (tmp = menu->items; tmp->title; tmp++) {
|
||||
if (!tmp->disabled) {
|
||||
nitems = item_add_pair(nitems, tmp->title, tmp->prompt, curr, max);
|
||||
if (menu->options & (DMENU_RADIO_TYPE | DMENU_MULTIPLE_TYPE))
|
||||
nitems = item_add(nitems, checkHookVal(tmp), curr, max);
|
||||
++n;
|
||||
}
|
||||
}
|
||||
nitems = item_add(nitems, NULL, curr, max); /* Terminate it */
|
||||
/* Count up all the items */
|
||||
for (n = 0; menu->items[n].title; n++);
|
||||
|
||||
while (1) {
|
||||
char buf[FILENAME_MAX];
|
||||
|
|
@ -146,40 +188,25 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
|||
use_helpfile(systemHelpFile(menu->helpfile, buf));
|
||||
|
||||
/* Pop up that dialog! */
|
||||
if (menu->options & DMENU_NORMAL_TYPE)
|
||||
if (menu->type == DMENU_NORMAL_TYPE)
|
||||
rval = dialog_menu((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result, choice, scroll);
|
||||
menu_height(menu, n), -n, menu->items, NULL, choice, scroll);
|
||||
|
||||
else if (menu->options & DMENU_RADIO_TYPE)
|
||||
else if (menu->type == DMENU_RADIO_TYPE)
|
||||
rval = dialog_radiolist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
else if (menu->options & DMENU_MULTIPLE_TYPE)
|
||||
else if (menu->type == DMENU_CHECKLIST_TYPE)
|
||||
rval = dialog_checklist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
/* This seems to be the only technique that works for getting the display to look right */
|
||||
dialog_clear();
|
||||
|
||||
if (!rval) {
|
||||
if (menu->options & DMENU_MULTIPLE_TYPE) {
|
||||
if (decode_and_dispatch_multiple(menu, result) || menu->options & DMENU_SELECTION_RETURNS) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((tmp = decode(menu, result)) == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
if (dispatch(tmp, result) == RET_DONE || (menu->options & DMENU_SELECTION_RETURNS)) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
items_free(nitems, curr, max);
|
||||
if (rval)
|
||||
return FALSE;
|
||||
else if (cancelled) {
|
||||
cancelled = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.80 1996/03/24 09:43:53 jkh Exp $
|
||||
* $Id: install.c,v 1.81 1996/03/24 18:57:36 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -219,12 +219,13 @@ installInitial(void)
|
|||
}
|
||||
|
||||
int
|
||||
installFixit(char *str)
|
||||
installFixit(dialogMenuItem *self)
|
||||
{
|
||||
struct ufs_args args;
|
||||
pid_t child;
|
||||
int waitstatus;
|
||||
|
||||
variable_set2(SYSTEM_STATE, "fixit");
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.fspec = "/dev/fd0";
|
||||
Mkdir("/mnt2", NULL);
|
||||
|
|
@ -297,12 +298,13 @@ installFixit(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installExpress(char *str)
|
||||
installExpress(dialogMenuItem *self)
|
||||
{
|
||||
if (diskPartitionEditor("express") == RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "express");
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (diskLabelEditor("express") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (!Dists) {
|
||||
|
|
@ -315,7 +317,7 @@ installExpress(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("express") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -323,8 +325,9 @@ installExpress(char *str)
|
|||
|
||||
/* Novice mode installation */
|
||||
int
|
||||
installNovice(char *str)
|
||||
installNovice(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(SYSTEM_STATE, "novice");
|
||||
dialog_clear();
|
||||
msgConfirm("In the next menu, you will need to set up a DOS-style (\"fdisk\") partitioning\n"
|
||||
"scheme for your hard disk. If you simply wish to devote all disk space\n"
|
||||
|
|
@ -333,7 +336,7 @@ installNovice(char *str)
|
|||
"by a (Q)uit. If you wish to allocate only free space to FreeBSD, move to a\n"
|
||||
"partition marked \"unused\" and use the (C)reate command.");
|
||||
|
||||
if (diskPartitionEditor("novice") == RET_FAIL)
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -344,7 +347,7 @@ installNovice(char *str)
|
|||
"care for the layout chosen by (A)uto, press F1 for more information on\n"
|
||||
"manual layout.");
|
||||
|
||||
if (diskLabelEditor("novice") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -367,7 +370,7 @@ installNovice(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("novice") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -382,14 +385,16 @@ installNovice(char *str)
|
|||
* DES dist.
|
||||
*/
|
||||
int
|
||||
installCommit(char *str)
|
||||
installCommit(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
extern int cdromMounted;
|
||||
char *str;
|
||||
|
||||
if (!mediaVerify())
|
||||
return RET_FAIL;
|
||||
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
i = RET_DONE;
|
||||
if (RunningAsInit) {
|
||||
if (installInitial() == RET_FAIL)
|
||||
|
|
@ -404,15 +409,12 @@ installCommit(char *str)
|
|||
}
|
||||
}
|
||||
|
||||
if (distExtractAll(NULL) == RET_FAIL)
|
||||
if (distExtractAll(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (installFixup(NULL) == RET_FAIL)
|
||||
if (installFixup(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (i != RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "base-install");
|
||||
|
||||
if (i != RET_FAIL && !strcmp(str, "novice")) {
|
||||
dialog_clear();
|
||||
msgConfirm("Since you're running the novice installation, a few post-configuration\n"
|
||||
|
|
@ -434,7 +436,7 @@ installCommit(char *str)
|
|||
if (!msgYesNo("Would you like to configure Samba for connecting NETBUI clients to this\n"
|
||||
"machine? Windows 95, Windows NT and Windows for Workgroups\n"
|
||||
"machines can use NETBUI transport for disk and printer sharing."))
|
||||
configSamba(NULL);
|
||||
configSamba(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Will this machine be an IP gateway (e.g. will it forward packets\n"
|
||||
|
|
@ -443,11 +445,11 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to allow anonymous FTP connections to this machine?"))
|
||||
configAnonFTP(NULL);
|
||||
configAnonFTP(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS server?"))
|
||||
configNFSServer(NULL);
|
||||
configNFSServer(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS client?"))
|
||||
|
|
@ -455,7 +457,7 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as a WEB server?"))
|
||||
configApache(NULL);
|
||||
configApache(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Would you like to customize your system console settings?"))
|
||||
|
|
@ -482,14 +484,14 @@ installCommit(char *str)
|
|||
"drive to use the ports collection, but at a substantial savings\n"
|
||||
"in disk space (NOTE: This may take as long as 15 or 20 minutes\n"
|
||||
"depending on the speed of your CDROM drive)."))
|
||||
configPorts(NULL);
|
||||
configPorts(self);
|
||||
}
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("The FreeBSD package collection is a collection of over 300 ready-to-run\n"
|
||||
"applications, from text editors to games to WEB servers. Would you like\n"
|
||||
"to browse the collection now?"))
|
||||
configPackages(NULL);
|
||||
configPackages(self);
|
||||
|
||||
/* XXX Put whatever other nice configuration questions you'd like to ask the user here XXX */
|
||||
|
||||
|
|
@ -505,8 +507,6 @@ installCommit(char *str)
|
|||
configResolv();
|
||||
configSysconfig();
|
||||
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
/* Don't print this if we're express or novice installing */
|
||||
if (strcmp(str, "express") && strcmp(str, "novice")) {
|
||||
if (Dists || i == RET_FAIL) {
|
||||
|
|
@ -541,11 +541,13 @@ installCommit(char *str)
|
|||
"may do so by typing: /stand/sysinstall.");
|
||||
}
|
||||
}
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
installFixup(char *str)
|
||||
installFixup(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int i;
|
||||
|
|
@ -625,18 +627,20 @@ installFixup(char *str)
|
|||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
int
|
||||
installFilesystems(char *str)
|
||||
installFilesystems(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
Disk *disk;
|
||||
Chunk *c1, *c2, *rootdev, *swapdev, *usrdev;
|
||||
Device **devs;
|
||||
PartInfo *root;
|
||||
char dname[80];
|
||||
char dname[80], *str;
|
||||
extern int MakeDevChunk(Chunk *c, char *n);
|
||||
Boolean upgrade = FALSE;
|
||||
|
||||
if (!(str && !strcmp(str, "script")) && !checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
|
||||
if (!checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
return RET_FAIL;
|
||||
|
||||
root = (PartInfo *)rootdev->private_data;
|
||||
|
|
@ -779,7 +783,7 @@ installFilesystems(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installVarDefaults(char *unused)
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: label.c,v 1.39 1996/03/20 14:11:22 jkh Exp $
|
||||
* $Id: label.c,v 1.40 1996/03/24 18:57:37 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -81,7 +81,6 @@ static struct {
|
|||
static int here;
|
||||
|
||||
static int diskLabel(char *str);
|
||||
static int scriptLabel(char *str);
|
||||
|
||||
static int
|
||||
labelHook(char *str)
|
||||
|
|
@ -115,14 +114,15 @@ labelHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelEditor(char *str)
|
||||
diskLabelEditor(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
DMenu *menu;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -135,10 +135,7 @@ diskLabelEditor(char *str)
|
|||
else if (cnt == 1 || variable_get(DISK_SELECTED)) {
|
||||
if (cnt == 1)
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
i = scriptLabel(str);
|
||||
else
|
||||
i = diskLabel(str);
|
||||
i = diskLabel(str);
|
||||
}
|
||||
else {
|
||||
menu = deviceCreateMenu(&MenuDiskDevices, DEVICE_TYPE_DISK, labelHook);
|
||||
|
|
@ -163,7 +160,7 @@ diskLabelEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelCommit(char *str)
|
||||
diskLabelCommit(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
int i;
|
||||
|
|
@ -179,9 +176,9 @@ diskLabelCommit(char *str)
|
|||
i = RET_FAIL;
|
||||
}
|
||||
/* The routine will guard against redundant writes, just as this one does */
|
||||
else if (diskPartitionWrite(str) != RET_SUCCESS)
|
||||
else if (diskPartitionWrite(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else if (installFilesystems(str) != RET_SUCCESS)
|
||||
else if (installFilesystems(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else {
|
||||
msgInfo("All filesystem information written successfully.");
|
||||
|
|
@ -399,119 +396,6 @@ getNewfsCmd(PartInfo *p)
|
|||
strncpy(p->newfs_cmd, val, NEWFS_CMD_MAX);
|
||||
}
|
||||
|
||||
static int
|
||||
scriptLabel(char *str)
|
||||
{
|
||||
char *cp;
|
||||
PartType type;
|
||||
PartInfo *p;
|
||||
u_long flags = 0;
|
||||
int i, status;
|
||||
Device **devs;
|
||||
Disk *d;
|
||||
|
||||
status = RET_SUCCESS;
|
||||
cp = variable_get(VAR_DISK);
|
||||
if (!cp) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk selected - can't label automatically.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
if (!devs) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk device %s found!", cp);
|
||||
return RET_FAIL;
|
||||
}
|
||||
d = devs[0]->private;
|
||||
|
||||
record_label_chunks(devs);
|
||||
for (i = 0; label_chunk_info[i].c; i++) {
|
||||
Chunk *c1 = label_chunk_info[i].c;
|
||||
|
||||
if (label_chunk_info[i].type == PART_SLICE) {
|
||||
if ((cp = variable_get(c1->name)) != NULL) {
|
||||
int sz;
|
||||
char typ[10], mpoint[50];
|
||||
|
||||
if (sscanf(cp, "%s %d %s", typ, &sz, mpoint) != 3) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
Chunk *tmp;
|
||||
|
||||
if (!strcmp(typ, "swap")) {
|
||||
type = PART_SWAP;
|
||||
strcpy(mpoint, "<swap>");
|
||||
}
|
||||
else {
|
||||
type = PART_FILESYSTEM;
|
||||
if (!strcmp(mpoint, "/"))
|
||||
flags |= CHUNK_IS_ROOT;
|
||||
}
|
||||
if (!sz)
|
||||
sz = space_free(c1);
|
||||
if (sz > space_free(c1)) {
|
||||
dialog_clear();
|
||||
msgConfirm("Not enough free space to create partition: %s", mpoint);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
if (!(tmp = Create_Chunk_DWIM(d, c1, sz, part,
|
||||
(type == PART_SWAP) ? FS_SWAP : FS_BSDFFS, flags))) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to create from partition spec: %s. Too big?", cp);
|
||||
status = RET_FAIL;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
tmp->private_data = new_part(mpoint, TRUE, sz);
|
||||
tmp->private_free = safe_free;
|
||||
status = RET_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Must be something we can set a mountpoint */
|
||||
cp = variable_get(c1->name);
|
||||
if (cp) {
|
||||
char mpoint[50], nwfs[8];
|
||||
Boolean newfs = FALSE;
|
||||
|
||||
nwfs[0] = '\0';
|
||||
if (sscanf(cp, "%s %s", mpoint, nwfs) != 2) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
newfs = toupper(nwfs[0]) == 'Y' ? TRUE : FALSE;
|
||||
if (c1->private_data) {
|
||||
p = c1->private_data;
|
||||
p->newfs = newfs;
|
||||
strcpy(p->mountpoint, mpoint);
|
||||
}
|
||||
else {
|
||||
c1->private_data = new_part(mpoint, newfs, 0);
|
||||
c1->private_free = safe_free;
|
||||
}
|
||||
if (!strcmp(mpoint, "/"))
|
||||
c1->flags |= CHUNK_IS_ROOT;
|
||||
else
|
||||
c1->flags &= ~CHUNK_IS_ROOT;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (status == RET_SUCCESS)
|
||||
variable_set2(DISK_LABELLED, "yes");
|
||||
return status;
|
||||
}
|
||||
|
||||
#define MAX_MOUNT_NAME 12
|
||||
|
||||
#define PART_PART_COL 0
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: main.c,v 1.14 1995/09/18 16:52:29 peter Exp $
|
||||
* $Id: main.c,v 1.15 1995/12/07 10:33:55 peter Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,18 @@ main(int argc, char **argv)
|
|||
{
|
||||
int choice, scroll, curr, max;
|
||||
|
||||
/* Catch fatal signals and complain about them if running as init */
|
||||
if (getpid() == 1) {
|
||||
signal(SIGBUS, screech);
|
||||
signal(SIGSEGV, screech);
|
||||
}
|
||||
|
||||
/* We don't work too well when running as non-root anymore */
|
||||
if (geteuid() != 0) {
|
||||
fprintf(stderr, "Warning: This utility should be run as root.\n");
|
||||
sleep(1);
|
||||
fprintf(stderr, "Error: This utility should only be run as root.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Set up whatever things need setting up */
|
||||
systemInitialize(argc, argv);
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.47 1996/03/21 09:30:15 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.48 1996/03/23 07:21:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,6 @@
|
|||
|
||||
/*** Defines ***/
|
||||
|
||||
/* Bitfields for menu options */
|
||||
#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */
|
||||
#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */
|
||||
#define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */
|
||||
|
||||
/* XXX This goes away soon XXX */
|
||||
#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */
|
||||
|
||||
/* variable limits */
|
||||
#define VAR_NAME_MAX 128
|
||||
#define VAR_VALUE_MAX 1024
|
||||
|
|
@ -153,36 +145,15 @@ typedef unsigned int Boolean;
|
|||
typedef struct disk Disk;
|
||||
typedef struct chunk Chunk;
|
||||
|
||||
typedef enum {
|
||||
DMENU_DISPLAY_FILE, /* Display a file's contents */
|
||||
DMENU_SUBMENU, /* Recurse into another menu */
|
||||
DMENU_SYSTEM_COMMAND, /* Run shell commmand */
|
||||
DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */
|
||||
DMENU_SET_VARIABLE, /* Set an environment/system var */
|
||||
DMENU_SET_FLAG, /* Set flag in an unsigned int */
|
||||
DMENU_SET_VALUE, /* Set unsigned int to value */
|
||||
DMENU_CALL, /* Call back a C function */
|
||||
DMENU_CANCEL, /* Cancel out of this menu */
|
||||
DMENU_NOP, /* Do nothing special for item */
|
||||
} DMenuItemType;
|
||||
|
||||
typedef struct _dmenuItem {
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
DMenuItemType type; /* What type of item we are */
|
||||
void *ptr; /* Generic data ptr */
|
||||
int parm; /* Parameter for above */
|
||||
Boolean disabled; /* Are we temporarily disabled? */
|
||||
char * (*check)(struct _dmenuItem *); /* Our state */
|
||||
} DMenuItem;
|
||||
typedef enum { DMENU_NORMAL_TYPE, DMENU_RADIO_TYPE, DMENU_CHECKLIST_TYPE } dmenuType;
|
||||
|
||||
typedef struct _dmenu {
|
||||
unsigned int options; /* What sort of menu we are */
|
||||
dmenuType type; /* What sort of menu we are */
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
char *helpline; /* Line of help at bottom */
|
||||
char *helpfile; /* Help file for "F1" */
|
||||
DMenuItem items[0]; /* Array of menu items */
|
||||
dialogMenuItem items[0]; /* Array of menu items */
|
||||
} DMenu;
|
||||
|
||||
/* A sysconfig variable */
|
||||
|
|
@ -358,10 +329,10 @@ extern DMenu MenuHTMLDoc; /* HTML Documentation menu */
|
|||
/*** Prototypes ***/
|
||||
|
||||
/* apache.c */
|
||||
extern int configApache(char *str);
|
||||
extern int configApache(dialogMenuItem *self);
|
||||
|
||||
/* anonFTP.c */
|
||||
extern int configAnonFTP(char *unused);
|
||||
extern int configAnonFTP(dialogMenuItem *self);
|
||||
|
||||
/* attrs.c */
|
||||
extern char *attr_match(Attribs *attr, char *name);
|
||||
|
|
@ -384,20 +355,16 @@ extern void command_func_add(char *key, commandFunc func, void *data);
|
|||
extern int configFstab(void);
|
||||
extern void configSysconfig(void);
|
||||
extern void configResolv(void);
|
||||
extern int configPorts(char *str);
|
||||
extern int configPackages(char *str);
|
||||
extern int configSaverTimeout(char *str);
|
||||
extern int configNTP(char *str);
|
||||
extern int configRoutedFlags(char *str);
|
||||
extern int configPorts(dialogMenuItem *self);
|
||||
extern int configPackages(dialogMenuItem *self);
|
||||
extern int configSaverTimeout(dialogMenuItem *self);
|
||||
extern int configNTP(dialogMenuItem *self);
|
||||
extern int configXFree86(dialogMenuItem *self);
|
||||
extern int configRoutedFlags(dialogMenuItem *self);
|
||||
|
||||
/* crc.c */
|
||||
extern int crc(int, unsigned long *, unsigned long *);
|
||||
|
||||
/* decode.c */
|
||||
extern DMenuItem *decode(DMenu *menu, char *name);
|
||||
extern int dispatch(DMenuItem *tmp, char *name);
|
||||
extern int decode_and_dispatch_multiple(DMenu *menu, char *names);
|
||||
|
||||
/* devices.c */
|
||||
extern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)());
|
||||
extern void deviceGetAll(void);
|
||||
|
|
@ -414,34 +381,42 @@ extern Boolean dummyClose(Device *dev, int fd);
|
|||
extern void dummyShutdown(Device *dev);
|
||||
|
||||
/* disks.c */
|
||||
extern int diskPartitionEditor(char *unused);
|
||||
extern int diskPartitionWrite(char *unused);
|
||||
extern int diskPartitionEditor(dialogMenuItem *self);
|
||||
extern int diskPartitionWrite(dialogMenuItem *self);
|
||||
|
||||
/* dist.c */
|
||||
extern int distReset(char *str);
|
||||
extern int distSetCustom(char *str);
|
||||
extern int distSetDeveloper(char *str);
|
||||
extern int distSetXDeveloper(char *str);
|
||||
extern int distSetKernDeveloper(char *str);
|
||||
extern int distSetUser(char *str);
|
||||
extern int distSetXUser(char *str);
|
||||
extern int distSetMinimum(char *str);
|
||||
extern int distSetEverything(char *str);
|
||||
extern int distSetDES(char *str);
|
||||
extern int distSetSrc(char *str);
|
||||
extern int distSetXF86(char *str);
|
||||
extern int distExtractAll(char *str);
|
||||
extern int distReset(dialogMenuItem *self);
|
||||
extern int distSetDeveloper(dialogMenuItem *self);
|
||||
extern int distSetXDeveloper(dialogMenuItem *self);
|
||||
extern int distSetKernDeveloper(dialogMenuItem *self);
|
||||
extern int distSetUser(dialogMenuItem *self);
|
||||
extern int distSetXUser(dialogMenuItem *self);
|
||||
extern int distSetMinimum(dialogMenuItem *self);
|
||||
extern int distSetEverything(dialogMenuItem *self);
|
||||
extern int distSetDES(dialogMenuItem *self);
|
||||
extern int distSetSrc(dialogMenuItem *self);
|
||||
extern int distSetXF86(dialogMenuItem *self);
|
||||
extern int distExtractAll(dialogMenuItem *self);
|
||||
|
||||
/* dmenu.c */
|
||||
extern int dmenuDisplayFile(dialogMenuItem *tmp);
|
||||
extern int dmenuSubmenu(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommand(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommandBox(dialogMenuItem *tmp);
|
||||
extern int dmenuCancel(dialogMenuItem *tmp);
|
||||
extern int dmenuSetVariable(dialogMenuItem *tmp);
|
||||
extern int dmenuSetFlag(dialogMenuItem *tmp);
|
||||
extern int dmenuSetValue(dialogMenuItem *tmp);
|
||||
extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max);
|
||||
extern Boolean dmenuOpenSimple(DMenu *menu);
|
||||
extern char *dmenuVarCheck(DMenuItem *item);
|
||||
extern char *dmenuFlagCheck(DMenuItem *item);
|
||||
extern char *dmenuRadioCheck(DMenuItem *item);
|
||||
extern int dmenuVarCheck(dialogMenuItem *item);
|
||||
extern int dmenuFlagCheck(dialogMenuItem *item);
|
||||
extern int dmenuRadioCheck(dialogMenuItem *item);
|
||||
|
||||
/* doc.c */
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
extern int docBrowser(dialogMenuItem *self);
|
||||
extern int docShowDocument(dialogMenuItem *self);
|
||||
|
||||
/* dos.c */
|
||||
extern Boolean mediaInitDOS(Device *dev);
|
||||
|
|
@ -474,27 +449,26 @@ void index_print(PkgNodePtr top, int level);
|
|||
int index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist);
|
||||
|
||||
/* install.c */
|
||||
extern int installCommit(char *str);
|
||||
extern int installExpress(char *str);
|
||||
extern int installNovice(char *str);
|
||||
extern int installFixit(char *str);
|
||||
extern int installFixup(char *str);
|
||||
extern int installUpgrade(char *str);
|
||||
extern int installPreconfig(char *str);
|
||||
extern int installFilesystems(char *str);
|
||||
extern int installVarDefaults(char *str);
|
||||
extern int installCommit(dialogMenuItem *self);
|
||||
extern int installExpress(dialogMenuItem *self);
|
||||
extern int installNovice(dialogMenuItem *self);
|
||||
extern int installFixit(dialogMenuItem *self);
|
||||
extern int installFixup(dialogMenuItem *self);
|
||||
extern int installUpgrade(dialogMenuItem *self);
|
||||
extern int installFilesystems(dialogMenuItem *self);
|
||||
extern int installVarDefaults(dialogMenuItem *self);
|
||||
extern Boolean copySelf(void);
|
||||
extern Boolean rootExtract(void);
|
||||
|
||||
/* installFinal.c */
|
||||
extern int configGated(char *unused);
|
||||
extern int configSamba(char *unused);
|
||||
extern int configPCNFSD(char *unused);
|
||||
extern int configNFSServer(char *unused);
|
||||
extern int configGated(dialogMenuItem *self);
|
||||
extern int configSamba(dialogMenuItem *self);
|
||||
extern int configPCNFSD(dialogMenuItem *self);
|
||||
extern int configNFSServer(dialogMenuItem *self);
|
||||
|
||||
/* label.c */
|
||||
extern int diskLabelEditor(char *str);
|
||||
extern int diskLabelCommit(char *str);
|
||||
extern int diskLabelEditor(dialogMenuItem *self);
|
||||
extern int diskLabelCommit(dialogMenuItem *self);
|
||||
|
||||
/* lndir.c */
|
||||
extern int lndir(char *from, char *to);
|
||||
|
|
@ -515,19 +489,19 @@ extern u_char default_scrnmap[];
|
|||
|
||||
/* media.c */
|
||||
extern char *cpioVerbosity(void);
|
||||
extern int mediaSetCDROM(char *str);
|
||||
extern int mediaSetFloppy(char *str);
|
||||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFTPActive(char *str);
|
||||
extern int mediaSetFTPPassive(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern int mediaSetFtpOnError(char *str);
|
||||
extern int mediaSetFtpUserPass(char *str);
|
||||
extern int mediaSetCPIOVerbosity(char *str);
|
||||
extern int mediaGetType(char *str);
|
||||
extern int mediaSetCDROM(dialogMenuItem *self);
|
||||
extern int mediaSetFloppy(dialogMenuItem *self);
|
||||
extern int mediaSetDOS(dialogMenuItem *self);
|
||||
extern int mediaSetTape(dialogMenuItem *self);
|
||||
extern int mediaSetFTP(dialogMenuItem *self);
|
||||
extern int mediaSetFTPActive(dialogMenuItem *self);
|
||||
extern int mediaSetFTPPassive(dialogMenuItem *self);
|
||||
extern int mediaSetUFS(dialogMenuItem *self);
|
||||
extern int mediaSetNFS(dialogMenuItem *self);
|
||||
extern int mediaSetFtpOnError(dialogMenuItem *self);
|
||||
extern int mediaSetFtpUserPass(dialogMenuItem *self);
|
||||
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
|
||||
extern int mediaGetType(dialogMenuItem *self);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
|
|
@ -579,7 +553,7 @@ extern int mediaGetNFS(Device *dev, char *file, Boolean probe);
|
|||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* options.c */
|
||||
extern int optionsEditor(char *str);
|
||||
extern int optionsEditor(dialogMenuItem *self);
|
||||
|
||||
/* package.c */
|
||||
extern int package_add(char *name);
|
||||
|
|
@ -598,8 +572,6 @@ extern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mo
|
|||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern void systemCreateHoloshell(void);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
|
||||
/* tape.c */
|
||||
extern char *mediaTapeBlocksize(void);
|
||||
|
|
@ -609,7 +581,7 @@ extern void mediaShutdownTape(Device *dev);
|
|||
|
||||
/* tcpip.c */
|
||||
extern int tcpOpenDialog(Device *dev);
|
||||
extern int tcpMenuSelect(char *str);
|
||||
extern int tcpMenuSelect(dialogMenuItem *self);
|
||||
extern int tcpInstallDevice(char *str);
|
||||
extern Boolean tcpDeviceSelect(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ CLEANFILES= makedevs.c rtermcap
|
|||
|
||||
.PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum
|
||||
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c decode.c \
|
||||
SRCS= anonFTP.c apache.c attr.c cdrom.c command.c config.c \
|
||||
devices.c disks.c dist.c dmenu.c doc.c dos.c floppy.c ftp.c \
|
||||
ftp_strat.c globals.c index.c install.c installFinal.c \
|
||||
installPreconfig.c installUpgrade.c label.c lndir.c main.c \
|
||||
makedevs.c media.c menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
installUpgrade.c label.c lndir.c main.c makedevs.c media.c \
|
||||
menus.c misc.c msg.c network.c nfs.c options.c \
|
||||
package.c system.c tape.c tcpip.c termcap.c ufs.c variable.c wizard.c
|
||||
|
||||
CFLAGS+= -Wall -I${.CURDIR}/../../gnu/lib/libdialog
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: anonFTP.c,v 1.8 1996/03/18 15:27:39 jkh Exp $
|
||||
* $Id: anonFTP.c,v 1.9 1996/03/23 07:21:28 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Coranth Gryphon. All rights reserved.
|
||||
|
|
@ -402,7 +402,7 @@ anonftpOpenDialog(void)
|
|||
}
|
||||
|
||||
int
|
||||
configAnonFTP(char *unused)
|
||||
configAnonFTP(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: config.c,v 1.21 1996/03/21 09:30:08 jkh Exp $
|
||||
* $Id: config.c,v 1.22 1996/03/24 18:57:34 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -326,18 +326,32 @@ configSysconfig(void)
|
|||
}
|
||||
|
||||
int
|
||||
configSaverTimeout(char *str)
|
||||
configSaverTimeout(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver")
|
||||
? RET_SUCCESS : RET_FAIL;
|
||||
return variable_get_value(VAR_BLANKTIME, "Enter time-out period in seconds for screen saver") ?
|
||||
RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configNTP(char *str)
|
||||
configNTP(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_NTPDATE, "Enter the name of an NTP server") ? RET_SUCCESS : RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
configXFree86(dialogMenuItem *self)
|
||||
{
|
||||
if (file_executable("/usr/X11R6/bin/xf86config")) {
|
||||
systemExecute("/usr/X11R6/bin/xf86config");
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
else {
|
||||
msgConfirm("XFree86 does not appear to be installed! Please install\n"
|
||||
"The XFree86 distribution before attempting to configure it.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
configResolv(void)
|
||||
{
|
||||
|
|
@ -398,7 +412,7 @@ skip:
|
|||
}
|
||||
|
||||
int
|
||||
configRoutedFlags(char *str)
|
||||
configRoutedFlags(dialogMenuItem *self)
|
||||
{
|
||||
return variable_get_value(VAR_ROUTEDFLAGS,
|
||||
"Specify the flags for routed; -q is the default, -s is\n"
|
||||
|
|
@ -406,7 +420,7 @@ configRoutedFlags(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPackages(char *str)
|
||||
configPackages(dialogMenuItem *self)
|
||||
{
|
||||
static PkgNode top, plist;
|
||||
static Boolean index_initted = FALSE;
|
||||
|
|
@ -483,7 +497,7 @@ configPackages(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
configPorts(char *str)
|
||||
configPorts(dialogMenuItem *self)
|
||||
{
|
||||
char *cp, *dist = NULL; /* Shut up compiler */
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: devices.c,v 1.41 1996/03/18 15:27:46 jkh Exp $
|
||||
* $Id: devices.c,v 1.42 1996/03/24 09:36:41 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -368,24 +368,21 @@ deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)())
|
|||
return NULL;
|
||||
|
||||
for (numdevs = 0; devs[numdevs]; numdevs++);
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(DMenuItem) * (numdevs + 1)));
|
||||
tmp = (DMenu *)safe_malloc(sizeof(DMenu) + (sizeof(dialogMenuItem) * (numdevs + 1)));
|
||||
bcopy(menu, tmp, sizeof(DMenu));
|
||||
for (i = 0; devs[i]; i++) {
|
||||
tmp->items[i].title = devs[i]->name;
|
||||
tmp->items[i].prompt = devs[i]->name;
|
||||
for (j = 0; device_names[j].name; j++) {
|
||||
if (!strncmp(devs[i]->name, device_names[j].name, strlen(device_names[j].name))) {
|
||||
tmp->items[i].prompt = device_names[j].description;
|
||||
tmp->items[i].title = device_names[j].description;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!device_names[j].name)
|
||||
tmp->items[i].prompt = "<unknown device type>";
|
||||
tmp->items[i].type = DMENU_CALL;
|
||||
tmp->items[i].ptr = hook;
|
||||
tmp->items[i].disabled = FALSE;
|
||||
tmp->items[i].check = NULL;
|
||||
tmp->items[i].title = "<unknown device type>";
|
||||
tmp->items[i].fire = hook;
|
||||
tmp->items[i].checked = NULL;
|
||||
}
|
||||
tmp->items[i].type = DMENU_NOP;
|
||||
tmp->items[i].title = NULL;
|
||||
return tmp;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: disks.c,v 1.37 1996/03/20 14:11:21 jkh Exp $
|
||||
* $Id: disks.c,v 1.38 1996/03/24 18:57:35 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -135,92 +135,6 @@ print_command_summary()
|
|||
move(0, 0);
|
||||
}
|
||||
|
||||
/* Partition a disk based wholly on which variables are set */
|
||||
static void
|
||||
scriptPartition(Device *dev, Disk *d)
|
||||
{
|
||||
char *cp;
|
||||
int i, sz;
|
||||
|
||||
record_chunks(d);
|
||||
cp = variable_get(VAR_GEOMETRY);
|
||||
if (cp) {
|
||||
msgDebug("Setting geometry from script to: %s\n", cp);
|
||||
d->bios_cyl = strtol(cp, &cp, 0);
|
||||
d->bios_hd = strtol(cp + 1, &cp, 0);
|
||||
d->bios_sect = strtol(cp + 1, 0, 0);
|
||||
}
|
||||
|
||||
cp = variable_get(VAR_DISKSPACE);
|
||||
if (cp) {
|
||||
if (!strcmp(cp, "free")) {
|
||||
/* Do free disk space case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least 10MB in size, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size > (10 * ONE_MEG)) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, chunk_info[i]->size, freebsd, 3,
|
||||
(chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any free space on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "all")) {
|
||||
/* Do all disk space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, FALSE);
|
||||
}
|
||||
else if (!strcmp(cp, "exclusive")) {
|
||||
/* Do really-all-the-disk-space case */
|
||||
msgDebug("Warning: Devoting all of disk %s to FreeBSD.\n", d->name);
|
||||
|
||||
All_FreeBSD(d, TRUE);
|
||||
}
|
||||
else if ((sz = strtol(cp, &cp, 0))) {
|
||||
/* Look for sz bytes free */
|
||||
if (*cp && toupper(*cp) == 'M')
|
||||
sz *= ONE_MEG;
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
/* If a chunk is at least sz MB, use it. */
|
||||
if (chunk_info[i]->type == unused && chunk_info[i]->size >= sz) {
|
||||
Create_Chunk(d, chunk_info[i]->offset, sz, freebsd, 3, (chunk_info[i]->flags & CHUNK_ALIGN));
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find %d free blocks on this disk!", sz);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cp, "existing")) {
|
||||
/* Do existing FreeBSD case */
|
||||
for (i = 0; chunk_info[i]; i++) {
|
||||
if (chunk_info[i]->type == freebsd)
|
||||
break;
|
||||
}
|
||||
if (!chunk_info[i]) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to find any existing FreeBSD partitions on this disk!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
dialog_clear();
|
||||
msgConfirm("`%s' is an invalid value for %s - is config file valid?", cp, VAR_DISKSPACE);
|
||||
return;
|
||||
}
|
||||
variable_set2(DISK_PARTITIONED, "yes");
|
||||
}
|
||||
}
|
||||
|
||||
static u_char *
|
||||
getBootMgr(char *dname)
|
||||
{
|
||||
|
|
@ -533,14 +447,15 @@ partitionHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionEditor(char *str)
|
||||
diskPartitionEditor(dialogMenuItem *self)
|
||||
{
|
||||
DMenu *menu;
|
||||
Device **devs;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str= variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -552,10 +467,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
else if (cnt == 1) {
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
scriptPartition(devs[0], (Disk *)devs[0]->private);
|
||||
else
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
diskPartition(devs[0], (Disk *)devs[0]->private);
|
||||
i = RET_SUCCESS;
|
||||
variable_set2(DISK_SELECTED, "yes");
|
||||
}
|
||||
|
|
@ -584,7 +496,7 @@ diskPartitionEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskPartitionWrite(char *str)
|
||||
diskPartitionWrite(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
char *cp;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dist.c,v 1.38 1995/12/07 10:33:41 peter Exp $
|
||||
* $Id: dist.c,v 1.39 1996/02/02 06:43:59 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -165,7 +165,7 @@ static Distribution XF86FontDistTable[] = {
|
|||
};
|
||||
|
||||
int
|
||||
distReset(char *str)
|
||||
distReset(dialogMenuItem *self)
|
||||
{
|
||||
Dists = 0;
|
||||
SrcDists = 0;
|
||||
|
|
@ -176,7 +176,7 @@ distReset(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetDeveloper(char *str)
|
||||
distSetDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER;
|
||||
|
|
@ -185,7 +185,7 @@ distSetDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetXDeveloper(char *str)
|
||||
distSetXDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER | DIST_XF86;
|
||||
|
|
@ -198,7 +198,7 @@ distSetXDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetKernDeveloper(char *str)
|
||||
distSetKernDeveloper(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_DEVELOPER;
|
||||
|
|
@ -207,7 +207,7 @@ distSetKernDeveloper(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetUser(char *str)
|
||||
distSetUser(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_USER;
|
||||
|
|
@ -215,7 +215,7 @@ distSetUser(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetXUser(char *str)
|
||||
distSetXUser(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = _DIST_USER;
|
||||
|
|
@ -227,7 +227,7 @@ distSetXUser(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetMinimum(char *str)
|
||||
distSetMinimum(dialogMenuItem *self)
|
||||
{
|
||||
distReset(NULL);
|
||||
Dists = DIST_BIN;
|
||||
|
|
@ -235,7 +235,7 @@ distSetMinimum(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetEverything(char *str)
|
||||
distSetEverything(dialogMenuItem *self)
|
||||
{
|
||||
Dists = DIST_ALL;
|
||||
SrcDists = DIST_SRC_ALL;
|
||||
|
|
@ -246,54 +246,47 @@ distSetEverything(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
distSetCustom(char *str)
|
||||
distSetDES(dialogMenuItem *self)
|
||||
{
|
||||
/* These *ALL* have to be set at once. It's for power users only! :) */
|
||||
if (sscanf(str, "%d %d %d %d %d %d",
|
||||
&Dists, &DESDists, &SrcDists, &XF86Dists, &XF86ServerDists, &XF86FontDists) != 6) {
|
||||
dialog_clear();
|
||||
msgConfirm("Warning: A `%s' set was configured which did not set all\n"
|
||||
"distributions explicitly. Some distributions will default to\n"
|
||||
"unselected as a result.", str);
|
||||
if (dmenuOpenSimple(&MenuDESDistributions)) {
|
||||
if (DESDists) {
|
||||
if (DESDists & DIST_DES_KERBEROS)
|
||||
DESDists |= DIST_DES_DES;
|
||||
Dists |= DIST_DES;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
else
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
distSetDES(char *str)
|
||||
distSetSrc(dialogMenuItem *self)
|
||||
{
|
||||
dmenuOpenSimple(&MenuDESDistributions);
|
||||
if (DESDists) {
|
||||
if (DESDists & DIST_DES_KERBEROS)
|
||||
DESDists |= DIST_DES_DES;
|
||||
Dists |= DIST_DES;
|
||||
if (dmenuOpenSimple(&MenuSrcDistributions)) {
|
||||
if (SrcDists)
|
||||
Dists |= DIST_SRC;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_SUCCESS;
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
int
|
||||
distSetSrc(char *str)
|
||||
distSetXF86(dialogMenuItem *self)
|
||||
{
|
||||
dmenuOpenSimple(&MenuSrcDistributions);
|
||||
if (SrcDists)
|
||||
Dists |= DIST_SRC;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
distSetXF86(char *str)
|
||||
{
|
||||
dmenuOpenSimple(&MenuXF86Select);
|
||||
if (XF86ServerDists)
|
||||
XF86Dists |= DIST_XF86_SERVER;
|
||||
if (XF86FontDists)
|
||||
XF86Dists |= DIST_XF86_FONTS;
|
||||
if (XF86Dists)
|
||||
Dists |= DIST_XF86;
|
||||
if (isDebug())
|
||||
msgDebug("SetXF86 Masks: Server: %0x, Fonts: %0x, XDists: %0x, Dists: %0x\n",
|
||||
XF86ServerDists, XF86FontDists, XF86Dists, Dists);
|
||||
return RET_SUCCESS;
|
||||
if (dmenuOpenSimple(&MenuXF86Select)) {
|
||||
if (XF86ServerDists)
|
||||
XF86Dists |= DIST_XF86_SERVER;
|
||||
if (XF86FontDists)
|
||||
XF86Dists |= DIST_XF86_FONTS;
|
||||
if (XF86Dists)
|
||||
Dists |= DIST_XF86;
|
||||
if (isDebug())
|
||||
msgDebug("SetXF86 Masks: Server: %0x, Fonts: %0x, XDists: %0x, Dists: %0x\n",
|
||||
XF86ServerDists, XF86FontDists, XF86Dists, Dists);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
static Boolean
|
||||
|
|
@ -477,7 +470,7 @@ printSelected(char *buf, int selected, Distribution *me)
|
|||
}
|
||||
|
||||
int
|
||||
distExtractAll(char *ptr)
|
||||
distExtractAll(dialogMenuItem *self)
|
||||
{
|
||||
int retries = 0;
|
||||
char buf[512];
|
||||
|
|
@ -485,7 +478,7 @@ distExtractAll(char *ptr)
|
|||
/* First try to initialize the state of things */
|
||||
if (!mediaDevice->init(mediaDevice))
|
||||
return RET_FAIL;
|
||||
if (!Dists && ptr) {
|
||||
if (!Dists) {
|
||||
msgConfirm("You haven't selected any distributions to extract.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,11 +12,12 @@
|
|||
#define DIST_INFO 0x0080
|
||||
#define DIST_COMPAT1X 0x0100
|
||||
#define DIST_COMPAT20 0x0200
|
||||
#define DIST_XF86 0x0400
|
||||
#define DIST_COMMERCIAL 0x0800
|
||||
#define DIST_DES 0x1000
|
||||
#define DIST_EXPERIMENTAL 0x2000
|
||||
#define DIST_ALL 0x0FFF
|
||||
#define DIST_COMPAT21 0x0400
|
||||
#define DIST_XF86 0x0800
|
||||
#define DIST_COMMERCIAL 0x1000
|
||||
#define DIST_DES 0x2000
|
||||
#define DIST_EXPERIMENTAL 0x4000
|
||||
#define DIST_ALL 0x0FFF /* Don't include commerce, DES or experimental in "all" */
|
||||
|
||||
/* Canned distribution sets */
|
||||
#define _DIST_DEVELOPER \
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dmenu.c,v 1.13 1995/12/07 10:33:44 peter Exp $
|
||||
* $Id: dmenu.c,v 1.14 1996/03/02 07:31:51 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -46,6 +46,71 @@
|
|||
|
||||
#define MAX_MENU 15
|
||||
|
||||
static Boolean cancelled;
|
||||
|
||||
int
|
||||
dmenuDisplayFile(dialogMenuItem *tmp)
|
||||
{
|
||||
systemDisplayHelp((char *)tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSubmenu(dialogMenuItem *tmp)
|
||||
{
|
||||
dialog_clear();
|
||||
return dmenuOpenSimple((DMenu *)tmp->data);
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommand(dialogMenuItem *tmp)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = systemExecute((char *)tmp->data) ? RET_FAIL : RET_SUCCESS;
|
||||
dialog_clear();
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSystemCommandBox(dialogMenuItem *tmp)
|
||||
{
|
||||
use_helpfile(NULL);
|
||||
use_helpline("Select OK to dismiss this dialog");
|
||||
dialog_prgbox(tmp->title, (char *)tmp->data, 22, 76, 1, 1);
|
||||
dialog_clear();
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuCancel(dialogMenuItem *tmp)
|
||||
{
|
||||
cancelled = TRUE;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetVariable(dialogMenuItem *tmp)
|
||||
{
|
||||
variable_set((char *)tmp->data);
|
||||
msgInfo("Set %s", tmp->data);
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetFlag(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) |= tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
dmenuSetValue(dialogMenuItem *tmp)
|
||||
{
|
||||
*((unsigned int *)tmp->data) = tmp->aux;
|
||||
return RET_SUCCESS;
|
||||
}
|
||||
|
||||
/* Traverse menu but give user no control over positioning */
|
||||
Boolean
|
||||
dmenuOpenSimple(DMenu *menu)
|
||||
|
|
@ -53,56 +118,44 @@ dmenuOpenSimple(DMenu *menu)
|
|||
int choice, scroll, curr, max;
|
||||
|
||||
choice = scroll = curr = max = 0;
|
||||
dialog_clear();
|
||||
return dmenuOpen(menu, &choice, &scroll, &curr, &max);
|
||||
}
|
||||
|
||||
/* Work functions for the state hook */
|
||||
char *
|
||||
dmenuFlagCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuFlagCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) & item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
return (*((unsigned int *)item->data) & item->aux);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuVarCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuVarCheck(dialogMenuItem *item)
|
||||
{
|
||||
char *w, *cp, *cp2, tmp[256];
|
||||
|
||||
w = (char *)item->parm;
|
||||
w = (char *)item->aux;
|
||||
if (!w)
|
||||
w = (char *)item->ptr;
|
||||
w = (char *)item->data;
|
||||
if (!w)
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
strncpy(tmp, w, 256);
|
||||
if ((cp = index(tmp, '=')) != NULL) {
|
||||
*(cp++) = '\0';
|
||||
cp2 = getenv(tmp);
|
||||
if (cp2)
|
||||
return !strcmp(cp, cp2) ? "ON" : "OFF";
|
||||
return !strcmp(cp, cp2);
|
||||
else
|
||||
return "OFF";
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return getenv(tmp) ? "ON" : "OFF";
|
||||
return (int)getenv(tmp);
|
||||
}
|
||||
|
||||
char *
|
||||
dmenuRadioCheck(DMenuItem *item)
|
||||
int
|
||||
dmenuRadioCheck(dialogMenuItem *item)
|
||||
{
|
||||
if (*((unsigned int *)item->ptr) == item->parm)
|
||||
return "ON";
|
||||
return "OFF";
|
||||
}
|
||||
|
||||
static char *
|
||||
checkHookVal(DMenuItem *item)
|
||||
{
|
||||
|
||||
if (!item->check)
|
||||
return "OFF";
|
||||
return (*item->check)(item);
|
||||
return (*((unsigned int *)item->data) == item->aux);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -122,21 +175,10 @@ menu_height(DMenu *menu, int n)
|
|||
Boolean
|
||||
dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
||||
{
|
||||
char result[FILENAME_MAX];
|
||||
char **nitems = NULL;
|
||||
DMenuItem *tmp;
|
||||
int rval = 0, n = 0;
|
||||
int n, rval = 0;
|
||||
|
||||
/* First, construct the menu */
|
||||
for (tmp = menu->items; tmp->title; tmp++) {
|
||||
if (!tmp->disabled) {
|
||||
nitems = item_add_pair(nitems, tmp->title, tmp->prompt, curr, max);
|
||||
if (menu->options & (DMENU_RADIO_TYPE | DMENU_MULTIPLE_TYPE))
|
||||
nitems = item_add(nitems, checkHookVal(tmp), curr, max);
|
||||
++n;
|
||||
}
|
||||
}
|
||||
nitems = item_add(nitems, NULL, curr, max); /* Terminate it */
|
||||
/* Count up all the items */
|
||||
for (n = 0; menu->items[n].title; n++);
|
||||
|
||||
while (1) {
|
||||
char buf[FILENAME_MAX];
|
||||
|
|
@ -146,40 +188,25 @@ dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max)
|
|||
use_helpfile(systemHelpFile(menu->helpfile, buf));
|
||||
|
||||
/* Pop up that dialog! */
|
||||
if (menu->options & DMENU_NORMAL_TYPE)
|
||||
if (menu->type == DMENU_NORMAL_TYPE)
|
||||
rval = dialog_menu((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result, choice, scroll);
|
||||
menu_height(menu, n), -n, menu->items, NULL, choice, scroll);
|
||||
|
||||
else if (menu->options & DMENU_RADIO_TYPE)
|
||||
else if (menu->type == DMENU_RADIO_TYPE)
|
||||
rval = dialog_radiolist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
else if (menu->options & DMENU_MULTIPLE_TYPE)
|
||||
else if (menu->type == DMENU_CHECKLIST_TYPE)
|
||||
rval = dialog_checklist((u_char *)menu->title, (u_char *)menu->prompt, -1, -1,
|
||||
menu_height(menu, n), n, (u_char **)nitems, (u_char *)result);
|
||||
menu_height(menu, n), -n, menu->items, NULL);
|
||||
|
||||
/* This seems to be the only technique that works for getting the display to look right */
|
||||
dialog_clear();
|
||||
|
||||
if (!rval) {
|
||||
if (menu->options & DMENU_MULTIPLE_TYPE) {
|
||||
if (decode_and_dispatch_multiple(menu, result) || menu->options & DMENU_SELECTION_RETURNS) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((tmp = decode(menu, result)) == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
if (dispatch(tmp, result) == RET_DONE || (menu->options & DMENU_SELECTION_RETURNS)) {
|
||||
items_free(nitems, curr, max);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
items_free(nitems, curr, max);
|
||||
if (rval)
|
||||
return FALSE;
|
||||
else if (cancelled) {
|
||||
cancelled = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: doc.c,v 1.9 1995/11/04 08:47:22 jkh Exp $
|
||||
* $Id: doc.c,v 1.10 1995/11/06 12:49:23 jkh Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
* and fire it up on the first copy of the handbook we can find.
|
||||
*/
|
||||
int
|
||||
docBrowser(char *junk)
|
||||
docBrowser(dialogMenuItem *self)
|
||||
{
|
||||
char *browser = variable_get(VAR_BROWSER_PACKAGE);
|
||||
|
||||
|
|
@ -53,17 +53,20 @@ docBrowser(char *junk)
|
|||
}
|
||||
|
||||
/* Run browser on the appropriate doc */
|
||||
dmenuOpenSimple(&MenuHTMLDoc);
|
||||
return RET_SUCCESS;
|
||||
if (dmenuOpenSimple(&MenuHTMLDoc))
|
||||
return RET_SUCCESS;
|
||||
else
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
/* Try to show one of the documents requested from the HTML doc menu */
|
||||
int
|
||||
docShowDocument(char *str)
|
||||
docShowDocument(dialogMenuItem *self)
|
||||
{
|
||||
char tmp[512], target[512];
|
||||
char *where = NULL;
|
||||
char *browser = variable_get(VAR_BROWSER_BINARY);
|
||||
char *str = self->prompt;
|
||||
|
||||
if (!file_executable(browser)) {
|
||||
dialog_clear();
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.80 1996/03/24 09:43:53 jkh Exp $
|
||||
* $Id: install.c,v 1.81 1996/03/24 18:57:36 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -219,12 +219,13 @@ installInitial(void)
|
|||
}
|
||||
|
||||
int
|
||||
installFixit(char *str)
|
||||
installFixit(dialogMenuItem *self)
|
||||
{
|
||||
struct ufs_args args;
|
||||
pid_t child;
|
||||
int waitstatus;
|
||||
|
||||
variable_set2(SYSTEM_STATE, "fixit");
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.fspec = "/dev/fd0";
|
||||
Mkdir("/mnt2", NULL);
|
||||
|
|
@ -297,12 +298,13 @@ installFixit(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installExpress(char *str)
|
||||
installExpress(dialogMenuItem *self)
|
||||
{
|
||||
if (diskPartitionEditor("express") == RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "express");
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (diskLabelEditor("express") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
if (!Dists) {
|
||||
|
|
@ -315,7 +317,7 @@ installExpress(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("express") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -323,8 +325,9 @@ installExpress(char *str)
|
|||
|
||||
/* Novice mode installation */
|
||||
int
|
||||
installNovice(char *str)
|
||||
installNovice(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(SYSTEM_STATE, "novice");
|
||||
dialog_clear();
|
||||
msgConfirm("In the next menu, you will need to set up a DOS-style (\"fdisk\") partitioning\n"
|
||||
"scheme for your hard disk. If you simply wish to devote all disk space\n"
|
||||
|
|
@ -333,7 +336,7 @@ installNovice(char *str)
|
|||
"by a (Q)uit. If you wish to allocate only free space to FreeBSD, move to a\n"
|
||||
"partition marked \"unused\" and use the (C)reate command.");
|
||||
|
||||
if (diskPartitionEditor("novice") == RET_FAIL)
|
||||
if (diskPartitionEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -344,7 +347,7 @@ installNovice(char *str)
|
|||
"care for the layout chosen by (A)uto, press F1 for more information on\n"
|
||||
"manual layout.");
|
||||
|
||||
if (diskLabelEditor("novice") == RET_FAIL)
|
||||
if (diskLabelEditor(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
dialog_clear();
|
||||
|
|
@ -367,7 +370,7 @@ installNovice(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
if (installCommit("novice") == RET_FAIL)
|
||||
if (installCommit(self) == RET_FAIL)
|
||||
return RET_FAIL;
|
||||
|
||||
return RET_DONE;
|
||||
|
|
@ -382,14 +385,16 @@ installNovice(char *str)
|
|||
* DES dist.
|
||||
*/
|
||||
int
|
||||
installCommit(char *str)
|
||||
installCommit(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
extern int cdromMounted;
|
||||
char *str;
|
||||
|
||||
if (!mediaVerify())
|
||||
return RET_FAIL;
|
||||
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
i = RET_DONE;
|
||||
if (RunningAsInit) {
|
||||
if (installInitial() == RET_FAIL)
|
||||
|
|
@ -404,15 +409,12 @@ installCommit(char *str)
|
|||
}
|
||||
}
|
||||
|
||||
if (distExtractAll(NULL) == RET_FAIL)
|
||||
if (distExtractAll(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (installFixup(NULL) == RET_FAIL)
|
||||
if (installFixup(self) == RET_FAIL)
|
||||
i = RET_FAIL;
|
||||
|
||||
if (i != RET_FAIL)
|
||||
variable_set2(SYSTEM_STATE, "base-install");
|
||||
|
||||
if (i != RET_FAIL && !strcmp(str, "novice")) {
|
||||
dialog_clear();
|
||||
msgConfirm("Since you're running the novice installation, a few post-configuration\n"
|
||||
|
|
@ -434,7 +436,7 @@ installCommit(char *str)
|
|||
if (!msgYesNo("Would you like to configure Samba for connecting NETBUI clients to this\n"
|
||||
"machine? Windows 95, Windows NT and Windows for Workgroups\n"
|
||||
"machines can use NETBUI transport for disk and printer sharing."))
|
||||
configSamba(NULL);
|
||||
configSamba(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Will this machine be an IP gateway (e.g. will it forward packets\n"
|
||||
|
|
@ -443,11 +445,11 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to allow anonymous FTP connections to this machine?"))
|
||||
configAnonFTP(NULL);
|
||||
configAnonFTP(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS server?"))
|
||||
configNFSServer(NULL);
|
||||
configNFSServer(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as an NFS client?"))
|
||||
|
|
@ -455,7 +457,7 @@ installCommit(char *str)
|
|||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Do you want to configure this machine as a WEB server?"))
|
||||
configApache(NULL);
|
||||
configApache(self);
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Would you like to customize your system console settings?"))
|
||||
|
|
@ -482,14 +484,14 @@ installCommit(char *str)
|
|||
"drive to use the ports collection, but at a substantial savings\n"
|
||||
"in disk space (NOTE: This may take as long as 15 or 20 minutes\n"
|
||||
"depending on the speed of your CDROM drive)."))
|
||||
configPorts(NULL);
|
||||
configPorts(self);
|
||||
}
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("The FreeBSD package collection is a collection of over 300 ready-to-run\n"
|
||||
"applications, from text editors to games to WEB servers. Would you like\n"
|
||||
"to browse the collection now?"))
|
||||
configPackages(NULL);
|
||||
configPackages(self);
|
||||
|
||||
/* XXX Put whatever other nice configuration questions you'd like to ask the user here XXX */
|
||||
|
||||
|
|
@ -505,8 +507,6 @@ installCommit(char *str)
|
|||
configResolv();
|
||||
configSysconfig();
|
||||
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
/* Don't print this if we're express or novice installing */
|
||||
if (strcmp(str, "express") && strcmp(str, "novice")) {
|
||||
if (Dists || i == RET_FAIL) {
|
||||
|
|
@ -541,11 +541,13 @@ installCommit(char *str)
|
|||
"may do so by typing: /stand/sysinstall.");
|
||||
}
|
||||
}
|
||||
variable_set2(SYSTEM_STATE, i == RET_FAIL ? "error-install" : "full-install");
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
int
|
||||
installFixup(char *str)
|
||||
installFixup(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int i;
|
||||
|
|
@ -625,18 +627,20 @@ installFixup(char *str)
|
|||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
int
|
||||
installFilesystems(char *str)
|
||||
installFilesystems(dialogMenuItem *self)
|
||||
{
|
||||
int i;
|
||||
Disk *disk;
|
||||
Chunk *c1, *c2, *rootdev, *swapdev, *usrdev;
|
||||
Device **devs;
|
||||
PartInfo *root;
|
||||
char dname[80];
|
||||
char dname[80], *str;
|
||||
extern int MakeDevChunk(Chunk *c, char *n);
|
||||
Boolean upgrade = FALSE;
|
||||
|
||||
if (!(str && !strcmp(str, "script")) && !checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
|
||||
if (!checkLabels(&rootdev, &swapdev, &usrdev))
|
||||
return RET_FAIL;
|
||||
|
||||
root = (PartInfo *)rootdev->private_data;
|
||||
|
|
@ -779,7 +783,7 @@ installFilesystems(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
installVarDefaults(char *unused)
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: installUpgrade.c,v 1.17 1995/11/08 07:09:27 jkh Exp $
|
||||
* $Id: installUpgrade.c,v 1.18 1995/11/17 14:17:12 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -185,7 +185,7 @@ traverseHitlist(HitList *h)
|
|||
}
|
||||
|
||||
int
|
||||
installUpgrade(char *str)
|
||||
installUpgrade(dialogMenuItem *self)
|
||||
{
|
||||
char *saved_etc = NULL;
|
||||
Boolean extractingBin = TRUE;
|
||||
|
|
@ -198,6 +198,7 @@ installUpgrade(char *str)
|
|||
return RET_FAIL;
|
||||
}
|
||||
|
||||
variable_set2(SYSTEM_STATE, "upgrade");
|
||||
systemDisplayHelp("upgrade");
|
||||
|
||||
if (msgYesNo("Given all that scary stuff you just read, are you sure you want to\n"
|
||||
|
|
@ -247,7 +248,7 @@ installUpgrade(char *str)
|
|||
"Once you're done in the label editor, press Q to return here for the next\n"
|
||||
"step.");
|
||||
|
||||
if (diskLabelEditor(NULL) == RET_FAIL) {
|
||||
if (diskLabelEditor(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("The disk label editor failed to work properly! Upgrade operation\n"
|
||||
"aborted.");
|
||||
|
|
@ -256,7 +257,7 @@ installUpgrade(char *str)
|
|||
|
||||
/* Don't write out MBR info */
|
||||
variable_set2(DISK_PARTITIONED, "written");
|
||||
if (diskLabelCommit("upgrade") == RET_FAIL) {
|
||||
if (diskLabelCommit(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Not all file systems were properly mounted. Upgrade operation\n"
|
||||
"aborted.");
|
||||
|
|
@ -321,7 +322,7 @@ installUpgrade(char *str)
|
|||
}
|
||||
|
||||
msgNotify("Beginning extraction of distributions..");
|
||||
if (distExtractAll("upgrade") == RET_FAIL) {
|
||||
if (distExtractAll(self) == RET_FAIL) {
|
||||
if (extractingBin && (Dists & DIST_BIN)) {
|
||||
dialog_clear();
|
||||
msgConfirm("Hmmmm. We couldn't even extract the bin distribution. This upgrade\n"
|
||||
|
|
@ -340,7 +341,7 @@ installUpgrade(char *str)
|
|||
"/dev entries and such that a 2.1 system expects to see. I'll also perform a\n"
|
||||
"few \"fixup\" operations to repair the effects of splatting a bin distribution\n"
|
||||
"on top of an existing system..");
|
||||
if (installFixup("upgrade") == RET_FAIL) {
|
||||
if (installFixup(self) == RET_FAIL) {
|
||||
dialog_clear();
|
||||
msgConfirm("Hmmmmm. The fixups don't seem to have been very happy.\n"
|
||||
"You may wish to examine the system a little more closely when\n"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: label.c,v 1.39 1996/03/20 14:11:22 jkh Exp $
|
||||
* $Id: label.c,v 1.40 1996/03/24 18:57:37 joerg Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -81,7 +81,6 @@ static struct {
|
|||
static int here;
|
||||
|
||||
static int diskLabel(char *str);
|
||||
static int scriptLabel(char *str);
|
||||
|
||||
static int
|
||||
labelHook(char *str)
|
||||
|
|
@ -115,14 +114,15 @@ labelHook(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelEditor(char *str)
|
||||
diskLabelEditor(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
DMenu *menu;
|
||||
int i, cnt;
|
||||
char *cp;
|
||||
char *cp, *str;
|
||||
|
||||
cp = variable_get(VAR_DISK);
|
||||
str = variable_get(SYSTEM_STATE);
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
cnt = deviceCount(devs);
|
||||
if (!cnt) {
|
||||
|
|
@ -135,10 +135,7 @@ diskLabelEditor(char *str)
|
|||
else if (cnt == 1 || variable_get(DISK_SELECTED)) {
|
||||
if (cnt == 1)
|
||||
devs[0]->enabled = TRUE;
|
||||
if (str && !strcmp(str, "script"))
|
||||
i = scriptLabel(str);
|
||||
else
|
||||
i = diskLabel(str);
|
||||
i = diskLabel(str);
|
||||
}
|
||||
else {
|
||||
menu = deviceCreateMenu(&MenuDiskDevices, DEVICE_TYPE_DISK, labelHook);
|
||||
|
|
@ -163,7 +160,7 @@ diskLabelEditor(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
diskLabelCommit(char *str)
|
||||
diskLabelCommit(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
int i;
|
||||
|
|
@ -179,9 +176,9 @@ diskLabelCommit(char *str)
|
|||
i = RET_FAIL;
|
||||
}
|
||||
/* The routine will guard against redundant writes, just as this one does */
|
||||
else if (diskPartitionWrite(str) != RET_SUCCESS)
|
||||
else if (diskPartitionWrite(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else if (installFilesystems(str) != RET_SUCCESS)
|
||||
else if (installFilesystems(self) != RET_SUCCESS)
|
||||
i = RET_FAIL;
|
||||
else {
|
||||
msgInfo("All filesystem information written successfully.");
|
||||
|
|
@ -399,119 +396,6 @@ getNewfsCmd(PartInfo *p)
|
|||
strncpy(p->newfs_cmd, val, NEWFS_CMD_MAX);
|
||||
}
|
||||
|
||||
static int
|
||||
scriptLabel(char *str)
|
||||
{
|
||||
char *cp;
|
||||
PartType type;
|
||||
PartInfo *p;
|
||||
u_long flags = 0;
|
||||
int i, status;
|
||||
Device **devs;
|
||||
Disk *d;
|
||||
|
||||
status = RET_SUCCESS;
|
||||
cp = variable_get(VAR_DISK);
|
||||
if (!cp) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk selected - can't label automatically.");
|
||||
return RET_FAIL;
|
||||
}
|
||||
|
||||
devs = deviceFind(cp, DEVICE_TYPE_DISK);
|
||||
if (!devs) {
|
||||
dialog_clear();
|
||||
msgConfirm("scriptLabel: No disk device %s found!", cp);
|
||||
return RET_FAIL;
|
||||
}
|
||||
d = devs[0]->private;
|
||||
|
||||
record_label_chunks(devs);
|
||||
for (i = 0; label_chunk_info[i].c; i++) {
|
||||
Chunk *c1 = label_chunk_info[i].c;
|
||||
|
||||
if (label_chunk_info[i].type == PART_SLICE) {
|
||||
if ((cp = variable_get(c1->name)) != NULL) {
|
||||
int sz;
|
||||
char typ[10], mpoint[50];
|
||||
|
||||
if (sscanf(cp, "%s %d %s", typ, &sz, mpoint) != 3) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
Chunk *tmp;
|
||||
|
||||
if (!strcmp(typ, "swap")) {
|
||||
type = PART_SWAP;
|
||||
strcpy(mpoint, "<swap>");
|
||||
}
|
||||
else {
|
||||
type = PART_FILESYSTEM;
|
||||
if (!strcmp(mpoint, "/"))
|
||||
flags |= CHUNK_IS_ROOT;
|
||||
}
|
||||
if (!sz)
|
||||
sz = space_free(c1);
|
||||
if (sz > space_free(c1)) {
|
||||
dialog_clear();
|
||||
msgConfirm("Not enough free space to create partition: %s", mpoint);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
if (!(tmp = Create_Chunk_DWIM(d, c1, sz, part,
|
||||
(type == PART_SWAP) ? FS_SWAP : FS_BSDFFS, flags))) {
|
||||
dialog_clear();
|
||||
msgConfirm("Unable to create from partition spec: %s. Too big?", cp);
|
||||
status = RET_FAIL;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
tmp->private_data = new_part(mpoint, TRUE, sz);
|
||||
tmp->private_free = safe_free;
|
||||
status = RET_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Must be something we can set a mountpoint */
|
||||
cp = variable_get(c1->name);
|
||||
if (cp) {
|
||||
char mpoint[50], nwfs[8];
|
||||
Boolean newfs = FALSE;
|
||||
|
||||
nwfs[0] = '\0';
|
||||
if (sscanf(cp, "%s %s", mpoint, nwfs) != 2) {
|
||||
dialog_clear();
|
||||
msgConfirm("For slice entry %s, got an invalid detail entry of: %s", c1->name, cp);
|
||||
status = RET_FAIL;
|
||||
continue;
|
||||
}
|
||||
newfs = toupper(nwfs[0]) == 'Y' ? TRUE : FALSE;
|
||||
if (c1->private_data) {
|
||||
p = c1->private_data;
|
||||
p->newfs = newfs;
|
||||
strcpy(p->mountpoint, mpoint);
|
||||
}
|
||||
else {
|
||||
c1->private_data = new_part(mpoint, newfs, 0);
|
||||
c1->private_free = safe_free;
|
||||
}
|
||||
if (!strcmp(mpoint, "/"))
|
||||
c1->flags |= CHUNK_IS_ROOT;
|
||||
else
|
||||
c1->flags &= ~CHUNK_IS_ROOT;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (status == RET_SUCCESS)
|
||||
variable_set2(DISK_LABELLED, "yes");
|
||||
return status;
|
||||
}
|
||||
|
||||
#define MAX_MOUNT_NAME 12
|
||||
|
||||
#define PART_PART_COL 0
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: main.c,v 1.14 1995/09/18 16:52:29 peter Exp $
|
||||
* $Id: main.c,v 1.15 1995/12/07 10:33:55 peter Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,18 @@ main(int argc, char **argv)
|
|||
{
|
||||
int choice, scroll, curr, max;
|
||||
|
||||
/* Catch fatal signals and complain about them if running as init */
|
||||
if (getpid() == 1) {
|
||||
signal(SIGBUS, screech);
|
||||
signal(SIGSEGV, screech);
|
||||
}
|
||||
|
||||
/* We don't work too well when running as non-root anymore */
|
||||
if (geteuid() != 0) {
|
||||
fprintf(stderr, "Warning: This utility should be run as root.\n");
|
||||
sleep(1);
|
||||
fprintf(stderr, "Error: This utility should only be run as root.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Set up whatever things need setting up */
|
||||
systemInitialize(argc, argv);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: media.c,v 1.29 1996/03/19 12:02:20 jkh Exp $
|
||||
* $Id: media.c,v 1.30 1996/03/21 17:20:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -87,7 +87,7 @@ cpioVerbosity()
|
|||
* be a CD.
|
||||
*/
|
||||
int
|
||||
mediaSetCDROM(char *str)
|
||||
mediaSetCDROM(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -130,7 +130,7 @@ floppyHook(char *str)
|
|||
* be a floppy
|
||||
*/
|
||||
int
|
||||
mediaSetFloppy(char *str)
|
||||
mediaSetFloppy(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -172,7 +172,7 @@ DOSHook(char *str)
|
|||
* be a DOS partition.
|
||||
*/
|
||||
int
|
||||
mediaSetDOS(char *str)
|
||||
mediaSetDOS(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -212,7 +212,7 @@ tapeHook(char *str)
|
|||
* be a tape drive.
|
||||
*/
|
||||
int
|
||||
mediaSetTape(char *str)
|
||||
mediaSetTape(dialogMenuItem *self)
|
||||
{
|
||||
Device **devs;
|
||||
int cnt;
|
||||
|
|
@ -261,12 +261,12 @@ mediaSetTape(char *str)
|
|||
* be an ftp server
|
||||
*/
|
||||
int
|
||||
mediaSetFTP(char *str)
|
||||
mediaSetFTP(dialogMenuItem *self)
|
||||
{
|
||||
static Device ftpDevice;
|
||||
char *cp;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (cp = variable_get(VAR_FTP_PATH)))) {
|
||||
if (!(cp = variable_get(VAR_FTP_PATH))) {
|
||||
if (!dmenuOpenSimple(&MenuMediaFTP))
|
||||
return RET_FAIL;
|
||||
else
|
||||
|
|
@ -296,8 +296,7 @@ mediaSetFTP(char *str)
|
|||
}
|
||||
strcpy(ftpDevice.name, cp);
|
||||
|
||||
/* If str == NULL || "script", we were called just to change FTP sites, not network devices */
|
||||
if (str && strcmp(str, "script") && !tcpDeviceSelect())
|
||||
if (!tcpDeviceSelect())
|
||||
return RET_FAIL;
|
||||
|
||||
ftpDevice.type = DEVICE_TYPE_FTP;
|
||||
|
|
@ -311,26 +310,26 @@ mediaSetFTP(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
mediaSetFTPActive(char *str)
|
||||
mediaSetFTPActive(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(VAR_FTP_STATE, "active");
|
||||
return mediaSetFTP(str);
|
||||
return mediaSetFTP(self);
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetFTPPassive(char *str)
|
||||
mediaSetFTPPassive(dialogMenuItem *self)
|
||||
{
|
||||
variable_set2(VAR_FTP_STATE, "passive");
|
||||
return mediaSetFTP(str);
|
||||
return mediaSetFTP(self);
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetUFS(char *str)
|
||||
mediaSetUFS(dialogMenuItem *self)
|
||||
{
|
||||
static Device ufsDevice;
|
||||
char *val;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (val = variable_get(VAR_UFS_PATH)))) {
|
||||
if (!(val = variable_get(VAR_UFS_PATH))) {
|
||||
val = variable_get_value(VAR_UFS_PATH, "Enter a fully qualified pathname for the directory\n"
|
||||
"containing the FreeBSD distribution files:");
|
||||
if (!val)
|
||||
|
|
@ -348,21 +347,19 @@ mediaSetUFS(char *str)
|
|||
}
|
||||
|
||||
int
|
||||
mediaSetNFS(char *str)
|
||||
mediaSetNFS(dialogMenuItem *self)
|
||||
{
|
||||
static Device nfsDevice;
|
||||
char *cp;
|
||||
|
||||
if (!(str && !strcmp(str, "script") && (cp = variable_get(VAR_NFS_PATH)))) {
|
||||
cp = variable_get_value(VAR_NFS_PATH, "Please enter the full NFS file specification for the remote\n"
|
||||
"host and directory containing the FreeBSD distribution files.\n"
|
||||
"This should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!cp)
|
||||
return RET_FAIL;
|
||||
}
|
||||
cp = variable_get_value(VAR_NFS_PATH, "Please enter the full NFS file specification for the remote\n"
|
||||
"host and directory containing the FreeBSD distribution files.\n"
|
||||
"This should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!cp)
|
||||
return RET_FAIL;
|
||||
strncpy(nfsDevice.name, cp, DEV_NAME_MAX);
|
||||
/* str == NULL means we were just called to change NFS paths, not network interfaces */
|
||||
if (str && strcmp(str, "script") && !tcpDeviceSelect())
|
||||
if (!tcpDeviceSelect())
|
||||
return RET_FAIL;
|
||||
nfsDevice.type = DEVICE_TYPE_NFS;
|
||||
nfsDevice.init = mediaInitNFS;
|
||||
|
|
@ -519,7 +516,7 @@ mediaExtractDist(char *dir, int fd)
|
|||
}
|
||||
|
||||
int
|
||||
mediaGetType(char *unused)
|
||||
mediaGetType(dialogMenuItem *self)
|
||||
{
|
||||
if (!dmenuOpenSimple(&MenuMedia))
|
||||
return RET_FAIL;
|
||||
|
|
@ -541,7 +538,7 @@ mediaVerify(void)
|
|||
|
||||
/* Set FTP error behavior */
|
||||
int
|
||||
mediaSetFtpOnError(char *str)
|
||||
mediaSetFtpOnError(dialogMenuItem *self)
|
||||
{
|
||||
char *cp = variable_get(VAR_FTP_ONERROR);
|
||||
|
||||
|
|
@ -563,7 +560,7 @@ mediaSetFtpOnError(char *str)
|
|||
|
||||
/* Set the FTP username and password fields */
|
||||
int
|
||||
mediaSetFtpUserPass(char *str)
|
||||
mediaSetFtpUserPass(dialogMenuItem *self)
|
||||
{
|
||||
char *pass;
|
||||
|
||||
|
|
@ -578,7 +575,7 @@ mediaSetFtpUserPass(char *str)
|
|||
|
||||
/* Set CPIO verbosity level */
|
||||
int
|
||||
mediaSetCPIOVerbosity(char *str)
|
||||
mediaSetCPIOVerbosity(dialogMenuItem *self)
|
||||
{
|
||||
char *cp = variable_get(VAR_CPIO_VERBOSITY);
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated for what's essentially a complete rewrite.
|
||||
*
|
||||
* $Id: options.c,v 1.30 1996/03/23 07:21:30 jkh Exp $
|
||||
* $Id: options.c,v 1.31 1996/03/24 12:06:13 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -197,7 +197,7 @@ fire(Option opt)
|
|||
}
|
||||
|
||||
int
|
||||
optionsEditor(char *str)
|
||||
optionsEditor(dialogMenuItem *self)
|
||||
{
|
||||
int i, optcol, optrow, key;
|
||||
static int currOpt = 0;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.47 1996/03/21 09:30:15 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.48 1996/03/23 07:21:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -57,14 +57,6 @@
|
|||
|
||||
/*** Defines ***/
|
||||
|
||||
/* Bitfields for menu options */
|
||||
#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */
|
||||
#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */
|
||||
#define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */
|
||||
|
||||
/* XXX This goes away soon XXX */
|
||||
#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */
|
||||
|
||||
/* variable limits */
|
||||
#define VAR_NAME_MAX 128
|
||||
#define VAR_VALUE_MAX 1024
|
||||
|
|
@ -153,36 +145,15 @@ typedef unsigned int Boolean;
|
|||
typedef struct disk Disk;
|
||||
typedef struct chunk Chunk;
|
||||
|
||||
typedef enum {
|
||||
DMENU_DISPLAY_FILE, /* Display a file's contents */
|
||||
DMENU_SUBMENU, /* Recurse into another menu */
|
||||
DMENU_SYSTEM_COMMAND, /* Run shell commmand */
|
||||
DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */
|
||||
DMENU_SET_VARIABLE, /* Set an environment/system var */
|
||||
DMENU_SET_FLAG, /* Set flag in an unsigned int */
|
||||
DMENU_SET_VALUE, /* Set unsigned int to value */
|
||||
DMENU_CALL, /* Call back a C function */
|
||||
DMENU_CANCEL, /* Cancel out of this menu */
|
||||
DMENU_NOP, /* Do nothing special for item */
|
||||
} DMenuItemType;
|
||||
|
||||
typedef struct _dmenuItem {
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
DMenuItemType type; /* What type of item we are */
|
||||
void *ptr; /* Generic data ptr */
|
||||
int parm; /* Parameter for above */
|
||||
Boolean disabled; /* Are we temporarily disabled? */
|
||||
char * (*check)(struct _dmenuItem *); /* Our state */
|
||||
} DMenuItem;
|
||||
typedef enum { DMENU_NORMAL_TYPE, DMENU_RADIO_TYPE, DMENU_CHECKLIST_TYPE } dmenuType;
|
||||
|
||||
typedef struct _dmenu {
|
||||
unsigned int options; /* What sort of menu we are */
|
||||
dmenuType type; /* What sort of menu we are */
|
||||
char *title; /* Our title */
|
||||
char *prompt; /* Our prompt */
|
||||
char *helpline; /* Line of help at bottom */
|
||||
char *helpfile; /* Help file for "F1" */
|
||||
DMenuItem items[0]; /* Array of menu items */
|
||||
dialogMenuItem items[0]; /* Array of menu items */
|
||||
} DMenu;
|
||||
|
||||
/* A sysconfig variable */
|
||||
|
|
@ -358,10 +329,10 @@ extern DMenu MenuHTMLDoc; /* HTML Documentation menu */
|
|||
/*** Prototypes ***/
|
||||
|
||||
/* apache.c */
|
||||
extern int configApache(char *str);
|
||||
extern int configApache(dialogMenuItem *self);
|
||||
|
||||
/* anonFTP.c */
|
||||
extern int configAnonFTP(char *unused);
|
||||
extern int configAnonFTP(dialogMenuItem *self);
|
||||
|
||||
/* attrs.c */
|
||||
extern char *attr_match(Attribs *attr, char *name);
|
||||
|
|
@ -384,20 +355,16 @@ extern void command_func_add(char *key, commandFunc func, void *data);
|
|||
extern int configFstab(void);
|
||||
extern void configSysconfig(void);
|
||||
extern void configResolv(void);
|
||||
extern int configPorts(char *str);
|
||||
extern int configPackages(char *str);
|
||||
extern int configSaverTimeout(char *str);
|
||||
extern int configNTP(char *str);
|
||||
extern int configRoutedFlags(char *str);
|
||||
extern int configPorts(dialogMenuItem *self);
|
||||
extern int configPackages(dialogMenuItem *self);
|
||||
extern int configSaverTimeout(dialogMenuItem *self);
|
||||
extern int configNTP(dialogMenuItem *self);
|
||||
extern int configXFree86(dialogMenuItem *self);
|
||||
extern int configRoutedFlags(dialogMenuItem *self);
|
||||
|
||||
/* crc.c */
|
||||
extern int crc(int, unsigned long *, unsigned long *);
|
||||
|
||||
/* decode.c */
|
||||
extern DMenuItem *decode(DMenu *menu, char *name);
|
||||
extern int dispatch(DMenuItem *tmp, char *name);
|
||||
extern int decode_and_dispatch_multiple(DMenu *menu, char *names);
|
||||
|
||||
/* devices.c */
|
||||
extern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)());
|
||||
extern void deviceGetAll(void);
|
||||
|
|
@ -414,34 +381,42 @@ extern Boolean dummyClose(Device *dev, int fd);
|
|||
extern void dummyShutdown(Device *dev);
|
||||
|
||||
/* disks.c */
|
||||
extern int diskPartitionEditor(char *unused);
|
||||
extern int diskPartitionWrite(char *unused);
|
||||
extern int diskPartitionEditor(dialogMenuItem *self);
|
||||
extern int diskPartitionWrite(dialogMenuItem *self);
|
||||
|
||||
/* dist.c */
|
||||
extern int distReset(char *str);
|
||||
extern int distSetCustom(char *str);
|
||||
extern int distSetDeveloper(char *str);
|
||||
extern int distSetXDeveloper(char *str);
|
||||
extern int distSetKernDeveloper(char *str);
|
||||
extern int distSetUser(char *str);
|
||||
extern int distSetXUser(char *str);
|
||||
extern int distSetMinimum(char *str);
|
||||
extern int distSetEverything(char *str);
|
||||
extern int distSetDES(char *str);
|
||||
extern int distSetSrc(char *str);
|
||||
extern int distSetXF86(char *str);
|
||||
extern int distExtractAll(char *str);
|
||||
extern int distReset(dialogMenuItem *self);
|
||||
extern int distSetDeveloper(dialogMenuItem *self);
|
||||
extern int distSetXDeveloper(dialogMenuItem *self);
|
||||
extern int distSetKernDeveloper(dialogMenuItem *self);
|
||||
extern int distSetUser(dialogMenuItem *self);
|
||||
extern int distSetXUser(dialogMenuItem *self);
|
||||
extern int distSetMinimum(dialogMenuItem *self);
|
||||
extern int distSetEverything(dialogMenuItem *self);
|
||||
extern int distSetDES(dialogMenuItem *self);
|
||||
extern int distSetSrc(dialogMenuItem *self);
|
||||
extern int distSetXF86(dialogMenuItem *self);
|
||||
extern int distExtractAll(dialogMenuItem *self);
|
||||
|
||||
/* dmenu.c */
|
||||
extern int dmenuDisplayFile(dialogMenuItem *tmp);
|
||||
extern int dmenuSubmenu(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommand(dialogMenuItem *tmp);
|
||||
extern int dmenuSystemCommandBox(dialogMenuItem *tmp);
|
||||
extern int dmenuCancel(dialogMenuItem *tmp);
|
||||
extern int dmenuSetVariable(dialogMenuItem *tmp);
|
||||
extern int dmenuSetFlag(dialogMenuItem *tmp);
|
||||
extern int dmenuSetValue(dialogMenuItem *tmp);
|
||||
extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max);
|
||||
extern Boolean dmenuOpenSimple(DMenu *menu);
|
||||
extern char *dmenuVarCheck(DMenuItem *item);
|
||||
extern char *dmenuFlagCheck(DMenuItem *item);
|
||||
extern char *dmenuRadioCheck(DMenuItem *item);
|
||||
extern int dmenuVarCheck(dialogMenuItem *item);
|
||||
extern int dmenuFlagCheck(dialogMenuItem *item);
|
||||
extern int dmenuRadioCheck(dialogMenuItem *item);
|
||||
|
||||
/* doc.c */
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
extern int docBrowser(dialogMenuItem *self);
|
||||
extern int docShowDocument(dialogMenuItem *self);
|
||||
|
||||
/* dos.c */
|
||||
extern Boolean mediaInitDOS(Device *dev);
|
||||
|
|
@ -474,27 +449,26 @@ void index_print(PkgNodePtr top, int level);
|
|||
int index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist);
|
||||
|
||||
/* install.c */
|
||||
extern int installCommit(char *str);
|
||||
extern int installExpress(char *str);
|
||||
extern int installNovice(char *str);
|
||||
extern int installFixit(char *str);
|
||||
extern int installFixup(char *str);
|
||||
extern int installUpgrade(char *str);
|
||||
extern int installPreconfig(char *str);
|
||||
extern int installFilesystems(char *str);
|
||||
extern int installVarDefaults(char *str);
|
||||
extern int installCommit(dialogMenuItem *self);
|
||||
extern int installExpress(dialogMenuItem *self);
|
||||
extern int installNovice(dialogMenuItem *self);
|
||||
extern int installFixit(dialogMenuItem *self);
|
||||
extern int installFixup(dialogMenuItem *self);
|
||||
extern int installUpgrade(dialogMenuItem *self);
|
||||
extern int installFilesystems(dialogMenuItem *self);
|
||||
extern int installVarDefaults(dialogMenuItem *self);
|
||||
extern Boolean copySelf(void);
|
||||
extern Boolean rootExtract(void);
|
||||
|
||||
/* installFinal.c */
|
||||
extern int configGated(char *unused);
|
||||
extern int configSamba(char *unused);
|
||||
extern int configPCNFSD(char *unused);
|
||||
extern int configNFSServer(char *unused);
|
||||
extern int configGated(dialogMenuItem *self);
|
||||
extern int configSamba(dialogMenuItem *self);
|
||||
extern int configPCNFSD(dialogMenuItem *self);
|
||||
extern int configNFSServer(dialogMenuItem *self);
|
||||
|
||||
/* label.c */
|
||||
extern int diskLabelEditor(char *str);
|
||||
extern int diskLabelCommit(char *str);
|
||||
extern int diskLabelEditor(dialogMenuItem *self);
|
||||
extern int diskLabelCommit(dialogMenuItem *self);
|
||||
|
||||
/* lndir.c */
|
||||
extern int lndir(char *from, char *to);
|
||||
|
|
@ -515,19 +489,19 @@ extern u_char default_scrnmap[];
|
|||
|
||||
/* media.c */
|
||||
extern char *cpioVerbosity(void);
|
||||
extern int mediaSetCDROM(char *str);
|
||||
extern int mediaSetFloppy(char *str);
|
||||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFTPActive(char *str);
|
||||
extern int mediaSetFTPPassive(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern int mediaSetFtpOnError(char *str);
|
||||
extern int mediaSetFtpUserPass(char *str);
|
||||
extern int mediaSetCPIOVerbosity(char *str);
|
||||
extern int mediaGetType(char *str);
|
||||
extern int mediaSetCDROM(dialogMenuItem *self);
|
||||
extern int mediaSetFloppy(dialogMenuItem *self);
|
||||
extern int mediaSetDOS(dialogMenuItem *self);
|
||||
extern int mediaSetTape(dialogMenuItem *self);
|
||||
extern int mediaSetFTP(dialogMenuItem *self);
|
||||
extern int mediaSetFTPActive(dialogMenuItem *self);
|
||||
extern int mediaSetFTPPassive(dialogMenuItem *self);
|
||||
extern int mediaSetUFS(dialogMenuItem *self);
|
||||
extern int mediaSetNFS(dialogMenuItem *self);
|
||||
extern int mediaSetFtpOnError(dialogMenuItem *self);
|
||||
extern int mediaSetFtpUserPass(dialogMenuItem *self);
|
||||
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
|
||||
extern int mediaGetType(dialogMenuItem *self);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
|
|
@ -579,7 +553,7 @@ extern int mediaGetNFS(Device *dev, char *file, Boolean probe);
|
|||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* options.c */
|
||||
extern int optionsEditor(char *str);
|
||||
extern int optionsEditor(dialogMenuItem *self);
|
||||
|
||||
/* package.c */
|
||||
extern int package_add(char *name);
|
||||
|
|
@ -598,8 +572,6 @@ extern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mo
|
|||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern void systemCreateHoloshell(void);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
extern int docBrowser(char *junk);
|
||||
extern int docShowDocument(char *str);
|
||||
|
||||
/* tape.c */
|
||||
extern char *mediaTapeBlocksize(void);
|
||||
|
|
@ -609,7 +581,7 @@ extern void mediaShutdownTape(Device *dev);
|
|||
|
||||
/* tcpip.c */
|
||||
extern int tcpOpenDialog(Device *dev);
|
||||
extern int tcpMenuSelect(char *str);
|
||||
extern int tcpMenuSelect(dialogMenuItem *self);
|
||||
extern int tcpInstallDevice(char *str);
|
||||
extern Boolean tcpDeviceSelect(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: tcpip.c,v 1.32 1995/12/07 10:34:19 peter Exp $
|
||||
* $Id: tcpip.c,v 1.33 1996/03/02 07:31:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Gary J Palmer. All rights reserved.
|
||||
|
|
@ -569,7 +569,7 @@ tcpDeviceSelect(void)
|
|||
|
||||
/* Do it from a menu that doesn't care about status */
|
||||
int
|
||||
tcpMenuSelect(char *str)
|
||||
tcpMenuSelect(dialogMenuItem *self)
|
||||
{
|
||||
(void)tcpDeviceSelect();
|
||||
configResolv();
|
||||
|
|
|
|||
Loading…
Reference in a new issue