Some fairly serious cleanup. The proper offset should now be used in
creating partitions. Still need to get the mount points displaying carefully, but I need to get this into my tree on time so that I can work on that.
This commit is contained in:
parent
6067fc8395
commit
5e8cd7ffb7
@ -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.2 1995/05/04 03:51:14 jkh Exp $
|
||||
* $Id: devices.c,v 1.5 1995/05/05 23:47:38 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -133,11 +133,10 @@ print_command_summary()
|
||||
int b_attr = ColorDisplay ? A_BOLD : A_UNDERLINE;
|
||||
|
||||
mvprintw(14, 0, "The following commands are supported (in upper or lower case):");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Scan For Bad Blocks");
|
||||
mvprintw(17, 0, "C = Create New Partition D = Delete Partition");
|
||||
mvprintw(18, 0, "G = Set BIOS Geometry U = Undo All Changes");
|
||||
mvprintw(19, 0, "W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(21, 0, "The currently selected partition is displayed in ");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Bad Block Scan C = Create Partition");
|
||||
mvprintw(17, 0, "D = Delete Partition G = Set BIOS Geometry S = Set Bootable");
|
||||
mvprintw(18, 0, "U = Undo All Changes W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(20, 0, "The currently selected partition is displayed in ");
|
||||
attrset(b_attr); addstr(ColorDisplay ? "bold" : "underline"); attrset(A_NORMAL);
|
||||
move(0, 0);
|
||||
}
|
||||
@ -245,6 +244,10 @@ device_slice_disk(struct disk *d)
|
||||
/* Set geometry */
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
/* Set Bootable */
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
Free_Disk(d);
|
||||
d = Open_Disk(name);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: disks.c,v 1.2 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -43,6 +43,7 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <ctype.h>
|
||||
#include <sys/disklabel.h>
|
||||
|
||||
/*
|
||||
* I make some pretty gross assumptions about having a max of 50 chunks
|
||||
@ -55,8 +56,6 @@
|
||||
|
||||
#define MAX_CHUNKS 50
|
||||
|
||||
#define FS_SWAP 1
|
||||
|
||||
/* Where to start printing the freebsd slices */
|
||||
#define CHUNK_SLICE_START_ROW 2
|
||||
#define CHUNK_PART_START_ROW 10
|
||||
@ -64,18 +63,11 @@
|
||||
/* The smallest filesystem we're willing to create */
|
||||
#define FS_MIN_SIZE 2048
|
||||
|
||||
typedef enum { PART_NONE, PART_SLICE, PART_SWAP, PART_FILESYSTEM } part_type;
|
||||
|
||||
struct part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
};
|
||||
|
||||
static struct {
|
||||
struct disk *d;
|
||||
struct chunk *c;
|
||||
struct part_info *p;
|
||||
part_type type;
|
||||
PartInfo *p;
|
||||
PartType type;
|
||||
} fbsd_chunk_info[MAX_CHUNKS + 1];
|
||||
static int current_chunk;
|
||||
|
||||
@ -176,7 +168,7 @@ int
|
||||
get_mountpoint(struct chunk *c)
|
||||
{
|
||||
char *val;
|
||||
struct part_info *part;
|
||||
PartInfo *part;
|
||||
|
||||
val = msgGetInput(c->private,
|
||||
"Please specify mount point for new partition");
|
||||
@ -193,7 +185,7 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
safe_free(c->private);
|
||||
part = (struct part_info *)malloc(sizeof(struct part_info));
|
||||
part = (PartInfo *)malloc(sizeof(PartInfo));
|
||||
strncpy(part->mountpoint, val, FILENAME_MAX);
|
||||
part->newfs = TRUE;
|
||||
c->private = (void *)part;
|
||||
@ -203,15 +195,15 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
|
||||
static part_type
|
||||
static PartType
|
||||
get_partition_type(struct chunk *c)
|
||||
{
|
||||
char selection[20];
|
||||
static unsigned char *fs_types[] = {
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
"FS",
|
||||
"A file system",
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
};
|
||||
|
||||
if (!dialog_menu("Please choose a partition type",
|
||||
@ -280,8 +272,8 @@ print_fbsd_chunks(void)
|
||||
char *mountpoint, *newfs;
|
||||
|
||||
if (fbsd_chunk_info[i].c->private) {
|
||||
mountpoint = ((struct part_info *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((struct part_info *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
mountpoint = ((PartInfo *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((PartInfo *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
}
|
||||
else {
|
||||
mountpoint = "?";
|
||||
@ -383,7 +375,7 @@ partition_disks(struct disk **disks)
|
||||
snprintf(tmp, 20, "%d", sz);
|
||||
val = msgGetInput(tmp, "Please specify size for new FreeBSD partition");
|
||||
if (val && (size = strtol(val, 0, 0)) > 0) {
|
||||
part_type type;
|
||||
PartType type;
|
||||
|
||||
if (get_mountpoint(fbsd_chunk_info[current_chunk].c))
|
||||
break;
|
||||
@ -391,7 +383,8 @@ partition_disks(struct disk **disks)
|
||||
if (type == PART_NONE)
|
||||
break;
|
||||
Create_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c->offset,
|
||||
fbsd_chunk_info[current_chunk].c->offset +
|
||||
sz - size,
|
||||
size,
|
||||
part,
|
||||
type == PART_SWAP ? FS_SWAP : freebsd,
|
||||
@ -400,7 +393,16 @@ partition_disks(struct disk **disks)
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'D':
|
||||
if (fbsd_chunk_info[current_chunk].type == PART_SLICE) {
|
||||
msg = "Use the Master Partition Editor to delete one of these";
|
||||
break;
|
||||
}
|
||||
Delete_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c);
|
||||
break;
|
||||
|
||||
case 27: /* ESC */
|
||||
partitioning = FALSE;
|
||||
break;
|
||||
@ -416,11 +418,11 @@ write_disks(struct disk **disks)
|
||||
extern u_char mbr[], bteasy17[];
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write your changes to disk?")) {
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write out\nall your changes to disk?")) {
|
||||
for (i = 0; disks[i]; i++) {
|
||||
if (contains_root_partition(disks[i]))
|
||||
Set_Boot_Blocks(disks[i], boot1, boot2);
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, as well as boot from a driver other than the first."))
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, or boot from a disk other than the first."))
|
||||
Set_Boot_Mgr(disks[i], bteasy17);
|
||||
else if (i == 0 && !msgYesNo("Would you like to remove an existing boot manager?"))
|
||||
Set_Boot_Mgr(disks[i], mbr);
|
||||
@ -432,24 +434,3 @@ write_disks(struct disk **disks)
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: globals.c,v 1.1.1.1 1995/04/27 12:50:34 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -53,6 +53,8 @@ int DebugFD; /* Where diagnostic output goes */
|
||||
Boolean OnCDROM; /* Are we running off of a CDROM? */
|
||||
Boolean OnSerial; /* Are we on a serial console? */
|
||||
Boolean DialogActive;
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
Variable *VarHead; /* The head of the variable chain */
|
||||
|
||||
/*
|
||||
@ -66,6 +68,8 @@ globalsInit(void)
|
||||
DebugFD = -1;
|
||||
OnCDROM = FALSE;
|
||||
OnSerial = FALSE;
|
||||
ColorDisplay = FALSE;
|
||||
OnVTY = FALSE;
|
||||
DialogActive = FALSE;
|
||||
VarHead = NULL;
|
||||
}
|
||||
|
@ -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.5 1995/05/04 03:51:16 jkh Exp $
|
||||
* $Id: install.c,v 1.8 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -42,6 +42,7 @@
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include<sys/disklabel.h>
|
||||
|
||||
Boolean SystemWasInstalled;
|
||||
|
||||
@ -87,6 +88,7 @@ installHook(char *str)
|
||||
make_filesystems(disks);
|
||||
cpio_extract(disks);
|
||||
extract_dists(disks);
|
||||
install_configuration_files(disks);
|
||||
do_final_setup(disks);
|
||||
SystemWasInstalled = TRUE;
|
||||
break;
|
||||
@ -147,3 +149,51 @@ installMaint(char *str)
|
||||
msgConfirm("Sorry, maintainance mode is not implemented in this version.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; disks[i]; i++) {
|
||||
struct chunk *c1;
|
||||
|
||||
if (!disks[i]->chunks)
|
||||
msgFatal("No chunk list found for %s!", disks[i]->name);
|
||||
c1 = disks[i]->chunks->part;
|
||||
while (c1) {
|
||||
if (c1->type == freebsd) {
|
||||
struct chunk *c2 = c1->part;
|
||||
|
||||
while (c2) {
|
||||
if (c2->type == part && c2->subtype != FS_SWAP)
|
||||
vsystem("newfs %s", c2->name);
|
||||
c2 = c2->next;
|
||||
}
|
||||
}
|
||||
c1 = c1->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
install_configuration_files(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -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.5 1995/05/04 03:51:22 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.8 1995/05/05 23:47:45 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -169,6 +169,19 @@ typedef struct _device {
|
||||
DeviceType type;
|
||||
} Device;
|
||||
|
||||
/* Some internal representations of partitions */
|
||||
typedef enum {
|
||||
PART_NONE,
|
||||
PART_SLICE,
|
||||
PART_SWAP,
|
||||
PART_FILESYSTEM
|
||||
} PartType;
|
||||
|
||||
typedef struct _part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
} PartInfo;
|
||||
|
||||
|
||||
/*** Externs ***/
|
||||
extern int CpioFD; /* The file descriptor for our CPIO floppy */
|
||||
@ -215,6 +228,7 @@ extern void systemChangeLang(char *lang);
|
||||
extern void systemChangeTerminal(char *color, const u_char c_termcap[],
|
||||
char *mono, const u_char m_termcap[]);
|
||||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
|
||||
/* disks.c */
|
||||
extern void partition_disks(struct disk **disks);
|
||||
@ -222,6 +236,7 @@ extern int write_disks(struct disk **disks);
|
||||
extern void make_filesystems(struct disk **disks);
|
||||
extern void cpio_extract(struct disk **disks);
|
||||
extern void extract_dists(struct disk **disks);
|
||||
extern void install_configuration_files(struct disk **disks);
|
||||
extern void do_final_setup(struct disk **disks);
|
||||
|
||||
/* dmenu.c */
|
||||
|
@ -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.3 1995/05/01 21:56:31 jkh Exp $
|
||||
* $Id: system.c,v 1.5 1995/05/05 23:47:46 jkh Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
@ -257,3 +257,22 @@ systemChangeScreenmap(const u_char newmap[])
|
||||
getenv("LANG"));
|
||||
}
|
||||
}
|
||||
|
||||
/* Execute a system command, with varargs */
|
||||
int
|
||||
vsystem(char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *cmd;
|
||||
int i;
|
||||
|
||||
cmd = (char *)malloc(FILENAME_MAX);
|
||||
cmd[0] = '\0';
|
||||
va_start(args, fmt);
|
||||
vsnprintf((char *)(cmd + strlen(cmd)), FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
msgNotify("Executing command: %s", cmd);
|
||||
i = system(cmd);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
@ -22,9 +22,6 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
|
||||
int
|
||||
set_termcap(void)
|
||||
{
|
||||
|
@ -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.2 1995/05/04 03:51:14 jkh Exp $
|
||||
* $Id: devices.c,v 1.5 1995/05/05 23:47:38 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -133,11 +133,10 @@ print_command_summary()
|
||||
int b_attr = ColorDisplay ? A_BOLD : A_UNDERLINE;
|
||||
|
||||
mvprintw(14, 0, "The following commands are supported (in upper or lower case):");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Scan For Bad Blocks");
|
||||
mvprintw(17, 0, "C = Create New Partition D = Delete Partition");
|
||||
mvprintw(18, 0, "G = Set BIOS Geometry U = Undo All Changes");
|
||||
mvprintw(19, 0, "W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(21, 0, "The currently selected partition is displayed in ");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Bad Block Scan C = Create Partition");
|
||||
mvprintw(17, 0, "D = Delete Partition G = Set BIOS Geometry S = Set Bootable");
|
||||
mvprintw(18, 0, "U = Undo All Changes W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(20, 0, "The currently selected partition is displayed in ");
|
||||
attrset(b_attr); addstr(ColorDisplay ? "bold" : "underline"); attrset(A_NORMAL);
|
||||
move(0, 0);
|
||||
}
|
||||
@ -245,6 +244,10 @@ device_slice_disk(struct disk *d)
|
||||
/* Set geometry */
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
/* Set Bootable */
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
Free_Disk(d);
|
||||
d = Open_Disk(name);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: disks.c,v 1.2 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -43,6 +43,7 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <ctype.h>
|
||||
#include <sys/disklabel.h>
|
||||
|
||||
/*
|
||||
* I make some pretty gross assumptions about having a max of 50 chunks
|
||||
@ -55,8 +56,6 @@
|
||||
|
||||
#define MAX_CHUNKS 50
|
||||
|
||||
#define FS_SWAP 1
|
||||
|
||||
/* Where to start printing the freebsd slices */
|
||||
#define CHUNK_SLICE_START_ROW 2
|
||||
#define CHUNK_PART_START_ROW 10
|
||||
@ -64,18 +63,11 @@
|
||||
/* The smallest filesystem we're willing to create */
|
||||
#define FS_MIN_SIZE 2048
|
||||
|
||||
typedef enum { PART_NONE, PART_SLICE, PART_SWAP, PART_FILESYSTEM } part_type;
|
||||
|
||||
struct part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
};
|
||||
|
||||
static struct {
|
||||
struct disk *d;
|
||||
struct chunk *c;
|
||||
struct part_info *p;
|
||||
part_type type;
|
||||
PartInfo *p;
|
||||
PartType type;
|
||||
} fbsd_chunk_info[MAX_CHUNKS + 1];
|
||||
static int current_chunk;
|
||||
|
||||
@ -176,7 +168,7 @@ int
|
||||
get_mountpoint(struct chunk *c)
|
||||
{
|
||||
char *val;
|
||||
struct part_info *part;
|
||||
PartInfo *part;
|
||||
|
||||
val = msgGetInput(c->private,
|
||||
"Please specify mount point for new partition");
|
||||
@ -193,7 +185,7 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
safe_free(c->private);
|
||||
part = (struct part_info *)malloc(sizeof(struct part_info));
|
||||
part = (PartInfo *)malloc(sizeof(PartInfo));
|
||||
strncpy(part->mountpoint, val, FILENAME_MAX);
|
||||
part->newfs = TRUE;
|
||||
c->private = (void *)part;
|
||||
@ -203,15 +195,15 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
|
||||
static part_type
|
||||
static PartType
|
||||
get_partition_type(struct chunk *c)
|
||||
{
|
||||
char selection[20];
|
||||
static unsigned char *fs_types[] = {
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
"FS",
|
||||
"A file system",
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
};
|
||||
|
||||
if (!dialog_menu("Please choose a partition type",
|
||||
@ -280,8 +272,8 @@ print_fbsd_chunks(void)
|
||||
char *mountpoint, *newfs;
|
||||
|
||||
if (fbsd_chunk_info[i].c->private) {
|
||||
mountpoint = ((struct part_info *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((struct part_info *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
mountpoint = ((PartInfo *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((PartInfo *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
}
|
||||
else {
|
||||
mountpoint = "?";
|
||||
@ -383,7 +375,7 @@ partition_disks(struct disk **disks)
|
||||
snprintf(tmp, 20, "%d", sz);
|
||||
val = msgGetInput(tmp, "Please specify size for new FreeBSD partition");
|
||||
if (val && (size = strtol(val, 0, 0)) > 0) {
|
||||
part_type type;
|
||||
PartType type;
|
||||
|
||||
if (get_mountpoint(fbsd_chunk_info[current_chunk].c))
|
||||
break;
|
||||
@ -391,7 +383,8 @@ partition_disks(struct disk **disks)
|
||||
if (type == PART_NONE)
|
||||
break;
|
||||
Create_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c->offset,
|
||||
fbsd_chunk_info[current_chunk].c->offset +
|
||||
sz - size,
|
||||
size,
|
||||
part,
|
||||
type == PART_SWAP ? FS_SWAP : freebsd,
|
||||
@ -400,7 +393,16 @@ partition_disks(struct disk **disks)
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'D':
|
||||
if (fbsd_chunk_info[current_chunk].type == PART_SLICE) {
|
||||
msg = "Use the Master Partition Editor to delete one of these";
|
||||
break;
|
||||
}
|
||||
Delete_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c);
|
||||
break;
|
||||
|
||||
case 27: /* ESC */
|
||||
partitioning = FALSE;
|
||||
break;
|
||||
@ -416,11 +418,11 @@ write_disks(struct disk **disks)
|
||||
extern u_char mbr[], bteasy17[];
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write your changes to disk?")) {
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write out\nall your changes to disk?")) {
|
||||
for (i = 0; disks[i]; i++) {
|
||||
if (contains_root_partition(disks[i]))
|
||||
Set_Boot_Blocks(disks[i], boot1, boot2);
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, as well as boot from a driver other than the first."))
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, or boot from a disk other than the first."))
|
||||
Set_Boot_Mgr(disks[i], bteasy17);
|
||||
else if (i == 0 && !msgYesNo("Would you like to remove an existing boot manager?"))
|
||||
Set_Boot_Mgr(disks[i], mbr);
|
||||
@ -432,24 +434,3 @@ write_disks(struct disk **disks)
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: globals.c,v 1.1.1.1 1995/04/27 12:50:34 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -53,6 +53,8 @@ int DebugFD; /* Where diagnostic output goes */
|
||||
Boolean OnCDROM; /* Are we running off of a CDROM? */
|
||||
Boolean OnSerial; /* Are we on a serial console? */
|
||||
Boolean DialogActive;
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
Variable *VarHead; /* The head of the variable chain */
|
||||
|
||||
/*
|
||||
@ -66,6 +68,8 @@ globalsInit(void)
|
||||
DebugFD = -1;
|
||||
OnCDROM = FALSE;
|
||||
OnSerial = FALSE;
|
||||
ColorDisplay = FALSE;
|
||||
OnVTY = FALSE;
|
||||
DialogActive = FALSE;
|
||||
VarHead = NULL;
|
||||
}
|
||||
|
@ -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.5 1995/05/04 03:51:16 jkh Exp $
|
||||
* $Id: install.c,v 1.8 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -42,6 +42,7 @@
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include<sys/disklabel.h>
|
||||
|
||||
Boolean SystemWasInstalled;
|
||||
|
||||
@ -87,6 +88,7 @@ installHook(char *str)
|
||||
make_filesystems(disks);
|
||||
cpio_extract(disks);
|
||||
extract_dists(disks);
|
||||
install_configuration_files(disks);
|
||||
do_final_setup(disks);
|
||||
SystemWasInstalled = TRUE;
|
||||
break;
|
||||
@ -147,3 +149,51 @@ installMaint(char *str)
|
||||
msgConfirm("Sorry, maintainance mode is not implemented in this version.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; disks[i]; i++) {
|
||||
struct chunk *c1;
|
||||
|
||||
if (!disks[i]->chunks)
|
||||
msgFatal("No chunk list found for %s!", disks[i]->name);
|
||||
c1 = disks[i]->chunks->part;
|
||||
while (c1) {
|
||||
if (c1->type == freebsd) {
|
||||
struct chunk *c2 = c1->part;
|
||||
|
||||
while (c2) {
|
||||
if (c2->type == part && c2->subtype != FS_SWAP)
|
||||
vsystem("newfs %s", c2->name);
|
||||
c2 = c2->next;
|
||||
}
|
||||
}
|
||||
c1 = c1->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
install_configuration_files(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -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.5 1995/05/04 03:51:22 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.8 1995/05/05 23:47:45 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -169,6 +169,19 @@ typedef struct _device {
|
||||
DeviceType type;
|
||||
} Device;
|
||||
|
||||
/* Some internal representations of partitions */
|
||||
typedef enum {
|
||||
PART_NONE,
|
||||
PART_SLICE,
|
||||
PART_SWAP,
|
||||
PART_FILESYSTEM
|
||||
} PartType;
|
||||
|
||||
typedef struct _part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
} PartInfo;
|
||||
|
||||
|
||||
/*** Externs ***/
|
||||
extern int CpioFD; /* The file descriptor for our CPIO floppy */
|
||||
@ -215,6 +228,7 @@ extern void systemChangeLang(char *lang);
|
||||
extern void systemChangeTerminal(char *color, const u_char c_termcap[],
|
||||
char *mono, const u_char m_termcap[]);
|
||||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
|
||||
/* disks.c */
|
||||
extern void partition_disks(struct disk **disks);
|
||||
@ -222,6 +236,7 @@ extern int write_disks(struct disk **disks);
|
||||
extern void make_filesystems(struct disk **disks);
|
||||
extern void cpio_extract(struct disk **disks);
|
||||
extern void extract_dists(struct disk **disks);
|
||||
extern void install_configuration_files(struct disk **disks);
|
||||
extern void do_final_setup(struct disk **disks);
|
||||
|
||||
/* dmenu.c */
|
||||
|
@ -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.3 1995/05/01 21:56:31 jkh Exp $
|
||||
* $Id: system.c,v 1.5 1995/05/05 23:47:46 jkh Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
@ -257,3 +257,22 @@ systemChangeScreenmap(const u_char newmap[])
|
||||
getenv("LANG"));
|
||||
}
|
||||
}
|
||||
|
||||
/* Execute a system command, with varargs */
|
||||
int
|
||||
vsystem(char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *cmd;
|
||||
int i;
|
||||
|
||||
cmd = (char *)malloc(FILENAME_MAX);
|
||||
cmd[0] = '\0';
|
||||
va_start(args, fmt);
|
||||
vsnprintf((char *)(cmd + strlen(cmd)), FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
msgNotify("Executing command: %s", cmd);
|
||||
i = system(cmd);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
@ -22,9 +22,6 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
|
||||
int
|
||||
set_termcap(void)
|
||||
{
|
||||
|
@ -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.2 1995/05/04 03:51:14 jkh Exp $
|
||||
* $Id: devices.c,v 1.5 1995/05/05 23:47:38 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -133,11 +133,10 @@ print_command_summary()
|
||||
int b_attr = ColorDisplay ? A_BOLD : A_UNDERLINE;
|
||||
|
||||
mvprintw(14, 0, "The following commands are supported (in upper or lower case):");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Scan For Bad Blocks");
|
||||
mvprintw(17, 0, "C = Create New Partition D = Delete Partition");
|
||||
mvprintw(18, 0, "G = Set BIOS Geometry U = Undo All Changes");
|
||||
mvprintw(19, 0, "W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(21, 0, "The currently selected partition is displayed in ");
|
||||
mvprintw(16, 0, "A = Use Entire Disk B = Bad Block Scan C = Create Partition");
|
||||
mvprintw(17, 0, "D = Delete Partition G = Set BIOS Geometry S = Set Bootable");
|
||||
mvprintw(18, 0, "U = Undo All Changes W = `Wizard' Mode ESC = Proceed to next screen");
|
||||
mvprintw(20, 0, "The currently selected partition is displayed in ");
|
||||
attrset(b_attr); addstr(ColorDisplay ? "bold" : "underline"); attrset(A_NORMAL);
|
||||
move(0, 0);
|
||||
}
|
||||
@ -245,6 +244,10 @@ device_slice_disk(struct disk *d)
|
||||
/* Set geometry */
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
/* Set Bootable */
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
Free_Disk(d);
|
||||
d = Open_Disk(name);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: disks.c,v 1.2 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -43,6 +43,7 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include <ctype.h>
|
||||
#include <sys/disklabel.h>
|
||||
|
||||
/*
|
||||
* I make some pretty gross assumptions about having a max of 50 chunks
|
||||
@ -55,8 +56,6 @@
|
||||
|
||||
#define MAX_CHUNKS 50
|
||||
|
||||
#define FS_SWAP 1
|
||||
|
||||
/* Where to start printing the freebsd slices */
|
||||
#define CHUNK_SLICE_START_ROW 2
|
||||
#define CHUNK_PART_START_ROW 10
|
||||
@ -64,18 +63,11 @@
|
||||
/* The smallest filesystem we're willing to create */
|
||||
#define FS_MIN_SIZE 2048
|
||||
|
||||
typedef enum { PART_NONE, PART_SLICE, PART_SWAP, PART_FILESYSTEM } part_type;
|
||||
|
||||
struct part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
};
|
||||
|
||||
static struct {
|
||||
struct disk *d;
|
||||
struct chunk *c;
|
||||
struct part_info *p;
|
||||
part_type type;
|
||||
PartInfo *p;
|
||||
PartType type;
|
||||
} fbsd_chunk_info[MAX_CHUNKS + 1];
|
||||
static int current_chunk;
|
||||
|
||||
@ -176,7 +168,7 @@ int
|
||||
get_mountpoint(struct chunk *c)
|
||||
{
|
||||
char *val;
|
||||
struct part_info *part;
|
||||
PartInfo *part;
|
||||
|
||||
val = msgGetInput(c->private,
|
||||
"Please specify mount point for new partition");
|
||||
@ -193,7 +185,7 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
safe_free(c->private);
|
||||
part = (struct part_info *)malloc(sizeof(struct part_info));
|
||||
part = (PartInfo *)malloc(sizeof(PartInfo));
|
||||
strncpy(part->mountpoint, val, FILENAME_MAX);
|
||||
part->newfs = TRUE;
|
||||
c->private = (void *)part;
|
||||
@ -203,15 +195,15 @@ msgConfirm("This region cannot be used for your root partition as\nit is past th
|
||||
return 1;
|
||||
}
|
||||
|
||||
static part_type
|
||||
static PartType
|
||||
get_partition_type(struct chunk *c)
|
||||
{
|
||||
char selection[20];
|
||||
static unsigned char *fs_types[] = {
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
"FS",
|
||||
"A file system",
|
||||
"Swap",
|
||||
"A swap partition.",
|
||||
};
|
||||
|
||||
if (!dialog_menu("Please choose a partition type",
|
||||
@ -280,8 +272,8 @@ print_fbsd_chunks(void)
|
||||
char *mountpoint, *newfs;
|
||||
|
||||
if (fbsd_chunk_info[i].c->private) {
|
||||
mountpoint = ((struct part_info *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((struct part_info *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
mountpoint = ((PartInfo *)fbsd_chunk_info[i].c->private)->mountpoint;
|
||||
newfs = ((PartInfo *)fbsd_chunk_info[i].c->private)->newfs ? "Y" : "N";
|
||||
}
|
||||
else {
|
||||
mountpoint = "?";
|
||||
@ -383,7 +375,7 @@ partition_disks(struct disk **disks)
|
||||
snprintf(tmp, 20, "%d", sz);
|
||||
val = msgGetInput(tmp, "Please specify size for new FreeBSD partition");
|
||||
if (val && (size = strtol(val, 0, 0)) > 0) {
|
||||
part_type type;
|
||||
PartType type;
|
||||
|
||||
if (get_mountpoint(fbsd_chunk_info[current_chunk].c))
|
||||
break;
|
||||
@ -391,7 +383,8 @@ partition_disks(struct disk **disks)
|
||||
if (type == PART_NONE)
|
||||
break;
|
||||
Create_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c->offset,
|
||||
fbsd_chunk_info[current_chunk].c->offset +
|
||||
sz - size,
|
||||
size,
|
||||
part,
|
||||
type == PART_SWAP ? FS_SWAP : freebsd,
|
||||
@ -400,7 +393,16 @@ partition_disks(struct disk **disks)
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'D':
|
||||
if (fbsd_chunk_info[current_chunk].type == PART_SLICE) {
|
||||
msg = "Use the Master Partition Editor to delete one of these";
|
||||
break;
|
||||
}
|
||||
Delete_Chunk(fbsd_chunk_info[current_chunk].d,
|
||||
fbsd_chunk_info[current_chunk].c);
|
||||
break;
|
||||
|
||||
case 27: /* ESC */
|
||||
partitioning = FALSE;
|
||||
break;
|
||||
@ -416,11 +418,11 @@ write_disks(struct disk **disks)
|
||||
extern u_char mbr[], bteasy17[];
|
||||
|
||||
dialog_clear();
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write your changes to disk?")) {
|
||||
if (!msgYesNo("Last Chance! Are you sure you want to write out\nall your changes to disk?")) {
|
||||
for (i = 0; disks[i]; i++) {
|
||||
if (contains_root_partition(disks[i]))
|
||||
Set_Boot_Blocks(disks[i], boot1, boot2);
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, as well as boot from a driver other than the first."))
|
||||
if (i == 0 && !msgYesNo("Would you like to install a boot manager?\n\nThis will allow you to easily select between other operating systems\non the first disk, or boot from a disk other than the first."))
|
||||
Set_Boot_Mgr(disks[i], bteasy17);
|
||||
else if (i == 0 && !msgYesNo("Would you like to remove an existing boot manager?"))
|
||||
Set_Boot_Mgr(disks[i], mbr);
|
||||
@ -432,24 +434,3 @@ write_disks(struct disk **disks)
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: globals.c,v 1.1.1.1 1995/04/27 12:50:34 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -53,6 +53,8 @@ int DebugFD; /* Where diagnostic output goes */
|
||||
Boolean OnCDROM; /* Are we running off of a CDROM? */
|
||||
Boolean OnSerial; /* Are we on a serial console? */
|
||||
Boolean DialogActive;
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
Variable *VarHead; /* The head of the variable chain */
|
||||
|
||||
/*
|
||||
@ -66,6 +68,8 @@ globalsInit(void)
|
||||
DebugFD = -1;
|
||||
OnCDROM = FALSE;
|
||||
OnSerial = FALSE;
|
||||
ColorDisplay = FALSE;
|
||||
OnVTY = FALSE;
|
||||
DialogActive = FALSE;
|
||||
VarHead = NULL;
|
||||
}
|
||||
|
@ -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.5 1995/05/04 03:51:16 jkh Exp $
|
||||
* $Id: install.c,v 1.8 1995/05/05 23:47:40 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -42,6 +42,7 @@
|
||||
*/
|
||||
|
||||
#include "sysinstall.h"
|
||||
#include<sys/disklabel.h>
|
||||
|
||||
Boolean SystemWasInstalled;
|
||||
|
||||
@ -87,6 +88,7 @@ installHook(char *str)
|
||||
make_filesystems(disks);
|
||||
cpio_extract(disks);
|
||||
extract_dists(disks);
|
||||
install_configuration_files(disks);
|
||||
do_final_setup(disks);
|
||||
SystemWasInstalled = TRUE;
|
||||
break;
|
||||
@ -147,3 +149,51 @@ installMaint(char *str)
|
||||
msgConfirm("Sorry, maintainance mode is not implemented in this version.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Go newfs and/or mount all the filesystems we've been asked to */
|
||||
void
|
||||
make_filesystems(struct disk **disks)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; disks[i]; i++) {
|
||||
struct chunk *c1;
|
||||
|
||||
if (!disks[i]->chunks)
|
||||
msgFatal("No chunk list found for %s!", disks[i]->name);
|
||||
c1 = disks[i]->chunks->part;
|
||||
while (c1) {
|
||||
if (c1->type == freebsd) {
|
||||
struct chunk *c2 = c1->part;
|
||||
|
||||
while (c2) {
|
||||
if (c2->type == part && c2->subtype != FS_SWAP)
|
||||
vsystem("newfs %s", c2->name);
|
||||
c2 = c2->next;
|
||||
}
|
||||
}
|
||||
c1 = c1->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cpio_extract(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
extract_dists(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
install_configuration_files(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
do_final_setup(struct disk **disks)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -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.5 1995/05/04 03:51:22 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.8 1995/05/05 23:47:45 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -169,6 +169,19 @@ typedef struct _device {
|
||||
DeviceType type;
|
||||
} Device;
|
||||
|
||||
/* Some internal representations of partitions */
|
||||
typedef enum {
|
||||
PART_NONE,
|
||||
PART_SLICE,
|
||||
PART_SWAP,
|
||||
PART_FILESYSTEM
|
||||
} PartType;
|
||||
|
||||
typedef struct _part_info {
|
||||
Boolean newfs;
|
||||
char mountpoint[FILENAME_MAX];
|
||||
} PartInfo;
|
||||
|
||||
|
||||
/*** Externs ***/
|
||||
extern int CpioFD; /* The file descriptor for our CPIO floppy */
|
||||
@ -215,6 +228,7 @@ extern void systemChangeLang(char *lang);
|
||||
extern void systemChangeTerminal(char *color, const u_char c_termcap[],
|
||||
char *mono, const u_char m_termcap[]);
|
||||
extern void systemChangeScreenmap(const u_char newmap[]);
|
||||
extern int vsystem(char *fmt, ...);
|
||||
|
||||
/* disks.c */
|
||||
extern void partition_disks(struct disk **disks);
|
||||
@ -222,6 +236,7 @@ extern int write_disks(struct disk **disks);
|
||||
extern void make_filesystems(struct disk **disks);
|
||||
extern void cpio_extract(struct disk **disks);
|
||||
extern void extract_dists(struct disk **disks);
|
||||
extern void install_configuration_files(struct disk **disks);
|
||||
extern void do_final_setup(struct disk **disks);
|
||||
|
||||
/* dmenu.c */
|
||||
|
@ -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.3 1995/05/01 21:56:31 jkh Exp $
|
||||
* $Id: system.c,v 1.5 1995/05/05 23:47:46 jkh Exp $
|
||||
*
|
||||
* Jordan Hubbard
|
||||
*
|
||||
@ -257,3 +257,22 @@ systemChangeScreenmap(const u_char newmap[])
|
||||
getenv("LANG"));
|
||||
}
|
||||
}
|
||||
|
||||
/* Execute a system command, with varargs */
|
||||
int
|
||||
vsystem(char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *cmd;
|
||||
int i;
|
||||
|
||||
cmd = (char *)malloc(FILENAME_MAX);
|
||||
cmd[0] = '\0';
|
||||
va_start(args, fmt);
|
||||
vsnprintf((char *)(cmd + strlen(cmd)), FILENAME_MAX, fmt, args);
|
||||
va_end(args);
|
||||
msgNotify("Executing command: %s", cmd);
|
||||
i = system(cmd);
|
||||
free(cmd);
|
||||
return i;
|
||||
}
|
||||
|
@ -22,9 +22,6 @@
|
||||
|
||||
#include "sysinstall.h"
|
||||
|
||||
Boolean ColorDisplay;
|
||||
Boolean OnVTY;
|
||||
|
||||
int
|
||||
set_termcap(void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user