mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Sync up my work for the night. This should implement ALL possible
installation methods and provide a fairly robust set of menu options. This should also fix a few more bugs on Poul-Henning's latest gripe list.
This commit is contained in:
parent
d802eeef31
commit
8fdde019ad
50 changed files with 1005 additions and 464 deletions
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: cdrom.c,v 1.3 1995/05/28 03:04:46 jkh Exp $
|
||||
* $Id: cdrom.c,v 1.4 1995/05/28 07:05:21 phk Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -72,6 +72,7 @@ mediaInitCDROM(Device *dev)
|
|||
if (Mkdir("/cdrom", NULL))
|
||||
return FALSE;
|
||||
|
||||
bzero(&args, sizeof(args));
|
||||
args.fspec = dev->devname;
|
||||
args.flags = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: command.c,v 1.8 1995/05/19 21:30:32 jkh Exp $
|
||||
* $Id: command.c,v 1.9 1995/05/20 13:24:33 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -167,14 +167,16 @@ command_execute(void)
|
|||
if (commandStack[i]->cmds[j].type == CMD_SHELL) {
|
||||
msgNotify("Doing %s", commandStack[i]->cmds[j].ptr);
|
||||
ret = vsystem((char *)commandStack[i]->cmds[j].ptr);
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
else {
|
||||
/* It's a function pointer - call it with the key and the data */
|
||||
func = (commandFunc)commandStack[i]->cmds[j].ptr;
|
||||
msgNotify("%x: Execute(%s, %s)", func, commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
ret = (*func)(commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.11 1995/05/28 09:31:29 jkh Exp $
|
||||
* $Id: config.c,v 1.12 1995/05/28 20:28:07 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -174,7 +174,7 @@ configFstab(void)
|
|||
}
|
||||
|
||||
/* Go for the burn */
|
||||
msgDebug("Generating /etc/fstab file");
|
||||
msgDebug("Generating /etc/fstab file\n");
|
||||
for (i = 0; i < nchunks; i++) {
|
||||
fprintf(fstab, "/dev/%s\t\t\t%s\t\t%s %s %d %d\n", nameof(chunk_list[i]), mount_point(chunk_list[i]),
|
||||
fstype(chunk_list[i]), fstype_short(chunk_list[i]), seq_num(chunk_list[i]),
|
||||
|
|
@ -351,7 +351,7 @@ configPackages(char *str)
|
|||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
}
|
||||
}
|
||||
if (i != 0)
|
||||
if (i != 0 && isDebug())
|
||||
msgDebug("pkg_manage returns status of %d\n", i);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.32 1995/05/27 23:52:55 jkh Exp $
|
||||
* $Id: devices.c,v 1.33 1995/05/28 09:31:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,15 +183,28 @@ deviceGetAll(void)
|
|||
int i;
|
||||
|
||||
for (i = 0; names[i]; i++) {
|
||||
Chunk *c1;
|
||||
Disk *d;
|
||||
|
||||
d = Open_Disk(names[i]);
|
||||
if (!d)
|
||||
msgFatal("Unable to open disk %s", names[i]);
|
||||
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
|
||||
mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE, NULL, NULL, NULL, NULL, d);
|
||||
msgDebug("Found a device of type disk named: %s\n", names[i]);
|
||||
|
||||
/* Look for existing DOS partitions to register */
|
||||
for (c1 = d->chunks->part; c1; c1 = c1->next) {
|
||||
if (c1->type == fat) {
|
||||
Device *dev;
|
||||
|
||||
/* Got one! */
|
||||
dev = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
|
||||
mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
|
||||
dev->private = c1;
|
||||
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
free(names);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.30 1995/05/28 09:43:36 jkh Exp $
|
||||
* $Id: dist.c,v 1.31 1995/05/28 20:28:11 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -250,7 +250,8 @@ distExtract(char *parent, Distribution *me)
|
|||
snprintf(buf, 512, "%s/%s.tgz", path, dist);
|
||||
fd = (*mediaDevice->get)(buf);
|
||||
if (fd != -1) {
|
||||
status = mediaExtractDist(me[i].my_name, me[i].my_dir, fd);
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -260,14 +261,16 @@ distExtract(char *parent, Distribution *me)
|
|||
|
||||
snprintf(buf, sizeof buf, "/stand/info/%s/%s.inf", path, dist);
|
||||
if (!access(buf, R_OK)) {
|
||||
msgDebug("Parsing attributes file for %s\n", dist);
|
||||
if (isDebug())
|
||||
msgDebug("Parsing attributes file for %s\n", dist);
|
||||
dist_attr = safe_malloc(sizeof(Attribs) * MAX_ATTRIBS);
|
||||
if (attr_parse(&dist_attr, buf) == 0) {
|
||||
msgConfirm("Cannot load information file for %s distribution!\nPlease verify that your media is valid and try again.", dist);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
msgDebug("Looking for attribute `pieces'\n");
|
||||
if (isDebug())
|
||||
msgDebug("Looking for attribute `pieces'\n");
|
||||
tmp = attr_match(dist_attr, "pieces");
|
||||
if (tmp)
|
||||
numchunks = atoi(tmp);
|
||||
|
|
@ -277,7 +280,8 @@ distExtract(char *parent, Distribution *me)
|
|||
else
|
||||
numchunks = 0;
|
||||
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
if (isDebug())
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
|
||||
if (numchunks < 2 ) {
|
||||
snprintf(buf, 512, "%s/%s", path, dist);
|
||||
|
|
@ -287,7 +291,8 @@ distExtract(char *parent, Distribution *me)
|
|||
if (fd == -1) {
|
||||
status = FALSE;
|
||||
} else {
|
||||
status = mediaExtractDist(me[i].my_name, me[i].my_dir, fd);
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -296,9 +301,11 @@ distExtract(char *parent, Distribution *me)
|
|||
goto done;
|
||||
}
|
||||
|
||||
mediaExtractDistBegin(dist, me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
mediaExtractDistBegin(me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
dialog_clear();
|
||||
for (chunk = 0; chunk < numchunks; chunk++) {
|
||||
int n, retval;
|
||||
char prompt[80];
|
||||
|
||||
snprintf(buf, 512, "%s/%s.%c%c", path, dist, (chunk / 26) + 'a', (chunk % 26) + 'a');
|
||||
fd = (*mediaDevice->get)(buf);
|
||||
|
|
@ -306,6 +313,8 @@ distExtract(char *parent, Distribution *me)
|
|||
msgConfirm("failed to retreive piece file %s!\nAborting the transfer", buf);
|
||||
goto punt;
|
||||
}
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
dialog_gauge(" Progress ", prompt, 8, 10, 10, 40, (numchunks / (chunk + 1)));
|
||||
while ((n = read(fd, buf, sizeof buf)) > 0) {
|
||||
retval = write(fd2, buf, n);
|
||||
if (retval != n)
|
||||
|
|
@ -354,5 +363,6 @@ distExtract(char *parent, Distribution *me)
|
|||
void
|
||||
distExtractAll(void)
|
||||
{
|
||||
distExtract(NULL, DistTable);
|
||||
while (Dists)
|
||||
distExtract(NULL, DistTable);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: dos.c,v 1.2 1995/05/27 23:39:28 phk Exp $
|
||||
* $Id: dos.c,v 1.3 1995/05/28 03:04:54 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -69,6 +69,7 @@ mediaInitDOS(Device *dev)
|
|||
if (Mkdir("/dos", NULL))
|
||||
return FALSE;
|
||||
|
||||
bzero(&args, sizeof(args));
|
||||
args.fspec = dev->devname;
|
||||
args.uid = args.gid = 0;
|
||||
|
||||
|
|
@ -85,7 +86,10 @@ mediaGetDOS(char *file)
|
|||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/dos/%s", file);
|
||||
snprintf(buf, PATH_MAX, "/dos/freebsd/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "/dos/freebsd/dists/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
|
|
@ -97,7 +101,8 @@ mediaShutdownDOS(Device *dev)
|
|||
msgDebug("Unmounting /dos\n");
|
||||
if (unmount("/dos", 0) != 0)
|
||||
msgConfirm("Could not unmount the DOS partition: %s\n", strerror(errno));
|
||||
msgDebug("Unmount returned\n");
|
||||
if (isDebug())
|
||||
msgDebug("Unmount returned\n");
|
||||
DOSMounted = FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: floppy.c,v 1.3 1995/05/28 03:04:56 jkh Exp $
|
||||
* $Id: floppy.c,v 1.4 1995/05/29 00:50:01 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -142,7 +142,6 @@ mediaGetFloppy(char *file)
|
|||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/mnt/%s", file);
|
||||
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id: ftp.c,v 1.10 1995/05/26 19:28:01 jkh Exp $
|
||||
* $Id: ftp.c,v 1.11 1995/05/27 06:19:59 phk Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -48,7 +48,8 @@ debug(FTP_t ftp, const char *fmt, ...)
|
|||
#ifdef STANDALONE_FTP
|
||||
write(ftp->fd_debug,p,strlen(p));
|
||||
#else
|
||||
msgDebug(p);
|
||||
if (isDebug())
|
||||
msgDebug(p);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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: ftp_strat.c,v 1.3 1995/05/27 21:18:07 jkh Exp $
|
||||
* $Id: ftp_strat.c,v 1.4 1995/05/27 23:39:30 phk Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -84,13 +84,16 @@ mediaInitFTP(Device *dev)
|
|||
return FALSE;
|
||||
}
|
||||
strncpy(url, cp, BUFSIZ);
|
||||
msgDebug("Using URL `%s'\n", url);
|
||||
if (isDebug())
|
||||
msgDebug("Using URL `%s'\n", url);
|
||||
hostname = url + 6;
|
||||
if ((dir = index(hostname, '/')) != NULL)
|
||||
*(dir++) = '\0';
|
||||
strcpy(dev->name, hostname);
|
||||
msgDebug("hostname = `%s'\n", hostname);
|
||||
msgDebug("dir = `%s'\n", dir ? dir : "/");
|
||||
if (isDebug()) {
|
||||
msgDebug("hostname = `%s'\n", hostname);
|
||||
msgDebug("dir = `%s'\n", dir ? dir : "/");
|
||||
}
|
||||
msgNotify("Looking up host %s..", hostname);
|
||||
if ((gethostbyname(hostname) == NULL) && (inet_addr(hostname) == INADDR_NONE)) {
|
||||
msgConfirm("Cannot resolve hostname `%s'! Are you sure your name server\nand/or gateway values are set properly?", hostname);
|
||||
|
|
@ -98,7 +101,8 @@ mediaInitFTP(Device *dev)
|
|||
}
|
||||
|
||||
snprintf(email, BUFSIZ, "installer@%s", my_name);
|
||||
msgDebug("Using fake e-mail `%s'\n", email);
|
||||
if (isDebug())
|
||||
msgDebug("Using fake e-mail `%s'\n", email);
|
||||
|
||||
msgNotify("Logging in as anonymous.");
|
||||
if ((i = FtpOpen(ftp, hostname, "anonymous", email)) != 0) {
|
||||
|
|
@ -113,7 +117,8 @@ mediaInitFTP(Device *dev)
|
|||
msgNotify("CD to distribution in ~ftp/%s", dir);
|
||||
FtpChdir(ftp, dir);
|
||||
}
|
||||
msgDebug("leaving mediaInitFTP!\n");
|
||||
if (isDebug())
|
||||
msgDebug("leaving mediaInitFTP!\n");
|
||||
ftpInitted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.65 1995/05/28 23:12:05 jkh Exp $
|
||||
* $Id: install.c,v 1.66 1995/05/29 00:50:02 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -254,6 +254,10 @@ installCommit(char *str)
|
|||
fclose(fp);
|
||||
hostsModified = TRUE;
|
||||
}
|
||||
/* If there's no kernel but there is a kernel.GENERIC, link it over */
|
||||
if (access("/kernel", R_OK))
|
||||
vsystem("ln -f /kernel.GENERIC /kernel");
|
||||
|
||||
msgConfirm("Installation completed successfully.\nHit return now to go back to the main menu.");
|
||||
SystemWasInstalled = TRUE;
|
||||
return 0;
|
||||
|
|
@ -379,7 +383,7 @@ copy_self(void)
|
|||
msgConfirm("Copy returned error status of %d!", i);
|
||||
|
||||
/* Copy the /etc files into their rightful place */
|
||||
(void)vsystem("(cd /stand; find etc) | cpio -pdmv /mnt");
|
||||
(void)vsystem("cd /mnt/stand; find etc | cpio -pdmv /mnt");
|
||||
}
|
||||
|
||||
static void loop_on_root_floppy();
|
||||
|
|
@ -391,7 +395,7 @@ root_extract(void)
|
|||
|
||||
if (OnCDROM) {
|
||||
fd = open("/floppies/root.flp", O_RDONLY);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
return;
|
||||
}
|
||||
if (mediaDevice) {
|
||||
|
|
@ -408,7 +412,7 @@ root_extract(void)
|
|||
fd = (*mediaDevice->get)("floppies/root.flp");
|
||||
if (fd != -1) {
|
||||
msgNotify("Loading root floppy from %s", mediaDevice->name);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -416,12 +420,14 @@ root_extract(void)
|
|||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
} else {
|
||||
msgConfirm("Couldn't get root floppy image from %s\n, falling back to floppy.", mediaDevice->name);
|
||||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
loop_on_root_floppy();
|
||||
}
|
||||
break;
|
||||
|
||||
case DEVICE_TYPE_TAPE:
|
||||
case DEVICE_TYPE_FLOPPY:
|
||||
default:
|
||||
loop_on_root_floppy();
|
||||
|
|
@ -437,7 +443,11 @@ loop_on_root_floppy(void)
|
|||
{
|
||||
int fd;
|
||||
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1)
|
||||
mediaExtractDist("root.flp", "/", fd);
|
||||
while (1) {
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1) {
|
||||
mediaExtractDist("/", fd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.20 1995/05/27 23:39:31 phk Exp $
|
||||
* $Id: media.c,v 1.21 1995/05/28 03:04:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -164,13 +164,15 @@ int
|
|||
mediaSetDOS(char *str)
|
||||
{
|
||||
Device **devs;
|
||||
Disk *d;
|
||||
Chunk *c1;
|
||||
int i, cnt;
|
||||
int cnt;
|
||||
|
||||
devs = deviceFind(NULL, DEVICE_TYPE_DOS);
|
||||
cnt = deviceCount(devs);
|
||||
if (cnt > 1) {
|
||||
if (!cnt) {
|
||||
msgConfirm("No DOS primary partitions found! This installation method is unavailable");
|
||||
return 0;
|
||||
}
|
||||
else if (cnt > 1) {
|
||||
DMenu *menu;
|
||||
|
||||
menu = deviceCreateMenu(&MenuMediaDOS, DEVICE_TYPE_DOS, DOSHook);
|
||||
|
|
@ -179,34 +181,8 @@ mediaSetDOS(char *str)
|
|||
dmenuOpenSimple(menu);
|
||||
free(menu);
|
||||
}
|
||||
else if (cnt) {
|
||||
else
|
||||
mediaDevice = devs[0];
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
devs = deviceFind(NULL, DEVICE_TYPE_DISK);
|
||||
if (!devs) {
|
||||
msgConfirm("No disk devices found!");
|
||||
return 0;
|
||||
}
|
||||
/* Now go chewing through looking for a DOS FAT partition */
|
||||
for (i = 0; devs[i]; i++) {
|
||||
d = (Disk *)devs[i]->private;
|
||||
/* Now try to find a DOS partition */
|
||||
for (c1 = d->chunks->part; c1; c1 = c1->next) {
|
||||
if (c1->type == fat) {
|
||||
/* Got one! */
|
||||
mediaDevice = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
|
||||
mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
|
||||
mediaDevice->private = c1;
|
||||
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mediaDevice)
|
||||
msgConfirm("No DOS primary partitions found! This installation method is unavailable");
|
||||
return mediaDevice ? 1 : 0;
|
||||
}
|
||||
|
||||
|
|
@ -280,25 +256,49 @@ mediaSetFTP(char *str)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return 0 if we successfully found and set the installation type to
|
||||
* be some sort of mounted filesystem (it's also mounted at this point)
|
||||
*/
|
||||
int
|
||||
mediaSetFS(char *str)
|
||||
mediaSetUFS(char *str)
|
||||
{
|
||||
return 0;
|
||||
static Device ufsDevice;
|
||||
char *val;
|
||||
|
||||
val = msgGetInput(NULL, "Enter a fully qualified pathname for the directory\ncontaining the FreeBSD distribtion files:");
|
||||
if (!val)
|
||||
return 0;
|
||||
strcpy(ufsDevice.name, "ufs");
|
||||
ufsDevice.type = DEVICE_TYPE_UFS;
|
||||
ufsDevice.get = mediaGetUFS;
|
||||
ufsDevice.private = strdup(val);
|
||||
mediaDevice = &ufsDevice;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetNFS(char *str)
|
||||
{
|
||||
static Device nfsDevice;
|
||||
char *val;
|
||||
|
||||
val = msgGetInput(NULL, "Please enter the full NFS file specification for the remote\nhost and directory containing the FreeBSD distribution files.\nThis should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!val)
|
||||
return 0;
|
||||
strcpy(nfsDevice.name, "nfs");
|
||||
nfsDevice.type = DEVICE_TYPE_NFS;
|
||||
nfsDevice.init = mediaInitNFS;
|
||||
nfsDevice.get = mediaGetNFS;
|
||||
nfsDevice.shutdown = mediaShutdownNFS;
|
||||
nfsDevice.private = strdup(val);
|
||||
mediaDevice = &nfsDevice;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Boolean
|
||||
mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
||||
mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpid)
|
||||
{
|
||||
int i, pfd[2],qfd[2];
|
||||
|
||||
if (!dir)
|
||||
dir = "/";
|
||||
msgWeHaveOutput("Extracting %s into %s directory..", distname, dir);
|
||||
|
||||
Mkdir(dir, NULL);
|
||||
chdir(dir);
|
||||
pipe(pfd);
|
||||
|
|
@ -316,7 +316,8 @@ mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
|||
close(qfd[1]);
|
||||
close(pfd[0]);
|
||||
i = execl("/stand/gunzip", "/stand/gunzip", 0);
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
*fd = qfd[1];
|
||||
|
|
@ -335,7 +336,8 @@ mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
|||
dup2(1, 2);
|
||||
}
|
||||
i = execl("/stand/cpio", "/stand/cpio", "-iduVm", "-H", "tar", 0);
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
close(pfd[0]);
|
||||
|
|
@ -351,13 +353,15 @@ mediaExtractDistEnd(int zpid, int cpid)
|
|||
i = waitpid(zpid, &j, 0);
|
||||
if (i < 0) { /* Don't check status - gunzip seems to return a bogus one! */
|
||||
dialog_clear();
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
return FALSE;
|
||||
}
|
||||
i = waitpid(cpid, &j, 0);
|
||||
if (i < 0 || WEXITSTATUS(j)) {
|
||||
dialog_clear();
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
if (isDebug())
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
@ -365,13 +369,12 @@ mediaExtractDistEnd(int zpid, int cpid)
|
|||
|
||||
|
||||
Boolean
|
||||
mediaExtractDist(char *distname, char *dir, int fd)
|
||||
mediaExtractDist(char *dir, int fd)
|
||||
{
|
||||
int i, j, zpid, cpid, pfd[2];
|
||||
|
||||
if (!dir)
|
||||
dir = "/";
|
||||
msgWeHaveOutput("Extracting %s into %s directory..", distname, dir);
|
||||
|
||||
Mkdir(dir, NULL);
|
||||
chdir(dir);
|
||||
|
|
@ -388,7 +391,8 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
}
|
||||
close(pfd[0]);
|
||||
i = execl("/stand/gunzip", "/stand/gunzip", 0);
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
cpid = fork();
|
||||
|
|
@ -405,7 +409,8 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
dup2(1, 2);
|
||||
}
|
||||
i = execl("/stand/cpio", "/stand/cpio", "-iduVm", "-H", "tar", 0);
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
close(pfd[0]);
|
||||
|
|
@ -414,13 +419,15 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
i = waitpid(zpid, &j, 0);
|
||||
if (i < 0) { /* Don't check status - gunzip seems to return a bogus one! */
|
||||
dialog_clear();
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
return FALSE;
|
||||
}
|
||||
i = waitpid(cpid, &j, 0);
|
||||
if (i < 0 || WEXITSTATUS(j)) {
|
||||
dialog_clear();
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
if (isDebug())
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: menus.c,v 1.36 1995/05/28 23:12:07 jkh Exp $
|
||||
* $Id: menus.c,v 1.37 1995/05/29 01:43:17 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -302,12 +302,14 @@ method.",
|
|||
DMENU_CALL, mediaSetCDROM, 0, 0 },
|
||||
{ "DOS", "Install from a DOS partition",
|
||||
DMENU_CALL, mediaSetDOS, 0, 0 },
|
||||
{ "File System", "Install from a UFS or NFS mounted distribution",
|
||||
DMENU_CALL, mediaSetFS, 0, 0 },
|
||||
{ "File System", "Install from a mounted filesystem",
|
||||
DMENU_CALL, mediaSetUFS, 0, 0 },
|
||||
{ "Floppy", "Install from a floppy disk set",
|
||||
DMENU_CALL, mediaSetFloppy, 0, 0 },
|
||||
{ "FTP", "Install from an Internet FTP server",
|
||||
DMENU_CALL, mediaSetFTP, 0, 0 },
|
||||
{ "NFS", "Install over NFS",
|
||||
DMENU_CALL, mediaSetNFS, 0, 0 },
|
||||
{ "Tape", "Install from SCSI or QIC tape",
|
||||
DMENU_CALL, mediaSetTape, 0, 0 },
|
||||
{ NULL } },
|
||||
|
|
@ -642,7 +644,7 @@ When you're done, select Cancel",
|
|||
"Press F1 for more information on these options",
|
||||
"configure.hlp",
|
||||
{ { "Add User", "Add users to the system",
|
||||
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
|
||||
DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 },
|
||||
{ "Console", "Customize system console behavior",
|
||||
DMENU_SUBMENU, &MenuSyscons, 0, 0 },
|
||||
{ "Networking", "Configure additional network services",
|
||||
|
|
@ -700,11 +702,11 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=canon.inria.fr", 0, 0 },
|
||||
{ "Germany", "ntps1-{0,1,2}.uni-erlangen.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.uni-erlangen.de", 0, 0 },
|
||||
{ "Germany", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
{ "Germany #2", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.cs.tu-berlin.de", 0, 0 },
|
||||
{ "Japan", "clock.nc.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.nc.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Japan", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
{ "Japan #2", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.tl.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Netherlands", "ntp0.nl.net (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntp0.nl.net", 0, 0 },
|
||||
|
|
@ -716,20 +718,20 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=swisstime.ethz.ch", 0, 0 },
|
||||
{ "U.S. East Coast", "bitsy.mit.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=bitsy.mit.edu", 0, 0 },
|
||||
{ "U.S. East Coast", "otc1.psu.edu (WWV clock)",
|
||||
{ "U.S. East Coast #2", "otc1.psu.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=otc1.psu.edu", 0, 0 },
|
||||
{ "U.S. West Coast", "apple.com (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=apple.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clepsydra.dec.com (GOES clock)",
|
||||
{ "U.S. West Coast #2", "clepsydra.dec.com (GOES clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clepsydra.dec.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. West Coast #3", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. Midwest", "ncar.ucar.edu (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
{ "U.S. Pacific", "chantry.hawaii.net (WWV/H clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=chantry.hawaii.net", 0, 0 },
|
||||
{ "U.S. Southwest", "shorty.chpc.utexas.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
{ NULL } },
|
||||
};
|
||||
|
||||
|
|
@ -738,9 +740,9 @@ DMenu MenuSyscons = {
|
|||
"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.",
|
||||
"Configure your screen saver settings",
|
||||
your preference.\n\n\
|
||||
When you are done setting configuration options, select Cancel.",
|
||||
"Configure your system console settings",
|
||||
NULL,
|
||||
{ { "Keymap", "Choose an alternate keyboard map",
|
||||
DMENU_SUBMENU, &MenuSysconsKeymap, 0, 0 },
|
||||
|
|
@ -798,9 +800,9 @@ when held down.",
|
|||
NULL,
|
||||
{ { "Slow", "Slow keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=slow", 0, 0 },
|
||||
{ "Normal", "\"normal\" keyboard repeat rate",
|
||||
{ "Normal", "\"Normal\" keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=normal", 0, 0 },
|
||||
{ "Fast", "fast keyboard repeat rate",
|
||||
{ "Fast", "Fast keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=fast", 0, 0 },
|
||||
{ "Default", "Use default keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=NO", 0, 0 },
|
||||
|
|
@ -818,11 +820,11 @@ probably enable one of these screen savers to prevent phosphor burn-in.",
|
|||
NULL,
|
||||
{ { "blank", "Simply blank the screen",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Green", "\"green\" power saving mode (if supported by monitor)",
|
||||
{ "Green", "\"Green\" power saving mode (if supported by monitor)",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Snake", "Draw a FreeBSD \"snake\" on your screen",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Star", "\"twinkling stars\" effect",
|
||||
{ "Star", "A \"twinkling stars\" effect",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Timeout", "Set the screen saver timeout interval",
|
||||
DMENU_CALL, configSaverTimeout, 0, 0 },
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.8 1995/05/23 18:06:15 jkh Exp $
|
||||
* $Id: misc.c,v 1.9 1995/05/25 01:22:19 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,7 +183,8 @@ Mkdir(char *ipath, void *data)
|
|||
return 0;
|
||||
|
||||
path = strdup(ipath);
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
p = path;
|
||||
if (p[0] == '/') /* Skip leading '/'. */
|
||||
++p;
|
||||
|
|
@ -198,7 +199,8 @@ Mkdir(char *ipath, void *data)
|
|||
msgConfirm("Couldn't stat directory %s: %s", path, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
|
||||
msgConfirm("Couldn't create directory %s: %s", path,strerror(errno));
|
||||
return 1;
|
||||
|
|
@ -231,7 +233,9 @@ Mount(char *mountp, void *dev)
|
|||
msgConfirm("Unable to make directory mountpoint for %s!", mountpoint);
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
if (isDebug())
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
bzero(&ufsargs, sizeof(ufsargs));
|
||||
ufsargs.fspec = device;
|
||||
if (mount(MOUNT_UFS, mountpoint, 0, (caddr_t)&ufsargs) == -1) {
|
||||
msgConfirm("Error mounting %s on %s : %s\n", device, mountpoint, strerror(errno));
|
||||
|
|
|
|||
|
|
@ -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.25 1995/05/29 00:50:04 jkh Exp $
|
||||
* $Id: msg.c,v 1.26 1995/05/29 01:43:18 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -49,6 +49,17 @@
|
|||
#define VTY_STATLINE 24
|
||||
#define TTY_STATLINE 23
|
||||
|
||||
Boolean
|
||||
isDebug(void)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
cp = getenv("debug");
|
||||
if (cp && !strcmp(cp, "yes"))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Whack up an informational message on the status line, in stand-out */
|
||||
void
|
||||
msgYap(char *fmt, ...)
|
||||
|
|
@ -105,7 +116,8 @@ msgInfo(char *fmt, ...)
|
|||
move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
|
||||
refresh();
|
||||
if (OnVTY) {
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
msgInfo(NULL);
|
||||
}
|
||||
free(errstr);
|
||||
|
|
@ -130,7 +142,7 @@ msgWarn(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Warning message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -154,7 +166,7 @@ msgError(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Error message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -231,7 +243,8 @@ msgNotify(char *fmt, ...)
|
|||
va_end(args);
|
||||
use_helpline(NULL);
|
||||
use_helpfile(NULL);
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
dialog_clear();
|
||||
dialog_msgbox("Information Dialog", errstr, -1, -1, 0);
|
||||
free(errstr);
|
||||
|
|
@ -254,8 +267,8 @@ msgYesNo(char *fmt, ...)
|
|||
use_helpfile(NULL);
|
||||
w = dupwin(newscr);
|
||||
if (OnVTY) {
|
||||
msgDebug("Switching back to VTY 0\n");
|
||||
ioctl(0, VT_RELDISP, 1); /* Switch back */
|
||||
msgDebug("User decision requested (type ALT-F1)\n");
|
||||
msgInfo(NULL);
|
||||
}
|
||||
ret = dialog_yesno("User Confirmation Requested", errstr, -1, -1);
|
||||
|
|
|
|||
|
|
@ -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: network.c,v 1.3 1995/05/28 09:31:38 jkh Exp $
|
||||
* $Id: network.c,v 1.4 1995/05/29 01:43:20 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -47,6 +47,7 @@
|
|||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
static Boolean networkInitialized;
|
||||
static Boolean startPPP(Device *devp);
|
||||
|
|
@ -68,8 +69,22 @@ mediaInitNetwork(Device *dev)
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
msgConfirm("Warning: SLIP is rather poorly supported in this revision\nof the installation due to the lack of a dialing utility.\nIf you can use PPP for this instead then you're much better\noff doing so, otherwise SLIP works fairly well for *hardwired*\nlinks. Use the shell on the 4TH screen (ALT-F4) to run slattach\nand otherwise set the link up, then hit return here to continue.");
|
||||
else {
|
||||
char *val;
|
||||
char attach[256];
|
||||
|
||||
/* Cheesy slip attach */
|
||||
snprintf(attach, 256, "slattach -a -h -l -s 9600 %s", dev->devname);
|
||||
val = msgGetInput(attach, "Warning: SLIP is rather poorly supported in this revision\nof the installation due to the lack of a dialing utility.\nIf you can use PPP for this instead then you're much better\noff doing so, otherwise SLIP works fairly well for *hardwired*\nlinks. Please edit the following slattach command for\ncorrectness (default here is VJ compression, Hardware flow-control,\nignore carrier and 9600 baud data rate) and hit return to execute it.");
|
||||
if (!val)
|
||||
return FALSE;
|
||||
else if (!vsystem(attach))
|
||||
return TRUE;
|
||||
else {
|
||||
msgConfirm("slattach returned a bad status! Please verify that\nthe command is correct and try again.");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
char *cp, ifconfig[64];
|
||||
|
|
|
|||
|
|
@ -1,21 +1,97 @@
|
|||
/*
|
||||
* The new sysinstall program.
|
||||
*
|
||||
* 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.21 1995/05/28 03:04:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* verbatim and that no modifications are made prior to this
|
||||
* point in the file.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Jordan Hubbard
|
||||
* for the FreeBSD Project.
|
||||
* 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/syslimits.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/dkbad.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include "ftp.h"
|
||||
|
||||
#define NFS
|
||||
#include <sys/mount.h>
|
||||
#undef NFS
|
||||
|
||||
Boolean NFSMounted;
|
||||
|
||||
Boolean
|
||||
mediaInitNFS(Device *dev)
|
||||
{
|
||||
if (NFSMounted)
|
||||
return TRUE;
|
||||
|
||||
if (Mkdir("/nfs", NULL))
|
||||
return FALSE;
|
||||
|
||||
if (!vsystem("mount_nfs %s %s %s /nfs", getenv("nfsSlowPC") ? "-r 1024 -w 1024" : "",
|
||||
getenv("nfsServerSecure") ? "-P" : "", dev->private))
|
||||
return TRUE;
|
||||
else {
|
||||
msgConfirm("Error mounting %s on /nfs: %s (%u)\n", dev->private, strerror(errno), errno);
|
||||
return FALSE;
|
||||
}
|
||||
NFSMounted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
mediaGetNFS(char *file)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/nfs/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "/nfs/dists/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
void
|
||||
mediaShutdownNFS(Device *dev)
|
||||
{
|
||||
if (!NFSMounted)
|
||||
return;
|
||||
msgDebug("Unmounting /nfs\n");
|
||||
if (unmount("/nfs", 0) != 0)
|
||||
msgConfirm("Could not unmount the NFS partition: %s\n", strerror(errno));
|
||||
if (isDebug())
|
||||
msgDebug("Unmount returned\n");
|
||||
NFSMounted = FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.38 1995/05/28 03:05:03 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.39 1995/05/28 09:31:39 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -160,6 +160,8 @@ typedef enum {
|
|||
DEVICE_TYPE_CDROM,
|
||||
DEVICE_TYPE_TAPE,
|
||||
DEVICE_TYPE_DOS,
|
||||
DEVICE_TYPE_UFS,
|
||||
DEVICE_TYPE_NFS,
|
||||
DEVICE_TYPE_ANY,
|
||||
} DeviceType;
|
||||
|
||||
|
|
@ -378,10 +380,11 @@ extern int mediaSetFloppy(char *str);
|
|||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFS(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern Boolean mediaGetType(void);
|
||||
extern Boolean mediaExtractDist(char *distname, char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
extern Boolean mediaVerify(void);
|
||||
|
||||
|
|
@ -403,6 +406,7 @@ extern int Mount(char *, void *data);
|
|||
extern int Mount_DOS(char *, void *data);
|
||||
|
||||
/* msg.c */
|
||||
extern Boolean isDebug(void);
|
||||
extern void msgInfo(char *fmt, ...);
|
||||
extern void msgYap(char *fmt, ...);
|
||||
extern void msgWarn(char *fmt, ...);
|
||||
|
|
@ -420,6 +424,11 @@ extern Boolean mediaInitNetwork(Device *dev);
|
|||
extern void mediaShutdownNetwork(Device *dev);
|
||||
extern int configRoutedFlags(char *str);
|
||||
|
||||
/* nfs.c */
|
||||
extern Boolean mediaInitNFS(Device *dev);
|
||||
extern int mediaGetNFS(char *file);
|
||||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* system.c */
|
||||
extern void systemInitialize(int argc, char **argv);
|
||||
extern void systemShutdown(void);
|
||||
|
|
@ -448,6 +457,7 @@ extern int tcpDeviceSelect(char *str);
|
|||
extern int set_termcap(void);
|
||||
|
||||
/* ufs.c */
|
||||
extern void mediaShutdownUFS(Device *dev);
|
||||
extern Boolean mediaInitUFS(Device *dev);
|
||||
extern int mediaGetUFS(char *file);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: system.c,v 1.40 1995/05/29 00:50:05 jkh Exp $
|
||||
* $Id: system.c,v 1.41 1995/05/29 02:13:31 phk Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
|
|
@ -102,10 +102,8 @@ systemShutdown(void)
|
|||
}
|
||||
/* REALLY exit! */
|
||||
if (RunningAsInit) {
|
||||
int fd, on = 1;
|
||||
|
||||
/* Put the console back */
|
||||
ioctl(0, VT_RELDISP, 1);
|
||||
ioctl(DebugFD, VT_RELDISP, 1);
|
||||
reboot(RB_HALT);
|
||||
}
|
||||
else
|
||||
|
|
@ -187,7 +185,6 @@ systemDisplayFile(char *file)
|
|||
use_helpline(NULL);
|
||||
w = dupwin(newscr);
|
||||
dialog_textbox(file, fname, LINES, COLS);
|
||||
unlink(fname);
|
||||
touchwin(w);
|
||||
wrefresh(w);
|
||||
delwin(w);
|
||||
|
|
@ -199,24 +196,45 @@ char *
|
|||
systemHelpFile(char *file, char *buf)
|
||||
{
|
||||
char *cp;
|
||||
static char oldfile[64]; /* Should be FILENAME_MAX but I don't feel like wasting that much space */
|
||||
|
||||
if (!file)
|
||||
return NULL;
|
||||
|
||||
if ((cp = getenv("LANG")) != NULL) {
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
/* Fall back to normal imperialistic mode :-) */
|
||||
cp = "en_US.ISO8859-1";
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -290,11 +308,14 @@ vsystem(char *fmt, ...)
|
|||
va_start(args, fmt);
|
||||
vsnprintf(cmd, FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
/* Find out if this command needs the wizardry of the shell */
|
||||
for (p="<>|'`=\"()" ; *p; p++)
|
||||
if (strchr(cmd,*p)) magic++;
|
||||
if (strchr(cmd, *p))
|
||||
magic++;
|
||||
omask = sigblock(sigmask(SIGCHLD));
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
if (isDebug())
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
switch(pid = fork()) {
|
||||
case -1: /* error */
|
||||
(void)sigsetmask(omask);
|
||||
|
|
@ -303,7 +324,7 @@ vsystem(char *fmt, ...)
|
|||
case 0: /* child */
|
||||
(void)sigsetmask(omask);
|
||||
if (DebugFD != -1) {
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgInfo("Command output is on debugging screen - type ALT-F2 to see it");
|
||||
dup2(DebugFD, 0);
|
||||
dup2(DebugFD, 1);
|
||||
|
|
@ -311,29 +332,29 @@ vsystem(char *fmt, ...)
|
|||
}
|
||||
#ifdef NOT_A_GOOD_IDEA_CRUNCHED_BINARY
|
||||
if (magic) {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
} else {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
}
|
||||
#else /* !CRUNCHED_BINARY */
|
||||
execl("/stand/sh", "sh", "-c", cmd, (char *)NULL);
|
||||
|
|
@ -347,7 +368,8 @@ vsystem(char *fmt, ...)
|
|||
(void)signal(SIGINT, intsave);
|
||||
(void)signal(SIGQUIT, quitsave);
|
||||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: tape.c,v 1.2 1995/05/27 23:39:33 phk Exp $
|
||||
* $Id: tape.c,v 1.3 1995/05/28 03:05:04 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -46,21 +46,59 @@
|
|||
/* These routines deal with getting things off of tape media */
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
static Boolean tapeInitted;
|
||||
|
||||
Boolean
|
||||
mediaInitTape(Device *dev)
|
||||
{
|
||||
return TRUE;
|
||||
int i;
|
||||
|
||||
if (tapeInitted)
|
||||
return TRUE;
|
||||
|
||||
Mkdir("/usr/tmp/tape", NULL);
|
||||
if (chdir("/usr/tmp/tape")) {
|
||||
Mkdir("/var/tmp/tape", NULL);
|
||||
if (chdir("/var/tmp/tape"))
|
||||
return FALSE;
|
||||
}
|
||||
msgConfirm("Insert tape into %s and press return", dev->description);
|
||||
if (!strcmp(dev->name, "ft0"))
|
||||
i = vsystem("ft | tar xvf -");
|
||||
else
|
||||
i = vsystem("tar xvf %s", dev->devname);
|
||||
if (!i) {
|
||||
tapeInitted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
msgConfirm("Tape extract command failed with status %d!", i);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
mediaGetTape(char *file)
|
||||
{
|
||||
return -1;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
sprintf(buf, "/usr/tmp/tape/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
sprintf(buf, "/var/tmp/tape/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
void
|
||||
mediaShutdownTape(Device *dev)
|
||||
{
|
||||
return;
|
||||
if (!tapeInitted)
|
||||
return;
|
||||
if (!access("/usr/tmp/tape", X_OK))
|
||||
(void)vsystem("rm -rf /usr/tmp/tape");
|
||||
else if (!access("/var/tmp/tape", X_OK))
|
||||
(void)vsystem("rm -rf /var/tmp/tape");
|
||||
tapeInitted = FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: tcpip.c,v 1.25 1995/05/28 09:31:44 jkh Exp $
|
||||
* $Id: tcpip.c,v 1.26 1995/05/28 23:12:09 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Gary J Palmer. All rights reserved.
|
||||
|
|
@ -196,12 +196,12 @@ tcpOpenDialog(Device *devp)
|
|||
/* Setup a nice screen for us to splat stuff onto */
|
||||
draw_box(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X, TCP_DIALOG_HEIGHT, TCP_DIALOG_WIDTH, dialog_attr, border_attr);
|
||||
wattrset(ds_win, dialog_attr);
|
||||
sprintf(title, " Interface %s ", devp->name);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X + 22, title);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X + 15, " Network Configuration ");
|
||||
draw_box(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 8, TCP_DIALOG_HEIGHT - 13, TCP_DIALOG_WIDTH - 17,
|
||||
dialog_attr, border_attr);
|
||||
wattrset(ds_win, dialog_attr);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 16, " Per Interface Configuration ");
|
||||
sprintf(title, " Configuration for Interface %s ", devp->name);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 14, title);
|
||||
|
||||
/* Initialise vars from previous device values */
|
||||
if (devp->private) {
|
||||
|
|
|
|||
|
|
@ -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: ufs.c,v 1.1 1995/05/27 10:39:04 jkh Exp $
|
||||
* $Id: ufs.c,v 1.2 1995/05/27 23:39:35 phk Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -44,17 +44,19 @@
|
|||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
Boolean
|
||||
mediaInitUFS(Device *dev)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
/* No init or shutdown routines necessary - all done in mediaSetUFS() */
|
||||
|
||||
int
|
||||
mediaGetUFS(char *file)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
char buf[PATH_MAX];
|
||||
|
||||
/* UFS has no Shutdown routine since this is handled at the device level */
|
||||
snprintf(buf, PATH_MAX, "%s/%s", (char *)mediaDevice->private, file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "%s/dists/%s", (char *)mediaDevice->private, file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: command.c,v 1.8 1995/05/19 21:30:32 jkh Exp $
|
||||
* $Id: command.c,v 1.9 1995/05/20 13:24:33 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -167,14 +167,16 @@ command_execute(void)
|
|||
if (commandStack[i]->cmds[j].type == CMD_SHELL) {
|
||||
msgNotify("Doing %s", commandStack[i]->cmds[j].ptr);
|
||||
ret = vsystem((char *)commandStack[i]->cmds[j].ptr);
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
else {
|
||||
/* It's a function pointer - call it with the key and the data */
|
||||
func = (commandFunc)commandStack[i]->cmds[j].ptr;
|
||||
msgNotify("%x: Execute(%s, %s)", func, commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
ret = (*func)(commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.11 1995/05/28 09:31:29 jkh Exp $
|
||||
* $Id: config.c,v 1.12 1995/05/28 20:28:07 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -174,7 +174,7 @@ configFstab(void)
|
|||
}
|
||||
|
||||
/* Go for the burn */
|
||||
msgDebug("Generating /etc/fstab file");
|
||||
msgDebug("Generating /etc/fstab file\n");
|
||||
for (i = 0; i < nchunks; i++) {
|
||||
fprintf(fstab, "/dev/%s\t\t\t%s\t\t%s %s %d %d\n", nameof(chunk_list[i]), mount_point(chunk_list[i]),
|
||||
fstype(chunk_list[i]), fstype_short(chunk_list[i]), seq_num(chunk_list[i]),
|
||||
|
|
@ -351,7 +351,7 @@ configPackages(char *str)
|
|||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
}
|
||||
}
|
||||
if (i != 0)
|
||||
if (i != 0 && isDebug())
|
||||
msgDebug("pkg_manage returns status of %d\n", i);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.32 1995/05/27 23:52:55 jkh Exp $
|
||||
* $Id: devices.c,v 1.33 1995/05/28 09:31:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,15 +183,28 @@ deviceGetAll(void)
|
|||
int i;
|
||||
|
||||
for (i = 0; names[i]; i++) {
|
||||
Chunk *c1;
|
||||
Disk *d;
|
||||
|
||||
d = Open_Disk(names[i]);
|
||||
if (!d)
|
||||
msgFatal("Unable to open disk %s", names[i]);
|
||||
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
|
||||
mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE, NULL, NULL, NULL, NULL, d);
|
||||
msgDebug("Found a device of type disk named: %s\n", names[i]);
|
||||
|
||||
/* Look for existing DOS partitions to register */
|
||||
for (c1 = d->chunks->part; c1; c1 = c1->next) {
|
||||
if (c1->type == fat) {
|
||||
Device *dev;
|
||||
|
||||
/* Got one! */
|
||||
dev = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
|
||||
mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
|
||||
dev->private = c1;
|
||||
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
free(names);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.65 1995/05/28 23:12:05 jkh Exp $
|
||||
* $Id: install.c,v 1.66 1995/05/29 00:50:02 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -254,6 +254,10 @@ installCommit(char *str)
|
|||
fclose(fp);
|
||||
hostsModified = TRUE;
|
||||
}
|
||||
/* If there's no kernel but there is a kernel.GENERIC, link it over */
|
||||
if (access("/kernel", R_OK))
|
||||
vsystem("ln -f /kernel.GENERIC /kernel");
|
||||
|
||||
msgConfirm("Installation completed successfully.\nHit return now to go back to the main menu.");
|
||||
SystemWasInstalled = TRUE;
|
||||
return 0;
|
||||
|
|
@ -379,7 +383,7 @@ copy_self(void)
|
|||
msgConfirm("Copy returned error status of %d!", i);
|
||||
|
||||
/* Copy the /etc files into their rightful place */
|
||||
(void)vsystem("(cd /stand; find etc) | cpio -pdmv /mnt");
|
||||
(void)vsystem("cd /mnt/stand; find etc | cpio -pdmv /mnt");
|
||||
}
|
||||
|
||||
static void loop_on_root_floppy();
|
||||
|
|
@ -391,7 +395,7 @@ root_extract(void)
|
|||
|
||||
if (OnCDROM) {
|
||||
fd = open("/floppies/root.flp", O_RDONLY);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
return;
|
||||
}
|
||||
if (mediaDevice) {
|
||||
|
|
@ -408,7 +412,7 @@ root_extract(void)
|
|||
fd = (*mediaDevice->get)("floppies/root.flp");
|
||||
if (fd != -1) {
|
||||
msgNotify("Loading root floppy from %s", mediaDevice->name);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -416,12 +420,14 @@ root_extract(void)
|
|||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
} else {
|
||||
msgConfirm("Couldn't get root floppy image from %s\n, falling back to floppy.", mediaDevice->name);
|
||||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
loop_on_root_floppy();
|
||||
}
|
||||
break;
|
||||
|
||||
case DEVICE_TYPE_TAPE:
|
||||
case DEVICE_TYPE_FLOPPY:
|
||||
default:
|
||||
loop_on_root_floppy();
|
||||
|
|
@ -437,7 +443,11 @@ loop_on_root_floppy(void)
|
|||
{
|
||||
int fd;
|
||||
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1)
|
||||
mediaExtractDist("root.flp", "/", fd);
|
||||
while (1) {
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1) {
|
||||
mediaExtractDist("/", fd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.36 1995/05/28 23:12:07 jkh Exp $
|
||||
* $Id: menus.c,v 1.37 1995/05/29 01:43:17 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -302,12 +302,14 @@ method.",
|
|||
DMENU_CALL, mediaSetCDROM, 0, 0 },
|
||||
{ "DOS", "Install from a DOS partition",
|
||||
DMENU_CALL, mediaSetDOS, 0, 0 },
|
||||
{ "File System", "Install from a UFS or NFS mounted distribution",
|
||||
DMENU_CALL, mediaSetFS, 0, 0 },
|
||||
{ "File System", "Install from a mounted filesystem",
|
||||
DMENU_CALL, mediaSetUFS, 0, 0 },
|
||||
{ "Floppy", "Install from a floppy disk set",
|
||||
DMENU_CALL, mediaSetFloppy, 0, 0 },
|
||||
{ "FTP", "Install from an Internet FTP server",
|
||||
DMENU_CALL, mediaSetFTP, 0, 0 },
|
||||
{ "NFS", "Install over NFS",
|
||||
DMENU_CALL, mediaSetNFS, 0, 0 },
|
||||
{ "Tape", "Install from SCSI or QIC tape",
|
||||
DMENU_CALL, mediaSetTape, 0, 0 },
|
||||
{ NULL } },
|
||||
|
|
@ -642,7 +644,7 @@ When you're done, select Cancel",
|
|||
"Press F1 for more information on these options",
|
||||
"configure.hlp",
|
||||
{ { "Add User", "Add users to the system",
|
||||
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
|
||||
DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 },
|
||||
{ "Console", "Customize system console behavior",
|
||||
DMENU_SUBMENU, &MenuSyscons, 0, 0 },
|
||||
{ "Networking", "Configure additional network services",
|
||||
|
|
@ -700,11 +702,11 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=canon.inria.fr", 0, 0 },
|
||||
{ "Germany", "ntps1-{0,1,2}.uni-erlangen.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.uni-erlangen.de", 0, 0 },
|
||||
{ "Germany", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
{ "Germany #2", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.cs.tu-berlin.de", 0, 0 },
|
||||
{ "Japan", "clock.nc.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.nc.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Japan", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
{ "Japan #2", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.tl.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Netherlands", "ntp0.nl.net (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntp0.nl.net", 0, 0 },
|
||||
|
|
@ -716,20 +718,20 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=swisstime.ethz.ch", 0, 0 },
|
||||
{ "U.S. East Coast", "bitsy.mit.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=bitsy.mit.edu", 0, 0 },
|
||||
{ "U.S. East Coast", "otc1.psu.edu (WWV clock)",
|
||||
{ "U.S. East Coast #2", "otc1.psu.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=otc1.psu.edu", 0, 0 },
|
||||
{ "U.S. West Coast", "apple.com (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=apple.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clepsydra.dec.com (GOES clock)",
|
||||
{ "U.S. West Coast #2", "clepsydra.dec.com (GOES clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clepsydra.dec.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. West Coast #3", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. Midwest", "ncar.ucar.edu (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
{ "U.S. Pacific", "chantry.hawaii.net (WWV/H clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=chantry.hawaii.net", 0, 0 },
|
||||
{ "U.S. Southwest", "shorty.chpc.utexas.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
{ NULL } },
|
||||
};
|
||||
|
||||
|
|
@ -738,9 +740,9 @@ DMenu MenuSyscons = {
|
|||
"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.",
|
||||
"Configure your screen saver settings",
|
||||
your preference.\n\n\
|
||||
When you are done setting configuration options, select Cancel.",
|
||||
"Configure your system console settings",
|
||||
NULL,
|
||||
{ { "Keymap", "Choose an alternate keyboard map",
|
||||
DMENU_SUBMENU, &MenuSysconsKeymap, 0, 0 },
|
||||
|
|
@ -798,9 +800,9 @@ when held down.",
|
|||
NULL,
|
||||
{ { "Slow", "Slow keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=slow", 0, 0 },
|
||||
{ "Normal", "\"normal\" keyboard repeat rate",
|
||||
{ "Normal", "\"Normal\" keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=normal", 0, 0 },
|
||||
{ "Fast", "fast keyboard repeat rate",
|
||||
{ "Fast", "Fast keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=fast", 0, 0 },
|
||||
{ "Default", "Use default keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=NO", 0, 0 },
|
||||
|
|
@ -818,11 +820,11 @@ probably enable one of these screen savers to prevent phosphor burn-in.",
|
|||
NULL,
|
||||
{ { "blank", "Simply blank the screen",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Green", "\"green\" power saving mode (if supported by monitor)",
|
||||
{ "Green", "\"Green\" power saving mode (if supported by monitor)",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Snake", "Draw a FreeBSD \"snake\" on your screen",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Star", "\"twinkling stars\" effect",
|
||||
{ "Star", "A \"twinkling stars\" effect",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Timeout", "Set the screen saver timeout interval",
|
||||
DMENU_CALL, configSaverTimeout, 0, 0 },
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.8 1995/05/23 18:06:15 jkh Exp $
|
||||
* $Id: misc.c,v 1.9 1995/05/25 01:22:19 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,7 +183,8 @@ Mkdir(char *ipath, void *data)
|
|||
return 0;
|
||||
|
||||
path = strdup(ipath);
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
p = path;
|
||||
if (p[0] == '/') /* Skip leading '/'. */
|
||||
++p;
|
||||
|
|
@ -198,7 +199,8 @@ Mkdir(char *ipath, void *data)
|
|||
msgConfirm("Couldn't stat directory %s: %s", path, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
|
||||
msgConfirm("Couldn't create directory %s: %s", path,strerror(errno));
|
||||
return 1;
|
||||
|
|
@ -231,7 +233,9 @@ Mount(char *mountp, void *dev)
|
|||
msgConfirm("Unable to make directory mountpoint for %s!", mountpoint);
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
if (isDebug())
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
bzero(&ufsargs, sizeof(ufsargs));
|
||||
ufsargs.fspec = device;
|
||||
if (mount(MOUNT_UFS, mountpoint, 0, (caddr_t)&ufsargs) == -1) {
|
||||
msgConfirm("Error mounting %s on %s : %s\n", device, mountpoint, strerror(errno));
|
||||
|
|
|
|||
|
|
@ -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.25 1995/05/29 00:50:04 jkh Exp $
|
||||
* $Id: msg.c,v 1.26 1995/05/29 01:43:18 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -49,6 +49,17 @@
|
|||
#define VTY_STATLINE 24
|
||||
#define TTY_STATLINE 23
|
||||
|
||||
Boolean
|
||||
isDebug(void)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
cp = getenv("debug");
|
||||
if (cp && !strcmp(cp, "yes"))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Whack up an informational message on the status line, in stand-out */
|
||||
void
|
||||
msgYap(char *fmt, ...)
|
||||
|
|
@ -105,7 +116,8 @@ msgInfo(char *fmt, ...)
|
|||
move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
|
||||
refresh();
|
||||
if (OnVTY) {
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
msgInfo(NULL);
|
||||
}
|
||||
free(errstr);
|
||||
|
|
@ -130,7 +142,7 @@ msgWarn(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Warning message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -154,7 +166,7 @@ msgError(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Error message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -231,7 +243,8 @@ msgNotify(char *fmt, ...)
|
|||
va_end(args);
|
||||
use_helpline(NULL);
|
||||
use_helpfile(NULL);
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
dialog_clear();
|
||||
dialog_msgbox("Information Dialog", errstr, -1, -1, 0);
|
||||
free(errstr);
|
||||
|
|
@ -254,8 +267,8 @@ msgYesNo(char *fmt, ...)
|
|||
use_helpfile(NULL);
|
||||
w = dupwin(newscr);
|
||||
if (OnVTY) {
|
||||
msgDebug("Switching back to VTY 0\n");
|
||||
ioctl(0, VT_RELDISP, 1); /* Switch back */
|
||||
msgDebug("User decision requested (type ALT-F1)\n");
|
||||
msgInfo(NULL);
|
||||
}
|
||||
ret = dialog_yesno("User Confirmation Requested", errstr, -1, -1);
|
||||
|
|
|
|||
|
|
@ -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.38 1995/05/28 03:05:03 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.39 1995/05/28 09:31:39 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -160,6 +160,8 @@ typedef enum {
|
|||
DEVICE_TYPE_CDROM,
|
||||
DEVICE_TYPE_TAPE,
|
||||
DEVICE_TYPE_DOS,
|
||||
DEVICE_TYPE_UFS,
|
||||
DEVICE_TYPE_NFS,
|
||||
DEVICE_TYPE_ANY,
|
||||
} DeviceType;
|
||||
|
||||
|
|
@ -378,10 +380,11 @@ extern int mediaSetFloppy(char *str);
|
|||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFS(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern Boolean mediaGetType(void);
|
||||
extern Boolean mediaExtractDist(char *distname, char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
extern Boolean mediaVerify(void);
|
||||
|
||||
|
|
@ -403,6 +406,7 @@ extern int Mount(char *, void *data);
|
|||
extern int Mount_DOS(char *, void *data);
|
||||
|
||||
/* msg.c */
|
||||
extern Boolean isDebug(void);
|
||||
extern void msgInfo(char *fmt, ...);
|
||||
extern void msgYap(char *fmt, ...);
|
||||
extern void msgWarn(char *fmt, ...);
|
||||
|
|
@ -420,6 +424,11 @@ extern Boolean mediaInitNetwork(Device *dev);
|
|||
extern void mediaShutdownNetwork(Device *dev);
|
||||
extern int configRoutedFlags(char *str);
|
||||
|
||||
/* nfs.c */
|
||||
extern Boolean mediaInitNFS(Device *dev);
|
||||
extern int mediaGetNFS(char *file);
|
||||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* system.c */
|
||||
extern void systemInitialize(int argc, char **argv);
|
||||
extern void systemShutdown(void);
|
||||
|
|
@ -448,6 +457,7 @@ extern int tcpDeviceSelect(char *str);
|
|||
extern int set_termcap(void);
|
||||
|
||||
/* ufs.c */
|
||||
extern void mediaShutdownUFS(Device *dev);
|
||||
extern Boolean mediaInitUFS(Device *dev);
|
||||
extern int mediaGetUFS(char *file);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: system.c,v 1.40 1995/05/29 00:50:05 jkh Exp $
|
||||
* $Id: system.c,v 1.41 1995/05/29 02:13:31 phk Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
|
|
@ -102,10 +102,8 @@ systemShutdown(void)
|
|||
}
|
||||
/* REALLY exit! */
|
||||
if (RunningAsInit) {
|
||||
int fd, on = 1;
|
||||
|
||||
/* Put the console back */
|
||||
ioctl(0, VT_RELDISP, 1);
|
||||
ioctl(DebugFD, VT_RELDISP, 1);
|
||||
reboot(RB_HALT);
|
||||
}
|
||||
else
|
||||
|
|
@ -187,7 +185,6 @@ systemDisplayFile(char *file)
|
|||
use_helpline(NULL);
|
||||
w = dupwin(newscr);
|
||||
dialog_textbox(file, fname, LINES, COLS);
|
||||
unlink(fname);
|
||||
touchwin(w);
|
||||
wrefresh(w);
|
||||
delwin(w);
|
||||
|
|
@ -199,24 +196,45 @@ char *
|
|||
systemHelpFile(char *file, char *buf)
|
||||
{
|
||||
char *cp;
|
||||
static char oldfile[64]; /* Should be FILENAME_MAX but I don't feel like wasting that much space */
|
||||
|
||||
if (!file)
|
||||
return NULL;
|
||||
|
||||
if ((cp = getenv("LANG")) != NULL) {
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
/* Fall back to normal imperialistic mode :-) */
|
||||
cp = "en_US.ISO8859-1";
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -290,11 +308,14 @@ vsystem(char *fmt, ...)
|
|||
va_start(args, fmt);
|
||||
vsnprintf(cmd, FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
/* Find out if this command needs the wizardry of the shell */
|
||||
for (p="<>|'`=\"()" ; *p; p++)
|
||||
if (strchr(cmd,*p)) magic++;
|
||||
if (strchr(cmd, *p))
|
||||
magic++;
|
||||
omask = sigblock(sigmask(SIGCHLD));
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
if (isDebug())
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
switch(pid = fork()) {
|
||||
case -1: /* error */
|
||||
(void)sigsetmask(omask);
|
||||
|
|
@ -303,7 +324,7 @@ vsystem(char *fmt, ...)
|
|||
case 0: /* child */
|
||||
(void)sigsetmask(omask);
|
||||
if (DebugFD != -1) {
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgInfo("Command output is on debugging screen - type ALT-F2 to see it");
|
||||
dup2(DebugFD, 0);
|
||||
dup2(DebugFD, 1);
|
||||
|
|
@ -311,29 +332,29 @@ vsystem(char *fmt, ...)
|
|||
}
|
||||
#ifdef NOT_A_GOOD_IDEA_CRUNCHED_BINARY
|
||||
if (magic) {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
} else {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
}
|
||||
#else /* !CRUNCHED_BINARY */
|
||||
execl("/stand/sh", "sh", "-c", cmd, (char *)NULL);
|
||||
|
|
@ -347,7 +368,8 @@ vsystem(char *fmt, ...)
|
|||
(void)signal(SIGINT, intsave);
|
||||
(void)signal(SIGQUIT, quitsave);
|
||||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: cdrom.c,v 1.3 1995/05/28 03:04:46 jkh Exp $
|
||||
* $Id: cdrom.c,v 1.4 1995/05/28 07:05:21 phk Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -72,6 +72,7 @@ mediaInitCDROM(Device *dev)
|
|||
if (Mkdir("/cdrom", NULL))
|
||||
return FALSE;
|
||||
|
||||
bzero(&args, sizeof(args));
|
||||
args.fspec = dev->devname;
|
||||
args.flags = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: command.c,v 1.8 1995/05/19 21:30:32 jkh Exp $
|
||||
* $Id: command.c,v 1.9 1995/05/20 13:24:33 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -167,14 +167,16 @@ command_execute(void)
|
|||
if (commandStack[i]->cmds[j].type == CMD_SHELL) {
|
||||
msgNotify("Doing %s", commandStack[i]->cmds[j].ptr);
|
||||
ret = vsystem((char *)commandStack[i]->cmds[j].ptr);
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
else {
|
||||
/* It's a function pointer - call it with the key and the data */
|
||||
func = (commandFunc)commandStack[i]->cmds[j].ptr;
|
||||
msgNotify("%x: Execute(%s, %s)", func, commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
ret = (*func)(commandStack[i]->key, commandStack[i]->cmds[j].data);
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
if (isDebug())
|
||||
msgDebug("Function @ %x returns status %d\n", commandStack[i]->cmds[j].ptr, ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.11 1995/05/28 09:31:29 jkh Exp $
|
||||
* $Id: config.c,v 1.12 1995/05/28 20:28:07 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -174,7 +174,7 @@ configFstab(void)
|
|||
}
|
||||
|
||||
/* Go for the burn */
|
||||
msgDebug("Generating /etc/fstab file");
|
||||
msgDebug("Generating /etc/fstab file\n");
|
||||
for (i = 0; i < nchunks; i++) {
|
||||
fprintf(fstab, "/dev/%s\t\t\t%s\t\t%s %s %d %d\n", nameof(chunk_list[i]), mount_point(chunk_list[i]),
|
||||
fstype(chunk_list[i]), fstype_short(chunk_list[i]), seq_num(chunk_list[i]),
|
||||
|
|
@ -351,7 +351,7 @@ configPackages(char *str)
|
|||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
}
|
||||
}
|
||||
if (i != 0)
|
||||
if (i != 0 && isDebug())
|
||||
msgDebug("pkg_manage returns status of %d\n", i);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.32 1995/05/27 23:52:55 jkh Exp $
|
||||
* $Id: devices.c,v 1.33 1995/05/28 09:31:31 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,15 +183,28 @@ deviceGetAll(void)
|
|||
int i;
|
||||
|
||||
for (i = 0; names[i]; i++) {
|
||||
Chunk *c1;
|
||||
Disk *d;
|
||||
|
||||
d = Open_Disk(names[i]);
|
||||
if (!d)
|
||||
msgFatal("Unable to open disk %s", names[i]);
|
||||
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE,
|
||||
mediaInitUFS, mediaGetUFS, NULL, deviceDiskFree, d);
|
||||
(void)deviceRegister(names[i], names[i], d->name, DEVICE_TYPE_DISK, FALSE, NULL, NULL, NULL, NULL, d);
|
||||
msgDebug("Found a device of type disk named: %s\n", names[i]);
|
||||
|
||||
/* Look for existing DOS partitions to register */
|
||||
for (c1 = d->chunks->part; c1; c1 = c1->next) {
|
||||
if (c1->type == fat) {
|
||||
Device *dev;
|
||||
|
||||
/* Got one! */
|
||||
dev = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
|
||||
mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
|
||||
dev->private = c1;
|
||||
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
free(names);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.30 1995/05/28 09:43:36 jkh Exp $
|
||||
* $Id: dist.c,v 1.31 1995/05/28 20:28:11 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -250,7 +250,8 @@ distExtract(char *parent, Distribution *me)
|
|||
snprintf(buf, 512, "%s/%s.tgz", path, dist);
|
||||
fd = (*mediaDevice->get)(buf);
|
||||
if (fd != -1) {
|
||||
status = mediaExtractDist(me[i].my_name, me[i].my_dir, fd);
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -260,14 +261,16 @@ distExtract(char *parent, Distribution *me)
|
|||
|
||||
snprintf(buf, sizeof buf, "/stand/info/%s/%s.inf", path, dist);
|
||||
if (!access(buf, R_OK)) {
|
||||
msgDebug("Parsing attributes file for %s\n", dist);
|
||||
if (isDebug())
|
||||
msgDebug("Parsing attributes file for %s\n", dist);
|
||||
dist_attr = safe_malloc(sizeof(Attribs) * MAX_ATTRIBS);
|
||||
if (attr_parse(&dist_attr, buf) == 0) {
|
||||
msgConfirm("Cannot load information file for %s distribution!\nPlease verify that your media is valid and try again.", dist);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
msgDebug("Looking for attribute `pieces'\n");
|
||||
if (isDebug())
|
||||
msgDebug("Looking for attribute `pieces'\n");
|
||||
tmp = attr_match(dist_attr, "pieces");
|
||||
if (tmp)
|
||||
numchunks = atoi(tmp);
|
||||
|
|
@ -277,7 +280,8 @@ distExtract(char *parent, Distribution *me)
|
|||
else
|
||||
numchunks = 0;
|
||||
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
if (isDebug())
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
|
||||
if (numchunks < 2 ) {
|
||||
snprintf(buf, 512, "%s/%s", path, dist);
|
||||
|
|
@ -287,7 +291,8 @@ distExtract(char *parent, Distribution *me)
|
|||
if (fd == -1) {
|
||||
status = FALSE;
|
||||
} else {
|
||||
status = mediaExtractDist(me[i].my_name, me[i].my_dir, fd);
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -296,9 +301,11 @@ distExtract(char *parent, Distribution *me)
|
|||
goto done;
|
||||
}
|
||||
|
||||
mediaExtractDistBegin(dist, me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
mediaExtractDistBegin(me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
dialog_clear();
|
||||
for (chunk = 0; chunk < numchunks; chunk++) {
|
||||
int n, retval;
|
||||
char prompt[80];
|
||||
|
||||
snprintf(buf, 512, "%s/%s.%c%c", path, dist, (chunk / 26) + 'a', (chunk % 26) + 'a');
|
||||
fd = (*mediaDevice->get)(buf);
|
||||
|
|
@ -306,6 +313,8 @@ distExtract(char *parent, Distribution *me)
|
|||
msgConfirm("failed to retreive piece file %s!\nAborting the transfer", buf);
|
||||
goto punt;
|
||||
}
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
dialog_gauge(" Progress ", prompt, 8, 10, 10, 40, (numchunks / (chunk + 1)));
|
||||
while ((n = read(fd, buf, sizeof buf)) > 0) {
|
||||
retval = write(fd2, buf, n);
|
||||
if (retval != n)
|
||||
|
|
@ -354,5 +363,6 @@ distExtract(char *parent, Distribution *me)
|
|||
void
|
||||
distExtractAll(void)
|
||||
{
|
||||
distExtract(NULL, DistTable);
|
||||
while (Dists)
|
||||
distExtract(NULL, DistTable);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: dos.c,v 1.2 1995/05/27 23:39:28 phk Exp $
|
||||
* $Id: dos.c,v 1.3 1995/05/28 03:04:54 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -69,6 +69,7 @@ mediaInitDOS(Device *dev)
|
|||
if (Mkdir("/dos", NULL))
|
||||
return FALSE;
|
||||
|
||||
bzero(&args, sizeof(args));
|
||||
args.fspec = dev->devname;
|
||||
args.uid = args.gid = 0;
|
||||
|
||||
|
|
@ -85,7 +86,10 @@ mediaGetDOS(char *file)
|
|||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/dos/%s", file);
|
||||
snprintf(buf, PATH_MAX, "/dos/freebsd/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "/dos/freebsd/dists/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
|
|
@ -97,7 +101,8 @@ mediaShutdownDOS(Device *dev)
|
|||
msgDebug("Unmounting /dos\n");
|
||||
if (unmount("/dos", 0) != 0)
|
||||
msgConfirm("Could not unmount the DOS partition: %s\n", strerror(errno));
|
||||
msgDebug("Unmount returned\n");
|
||||
if (isDebug())
|
||||
msgDebug("Unmount returned\n");
|
||||
DOSMounted = FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: floppy.c,v 1.3 1995/05/28 03:04:56 jkh Exp $
|
||||
* $Id: floppy.c,v 1.4 1995/05/29 00:50:01 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -142,7 +142,6 @@ mediaGetFloppy(char *file)
|
|||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/mnt/%s", file);
|
||||
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id: ftp.c,v 1.10 1995/05/26 19:28:01 jkh Exp $
|
||||
* $Id: ftp.c,v 1.11 1995/05/27 06:19:59 phk Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -48,7 +48,8 @@ debug(FTP_t ftp, const char *fmt, ...)
|
|||
#ifdef STANDALONE_FTP
|
||||
write(ftp->fd_debug,p,strlen(p));
|
||||
#else
|
||||
msgDebug(p);
|
||||
if (isDebug())
|
||||
msgDebug(p);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.65 1995/05/28 23:12:05 jkh Exp $
|
||||
* $Id: install.c,v 1.66 1995/05/29 00:50:02 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -254,6 +254,10 @@ installCommit(char *str)
|
|||
fclose(fp);
|
||||
hostsModified = TRUE;
|
||||
}
|
||||
/* If there's no kernel but there is a kernel.GENERIC, link it over */
|
||||
if (access("/kernel", R_OK))
|
||||
vsystem("ln -f /kernel.GENERIC /kernel");
|
||||
|
||||
msgConfirm("Installation completed successfully.\nHit return now to go back to the main menu.");
|
||||
SystemWasInstalled = TRUE;
|
||||
return 0;
|
||||
|
|
@ -379,7 +383,7 @@ copy_self(void)
|
|||
msgConfirm("Copy returned error status of %d!", i);
|
||||
|
||||
/* Copy the /etc files into their rightful place */
|
||||
(void)vsystem("(cd /stand; find etc) | cpio -pdmv /mnt");
|
||||
(void)vsystem("cd /mnt/stand; find etc | cpio -pdmv /mnt");
|
||||
}
|
||||
|
||||
static void loop_on_root_floppy();
|
||||
|
|
@ -391,7 +395,7 @@ root_extract(void)
|
|||
|
||||
if (OnCDROM) {
|
||||
fd = open("/floppies/root.flp", O_RDONLY);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
return;
|
||||
}
|
||||
if (mediaDevice) {
|
||||
|
|
@ -408,7 +412,7 @@ root_extract(void)
|
|||
fd = (*mediaDevice->get)("floppies/root.flp");
|
||||
if (fd != -1) {
|
||||
msgNotify("Loading root floppy from %s", mediaDevice->name);
|
||||
(void)mediaExtractDist("root.flp", "/", fd);
|
||||
(void)mediaExtractDist("/", fd);
|
||||
if (mediaDevice->close)
|
||||
(*mediaDevice->close)(mediaDevice, fd);
|
||||
else
|
||||
|
|
@ -416,12 +420,14 @@ root_extract(void)
|
|||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
} else {
|
||||
msgConfirm("Couldn't get root floppy image from %s\n, falling back to floppy.", mediaDevice->name);
|
||||
if (mediaDevice->shutdown)
|
||||
(*mediaDevice->shutdown)(mediaDevice);
|
||||
loop_on_root_floppy();
|
||||
}
|
||||
break;
|
||||
|
||||
case DEVICE_TYPE_TAPE:
|
||||
case DEVICE_TYPE_FLOPPY:
|
||||
default:
|
||||
loop_on_root_floppy();
|
||||
|
|
@ -437,7 +443,11 @@ loop_on_root_floppy(void)
|
|||
{
|
||||
int fd;
|
||||
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1)
|
||||
mediaExtractDist("root.flp", "/", fd);
|
||||
while (1) {
|
||||
fd = getRootFloppy();
|
||||
if (fd != -1) {
|
||||
mediaExtractDist("/", fd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.20 1995/05/27 23:39:31 phk Exp $
|
||||
* $Id: media.c,v 1.21 1995/05/28 03:04:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -164,13 +164,15 @@ int
|
|||
mediaSetDOS(char *str)
|
||||
{
|
||||
Device **devs;
|
||||
Disk *d;
|
||||
Chunk *c1;
|
||||
int i, cnt;
|
||||
int cnt;
|
||||
|
||||
devs = deviceFind(NULL, DEVICE_TYPE_DOS);
|
||||
cnt = deviceCount(devs);
|
||||
if (cnt > 1) {
|
||||
if (!cnt) {
|
||||
msgConfirm("No DOS primary partitions found! This installation method is unavailable");
|
||||
return 0;
|
||||
}
|
||||
else if (cnt > 1) {
|
||||
DMenu *menu;
|
||||
|
||||
menu = deviceCreateMenu(&MenuMediaDOS, DEVICE_TYPE_DOS, DOSHook);
|
||||
|
|
@ -179,34 +181,8 @@ mediaSetDOS(char *str)
|
|||
dmenuOpenSimple(menu);
|
||||
free(menu);
|
||||
}
|
||||
else if (cnt) {
|
||||
else
|
||||
mediaDevice = devs[0];
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
devs = deviceFind(NULL, DEVICE_TYPE_DISK);
|
||||
if (!devs) {
|
||||
msgConfirm("No disk devices found!");
|
||||
return 0;
|
||||
}
|
||||
/* Now go chewing through looking for a DOS FAT partition */
|
||||
for (i = 0; devs[i]; i++) {
|
||||
d = (Disk *)devs[i]->private;
|
||||
/* Now try to find a DOS partition */
|
||||
for (c1 = d->chunks->part; c1; c1 = c1->next) {
|
||||
if (c1->type == fat) {
|
||||
/* Got one! */
|
||||
mediaDevice = deviceRegister(c1->name, c1->name, c1->name, DEVICE_TYPE_DOS, TRUE,
|
||||
mediaInitDOS, mediaGetDOS, NULL, mediaShutdownDOS, NULL);
|
||||
mediaDevice->private = c1;
|
||||
msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mediaDevice)
|
||||
msgConfirm("No DOS primary partitions found! This installation method is unavailable");
|
||||
return mediaDevice ? 1 : 0;
|
||||
}
|
||||
|
||||
|
|
@ -280,25 +256,49 @@ mediaSetFTP(char *str)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return 0 if we successfully found and set the installation type to
|
||||
* be some sort of mounted filesystem (it's also mounted at this point)
|
||||
*/
|
||||
int
|
||||
mediaSetFS(char *str)
|
||||
mediaSetUFS(char *str)
|
||||
{
|
||||
return 0;
|
||||
static Device ufsDevice;
|
||||
char *val;
|
||||
|
||||
val = msgGetInput(NULL, "Enter a fully qualified pathname for the directory\ncontaining the FreeBSD distribtion files:");
|
||||
if (!val)
|
||||
return 0;
|
||||
strcpy(ufsDevice.name, "ufs");
|
||||
ufsDevice.type = DEVICE_TYPE_UFS;
|
||||
ufsDevice.get = mediaGetUFS;
|
||||
ufsDevice.private = strdup(val);
|
||||
mediaDevice = &ufsDevice;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
mediaSetNFS(char *str)
|
||||
{
|
||||
static Device nfsDevice;
|
||||
char *val;
|
||||
|
||||
val = msgGetInput(NULL, "Please enter the full NFS file specification for the remote\nhost and directory containing the FreeBSD distribution files.\nThis should be in the format: hostname:/some/freebsd/dir");
|
||||
if (!val)
|
||||
return 0;
|
||||
strcpy(nfsDevice.name, "nfs");
|
||||
nfsDevice.type = DEVICE_TYPE_NFS;
|
||||
nfsDevice.init = mediaInitNFS;
|
||||
nfsDevice.get = mediaGetNFS;
|
||||
nfsDevice.shutdown = mediaShutdownNFS;
|
||||
nfsDevice.private = strdup(val);
|
||||
mediaDevice = &nfsDevice;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Boolean
|
||||
mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
||||
mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpid)
|
||||
{
|
||||
int i, pfd[2],qfd[2];
|
||||
|
||||
if (!dir)
|
||||
dir = "/";
|
||||
msgWeHaveOutput("Extracting %s into %s directory..", distname, dir);
|
||||
|
||||
Mkdir(dir, NULL);
|
||||
chdir(dir);
|
||||
pipe(pfd);
|
||||
|
|
@ -316,7 +316,8 @@ mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
|||
close(qfd[1]);
|
||||
close(pfd[0]);
|
||||
i = execl("/stand/gunzip", "/stand/gunzip", 0);
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
*fd = qfd[1];
|
||||
|
|
@ -335,7 +336,8 @@ mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpid)
|
|||
dup2(1, 2);
|
||||
}
|
||||
i = execl("/stand/cpio", "/stand/cpio", "-iduVm", "-H", "tar", 0);
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
close(pfd[0]);
|
||||
|
|
@ -351,13 +353,15 @@ mediaExtractDistEnd(int zpid, int cpid)
|
|||
i = waitpid(zpid, &j, 0);
|
||||
if (i < 0) { /* Don't check status - gunzip seems to return a bogus one! */
|
||||
dialog_clear();
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
return FALSE;
|
||||
}
|
||||
i = waitpid(cpid, &j, 0);
|
||||
if (i < 0 || WEXITSTATUS(j)) {
|
||||
dialog_clear();
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
if (isDebug())
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
@ -365,13 +369,12 @@ mediaExtractDistEnd(int zpid, int cpid)
|
|||
|
||||
|
||||
Boolean
|
||||
mediaExtractDist(char *distname, char *dir, int fd)
|
||||
mediaExtractDist(char *dir, int fd)
|
||||
{
|
||||
int i, j, zpid, cpid, pfd[2];
|
||||
|
||||
if (!dir)
|
||||
dir = "/";
|
||||
msgWeHaveOutput("Extracting %s into %s directory..", distname, dir);
|
||||
|
||||
Mkdir(dir, NULL);
|
||||
chdir(dir);
|
||||
|
|
@ -388,7 +391,8 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
}
|
||||
close(pfd[0]);
|
||||
i = execl("/stand/gunzip", "/stand/gunzip", 0);
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/gunzip command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
cpid = fork();
|
||||
|
|
@ -405,7 +409,8 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
dup2(1, 2);
|
||||
}
|
||||
i = execl("/stand/cpio", "/stand/cpio", "-iduVm", "-H", "tar", 0);
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("/stand/cpio command returns %d status\n", i);
|
||||
exit(i);
|
||||
}
|
||||
close(pfd[0]);
|
||||
|
|
@ -414,13 +419,15 @@ mediaExtractDist(char *distname, char *dir, int fd)
|
|||
i = waitpid(zpid, &j, 0);
|
||||
if (i < 0) { /* Don't check status - gunzip seems to return a bogus one! */
|
||||
dialog_clear();
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
if (isDebug())
|
||||
msgDebug("wait for gunzip returned status of %d!\n", i);
|
||||
return FALSE;
|
||||
}
|
||||
i = waitpid(cpid, &j, 0);
|
||||
if (i < 0 || WEXITSTATUS(j)) {
|
||||
dialog_clear();
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
if (isDebug())
|
||||
msgDebug("cpio returned error status of %d!\n", WEXITSTATUS(j));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: menus.c,v 1.36 1995/05/28 23:12:07 jkh Exp $
|
||||
* $Id: menus.c,v 1.37 1995/05/29 01:43:17 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -302,12 +302,14 @@ method.",
|
|||
DMENU_CALL, mediaSetCDROM, 0, 0 },
|
||||
{ "DOS", "Install from a DOS partition",
|
||||
DMENU_CALL, mediaSetDOS, 0, 0 },
|
||||
{ "File System", "Install from a UFS or NFS mounted distribution",
|
||||
DMENU_CALL, mediaSetFS, 0, 0 },
|
||||
{ "File System", "Install from a mounted filesystem",
|
||||
DMENU_CALL, mediaSetUFS, 0, 0 },
|
||||
{ "Floppy", "Install from a floppy disk set",
|
||||
DMENU_CALL, mediaSetFloppy, 0, 0 },
|
||||
{ "FTP", "Install from an Internet FTP server",
|
||||
DMENU_CALL, mediaSetFTP, 0, 0 },
|
||||
{ "NFS", "Install over NFS",
|
||||
DMENU_CALL, mediaSetNFS, 0, 0 },
|
||||
{ "Tape", "Install from SCSI or QIC tape",
|
||||
DMENU_CALL, mediaSetTape, 0, 0 },
|
||||
{ NULL } },
|
||||
|
|
@ -642,7 +644,7 @@ When you're done, select Cancel",
|
|||
"Press F1 for more information on these options",
|
||||
"configure.hlp",
|
||||
{ { "Add User", "Add users to the system",
|
||||
DMENU_SYSTEM_COMMAND, "adduser", 0, 0 },
|
||||
DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 },
|
||||
{ "Console", "Customize system console behavior",
|
||||
DMENU_SUBMENU, &MenuSyscons, 0, 0 },
|
||||
{ "Networking", "Configure additional network services",
|
||||
|
|
@ -700,11 +702,11 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=canon.inria.fr", 0, 0 },
|
||||
{ "Germany", "ntps1-{0,1,2}.uni-erlangen.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.uni-erlangen.de", 0, 0 },
|
||||
{ "Germany", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
{ "Germany #2", "ntps1-0.cs.tu-berlin.de (GPS)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntps1-0.cs.tu-berlin.de", 0, 0 },
|
||||
{ "Japan", "clock.nc.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.nc.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Japan", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
{ "Japan #2", "clock.tl.fukuoka-u.ac.jp (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.tl.fukuoka-u.ac.jp", 0, 0},
|
||||
{ "Netherlands", "ntp0.nl.net (GPS clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ntp0.nl.net", 0, 0 },
|
||||
|
|
@ -716,20 +718,20 @@ close to you to have your system time syncronized accordingly.",
|
|||
DMENU_SET_VARIABLE, "ntpdate=swisstime.ethz.ch", 0, 0 },
|
||||
{ "U.S. East Coast", "bitsy.mit.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=bitsy.mit.edu", 0, 0 },
|
||||
{ "U.S. East Coast", "otc1.psu.edu (WWV clock)",
|
||||
{ "U.S. East Coast #2", "otc1.psu.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=otc1.psu.edu", 0, 0 },
|
||||
{ "U.S. West Coast", "apple.com (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=apple.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clepsydra.dec.com (GOES clock)",
|
||||
{ "U.S. West Coast #2", "clepsydra.dec.com (GOES clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clepsydra.dec.com", 0, 0 },
|
||||
{ "U.S. West Coast", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. West Coast #3", "clock.llnl.gov (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=clock.llnl.gov", 0, 0 },
|
||||
{ "U.S. Midwest", "ncar.ucar.edu (WWVB clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=ncar.ucar.edu", 0, 0 },
|
||||
{ "U.S. Pacific", "chantry.hawaii.net (WWV/H clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=chantry.hawaii.net", 0, 0 },
|
||||
{ "U.S. Southwest", "shorty.chpc.utexas.edu (WWV clock)",
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
DMENU_SET_VARIABLE, "ntpdate=shorty.chpc.utexas.edu", 0, 0 },
|
||||
{ NULL } },
|
||||
};
|
||||
|
||||
|
|
@ -738,9 +740,9 @@ DMenu MenuSyscons = {
|
|||
"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.",
|
||||
"Configure your screen saver settings",
|
||||
your preference.\n\n\
|
||||
When you are done setting configuration options, select Cancel.",
|
||||
"Configure your system console settings",
|
||||
NULL,
|
||||
{ { "Keymap", "Choose an alternate keyboard map",
|
||||
DMENU_SUBMENU, &MenuSysconsKeymap, 0, 0 },
|
||||
|
|
@ -798,9 +800,9 @@ when held down.",
|
|||
NULL,
|
||||
{ { "Slow", "Slow keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=slow", 0, 0 },
|
||||
{ "Normal", "\"normal\" keyboard repeat rate",
|
||||
{ "Normal", "\"Normal\" keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=normal", 0, 0 },
|
||||
{ "Fast", "fast keyboard repeat rate",
|
||||
{ "Fast", "Fast keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=fast", 0, 0 },
|
||||
{ "Default", "Use default keyboard repeat rate",
|
||||
DMENU_SET_VARIABLE, "keyrate=NO", 0, 0 },
|
||||
|
|
@ -818,11 +820,11 @@ probably enable one of these screen savers to prevent phosphor burn-in.",
|
|||
NULL,
|
||||
{ { "blank", "Simply blank the screen",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Green", "\"green\" power saving mode (if supported by monitor)",
|
||||
{ "Green", "\"Green\" power saving mode (if supported by monitor)",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Snake", "Draw a FreeBSD \"snake\" on your screen",
|
||||
DMENU_SET_VARIABLE, "saver=snake", 0, 0 },
|
||||
{ "Star", "\"twinkling stars\" effect",
|
||||
{ "Star", "A \"twinkling stars\" effect",
|
||||
DMENU_SET_VARIABLE, "saver=star", 0, 0 },
|
||||
{ "Timeout", "Set the screen saver timeout interval",
|
||||
DMENU_CALL, configSaverTimeout, 0, 0 },
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.8 1995/05/23 18:06:15 jkh Exp $
|
||||
* $Id: misc.c,v 1.9 1995/05/25 01:22:19 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -183,7 +183,8 @@ Mkdir(char *ipath, void *data)
|
|||
return 0;
|
||||
|
||||
path = strdup(ipath);
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s)\n", path);
|
||||
p = path;
|
||||
if (p[0] == '/') /* Skip leading '/'. */
|
||||
++p;
|
||||
|
|
@ -198,7 +199,8 @@ Mkdir(char *ipath, void *data)
|
|||
msgConfirm("Couldn't stat directory %s: %s", path, strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (isDebug())
|
||||
msgDebug("mkdir(%s..)\n", path);
|
||||
if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
|
||||
msgConfirm("Couldn't create directory %s: %s", path,strerror(errno));
|
||||
return 1;
|
||||
|
|
@ -231,7 +233,9 @@ Mount(char *mountp, void *dev)
|
|||
msgConfirm("Unable to make directory mountpoint for %s!", mountpoint);
|
||||
return 1;
|
||||
}
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
if (isDebug())
|
||||
msgDebug("mount %s %s\n", device, mountpoint);
|
||||
bzero(&ufsargs, sizeof(ufsargs));
|
||||
ufsargs.fspec = device;
|
||||
if (mount(MOUNT_UFS, mountpoint, 0, (caddr_t)&ufsargs) == -1) {
|
||||
msgConfirm("Error mounting %s on %s : %s\n", device, mountpoint, strerror(errno));
|
||||
|
|
|
|||
|
|
@ -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.25 1995/05/29 00:50:04 jkh Exp $
|
||||
* $Id: msg.c,v 1.26 1995/05/29 01:43:18 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -49,6 +49,17 @@
|
|||
#define VTY_STATLINE 24
|
||||
#define TTY_STATLINE 23
|
||||
|
||||
Boolean
|
||||
isDebug(void)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
cp = getenv("debug");
|
||||
if (cp && !strcmp(cp, "yes"))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Whack up an informational message on the status line, in stand-out */
|
||||
void
|
||||
msgYap(char *fmt, ...)
|
||||
|
|
@ -105,7 +116,8 @@ msgInfo(char *fmt, ...)
|
|||
move(OnVTY ? VTY_STATLINE : TTY_STATLINE, 79);
|
||||
refresh();
|
||||
if (OnVTY) {
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Information: `%s'\n", errstr);
|
||||
msgInfo(NULL);
|
||||
}
|
||||
free(errstr);
|
||||
|
|
@ -130,7 +142,7 @@ msgWarn(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Warning message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -154,7 +166,7 @@ msgError(char *fmt, ...)
|
|||
mvaddstr(OnVTY ? VTY_STATLINE : TTY_STATLINE, 0, errstr);
|
||||
attrset(attrs);
|
||||
refresh();
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgDebug("Error message `%s'\n", errstr);
|
||||
free(errstr);
|
||||
}
|
||||
|
|
@ -231,7 +243,8 @@ msgNotify(char *fmt, ...)
|
|||
va_end(args);
|
||||
use_helpline(NULL);
|
||||
use_helpfile(NULL);
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
if (isDebug())
|
||||
msgDebug("Notify: %s\n", errstr);
|
||||
dialog_clear();
|
||||
dialog_msgbox("Information Dialog", errstr, -1, -1, 0);
|
||||
free(errstr);
|
||||
|
|
@ -254,8 +267,8 @@ msgYesNo(char *fmt, ...)
|
|||
use_helpfile(NULL);
|
||||
w = dupwin(newscr);
|
||||
if (OnVTY) {
|
||||
msgDebug("Switching back to VTY 0\n");
|
||||
ioctl(0, VT_RELDISP, 1); /* Switch back */
|
||||
msgDebug("User decision requested (type ALT-F1)\n");
|
||||
msgInfo(NULL);
|
||||
}
|
||||
ret = dialog_yesno("User Confirmation Requested", errstr, -1, -1);
|
||||
|
|
|
|||
|
|
@ -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: network.c,v 1.3 1995/05/28 09:31:38 jkh Exp $
|
||||
* $Id: network.c,v 1.4 1995/05/29 01:43:20 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -47,6 +47,7 @@
|
|||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
static Boolean networkInitialized;
|
||||
static Boolean startPPP(Device *devp);
|
||||
|
|
@ -68,8 +69,22 @@ mediaInitNetwork(Device *dev)
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
msgConfirm("Warning: SLIP is rather poorly supported in this revision\nof the installation due to the lack of a dialing utility.\nIf you can use PPP for this instead then you're much better\noff doing so, otherwise SLIP works fairly well for *hardwired*\nlinks. Use the shell on the 4TH screen (ALT-F4) to run slattach\nand otherwise set the link up, then hit return here to continue.");
|
||||
else {
|
||||
char *val;
|
||||
char attach[256];
|
||||
|
||||
/* Cheesy slip attach */
|
||||
snprintf(attach, 256, "slattach -a -h -l -s 9600 %s", dev->devname);
|
||||
val = msgGetInput(attach, "Warning: SLIP is rather poorly supported in this revision\nof the installation due to the lack of a dialing utility.\nIf you can use PPP for this instead then you're much better\noff doing so, otherwise SLIP works fairly well for *hardwired*\nlinks. Please edit the following slattach command for\ncorrectness (default here is VJ compression, Hardware flow-control,\nignore carrier and 9600 baud data rate) and hit return to execute it.");
|
||||
if (!val)
|
||||
return FALSE;
|
||||
else if (!vsystem(attach))
|
||||
return TRUE;
|
||||
else {
|
||||
msgConfirm("slattach returned a bad status! Please verify that\nthe command is correct and try again.");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
char *cp, ifconfig[64];
|
||||
|
|
|
|||
|
|
@ -1,21 +1,97 @@
|
|||
/*
|
||||
* The new sysinstall program.
|
||||
*
|
||||
* 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.21 1995/05/28 03:04:58 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* verbatim and that no modifications are made prior to this
|
||||
* point in the file.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Jordan Hubbard
|
||||
* for the FreeBSD Project.
|
||||
* 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/syslimits.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/dkbad.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include "ftp.h"
|
||||
|
||||
#define NFS
|
||||
#include <sys/mount.h>
|
||||
#undef NFS
|
||||
|
||||
Boolean NFSMounted;
|
||||
|
||||
Boolean
|
||||
mediaInitNFS(Device *dev)
|
||||
{
|
||||
if (NFSMounted)
|
||||
return TRUE;
|
||||
|
||||
if (Mkdir("/nfs", NULL))
|
||||
return FALSE;
|
||||
|
||||
if (!vsystem("mount_nfs %s %s %s /nfs", getenv("nfsSlowPC") ? "-r 1024 -w 1024" : "",
|
||||
getenv("nfsServerSecure") ? "-P" : "", dev->private))
|
||||
return TRUE;
|
||||
else {
|
||||
msgConfirm("Error mounting %s on /nfs: %s (%u)\n", dev->private, strerror(errno), errno);
|
||||
return FALSE;
|
||||
}
|
||||
NFSMounted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
mediaGetNFS(char *file)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/nfs/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "/nfs/dists/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
void
|
||||
mediaShutdownNFS(Device *dev)
|
||||
{
|
||||
if (!NFSMounted)
|
||||
return;
|
||||
msgDebug("Unmounting /nfs\n");
|
||||
if (unmount("/nfs", 0) != 0)
|
||||
msgConfirm("Could not unmount the NFS partition: %s\n", strerror(errno));
|
||||
if (isDebug())
|
||||
msgDebug("Unmount returned\n");
|
||||
NFSMounted = FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.38 1995/05/28 03:05:03 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.39 1995/05/28 09:31:39 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -160,6 +160,8 @@ typedef enum {
|
|||
DEVICE_TYPE_CDROM,
|
||||
DEVICE_TYPE_TAPE,
|
||||
DEVICE_TYPE_DOS,
|
||||
DEVICE_TYPE_UFS,
|
||||
DEVICE_TYPE_NFS,
|
||||
DEVICE_TYPE_ANY,
|
||||
} DeviceType;
|
||||
|
||||
|
|
@ -378,10 +380,11 @@ extern int mediaSetFloppy(char *str);
|
|||
extern int mediaSetDOS(char *str);
|
||||
extern int mediaSetTape(char *str);
|
||||
extern int mediaSetFTP(char *str);
|
||||
extern int mediaSetFS(char *str);
|
||||
extern int mediaSetUFS(char *str);
|
||||
extern int mediaSetNFS(char *str);
|
||||
extern Boolean mediaGetType(void);
|
||||
extern Boolean mediaExtractDist(char *distname, char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *distname, char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDist(char *dir, int fd);
|
||||
extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
|
||||
extern Boolean mediaExtractDistEnd(int zpid, int cpid);
|
||||
extern Boolean mediaVerify(void);
|
||||
|
||||
|
|
@ -403,6 +406,7 @@ extern int Mount(char *, void *data);
|
|||
extern int Mount_DOS(char *, void *data);
|
||||
|
||||
/* msg.c */
|
||||
extern Boolean isDebug(void);
|
||||
extern void msgInfo(char *fmt, ...);
|
||||
extern void msgYap(char *fmt, ...);
|
||||
extern void msgWarn(char *fmt, ...);
|
||||
|
|
@ -420,6 +424,11 @@ extern Boolean mediaInitNetwork(Device *dev);
|
|||
extern void mediaShutdownNetwork(Device *dev);
|
||||
extern int configRoutedFlags(char *str);
|
||||
|
||||
/* nfs.c */
|
||||
extern Boolean mediaInitNFS(Device *dev);
|
||||
extern int mediaGetNFS(char *file);
|
||||
extern void mediaShutdownNFS(Device *dev);
|
||||
|
||||
/* system.c */
|
||||
extern void systemInitialize(int argc, char **argv);
|
||||
extern void systemShutdown(void);
|
||||
|
|
@ -448,6 +457,7 @@ extern int tcpDeviceSelect(char *str);
|
|||
extern int set_termcap(void);
|
||||
|
||||
/* ufs.c */
|
||||
extern void mediaShutdownUFS(Device *dev);
|
||||
extern Boolean mediaInitUFS(Device *dev);
|
||||
extern int mediaGetUFS(char *file);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: system.c,v 1.40 1995/05/29 00:50:05 jkh Exp $
|
||||
* $Id: system.c,v 1.41 1995/05/29 02:13:31 phk Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
|
|
@ -102,10 +102,8 @@ systemShutdown(void)
|
|||
}
|
||||
/* REALLY exit! */
|
||||
if (RunningAsInit) {
|
||||
int fd, on = 1;
|
||||
|
||||
/* Put the console back */
|
||||
ioctl(0, VT_RELDISP, 1);
|
||||
ioctl(DebugFD, VT_RELDISP, 1);
|
||||
reboot(RB_HALT);
|
||||
}
|
||||
else
|
||||
|
|
@ -187,7 +185,6 @@ systemDisplayFile(char *file)
|
|||
use_helpline(NULL);
|
||||
w = dupwin(newscr);
|
||||
dialog_textbox(file, fname, LINES, COLS);
|
||||
unlink(fname);
|
||||
touchwin(w);
|
||||
wrefresh(w);
|
||||
delwin(w);
|
||||
|
|
@ -199,24 +196,45 @@ char *
|
|||
systemHelpFile(char *file, char *buf)
|
||||
{
|
||||
char *cp;
|
||||
static char oldfile[64]; /* Should be FILENAME_MAX but I don't feel like wasting that much space */
|
||||
|
||||
if (!file)
|
||||
return NULL;
|
||||
|
||||
if ((cp = getenv("LANG")) != NULL) {
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
/* Fall back to normal imperialistic mode :-) */
|
||||
cp = "en_US.ISO8859-1";
|
||||
snprintf(buf, FILENAME_MAX, "%s/%s", cp, file);
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s",buf);
|
||||
if (oldfile[0]) {
|
||||
if (!strcmp(buf, oldfile))
|
||||
return oldfile;
|
||||
else {
|
||||
unlink(oldfile);
|
||||
oldfile[0] = '\0';
|
||||
}
|
||||
}
|
||||
vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1",buf);
|
||||
snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file);
|
||||
if (file_readable(buf))
|
||||
if (file_readable(buf)) {
|
||||
strcpy(oldfile, buf);
|
||||
return buf;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -290,11 +308,14 @@ vsystem(char *fmt, ...)
|
|||
va_start(args, fmt);
|
||||
vsnprintf(cmd, FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
/* Find out if this command needs the wizardry of the shell */
|
||||
for (p="<>|'`=\"()" ; *p; p++)
|
||||
if (strchr(cmd,*p)) magic++;
|
||||
if (strchr(cmd, *p))
|
||||
magic++;
|
||||
omask = sigblock(sigmask(SIGCHLD));
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
if (isDebug())
|
||||
msgDebug("Executing command `%s' (Magic=%d)\n", cmd, magic);
|
||||
switch(pid = fork()) {
|
||||
case -1: /* error */
|
||||
(void)sigsetmask(omask);
|
||||
|
|
@ -303,7 +324,7 @@ vsystem(char *fmt, ...)
|
|||
case 0: /* child */
|
||||
(void)sigsetmask(omask);
|
||||
if (DebugFD != -1) {
|
||||
if (OnVTY)
|
||||
if (OnVTY && isDebug())
|
||||
msgInfo("Command output is on debugging screen - type ALT-F2 to see it");
|
||||
dup2(DebugFD, 0);
|
||||
dup2(DebugFD, 1);
|
||||
|
|
@ -311,29 +332,29 @@ vsystem(char *fmt, ...)
|
|||
}
|
||||
#ifdef NOT_A_GOOD_IDEA_CRUNCHED_BINARY
|
||||
if (magic) {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
argv[i++] = "sh";
|
||||
argv[i++] = "-c";
|
||||
argv[i++] = cmd;
|
||||
argv[i] = 0;
|
||||
exit(crunched_main(i,argv));
|
||||
} else {
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
char *argv[100];
|
||||
i = 0;
|
||||
argv[i++] = "crunch";
|
||||
while (cmd && *cmd) {
|
||||
argv[i] = strsep(&cmd," \t");
|
||||
if (*argv[i])
|
||||
i++;
|
||||
}
|
||||
argv[i] = 0;
|
||||
if (crunched_here(argv[1]))
|
||||
exit(crunched_main(i,argv));
|
||||
else
|
||||
execvp(argv[1],argv+1);
|
||||
kill(getpid(),9);
|
||||
}
|
||||
#else /* !CRUNCHED_BINARY */
|
||||
execl("/stand/sh", "sh", "-c", cmd, (char *)NULL);
|
||||
|
|
@ -347,7 +368,8 @@ vsystem(char *fmt, ...)
|
|||
(void)signal(SIGINT, intsave);
|
||||
(void)signal(SIGQUIT, quitsave);
|
||||
i = (pid == -1) ? -1 : WEXITSTATUS(pstat);
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
if (isDebug())
|
||||
msgDebug("Command `%s' returns status of %d\n", cmd, i);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: tape.c,v 1.2 1995/05/27 23:39:33 phk Exp $
|
||||
* $Id: tape.c,v 1.3 1995/05/28 03:05:04 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -46,21 +46,59 @@
|
|||
/* These routines deal with getting things off of tape media */
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
static Boolean tapeInitted;
|
||||
|
||||
Boolean
|
||||
mediaInitTape(Device *dev)
|
||||
{
|
||||
return TRUE;
|
||||
int i;
|
||||
|
||||
if (tapeInitted)
|
||||
return TRUE;
|
||||
|
||||
Mkdir("/usr/tmp/tape", NULL);
|
||||
if (chdir("/usr/tmp/tape")) {
|
||||
Mkdir("/var/tmp/tape", NULL);
|
||||
if (chdir("/var/tmp/tape"))
|
||||
return FALSE;
|
||||
}
|
||||
msgConfirm("Insert tape into %s and press return", dev->description);
|
||||
if (!strcmp(dev->name, "ft0"))
|
||||
i = vsystem("ft | tar xvf -");
|
||||
else
|
||||
i = vsystem("tar xvf %s", dev->devname);
|
||||
if (!i) {
|
||||
tapeInitted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
msgConfirm("Tape extract command failed with status %d!", i);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
mediaGetTape(char *file)
|
||||
{
|
||||
return -1;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
sprintf(buf, "/usr/tmp/tape/%s", file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
sprintf(buf, "/var/tmp/tape/%s", file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
||||
void
|
||||
mediaShutdownTape(Device *dev)
|
||||
{
|
||||
return;
|
||||
if (!tapeInitted)
|
||||
return;
|
||||
if (!access("/usr/tmp/tape", X_OK))
|
||||
(void)vsystem("rm -rf /usr/tmp/tape");
|
||||
else if (!access("/var/tmp/tape", X_OK))
|
||||
(void)vsystem("rm -rf /var/tmp/tape");
|
||||
tapeInitted = FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: tcpip.c,v 1.25 1995/05/28 09:31:44 jkh Exp $
|
||||
* $Id: tcpip.c,v 1.26 1995/05/28 23:12:09 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Gary J Palmer. All rights reserved.
|
||||
|
|
@ -196,12 +196,12 @@ tcpOpenDialog(Device *devp)
|
|||
/* Setup a nice screen for us to splat stuff onto */
|
||||
draw_box(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X, TCP_DIALOG_HEIGHT, TCP_DIALOG_WIDTH, dialog_attr, border_attr);
|
||||
wattrset(ds_win, dialog_attr);
|
||||
sprintf(title, " Interface %s ", devp->name);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X + 22, title);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y, TCP_DIALOG_X + 15, " Network Configuration ");
|
||||
draw_box(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 8, TCP_DIALOG_HEIGHT - 13, TCP_DIALOG_WIDTH - 17,
|
||||
dialog_attr, border_attr);
|
||||
wattrset(ds_win, dialog_attr);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 16, " Per Interface Configuration ");
|
||||
sprintf(title, " Configuration for Interface %s ", devp->name);
|
||||
mvwaddstr(ds_win, TCP_DIALOG_Y + 9, TCP_DIALOG_X + 14, title);
|
||||
|
||||
/* Initialise vars from previous device values */
|
||||
if (devp->private) {
|
||||
|
|
|
|||
|
|
@ -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: ufs.c,v 1.1 1995/05/27 10:39:04 jkh Exp $
|
||||
* $Id: ufs.c,v 1.2 1995/05/27 23:39:35 phk Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
|
|
@ -44,17 +44,19 @@
|
|||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
Boolean
|
||||
mediaInitUFS(Device *dev)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
/* No init or shutdown routines necessary - all done in mediaSetUFS() */
|
||||
|
||||
int
|
||||
mediaGetUFS(char *file)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
char buf[PATH_MAX];
|
||||
|
||||
/* UFS has no Shutdown routine since this is handled at the device level */
|
||||
snprintf(buf, PATH_MAX, "%s/%s", (char *)mediaDevice->private, file);
|
||||
if (!access(buf, R_OK))
|
||||
return open(buf, O_RDONLY);
|
||||
snprintf(buf, PATH_MAX, "%s/dists/%s", (char *)mediaDevice->private, file);
|
||||
return open(buf, O_RDONLY);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue