Installation cleanup, round II.

This commit is contained in:
Jordan K. Hubbard 1996-10-01 12:13:29 +00:00
parent 3e17261bac
commit 23c0fda959
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=18619
20 changed files with 304 additions and 189 deletions

View File

@ -34,27 +34,15 @@ do
vnconfig -s labels -c /dev/r${VNDEVICE} fs-image
sed '/^minimum:/,$d' /etc/disktab > /etc/disktab.tmp
cat /etc/disktab.tmp > /etc/disktab
rm -f /etc/disktab.tmp
(
a=`expr ${FSSIZE} \* 2`
echo
echo "minimum:ty=mfs:se#512:nt#1:rm#300:\\"
echo " :ns#$a:nc#1:\\"
echo " :pa#$a:oa#0:ba#4096:fa#512:\\"
echo " :pc#$a:oc#0:bc#4096:fc#512:"
echo
) >> /etc/disktab
disklabel -w -r -B \
dd if=${RD}/trees/bin/usr/mdec/boot1 of=fs-image conv=notrunc
disklabel /dev/r${VNDEVICE} | disklabel -R -B \
-b ${RD}/trees/bin/usr/mdec/fdboot \
-s ${RD}/trees/bin/usr/mdec/bootfd \
/dev/r${VNDEVICE} minimum
/dev/r${VNDEVICE} /dev/stdin
newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T minimum -o space /dev/r${VNDEVICE}a
newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T minimum -o space /dev/r${VNDEVICE}c
mount /dev/${VNDEVICE}a ${MNT}
mount /dev/${VNDEVICE}c ${MNT}
( set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT} )
@ -62,7 +50,7 @@ do
umount ${MNT}
fsck -p /dev/r${VNDEVICE}a < /dev/null
fsck -p /dev/r${VNDEVICE}c < /dev/null
vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true

View File

