summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--release/sysinstall/config.c59
-rw-r--r--release/sysinstall/devices.c85
-rw-r--r--release/sysinstall/dist.c11
-rw-r--r--release/sysinstall/ftp.c442
-rw-r--r--release/sysinstall/ftp.h9
-rw-r--r--release/sysinstall/install.c11
-rw-r--r--release/sysinstall/label.c8
-rw-r--r--release/sysinstall/main.c5
-rw-r--r--release/sysinstall/media.c8
-rw-r--r--release/sysinstall/media_strategy.c44
-rw-r--r--release/sysinstall/menus.c42
-rw-r--r--release/sysinstall/msg.c3
-rw-r--r--release/sysinstall/sysinstall.h36
-rw-r--r--usr.sbin/sade/config.c59
-rw-r--r--usr.sbin/sade/devices.c85
-rw-r--r--usr.sbin/sade/install.c11
-rw-r--r--usr.sbin/sade/label.c8
-rw-r--r--usr.sbin/sade/main.c5
-rw-r--r--usr.sbin/sade/menus.c42
-rw-r--r--usr.sbin/sade/msg.c3
-rw-r--r--usr.sbin/sade/sade.h36
-rw-r--r--usr.sbin/sysinstall/config.c59
-rw-r--r--usr.sbin/sysinstall/devices.c85
-rw-r--r--usr.sbin/sysinstall/dist.c11
-rw-r--r--usr.sbin/sysinstall/ftp.c442
-rw-r--r--usr.sbin/sysinstall/install.c11
-rw-r--r--usr.sbin/sysinstall/label.c8
-rw-r--r--usr.sbin/sysinstall/main.c5
-rw-r--r--usr.sbin/sysinstall/media.c8
-rw-r--r--usr.sbin/sysinstall/menus.c42
-rw-r--r--usr.sbin/sysinstall/msg.c3
-rw-r--r--usr.sbin/sysinstall/sysinstall.h36
32 files changed, 1082 insertions, 640 deletions
diff --git a/release/sysinstall/config.c b/release/sysinstall/config.c
index c15d364..db73504 100644
--- a/release/sysinstall/config.c
+++ b/release/sysinstall/config.c
@@ -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.2 1995/05/23 18:06:12 jkh Exp $
+ * $Id: config.c,v 1.3 1995/05/24 01:27:08 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -114,7 +114,7 @@ seq_num(Chunk *c1)
}
void
-config_fstab(void)
+configFstab(void)
{
Device **devs;
Disk *disk;
@@ -183,13 +183,49 @@ config_fstab(void)
fclose(fstab);
}
+/*
+ * This sucks in /etc/sysconfig, substitutes anything needing substitution, then
+ * writes it all back out. It's pretty gross and needs re-writing at some point.
+ */
void
-config_sysconfig(void)
+configSysconfig(void)
{
+ FILE *fp;
+ char *lines[5001]; /* Some big number we're not likely to ever reach - I'm being really lazy here, I know */
+ char line[256];
+ Variable *v;
+ int i, nlines = 0;
+
+ fp = fopen("/etc/sysconfig", "r");
+ if (!fp) {
+ msgConfirm("Unable to open /etc/sysconfig file! Things may work\nrather strangely as a result of this.");
+ return;
+ }
+ for (i = 0; i < 5000; i++) {
+ if (!fgets(line, 256, fp))
+ break;
+ lines[nlines++] = strdup(line);
+ }
+ lines[nlines] = NULL;
+ for (v = VarHead; v; v = v->next) {
+ for (i = 0; i < nlines; i++) {
+ }
+ }
+}
+
+int
+configSaverTimeout(char *str)
+{
+ char *val;
+
+ val = msgGetInput("60", "Enter time-out period in seconds for screen saver");
+ if (val)
+ variable_set2("blanktime", val);
+ return 0;
}
void
-config_resolv(void)
+configResolv(void)
{
static Boolean alreadyDone = FALSE;
FILE *fp;
@@ -209,19 +245,28 @@ config_resolv(void)
}
fprintf(fp, "domain\t%s\n", getenv(VAR_DOMAINNAME));
fprintf(fp, "nameserver\t%s\n", getenv(VAR_NAMESERVER));
+ msgNotify("Wrote /etc/resolv.conf");
fclose(fp);
alreadyDone = TRUE;
}
int
-config_packages(char *str)
+configPackages(char *str)
{
+ if (!mediaDevice || mediaDevice->type != DEVICE_TYPE_CDROM) {
+ if (getpid() == 1) {
+ if (!mediaSetCDROM(NULL))
+ return 0;
+ else
+ vsystem("pkg_manage /cdrom");
+ }
+ }
+ vsystem("pkg_manage");
return 0;
}
int
-config_ports(char *str)
+configPorts(char *str)
{
return 0;
}
-
diff --git a/release/sysinstall/devices.c b/release/sysinstall/devices.c
index a1c501c..1083e14 100644
--- a/release/sysinstall/devices.c
+++ b/release/sysinstall/devices.c
@@ -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.27 1995/05/21 18:24:32 jkh Exp $
+ * $Id: devices.c,v 1.28 1995/05/23 02:40:52 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -74,37 +74,38 @@ static struct {
char *name;
char *description;
} device_names[] = {
- { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
- { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
- { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
- { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
- { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
- { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
- { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
- { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
- { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
- { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
- { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
- { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
- { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
- { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
- { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
- { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
- { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
- { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
- { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
- { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
- { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
- { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
- { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
- { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
- { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
- { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
- { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
+ { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
+ { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
+ { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
+ { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
+ { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
+ { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
+ { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
+ { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
+ { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
+ { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
+ { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
+ { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
+ { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
+ { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
+ { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
+ { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
+ { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
+ { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
+ { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
+ { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
+ { DEVICE_TYPE_NETWORK, "ix", "Intel Etherexpress" },
+ { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
+ { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
+ { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
+ { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
{ NULL },
};
@@ -144,7 +145,8 @@ deviceDiskFree(Device *dev)
/* Register a new device in the devices array */
Device *
deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *), Boolean (*get)(char *), void (*close)(Device *), void *private)
+ Boolean (*init)(Device *), int (*get)(char *), Boolean (*close)(Device *, int),
+ void (*shutdown)(Device *), void *private)
{
Device *newdev;
@@ -158,12 +160,13 @@ deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean e
newdev->init = init;
newdev->get = get;
newdev->close = close;
+ newdev->shutdown = shutdown;
newdev->private = private;
Devices[numDevs] = newdev;
Devices[++numDevs] = NULL;
return newdev;
}
-
+
/* Get all device information for devices we have attached */
void
deviceGetAll(void)
@@ -187,7 +190,7 @@ deviceGetAll(void)
msgFatal("Unable to open disk %s", names[i]);
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
- mediaInitUFS, mediaGetUFS, deviceDiskFree, d);
+ mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
msgDebug("Found a device of type disk named: %s\n", names[i]);
}
free(names);
@@ -206,7 +209,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
(void)deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, mediaCloseCDROM, NULL);
+ DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, NULL,
+ mediaShutdownCDROM, NULL);
msgDebug("Found a device of type CDROM named: %s\n", device_names[i].name);
}
break;
@@ -216,7 +220,7 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, mediaCloseTape, NULL);
+ DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, NULL, mediaShutdownTape, NULL);
msgDebug("Found a device of type TAPE named: %s\n", device_names[i].name);
}
break;
@@ -226,7 +230,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, mediaCloseFloppy, NULL);
+ DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, NULL,
+ mediaShutdownFloppy, NULL);
msgDebug("Found a device of type floppy named: %s\n", device_names[i].name);
}
break;
@@ -237,7 +242,7 @@ deviceGetAll(void)
close(fd);
/* The only network devices that have fds associated are serial ones */
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", device_names[i].name);
}
break;
@@ -271,7 +276,7 @@ deviceGetAll(void)
|| !strncmp(ifptr->ifr_name, "lo0", 3))
continue;
deviceRegister(ifptr->ifr_name, ifptr->ifr_name, ifptr->ifr_name,
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", ifptr->ifr_name);
close(s);
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
diff --git a/release/sysinstall/dist.c b/release/sysinstall/dist.c
index 095bb44..37fd908 100644
--- a/release/sysinstall/dist.c
+++ b/release/sysinstall/dist.c
@@ -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.16 1995/05/22 14:10:15 jkh Exp $
+ * $Id: dist.c,v 1.17 1995/05/23 02:40:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -231,7 +231,10 @@ distExtract(char *parent, Distribution *me)
fd = (*mediaDevice->get)(distname);
if (fd != -1) {
status = mediaExtractDist(distname, me[i].my_dir, fd);
- close(fd);
+ if (mediaDevice->close)
+ (*mediaDevice->close)(mediaDevice, fd);
+ else
+ close(fd);
}
else {
if (getenv(NO_CONFIRMATION))
@@ -246,8 +249,8 @@ distExtract(char *parent, Distribution *me)
}
}
}
- if (mediaDevice->close)
- (*mediaDevice->close)(mediaDevice);
+ if (mediaDevice->shutdown)
+ (*mediaDevice->shutdown)(mediaDevice);
mediaDevice = NULL;
return status;
}
diff --git a/release/sysinstall/ftp.c b/release/sysinstall/ftp.c
index 4a908e5..278afa1 100644
--- a/release/sysinstall/ftp.c
+++ b/release/sysinstall/ftp.c
@@ -1,3 +1,15 @@
+/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ *
+ * $Id$
+ *
+ */
+
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -9,228 +21,292 @@
#include <stdarg.h>
#include <string.h>
#include <errno.h>
+#include <ctype.h>
#include "ftp.h"
+#ifndef STANDALONE_FTP
#include "sysinstall.h"
+#endif /*STANDALONE_FTP*/
static void
debug(FTP_t ftp, const char *fmt, ...)
{
- char p[BUFSIZ];
- va_list ap;
- va_start(ap, fmt);
- (void) vsnprintf(p, sizeof p, fmt, ap);
- va_end(ap);
-
-#if 0
- write(ftp->fd_debug,p,strlen(p));
+ char p[BUFSIZ];
+ va_list ap;
+ va_start(ap, fmt);
+ (void) vsnprintf(p, sizeof p, fmt, ap);
+ va_end(ap);
+
+#ifdef STANDALONE_FTP
+ write(ftp->fd_debug,p,strlen(p));
#else
- msgDebug(p);
+ msgDebug(p);
#endif
}
static int
writes(int fd, char *s)
{
- int i = strlen(s);
- if (i != write(fd,s,i))
- return errno ? errno : -1;
- return 0;
+ int i = strlen(s);
+ if (i != write(fd,s,i))
+ return errno ? errno : -1;
+ return 0;
}
static char*
get_a_line(FTP_t ftp)
{
- static char buf[BUFSIZ];
- int i,j;
-
- for(i=0;i<BUFSIZ;) {
- j = read(ftp->fd_ctrl,buf+i,1);
- if (j != 1)
- return 0;
- if (buf[i] == '\r' || buf[i] == '\n') {
- if (!i)
- continue;
- buf[i] = '\0';
- debug(ftp,"LIBFTP: received <%s>\n",buf);
- return buf;
- }
- i++;
+ static char buf[BUFSIZ];
+ int i,j;
+
+ for(i=0;i<BUFSIZ;) {
+ j = read(ftp->fd_ctrl,buf+i,1);
+ if (j != 1)
+ return 0;
+ if (buf[i] == '\r' || buf[i] == '\n') {
+ if (!i)
+ continue;
+ buf[i] = '\0';
+ debug(ftp,"LIBFTP: received <%s>\n",buf);
+ return buf;
}
+ i++;
+ }
+ return buf;
}
-int
-get_a_number(FTP_t ftp)
+static int
+get_a_number(FTP_t ftp, char **q)
{
- char *p;
-
- while(1) {
- p = get_a_line(ftp);
- if (p[3] != ' ' && p[3] != ' ')
- continue;
- return atoi(p);
+ char *p;
+ int i = -1,j;
+
+ while(1) {
+ p = get_a_line(ftp);
+ if (!(isdigit(p[0]) && isdigit(p[1]) && isdigit(p[2])))
+ continue;
+ if (i == -1 && p[3] == '-') {
+ i = atoi(p);
+ continue;
+ }
+ if (p[3] != ' ' && p[3] != '\t')
+ continue;
+ j = atoi(p);
+ if (i == -1) {
+ if (q) *q = p+4;
+ return j;
+ } else if (j == i) {
+ if (q) *q = p+4;
+ return j;
}
+ }
+}
+
+static int
+botch(FTP_t ftp, char *func, char *state)
+{
+ debug(ftp,"LIBFTP: Botch: %s called outside state %s\n",func,state);
+ writes(ftp->fd_ctrl,"QUIT\r\n");
+ close(ftp->fd_ctrl); ftp->fd_ctrl = -1;
+ close(ftp->fd_xfer); ftp->fd_xfer = -1;
+ ftp->state = init;
+ return -1;
}
static int
cmd(FTP_t ftp, const char *fmt, ...)
{
- char p[BUFSIZ];
- int i;
- va_list ap;
- va_start(ap, fmt);
- (void) vsnprintf(p, sizeof p, fmt, ap);
- va_end(ap);
- debug(ftp,"LIBFTP: send <%s>\n",p);
- if (writes(ftp->fd_ctrl,p))
- return -1;
- if (writes(ftp->fd_ctrl,"\r\n"))
- return -1;
- i = get_a_number(ftp);
- debug(ftp, "LIBFTP: got %d\n",i);
- return i;
+ char p[BUFSIZ];
+ int i;
+
+ va_list ap;
+ va_start(ap, fmt);
+ (void) vsnprintf(p, sizeof p, fmt, ap);
+ va_end(ap);
+
+ debug(ftp,"LIBFTP: send <%s>\n",p);
+ strcat(p,"\r\n");
+ if (writes(ftp->fd_ctrl,p))
+ return -1;
+ i = get_a_number(ftp,0);
+ debug(ftp, "LIBFTP: got %d\n",i);
+ return i;
}
FTP_t
FtpInit()
{
- FTP_t ftp;
-
- ftp = malloc(sizeof *ftp);
- if (!ftp)
- return ftp;
- memset(ftp, 0, sizeof *ftp);
- ftp->fd_ctrl = -1;
- ftp->fd_debug = -1;
+ FTP_t ftp;
+
+ ftp = malloc(sizeof *ftp);
+ if (!ftp)
return ftp;
+ memset(ftp, 0, sizeof *ftp);
+ ftp->fd_ctrl = -1;
+ ftp->fd_debug = -1;
+ ftp->state = init;
+ return ftp;
}
-#if 0
+
+#ifdef STANDALONE_FTP
void
FtpDebug(FTP_t ftp, int i)
{
- ftp->fd_debug = i;
+ ftp->fd_debug = i;
}
#endif
+
int
FtpOpen(FTP_t ftp, char *host, char *user, char *passwd)
{
-
- struct hostent *he, hdef;
- struct servent *se, sdef;
- struct sockaddr_in sin;
- int s;
- char a,*p,buf[BUFSIZ];
- unsigned long temp;
-
- if (!user)
- user = "ftp";
-
- if (!passwd)
- passwd = "??@??(FreeBSD:libftp)"; /* XXX */
-
- msgDebug("FtpOpen(ftp, %s, %s, %s)\n", host, user, passwd);
-
- temp = inet_addr(host);
- if (temp != INADDR_NONE)
+ struct hostent *he = NULL;
+ struct sockaddr_in sin;
+ int s;
+ unsigned long temp;
+ extern unsigned long inet_addr(char *);
+ int i;
+
+ if (ftp->state != init)
+ return botch(ftp,"FtpOpen","init");
+
+ if (!user)
+ user = "ftp";
+
+ if (!passwd)
+ passwd = "??@??(FreeBSD:libftp)"; /* XXX */
+
+ debug(ftp,"FtpOpen(ftp, %s, %s, %s)\n", host, user, passwd);
+
+ temp = inet_addr(host);
+ if (temp != INADDR_NONE)
+ {
+ debug(ftp,"Using dotted IP address `%s'\n", host);
+ ftp->addrtype = sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = temp;
+ } else {
+ debug(ftp,"Trying to resolve `%s'\n", host);
+ he = gethostbyname(host);
+ if (!he)
{
- msgDebug("Using dotted IP address `%s'\n", host);
- ftp->addrtype = sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = temp;
- } else {
- msgDebug("Trying to resolve `%s'\n", host);
- he = gethostbyname(host);
- if (!he)
- {
- msgDebug("Lookup of `%s' failed!\n", host);
- return ENOENT;
- }
- ftp->addrtype = sin.sin_family = he->h_addrtype;
- bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
+ debug(ftp,"Lookup of `%s' failed!\n", host);
+ return ENOENT;
}
-
- sin.sin_port = htons(21);
-
- if ((s = socket(he->h_addrtype, SOCK_STREAM, 0)) < 0)
- return s;
-
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- (void)close(s);
- return -1;
- }
-
- ftp->fd_ctrl = s;
-
- debug(ftp, "LIBFTP: open (%d)\n",get_a_number(ftp));
-
- cmd(ftp,"USER %s",user);
- cmd(ftp,"PASS %s",passwd);
- return 0;
-
- fail:
- close(ftp->fd_ctrl);
- ftp->fd_ctrl = -1;
+ ftp->addrtype = sin.sin_family = he->h_addrtype;
+ bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
+ }
+
+ sin.sin_port = htons(21);
+
+ if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
+ {
+ debug("Socket open failed: %s (%i)\n", strerror(errno), errno);
+ return s;
+ }
+
+ if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ debug("Connection failed: %s (%i)\n", strerror(errno), errno);
+ (void)close(s);
return -1;
+ }
+
+ ftp->fd_ctrl = s;
+
+ debug(ftp, "LIBFTP: open (%d)\n",get_a_number(ftp,0));
+
+ i = cmd(ftp,"USER %s",user);
+ i = cmd(ftp,"PASS %s",passwd);
+ ftp->state = isopen;
+ return 0;
+
+ fail:
+ close(ftp->fd_ctrl);
+ ftp->fd_ctrl = -1;
+ return -1;
+}
+
+void
+FtpClose(FTP_t ftp)
+{
+ if (ftp->state != isopen)
+ botch(ftp,"FtpClose","open");
+
+ writes(ftp->fd_ctrl,"QUIT\r\n");
+ close(ftp->fd_ctrl); ftp->fd_ctrl = -1;
+ close(ftp->fd_xfer); ftp->fd_xfer = -1;
+ ftp->state = init;
}
int
FtpChdir(FTP_t ftp, char *dir)
{
- cmd(ftp,"CWD %s",dir);
- return 0;
+ int i;
+ if (ftp->state != isopen)
+ return botch(ftp,"FtpChdir","open");
+ i = cmd(ftp,"CWD %s",dir);
+ return 0;
}
int
FtpGet(FTP_t ftp, char *file)
{
- int fd,i,j,s;
- char p[BUFSIZ],*q;
- unsigned char addr[6];
- struct sockaddr_in sin;
-
- if(ftp->binary) {
- cmd(ftp,"TYPE I");
- } else {
- return -1;
+ int i,s;
+ char *q;
+ unsigned char addr[6];
+ struct sockaddr_in sin;
+
+ if (ftp->state != isopen)
+ return botch(ftp,"FtpGet","open");
+ if(ftp->binary) {
+ i = cmd(ftp,"TYPE I");
+ if (i > 299)
+ return -1;
+ } else {
+ return -1;
+ }
+ if(ftp->passive) {
+ if (writes(ftp->fd_ctrl,"PASV\r\n"))
+ return -1;
+ i = get_a_number(ftp,&q);
+ if (i != 227)
+ return -1;
+ while (*q && !isdigit(*q))
+ q++;
+ if (!*q)
+ return -1;
+ q--;
+ for(i=0;i<6;i++) {
+ q++;
+ addr[i] = strtol(q,&q,10);
}
- if(ftp->passive) {
- if (writes(ftp->fd_ctrl,"PASV\r\n"))
- return -1;
- q = get_a_line(ftp);
- if (strncmp(q,"227 ",4))
- return -1;
- q = strchr(q,'(');
- if (!q)
- return -1;
- for(i=0;i<6;i++) {
- q++;
- addr[i] = strtol(q,&q,10);
- debug(ftp,"ADDR[%d] = %d (%c)\n",i,addr[i],*q);
- }
- if (*q != ')')
- return -1;
-
- sin.sin_family = ftp->addrtype;
- bcopy(addr, (char *)&sin.sin_addr, 4);
- bcopy(addr+4, (char *)&sin.sin_port, 2);
- if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
- return -1;
- debug(ftp,"Getsocket = %d\n",s);
-
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- (void)close(s);
- debug(ftp,"connect, errno = %d\n",errno);
- return -1;
- }
- cmd(ftp,"RETR %s",file);
- return s;
- } else {
- return -1;
+
+ sin.sin_family = ftp->addrtype;
+ bcopy(addr, (char *)&sin.sin_addr, 4);
+ bcopy(addr+4, (char *)&sin.sin_port, 2);
+ if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
+ return -1;
+
+ if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ (void)close(s);
+ debug(ftp,"connect, errno = %d\n",errno);
+ return -1;
}
+
+ i = cmd(ftp,"RETR %s",file);
+ if (i > 299)
+ return -1;
+ ftp->state = xfer;
+ return s;
+ } else {
+ return -1;
+ }
}
int
FtpEOF(FTP_t ftp)
{
- get_a_number(ftp);
+ if (ftp->state != xfer)
+ return botch(ftp,"FtpEOF","xfer");
+ ftp->state = isopen;
+ return get_a_number(ftp,0);
}
#ifdef STANDALONE_FTP
@@ -240,25 +316,35 @@ FtpEOF(FTP_t ftp)
int
main(int argc, char **argv)
{
- FTP_t ftp;
- int i;
- char c;
-
- ftp = FtpInit();
- if (!ftp) err(1,"FtpInit()");
-
- FtpDebug(ftp,1);
- i = FtpOpen(ftp, "ref", "ftp", "phk-libftp@");
- if (i) err(1,"FtpOpen(%d)",i);
- FtpBinary(ftp,1);
- FtpPassive(ftp,1);
- FtpChdir(ftp,"/pub");
- FtpChdir(ftp,"CTM");
- i = FtpGet(ftp,"README_CTM_MOVED");
- while(1 == read(i,&c,1))
- putchar(c);
- FtpEOF(ftp);
- return 0;
+ FTP_t ftp;
+ int i;
+ char c;
+
+ ftp = FtpInit();
+ if (!ftp) err(1,"FtpInit()");
+
+ FtpDebug(ftp,1);
+ i = FtpOpen(ftp, "ref.tfs.com", "ftp", "phk-libftp@");
+ if (i) err(1,"FtpOpen(%d)",i);
+ FtpBinary(ftp,1);
+ FtpPassive(ftp,1);
+ FtpChdir(ftp,"/pub");
+ FtpChdir(ftp,"CTM");
+ i = FtpGet(ftp,"README_CTM_MOVED");
+ while(1 == read(i,&c,1))
+ putchar(c);
+ FtpEOF(ftp);
+ FtpClose(ftp);
+ i = FtpOpen(ftp, "freefall.cdrom.com", "ftp", "phk-libftp@");
+ FtpBinary(ftp,1);
+ FtpPassive(ftp,1);
+ FtpChdir(ftp,"/pub");
+ FtpChdir(ftp,"FreeBSD");
+ i = FtpGet(ftp,"README");
+ while(1 == read(i,&c,1))
+ putchar(c);
+ FtpEOF(ftp);
+ return 0;
}
#endif /*STANDALONE_FTP*/
diff --git a/release/sysinstall/ftp.h b/release/sysinstall/ftp.h
index 71d5bce..31e348f 100644
--- a/release/sysinstall/ftp.h
+++ b/release/sysinstall/ftp.h
@@ -1,5 +1,7 @@
typedef struct {
+ enum {init, isopen, xfer} state;
int fd_ctrl;
+ int fd_xfer;
int fd_debug;
int binary;
int passive;
@@ -12,12 +14,9 @@ FTP_t FtpInit();
int FtpOpen(FTP_t, char *host, char *user, char *passwd);
#define FtpBinary(ftp,bool) { (ftp)->binary = (bool); }
#define FtpPassive(ftp,bool) { (ftp)->passive = (bool); }
+#ifndef STANDALONE_FTP
#define FtpDebug(ftp, bool) { (ftp)->fd_debug = (bool); }
-/*
-void FtpBinary(FTP_t, int);
-void FtpPassive(FTP_t, int);
-void FtpDebug(FTP_t, int);
-*/
+#endif
int FtpChdir(FTP_t, char *);
int FtpGet(FTP_t, char *);
int FtpEOF(FTP_t);
diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c
index 8a0f1fe..8519e5e 100644
--- a/release/sysinstall/install.c
+++ b/release/sysinstall/install.c
@@ -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.49 1995/05/23 18:06:13 jkh Exp $
+ * $Id: install.c,v 1.50 1995/05/24 01:27:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -208,9 +208,9 @@ installFinal(void)
if (alreadyDone)
return;
- config_fstab();
- config_sysconfig();
- config_resolv();
+ configFstab();
+ configSysconfig();
+ configResolv();
do_final_setup();
alreadyDone = TRUE;
SystemWasInstalled = TRUE;
@@ -346,7 +346,6 @@ cpio_extract(void)
int i, j, zpid, cpid, pfd[2];
Boolean onCDROM = FALSE;
-#if 0
if (mediaDevice && mediaDevice->type == DEVICE_TYPE_CDROM) {
if (mediaDevice->init) {
if ((*mediaDevice->init)(mediaDevice)) {
@@ -358,7 +357,7 @@ cpio_extract(void)
}
}
}
-#endif
+
tryagain:
while (CpioFD == -1) {
msgConfirm("Please Insert CPIO floppy in floppy drive 0");
diff --git a/release/sysinstall/label.c b/release/sysinstall/label.c
index a06649b..84cd81e 100644
--- a/release/sysinstall/label.c
+++ b/release/sysinstall/label.c
@@ -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.21 1995/05/22 14:10:20 jkh Exp $
+ * $Id: label.c,v 1.22 1995/05/23 02:41:07 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -560,6 +560,12 @@ diskLabelEditor(char *str)
p = get_mountpoint(label_chunk_info[here].c);
if (p) {
p->newfs = FALSE;
+ if (label_chunk_info[here].type == PART_FAT
+ && (!strcmp(p->mountpoint, "/") || !strcmp(p->mountpoint, "/usr")
+ || !strcmp(p->mountpoint, "/var"))) {
+ msgConfirm("%s is an invalid mount point for a DOS partition!", p->mountpoint);
+ strcpy(p->mountpoint, "/bogus");
+ }
record_label_chunks();
}
break;
diff --git a/release/sysinstall/main.c b/release/sysinstall/main.c
index dfcf717..e106250 100644
--- a/release/sysinstall/main.c
+++ b/release/sysinstall/main.c
@@ -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.7 1995/05/16 11:37:17 jkh Exp $
+ * $Id: main.c,v 1.8 1995/05/17 14:39:49 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -64,6 +64,9 @@ main(int argc, char **argv)
/* Default to English */
lang_set_English(NULL);
+ /* Default to passive mode ftp since it's the only thing we currently support :-( */
+ variable_set2("ftpPassive", "yes");
+
/* Begin user dialog at outer menu */
while (1) {
choice = scroll = curr = max = 0;
diff --git a/release/sysinstall/media.c b/release/sysinstall/media.c
index 63a7019..e3e6a0b 100644
--- a/release/sysinstall/media.c
+++ b/release/sysinstall/media.c
@@ -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.14 1995/05/22 14:10:21 jkh Exp $
+ * $Id: media.c,v 1.15 1995/05/23 02:41:09 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -86,9 +86,7 @@ mediaSetCDROM(char *str)
/* This may need to be extended a little, but the basic idea is sound */
strcpy(bootCD.name, "bootCD");
bootCD.type = DEVICE_TYPE_CDROM;
- bootCD.init = NULL;
bootCD.get = mediaGetCDROM;
- bootCD.close = NULL;
mediaDevice = &bootCD;
return 1;
}
@@ -197,7 +195,7 @@ mediaSetDOS(char *str)
if (c1->type == fat) {
/* Got one! */
mediaDevice = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
- mediaInitDOS, mediaGetDOS, mediaCloseDOS, NULL);
+ mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
break;
}
@@ -267,7 +265,7 @@ mediaSetFTP(char *str)
ftpDevice.type = DEVICE_TYPE_NETWORK;
ftpDevice.init = mediaInitFTP;
ftpDevice.get = mediaGetFTP;
- ftpDevice.close = mediaCloseFTP;
+ ftpDevice.shutdown = mediaShutdownFTP;
ftpDevice.private = devp;
mediaDevice = &ftpDevice;
return 1;
diff --git a/release/sysinstall/media_strategy.c b/release/sysinstall/media_strategy.c
index e60d08a..4f2b305 100644
--- a/release/sysinstall/media_strategy.c
+++ b/release/sysinstall/media_strategy.c
@@ -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_strategy.c,v 1.13 1995/05/23 18:06:14 jkh Exp $
+ * $Id: media_strategy.c,v 1.14 1995/05/24 01:27:11 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -68,7 +68,7 @@
#undef CD9660
#undef NFS
-#define MAX_ATTRIBS 20
+#define MAX_ATTRIBS 200
#define MAX_NAME 511
#define MAX_VALUE 4095
@@ -189,10 +189,10 @@ attr_match(struct attribs *attr, char *name)
{
int n = 0;
- while((strcmp(attr[n].name, name)!=0) && (n < num_attribs) && (n < 20))
+ while((strcasecmp(attr[n].name, name)!=0) && (n < num_attribs) && (n < 20))
n++;
- if (strcmp(attr[n].name, name)==0)
+ if (strcasecmp(attr[n].name, name)==0)
return((const char *) attr[n].value);
return NULL;
@@ -345,9 +345,9 @@ mediaGetCDROM(char *dist)
}
void
-mediaCloseCDROM(Device *dev)
+mediaShutdownCDROM(Device *dev)
{
- msgDebug("In mediaCloseCDROM\n");
+ msgDebug("In mediaShutdownCDROM\n");
if (unmount("/cdrom", 0) != 0)
msgConfirm("Could not unmount the CDROM: %s\n", strerror(errno));
msgDebug("Unmount returned\n");
@@ -388,7 +388,7 @@ mediaGetFloppy(char *dist)
}
void
-mediaCloseFloppy(Device *dev)
+mediaShutdownFloppy(Device *dev)
{
return;
}
@@ -405,6 +405,7 @@ mediaInitNetwork(Device *dev)
int i;
char *rp;
+ configResolv();
if (!strncmp("cuaa", dev->name, 4)) {
if (tcpStartPPP()) {
msgConfirm("You have selected a serial device as your network installation device.\nThe PPP dialer is now running on the 3rd screen (type ALT-F3 to interact\nwith it) and should be used to establish the link BEFORE YOU HIT RETURN\nhere! Once you hit return in this screen (type ALT-F1 to return to this\nscreen from the PPP screen) the installation will assume that your link\nis set up and begin transfering the distributions over PPP.");
@@ -432,12 +433,10 @@ mediaInitNetwork(Device *dev)
rp = getenv(VAR_GATEWAY);
if (!rp)
- msgConfirm("No gateway has been set. You will not be able to access machines\n
+ msgConfirm("No gateway has been set. You will not be able to access hosts\n
not on the local network\n");
else
vsystem("route add default %s", rp);
-
- config_resolv();
return TRUE;
}
@@ -448,13 +447,13 @@ mediaGetTape(char *dist)
}
void
-mediaCloseTape(Device *dev)
+mediaShutdownTape(Device *dev)
{
return;
}
void
-mediaCloseNetwork(Device *dev)
+mediaShutdownNetwork(Device *dev)
{
return;
}
@@ -465,7 +464,7 @@ Boolean
mediaInitFTP(Device *dev)
{
int i;
- char *url, *hostname, *dir, *dir_p;
+ char *url, *hostname, *dir;
char *my_name, email[BUFSIZ];
Device *netDevice = (Device *)dev->private;
@@ -498,6 +497,7 @@ mediaInitFTP(Device *dev)
*(dir++) = '\0';
msgDebug("hostname = `%s'\n", hostname);
msgDebug("dir = `%s'\n", dir);
+ msgNotify("Looking up %s..", hostname);
if ((gethostbyname(hostname) == NULL) && (inet_addr(hostname) == INADDR_NONE)) {
msgConfirm("Cannot resolve hostname `%s'!\n", hostname);
return FALSE;
@@ -506,6 +506,7 @@ mediaInitFTP(Device *dev)
snprintf(email, BUFSIZ, "installer@%s", my_name);
msgDebug("Using fake e-mail `%s'\n", email);
+ msgNotify("Logging in as anonymous.");
if ((i = FtpOpen(ftp, hostname, "anonymous", email)) != 0) {
msgConfirm("Couldn't open FTP connection to %s: %s (%u)\n", hostname, strerror(i), i);
return FALSE;
@@ -514,12 +515,10 @@ mediaInitFTP(Device *dev)
if (getenv("ftpPassive"))
FtpPassive(ftp, 1);
FtpBinary(ftp, 1);
- FtpChdir(ftp, "/");
- while ((dir_p = index(dir, '/')) != NULL) {
- *dir_p = '\0';
+ msgNotify("CD to distribution in ~ftp/%s", dir ? dir : "");
+ if (*dir != '\0')
FtpChdir(ftp, dir);
- dir = ++dir_p;
- }
+ msgDebug("leaving mediaInitFTP!\n");
return TRUE;
}
@@ -532,16 +531,19 @@ mediaGetFTP(char *dist)
const char *tmp;
struct attribs *dist_attr;
+ msgNotify("Attempting to get distribution `%s' over FTP\n", dist);
dist_attr = safe_malloc(sizeof(struct attribs) * MAX_ATTRIBS);
snprintf(buf, PATH_MAX, "/stand/info/%s.inf", dist);
+ msgDebug("Parsing attributes file\n");
if (attr_parse(&dist_attr, buf) == 0)
{
msgConfirm("Cannot load information file for distribution\n");
return -1;
}
+ msgDebug("Looking for attribute `pieces'\n");
tmp = attr_match(dist_attr, "pieces");
numchunks = atoi(tmp);
msgDebug("Attempting to extract distribution from %u files\n", numchunks);
@@ -596,7 +598,7 @@ mediaGetFTP(char *dist)
}
void
-mediaCloseFTP(Device *dev)
+mediaShutdownFTP(Device *dev)
{
}
@@ -612,7 +614,7 @@ mediaGetUFS(char *dist)
return -1;
}
-/* UFS has no close routine since this is handled at the device level */
+/* UFS has no Shutdown routine since this is handled at the device level */
Boolean
@@ -628,6 +630,6 @@ mediaGetDOS(char *dist)
}
void
-mediaCloseDOS(Device *dev)
+mediaShutdownDOS(Device *dev)
{
}
diff --git a/release/sysinstall/menus.c b/release/sysinstall/menus.c
index 6b40740..886f2a1 100644
--- a/release/sysinstall/menus.c
+++ b/release/sysinstall/menus.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: menus.c,v 1.25 1995/05/23 02:41:13 jkh Exp $
+ * $Id: menus.c,v 1.26 1995/05/24 01:27:12 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -644,17 +644,43 @@ your FreeBSD system more generally usable and which may be selected\n\
from the menu below. When you're done, select Cancel.",
"Press F1 for more information on these options",
"configure.hlp",
- { { "Time Zone", "Set which time zone you're in",
- DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
- { "Add User", "Add users to the system",
+ { { "Add User", "Add users to the system",
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
- { "Root Pass", "Set the system manager's password",
- DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Time Zone", "Set which time zone you're in",
+ DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
{ "Packages", "Install extra FreeBSD packaged software",
- DMENU_CALL, config_packages, 0, 1 },
+ DMENU_CALL, configPackages, 0, 1 },
{ "Ports", "Enable the FreeBSD Ports Collection from CD",
- DMENU_CALL, config_ports, 0, 1 },
+ DMENU_CALL, configPorts, 0, 1 },
+ { "Root Password", "Set the system manager's password",
+ DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Screen", "Customize system console behavior",
+ DMENU_SUBMENU, &MenuSyscons, 0, 0 },
+ { "Sysconfig", "Edit the system configuration file (with vi)",
+ DMENU_SYSTEM_COMMAND, "vi /etc/sysconfig", 0, 0 },
{ "XFree86", "Configure XFree86 (if installed)",
DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin xf86config", 0, 0 },
{ NULL } },
};
+
+DMenu MenuSyscons = {
+ DMENU_NORMAL_TYPE,
+ "System Console Configuration",
+ "The default system console driver for FreeBSD (syscons) has a\n\
+number of configuration options which may be set according to\n\
+your preference. When you are done setting configuration options,\n\
+select Cancel.",
+ NULL,
+ NULL,
+ { { "blank", "Screen-blanking saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Green", "\"green\" power saver (if supported by monitor)",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Snake", "\"snake\" screen saver",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Star", "\"twinkling stars\" screen saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Timeout", "Set screen saver timeout interval",
+ DMENU_CALL, configSaverTimeout, 0, 0 },
+ { NULL } },
+};
diff --git a/release/sysinstall/msg.c b/release/sysinstall/msg.c
index b2f4baf..a90c50f 100644
--- a/release/sysinstall/msg.c
+++ b/release/sysinstall/msg.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: msg.c,v 1.22 1995/05/22 14:10:25 jkh Exp $
+ * $Id: msg.c,v 1.23 1995/05/23 02:41:15 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -100,6 +100,7 @@ msgInfo(char *fmt, ...)
attrset(A_REVERSE);
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, line);
attrset(attrs);
+ move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
refresh();
if (OnVTY) {
msgDebug("Information: `%s'\n", errstr);
diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h
index 7e9f83e..b8ea33a 100644
--- a/release/sysinstall/sysinstall.h
+++ b/release/sysinstall/sysinstall.h
@@ -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.28 1995/05/23 18:06:16 jkh Exp $
+ * $Id: sysinstall.h,v 1.29 1995/05/24 01:27:14 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -159,8 +159,9 @@ typedef struct _device {
DeviceType type;
Boolean enabled;
Boolean (*init)(struct _device *);
- Boolean (*get)(char *fname);
- void (*close)(struct _device *);
+ int (*get)(char *fname);
+ Boolean (*close)(struct _device *, int fd);
+ void (*shutdown)(struct _device *);
void *private;
} Device;
@@ -216,6 +217,7 @@ extern DMenu MenuMediaFloppy; /* Floppy media menu */
extern DMenu MenuMediaFTP; /* FTP media menu */
extern DMenu MenuMediaTape; /* Tape media menu */
extern DMenu MenuNetworkDevice; /* Network device menu */
+extern DMenu MenuSyscons; /* System console configuration menu */
extern DMenu MenuInstall; /* Installation menu */
extern DMenu MenuInstallType; /* Installation type menu */
extern DMenu MenuDistributions; /* Distribution menu */
@@ -238,11 +240,12 @@ extern void command_shell_add(char *key, char *fmt, ...);
extern void command_func_add(char *key, commandFunc func, void *data);
/* config.c */
-extern void config_fstab(void);
-extern void config_sysconfig(void);
-extern void config_resolv(void);
-extern int config_ports(char *str);
-extern int config_packages(char *str);
+extern void 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);
/* decode.c */
extern DMenuItem *decode(DMenu *menu, char *name);
@@ -256,8 +259,9 @@ extern Device **deviceFind(char *name, DeviceType type);
extern int deviceCount(Device **devs);
extern Device *new_device(char *name);
extern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *mediadev), Boolean (*get)(char *distname),
- void (*close)(Device *mediadev), void *private);
+ Boolean (*init)(Device *mediadev), int (*get)(char *distname),
+ Boolean (*close)(Device *mediadev, int fd), void (*shutDown)(Device *mediadev),
+ void *private);
/* disks.c */
extern int diskPartitionEditor(char *unused);
@@ -338,12 +342,12 @@ extern int mediaGetFloppy(char *dist);
extern int mediaGetFTP(char *dist);
extern int mediaGetTape(char *dist);
extern int mediaGetUFS(char *dist);
-extern void mediaCloseCDROM(Device *dev);
-extern void mediaCloseDOS(Device *dev);
-extern void mediaCloseFTP(Device *dev);
-extern void mediaCloseFloppy(Device *dev);
-extern void mediaCloseNetwork(Device *dev);
-extern void mediaCloseTape(Device *dev);
+extern void mediaShutdownCDROM(Device *dev);
+extern void mediaShutdownDOS(Device *dev);
+extern void mediaShutdownFTP(Device *dev);
+extern void mediaShutdownFloppy(Device *dev);
+extern void mediaShutdownNetwork(Device *dev);
+extern void mediaShutdownTape(Device *dev);
/* misc.c */
extern Boolean file_readable(char *fname);
diff --git a/usr.sbin/sade/config.c b/usr.sbin/sade/config.c
index c15d364..db73504 100644
--- a/usr.sbin/sade/config.c
+++ b/usr.sbin/sade/config.c
@@ -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.2 1995/05/23 18:06:12 jkh Exp $
+ * $Id: config.c,v 1.3 1995/05/24 01:27:08 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -114,7 +114,7 @@ seq_num(Chunk *c1)
}
void
-config_fstab(void)
+configFstab(void)
{
Device **devs;
Disk *disk;
@@ -183,13 +183,49 @@ config_fstab(void)
fclose(fstab);
}
+/*
+ * This sucks in /etc/sysconfig, substitutes anything needing substitution, then
+ * writes it all back out. It's pretty gross and needs re-writing at some point.
+ */
void
-config_sysconfig(void)
+configSysconfig(void)
{
+ FILE *fp;
+ char *lines[5001]; /* Some big number we're not likely to ever reach - I'm being really lazy here, I know */
+ char line[256];
+ Variable *v;
+ int i, nlines = 0;
+
+ fp = fopen("/etc/sysconfig", "r");
+ if (!fp) {
+ msgConfirm("Unable to open /etc/sysconfig file! Things may work\nrather strangely as a result of this.");
+ return;
+ }
+ for (i = 0; i < 5000; i++) {
+ if (!fgets(line, 256, fp))
+ break;
+ lines[nlines++] = strdup(line);
+ }
+ lines[nlines] = NULL;
+ for (v = VarHead; v; v = v->next) {
+ for (i = 0; i < nlines; i++) {
+ }
+ }
+}
+
+int
+configSaverTimeout(char *str)
+{
+ char *val;
+
+ val = msgGetInput("60", "Enter time-out period in seconds for screen saver");
+ if (val)
+ variable_set2("blanktime", val);
+ return 0;
}
void
-config_resolv(void)
+configResolv(void)
{
static Boolean alreadyDone = FALSE;
FILE *fp;
@@ -209,19 +245,28 @@ config_resolv(void)
}
fprintf(fp, "domain\t%s\n", getenv(VAR_DOMAINNAME));
fprintf(fp, "nameserver\t%s\n", getenv(VAR_NAMESERVER));
+ msgNotify("Wrote /etc/resolv.conf");
fclose(fp);
alreadyDone = TRUE;
}
int
-config_packages(char *str)
+configPackages(char *str)
{
+ if (!mediaDevice || mediaDevice->type != DEVICE_TYPE_CDROM) {
+ if (getpid() == 1) {
+ if (!mediaSetCDROM(NULL))
+ return 0;
+ else
+ vsystem("pkg_manage /cdrom");
+ }
+ }
+ vsystem("pkg_manage");
return 0;
}
int
-config_ports(char *str)
+configPorts(char *str)
{
return 0;
}
-
diff --git a/usr.sbin/sade/devices.c b/usr.sbin/sade/devices.c
index a1c501c..1083e14 100644
--- a/usr.sbin/sade/devices.c
+++ b/usr.sbin/sade/devices.c
@@ -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.27 1995/05/21 18:24:32 jkh Exp $
+ * $Id: devices.c,v 1.28 1995/05/23 02:40:52 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -74,37 +74,38 @@ static struct {
char *name;
char *description;
} device_names[] = {
- { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
- { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
- { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
- { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
- { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
- { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
- { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
- { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
- { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
- { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
- { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
- { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
- { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
- { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
- { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
- { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
- { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
- { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
- { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
- { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
- { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
- { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
- { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
- { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
- { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
- { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
- { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
+ { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
+ { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
+ { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
+ { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
+ { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
+ { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
+ { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
+ { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
+ { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
+ { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
+ { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
+ { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
+ { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
+ { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
+ { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
+ { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
+ { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
+ { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
+ { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
+ { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
+ { DEVICE_TYPE_NETWORK, "ix", "Intel Etherexpress" },
+ { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
+ { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
+ { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
+ { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
{ NULL },
};
@@ -144,7 +145,8 @@ deviceDiskFree(Device *dev)
/* Register a new device in the devices array */
Device *
deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *), Boolean (*get)(char *), void (*close)(Device *), void *private)
+ Boolean (*init)(Device *), int (*get)(char *), Boolean (*close)(Device *, int),
+ void (*shutdown)(Device *), void *private)
{
Device *newdev;
@@ -158,12 +160,13 @@ deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean e
newdev->init = init;
newdev->get = get;
newdev->close = close;
+ newdev->shutdown = shutdown;
newdev->private = private;
Devices[numDevs] = newdev;
Devices[++numDevs] = NULL;
return newdev;
}
-
+
/* Get all device information for devices we have attached */
void
deviceGetAll(void)
@@ -187,7 +190,7 @@ deviceGetAll(void)
msgFatal("Unable to open disk %s", names[i]);
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
- mediaInitUFS, mediaGetUFS, deviceDiskFree, d);
+ mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
msgDebug("Found a device of type disk named: %s\n", names[i]);
}
free(names);
@@ -206,7 +209,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
(void)deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, mediaCloseCDROM, NULL);
+ DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, NULL,
+ mediaShutdownCDROM, NULL);
msgDebug("Found a device of type CDROM named: %s\n", device_names[i].name);
}
break;
@@ -216,7 +220,7 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, mediaCloseTape, NULL);
+ DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, NULL, mediaShutdownTape, NULL);
msgDebug("Found a device of type TAPE named: %s\n", device_names[i].name);
}
break;
@@ -226,7 +230,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, mediaCloseFloppy, NULL);
+ DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, NULL,
+ mediaShutdownFloppy, NULL);
msgDebug("Found a device of type floppy named: %s\n", device_names[i].name);
}
break;
@@ -237,7 +242,7 @@ deviceGetAll(void)
close(fd);
/* The only network devices that have fds associated are serial ones */
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", device_names[i].name);
}
break;
@@ -271,7 +276,7 @@ deviceGetAll(void)
|| !strncmp(ifptr->ifr_name, "lo0", 3))
continue;
deviceRegister(ifptr->ifr_name, ifptr->ifr_name, ifptr->ifr_name,
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", ifptr->ifr_name);
close(s);
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c
index 8a0f1fe..8519e5e 100644
--- a/usr.sbin/sade/install.c
+++ b/usr.sbin/sade/install.c
@@ -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.49 1995/05/23 18:06:13 jkh Exp $
+ * $Id: install.c,v 1.50 1995/05/24 01:27:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -208,9 +208,9 @@ installFinal(void)
if (alreadyDone)
return;
- config_fstab();
- config_sysconfig();
- config_resolv();
+ configFstab();
+ configSysconfig();
+ configResolv();
do_final_setup();
alreadyDone = TRUE;
SystemWasInstalled = TRUE;
@@ -346,7 +346,6 @@ cpio_extract(void)
int i, j, zpid, cpid, pfd[2];
Boolean onCDROM = FALSE;
-#if 0
if (mediaDevice && mediaDevice->type == DEVICE_TYPE_CDROM) {
if (mediaDevice->init) {
if ((*mediaDevice->init)(mediaDevice)) {
@@ -358,7 +357,7 @@ cpio_extract(void)
}
}
}
-#endif
+
tryagain:
while (CpioFD == -1) {
msgConfirm("Please Insert CPIO floppy in floppy drive 0");
diff --git a/usr.sbin/sade/label.c b/usr.sbin/sade/label.c
index a06649b..84cd81e 100644
--- a/usr.sbin/sade/label.c
+++ b/usr.sbin/sade/label.c
@@ -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.21 1995/05/22 14:10:20 jkh Exp $
+ * $Id: label.c,v 1.22 1995/05/23 02:41:07 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -560,6 +560,12 @@ diskLabelEditor(char *str)
p = get_mountpoint(label_chunk_info[here].c);
if (p) {
p->newfs = FALSE;
+ if (label_chunk_info[here].type == PART_FAT
+ && (!strcmp(p->mountpoint, "/") || !strcmp(p->mountpoint, "/usr")
+ || !strcmp(p->mountpoint, "/var"))) {
+ msgConfirm("%s is an invalid mount point for a DOS partition!", p->mountpoint);
+ strcpy(p->mountpoint, "/bogus");
+ }
record_label_chunks();
}
break;
diff --git a/usr.sbin/sade/main.c b/usr.sbin/sade/main.c
index dfcf717..e106250 100644
--- a/usr.sbin/sade/main.c
+++ b/usr.sbin/sade/main.c
@@ -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.7 1995/05/16 11:37:17 jkh Exp $
+ * $Id: main.c,v 1.8 1995/05/17 14:39:49 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -64,6 +64,9 @@ main(int argc, char **argv)
/* Default to English */
lang_set_English(NULL);
+ /* Default to passive mode ftp since it's the only thing we currently support :-( */
+ variable_set2("ftpPassive", "yes");
+
/* Begin user dialog at outer menu */
while (1) {
choice = scroll = curr = max = 0;
diff --git a/usr.sbin/sade/menus.c b/usr.sbin/sade/menus.c
index 6b40740..886f2a1 100644
--- a/usr.sbin/sade/menus.c
+++ b/usr.sbin/sade/menus.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: menus.c,v 1.25 1995/05/23 02:41:13 jkh Exp $
+ * $Id: menus.c,v 1.26 1995/05/24 01:27:12 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -644,17 +644,43 @@ your FreeBSD system more generally usable and which may be selected\n\
from the menu below. When you're done, select Cancel.",
"Press F1 for more information on these options",
"configure.hlp",
- { { "Time Zone", "Set which time zone you're in",
- DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
- { "Add User", "Add users to the system",
+ { { "Add User", "Add users to the system",
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
- { "Root Pass", "Set the system manager's password",
- DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Time Zone", "Set which time zone you're in",
+ DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
{ "Packages", "Install extra FreeBSD packaged software",
- DMENU_CALL, config_packages, 0, 1 },
+ DMENU_CALL, configPackages, 0, 1 },
{ "Ports", "Enable the FreeBSD Ports Collection from CD",
- DMENU_CALL, config_ports, 0, 1 },
+ DMENU_CALL, configPorts, 0, 1 },
+ { "Root Password", "Set the system manager's password",
+ DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Screen", "Customize system console behavior",
+ DMENU_SUBMENU, &MenuSyscons, 0, 0 },
+ { "Sysconfig", "Edit the system configuration file (with vi)",
+ DMENU_SYSTEM_COMMAND, "vi /etc/sysconfig", 0, 0 },
{ "XFree86", "Configure XFree86 (if installed)",
DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin xf86config", 0, 0 },
{ NULL } },
};
+
+DMenu MenuSyscons = {
+ DMENU_NORMAL_TYPE,
+ "System Console Configuration",
+ "The default system console driver for FreeBSD (syscons) has a\n\
+number of configuration options which may be set according to\n\
+your preference. When you are done setting configuration options,\n\
+select Cancel.",
+ NULL,
+ NULL,
+ { { "blank", "Screen-blanking saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Green", "\"green\" power saver (if supported by monitor)",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Snake", "\"snake\" screen saver",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Star", "\"twinkling stars\" screen saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Timeout", "Set screen saver timeout interval",
+ DMENU_CALL, configSaverTimeout, 0, 0 },
+ { NULL } },
+};
diff --git a/usr.sbin/sade/msg.c b/usr.sbin/sade/msg.c
index b2f4baf..a90c50f 100644
--- a/usr.sbin/sade/msg.c
+++ b/usr.sbin/sade/msg.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: msg.c,v 1.22 1995/05/22 14:10:25 jkh Exp $
+ * $Id: msg.c,v 1.23 1995/05/23 02:41:15 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -100,6 +100,7 @@ msgInfo(char *fmt, ...)
attrset(A_REVERSE);
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, line);
attrset(attrs);
+ move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
refresh();
if (OnVTY) {
msgDebug("Information: `%s'\n", errstr);
diff --git a/usr.sbin/sade/sade.h b/usr.sbin/sade/sade.h
index 7e9f83e..b8ea33a 100644
--- a/usr.sbin/sade/sade.h
+++ b/usr.sbin/sade/sade.h
@@ -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.28 1995/05/23 18:06:16 jkh Exp $
+ * $Id: sysinstall.h,v 1.29 1995/05/24 01:27:14 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -159,8 +159,9 @@ typedef struct _device {
DeviceType type;
Boolean enabled;
Boolean (*init)(struct _device *);
- Boolean (*get)(char *fname);
- void (*close)(struct _device *);
+ int (*get)(char *fname);
+ Boolean (*close)(struct _device *, int fd);
+ void (*shutdown)(struct _device *);
void *private;
} Device;
@@ -216,6 +217,7 @@ extern DMenu MenuMediaFloppy; /* Floppy media menu */
extern DMenu MenuMediaFTP; /* FTP media menu */
extern DMenu MenuMediaTape; /* Tape media menu */
extern DMenu MenuNetworkDevice; /* Network device menu */
+extern DMenu MenuSyscons; /* System console configuration menu */
extern DMenu MenuInstall; /* Installation menu */
extern DMenu MenuInstallType; /* Installation type menu */
extern DMenu MenuDistributions; /* Distribution menu */
@@ -238,11 +240,12 @@ extern void command_shell_add(char *key, char *fmt, ...);
extern void command_func_add(char *key, commandFunc func, void *data);
/* config.c */
-extern void config_fstab(void);
-extern void config_sysconfig(void);
-extern void config_resolv(void);
-extern int config_ports(char *str);
-extern int config_packages(char *str);
+extern void 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);
/* decode.c */
extern DMenuItem *decode(DMenu *menu, char *name);
@@ -256,8 +259,9 @@ extern Device **deviceFind(char *name, DeviceType type);
extern int deviceCount(Device **devs);
extern Device *new_device(char *name);
extern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *mediadev), Boolean (*get)(char *distname),
- void (*close)(Device *mediadev), void *private);
+ Boolean (*init)(Device *mediadev), int (*get)(char *distname),
+ Boolean (*close)(Device *mediadev, int fd), void (*shutDown)(Device *mediadev),
+ void *private);
/* disks.c */
extern int diskPartitionEditor(char *unused);
@@ -338,12 +342,12 @@ extern int mediaGetFloppy(char *dist);
extern int mediaGetFTP(char *dist);
extern int mediaGetTape(char *dist);
extern int mediaGetUFS(char *dist);
-extern void mediaCloseCDROM(Device *dev);
-extern void mediaCloseDOS(Device *dev);
-extern void mediaCloseFTP(Device *dev);
-extern void mediaCloseFloppy(Device *dev);
-extern void mediaCloseNetwork(Device *dev);
-extern void mediaCloseTape(Device *dev);
+extern void mediaShutdownCDROM(Device *dev);
+extern void mediaShutdownDOS(Device *dev);
+extern void mediaShutdownFTP(Device *dev);
+extern void mediaShutdownFloppy(Device *dev);
+extern void mediaShutdownNetwork(Device *dev);
+extern void mediaShutdownTape(Device *dev);
/* misc.c */
extern Boolean file_readable(char *fname);
diff --git a/usr.sbin/sysinstall/config.c b/usr.sbin/sysinstall/config.c
index c15d364..db73504 100644
--- a/usr.sbin/sysinstall/config.c
+++ b/usr.sbin/sysinstall/config.c
@@ -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.2 1995/05/23 18:06:12 jkh Exp $
+ * $Id: config.c,v 1.3 1995/05/24 01:27:08 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -114,7 +114,7 @@ seq_num(Chunk *c1)
}
void
-config_fstab(void)
+configFstab(void)
{
Device **devs;
Disk *disk;
@@ -183,13 +183,49 @@ config_fstab(void)
fclose(fstab);
}
+/*
+ * This sucks in /etc/sysconfig, substitutes anything needing substitution, then
+ * writes it all back out. It's pretty gross and needs re-writing at some point.
+ */
void
-config_sysconfig(void)
+configSysconfig(void)
{
+ FILE *fp;
+ char *lines[5001]; /* Some big number we're not likely to ever reach - I'm being really lazy here, I know */
+ char line[256];
+ Variable *v;
+ int i, nlines = 0;
+
+ fp = fopen("/etc/sysconfig", "r");
+ if (!fp) {
+ msgConfirm("Unable to open /etc/sysconfig file! Things may work\nrather strangely as a result of this.");
+ return;
+ }
+ for (i = 0; i < 5000; i++) {
+ if (!fgets(line, 256, fp))
+ break;
+ lines[nlines++] = strdup(line);
+ }
+ lines[nlines] = NULL;
+ for (v = VarHead; v; v = v->next) {
+ for (i = 0; i < nlines; i++) {
+ }
+ }
+}
+
+int
+configSaverTimeout(char *str)
+{
+ char *val;
+
+ val = msgGetInput("60", "Enter time-out period in seconds for screen saver");
+ if (val)
+ variable_set2("blanktime", val);
+ return 0;
}
void
-config_resolv(void)
+configResolv(void)
{
static Boolean alreadyDone = FALSE;
FILE *fp;
@@ -209,19 +245,28 @@ config_resolv(void)
}
fprintf(fp, "domain\t%s\n", getenv(VAR_DOMAINNAME));
fprintf(fp, "nameserver\t%s\n", getenv(VAR_NAMESERVER));
+ msgNotify("Wrote /etc/resolv.conf");
fclose(fp);
alreadyDone = TRUE;
}
int
-config_packages(char *str)
+configPackages(char *str)
{
+ if (!mediaDevice || mediaDevice->type != DEVICE_TYPE_CDROM) {
+ if (getpid() == 1) {
+ if (!mediaSetCDROM(NULL))
+ return 0;
+ else
+ vsystem("pkg_manage /cdrom");
+ }
+ }
+ vsystem("pkg_manage");
return 0;
}
int
-config_ports(char *str)
+configPorts(char *str)
{
return 0;
}
-
diff --git a/usr.sbin/sysinstall/devices.c b/usr.sbin/sysinstall/devices.c
index a1c501c..1083e14 100644
--- a/usr.sbin/sysinstall/devices.c
+++ b/usr.sbin/sysinstall/devices.c
@@ -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.27 1995/05/21 18:24:32 jkh Exp $
+ * $Id: devices.c,v 1.28 1995/05/23 02:40:52 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -74,37 +74,38 @@ static struct {
char *name;
char *description;
} device_names[] = {
- { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
- { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
- { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
- { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
- { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
- { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
- { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
- { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
- { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
- { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
- { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
- { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
- { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
- { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
- { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
- { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
- { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
- { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
- { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
- { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
- { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
- { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
- { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
- { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
- { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
- { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
- { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
- { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
- { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
+ { DEVICE_TYPE_CDROM, "cd0a", "SCSI CDROM drive" },
+ { DEVICE_TYPE_CDROM, "cd1a", "SCSI CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "mcd0a", "Mitsumi (old model) CDROM drive" },
+ { DEVICE_TYPE_CDROM, "mcd1a", "Mitsumi (old model) CDROM drive (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "scd0a", "Sony CDROM drive - CDU31/33A type", },
+ { DEVICE_TYPE_CDROM, "scd1a", "Sony CDROM drive - CDU31/33A type (2nd unit)" },
+ { DEVICE_TYPE_CDROM, "matcd0a", "Matsushita CDROM ('sound blaster' type)" },
+ { DEVICE_TYPE_CDROM, "matcd1a", "Matsushita CDROM (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "rst0", "SCSI tape drive" },
+ { DEVICE_TYPE_TAPE, "rst1", "SCSI tape drive (2nd unit)" },
+ { DEVICE_TYPE_TAPE, "ft0", "Floppy tape drive (QIC-02)" },
+ { DEVICE_TYPE_TAPE, "wt0", "Wangtek tape drive" },
+ { DEVICE_TYPE_DISK, "sd", "SCSI disk device" },
+ { DEVICE_TYPE_DISK, "wd", "IDE/ESDI/MFM/ST506 disk device" },
+ { DEVICE_TYPE_FLOPPY, "rfd0", "Floppy disk drive (unit A)" },
+ { DEVICE_TYPE_FLOPPY, "rfd1", "Floppy disk drive (unit B)" },
+ { DEVICE_TYPE_NETWORK, "cuaa0", "Serial port (COM1) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "cuaa1", "Serial port (COM2) - possible PPP device" },
+ { DEVICE_TYPE_NETWORK, "lp0", "Parallel Port IP (PLIP) using laplink cable" },
+ { DEVICE_TYPE_NETWORK, "lo", "Loop-back (local) network interface" },
+ { DEVICE_TYPE_NETWORK, "sl", "Serial-line IP (SLIP) interface" },
+ { DEVICE_TYPE_NETWORK, "ppp", "Point-to-Point Protocol (PPP) interface" },
+ { DEVICE_TYPE_NETWORK, "ed", "WD/SMC 80xx; Novell NE1000/2000; 3Com 3C503 cards" },
+ { DEVICE_TYPE_NETWORK, "ep", "3Com 3C509 interface card" },
+ { DEVICE_TYPE_NETWORK, "el", "3Com 3C501 interface card" },
+ { DEVICE_TYPE_NETWORK, "fe", "Fujitsu MB86960A/MB86965A Ethernet" },
+ { DEVICE_TYPE_NETWORK, "ie", "AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210" },
+ { DEVICE_TYPE_NETWORK, "ix", "Intel Etherexpress" },
+ { DEVICE_TYPE_NETWORK, "le", "DEC EtherWorks 2 and 3" },
+ { DEVICE_TYPE_NETWORK, "lnc", "Lance/PCnet cards (Isolan/Novell NE2100/NE32-VL)" },
+ { DEVICE_TYPE_NETWORK, "ze", "IBM/National Semiconductor PCMCIA ethernet" },
+ { DEVICE_TYPE_NETWORK, "zp", "3Com PCMCIA Etherlink III" },
{ NULL },
};
@@ -144,7 +145,8 @@ deviceDiskFree(Device *dev)
/* Register a new device in the devices array */
Device *
deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *), Boolean (*get)(char *), void (*close)(Device *), void *private)
+ Boolean (*init)(Device *), int (*get)(char *), Boolean (*close)(Device *, int),
+ void (*shutdown)(Device *), void *private)
{
Device *newdev;
@@ -158,12 +160,13 @@ deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean e
newdev->init = init;
newdev->get = get;
newdev->close = close;
+ newdev->shutdown = shutdown;
newdev->private = private;
Devices[numDevs] = newdev;
Devices[++numDevs] = NULL;
return newdev;
}
-
+
/* Get all device information for devices we have attached */
void
deviceGetAll(void)
@@ -187,7 +190,7 @@ deviceGetAll(void)
msgFatal("Unable to open disk %s", names[i]);
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
- mediaInitUFS, mediaGetUFS, deviceDiskFree, d);
+ mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
msgDebug("Found a device of type disk named: %s\n", names[i]);
}
free(names);
@@ -206,7 +209,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
(void)deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, mediaCloseCDROM, NULL);
+ DEVICE_TYPE_CDROM, TRUE, mediaInitCDROM, mediaGetCDROM, NULL,
+ mediaShutdownCDROM, NULL);
msgDebug("Found a device of type CDROM named: %s\n", device_names[i].name);
}
break;
@@ -216,7 +220,7 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, mediaCloseTape, NULL);
+ DEVICE_TYPE_TAPE, TRUE, mediaInitTape, mediaGetTape, NULL, mediaShutdownTape, NULL);
msgDebug("Found a device of type TAPE named: %s\n", device_names[i].name);
}
break;
@@ -226,7 +230,8 @@ deviceGetAll(void)
if (fd >= 0) {
close(fd);
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, mediaCloseFloppy, NULL);
+ DEVICE_TYPE_FLOPPY, TRUE, mediaInitFloppy, mediaGetFloppy, NULL,
+ mediaShutdownFloppy, NULL);
msgDebug("Found a device of type floppy named: %s\n", device_names[i].name);
}
break;
@@ -237,7 +242,7 @@ deviceGetAll(void)
close(fd);
/* The only network devices that have fds associated are serial ones */
deviceRegister(device_names[i].name, device_names[i].description, strdup(try),
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", device_names[i].name);
}
break;
@@ -271,7 +276,7 @@ deviceGetAll(void)
|| !strncmp(ifptr->ifr_name, "lo0", 3))
continue;
deviceRegister(ifptr->ifr_name, ifptr->ifr_name, ifptr->ifr_name,
- DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, mediaCloseNetwork, NULL);
+ DEVICE_TYPE_NETWORK, TRUE, mediaInitNetwork, NULL, NULL, mediaShutdownNetwork, NULL);
msgDebug("Found a device of type network named: %s\n", ifptr->ifr_name);
close(s);
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
diff --git a/usr.sbin/sysinstall/dist.c b/usr.sbin/sysinstall/dist.c
index 095bb44..37fd908 100644
--- a/usr.sbin/sysinstall/dist.c
+++ b/usr.sbin/sysinstall/dist.c
@@ -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.16 1995/05/22 14:10:15 jkh Exp $
+ * $Id: dist.c,v 1.17 1995/05/23 02:40:53 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -231,7 +231,10 @@ distExtract(char *parent, Distribution *me)
fd = (*mediaDevice->get)(distname);
if (fd != -1) {
status = mediaExtractDist(distname, me[i].my_dir, fd);
- close(fd);
+ if (mediaDevice->close)
+ (*mediaDevice->close)(mediaDevice, fd);
+ else
+ close(fd);
}
else {
if (getenv(NO_CONFIRMATION))
@@ -246,8 +249,8 @@ distExtract(char *parent, Distribution *me)
}
}
}
- if (mediaDevice->close)
- (*mediaDevice->close)(mediaDevice);
+ if (mediaDevice->shutdown)
+ (*mediaDevice->shutdown)(mediaDevice);
mediaDevice = NULL;
return status;
}
diff --git a/usr.sbin/sysinstall/ftp.c b/usr.sbin/sysinstall/ftp.c
index 4a908e5..278afa1 100644
--- a/usr.sbin/sysinstall/ftp.c
+++ b/usr.sbin/sysinstall/ftp.c
@@ -1,3 +1,15 @@
+/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ *
+ * $Id$
+ *
+ */
+
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -9,228 +21,292 @@
#include <stdarg.h>
#include <string.h>
#include <errno.h>
+#include <ctype.h>
#include "ftp.h"
+#ifndef STANDALONE_FTP
#include "sysinstall.h"
+#endif /*STANDALONE_FTP*/
static void
debug(FTP_t ftp, const char *fmt, ...)
{
- char p[BUFSIZ];
- va_list ap;
- va_start(ap, fmt);
- (void) vsnprintf(p, sizeof p, fmt, ap);
- va_end(ap);
-
-#if 0
- write(ftp->fd_debug,p,strlen(p));
+ char p[BUFSIZ];
+ va_list ap;
+ va_start(ap, fmt);
+ (void) vsnprintf(p, sizeof p, fmt, ap);
+ va_end(ap);
+
+#ifdef STANDALONE_FTP
+ write(ftp->fd_debug,p,strlen(p));
#else
- msgDebug(p);
+ msgDebug(p);
#endif
}
static int
writes(int fd, char *s)
{
- int i = strlen(s);
- if (i != write(fd,s,i))
- return errno ? errno : -1;
- return 0;
+ int i = strlen(s);
+ if (i != write(fd,s,i))
+ return errno ? errno : -1;
+ return 0;
}
static char*
get_a_line(FTP_t ftp)
{
- static char buf[BUFSIZ];
- int i,j;
-
- for(i=0;i<BUFSIZ;) {
- j = read(ftp->fd_ctrl,buf+i,1);
- if (j != 1)
- return 0;
- if (buf[i] == '\r' || buf[i] == '\n') {
- if (!i)
- continue;
- buf[i] = '\0';
- debug(ftp,"LIBFTP: received <%s>\n",buf);
- return buf;
- }
- i++;
+ static char buf[BUFSIZ];
+ int i,j;
+
+ for(i=0;i<BUFSIZ;) {
+ j = read(ftp->fd_ctrl,buf+i,1);
+ if (j != 1)
+ return 0;
+ if (buf[i] == '\r' || buf[i] == '\n') {
+ if (!i)
+ continue;
+ buf[i] = '\0';
+ debug(ftp,"LIBFTP: received <%s>\n",buf);
+ return buf;
}
+ i++;
+ }
+ return buf;
}
-int
-get_a_number(FTP_t ftp)
+static int
+get_a_number(FTP_t ftp, char **q)
{
- char *p;
-
- while(1) {
- p = get_a_line(ftp);
- if (p[3] != ' ' && p[3] != ' ')
- continue;
- return atoi(p);
+ char *p;
+ int i = -1,j;
+
+ while(1) {
+ p = get_a_line(ftp);
+ if (!(isdigit(p[0]) && isdigit(p[1]) && isdigit(p[2])))
+ continue;
+ if (i == -1 && p[3] == '-') {
+ i = atoi(p);
+ continue;
+ }
+ if (p[3] != ' ' && p[3] != '\t')
+ continue;
+ j = atoi(p);
+ if (i == -1) {
+ if (q) *q = p+4;
+ return j;
+ } else if (j == i) {
+ if (q) *q = p+4;
+ return j;
}
+ }
+}
+
+static int
+botch(FTP_t ftp, char *func, char *state)
+{
+ debug(ftp,"LIBFTP: Botch: %s called outside state %s\n",func,state);
+ writes(ftp->fd_ctrl,"QUIT\r\n");
+ close(ftp->fd_ctrl); ftp->fd_ctrl = -1;
+ close(ftp->fd_xfer); ftp->fd_xfer = -1;
+ ftp->state = init;
+ return -1;
}
static int
cmd(FTP_t ftp, const char *fmt, ...)
{
- char p[BUFSIZ];
- int i;
- va_list ap;
- va_start(ap, fmt);
- (void) vsnprintf(p, sizeof p, fmt, ap);
- va_end(ap);
- debug(ftp,"LIBFTP: send <%s>\n",p);
- if (writes(ftp->fd_ctrl,p))
- return -1;
- if (writes(ftp->fd_ctrl,"\r\n"))
- return -1;
- i = get_a_number(ftp);
- debug(ftp, "LIBFTP: got %d\n",i);
- return i;
+ char p[BUFSIZ];
+ int i;
+
+ va_list ap;
+ va_start(ap, fmt);
+ (void) vsnprintf(p, sizeof p, fmt, ap);
+ va_end(ap);
+
+ debug(ftp,"LIBFTP: send <%s>\n",p);
+ strcat(p,"\r\n");
+ if (writes(ftp->fd_ctrl,p))
+ return -1;
+ i = get_a_number(ftp,0);
+ debug(ftp, "LIBFTP: got %d\n",i);
+ return i;
}
FTP_t
FtpInit()
{
- FTP_t ftp;
-
- ftp = malloc(sizeof *ftp);
- if (!ftp)
- return ftp;
- memset(ftp, 0, sizeof *ftp);
- ftp->fd_ctrl = -1;
- ftp->fd_debug = -1;
+ FTP_t ftp;
+
+ ftp = malloc(sizeof *ftp);
+ if (!ftp)
return ftp;
+ memset(ftp, 0, sizeof *ftp);
+ ftp->fd_ctrl = -1;
+ ftp->fd_debug = -1;
+ ftp->state = init;
+ return ftp;
}
-#if 0
+
+#ifdef STANDALONE_FTP
void
FtpDebug(FTP_t ftp, int i)
{
- ftp->fd_debug = i;
+ ftp->fd_debug = i;
}
#endif
+
int
FtpOpen(FTP_t ftp, char *host, char *user, char *passwd)
{
-
- struct hostent *he, hdef;
- struct servent *se, sdef;
- struct sockaddr_in sin;
- int s;
- char a,*p,buf[BUFSIZ];
- unsigned long temp;
-
- if (!user)
- user = "ftp";
-
- if (!passwd)
- passwd = "??@??(FreeBSD:libftp)"; /* XXX */
-
- msgDebug("FtpOpen(ftp, %s, %s, %s)\n", host, user, passwd);
-
- temp = inet_addr(host);
- if (temp != INADDR_NONE)
+ struct hostent *he = NULL;
+ struct sockaddr_in sin;
+ int s;
+ unsigned long temp;
+ extern unsigned long inet_addr(char *);
+ int i;
+
+ if (ftp->state != init)
+ return botch(ftp,"FtpOpen","init");
+
+ if (!user)
+ user = "ftp";
+
+ if (!passwd)
+ passwd = "??@??(FreeBSD:libftp)"; /* XXX */
+
+ debug(ftp,"FtpOpen(ftp, %s, %s, %s)\n", host, user, passwd);
+
+ temp = inet_addr(host);
+ if (temp != INADDR_NONE)
+ {
+ debug(ftp,"Using dotted IP address `%s'\n", host);
+ ftp->addrtype = sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = temp;
+ } else {
+ debug(ftp,"Trying to resolve `%s'\n", host);
+ he = gethostbyname(host);
+ if (!he)
{
- msgDebug("Using dotted IP address `%s'\n", host);
- ftp->addrtype = sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = temp;
- } else {
- msgDebug("Trying to resolve `%s'\n", host);
- he = gethostbyname(host);
- if (!he)
- {
- msgDebug("Lookup of `%s' failed!\n", host);
- return ENOENT;
- }
- ftp->addrtype = sin.sin_family = he->h_addrtype;
- bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
+ debug(ftp,"Lookup of `%s' failed!\n", host);
+ return ENOENT;
}
-
- sin.sin_port = htons(21);
-
- if ((s = socket(he->h_addrtype, SOCK_STREAM, 0)) < 0)
- return s;
-
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- (void)close(s);
- return -1;
- }
-
- ftp->fd_ctrl = s;
-
- debug(ftp, "LIBFTP: open (%d)\n",get_a_number(ftp));
-
- cmd(ftp,"USER %s",user);
- cmd(ftp,"PASS %s",passwd);
- return 0;
-
- fail:
- close(ftp->fd_ctrl);
- ftp->fd_ctrl = -1;
+ ftp->addrtype = sin.sin_family = he->h_addrtype;
+ bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
+ }
+
+ sin.sin_port = htons(21);
+
+ if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
+ {
+ debug("Socket open failed: %s (%i)\n", strerror(errno), errno);
+ return s;
+ }
+
+ if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ debug("Connection failed: %s (%i)\n", strerror(errno), errno);
+ (void)close(s);
return -1;
+ }
+
+ ftp->fd_ctrl = s;
+
+ debug(ftp, "LIBFTP: open (%d)\n",get_a_number(ftp,0));
+
+ i = cmd(ftp,"USER %s",user);
+ i = cmd(ftp,"PASS %s",passwd);
+ ftp->state = isopen;
+ return 0;
+
+ fail:
+ close(ftp->fd_ctrl);
+ ftp->fd_ctrl = -1;
+ return -1;
+}
+
+void
+FtpClose(FTP_t ftp)
+{
+ if (ftp->state != isopen)
+ botch(ftp,"FtpClose","open");
+
+ writes(ftp->fd_ctrl,"QUIT\r\n");
+ close(ftp->fd_ctrl); ftp->fd_ctrl = -1;
+ close(ftp->fd_xfer); ftp->fd_xfer = -1;
+ ftp->state = init;
}
int
FtpChdir(FTP_t ftp, char *dir)
{
- cmd(ftp,"CWD %s",dir);
- return 0;
+ int i;
+ if (ftp->state != isopen)
+ return botch(ftp,"FtpChdir","open");
+ i = cmd(ftp,"CWD %s",dir);
+ return 0;
}
int
FtpGet(FTP_t ftp, char *file)
{
- int fd,i,j,s;
- char p[BUFSIZ],*q;
- unsigned char addr[6];
- struct sockaddr_in sin;
-
- if(ftp->binary) {
- cmd(ftp,"TYPE I");
- } else {
- return -1;
+ int i,s;
+ char *q;
+ unsigned char addr[6];
+ struct sockaddr_in sin;
+
+ if (ftp->state != isopen)
+ return botch(ftp,"FtpGet","open");
+ if(ftp->binary) {
+ i = cmd(ftp,"TYPE I");
+ if (i > 299)
+ return -1;
+ } else {
+ return -1;
+ }
+ if(ftp->passive) {
+ if (writes(ftp->fd_ctrl,"PASV\r\n"))
+ return -1;
+ i = get_a_number(ftp,&q);
+ if (i != 227)
+ return -1;
+ while (*q && !isdigit(*q))
+ q++;
+ if (!*q)
+ return -1;
+ q--;
+ for(i=0;i<6;i++) {
+ q++;
+ addr[i] = strtol(q,&q,10);
}
- if(ftp->passive) {
- if (writes(ftp->fd_ctrl,"PASV\r\n"))
- return -1;
- q = get_a_line(ftp);
- if (strncmp(q,"227 ",4))
- return -1;
- q = strchr(q,'(');
- if (!q)
- return -1;
- for(i=0;i<6;i++) {
- q++;
- addr[i] = strtol(q,&q,10);
- debug(ftp,"ADDR[%d] = %d (%c)\n",i,addr[i],*q);
- }
- if (*q != ')')
- return -1;
-
- sin.sin_family = ftp->addrtype;
- bcopy(addr, (char *)&sin.sin_addr, 4);
- bcopy(addr+4, (char *)&sin.sin_port, 2);
- if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
- return -1;
- debug(ftp,"Getsocket = %d\n",s);
-
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- (void)close(s);
- debug(ftp,"connect, errno = %d\n",errno);
- return -1;
- }
- cmd(ftp,"RETR %s",file);
- return s;
- } else {
- return -1;
+
+ sin.sin_family = ftp->addrtype;
+ bcopy(addr, (char *)&sin.sin_addr, 4);
+ bcopy(addr+4, (char *)&sin.sin_port, 2);
+ if ((s = socket(ftp->addrtype, SOCK_STREAM, 0)) < 0)
+ return -1;
+
+ if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ (void)close(s);
+ debug(ftp,"connect, errno = %d\n",errno);
+ return -1;
}
+
+ i = cmd(ftp,"RETR %s",file);
+ if (i > 299)
+ return -1;
+ ftp->state = xfer;
+ return s;
+ } else {
+ return -1;
+ }
}
int
FtpEOF(FTP_t ftp)
{
- get_a_number(ftp);
+ if (ftp->state != xfer)
+ return botch(ftp,"FtpEOF","xfer");
+ ftp->state = isopen;
+ return get_a_number(ftp,0);
}
#ifdef STANDALONE_FTP
@@ -240,25 +316,35 @@ FtpEOF(FTP_t ftp)
int
main(int argc, char **argv)
{
- FTP_t ftp;
- int i;
- char c;
-
- ftp = FtpInit();
- if (!ftp) err(1,"FtpInit()");
-
- FtpDebug(ftp,1);
- i = FtpOpen(ftp, "ref", "ftp", "phk-libftp@");
- if (i) err(1,"FtpOpen(%d)",i);
- FtpBinary(ftp,1);
- FtpPassive(ftp,1);
- FtpChdir(ftp,"/pub");
- FtpChdir(ftp,"CTM");
- i = FtpGet(ftp,"README_CTM_MOVED");
- while(1 == read(i,&c,1))
- putchar(c);
- FtpEOF(ftp);
- return 0;
+ FTP_t ftp;
+ int i;
+ char c;
+
+ ftp = FtpInit();
+ if (!ftp) err(1,"FtpInit()");
+
+ FtpDebug(ftp,1);
+ i = FtpOpen(ftp, "ref.tfs.com", "ftp", "phk-libftp@");
+ if (i) err(1,"FtpOpen(%d)",i);
+ FtpBinary(ftp,1);
+ FtpPassive(ftp,1);
+ FtpChdir(ftp,"/pub");
+ FtpChdir(ftp,"CTM");
+ i = FtpGet(ftp,"README_CTM_MOVED");
+ while(1 == read(i,&c,1))
+ putchar(c);
+ FtpEOF(ftp);
+ FtpClose(ftp);
+ i = FtpOpen(ftp, "freefall.cdrom.com", "ftp", "phk-libftp@");
+ FtpBinary(ftp,1);
+ FtpPassive(ftp,1);
+ FtpChdir(ftp,"/pub");
+ FtpChdir(ftp,"FreeBSD");
+ i = FtpGet(ftp,"README");
+ while(1 == read(i,&c,1))
+ putchar(c);
+ FtpEOF(ftp);
+ return 0;
}
#endif /*STANDALONE_FTP*/
diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c
index 8a0f1fe..8519e5e 100644
--- a/usr.sbin/sysinstall/install.c
+++ b/usr.sbin/sysinstall/install.c
@@ -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.49 1995/05/23 18:06:13 jkh Exp $
+ * $Id: install.c,v 1.50 1995/05/24 01:27:10 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -208,9 +208,9 @@ installFinal(void)
if (alreadyDone)
return;
- config_fstab();
- config_sysconfig();
- config_resolv();
+ configFstab();
+ configSysconfig();
+ configResolv();
do_final_setup();
alreadyDone = TRUE;
SystemWasInstalled = TRUE;
@@ -346,7 +346,6 @@ cpio_extract(void)
int i, j, zpid, cpid, pfd[2];
Boolean onCDROM = FALSE;
-#if 0
if (mediaDevice && mediaDevice->type == DEVICE_TYPE_CDROM) {
if (mediaDevice->init) {
if ((*mediaDevice->init)(mediaDevice)) {
@@ -358,7 +357,7 @@ cpio_extract(void)
}
}
}
-#endif
+
tryagain:
while (CpioFD == -1) {
msgConfirm("Please Insert CPIO floppy in floppy drive 0");
diff --git a/usr.sbin/sysinstall/label.c b/usr.sbin/sysinstall/label.c
index a06649b..84cd81e 100644
--- a/usr.sbin/sysinstall/label.c
+++ b/usr.sbin/sysinstall/label.c
@@ -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.21 1995/05/22 14:10:20 jkh Exp $
+ * $Id: label.c,v 1.22 1995/05/23 02:41:07 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -560,6 +560,12 @@ diskLabelEditor(char *str)
p = get_mountpoint(label_chunk_info[here].c);
if (p) {
p->newfs = FALSE;
+ if (label_chunk_info[here].type == PART_FAT
+ && (!strcmp(p->mountpoint, "/") || !strcmp(p->mountpoint, "/usr")
+ || !strcmp(p->mountpoint, "/var"))) {
+ msgConfirm("%s is an invalid mount point for a DOS partition!", p->mountpoint);
+ strcpy(p->mountpoint, "/bogus");
+ }
record_label_chunks();
}
break;
diff --git a/usr.sbin/sysinstall/main.c b/usr.sbin/sysinstall/main.c
index dfcf717..e106250 100644
--- a/usr.sbin/sysinstall/main.c
+++ b/usr.sbin/sysinstall/main.c
@@ -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.7 1995/05/16 11:37:17 jkh Exp $
+ * $Id: main.c,v 1.8 1995/05/17 14:39:49 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -64,6 +64,9 @@ main(int argc, char **argv)
/* Default to English */
lang_set_English(NULL);
+ /* Default to passive mode ftp since it's the only thing we currently support :-( */
+ variable_set2("ftpPassive", "yes");
+
/* Begin user dialog at outer menu */
while (1) {
choice = scroll = curr = max = 0;
diff --git a/usr.sbin/sysinstall/media.c b/usr.sbin/sysinstall/media.c
index 63a7019..e3e6a0b 100644
--- a/usr.sbin/sysinstall/media.c
+++ b/usr.sbin/sysinstall/media.c
@@ -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.14 1995/05/22 14:10:21 jkh Exp $
+ * $Id: media.c,v 1.15 1995/05/23 02:41:09 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -86,9 +86,7 @@ mediaSetCDROM(char *str)
/* This may need to be extended a little, but the basic idea is sound */
strcpy(bootCD.name, "bootCD");
bootCD.type = DEVICE_TYPE_CDROM;
- bootCD.init = NULL;
bootCD.get = mediaGetCDROM;
- bootCD.close = NULL;
mediaDevice = &bootCD;
return 1;
}
@@ -197,7 +195,7 @@ mediaSetDOS(char *str)
if (c1->type == fat) {
/* Got one! */
mediaDevice = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
- mediaInitDOS, mediaGetDOS, mediaCloseDOS, NULL);
+ mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
break;
}
@@ -267,7 +265,7 @@ mediaSetFTP(char *str)
ftpDevice.type = DEVICE_TYPE_NETWORK;
ftpDevice.init = mediaInitFTP;
ftpDevice.get = mediaGetFTP;
- ftpDevice.close = mediaCloseFTP;
+ ftpDevice.shutdown = mediaShutdownFTP;
ftpDevice.private = devp;
mediaDevice = &ftpDevice;
return 1;
diff --git a/usr.sbin/sysinstall/menus.c b/usr.sbin/sysinstall/menus.c
index 6b40740..886f2a1 100644
--- a/usr.sbin/sysinstall/menus.c
+++ b/usr.sbin/sysinstall/menus.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: menus.c,v 1.25 1995/05/23 02:41:13 jkh Exp $
+ * $Id: menus.c,v 1.26 1995/05/24 01:27:12 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -644,17 +644,43 @@ your FreeBSD system more generally usable and which may be selected\n\
from the menu below. When you're done, select Cancel.",
"Press F1 for more information on these options",
"configure.hlp",
- { { "Time Zone", "Set which time zone you're in",
- DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
- { "Add User", "Add users to the system",
+ { { "Add User", "Add users to the system",
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
- { "Root Pass", "Set the system manager's password",
- DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Time Zone", "Set which time zone you're in",
+ DMENU_SYSTEM_COMMAND, "tzsetup", 0, 0 },
{ "Packages", "Install extra FreeBSD packaged software",
- DMENU_CALL, config_packages, 0, 1 },
+ DMENU_CALL, configPackages, 0, 1 },
{ "Ports", "Enable the FreeBSD Ports Collection from CD",
- DMENU_CALL, config_ports, 0, 1 },
+ DMENU_CALL, configPorts, 0, 1 },
+ { "Root Password", "Set the system manager's password",
+ DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 },
+ { "Screen", "Customize system console behavior",
+ DMENU_SUBMENU, &MenuSyscons, 0, 0 },
+ { "Sysconfig", "Edit the system configuration file (with vi)",
+ DMENU_SYSTEM_COMMAND, "vi /etc/sysconfig", 0, 0 },
{ "XFree86", "Configure XFree86 (if installed)",
DMENU_SYSTEM_COMMAND, "PATH=/usr/bin:/bin:/usr/X11R6/bin xf86config", 0, 0 },
{ NULL } },
};
+
+DMenu MenuSyscons = {
+ DMENU_NORMAL_TYPE,
+ "System Console Configuration",
+ "The default system console driver for FreeBSD (syscons) has a\n\
+number of configuration options which may be set according to\n\
+your preference. When you are done setting configuration options,\n\
+select Cancel.",
+ NULL,
+ NULL,
+ { { "blank", "Screen-blanking saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Green", "\"green\" power saver (if supported by monitor)",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Snake", "\"snake\" screen saver",
+ DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
+ { "Star", "\"twinkling stars\" screen saver",
+ DMENU_SET_VARIABLE, "saver=star", 0, 0 },
+ { "Timeout", "Set screen saver timeout interval",
+ DMENU_CALL, configSaverTimeout, 0, 0 },
+ { NULL } },
+};
diff --git a/usr.sbin/sysinstall/msg.c b/usr.sbin/sysinstall/msg.c
index b2f4baf..a90c50f 100644
--- a/usr.sbin/sysinstall/msg.c
+++ b/usr.sbin/sysinstall/msg.c
@@ -4,7 +4,7 @@
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
- * $Id: msg.c,v 1.22 1995/05/22 14:10:25 jkh Exp $
+ * $Id: msg.c,v 1.23 1995/05/23 02:41:15 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -100,6 +100,7 @@ msgInfo(char *fmt, ...)
attrset(A_REVERSE);
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, line);
attrset(attrs);
+ move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
refresh();
if (OnVTY) {
msgDebug("Information: `%s'\n", errstr);
diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h
index 7e9f83e..b8ea33a 100644
--- a/usr.sbin/sysinstall/sysinstall.h
+++ b/usr.sbin/sysinstall/sysinstall.h
@@ -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.28 1995/05/23 18:06:16 jkh Exp $
+ * $Id: sysinstall.h,v 1.29 1995/05/24 01:27:14 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -159,8 +159,9 @@ typedef struct _device {
DeviceType type;
Boolean enabled;
Boolean (*init)(struct _device *);
- Boolean (*get)(char *fname);
- void (*close)(struct _device *);
+ int (*get)(char *fname);
+ Boolean (*close)(struct _device *, int fd);
+ void (*shutdown)(struct _device *);
void *private;
} Device;
@@ -216,6 +217,7 @@ extern DMenu MenuMediaFloppy; /* Floppy media menu */
extern DMenu MenuMediaFTP; /* FTP media menu */
extern DMenu MenuMediaTape; /* Tape media menu */
extern DMenu MenuNetworkDevice; /* Network device menu */
+extern DMenu MenuSyscons; /* System console configuration menu */
extern DMenu MenuInstall; /* Installation menu */
extern DMenu MenuInstallType; /* Installation type menu */
extern DMenu MenuDistributions; /* Distribution menu */
@@ -238,11 +240,12 @@ extern void command_shell_add(char *key, char *fmt, ...);
extern void command_func_add(char *key, commandFunc func, void *data);
/* config.c */
-extern void config_fstab(void);
-extern void config_sysconfig(void);
-extern void config_resolv(void);
-extern int config_ports(char *str);
-extern int config_packages(char *str);
+extern void 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);
/* decode.c */
extern DMenuItem *decode(DMenu *menu, char *name);
@@ -256,8 +259,9 @@ extern Device **deviceFind(char *name, DeviceType type);
extern int deviceCount(Device **devs);
extern Device *new_device(char *name);
extern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
- Boolean (*init)(Device *mediadev), Boolean (*get)(char *distname),
- void (*close)(Device *mediadev), void *private);
+ Boolean (*init)(Device *mediadev), int (*get)(char *distname),
+ Boolean (*close)(Device *mediadev, int fd), void (*shutDown)(Device *mediadev),
+ void *private);
/* disks.c */
extern int diskPartitionEditor(char *unused);
@@ -338,12 +342,12 @@ extern int mediaGetFloppy(char *dist);
extern int mediaGetFTP(char *dist);
extern int mediaGetTape(char *dist);
extern int mediaGetUFS(char *dist);
-extern void mediaCloseCDROM(Device *dev);
-extern void mediaCloseDOS(Device *dev);
-extern void mediaCloseFTP(Device *dev);
-extern void mediaCloseFloppy(Device *dev);
-extern void mediaCloseNetwork(Device *dev);
-extern void mediaCloseTape(Device *dev);
+extern void mediaShutdownCDROM(Device *dev);
+extern void mediaShutdownDOS(Device *dev);
+extern void mediaShutdownFTP(Device *dev);
+extern void mediaShutdownFloppy(Device *dev);
+extern void mediaShutdownNetwork(Device *dev);
+extern void mediaShutdownTape(Device *dev);
/* misc.c */
extern Boolean file_readable(char *fname);
OpenPOWER on IntegriCloud