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:
Jordan K. Hubbard 1996-04-07 03:52:36 +00:00
parent f6284247b7
commit 957bdf511e
50 changed files with 2501 additions and 3681 deletions

View file

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

View file

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

View file

@ -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];

View file

@ -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 */

View file

@ -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;
}

View file

@ -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;
}

View file

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

View file

@ -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;
}

View file

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

View file

@ -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;
}
}
}

View file

@ -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();

View file

@ -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");

View file

@ -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];

View file

@ -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;
}

View file

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

View file

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

View file

@ -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);

View file

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

View file

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

View file

@ -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);

View file

@ -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();

View file

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

View file

@ -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 */

View file

@ -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;
}

View file

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

View file

@ -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;
}
}
}

View file

@ -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");

View file

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

View file

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

View file

@ -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);

View file

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

View file

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

View file

@ -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 */

View file

@ -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;
}

View file

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

View file

@ -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;
}

View file

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

View file

@ -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;
}
}
}

View file

@ -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();

View file

@ -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");

View file

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

View file

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

View file

@ -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);

View file

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

View file

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

View file

@ -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);

View file

@ -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();