@ -34,27 +34,15 @@ do
vnconfig -s labels -c /dev/r${VNDEVICE} fs-image
sed '/^minimum:/,$d' /etc/disktab > /etc/disktab.tmp
cat /etc/disktab.tmp > /etc/disktab
rm -f /etc/disktab.tmp
(
a=`expr ${FSSIZE} \* 2`
echo
echo "minimum:ty=mfs:se#512:nt#1:rm#300:\\"
echo " :ns#$a:nc#1:\\"
echo " :pa#$a:oa#0:ba#4096:fa#512:\\"
echo " :pc#$a:oc#0:bc#4096:fc#512:"
echo
) >> /etc/disktab
disklabel -w -r -B \
dd if=${RD}/trees/bin/usr/mdec/boot1 of=fs-image conv=notrunc
disklabel /dev/r${VNDEVICE} | disklabel -R -B \
-b ${RD}/trees/bin/usr/mdec/fdboot \
-s ${RD}/trees/bin/usr/mdec/bootfd \
/dev/r${VNDEVICE} minimum
/dev/r${VNDEVICE} /dev/stdin
newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T minimum -o space /dev/r${VNDEVICE}a
newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T minimum -o space /dev/r${VNDEVICE}c
mount /dev/${VNDEVICE}a ${MNT}
mount /dev/${VNDEVICE}c ${MNT}
( set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT} )
@ -62,7 +50,7 @@ do
umount ${MNT}
fsck -p /dev/r${VNDEVICE}a < /dev/null
fsck -p /dev/r${VNDEVICE}c < /dev/null
vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true

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: cdrom.c,v 1.21 1996/07/16 17:11:38 jkh Exp $
* $Id: cdrom.c,v 1.22 1996/08/23 07:55:57 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -83,10 +83,12 @@ mediaInitCDROM(Device *dev)
if (!file_readable("/cdrom/cdrom.inf")) {
Mkdir("/cdrom");
if (mount(MOUNT_CD9660, "/cdrom", MNT_RDONLY, (caddr_t) &args) == -1) {
msgConfirm("Error mounting %s on /cdrom: %s (%u)", dev->devname, strerror(errno), errno);
return FALSE;
if (errno != EBUSY) {
msgConfirm("Error mounting %s on /cdrom: %s (%u)", dev->devname, strerror(errno), errno);
return FALSE;
}
}
else if (!file_readable("/cdrom/cdrom.inf")) {
if (!file_readable("/cdrom/cdrom.inf")) {
if (msgYesNo("Warning: The CD currently in the drive is either not a FreeBSD\n"
"CD or it is an older (pre 2.1.5) FreeBSD CD which does not\n"
"have a version number on it. Do you wish to use this CD anyway?")) {

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: dispatch.c,v 1.3 1996/06/26 09:09:27 jkh Exp $
* $Id: dispatch.c,v 1.4 1996/07/02 10:57:51 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -79,7 +79,7 @@ static struct _word {
{ "mediaSetFTPPassive", mediaSetFTPPassive },
{ "mediaSetUFS", mediaSetUFS },
{ "mediaSetNFS", mediaSetNFS },
{ "mediaSetFtpUserPass", mediaSetFtpUserPass },
{ "mediaSetFTPUserPass", mediaSetFTPUserPass },
{ "mediaSetCPIOVerbosity", mediaSetCPIOVerbosity },
{ "mediaGetType", mediaGetType },
{ "optionsEditor", optionsEditor },

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.57 1996/08/03 05:25:56 jkh Exp $
* $Id: label.c,v 1.58 1996/08/03 10:11:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -263,7 +263,12 @@ get_mountpoint(struct chunk *old)
tmp = old->private_data;
else
tmp = NULL;
if (!old) {
DialogX = 13;
DialogY = 17;
}
val = msgGetInput(tmp ? tmp->mountpoint : NULL, "Please specify a mount point for the partition");
DialogX = DialogY = 0;
if (!val || !*val) {
if (!old)
return NULL;
@ -313,7 +318,6 @@ get_partition_type(void)
{
char selection[20];
int i;
WINDOW *save = savescr();
static unsigned char *fs_types[] = {
"FS",
@ -321,12 +325,13 @@ get_partition_type(void)
"Swap",
"A swap partition.",
};
dialog_clear_norefresh();
DialogX = 7;
DialogY = 9;
i = dialog_menu("Please choose a partition type",
"If you want to use this partition for swap space, select Swap.\n"
"If you want to put a filesystem on it, choose FS.",
-1, -1, 2, 2, fs_types, selection, NULL, NULL);
restorescr(save);
DialogX = DialogY = 0;
if (!i) {
if (!strcmp(selection, "FS"))
return PART_FILESYSTEM;
@ -448,7 +453,7 @@ print_label_chunks(void)
}
static void
print_command_summary()
print_command_summary(void)
{
mvprintw(17, 0, "The following commands are valid here (upper or lower case):");
mvprintw(18, 0, "C = Create D = Delete M = Mount");
@ -460,10 +465,17 @@ print_command_summary()
move(0, 0);
}
static void
clear_wins(void)
{
clear();
wclear(ChunkWin);
}
static int
diskLabel(char *str)
{
int sz, key = 0, first_time = 1;
int sz, key = 0;
Boolean labeling;
char *msg = NULL;
PartInfo *p, *oldp;
@ -480,13 +492,10 @@ diskLabel(char *str)
keypad(stdscr, TRUE);
record_label_chunks(devs);
dialog_clear_norefresh(); clear();
clear();
while (labeling) {
print_label_chunks();
if (first_time) {
print_command_summary();
first_time = 0;
}
print_command_summary();
if (msg) {
attrset(title_attr); mvprintw(23, 0, msg); attrset(A_NORMAL);
clrtoeol();
@ -497,13 +506,15 @@ diskLabel(char *str)
move(23, 0);
clrtoeol();
}
refresh();
key = getch();
switch (toupper(key)) {
int i;
static char _msg[40];
case '\014': /* ^L */
continue;
clear_wins();
break;
case KEY_UP:
case '-':
@ -536,6 +547,7 @@ diskLabel(char *str)
case KEY_F(1):
case '?':
systemDisplayHelp("partition");
clear_wins();
break;
case 'A':
@ -561,6 +573,7 @@ diskLabel(char *str)
(cp ? atoi(cp) : 32) * ONE_MEG, part, FS_BSDFFS, CHUNK_IS_ROOT);
if (!tmp) {
msgConfirm("Unable to create the root partition. Too big?");
clear_wins();
break;
}
tmp->private_data = new_part("/", TRUE, tmp->size);
@ -583,6 +596,7 @@ diskLabel(char *str)
swsize, part, FS_SWAP, 0);
if (!tmp) {
msgConfirm("Unable to create the swap partition. Too big?");
clear_wins();
break;
}
tmp->private_data = 0;
@ -598,6 +612,7 @@ diskLabel(char *str)
msgConfirm("Less than %dMB free for /var - you will need to\n"
"partition your disk manually with a custom install!",
(cp ? atoi(cp) : VAR_MIN_SIZE));
clear_wins();
break;
}
tmp->private_data = new_part("/var", TRUE, tmp->size);
@ -614,6 +629,7 @@ diskLabel(char *str)
if (!sz || sz < (USR_MIN_SIZE * ONE_MEG)) {
msgConfirm("Less than %dMB free for /usr - you will need to\n"
"partition your disk manually with a custom install!", USR_MIN_SIZE);
clear_wins();
break;
}
@ -623,6 +639,7 @@ diskLabel(char *str)
if (!tmp) {
msgConfirm("Unable to create the /usr partition. Not enough space?\n"
"You will need to partition your disk manually with a custom install!");
clear_wins();
break;
}
tmp->private_data = new_part("/usr", TRUE, tmp->size);
@ -652,11 +669,17 @@ diskLabel(char *str)
u_long flags = 0;
sprintf(osize, "%d", sz);
val = msgGetInput(osize, "Please specify the size for new FreeBSD partition in blocks, or\n"
"append a trailing `M' for megabytes (e.g. 20M) or `C' for cylinders.\n\n"
"Space free is %d blocks (%dMB)", sz, sz / ONE_MEG);
if (!val || (size = strtol(val, &cp, 0)) <= 0)
DialogX = 3;
DialogY = 1;
val = msgGetInput(osize,
"Please specify the partition size in blocks or append a trailing M for\n"
"megabytes or C for cylinders. %d blocks (%dMB) are free.",
sz, sz / ONE_MEG);
DialogX = DialogY = 0;
if (!val || (size = strtol(val, &cp, 0)) <= 0) {
clear_wins();
break;
}
if (*cp) {
if (toupper(*cp) == 'M')
@ -666,20 +689,28 @@ diskLabel(char *str)
}
if (size <= FS_MIN_SIZE) {
msgConfirm("The minimum filesystem size is %dMB", FS_MIN_SIZE / ONE_MEG);
clear_wins();
break;
}
type = get_partition_type();
if (type == PART_NONE)
if (type == PART_NONE) {
clear_wins();
beep();
break;
}
if (type == PART_FILESYSTEM) {
if ((p = get_mountpoint(NULL)) == NULL)
if ((p = get_mountpoint(NULL)) == NULL) {
clear_wins();
beep();
break;
}
else if (!strcmp(p->mountpoint, "/"))
flags |= CHUNK_IS_ROOT;
else
flags &= ~CHUNK_IS_ROOT;
} else
}
else
p = NULL;
if ((flags & CHUNK_IS_ROOT)) {
@ -688,6 +719,7 @@ diskLabel(char *str)
"FreeBSD boot code cannot deal with a root partition created\n"
"in that location. Please choose another location or smaller\n"
"size for your root partition and try again!");
clear_wins();
break;
}
if (size < (ROOT_MIN_SIZE * ONE_MEG)) {
@ -703,6 +735,7 @@ diskLabel(char *str)
flags);
if (!tmp) {
msgConfirm("Unable to create the partition. Too big?");
clear_wins();
break;
}
if ((flags & CHUNK_IS_ROOT) && (tmp->flags & CHUNK_PAST_1024)) {
@ -711,6 +744,7 @@ diskLabel(char *str)
"poor location to boot from. Please choose another\n"
"location (or smaller size) for your root partition and try again!");
Delete_Chunk(label_chunk_info[here].c->disk, tmp);
clear_wins();
break;
}
if (type != PART_SWAP) {
@ -723,6 +757,7 @@ diskLabel(char *str)
tmp->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear_wins();
}
break;
@ -767,6 +802,7 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear();
break;
default:
@ -791,7 +827,7 @@ diskLabel(char *str)
safe_free(pi);
label_chunk_info[here].c->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
}
}
else
msg = MSG_NOT_APPLICABLE;
break;
@ -814,6 +850,7 @@ diskLabel(char *str)
}
}
record_label_chunks(devs);
clear();
break;
case 'W':
@ -821,12 +858,10 @@ diskLabel(char *str)
"operation, and it should also be noted that this option is NOT for\n"
"use during new installations but rather for modifying existing ones.\n\n"
"Are you absolutely SURE you want to do this now?")) {
WINDOW *save = savescr();
variable_set2(DISK_LABELLED, "yes");
diskLabelCommit(NULL);
restorescr(save);
}
clear();
break;
case '|':
@ -835,7 +870,6 @@ diskLabel(char *str)
"expected to understand!")) {
int i;
Device **devs;
WINDOW *save = savescr();
dialog_clear();
end_dialog();
@ -851,9 +885,8 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
DialogActive = TRUE;
dialog_clear_norefresh();
restorescr(save);
record_label_chunks(devs);
clear();
}
else
msg = "A most prudent choice!";

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.52 1996/08/03 10:11:16 jkh Exp $
* $Id: media.c,v 1.53 1996/09/26 22:07:32 pst Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -259,21 +259,23 @@ mediaSetFTP(dialogMenuItem *self)
static Device ftpDevice;
char *cp, *hostname, *dir;
extern int FtpPort;
static int first_time = 1;
int what;
dialog_clear_norefresh();
cp = variable_get(VAR_FTP_PATH);
if (!(cp && first_time)) {
if (!cp) {
dialog_clear_norefresh();
if (!dmenuOpenSimple(&MenuMediaFTP, FALSE))
return DITEM_FAILURE | DITEM_RECREATE;
else
cp = variable_get(VAR_FTP_PATH);
what = DITEM_RECREATE;
}
if (first_time)
first_time = 0;
else
what = DITEM_RESTORE;
if (!cp) {
dialog_clear_norefresh();
msgConfirm("%s not set! Not setting an FTP installation path, OK?", VAR_FTP_PATH);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
else if (!strcmp(cp, "other")) {
variable_set2(VAR_FTP_PATH, "ftp://");
@ -286,20 +288,20 @@ mediaSetFTP(dialogMenuItem *self)
"Where <path> is relative to the anonymous ftp directory or the\n"
"home directory of the user being logged in as.");
if (!cp || !*cp)
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
if (strncmp("ftp://", cp, 6)) {
msgConfirm("Sorry, %s is an invalid URL!", cp);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
strcpy(ftpDevice.name, cp);
if (!tcpDeviceSelect())
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
if (!mediaDevice || !mediaDevice->init(mediaDevice)) {
if (isDebug())
msgDebug("mediaSetFTP: Net device init failed.\n");
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
hostname = cp + 6;
if ((cp = index(hostname, ':')) != NULL) {
@ -321,7 +323,7 @@ mediaSetFTP(dialogMenuItem *self)
msgConfirm("Cannot resolve hostname `%s'! Are you sure that your\n"
"name server, gateway and network interface are correctly configured?", hostname);
mediaDevice->shutdown(mediaDevice);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
}
variable_set2(VAR_FTP_HOST, hostname);
@ -334,7 +336,7 @@ mediaSetFTP(dialogMenuItem *self)
ftpDevice.shutdown = mediaShutdownFTP;
ftpDevice.private = mediaDevice; /* Set to network device by tcpDeviceSelect() */
mediaDevice = &ftpDevice;
return DITEM_LEAVE_MENU | DITEM_RECREATE;
return DITEM_SUCCESS | DITEM_LEAVE_MENU | what;
}
int
@ -357,6 +359,7 @@ mediaSetUFS(dialogMenuItem *self)
static Device ufsDevice;
char *cp;
dialog_clear_norefresh();
cp = variable_get_value(VAR_UFS_PATH, "Enter a fully qualified pathname for the directory\n"
"containing the FreeBSD distribution files:");
if (!cp)
@ -378,6 +381,7 @@ mediaSetNFS(dialogMenuItem *self)
static Device nfsDevice;
char *cp, *idx;
dialog_clear_norefresh();
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");
@ -593,15 +597,18 @@ mediaVerify(void)
/* Set the FTP username and password fields */
int
mediaSetFtpUserPass(dialogMenuItem *self)
mediaSetFTPUserPass(dialogMenuItem *self)
{
char *pass;
if (variable_get_value(VAR_FTP_USER, "Please enter the username you wish to login as:"))
dialog_clear_norefresh();
if (variable_get_value(VAR_FTP_USER, "Please enter the username you wish to login as:")) {
dialog_clear_norefresh();
pass = variable_get_value(VAR_FTP_PASS, "Please enter the password for this user:");
}
else
pass = NULL;
return pass ? DITEM_SUCCESS : DITEM_FAILURE;
return (pass ? DITEM_SUCCESS : DITEM_FAILURE) | DITEM_RESTORE;
}
/* Set CPIO verbosity level */

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.41 1996/07/09 14:28:18 jkh Exp $
* $Id: options.c,v 1.42 1996/08/03 10:11:33 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -111,7 +111,7 @@ static Option Options[] = {
{ "Yes to All", "Assume \"Yes\" answers to all non-critical dialogs",
OPT_IS_VAR, NULL, VAR_NO_CONFIRM, varCheck },
{ "FTP username", "Username and password to use instead of anonymous",
OPT_IS_FUNC, mediaSetFtpUserPass, VAR_FTP_USER, varCheck },
OPT_IS_FUNC, mediaSetFTPUserPass, VAR_FTP_USER, varCheck },
{ "Editor", "Which text editor to use during installation",
OPT_IS_VAR, EDITOR_PROMPT, VAR_EDITOR, varCheck },
{ "Tape Blocksize", "Tape media block size in 512 byte blocks",
@ -164,17 +164,22 @@ value_of(Option opt)
return "<unknown>";
}
static void
static int
fire(Option opt)
{
if (opt.type == OPT_IS_FUNC) {
int (*cp)(char *) = opt.data;
int status = 0;
cp(NULL);
if (opt.type == OPT_IS_FUNC) {
int (*cp)(char *) = opt.data, rcode;
rcode = cp(NULL);
if (rcode & (DITEM_RECREATE | DITEM_RESTORE))
status = 1;
}
else if (opt.type == OPT_IS_VAR) {
if (opt.data) {
(void)variable_get_value(opt.aux, opt.data);
status = 1;
}
else if (variable_get(opt.aux))
variable_unset(opt.aux);
@ -183,8 +188,8 @@ fire(Option opt)
}
if (opt.check)
opt.check(opt);
clear();
refresh();
return status;
}
int
@ -239,6 +244,7 @@ optionsEditor(dialogMenuItem *self)
case KEY_F(1):
case '?':
systemDisplayHelp("options");
clear();
break;
case KEY_UP:
@ -265,9 +271,8 @@ optionsEditor(dialogMenuItem *self)
continue;
case ' ':
clear();
fire(Options[currOpt]);
clear();
if (fire(Options[currOpt]))
clear();
continue;
case 'Q':

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.77 1996/07/31 09:29:35 jkh Exp $
* $Id: sysinstall.h,v 1.78 1996/08/01 10:58:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -513,7 +513,7 @@ extern int mediaSetFTPActive(dialogMenuItem *self);
extern int mediaSetFTPPassive(dialogMenuItem *self);
extern int mediaSetUFS(dialogMenuItem *self);
extern int mediaSetNFS(dialogMenuItem *self);
extern int mediaSetFtpUserPass(dialogMenuItem *self);
extern int mediaSetFTPUserPass(dialogMenuItem *self);
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
extern int mediaGetType(dialogMenuItem *self);
extern Boolean mediaExtractDist(char *dir, int fd);

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: system.c,v 1.64 1996/09/26 21:07:08 pst Exp $
* $Id: system.c,v 1.65 1996/10/01 04:56:34 jkh Exp $
*
* Jordan Hubbard
*
@ -37,8 +37,12 @@
static void
handle_intr(int sig)
{
WINDOW *save = savescr();
if (!msgYesNo("Are you sure you want to abort the installation?"))
systemShutdown(1);
else
restorescr(save);
}
/* Expand a file into a convenient location, nuking it each time */

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: dispatch.c,v 1.3 1996/06/26 09:09:27 jkh Exp $
* $Id: dispatch.c,v 1.4 1996/07/02 10:57:51 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -79,7 +79,7 @@ static struct _word {
{ "mediaSetFTPPassive", mediaSetFTPPassive },
{ "mediaSetUFS", mediaSetUFS },
{ "mediaSetNFS", mediaSetNFS },
{ "mediaSetFtpUserPass", mediaSetFtpUserPass },
{ "mediaSetFTPUserPass", mediaSetFTPUserPass },
{ "mediaSetCPIOVerbosity", mediaSetCPIOVerbosity },
{ "mediaGetType", mediaGetType },
{ "optionsEditor", optionsEditor },

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.57 1996/08/03 05:25:56 jkh Exp $
* $Id: label.c,v 1.58 1996/08/03 10:11:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -263,7 +263,12 @@ get_mountpoint(struct chunk *old)
tmp = old->private_data;
else
tmp = NULL;
if (!old) {
DialogX = 13;
DialogY = 17;
}
val = msgGetInput(tmp ? tmp->mountpoint : NULL, "Please specify a mount point for the partition");
DialogX = DialogY = 0;
if (!val || !*val) {
if (!old)
return NULL;
@ -313,7 +318,6 @@ get_partition_type(void)
{
char selection[20];
int i;
WINDOW *save = savescr();
static unsigned char *fs_types[] = {
"FS",
@ -321,12 +325,13 @@ get_partition_type(void)
"Swap",
"A swap partition.",
};
dialog_clear_norefresh();
DialogX = 7;
DialogY = 9;
i = dialog_menu("Please choose a partition type",
"If you want to use this partition for swap space, select Swap.\n"
"If you want to put a filesystem on it, choose FS.",
-1, -1, 2, 2, fs_types, selection, NULL, NULL);
restorescr(save);
DialogX = DialogY = 0;
if (!i) {
if (!strcmp(selection, "FS"))
return PART_FILESYSTEM;
@ -448,7 +453,7 @@ print_label_chunks(void)
}
static void
print_command_summary()
print_command_summary(void)
{
mvprintw(17, 0, "The following commands are valid here (upper or lower case):");
mvprintw(18, 0, "C = Create D = Delete M = Mount");
@ -460,10 +465,17 @@ print_command_summary()
move(0, 0);
}
static void
clear_wins(void)
{
clear();
wclear(ChunkWin);
}
static int
diskLabel(char *str)
{
int sz, key = 0, first_time = 1;
int sz, key = 0;
Boolean labeling;
char *msg = NULL;
PartInfo *p, *oldp;
@ -480,13 +492,10 @@ diskLabel(char *str)
keypad(stdscr, TRUE);
record_label_chunks(devs);
dialog_clear_norefresh(); clear();
clear();
while (labeling) {
print_label_chunks();
if (first_time) {
print_command_summary();
first_time = 0;
}
print_command_summary();
if (msg) {
attrset(title_attr); mvprintw(23, 0, msg); attrset(A_NORMAL);
clrtoeol();
@ -497,13 +506,15 @@ diskLabel(char *str)
move(23, 0);
clrtoeol();
}
refresh();
key = getch();
switch (toupper(key)) {
int i;
static char _msg[40];
case '\014': /* ^L */
continue;
clear_wins();
break;
case KEY_UP:
case '-':
@ -536,6 +547,7 @@ diskLabel(char *str)
case KEY_F(1):
case '?':
systemDisplayHelp("partition");
clear_wins();
break;
case 'A':
@ -561,6 +573,7 @@ diskLabel(char *str)
(cp ? atoi(cp) : 32) * ONE_MEG, part, FS_BSDFFS, CHUNK_IS_ROOT);
if (!tmp) {
msgConfirm("Unable to create the root partition. Too big?");
clear_wins();
break;
}
tmp->private_data = new_part("/", TRUE, tmp->size);
@ -583,6 +596,7 @@ diskLabel(char *str)
swsize, part, FS_SWAP, 0);
if (!tmp) {
msgConfirm("Unable to create the swap partition. Too big?");
clear_wins();
break;
}
tmp->private_data = 0;
@ -598,6 +612,7 @@ diskLabel(char *str)
msgConfirm("Less than %dMB free for /var - you will need to\n"
"partition your disk manually with a custom install!",
(cp ? atoi(cp) : VAR_MIN_SIZE));
clear_wins();
break;
}
tmp->private_data = new_part("/var", TRUE, tmp->size);
@ -614,6 +629,7 @@ diskLabel(char *str)
if (!sz || sz < (USR_MIN_SIZE * ONE_MEG)) {
msgConfirm("Less than %dMB free for /usr - you will need to\n"
"partition your disk manually with a custom install!", USR_MIN_SIZE);
clear_wins();
break;
}
@ -623,6 +639,7 @@ diskLabel(char *str)
if (!tmp) {
msgConfirm("Unable to create the /usr partition. Not enough space?\n"
"You will need to partition your disk manually with a custom install!");
clear_wins();
break;
}
tmp->private_data = new_part("/usr", TRUE, tmp->size);
@ -652,11 +669,17 @@ diskLabel(char *str)
u_long flags = 0;
sprintf(osize, "%d", sz);
val = msgGetInput(osize, "Please specify the size for new FreeBSD partition in blocks, or\n"
"append a trailing `M' for megabytes (e.g. 20M) or `C' for cylinders.\n\n"
"Space free is %d blocks (%dMB)", sz, sz / ONE_MEG);
if (!val || (size = strtol(val, &cp, 0)) <= 0)
DialogX = 3;
DialogY = 1;
val = msgGetInput(osize,
"Please specify the partition size in blocks or append a trailing M for\n"
"megabytes or C for cylinders. %d blocks (%dMB) are free.",
sz, sz / ONE_MEG);
DialogX = DialogY = 0;
if (!val || (size = strtol(val, &cp, 0)) <= 0) {
clear_wins();
break;
}
if (*cp) {
if (toupper(*cp) == 'M')
@ -666,20 +689,28 @@ diskLabel(char *str)
}
if (size <= FS_MIN_SIZE) {
msgConfirm("The minimum filesystem size is %dMB", FS_MIN_SIZE / ONE_MEG);
clear_wins();
break;
}
type = get_partition_type();
if (type == PART_NONE)
if (type == PART_NONE) {
clear_wins();
beep();
break;
}
if (type == PART_FILESYSTEM) {
if ((p = get_mountpoint(NULL)) == NULL)
if ((p = get_mountpoint(NULL)) == NULL) {
clear_wins();
beep();
break;
}
else if (!strcmp(p->mountpoint, "/"))
flags |= CHUNK_IS_ROOT;
else
flags &= ~CHUNK_IS_ROOT;
} else
}
else
p = NULL;
if ((flags & CHUNK_IS_ROOT)) {
@ -688,6 +719,7 @@ diskLabel(char *str)
"FreeBSD boot code cannot deal with a root partition created\n"
"in that location. Please choose another location or smaller\n"
"size for your root partition and try again!");
clear_wins();
break;
}
if (size < (ROOT_MIN_SIZE * ONE_MEG)) {
@ -703,6 +735,7 @@ diskLabel(char *str)
flags);
if (!tmp) {
msgConfirm("Unable to create the partition. Too big?");
clear_wins();
break;
}
if ((flags & CHUNK_IS_ROOT) && (tmp->flags & CHUNK_PAST_1024)) {
@ -711,6 +744,7 @@ diskLabel(char *str)
"poor location to boot from. Please choose another\n"
"location (or smaller size) for your root partition and try again!");
Delete_Chunk(label_chunk_info[here].c->disk, tmp);
clear_wins();
break;
}
if (type != PART_SWAP) {
@ -723,6 +757,7 @@ diskLabel(char *str)
tmp->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear_wins();
}
break;
@ -767,6 +802,7 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear();
break;
default:
@ -791,7 +827,7 @@ diskLabel(char *str)
safe_free(pi);
label_chunk_info[here].c->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
}
}
else
msg = MSG_NOT_APPLICABLE;
break;
@ -814,6 +850,7 @@ diskLabel(char *str)
}
}
record_label_chunks(devs);
clear();
break;
case 'W':
@ -821,12 +858,10 @@ diskLabel(char *str)
"operation, and it should also be noted that this option is NOT for\n"
"use during new installations but rather for modifying existing ones.\n\n"
"Are you absolutely SURE you want to do this now?")) {
WINDOW *save = savescr();
variable_set2(DISK_LABELLED, "yes");
diskLabelCommit(NULL);
restorescr(save);
}
clear();
break;
case '|':
@ -835,7 +870,6 @@ diskLabel(char *str)
"expected to understand!")) {
int i;
Device **devs;
WINDOW *save = savescr();
dialog_clear();
end_dialog();
@ -851,9 +885,8 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
DialogActive = TRUE;
dialog_clear_norefresh();
restorescr(save);
record_label_chunks(devs);
clear();
}
else
msg = "A most prudent choice!";

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.77 1996/07/31 09:29:35 jkh Exp $
* $Id: sysinstall.h,v 1.78 1996/08/01 10:58:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -513,7 +513,7 @@ extern int mediaSetFTPActive(dialogMenuItem *self);
extern int mediaSetFTPPassive(dialogMenuItem *self);
extern int mediaSetUFS(dialogMenuItem *self);
extern int mediaSetNFS(dialogMenuItem *self);
extern int mediaSetFtpUserPass(dialogMenuItem *self);
extern int mediaSetFTPUserPass(dialogMenuItem *self);
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
extern int mediaGetType(dialogMenuItem *self);
extern Boolean mediaExtractDist(char *dir, int fd);

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: system.c,v 1.64 1996/09/26 21:07:08 pst Exp $
* $Id: system.c,v 1.65 1996/10/01 04:56:34 jkh Exp $
*
* Jordan Hubbard
*
@ -37,8 +37,12 @@
static void
handle_intr(int sig)
{
WINDOW *save = savescr();
if (!msgYesNo("Are you sure you want to abort the installation?"))
systemShutdown(1);
else
restorescr(save);
}
/* Expand a file into a convenient location, nuking it each time */

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: cdrom.c,v 1.21 1996/07/16 17:11:38 jkh Exp $
* $Id: cdrom.c,v 1.22 1996/08/23 07:55:57 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -83,10 +83,12 @@ mediaInitCDROM(Device *dev)
if (!file_readable("/cdrom/cdrom.inf")) {
Mkdir("/cdrom");
if (mount(MOUNT_CD9660, "/cdrom", MNT_RDONLY, (caddr_t) &args) == -1) {
msgConfirm("Error mounting %s on /cdrom: %s (%u)", dev->devname, strerror(errno), errno);
return FALSE;
if (errno != EBUSY) {
msgConfirm("Error mounting %s on /cdrom: %s (%u)", dev->devname, strerror(errno), errno);
return FALSE;
}
}
else if (!file_readable("/cdrom/cdrom.inf")) {
if (!file_readable("/cdrom/cdrom.inf")) {
if (msgYesNo("Warning: The CD currently in the drive is either not a FreeBSD\n"
"CD or it is an older (pre 2.1.5) FreeBSD CD which does not\n"
"have a version number on it. Do you wish to use this CD anyway?")) {

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: dispatch.c,v 1.3 1996/06/26 09:09:27 jkh Exp $
* $Id: dispatch.c,v 1.4 1996/07/02 10:57:51 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -79,7 +79,7 @@ static struct _word {
{ "mediaSetFTPPassive", mediaSetFTPPassive },
{ "mediaSetUFS", mediaSetUFS },
{ "mediaSetNFS", mediaSetNFS },
{ "mediaSetFtpUserPass", mediaSetFtpUserPass },
{ "mediaSetFTPUserPass", mediaSetFTPUserPass },
{ "mediaSetCPIOVerbosity", mediaSetCPIOVerbosity },
{ "mediaGetType", mediaGetType },
{ "optionsEditor", optionsEditor },

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.57 1996/08/03 05:25:56 jkh Exp $
* $Id: label.c,v 1.58 1996/08/03 10:11:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -263,7 +263,12 @@ get_mountpoint(struct chunk *old)
tmp = old->private_data;
else
tmp = NULL;
if (!old) {
DialogX = 13;
DialogY = 17;
}
val = msgGetInput(tmp ? tmp->mountpoint : NULL, "Please specify a mount point for the partition");
DialogX = DialogY = 0;
if (!val || !*val) {
if (!old)
return NULL;
@ -313,7 +318,6 @@ get_partition_type(void)
{
char selection[20];
int i;
WINDOW *save = savescr();
static unsigned char *fs_types[] = {
"FS",
@ -321,12 +325,13 @@ get_partition_type(void)
"Swap",
"A swap partition.",
};
dialog_clear_norefresh();
DialogX = 7;
DialogY = 9;
i = dialog_menu("Please choose a partition type",
"If you want to use this partition for swap space, select Swap.\n"
"If you want to put a filesystem on it, choose FS.",
-1, -1, 2, 2, fs_types, selection, NULL, NULL);
restorescr(save);
DialogX = DialogY = 0;
if (!i) {
if (!strcmp(selection, "FS"))
return PART_FILESYSTEM;
@ -448,7 +453,7 @@ print_label_chunks(void)
}
static void
print_command_summary()
print_command_summary(void)
{
mvprintw(17, 0, "The following commands are valid here (upper or lower case):");
mvprintw(18, 0, "C = Create D = Delete M = Mount");
@ -460,10 +465,17 @@ print_command_summary()
move(0, 0);
}
static void
clear_wins(void)
{
clear();
wclear(ChunkWin);
}
static int
diskLabel(char *str)
{
int sz, key = 0, first_time = 1;
int sz, key = 0;
Boolean labeling;
char *msg = NULL;
PartInfo *p, *oldp;
@ -480,13 +492,10 @@ diskLabel(char *str)
keypad(stdscr, TRUE);
record_label_chunks(devs);
dialog_clear_norefresh(); clear();
clear();
while (labeling) {
print_label_chunks();
if (first_time) {
print_command_summary();
first_time = 0;
}
print_command_summary();
if (msg) {
attrset(title_attr); mvprintw(23, 0, msg); attrset(A_NORMAL);
clrtoeol();
@ -497,13 +506,15 @@ diskLabel(char *str)
move(23, 0);
clrtoeol();
}
refresh();
key = getch();
switch (toupper(key)) {
int i;
static char _msg[40];
case '\014': /* ^L */
continue;
clear_wins();
break;
case KEY_UP:
case '-':
@ -536,6 +547,7 @@ diskLabel(char *str)
case KEY_F(1):
case '?':
systemDisplayHelp("partition");
clear_wins();
break;
case 'A':
@ -561,6 +573,7 @@ diskLabel(char *str)
(cp ? atoi(cp) : 32) * ONE_MEG, part, FS_BSDFFS, CHUNK_IS_ROOT);
if (!tmp) {
msgConfirm("Unable to create the root partition. Too big?");
clear_wins();
break;
}
tmp->private_data = new_part("/", TRUE, tmp->size);
@ -583,6 +596,7 @@ diskLabel(char *str)
swsize, part, FS_SWAP, 0);
if (!tmp) {
msgConfirm("Unable to create the swap partition. Too big?");
clear_wins();
break;
}
tmp->private_data = 0;
@ -598,6 +612,7 @@ diskLabel(char *str)
msgConfirm("Less than %dMB free for /var - you will need to\n"
"partition your disk manually with a custom install!",
(cp ? atoi(cp) : VAR_MIN_SIZE));
clear_wins();
break;
}
tmp->private_data = new_part("/var", TRUE, tmp->size);
@ -614,6 +629,7 @@ diskLabel(char *str)
if (!sz || sz < (USR_MIN_SIZE * ONE_MEG)) {
msgConfirm("Less than %dMB free for /usr - you will need to\n"
"partition your disk manually with a custom install!", USR_MIN_SIZE);
clear_wins();
break;
}
@ -623,6 +639,7 @@ diskLabel(char *str)
if (!tmp) {
msgConfirm("Unable to create the /usr partition. Not enough space?\n"
"You will need to partition your disk manually with a custom install!");
clear_wins();
break;
}
tmp->private_data = new_part("/usr", TRUE, tmp->size);
@ -652,11 +669,17 @@ diskLabel(char *str)
u_long flags = 0;
sprintf(osize, "%d", sz);
val = msgGetInput(osize, "Please specify the size for new FreeBSD partition in blocks, or\n"
"append a trailing `M' for megabytes (e.g. 20M) or `C' for cylinders.\n\n"
"Space free is %d blocks (%dMB)", sz, sz / ONE_MEG);
if (!val || (size = strtol(val, &cp, 0)) <= 0)
DialogX = 3;
DialogY = 1;
val = msgGetInput(osize,
"Please specify the partition size in blocks or append a trailing M for\n"
"megabytes or C for cylinders. %d blocks (%dMB) are free.",
sz, sz / ONE_MEG);
DialogX = DialogY = 0;
if (!val || (size = strtol(val, &cp, 0)) <= 0) {
clear_wins();
break;
}
if (*cp) {
if (toupper(*cp) == 'M')
@ -666,20 +689,28 @@ diskLabel(char *str)
}
if (size <= FS_MIN_SIZE) {
msgConfirm("The minimum filesystem size is %dMB", FS_MIN_SIZE / ONE_MEG);
clear_wins();
break;
}
type = get_partition_type();
if (type == PART_NONE)
if (type == PART_NONE) {
clear_wins();
beep();
break;
}
if (type == PART_FILESYSTEM) {
if ((p = get_mountpoint(NULL)) == NULL)
if ((p = get_mountpoint(NULL)) == NULL) {
clear_wins();
beep();
break;
}
else if (!strcmp(p->mountpoint, "/"))
flags |= CHUNK_IS_ROOT;
else
flags &= ~CHUNK_IS_ROOT;
} else
}
else
p = NULL;
if ((flags & CHUNK_IS_ROOT)) {
@ -688,6 +719,7 @@ diskLabel(char *str)
"FreeBSD boot code cannot deal with a root partition created\n"
"in that location. Please choose another location or smaller\n"
"size for your root partition and try again!");
clear_wins();
break;
}
if (size < (ROOT_MIN_SIZE * ONE_MEG)) {
@ -703,6 +735,7 @@ diskLabel(char *str)
flags);
if (!tmp) {
msgConfirm("Unable to create the partition. Too big?");
clear_wins();
break;
}
if ((flags & CHUNK_IS_ROOT) && (tmp->flags & CHUNK_PAST_1024)) {
@ -711,6 +744,7 @@ diskLabel(char *str)
"poor location to boot from. Please choose another\n"
"location (or smaller size) for your root partition and try again!");
Delete_Chunk(label_chunk_info[here].c->disk, tmp);
clear_wins();
break;
}
if (type != PART_SWAP) {
@ -723,6 +757,7 @@ diskLabel(char *str)
tmp->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear_wins();
}
break;
@ -767,6 +802,7 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
record_label_chunks(devs);
clear();
break;
default:
@ -791,7 +827,7 @@ diskLabel(char *str)
safe_free(pi);
label_chunk_info[here].c->private_free = safe_free;
variable_set2(DISK_LABELLED, "yes");
}
}
else
msg = MSG_NOT_APPLICABLE;
break;
@ -814,6 +850,7 @@ diskLabel(char *str)
}
}
record_label_chunks(devs);
clear();
break;
case 'W':
@ -821,12 +858,10 @@ diskLabel(char *str)
"operation, and it should also be noted that this option is NOT for\n"
"use during new installations but rather for modifying existing ones.\n\n"
"Are you absolutely SURE you want to do this now?")) {
WINDOW *save = savescr();
variable_set2(DISK_LABELLED, "yes");
diskLabelCommit(NULL);
restorescr(save);
}
clear();
break;
case '|':
@ -835,7 +870,6 @@ diskLabel(char *str)
"expected to understand!")) {
int i;
Device **devs;
WINDOW *save = savescr();
dialog_clear();
end_dialog();
@ -851,9 +885,8 @@ diskLabel(char *str)
}
variable_set2(DISK_LABELLED, "yes");
DialogActive = TRUE;
dialog_clear_norefresh();
restorescr(save);
record_label_chunks(devs);
clear();
}
else
msg = "A most prudent choice!";

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.52 1996/08/03 10:11:16 jkh Exp $
* $Id: media.c,v 1.53 1996/09/26 22:07:32 pst Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -259,21 +259,23 @@ mediaSetFTP(dialogMenuItem *self)
static Device ftpDevice;
char *cp, *hostname, *dir;
extern int FtpPort;
static int first_time = 1;
int what;
dialog_clear_norefresh();
cp = variable_get(VAR_FTP_PATH);
if (!(cp && first_time)) {
if (!cp) {
dialog_clear_norefresh();
if (!dmenuOpenSimple(&MenuMediaFTP, FALSE))
return DITEM_FAILURE | DITEM_RECREATE;
else
cp = variable_get(VAR_FTP_PATH);
what = DITEM_RECREATE;
}
if (first_time)
first_time = 0;
else
what = DITEM_RESTORE;
if (!cp) {
dialog_clear_norefresh();
msgConfirm("%s not set! Not setting an FTP installation path, OK?", VAR_FTP_PATH);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
else if (!strcmp(cp, "other")) {
variable_set2(VAR_FTP_PATH, "ftp://");
@ -286,20 +288,20 @@ mediaSetFTP(dialogMenuItem *self)
"Where <path> is relative to the anonymous ftp directory or the\n"
"home directory of the user being logged in as.");
if (!cp || !*cp)
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
if (strncmp("ftp://", cp, 6)) {
msgConfirm("Sorry, %s is an invalid URL!", cp);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
strcpy(ftpDevice.name, cp);
if (!tcpDeviceSelect())
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
if (!mediaDevice || !mediaDevice->init(mediaDevice)) {
if (isDebug())
msgDebug("mediaSetFTP: Net device init failed.\n");
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
hostname = cp + 6;
if ((cp = index(hostname, ':')) != NULL) {
@ -321,7 +323,7 @@ mediaSetFTP(dialogMenuItem *self)
msgConfirm("Cannot resolve hostname `%s'! Are you sure that your\n"
"name server, gateway and network interface are correctly configured?", hostname);
mediaDevice->shutdown(mediaDevice);
return DITEM_FAILURE | DITEM_RECREATE;
return DITEM_FAILURE | what;
}
}
variable_set2(VAR_FTP_HOST, hostname);
@ -334,7 +336,7 @@ mediaSetFTP(dialogMenuItem *self)
ftpDevice.shutdown = mediaShutdownFTP;
ftpDevice.private = mediaDevice; /* Set to network device by tcpDeviceSelect() */
mediaDevice = &ftpDevice;
return DITEM_LEAVE_MENU | DITEM_RECREATE;
return DITEM_SUCCESS | DITEM_LEAVE_MENU | what;
}
int
@ -357,6 +359,7 @@ mediaSetUFS(dialogMenuItem *self)
static Device ufsDevice;
char *cp;
dialog_clear_norefresh();
cp = variable_get_value(VAR_UFS_PATH, "Enter a fully qualified pathname for the directory\n"
"containing the FreeBSD distribution files:");
if (!cp)
@ -378,6 +381,7 @@ mediaSetNFS(dialogMenuItem *self)
static Device nfsDevice;
char *cp, *idx;
dialog_clear_norefresh();
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");
@ -593,15 +597,18 @@ mediaVerify(void)
/* Set the FTP username and password fields */
int
mediaSetFtpUserPass(dialogMenuItem *self)
mediaSetFTPUserPass(dialogMenuItem *self)
{
char *pass;
if (variable_get_value(VAR_FTP_USER, "Please enter the username you wish to login as:"))
dialog_clear_norefresh();
if (variable_get_value(VAR_FTP_USER, "Please enter the username you wish to login as:")) {
dialog_clear_norefresh();
pass = variable_get_value(VAR_FTP_PASS, "Please enter the password for this user:");
}
else
pass = NULL;
return pass ? DITEM_SUCCESS : DITEM_FAILURE;
return (pass ? DITEM_SUCCESS : DITEM_FAILURE) | DITEM_RESTORE;
}
/* Set CPIO verbosity level */

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.41 1996/07/09 14:28:18 jkh Exp $
* $Id: options.c,v 1.42 1996/08/03 10:11:33 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -111,7 +111,7 @@ static Option Options[] = {
{ "Yes to All", "Assume \"Yes\" answers to all non-critical dialogs",
OPT_IS_VAR, NULL, VAR_NO_CONFIRM, varCheck },
{ "FTP username", "Username and password to use instead of anonymous",
OPT_IS_FUNC, mediaSetFtpUserPass, VAR_FTP_USER, varCheck },
OPT_IS_FUNC, mediaSetFTPUserPass, VAR_FTP_USER, varCheck },
{ "Editor", "Which text editor to use during installation",
OPT_IS_VAR, EDITOR_PROMPT, VAR_EDITOR, varCheck },
{ "Tape Blocksize", "Tape media block size in 512 byte blocks",
@ -164,17 +164,22 @@ value_of(Option opt)
return "<unknown>";
}
static void
static int
fire(Option opt)
{
if (opt.type == OPT_IS_FUNC) {
int (*cp)(char *) = opt.data;
int status = 0;
cp(NULL);
if (opt.type == OPT_IS_FUNC) {
int (*cp)(char *) = opt.data, rcode;
rcode = cp(NULL);
if (rcode & (DITEM_RECREATE | DITEM_RESTORE))
status = 1;
}
else if (opt.type == OPT_IS_VAR) {
if (opt.data) {
(void)variable_get_value(opt.aux, opt.data);
status = 1;
}
else if (variable_get(opt.aux))
variable_unset(opt.aux);
@ -183,8 +188,8 @@ fire(Option opt)
}
if (opt.check)
opt.check(opt);
clear();
refresh();
return status;
}
int
@ -239,6 +244,7 @@ optionsEditor(dialogMenuItem *self)
case KEY_F(1):
case '?':
systemDisplayHelp("options");
clear();
break;
case KEY_UP:
@ -265,9 +271,8 @@ optionsEditor(dialogMenuItem *self)
continue;
case ' ':
clear();
fire(Options[currOpt]);
clear();
if (fire(Options[currOpt]))
clear();
continue;
case 'Q':

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.77 1996/07/31 09:29:35 jkh Exp $
* $Id: sysinstall.h,v 1.78 1996/08/01 10:58:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@ -513,7 +513,7 @@ extern int mediaSetFTPActive(dialogMenuItem *self);
extern int mediaSetFTPPassive(dialogMenuItem *self);
extern int mediaSetUFS(dialogMenuItem *self);
extern int mediaSetNFS(dialogMenuItem *self);
extern int mediaSetFtpUserPass(dialogMenuItem *self);
extern int mediaSetFTPUserPass(dialogMenuItem *self);
extern int mediaSetCPIOVerbosity(dialogMenuItem *self);
extern int mediaGetType(dialogMenuItem *self);
extern Boolean mediaExtractDist(char *dir, int fd);

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: system.c,v 1.64 1996/09/26 21:07:08 pst Exp $
* $Id: system.c,v 1.65 1996/10/01 04:56:34 jkh Exp $
*
* Jordan Hubbard
*
@ -37,8 +37,12 @@
static void
handle_intr(int sig)
{
WINDOW *save = savescr();
if (!msgYesNo("Are you sure you want to abort the installation?"))
systemShutdown(1);
else
restorescr(save);
}
/* Expand a file into a convenient location, nuking it each time */