diff options
Diffstat (limited to 'usr.sbin')
40 files changed, 2013 insertions, 1280 deletions
diff --git a/usr.sbin/sade/Makefile b/usr.sbin/sade/Makefile index c70dfc4..0f0b8fd 100644 --- a/usr.sbin/sade/Makefile +++ b/usr.sbin/sade/Makefile @@ -5,7 +5,7 @@ CLEANFILES= makedevs.c rtermcap .PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum SRCS= attr.c cdrom.c command.c config.c decode.c devices.c disks.c dist.c \ - dmenu.c dos.c floppy.c ftp.c ftp_strat.c globals.c install.c label.c lang.c \ + dmenu.c dos.c floppy.c ftp.c ftp_strat.c globals.c install.c label.c \ main.c makedevs.c media.c menus.c misc.c msg.c network.c nfs.c system.c tape.c \ tcpip.c termcap.c ufs.c variable.c wizard.c @@ -22,12 +22,6 @@ LDADD+= -L${.CURDIR}/../libdisk -ldisk DPADD= ${LIBDIALOG} ${LIBNCURSES} ${LIBMYTINFO} ${LIBUTIL} -.if exists(${.CURDIR}/../../share/syscons/scrnmaps/obj) -MKSCRNMAP=${.CURDIR}/../../share/syscons/scrnmaps/obj/koi8-r2cp866.mk -.else -MKSCRNMAP=${.CURDIR}/../../share/syscons/scrnmaps/koi8-r2cp866.mk -.endif - makedevs.c: Makefile rtermcap rm -f makedevs.tmp echo '#include <sys/types.h>' > makedevs.tmp @@ -52,22 +46,6 @@ makedevs.c: Makefile rtermcap ./rtermcap vt100 | \ file2c 'const char termcap_vt100[] = {' ',0};' \ >> makedevs.tmp - uudecode < ${.CURDIR}/../../share/syscons/fonts/iso-8x16.fnt \ - && file2c 'const u_char font_iso_8x16[] = {' '};' \ - < iso-8x16 >> makedevs.tmp - rm iso-8x16 - uudecode < ${.CURDIR}/../../share/syscons/fonts/cp850-8x16.fnt \ - && file2c 'const u_char font_cp850_8x16[] = {' '};' \ - < cp850-8x16 >> makedevs.tmp - rm cp850-8x16 - uudecode < ${.CURDIR}/../../share/syscons/fonts/cp866-8x16.fnt \ - && file2c 'const u_char font_cp866_8x16[] = {' '};' \ - < cp866-8x16 >> makedevs.tmp - rm cp866-8x16 - ${MKSCRNMAP} koi8-r2cp866 \ - && file2c 'const u_char koi8_r2cp866[] = {' '};' \ - < koi8-r2cp866 >> makedevs.tmp - rm koi8-r2cp866 mv makedevs.tmp makedevs.c rtermcap: ${.CURDIR}/rtermcap.c diff --git a/usr.sbin/sade/command.c b/usr.sbin/sade/command.c index 5d132c4..1fad8d2 100644 --- a/usr.sbin/sade/command.c +++ b/usr.sbin/sade/command.c @@ -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.10 1995/05/29 11:01:05 jkh Exp $ + * $Id: command.c,v 1.11.4.1 1995/07/21 11:45:35 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -72,28 +72,19 @@ command_clear(void) numCommands = 0; } -/* Add a shell command under a given key */ -void -command_shell_add(char *key, char *fmt, ...) +static void +addit(char *key, int type, void *cmd, void *data) { - va_list args; - char *cmd; int i; - cmd = (char *)safe_malloc(1024); - va_start(args, fmt); - vsnprintf(cmd, 1024, fmt, args); - va_end(args); - /* First, look for the key already present and add a command to it */ for (i = 0; i < numCommands; i++) { if (!strcmp(commandStack[i]->key, key)) { if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_SHELL; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)cmd; - commandStack[i]->cmds[commandStack[i]->ncmds].data = NULL; + msgFatal("More than %d commands stacked up behind %s??", MAX_NUM_COMMANDS, key); + commandStack[i]->cmds[commandStack[i]->ncmds].type = type; + commandStack[i]->cmds[commandStack[i]->ncmds].ptr = cmd; + commandStack[i]->cmds[commandStack[i]->ncmds].data = data; ++(commandStack[i]->ncmds); return; } @@ -105,40 +96,31 @@ command_shell_add(char *key, char *fmt, ...) commandStack[numCommands] = safe_malloc(sizeof(Command)); strcpy(commandStack[numCommands]->key, key); commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_SHELL; - commandStack[numCommands]->cmds[0].ptr = (void *)cmd; - commandStack[numCommands++]->cmds[0].data = NULL; + commandStack[numCommands]->cmds[0].type = type; + commandStack[numCommands]->cmds[0].ptr = cmd; + commandStack[numCommands++]->cmds[0].data = data; } /* Add a shell command under a given key */ void -command_func_add(char *key, commandFunc func, void *data) +command_shell_add(char *key, char *fmt, ...) { - int i; + va_list args; + char *cmd; - /* First, look for the key already present and add a command to it */ - for (i = 0; i < numCommands; i++) { - if (!strcmp(commandStack[i]->key, key)) { - if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_FUNCTION; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)func; - commandStack[i]->cmds[commandStack[i]->ncmds].data = data; - ++(commandStack[i]->ncmds); - return; - } - } - if (numCommands == MAX_CMDS) - msgFatal("More than %d commands accumulated??", MAX_CMDS); + cmd = (char *)safe_malloc(1024); + va_start(args, fmt); + vsnprintf(cmd, 1024, fmt, args); + va_end(args); - /* If we fell to here, it's a new key */ - commandStack[numCommands] = safe_malloc(sizeof(Command)); - strcpy(commandStack[numCommands]->key, key); - commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_FUNCTION; - commandStack[numCommands]->cmds[0].ptr = (void *)func; - commandStack[numCommands++]->cmds[0].data = data; + addit(key, CMD_SHELL, cmd, NULL); +} + +/* Add a shell command under a given key */ +void +command_func_add(char *key, commandFunc func, void *data) +{ + addit(key, CMD_FUNCTION, func, data); } /* arg to sort */ diff --git a/usr.sbin/sade/config.c b/usr.sbin/sade/config.c index ee82d28..75f0f9c 100644 --- a/usr.sbin/sade/config.c +++ b/usr.sbin/sade/config.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: config.c,v 1.15.2.28 1995/06/10 08:24:28 jkh Exp $ + * $Id: config.c,v 1.16.2.2 1995/07/21 11:45:36 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -114,7 +114,7 @@ fstype_short(Chunk *c1) return "sw"; } else if (c1->type == fat) - return "rw"; + return "ro"; return "bog"; } @@ -362,12 +362,8 @@ configRoutedFlags(char *str) int configPackages(char *str) { - int i, pstat; - pid_t pid; Boolean onCD; - msgConfirm("Warning: This utility (pkg_manage) is still somewhat experimental\nand may not function for all packages. If it fails to load the\npackages you want, try running it directly once the system is up or use the\npkg_add, pkg_info and pkg_delete utilities directly."); - i = -1; /* If we're running as init, we know that a CD in the drive is probably ours */ onCD = file_readable("/cdrom/packages"); if (!onCD && RunningAsInit) { @@ -376,19 +372,7 @@ configPackages(char *str) onCD = TRUE; } } - - if (!(pid = fork())) { - if (onCD && chdir("/cdrom/packages/All")) - exit(1); - execl("/usr/sbin/pkg_manage", "/usr/sbin/pkg_manage", (char *)NULL); - exit(1); - } - else { - pid = waitpid(pid, (int *)&pstat, 0); - i = (pid == -1) ? -1 : WEXITSTATUS(pstat); - } - if (i != 0 && isDebug()) - msgDebug("pkg_manage returns status of %d\n", i); + /* XXX Construct some sort of menu here using an INDEX file from /cdrom/packages XXX */ return 0; } diff --git a/usr.sbin/sade/disks.c b/usr.sbin/sade/disks.c index da5c62e..c5ec295 100644 --- a/usr.sbin/sade/disks.c +++ b/usr.sbin/sade/disks.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: disks.c,v 1.30.2.7 1995/06/08 09:48:31 jkh Exp $ + * $Id: disks.c,v 1.31.2.2 1995/07/21 11:45:38 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -112,7 +112,7 @@ print_command_summary() mvprintw(14, 0, "The following commands are supported (in upper or lower case):"); 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 Q = Finish"); + mvprintw(18, 0, "U = Undo All Changes Q = Finish W = Write Changes"); mvprintw(20, 0, "The currently selected partition is displayed in "); attrset(A_REVERSE); addstr("reverse"); attrset(A_NORMAL); addstr(" video."); mvprintw(21, 0, "Use F1 or ? to get more help, arrow keys to move."); @@ -206,12 +206,8 @@ diskPartition(Disk *d) if (val && (size = strtol(val, &cp, 0)) > 0) { if (*cp && toupper(*cp) == 'M') size *= 2048; - Create_Chunk(d, chunk_info[current_chunk]->offset, - size, - freebsd, - 3, - (chunk_info[current_chunk]->flags & - CHUNK_ALIGN)); + Create_Chunk(d, chunk_info[current_chunk]->offset, size, freebsd, 3, + (chunk_info[current_chunk]->flags & CHUNK_ALIGN)); record_chunks(d); } } @@ -229,8 +225,7 @@ diskPartition(Disk *d) case 'G': { char *val, geometry[80]; - snprintf(geometry, 80, "%lu/%lu/%lu", - d->bios_cyl, d->bios_hd, d->bios_sect); + snprintf(geometry, 80, "%lu/%lu/%lu", d->bios_cyl, d->bios_hd, d->bios_sect); val = msgGetInput(geometry, "Please specify the new geometry in cyl/hd/sect format.\nDon't forget to use the two slash (/) separator characters!\nIt's not possible to parse the field without them."); if (val) { @@ -255,6 +250,11 @@ diskPartition(Disk *d) break; case 'W': + if (!msgYesNo("Are you sure you want to write this now? You do also\nhave the option of not modifying the disk until *all*\nconfiguration information has been entered, at which\npoint you can do it all at once. If you're unsure, then\nchoose No at this dialog.")) + diskPartitionWrite(NULL); + break; + + case '|': if (!msgYesNo("Are you sure you want to go into Wizard mode?\nNo seat belts whatsoever are provided!")) { dialog_clear(); end_dialog(); @@ -349,3 +349,75 @@ diskPartitionEditor(char *str) } return 0; } + +static u_char * +getBootMgr(void) +{ + extern u_char mbr[], bteasy17[]; + + /* Figure out what kind of MBR the user wants */ + if (dmenuOpenSimple(&MenuMBRType)) { + switch (BootMgr) { + case 0: + return bteasy17; + + case 1: + return mbr; + + case 2: + default: + break; + } + } + return NULL; +} + +int +diskPartitionWrite(char *str) +{ + extern u_char boot1[], boot2[]; + u_char *mbrContents; + Device **devs; + int i; + + mbrContents = getBootMgr(); + devs = deviceFind(NULL, DEVICE_TYPE_DISK); + if (!devs) { + msgConfirm("Unable to find any disks to write to??"); + return 0; + } + + for (i = 0; devs[i]; i++) { + Chunk *c1; + Disk *d = (Disk *)devs[i]->private; + + if (!devs[i]->enabled) + continue; + + /* Do it once so that it only goes on the first drive */ + if (mbrContents) { + Set_Boot_Mgr(d, mbrContents); + mbrContents = NULL; + } + + Set_Boot_Blocks(d, boot1, boot2); + msgNotify("Writing partition information to drive %s", d->name); + Write_Disk(d); + + /* Now scan for bad blocks, if necessary */ + for (c1 = d->chunks->part; c1; c1 = c1->next) { + if (c1->flags & CHUNK_BAD144) { + int ret; + + msgNotify("Running bad block scan on partition %s", c1->name); + ret = vsystem("bad144 -v /dev/r%s 1234", c1->name); + if (ret) + msgConfirm("Bad144 init on %s returned status of %d!", c1->name, ret); + ret = vsystem("bad144 -v -s /dev/r%s", c1->name); + if (ret) + msgConfirm("Bad144 scan on %s returned status of %d!", c1->name, ret); + } + } + } + return 0; +} diff --git a/usr.sbin/sade/help/partition.hlp b/usr.sbin/sade/help/partition.hlp new file mode 100644 index 0000000..19b6ce1 --- /dev/null +++ b/usr.sbin/sade/help/partition.hlp @@ -0,0 +1,122 @@ +This is the FreeBSD DiskLabel Editor. + +You should use this editor to create at least the following +filesystems: + + Name Purpose Min Size? Optional? + ---- ------- --------- --------- + / Root filesystem 20MB No + swap Swap space 2 * MEM No + /usr System & user files 80MB or more Yes + +Note: If you do not create a /usr filesystem then your / filesystem +will need to be bigger - at least 100MB. This is not recommended as +any media errors that may occur during disk I/O to user files will +corrupt the filesystem containing vital system files as well. It is +for this reason that / is generally kept on its own filesystem, where +it's basically considered "read only" by the system and hence a good +deal safer. + +Swap space is a little tricker, and the rule of "2 * MEM" is simply a +best-guess approximation and not necessarily accurate for your +intended usage of the system. If you intend to use the system heavily +in a server or multi-user application, you may be well advised to +increase this size. You may also create swap space on multiple drives +for a larger "total" swap and this is, in fact, recommended if you +have multiple, fast drives for which such load-balancing can only help +overall I/O performance. + +The /usr filesystem should be sized according to what kind of +distributions you're trying to load and how many packages you intend +to install in locations like /usr/local. You can also make /usr/local +a separate filesystem if you don't want to risk filling up your /usr +by mistake. + +Another useful filesystem to create is /var, which contains mail, news +printer spool files and other temporary items. It is a popular +candidate for a separate paritition and should be sized according to +your estimates of the amount of mail, news or spooled print jobs that +may be stored there. + +WARNING: If you do not create a separate filesystem for /var, space +for such files will be allocated out of the root (/) filesystem +instead. You may therefore wish to make the / partition bigger if you +expect a lot of mail or news and do not want to make /var its own +partition. + + +If you're new to this installation, you should also first understand +how FreeBSD 2.0.5's new "slices" paradigm for looking at disk storage +works. It's not very hard to grasp. A "fully qualified slice name", +that is the name of the file we open in /dev to talk to the slice, is +optionally broken into 3 parts: + + First you have the disk name. Assume we have two SCSI + drives in our system, which gives us `sd0' and `sd1'. + + Next you have the "Slice" (or "FDISK Partition") number, + as seen in the Partition Editor. Assume that our sd0 contains + two slices, a FreeBSD slice and a DOS slice. This gives us + sd0s1 and sd0s2. Let's also say that sd1 is completely devoted + to FreeBSD, so we have only one slice there: sd1s1. + + Next, if a slice is a FreeBSD slice, you have a number of + (confusingly named) "partitions" you can put inside of it. + These FreeBSD partitions are where various filesystems or swap + areas live, and using our hypothetical two-SCSI-disk machine + again, we might have something like the following layout on sd0: + + Name Mountpoint + ---- ---------- + sd0s1a / + sd0s1b <swap space> + sd0s1e /usr + + Because of historical convention, there is also a short-cut, + or "compatibility slice", that is maintained for easy access + to the first FreeBSD slice on a disk for those programs which + still don't know how to deal with the new slice scheme. + The compatibility slice names for our filesystem above would + look like: + + Name Mountpoint + ---- ---------- + sd0a / + sd0b <swap space> + sd0e /usr + + FreeBSD automatically maps the compatibility slice to the first + FreeBSD slice it finds (in this case, sd0s1). You may have multiple + FreeBSD slices on a drive, but only the first one may be the + compatibility slice! + + The compatibility slice will eventually be phased out, but + it is still important right now for several reasons: + + 1. Some programs, as mentioned before, still don't work + with the slice paradigm and need time to catch up. + + 2. The FreeBSD boot blocks are unable to look for + a root file system in anything but a compatibility + slice right now. This means that our root will always + show up on "sd0a" in the above scenario, even though + it really lives over on sd0s1a and would otherwise be + referred to by its full slice name. + +Once you understand all this, then the label editor becomes fairly +simple. You're either carving up the FreeBSD slices displayed at the +top of the screen into smaller pieces (displayed in the middle of the +screen) and then putting FreeBSD file systems on them, Or you're just +mounting existing partitions/slices into your filesystem hierarchy; +this editor lets you do both. Since a DOS partition is also just +another slice as far as FreeBSD is concerned, you can mount one into +in your filesystem hierarchy just as easily with this editor. For +FreeBSD partitions you can also toggle the "newfs" state so that +the partitions are either (re)created from scratch or simply checked +and mounted (the contents are preserved). + +When you're done, type `Q' to exit. + +No actual changes will be made to the disk until you (C)ommit from the +Install menu! You're working with what is essentially a copy of +the disk label(s), both here and in the FDISK Partition Editor. diff --git a/usr.sbin/sade/help/slice.hlp b/usr.sbin/sade/help/slice.hlp new file mode 100644 index 0000000..e055ca4 --- /dev/null +++ b/usr.sbin/sade/help/slice.hlp @@ -0,0 +1,28 @@ +This is the Main Partition (or ``Slice'') Editor. + +Possible commands are printed at the bottom, and the Master Boot Record +contents are at the top. You can move up and down with the arrow keys +and can (C)reate a new partition whenever the "bar" is over a partition +whose type is set to "unused". + +The flags field has the following legend: + + '=' -- Partition is properly aligned. + '>' -- The partition doesn't end before cylinder 1024 + 'R' -- Has been marked as containing the root (/) filesystem + 'B' -- Partition employs BAD144 bad-spot handling + 'C' -- This is the FreeBSD 2.0-compatibility partition (default) + 'A' -- This partition is marked active. + +If you select a partition for Bad144 handling, it will be scanned +for bad blocks before any new filesystems are made on it. + +If no partition is marked Active, you will need to either install +a Boot Manager (the option for which will be presented later in the +installation) or set one Active before leaving this screen. + +To leave this screen, type `Q'. + +No actual changes will be made to the disk until you (C)ommit from the +Install menu! You're working with what is essentially a copy of +the disk label(s), both here and in the Label Editor. diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c index d69984d..5530e9c 100644 --- a/usr.sbin/sade/install.c +++ b/usr.sbin/sade/install.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: install.c,v 1.70.2.41 1995/06/10 07:58:37 jkh Exp $ + * $Id: install.c,v 1.71.2.1 1995/07/21 10:53:54 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -47,11 +47,11 @@ #include <sys/ioctl.h> #include <sys/fcntl.h> #include <sys/wait.h> +#include <sys/stat.h> #include <unistd.h> Boolean SystemWasInstalled = FALSE; -static Boolean make_filesystems(void); static Boolean copy_self(void); static Boolean root_extract(void); @@ -122,7 +122,7 @@ checkLabels(void) return FALSE; } else if (rootdev->name[strlen(rootdev->name) - 1] != 'a') { - msgConfirm("Invalid placement of root partition. For now, we only support\nmounting root partitions on \"a\" partitions due to limitations\nin the FreeBSD boot block code. Please correct this and\ntry again."); + msgConfirm("Invalid placement of root partition. For now, we only support\nmounting root partitions on \"a\" partitions due to limitations\nin the FreeBSD boot code. Please correct this and\ntry again."); return FALSE; } if (!swapdev) { @@ -137,11 +137,6 @@ checkLabels(void) static Boolean installInitial(void) { - extern u_char boot1[], boot2[]; - extern u_char mbr[], bteasy17[]; - u_char *mbrContents; - Device **devs; - int i; static Boolean alreadyDone = FALSE; if (alreadyDone) @@ -158,67 +153,22 @@ installInitial(void) if (!checkLabels()) return FALSE; - /* Figure out what kind of MBR the user wants */ - if (!dmenuOpenSimple(&MenuMBRType)) - return FALSE; - - switch (BootMgr) { - case 0: - mbrContents = bteasy17; - break; - - case 1: - mbrContents = mbr; - break; - - case 2: - default: - mbrContents = NULL; - } - /* If we refuse to proceed, bail. */ if (msgYesNo("Last Chance! Are you SURE you want continue the installation?\n\nIf you're running this on an existing system, we STRONGLY\nencourage you to make proper backups before proceeding.\nWe take no responsibility for lost disk contents!")) return FALSE; - devs = deviceFind(NULL, DEVICE_TYPE_DISK); - for (i = 0; devs[i]; i++) { - Chunk *c1; - Disk *d = (Disk *)devs[i]->private; + (void)diskPartitionWrite(NULL); - if (!devs[i]->enabled) - continue; - - if (mbrContents) { - Set_Boot_Mgr(d, mbrContents); - mbrContents = NULL; - } - Set_Boot_Blocks(d, boot1, boot2); - msgNotify("Writing partition information to drive %s", d->name); - Write_Disk(d); - - /* Now scan for bad blocks, if necessary */ - for (c1 = d->chunks->part; c1; c1 = c1->next) { - if (c1->flags & CHUNK_BAD144) { - int ret; - - msgNotify("Running bad block scan on partition %s", c1->name); - ret = vsystem("bad144 -v /dev/r%s 1234", c1->name); - if (ret) - msgConfirm("Bad144 init on %s returned status of %d!", c1->name, ret); - ret = vsystem("bad144 -v -s /dev/r%s", c1->name); - if (ret) - msgConfirm("Bad144 scan on %s returned status of %d!", c1->name, ret); - } - } - } - if (!make_filesystems()) { + if (!installFilesystems()) { msgConfirm("Couldn't make filesystems properly. Aborting."); - return 0; + return FALSE; } + if (!copy_self()) { msgConfirm("Couldn't clone the boot floppy onto the root file system.\nAborting."); - return 0; + return FALSE; } + dialog_clear(); chroot("/mnt"); chdir("/"); @@ -247,11 +197,50 @@ installInitial(void) return TRUE; } +int +installExpress(char *str) +{ + msgConfirm("In the next menu, you will need to set up a DOS-style\n" + "partitioning scheme for your hard disk. If you don't\n" + "want to do anything special, just type `A' to use the\n" + "whole disk and then `Q' to quit."); + diskPartitionEditor("express"); + + msgConfirm("Next, you need to lay out BSD partitions inside of the\n" + "DOS-style partition just created. If you don't want to\n" + "do anything special, just type `A' to use the default\n" + "partitioning scheme and then `Q' to quit."); + diskLabelEditor("express"); + + msgConfirm("Now it is time to select an installation subset. There\n" + "are two basic configurations: Developer and Router. The\n" + "Developer subset includes sources, documentation, and\n" + "binaries for almost everything. The Router subset\n" + "includes the same binaries and documentation, but no\n" + "sources. You can also install absolutely everything,\n" + "or select a custom software set."); + + while(!Dists) { + dmenuOpenSimple(&MenuInstallType); + } + + msgConfirm("Finally, you must specify an installation medium."); + + dmenuOpenSimple(&MenuMedia); + + installCommit("express"); + + dmenuOpenSimple(&MenuConfigure); + return 0; +} + /* - * What happens when we select "Install". This is broken into a 3 stage installation so that - * the user can do a full installation but come back here again to load more distributions, - * perhaps from a different media type. This would allow, for example, the user to load the - * majority of the system from CDROM and then use ftp to load just the DES dist. + * What happens when we select "Commit" in the custom installation menu. + * + * This is broken into multiple stages so that the user can do a full installation but come + * back here again to load more distributions, perhaps from a different media type. + * This would allow, for example, the user to load the majority of the system from CDROM + * and then use ftp to load just the DES dist. */ int installCommit(char *str) @@ -263,6 +252,7 @@ installCommit(char *str) msgConfirm("You haven't told me what distributions to load yet!\nPlease select a distribution from the Distributions menu."); return 0; } + if (!mediaVerify()) return 0; @@ -271,7 +261,7 @@ installCommit(char *str) return 0; configFstab(); } - if (!SystemWasInstalled && !root_extract()) { + if (RunningAsInit && !SystemWasInstalled && !root_extract()) { msgConfirm("Failed to load the ROOT distribution. Please correct\nthis problem and try again."); return 0; } @@ -280,7 +270,7 @@ installCommit(char *str) if (Dists & DIST_BIN) SystemWasInstalled = FALSE; - distExtractAll(); + (void)distExtractAll(NULL); if (!SystemWasInstalled && access("/kernel", R_OK)) { if (vsystem("ln -f /kernel.GENERIC /kernel")) { @@ -290,7 +280,7 @@ installCommit(char *str) } /* Resurrect /dev after bin distribution screws it up */ - if (!SystemWasInstalled) { + if (RunningAsInit && !SystemWasInstalled) { msgNotify("Remaking all devices.. Please wait!"); if (vsystem("cd /dev; sh MAKEDEV all")) msgConfirm("MAKEDEV returned non-zero status"); @@ -319,23 +309,26 @@ installCommit(char *str) /* XXX Do all the last ugly work-arounds here which we'll try and excise someday right?? XXX */ /* BOGON #1: XFree86 extracting /usr/X11R6 with root-only perms */ if (file_readable("/usr/X11R6")) - (void)system("chmod 755 /usr/X11R6"); + chmod("/usr/X11R6", 0755); /* BOGON #2: We leave /etc in a bad state */ - (void)system("chmod 755 /etc"); + chmod("/etc", 0755); dialog_clear(); - if (Dists) - msgConfirm("Installation completed with some errors. You may wish\nto scroll through the debugging messages on ALT-F2 with the scroll-lock\nfeature. Press [ENTER] to return to the installation menu."); - else - msgConfirm("Installation completed successfully, now press [ENTER] to return\nto the main menu. If you have any network devices you have not yet\nconfigured, see the Interface configuration item on the\nConfiguration menu."); + /* We get a NULL value for str if run from installExpress(), in which case we don't want to print the following */ + if (str) { + if (Dists) + msgConfirm("Installation completed with some errors. You may wish\nto scroll through the debugging messages on ALT-F2 with the scroll-lock\nfeature. Press [ENTER] to return to the installation menu."); + else + msgConfirm("Installation completed successfully, now press [ENTER] to return\nto the main menu. If you have any network devices you have not yet\nconfigured, see the Interface configuration item on the\nConfiguration menu."); + } SystemWasInstalled = TRUE; return 0; } /* Go newfs and/or mount all the filesystems we've been asked to */ -static Boolean -make_filesystems(void) +Boolean +installFilesystems(void) { int i; Disk *disk; diff --git a/usr.sbin/sade/label.c b/usr.sbin/sade/label.c index 20d7a3a..ccfb63b 100644 --- a/usr.sbin/sade/label.c +++ b/usr.sbin/sade/label.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: label.c,v 1.31.2.4 1995/06/07 06:38:11 jkh Exp $ + * $Id: label.c,v 1.32.2.2 1995/07/21 11:45:39 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -44,6 +44,10 @@ #include "sysinstall.h" #include <ctype.h> #include <sys/disklabel.h> +#include <sys/param.h> +#undef TRUE +#undef FALSE +#include <sys/sysctl.h> /* * Everything to do with editing the contents of disk labels. @@ -178,7 +182,7 @@ new_part(char *mpoint, Boolean newfs, u_long size) ret = (PartInfo *)safe_malloc(sizeof(PartInfo)); strncpy(ret->mountpoint, mpoint, FILENAME_MAX); - strcpy(ret->newfs_cmd, "newfs"); + strcpy(ret->newfs_cmd, "newfs -b 8192 -f 2048"); ret->newfs = newfs; if (!size) return ret; @@ -352,21 +356,20 @@ print_label_chunks(void) memcpy(onestr + PART_PART_COL, label_chunk_info[i].c->name, strlen(label_chunk_info[i].c->name)); /* If it's a filesystem, display the mountpoint */ if (label_chunk_info[i].c->private - && (label_chunk_info[i].type == PART_FILESYSTEM || label_chunk_info[i].type == PART_FAT)) { - mountpoint = ((PartInfo *)label_chunk_info[i].c->private)->mountpoint; - if (label_chunk_info[i].type == PART_FAT) - newfs = "DOS"; - else - newfs = ((PartInfo *)label_chunk_info[i].c->private)->newfs ? "Y" : "N"; - } - else if (label_chunk_info[i].type == PART_SWAP) { - mountpoint = "swap"; - newfs = " "; - } - else { - mountpoint = "<NONE>"; + && (label_chunk_info[i].type == PART_FILESYSTEM || label_chunk_info[i].type == PART_FAT)) + mountpoint = ((PartInfo *)label_chunk_info[i].c->private)->mountpoint; + else + mountpoint = "<none>"; + + /* Now display the newfs field */ + if (label_chunk_info[i].type == PART_FAT) + newfs = "DOS"; + else if (label_chunk_info[i].c->private && label_chunk_info[i].type == PART_FILESYSTEM) + newfs = ((PartInfo *)label_chunk_info[i].c->private)->newfs ? "UFS Y" : "UFS N"; + else if (label_chunk_info[i].type == PART_SWAP) + newfs = "SWAP"; + else newfs = "*"; - } for (j = 0; j < MAX_MOUNT_NAME && mountpoint[j]; j++) onestr[PART_MOUNT_COL + j] = mountpoint[j]; snprintf(num, 10, "%4ldMB", label_chunk_info[i].c->size ? label_chunk_info[i].c->size / ONE_MEG : 0); @@ -385,22 +388,23 @@ static void print_command_summary() { mvprintw(17, 0, "The following commands are valid here (upper or lower case):"); - mvprintw(19, 0, "C = Create New D = Delete M = Set Mountpoint"); - mvprintw(20, 0, "N = Newfs Options T = Toggle Newfs U = Undo Q = Finish"); - mvprintw(21, 0, "The default target will be displayed in "); + mvprintw(18, 0, "C = Create D = Delete M = Mount W = Write"); + mvprintw(19, 0, "N = Newfs Opts T = Newfs Toggle U = Undo Q = Finish"); + mvprintw(20, 0, "A = Auto Defaults for all!"); + mvprintw(22, 0, "The default target will be displayed in "); attrset(A_REVERSE); addstr("reverse"); attrset(A_NORMAL); addstr(" video."); - mvprintw(22, 0, "Use F1 or ? to get more help, arrow keys to move."); + mvprintw(23, 0, "Use F1 or ? to get more help, arrow keys to move."); move(0, 0); } int diskLabelEditor(char *str) { - int sz, i, key = 0; + int sz, key = 0; Boolean labeling; char *msg = NULL; PartInfo *p, *oldp; @@ -428,6 +432,7 @@ diskLabelEditor(char *str) refresh(); key = toupper(getch()); switch (key) { + int i, cnt; case '\014': /* ^L */ continue; @@ -465,6 +470,87 @@ diskLabelEditor(char *str) systemDisplayFile("partition.hlp"); break; + case 'A': + if (label_chunk_info[here].type != PART_SLICE) { + msg = "You can only do this in a master partition (see top of screen)"; + break; + } + + cnt = i = 0; + while (label_chunk_info[i].c) + if (label_chunk_info[i++].type != PART_SLICE) + cnt++; + if (cnt == (CHUNK_COLUMN_MAX * 2) + 4) { + msgConfirm("Sorry, I can't fit any more partitions on the screen! You can get around\nthis limitation by partitioning your disks individually rather than all\nat once. This will be fixed just as soon as we get a scrolling partition\nbox written. Sorry for the inconvenience!"); + break; + } + + sz = space_free(label_chunk_info[here].c); + if (sz <= FS_MIN_SIZE) { + msg = "Not enough space to create additional FreeBSD partition"; + break; + } + { + struct chunk *tmp; + int mib[2]; + int physmem; + size_t size; + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + 32 * ONE_MEG, part, FS_BSDFFS, + CHUNK_IS_ROOT); + + if (!tmp) { + msgConfirm("Unable to create the root partition. Too big?"); + break; + } + tmp->private = new_part("/", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + + mib[0] = CTL_HW; + mib[1] = HW_PHYSMEM; + size = sizeof physmem; + sysctl(mib, 2, &physmem, &size, (void *)0, (size_t)0); + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + physmem * 2 / 512, part, FS_SWAP, 0); + if (!tmp) { + msgConfirm("Unable to create the swap partition. Too big?"); + break; + } + + tmp->private = 0; + tmp->private_free = safe_free; + record_label_chunks(); + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + 16 * ONE_MEG, part, FS_BSDFFS, 0); + if (!tmp) { + msgConfirm("Unable to create the /var partition. Too big?"); + break; + } + tmp->private = new_part("/var", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + + sz = space_free(label_chunk_info[here].c); + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + sz, part, FS_BSDFFS, 0); + if (!tmp) { + msgConfirm("Unable to create the /usr partition. Too big?"); + break; + } + tmp->private = new_part("/usr", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + } + break; + case 'C': if (label_chunk_info[here].type != PART_SLICE) { msg = "You can only do this in a master partition (see top of screen)"; @@ -639,6 +725,11 @@ diskLabelEditor(char *str) break; case 'W': + if (!msgYesNo("Are you sure that you wish to make and mount all filesystems\nat this time? You also have the option of doing it later in\none final 'commit' operation, and if you're at all unsure as\nto which option to chose, then chose No.")) + diskLabelCommit(NULL); + break; + + case '|': if (!msgYesNo("Are you sure you want to go into Wizard mode?\n\nThis is an entirely undocumented feature which you are not\nexpected to understand!")) { int i; Device **devs; @@ -678,5 +769,12 @@ diskLabelEditor(char *str) return 0; } - - +int +diskLabelCommit(char *str) +{ + if (!getenv(DISK_LABELLED)) + msgConfirm("You must assign disk labels before this option can be used."); + else if (!installFilesystems()) + msgConfirm("Failed to make/mount all filesystems. Please correct\nwhatever went wrong and try again."); + return 0; +} diff --git a/usr.sbin/sade/main.c b/usr.sbin/sade/main.c index 9b648fc..7d22216 100644 --- a/usr.sbin/sade/main.c +++ b/usr.sbin/sade/main.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated for what's essentially a complete rewrite. * - * $Id: main.c,v 1.12.2.4 1995/06/05 15:17:12 jkh Exp $ + * $Id: main.c,v 1.13 1995/06/11 19:30:02 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -64,9 +64,6 @@ main(int argc, char **argv) /* Probe for all relevant devices on the system */ deviceGetAll(); - /* Default to English */ - lang_set_English(NULL); - /* Default to passive mode ftp since it's the only thing we currently support :-( */ OptFlags |= OPT_FTP_PASSIVE; diff --git a/usr.sbin/sade/menus.c b/usr.sbin/sade/menus.c index 3cbafe0..87213fd 100644 --- a/usr.sbin/sade/menus.c +++ b/usr.sbin/sade/menus.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: menus.c,v 1.41.2.39 1995/06/10 19:38:27 jkh Exp $ + * $Id: menus.c,v 1.42.2.3 1995/07/27 01:37:18 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -53,91 +53,53 @@ /* The initial installation menu */ DMenu MenuInitial = { DMENU_NORMAL_TYPE, - "Welcome to FreeBSD 2.0.5!", /* title */ + "Welcome to FreeBSD RELEASE_NAME!", /* title */ "This is the main menu of the FreeBSD installation system. Please\n\ select one of the options below by using the arrow keys or typing the\n\ first character of the option name you're interested in. Invoke an\n\ option by pressing [ENTER].", /* prompt */ "Press F1 for usage instructions", /* help line */ "usage.hlp", /* help file */ - { { "Usage", "Quick start - How to use this menu system.", /* U */ - DMENU_DISPLAY_FILE, "usage.hlp", 0, 0 }, - { "Doc", "More detailed documentation on FreeBSD.", /* D */ - DMENU_SUBMENU, &MenuDocumentation, 0, 0 }, - { "Language", "Set your preferred language.", /* L */ - DMENU_SUBMENU, &MenuOptionsLanguage, 0, 0 }, - { "Options", "Select various options for this utility.", /* O */ - DMENU_SUBMENU, &MenuOptions, 0, 0 }, - { "Proceed", "Go to the installation menu", /* P */ - DMENU_SUBMENU, &MenuInstall, 0, 0 }, - { "Quit", "Exit this menu (and the installation)", /* Q */ - DMENU_CANCEL, NULL, 0, 0 }, + { { "Usage", "Quick start - How to use this menu system.", /* U */ + DMENU_DISPLAY_FILE, "usage.hlp", 0, 0 }, + { "Doc", "More detailed documentation on FreeBSD.", /* D */ + DMENU_SUBMENU, &MenuDocumentation, 0, 0 }, + { "Options", "Select various options for this utility.", /* O */ + DMENU_SUBMENU, &MenuOptions, 0, 0 }, + { "Custom", "Begin a custom installation", /* C */ + DMENU_SUBMENU, &MenuInstallCustom, 0, 0 }, + { "Express", "Begin a quick installation", /* E */ + DMENU_CALL, &installExpress, 0, 0 }, + { "Shell", "Go to a shell for debugging or repair", + DMENU_SYSTEM_COMMAND, "sh", 0, 0 }, + { "Quit", "Exit this menu (and the installation)", /* Q */ + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; /* The main documentation menu */ DMenu MenuDocumentation = { DMENU_NORMAL_TYPE, - "Documentation for FreeBSD 2.0.5", /* Title */ + "Documentation for FreeBSD RELEASE_NAME", /* Title */ "If you are at all unsure about the configuration of your hardware\n\ or are looking to build a system specifically for FreeBSD, read the\n\ Hardware guide! New users should also read the Install document for\n\ a step-by-step tutorial on installing FreeBSD. For general information,\n\ consult the README file.", "Confused? Press F1 for help.", - "usage.hlp", /* help file */ - { { "README", "Read this for a general description of FreeBSD", /* R */ + "usage.hlp", + { { "README", "Read this for a general description of FreeBSD", DMENU_DISPLAY_FILE, "README", 0, 0 }, - { "Hardware", "The FreeBSD survival guide for PC hardware.", /* H */ + { "Hardware", "The FreeBSD survival guide for PC hardware.", DMENU_DISPLAY_FILE, "hardware.hlp", 0, 0 }, - { "Install", "A step-by-step guide to installing FreeBSD.", /* I */ + { "Install", "A step-by-step guide to installing FreeBSD.", DMENU_DISPLAY_FILE, "install.hlp", 0, 0 }, - { "Copyright", "The FreeBSD Copyright notices.", /* C */ + { "Copyright", "The FreeBSD Copyright notices.", DMENU_DISPLAY_FILE, "COPYRIGHT", 0, 0 }, - { "Release", "The release notes for this version of FreeBSD.", /* R */ + { "Release", "The release notes for this version of FreeBSD.", DMENU_DISPLAY_FILE, "RELNOTES", 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", /* E */ - DMENU_CANCEL, NULL, 0, 0 }, - { NULL } }, -}; - -/* - * The language selection menu. - */ -DMenu MenuOptionsLanguage = { - DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, - "Natural language selection", /* title */ - "Please specify the language you would like to use by default.\n\n\ -While almost all of the system's documentation is still written\n\ -in english (and may never be translated), there are a few guides\n\ -and types of system documentation that may be written in your\n\ -preferred language. When such are found, they will be used instead\n\ -of the english versions. This feature is nonetheless considered\n\ -to be in experimental status at this time.", /* prompt */ - "Press F1 for more information", /* help line */ - "language.hlp", /* help file */ - { { "Danish", "Danish language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, lang_set_Danish, 0, 0 }, - { "Dutch", "Dutch language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, lang_set_Dutch, 0, 0 }, - { "English", "English language (system default)", /* E */ - DMENU_CALL, lang_set_English, 0, 0 }, - { "French", "French language and character set (ISO-8859-1)", /* F */ - DMENU_CALL, lang_set_French, 0, 0 }, - { "German", "German language and character set (ISO-8859-1)", /* G */ - DMENU_CALL, lang_set_German, 0, 0 }, - { "Italian", "Italian language and character set (ISO-8859-1)", /* I */ - DMENU_CALL, lang_set_Italian, 0, 0 }, - { "Japanese", "Japanese language and default character set (romaji)", /* J */ - DMENU_CALL, lang_set_Japanese, 0, 0 }, - { "Norwegian", "Norwegian language and character set (ISO-8859-1)", /* N */ - DMENU_CALL, lang_set_Norwegian, 0, 0}, - { "Russian", "Russian language and character set (KOI8-R)", /* R */ - DMENU_CALL, lang_set_Russian, 0, 0 }, - { "Spanish", "Spanish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, lang_set_Spanish, 0, 0 }, - { "Swedish", "Swedish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, lang_set_Swedish, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -145,7 +107,7 @@ DMenu MenuMediaCDROM = { DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, "Choose a CDROM type", "FreeBSD can be installed directly from a CDROM containing a valid\n\ -FreeBSD 2.0.5 distribution. If you are seeing this menu it is because\n\ +FreeBSD RELEASE_NAME distribution. If you are seeing this menu it is because\n\ more than one CDROM drive was found on your system. Please select one\n\ of the following CDROM drives as your installation drive.", "Press F1 to read the installation guide", @@ -192,70 +154,70 @@ You may also wish to investigate the options menu in case of trouble.\n\ To specify a URL not in this list, chose \"other\".", "Select a site that's close!", "install.hlp", - { { "Primary Site", "ftp.freebsd.org", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Secondary Site", "freefall.cdrom.com", - DMENU_SET_VARIABLE, "ftp=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Other", "Specify some other ftp site by URL", + { { "Primary Site", "ftp.freebsd.org", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.freebsd.org/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Secondary Site", "freefall.cdrom.com", + DMENU_SET_VARIABLE, "ftp=ftp://freefall.cdrom.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Other", "Specify some other ftp site by URL", DMENU_SET_VARIABLE, "ftp=other", 0, 0 }, - { "Australia", "ftp.physics.usyd.edu.au", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Finland", "nic.funet.fi", - DMENU_SET_VARIABLE, "ftp=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "France", "ftp.ibp.fr", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany", "ftp.fb9dv.uni-duisburg.de", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany #2", "gil.physik.rwth-aachen.de", - DMENU_SET_VARIABLE, "ftp=ftp://gil.physik.rwth-aachen.de/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany #3", "ftp.uni-paderborn.de", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.uni-paderborn.de/freebsd/2.0.5-RELEASE", 0, 0 }, - { "Hong Kong", "ftp.hk.super.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.hk.super.net/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Israel", "orgchem.weizmann.ac.il", - DMENU_SET_VARIABLE, "ftp=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-RELEASE", 0, 0 }, - { "Japan", "ftp.sra.co.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.sra.co.jp/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #2", "ftp.mei.co.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #3", "ftp.waseda.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #4", "ftp.pu-toyama.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #5", "ftpsv1.u-aizu.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #6", "ftp.tut.ac.jp", - DMENU_SET_VARIABLE, "ftp://ftp.tut.ac.jp/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #7", "ftp.ee.uec.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org/2.0.5-RELEASE", 0, 0 }, - { "Japan #8", "ftp.tokyonet.ad.jp", - DMENU_SET_VARIABLE, "ftp://ftp.tokyonet.ad.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Korea", "ftp.cau.ac.kr", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Netherlands", "ftp.nl.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Russia", "ftp.kiae.su", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.kiae.su/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Sweden", "ftp.luth.se", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Taiwan", "netbsd.csie.nctu.edu.tw", - DMENU_SET_VARIABLE, "ftp=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Thailand", "ftp.nectec.or.th", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK", "ftp.demon.co.uk", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK #2", "src.doc.ic.ac.uk", - DMENU_SET_VARIABLE, "ftp=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK #3", "unix.hensa.ac.uk", - DMENU_SET_VARIABLE, "ftp=ftp://unix.hensa.ac.uk/mirrors/walnut.creek/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA", "ref.tfs.com", - DMENU_SET_VARIABLE, "ftp=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #2", "ftp.dataplex.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #3", "kryten.atinc.com", - DMENU_SET_VARIABLE, "ftp=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #4", "ftp.neosoft.com", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-RELEASE", 0, 0 }, + { "Australia", "ftp.physics.usyd.edu.au", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.physics.usyd.edu.au/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Finland", "nic.funet.fi", + DMENU_SET_VARIABLE, "ftp=ftp://nic.funet.fi/pub/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "France", "ftp.ibp.fr", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.ibp.fr/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany", "ftp.fb9dv.uni-duisburg.de", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany #2", "gil.physik.rwth-aachen.de", + DMENU_SET_VARIABLE, "ftp=ftp://gil.physik.rwth-aachen.de/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany #3", "ftp.uni-paderborn.de", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.uni-paderborn.de/freebsd/RELEASE_NAME", 0, 0 }, + { "Hong Kong", "ftp.hk.super.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.hk.super.net/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Israel", "orgchem.weizmann.ac.il", + DMENU_SET_VARIABLE, "ftp=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-RELEASE_NAME", 0, 0 }, + { "Japan", "ftp.sra.co.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.sra.co.jp/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #2", "ftp.mei.co.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #3", "ftp.waseda.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.waseda.ac.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #4", "ftp.pu-toyama.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #5", "ftpsv1.u-aizu.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #6", "ftp.tut.ac.jp", + DMENU_SET_VARIABLE, "ftp://ftp.tut.ac.jp/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #7", "ftp.ee.uec.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org/RELEASE_NAME", 0, 0 }, + { "Japan #8", "ftp.tokyonet.ad.jp", + DMENU_SET_VARIABLE, "ftp://ftp.tokyonet.ad.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Korea", "ftp.cau.ac.kr", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.cau.ac.kr/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Netherlands", "ftp.nl.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.nl.net/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Russia", "ftp.kiae.su", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.kiae.su/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Sweden", "ftp.luth.se", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.luth.se/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Taiwan", "netbsd.csie.nctu.edu.tw", + DMENU_SET_VARIABLE, "ftp=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Thailand", "ftp.nectec.or.th", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.nectec.or.th/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK", "ftp.demon.co.uk", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK #2", "src.doc.ic.ac.uk", + DMENU_SET_VARIABLE, "ftp=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK #3", "unix.hensa.ac.uk", + DMENU_SET_VARIABLE, "ftp=ftp://unix.hensa.ac.uk/mirrors/walnut.creek/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA", "ref.tfs.com", + DMENU_SET_VARIABLE, "ftp=ftp://ref.tfs.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #2", "ftp.dataplex.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.dataplex.net/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #3", "kryten.atinc.com", + DMENU_SET_VARIABLE, "ftp=ftp://kryten.atinc.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #4", "ftp.neosoft.com", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.neosoft.com/systems/FreeBSD/RELEASE_NAME", 0, 0 }, { NULL } } }; @@ -298,23 +260,25 @@ DMenu MenuMedia = { "FreeBSD can be installed from a variety of different installation\n\ media, ranging from floppies to the Internet. If you're installing\n\ FreeBSD from a supported CDROM drive then this is generally the best\n\ -method to use unless you have some overriding reason for using another\n\ -method.", +media to use, unless you have some overriding reason for using another\n\ +media.", "Press F1 for more information on the various media types", "media.hlp", - { { "CDROM", "Install from a FreeBSD CDROM", + { { "CDROM", "Install from a FreeBSD CDROM", DMENU_CALL, mediaSetCDROM, 0, 0 }, - { "DOS", "Install from a DOS partition", + { "DOS", "Install from a DOS partition", DMENU_CALL, mediaSetDOS, 0, 0 }, - { "File System", "Install from a mounted filesystem", + { "File System", "Install from a mounted filesystem", DMENU_CALL, mediaSetUFS, 0, 0 }, - { "Floppy", "Install from a floppy disk set", + { "Floppy", "Install from a floppy disk set", DMENU_CALL, mediaSetFloppy, 0, 0 }, - { "FTP", "Install from an Internet FTP server", - DMENU_CALL, mediaSetFTP, 0, 0 }, + { "FTP Active", "Install from an FTP server in active mode", + DMENU_CALL, mediaSetFTPActive, 0, 0 }, + { "FTP Passive", "Install from an FTP server in passive mode", + DMENU_CALL, mediaSetFTPPassive, 0, 0 }, { "NFS", "Install over NFS", DMENU_CALL, mediaSetNFS, 0, 0 }, - { "Tape", "Install from SCSI or QIC tape", + { "Tape", "Install from SCSI or QIC tape", DMENU_CALL, mediaSetTape, 0, 0 }, { NULL } }, }; @@ -353,24 +317,18 @@ the list of distributions yourself, simply select \"custom\".", static char * DESFlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_DES = %d\n", Dists & DIST_DES); return (Dists & DIST_DES) ? "ON" : "OFF"; } static char * srcFlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_SRC = %d\n", Dists & DIST_SRC); return (Dists & DIST_SRC) ? "ON" : "OFF"; } static char * x11FlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_XF86 = %d\n", Dists & DIST_XF86); return (Dists & DIST_XF86) ? "ON" : "OFF"; } @@ -382,31 +340,31 @@ very minimum, this should be \"bin\". WARNING: Do not export the\n\ DES distribution out of the U.S.! It is for U.S. customers only.", NULL, NULL, - { { "bin", "Binary base distribution (required) [36MB]", - DMENU_SET_FLAG, &Dists, DIST_BIN, 0, dmenuFlagCheck }, - { "commercial", "Commercial demos and shareware [10MB]", + { { "bin", "Binary base distribution (required) [36MB]", + DMENU_SET_FLAG, &Dists, DIST_BIN, 0, dmenuFlagCheck }, + { "commercial", "Commercial demos and shareware [10MB]", DMENU_SET_FLAG, &Dists, DIST_COMMERCIAL, 0, dmenuFlagCheck }, - { "compat1x", "FreeBSD 1.x binary compatibility package [2MB]", + { "compat1x", "FreeBSD 1.x binary compatibility package [2MB]", DMENU_SET_FLAG, &Dists, DIST_COMPAT1X, 0, dmenuFlagCheck }, - { "compat20", "FreeBSD 2.0 binary compatibility package [2MB]", + { "compat20", "FreeBSD 2.0 binary compatibility package [2MB]", DMENU_SET_FLAG, &Dists, DIST_COMPAT20, 0, dmenuFlagCheck }, - { "DES", "NOT FOR EXPORT! DES encryption code [.3MB]", + { "DES", "DES encryption code - NOT FOR EXPORT! [.3MB]", DMENU_CALL, distSetDES, 0, 0, DESFlagCheck }, - { "dict", "Spelling checker dictionary files [4.2MB]", + { "dict", "Spelling checker dictionary files [4.2MB]", DMENU_SET_FLAG, &Dists, DIST_DICT, 0, dmenuFlagCheck }, - { "games", "Games and other amusements (non-commercial) [6.4MB]", + { "games", "Games (non-commercial) [6.4MB]", DMENU_SET_FLAG, &Dists, DIST_GAMES, 0, dmenuFlagCheck }, - { "info", "GNU info files [4.1MB]", + { "info", "GNU info files [4.1MB]", DMENU_SET_FLAG, &Dists, DIST_INFO, 0, dmenuFlagCheck }, - { "man", "System manual pages - strongly recommended [3.3MB]", + { "man", "System manual pages - recommended [3.3MB]", DMENU_SET_FLAG, &Dists, DIST_MANPAGES, 0, dmenuFlagCheck }, - { "proflibs", "Profiled versions of the libraries [3.3MB]", + { "proflibs", "Profiled versions of the libraries [3.3MB]", DMENU_SET_FLAG, &Dists, DIST_PROFLIBS, 0, dmenuFlagCheck }, - { "src", "Sources for everything but DES [120MB]", + { "src", "Sources for everything but DES [120MB]", DMENU_CALL, distSetSrc, 0, 0, srcFlagCheck }, - { "XFree86", "The XFree86 3.1.1u1 distribution [?]", + { "XFree86", "The XFree86 3.1.1u1 distribution [?]", DMENU_CALL, distSetXF86, 0, 0, x11FlagCheck }, - { "Experimental", "Work in progress!", + { "Experimental", "Work in progress!", DMENU_SET_FLAG, &Dists, DIST_EXPERIMENTAL, 0, dmenuFlagCheck }, { NULL } }, }; @@ -421,13 +379,13 @@ same reason). For information on non-U.S. FTP distributions of this\n\ software, please consult the release notes.", NULL, NULL, - { { "des", "Basic DES services (rlogin, init, etc) [1MB]", + { { "des", "Basic DES services (rlogin, init, etc) [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_DES, 0, dmenuFlagCheck }, - { "krb", "Kerberos encryption services [2MB]", + { "krb", "Kerberos encryption services [2MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_KERBEROS, 0, dmenuFlagCheck }, - { "sebones", "Sources for eBones (Kerberos) [1MB]", + { "sebones", "Sources for eBones (Kerberos) [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_SEBONES, 0, dmenuFlagCheck }, - { "ssecure", "Sources for DES libs and utilities [1MB]", + { "ssecure", "Sources for DES libs and utilities [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_SSECURE, 0, dmenuFlagCheck }, { NULL } }, }; @@ -439,33 +397,35 @@ DMenu MenuSrcDistributions = { you wish to install.", NULL, NULL, - { { "base", "top-level files in /usr/src [300K]", + { { "base", "top-level files in /usr/src [300K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_BASE, 0, dmenuFlagCheck }, - { "gnu", "/usr/src/gnu (software from the GNU Project) [42MB]]", + { "gnu", "/usr/src/gnu (software from the GNU Project) [42MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_GNU, 0, dmenuFlagCheck }, - { "etc", "/usr/src/etc (miscellaneous system files) [460K]", + { "etc", "/usr/src/etc (miscellaneous system files) [460K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_ETC, 0, dmenuFlagCheck }, - { "games", "/usr/src/games (diversions) [7.8MB]", + { "games", "/usr/src/games (diversions) [7.8MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_GAMES, 0, dmenuFlagCheck }, - { "include", "/usr/src/include (header files) [467K]", + { "include", "/usr/src/include (header files) [467K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_INCLUDE, 0, dmenuFlagCheck }, - { "lib", "/usr/src/lib (system libraries) [9.2MB]", + { "lib", "/usr/src/lib (system libraries) [9.2MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LIB, 0, dmenuFlagCheck }, - { "libexec", "/usr/src/libexec (system programs) [1.2MB]", + { "libexec", "/usr/src/libexec (system programs) [1.2MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LIBEXEC, 0, dmenuFlagCheck }, - { "lkm", "/usr/src/lkm (Loadable Kernel Modules) [193K]", + { "lkm", "/usr/src/lkm (Loadable Kernel Modules) [193K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LKM, 0, dmenuFlagCheck }, - { "release", "/usr/src/release (release-generation tools) [533K]", + { "release", "/usr/src/release (release-generation tools) [533K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_RELEASE, 0, dmenuFlagCheck }, - { "sbin", "/usr/src/sbin (system binaries) [1.3MB]", + { "bin", "/usr/src/bin (system binaries) [2.5MB]", + DMENU_SET_FLAG, &SrcDists, DIST_SRC_BIN, 0, dmenuFlagCheck }, + { "sbin", "/usr/src/sbin (system binaries) [1.3MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SBIN, 0, dmenuFlagCheck }, - { "share", "/usr/src/share (documents and shared files) [10MB]", + { "share", "/usr/src/share (documents and shared files) [10MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SHARE, 0, dmenuFlagCheck }, - { "sys", "/usr/src/sys (FreeBSD kernel) [13MB]", + { "sys", "/usr/src/sys (FreeBSD kernel) [13MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SYS, 0, dmenuFlagCheck }, - { "ubin", "/usr/src/usr.bin (user binaries) [13MB]", + { "ubin", "/usr/src/usr.bin (user binaries) [13MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_UBIN, 0, dmenuFlagCheck }, - { "usbin", "/usr/src/usr.sbin (aux system binaries) [14MB]", + { "usbin", "/usr/src/usr.sbin (aux system binaries) [14MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_USBIN, 0, dmenuFlagCheck }, { NULL } }, }; @@ -488,16 +448,16 @@ distribution. We recommend that you select what you need from the basic\n\ components set and at least one entry from the Server and Font set menus.", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "Basic", "Basic component menu (required)", /* B */ - DMENU_SUBMENU, &MenuXF86SelectCore, 0, 0 }, - { "Server", "X server menu", /* S */ - DMENU_SUBMENU, &MenuXF86SelectServer, 0, 0 }, - { "Fonts", "Font set menu", /* F */ - DMENU_SUBMENU, &MenuXF86SelectFonts, 0, 0 }, - { "Clear", "Reset XFree86 distribution list", - DMENU_CALL, clearx11, 0, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", /* E */ - DMENU_CANCEL, NULL, 0, 0 }, + { { "Basic", "Basic component menu (required)", + DMENU_SUBMENU, &MenuXF86SelectCore, 0, 0 }, + { "Server", "X server menu", + DMENU_SUBMENU, &MenuXF86SelectServer, 0, 0 }, + { "Fonts", "Font set menu", + DMENU_SUBMENU, &MenuXF86SelectFonts, 0, 0 }, + { "Clear", "Reset XFree86 distribution list", + DMENU_CALL, clearx11, 0, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -507,26 +467,26 @@ DMenu MenuXF86SelectCore = { "Please check off the basic XFree86 components you wish to install.", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "bin", "X client applications and shared libs [4MB].", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_BIN, 0, dmenuFlagCheck }, - { "lib", "Data files needed at runtime [600K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LIB, 0, dmenuFlagCheck }, - { "xicf", "Customizable xinit runtime configuration file [100K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XINIT, 0, dmenuFlagCheck }, - { "xdcf", "Customizable xdm runtime configuration file [100K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XDMCF, 0, dmenuFlagCheck }, - { "doc", "READMEs and XFree86 specific man pages [500K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_DOC, 0, dmenuFlagCheck }, - { "man", "Man pages (except XFree86 specific ones) [1.2MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_MAN, 0, dmenuFlagCheck }, - { "prog", "Programmer's header and library files [4MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PROG, 0, dmenuFlagCheck }, - { "link", "X Server reconfiguration kit [7.8MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LINK, 0, dmenuFlagCheck }, - { "pex", "PEX fonts and libs needed by PEX apps [500K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PEX, 0, dmenuFlagCheck }, - { "sources", "XFree86 3.1.1u1 source + contrib distribution [200MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_SRC, 0, dmenuFlagCheck }, + { { "bin", "X client applications and shared libs [4MB].", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_BIN, 0, dmenuFlagCheck }, + { "lib", "Data files needed at runtime [600K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LIB, 0, dmenuFlagCheck }, + { "xicf", "Customizable xinit runtime configuration file [100K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XINIT, 0, dmenuFlagCheck }, + { "xdcf", "Customizable xdm runtime configuration file [100K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XDMCF, 0, dmenuFlagCheck }, + { "doc", "READMEs and XFree86 specific man pages [500K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_DOC, 0, dmenuFlagCheck }, + { "man", "Man pages (except XFree86 specific ones) [1.2MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_MAN, 0, dmenuFlagCheck }, + { "prog", "Programmer's header and library files [4MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PROG, 0, dmenuFlagCheck }, + { "link", "X Server reconfiguration kit [7.8MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LINK, 0, dmenuFlagCheck }, + { "pex", "PEX fonts and libs needed by PEX apps [500K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PEX, 0, dmenuFlagCheck }, + { "sources", "XFree86 3.1.1u1 standard + contrib sources [200MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_SRC, 0, dmenuFlagCheck }, { NULL } }, }; @@ -539,15 +499,15 @@ install. At the minimum, you should install the standard\n\ (these are selected by default).", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", + { { "fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_MISC, 0, dmenuFlagCheck }, - { "f100", "100 DPI fonts [1.8MB]", + { "f100", "100 DPI fonts [1.8MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_100, 0, dmenuFlagCheck }, - { "fscl", "Speedo and Type scalable fonts [1.6MB]", + { "fscl", "Speedo and Type scalable fonts [1.6MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_SCALE, 0, dmenuFlagCheck }, - { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", + { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_NON, 0, dmenuFlagCheck }, - { "server", "Font server [0.3MB]", + { "server", "Font server [0.3MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_SERVER, 0, dmenuFlagCheck }, { NULL } }, }; @@ -561,29 +521,29 @@ it is recommended that try the SVGA or VGA16 servers (the VGA16 and\n\ Mono servers are particularly well-suited to most LCD displays).", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "SVGA", "Standard VGA or Super VGA display [1MB]", + { { "SVGA", "Standard VGA or Super VGA display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_SVGA, 0, dmenuFlagCheck }, - { "VGA16", "Standard 16 color VGA display [1MB]", + { "VGA16", "Standard 16 color VGA display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_VGA16, 0, dmenuFlagCheck }, - { "Mono", "Standard Monochrome display [1MB]", + { "Mono", "Standard Monochrome display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MONO, 0, dmenuFlagCheck }, - { "8514", "8-bit (256 color) IBM 8514 or compatible card [1MB]", + { "8514", "8-bit (256 color) IBM 8514 or compatible card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_8514, 0, dmenuFlagCheck }, - { "AGX", "8-bit AGX card [1MB]", + { "AGX", "8-bit AGX card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_AGX, 0, dmenuFlagCheck }, - { "Ma8", "8-bit ATI Mach8 card [1MB]", + { "Ma8", "8-bit ATI Mach8 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH8, 0, dmenuFlagCheck }, - { "Ma32", "8 and 16-bit (65K color) for ATI Mach32 card [1MB]", + { "Ma32", "8 and 16-bit (65K color) for ATI Mach32 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH32, 0, dmenuFlagCheck }, - { "Ma64", "8 and 16-bit (65K color) for ATI Mach64 card [1MB]", + { "Ma64", "8 and 16-bit (65K color) for ATI Mach64 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH64, 0, dmenuFlagCheck }, - { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards [1MB]", + { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_P9000, 0, dmenuFlagCheck }, - { "S3", "8, 16 and 24-bit color for S3 based boards [1MB]", + { "S3", "8, 16 and 24-bit color for S3 based boards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_S3, 0, dmenuFlagCheck }, - { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards [1MB]", + { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_W32, 0, dmenuFlagCheck }, - { "nest", "A nested server for testing purposes [1MB]", + { "nest", "A nested server for testing purposes [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_NEST, 0, dmenuFlagCheck }, { NULL } }, }; @@ -628,10 +588,6 @@ ftpFlagCheck(DMenuItem *item) OptFlags &= ~OPT_FTP_RESELECT; if (!(OptFlags & (OPT_FTP_ABORT + OPT_FTP_RESELECT))) OptFlags |= OPT_FTP_ABORT; - if ((OptFlags & (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE)) == (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE)) - OptFlags &= ~OPT_FTP_ACTIVE; - if (!(OptFlags & (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE))) - OptFlags |= OPT_FTP_PASSIVE; if (*((unsigned int *)item->ptr) & item->parm) return "ON"; return "OFF"; @@ -646,58 +602,66 @@ with various possible error conditions and how verbose it will\n\ be at various stages.", "Press F1 for more help on these options", "options.hlp", - { { "NFS Secure", "NFS server talks only on a secure port", - DMENU_SET_FLAG, &OptFlags, OPT_NFS_SECURE, 0, dmenuFlagCheck }, - { "NFS Slow", "User is using a slow PC or ethernet card", - DMENU_SET_FLAG, &OptFlags, OPT_SLOW_ETHER, 0, dmenuFlagCheck }, - { "FTP Abort", "On transfer failure, abort", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_ABORT, 0, ftpFlagCheck }, - { "FTP Reselect", "On transfer failure, ask for another host", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_RESELECT, 0, ftpFlagCheck }, - { "FTP active", "Use \"active mode\" for standard FTP", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_ACTIVE, 0, ftpFlagCheck }, - { "FTP passive", "Use \"passive mode\" for firewalled FTP", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_PASSIVE, 0, ftpFlagCheck }, - { "Debugging", "Turn on the extra debugging flag", - DMENU_SET_FLAG, &OptFlags, OPT_DEBUG, 0, dmenuFlagCheck }, - { "Yes To All", "Assume \"Yes\" answers to all non-critical dialogs", + { { "FTP Options", "Set FTP specific options", + DMENU_SUBMENU, &MenuFTPOptions, 0, 0, 0 }, + { "NFS Secure", "NFS server talks only on a secure port", + DMENU_SET_FLAG, &OptFlags, OPT_NFS_SECURE, 0, dmenuFlagCheck }, + { "NFS Slow", "User is using a slow PC or ethernet card", + DMENU_SET_FLAG, &OptFlags, OPT_SLOW_ETHER, 0, dmenuFlagCheck }, + { "Debugging", "Turn on the extra debugging flag", + DMENU_SET_FLAG, &OptFlags, OPT_DEBUG, 0, dmenuFlagCheck }, + { "Yes To All", "Assume \"Yes\" answers to all non-critical dialogs", DMENU_SET_FLAG, &OptFlags, OPT_NO_CONFIRM, 0, dmenuFlagCheck }, + { "Clear", "Clear All Option Flags", + DMENU_CALL, clearFlags, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, + { NULL } }, +}; + +DMenu MenuFTPOptions = { + DMENU_MULTIPLE_TYPE | DMENU_SELECTION_RETURNS, + "Choose FTP Options", + "This menu allows you to customize the behavior of FTP transfers\n\ +for an FTP installation. To select \"Active\" or \"Passive\" mode\n\ +FTP, see the Media menu.", + NULL, + NULL, + { { "FTP Abort", "On transfer failure, abort", + DMENU_SET_FLAG, &OptFlags, OPT_FTP_ABORT, 0, ftpFlagCheck }, + { "FTP Reselect", "On transfer failure, ask for another host", + DMENU_SET_FLAG, &OptFlags, OPT_FTP_RESELECT, 0, ftpFlagCheck }, { "FTP userpass", "Specify username and password instead of anonymous", - DMENU_CALL, mediaSetFtpUserPass, 0, 0, userPassCheck }, - { "Clear", "Clear All Option Flags", - DMENU_CALL, clearFlags, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + DMENU_CALL, mediaSetFtpUserPass, 0, 0, userPassCheck }, { NULL } }, }; /* The main installation menu */ -DMenu MenuInstall = { +DMenu MenuInstallCustom = { DMENU_NORMAL_TYPE, - "Choose Installation Options", /* title */ - "Before installation can continue, you need to specify a few\n\ + "Choose Custom Installation Options", + "This is the custom installation menu. You may use this menu to specify\n\ details on the type of distribution you wish to have, where you wish\n\ -to install it from and how you wish to allocate disk storage to FreeBSD.\n\n\ -None of the items in this menu will actually modify the contents of\n\ -your disk until you select the \"Install\" menu item (and even then, only\n\ -after a final confirmation).", +to install it from and how you wish to allocate disk storage to FreeBSD.", "Press F1 to read the installation guide", "install.hlp", - { { "Partition", "Allocate disk space for FreeBSD", /* P */ - DMENU_CALL, diskPartitionEditor, 0, 0 }, - { "Label", "Label allocated disk partitions", /* L */ - DMENU_CALL, diskLabelEditor, 0, 0 }, - { "Distributions", "Choose the type of installation you want", /* T */ - DMENU_SUBMENU, &MenuInstallType, 0, 0 }, - { "Media", "Choose the installation media type", /* M */ - DMENU_SUBMENU, &MenuMedia, 0, 0 }, - { "Options", "Go to Options submenu", /* O */ - DMENU_SUBMENU, &MenuOptions, 0, 0 }, - { "Commit", "Install FreeBSD onto your hard disk(s)", /* C */ - DMENU_CALL, installCommit, 0, 0 }, - { "Configure", "Do post-install configuration of FreeBSD", /* C */ - DMENU_SUBMENU, &MenuConfigure, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", + { { "Partition", "Allocate disk space for FreeBSD", + DMENU_CALL, diskPartitionEditor, 0, 0 }, + { "Label", "Label allocated disk partitions", + DMENU_CALL, diskLabelEditor, 0, 0 }, + { "Distributions", "Choose the type of installation you want", + DMENU_SUBMENU, &MenuInstallType, 0, 0 }, + { "Media", "Choose the installation media type", + DMENU_SUBMENU, &MenuMedia, 0, 0 }, + { "Extract", "Extract distributions from selected media", + DMENU_CALL, distExtractAll, 0, 0 }, + { "Options", "Go to Options submenu", + DMENU_SUBMENU, &MenuOptions, 0, 0 }, + { "Commit", "Do Write/Make/Extract options in one step", + DMENU_CALL, installCommit, 0, 0 }, + { "Configure", "Do post-install configuration of FreeBSD", + DMENU_SUBMENU, &MenuConfigure, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -716,12 +680,12 @@ one, select \"standard\". If you would prefer your Master Boot\n\ Record to remain untouched, then select \"none\".", "Press F1 to read the installation guide", "install.hlp", - { { "BootMgr", "Install the FreeBSD Boot Manager (\"Booteasy\")", /* B */ - DMENU_SET_VALUE, &BootMgr, 0, 0, dmenuRadioCheck }, - { "Standard", "Use a standard MBR (no boot manager)", /* S */ + { { "BootMgr", "Install the FreeBSD Boot Manager (\"Booteasy\")", + DMENU_SET_VALUE, &BootMgr, 0, 0, dmenuRadioCheck }, + { "Standard", "Use a standard MBR (no boot manager)", DMENU_SET_VALUE, &BootMgr, 1, 0, dmenuRadioCheck }, - { "None", "Leave the Master Boot Record untouched", /* N */ - DMENU_SET_VALUE, &BootMgr, 2, 0, dmenuRadioCheck }, + { "None", "Leave the Master Boot Record untouched", + DMENU_SET_VALUE, &BootMgr, 2, 0, dmenuRadioCheck }, { NULL } }, }; @@ -735,24 +699,24 @@ importantly, you can use the Packages utility to load extra \"3rd party\"\n\ software not provided in the base distributions.", "Press F1 for more information on these options", "configure.hlp", - { { "Add User", "Add users to the system", - DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 }, - { "Console", "Customize system console behavior", - DMENU_SUBMENU, &MenuSyscons, 0, 0 }, - { "Networking", "Configure additional network services", - DMENU_SUBMENU, &MenuNetworking, 0, 0 }, - { "Time Zone", "Set which time zone you're in", - DMENU_SYSTEM_COMMAND, "rm -f /etc/wall_cmos_clock /etc/localtime; tzsetup", 0, 0 }, - { "Packages", "Install extra FreeBSD packaged software", - DMENU_CALL, configPackages, 0, 0 }, - { "Ports", "Enable the FreeBSD Ports Collection from CD", - DMENU_CALL, configPorts, 0, 1 }, - { "Root Password", "Set the system manager's password", - DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 }, - { "XFree86", "Configure XFree86 (if installed)", - DMENU_SYSTEM_COMMAND, "/usr/X11R6/bin/xf86config", 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "Add User", "Add users to the system", + DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 }, + { "Console", "Customize system console behavior", + DMENU_SUBMENU, &MenuSyscons, 0, 0 }, + { "Networking", "Configure additional network services", + DMENU_SUBMENU, &MenuNetworking, 0, 0 }, + { "Time Zone", "Set which time zone you're in", + DMENU_SYSTEM_COMMAND, "rm -f /etc/wall_cmos_clock /etc/localtime; tzsetup", 0, 0 }, + { "Packages", "Install extra FreeBSD packaged software", + DMENU_CALL, configPackages, 0, 0 }, + { "Ports", "Enable the FreeBSD Ports Collection from CD", + DMENU_CALL, configPorts, 0, 1 }, + { "Root Password", "Set the system manager's password", + DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 }, + { "XFree86", "Configure XFree86 (if installed)", + DMENU_SYSTEM_COMMAND, "/usr/X11R6/bin/xf86config", 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -777,20 +741,20 @@ of installing FreeBSD. This menu allows you to configure other\n\ aspects of your system's network configuration.", NULL, NULL, - { { "NFS client", "This machine will be an NFS client", - DMENU_SET_VARIABLE, "nfs_client=YES", 0, 0, dmenuVarCheck }, - { "NFS server", "This machine will be an NFS server", - DMENU_SET_VARIABLE, "nfs_server=YES", 0, 0, dmenuVarCheck }, - { "Interfaces", "Configure network interfaces", - DMENU_CALL, tcpMenuSelect, 0, 0 }, - { "ntpdate", "Select a clock-syncronization server", - DMENU_SUBMENU, &MenuNTP, 0, 0, menuCheckNTP }, - { "routed", "Set flags for routed (default: -q)", - DMENU_CALL, configRoutedFlags, 0, 0, menuCheckRouted }, - { "rwhod", "This machine wants to run the rwho daemon", - DMENU_SET_VARIABLE, "rwhod=YES", 0, 0, dmenuVarCheck }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "NFS client", "This machine will be an NFS client", + DMENU_SET_VARIABLE, "nfs_client=YES", 0, 0, dmenuVarCheck }, + { "NFS server", "This machine will be an NFS server", + DMENU_SET_VARIABLE, "nfs_server=YES", 0, 0, dmenuVarCheck }, + { "Interfaces", "Configure network interfaces", + DMENU_CALL, tcpMenuSelect, 0, 0 }, + { "ntpdate", "Select a clock-syncronization server", + DMENU_SUBMENU, &MenuNTP, 0, 0, menuCheckNTP }, + { "routed", "Set flags for routed (default: -q)", + DMENU_CALL, configRoutedFlags, 0, 0, menuCheckRouted }, + { "rwhod", "This machine wants to run the rwho daemon", + DMENU_SET_VARIABLE, "rwhod=YES", 0, 0, dmenuVarCheck }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -854,14 +818,14 @@ 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 }, - { "Repeat", "Set the rate at which keys repeat", - DMENU_SUBMENU, &MenuSysconsKeyrate, 0, 0 }, - { "Saver", "Configure the screen saver", - DMENU_SUBMENU, &MenuSysconsSaver, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "Keymap", "Choose an alternate keyboard map", + DMENU_SUBMENU, &MenuSysconsKeymap, 0, 0 }, + { "Repeat", "Set the rate at which keys repeat", + DMENU_SUBMENU, &MenuSysconsKeyrate, 0, 0 }, + { "Saver", "Configure the screen saver", + DMENU_SUBMENU, &MenuSysconsSaver, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -874,32 +838,32 @@ to a standard \"American\" keyboard map. Users in other countries\n\ the other keymaps below.", "Choose a keyboard map", NULL, - { { "Danish CP865", "Danish Code Page 865 keymap", - DMENU_SET_VARIABLE, "keymap=danish.cp865", 0, 0, dmenuVarCheck }, - { "Danish ISO", "Danish ISO keymap", - DMENU_SET_VARIABLE, "keymap=danish.iso", 0, 0, dmenuVarCheck }, - { "French ISO", "French ISO keymap", - DMENU_SET_VARIABLE, "keymap=fr.iso", 0, 0, dmenuVarCheck }, - { "German CP850", "German Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=german.cp850", 0, 0, dmenuVarCheck }, - { "German ISO", "German ISO keymap", - DMENU_SET_VARIABLE, "keymap=german.iso", 0, 0, dmenuVarCheck }, - { "Russian CP866", "Russian Code Page 866 keymap", - DMENU_SET_VARIABLE, "keymap=ru.cp866", 0, 0, dmenuVarCheck }, - { "Russian KOI8", "Russian koi8 keymap", - DMENU_SET_VARIABLE, "keymap=ru.koi8-r", 0, 0, dmenuVarCheck }, - { "Russian s-KOI8", "Russian shifted koi8 keymap", - DMENU_SET_VARIABLE, "keymap=ru.koi8-r.shift", 0, 0, dmenuVarCheck}, - { "Swedish CP850", "Swedish Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=swedish.cp850", 0, 0, dmenuVarCheck }, - { "Swedish ISO", "Swedish ISO keymap", - DMENU_SET_VARIABLE, "keymap=swedish.iso", 0, 0, dmenuVarCheck }, - { "U.K. CP850", "United Kingdom Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=uk.cp850", 0, 0, dmenuVarCheck }, - { "U.K. ISO", "United Kingdom ISO keymap", - DMENU_SET_VARIABLE, "keymap=uk.iso", 0, 0, dmenuVarCheck }, - { "U.S. ISO", "United States ISO keymap", - DMENU_SET_VARIABLE, "keymap=us.iso", 0, 0, dmenuVarCheck }, + { { "Danish CP865", "Danish Code Page 865 keymap", + DMENU_SET_VARIABLE, "keymap=danish.cp865", 0, 0, dmenuVarCheck }, + { "Danish ISO", "Danish ISO keymap", + DMENU_SET_VARIABLE, "keymap=danish.iso", 0, 0, dmenuVarCheck }, + { "French ISO", "French ISO keymap", + DMENU_SET_VARIABLE, "keymap=fr.iso", 0, 0, dmenuVarCheck }, + { "German CP850", "German Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=german.cp850", 0, 0, dmenuVarCheck }, + { "German ISO", "German ISO keymap", + DMENU_SET_VARIABLE, "keymap=german.iso", 0, 0, dmenuVarCheck }, + { "Russian CP866", "Russian Code Page 866 keymap", + DMENU_SET_VARIABLE, "keymap=ru.cp866", 0, 0, dmenuVarCheck }, + { "Russian KOI8", "Russian koi8 keymap", + DMENU_SET_VARIABLE, "keymap=ru.koi8-r", 0, 0, dmenuVarCheck }, + { "Russian s-KOI8", "Russian shifted koi8 keymap", + DMENU_SET_VARIABLE, "keymap=ru.koi8-r.shift", 0, 0, dmenuVarCheck }, + { "Swedish CP850", "Swedish Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=swedish.cp850", 0, 0, dmenuVarCheck }, + { "Swedish ISO", "Swedish ISO keymap", + DMENU_SET_VARIABLE, "keymap=swedish.iso", 0, 0, dmenuVarCheck }, + { "U.K. CP850", "United Kingdom Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=uk.cp850", 0, 0, dmenuVarCheck }, + { "U.K. ISO", "United Kingdom ISO keymap", + DMENU_SET_VARIABLE, "keymap=uk.iso", 0, 0, dmenuVarCheck }, + { "U.S. ISO", "United States ISO keymap", + DMENU_SET_VARIABLE, "keymap=us.iso", 0, 0, dmenuVarCheck }, { NULL } }, }; @@ -910,14 +874,14 @@ DMenu MenuSysconsKeyrate = { when held down.", "Choose a keyboard repeat rate", NULL, - { { "Slow", "Slow keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=slow", 0, 0, dmenuVarCheck }, - { "Normal", "\"Normal\" keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=normal", 0, 0, dmenuVarCheck }, - { "Fast", "Fast keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=fast", 0, 0, dmenuVarCheck }, - { "Default", "Use default keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=NO", 0, 0, dmenuVarCheck }, + { { "Slow", "Slow keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=slow", 0, 0, dmenuVarCheck }, + { "Normal", "\"Normal\" keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=normal", 0, 0, dmenuVarCheck }, + { "Fast", "Fast keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=fast", 0, 0, dmenuVarCheck }, + { "Default", "Use default keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=NO", 0, 0, dmenuVarCheck }, { NULL } }, }; @@ -936,17 +900,17 @@ monitor switched on and idle for long periods of time then you should\n\ probably enable one of these screen savers to prevent phosphor burn-in.", "Choose a nifty-looking screen saver", NULL, - { { "blank", "Simply blank the screen", - DMENU_SET_VARIABLE, "saver=blank", 0, 0, dmenuVarCheck }, - { "Green", "\"Green\" power saving mode (if supported by monitor)", - DMENU_SET_VARIABLE, "saver=green", 0, 0, dmenuVarCheck }, - { "Snake", "Draw a FreeBSD \"snake\" on your screen", - DMENU_SET_VARIABLE, "saver=snake", 0, 0, dmenuVarCheck }, - { "Star", "A \"twinkling stars\" effect", - DMENU_SET_VARIABLE, "saver=star", 0, 0, dmenuVarCheck }, - { "Timeout", "Set the screen saver timeout interval", - DMENU_CALL, configSaverTimeout, 0, 0, menuSaverTimeoutCheck }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "blank", "Simply blank the screen", + DMENU_SET_VARIABLE, "saver=blank", 0, 0, dmenuVarCheck }, + { "Green", "\"Green\" power saving mode (if supported by monitor)", + DMENU_SET_VARIABLE, "saver=green", 0, 0, dmenuVarCheck }, + { "Snake", "Draw a FreeBSD \"snake\" on your screen", + DMENU_SET_VARIABLE, "saver=snake", 0, 0, dmenuVarCheck }, + { "Star", "A \"twinkling stars\" effect", + DMENU_SET_VARIABLE, "saver=star", 0, 0, dmenuVarCheck }, + { "Timeout", "Set the screen saver timeout interval", + DMENU_CALL, configSaverTimeout, 0, 0, menuSaverTimeoutCheck }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; diff --git a/usr.sbin/sade/sade.h b/usr.sbin/sade/sade.h index c845941..b1b1ba3 100644 --- a/usr.sbin/sade/sade.h +++ b/usr.sbin/sade/sade.h @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: sysinstall.h,v 1.41.2.20 1995/06/10 09:14:53 jkh Exp $ + * $Id: sysinstall.h,v 1.42.2.1 1995/07/21 10:54:06 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -111,7 +111,7 @@ #define VAR_INTERFACES "network_interfaces" /* The help file for the TCP/IP setup screen */ -#define TCP_HELPFILE "tcp.hlp" +#define TCP_HELPFILE "tcp" /*** Types ***/ typedef unsigned int Boolean; @@ -251,6 +251,7 @@ extern DMenu MenuInitial; /* Initial installation menu */ extern DMenu MenuMBRType; /* Type of MBR to write on the disk */ extern DMenu MenuConfigure; /* Final configuration menu */ extern DMenu MenuDocumentation; /* Documentation menu */ +extern DMenu MenuFTPOptions; /* FTP Installation options */ extern DMenu MenuOptions; /* Installation options */ extern DMenu MenuOptionsLanguage; /* Language options menu */ extern DMenu MenuMedia; /* Media type menu */ @@ -266,7 +267,7 @@ extern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ extern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ extern DMenu MenuSysconsSaver; /* System console saver configuration menu */ extern DMenu MenuNetworking; /* Network configuration menu */ -extern DMenu MenuInstall; /* Installation menu */ +extern DMenu MenuInstallCustom; /* Custom Installation menu */ extern DMenu MenuInstallType; /* Installation type menu */ extern DMenu MenuDistributions; /* Distribution menu */ extern DMenu MenuDESDistributions; /* DES distribution menu */ @@ -332,6 +333,7 @@ extern void dummyShutdown(Device *dev); /* disks.c */ extern int diskPartitionEditor(char *unused); +extern int diskPartitionWrite(char *unused); /* dist.c */ extern int distReset(char *str); @@ -345,7 +347,7 @@ extern int distSetEverything(char *str); extern int distSetDES(char *str); extern int distSetSrc(char *str); extern int distSetXF86(char *str); -extern void distExtractAll(void); +extern int distExtractAll(char *str); /* dmenu.c */ extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max); @@ -377,6 +379,8 @@ extern void globalsInit(void); /* install.c */ extern int installCommit(char *str); +extern int installExpress(char *str); +extern Boolean installFilesystems(void); /* lang.c */ extern void lang_set_Danish(char *str); @@ -393,6 +397,7 @@ extern void lang_set_Swedish(char *str); /* label.c */ extern int diskLabelEditor(char *str); +extern int diskLabelCommit(char *str); /* makedevs.c (auto-generated) */ extern const char termcap_vt100[]; @@ -414,6 +419,8 @@ extern int mediaSetFloppy(char *str); extern int mediaSetDOS(char *str); extern int mediaSetTape(char *str); extern int mediaSetFTP(char *str); +extern int mediaSetFTPActive(char *str); +extern int mediaSetFTPPassive(char *str); extern int mediaSetUFS(char *str); extern int mediaSetNFS(char *str); extern Boolean mediaGetType(void); diff --git a/usr.sbin/sade/system.c b/usr.sbin/sade/system.c index 066558b..880dff9 100644 --- a/usr.sbin/sade/system.c +++ b/usr.sbin/sade/system.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.43.2.14 1995/06/09 14:33:36 jkh Exp $ + * $Id: system.c,v 1.44 1995/06/11 19:30:10 rgrimes Exp $ * * Jordan Hubbard * @@ -60,9 +60,6 @@ systemInitialize(int argc, char **argv) setbuf(stderr, 0); } - for(i = 0; i < 256; i++) - default_scrnmap[i] = i; - if (set_termcap() == -1) { printf("Can't find terminal entry\n"); exit(-1); @@ -146,63 +143,16 @@ systemDisplayFile(char *file) 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 */ - static char oldlang[64]; - char extract[64], *default_lang = "en_US.ISO8859-1"; - int i; - if (!file) return NULL; - if ((cp = getenv("LANG")) == NULL) - cp = default_lang; - - for (i = 0; i < 2; i++) { - snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file); - if (file_readable(buf)) - return buf; - if (*oldfile) { - int i; - - i = unlink(oldfile); - if (isDebug()) - msgDebug("Unlink(%s) = %d\n", oldfile, i); - i = rmdir(oldlang); - if (isDebug()) - msgDebug("rmdir(%s) = %d\n", oldlang, i); - oldfile[0] = '\0'; - } - snprintf(extract, 64, "%s/%s", cp, file); - vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1", extract); - if (file_readable(buf)) { - strcpy(oldfile, buf); - sprintf(oldlang, "/stand/%s", cp); - return buf; - } - if (cp == default_lang) - break; - cp = default_lang; - } + snprintf(buf, FILENAME_MAX, "/stand/help/%s.hlp", file); + if (file_readable(buf)) + return buf; return NULL; } void -systemChangeFont(const u_char font[]) -{ - if (OnVTY && ColorDisplay) { - if (ioctl(0, PIO_FONT8x16, font) < 0) - msgConfirm("Sorry! Unable to load font for %s", getenv("LANG")); - } -} - -void -systemChangeLang(char *lang) -{ - variable_set2("LANG", lang); -} - -void systemChangeTerminal(char *color, const u_char c_term[], char *mono, const u_char m_term[]) { @@ -231,16 +181,6 @@ systemChangeTerminal(char *color, const u_char c_term[], dialog_clear(); } -void -systemChangeScreenmap(const u_char newmap[]) -{ - if (OnVTY) { - if (ioctl(0, PIO_SCRNMAP, newmap) < 0) - msgConfirm("Sorry! Unable to load the screenmap for %s", - getenv("LANG")); - } -} - int vsystem(char *fmt, ...) { diff --git a/usr.sbin/sysinstall/Makefile b/usr.sbin/sysinstall/Makefile index c70dfc4..0f0b8fd 100644 --- a/usr.sbin/sysinstall/Makefile +++ b/usr.sbin/sysinstall/Makefile @@ -5,7 +5,7 @@ CLEANFILES= makedevs.c rtermcap .PATH: ${.CURDIR}/../disklabel ${.CURDIR}/../../usr.bin/cksum SRCS= attr.c cdrom.c command.c config.c decode.c devices.c disks.c dist.c \ - dmenu.c dos.c floppy.c ftp.c ftp_strat.c globals.c install.c label.c lang.c \ + dmenu.c dos.c floppy.c ftp.c ftp_strat.c globals.c install.c label.c \ main.c makedevs.c media.c menus.c misc.c msg.c network.c nfs.c system.c tape.c \ tcpip.c termcap.c ufs.c variable.c wizard.c @@ -22,12 +22,6 @@ LDADD+= -L${.CURDIR}/../libdisk -ldisk DPADD= ${LIBDIALOG} ${LIBNCURSES} ${LIBMYTINFO} ${LIBUTIL} -.if exists(${.CURDIR}/../../share/syscons/scrnmaps/obj) -MKSCRNMAP=${.CURDIR}/../../share/syscons/scrnmaps/obj/koi8-r2cp866.mk -.else -MKSCRNMAP=${.CURDIR}/../../share/syscons/scrnmaps/koi8-r2cp866.mk -.endif - makedevs.c: Makefile rtermcap rm -f makedevs.tmp echo '#include <sys/types.h>' > makedevs.tmp @@ -52,22 +46,6 @@ makedevs.c: Makefile rtermcap ./rtermcap vt100 | \ file2c 'const char termcap_vt100[] = {' ',0};' \ >> makedevs.tmp - uudecode < ${.CURDIR}/../../share/syscons/fonts/iso-8x16.fnt \ - && file2c 'const u_char font_iso_8x16[] = {' '};' \ - < iso-8x16 >> makedevs.tmp - rm iso-8x16 - uudecode < ${.CURDIR}/../../share/syscons/fonts/cp850-8x16.fnt \ - && file2c 'const u_char font_cp850_8x16[] = {' '};' \ - < cp850-8x16 >> makedevs.tmp - rm cp850-8x16 - uudecode < ${.CURDIR}/../../share/syscons/fonts/cp866-8x16.fnt \ - && file2c 'const u_char font_cp866_8x16[] = {' '};' \ - < cp866-8x16 >> makedevs.tmp - rm cp866-8x16 - ${MKSCRNMAP} koi8-r2cp866 \ - && file2c 'const u_char koi8_r2cp866[] = {' '};' \ - < koi8-r2cp866 >> makedevs.tmp - rm koi8-r2cp866 mv makedevs.tmp makedevs.c rtermcap: ${.CURDIR}/rtermcap.c diff --git a/usr.sbin/sysinstall/cdrom.c b/usr.sbin/sysinstall/cdrom.c index 0a65097..03cef9f 100644 --- a/usr.sbin/sysinstall/cdrom.c +++ b/usr.sbin/sysinstall/cdrom.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: cdrom.c,v 1.6.2.3 1995/06/05 12:03:44 jkh Exp $ + * $Id: cdrom.c,v 1.7.2.2 1995/07/21 11:45:32 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -66,7 +66,7 @@ mediaInitCDROM(Device *dev) struct iso_args args; struct stat sb; - if (cdromMounted) + if (!RunningAsInit || cdromMounted) return TRUE; if (Mkdir("/cdrom", NULL)) @@ -88,7 +88,7 @@ mediaInitCDROM(Device *dev) */ if (stat("/cdrom/dists", &sb)) { if (errno == ENOENT) { - msgConfirm("Couldn't locate the directory `dists' on the CD.\nIs this a 2.0.5 CDROM?\n"); + msgConfirm("Couldn't locate the directory `dists' on the CD.\nIs this a FreeBSD CDROM?\n"); return FALSE; } else { @@ -115,7 +115,7 @@ mediaGetCDROM(Device *dev, char *file, Attribs *dist_attrs) void mediaShutdownCDROM(Device *dev) { - if (!cdromMounted) + if (!RunningAsInit || !cdromMounted) return; msgDebug("Unmounting /cdrom\n"); if (unmount("/cdrom", MNT_FORCE) != 0) diff --git a/usr.sbin/sysinstall/command.c b/usr.sbin/sysinstall/command.c index 5d132c4..1fad8d2 100644 --- a/usr.sbin/sysinstall/command.c +++ b/usr.sbin/sysinstall/command.c @@ -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.10 1995/05/29 11:01:05 jkh Exp $ + * $Id: command.c,v 1.11.4.1 1995/07/21 11:45:35 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -72,28 +72,19 @@ command_clear(void) numCommands = 0; } -/* Add a shell command under a given key */ -void -command_shell_add(char *key, char *fmt, ...) +static void +addit(char *key, int type, void *cmd, void *data) { - va_list args; - char *cmd; int i; - cmd = (char *)safe_malloc(1024); - va_start(args, fmt); - vsnprintf(cmd, 1024, fmt, args); - va_end(args); - /* First, look for the key already present and add a command to it */ for (i = 0; i < numCommands; i++) { if (!strcmp(commandStack[i]->key, key)) { if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_SHELL; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)cmd; - commandStack[i]->cmds[commandStack[i]->ncmds].data = NULL; + msgFatal("More than %d commands stacked up behind %s??", MAX_NUM_COMMANDS, key); + commandStack[i]->cmds[commandStack[i]->ncmds].type = type; + commandStack[i]->cmds[commandStack[i]->ncmds].ptr = cmd; + commandStack[i]->cmds[commandStack[i]->ncmds].data = data; ++(commandStack[i]->ncmds); return; } @@ -105,40 +96,31 @@ command_shell_add(char *key, char *fmt, ...) commandStack[numCommands] = safe_malloc(sizeof(Command)); strcpy(commandStack[numCommands]->key, key); commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_SHELL; - commandStack[numCommands]->cmds[0].ptr = (void *)cmd; - commandStack[numCommands++]->cmds[0].data = NULL; + commandStack[numCommands]->cmds[0].type = type; + commandStack[numCommands]->cmds[0].ptr = cmd; + commandStack[numCommands++]->cmds[0].data = data; } /* Add a shell command under a given key */ void -command_func_add(char *key, commandFunc func, void *data) +command_shell_add(char *key, char *fmt, ...) { - int i; + va_list args; + char *cmd; - /* First, look for the key already present and add a command to it */ - for (i = 0; i < numCommands; i++) { - if (!strcmp(commandStack[i]->key, key)) { - if (commandStack[i]->ncmds == MAX_NUM_COMMANDS) - msgFatal("More than %d commands stacked up behind %s??", - MAX_NUM_COMMANDS, key); - commandStack[i]->cmds[commandStack[i]->ncmds].type = CMD_FUNCTION; - commandStack[i]->cmds[commandStack[i]->ncmds].ptr = (void *)func; - commandStack[i]->cmds[commandStack[i]->ncmds].data = data; - ++(commandStack[i]->ncmds); - return; - } - } - if (numCommands == MAX_CMDS) - msgFatal("More than %d commands accumulated??", MAX_CMDS); + cmd = (char *)safe_malloc(1024); + va_start(args, fmt); + vsnprintf(cmd, 1024, fmt, args); + va_end(args); - /* If we fell to here, it's a new key */ - commandStack[numCommands] = safe_malloc(sizeof(Command)); - strcpy(commandStack[numCommands]->key, key); - commandStack[numCommands]->ncmds = 1; - commandStack[numCommands]->cmds[0].type = CMD_FUNCTION; - commandStack[numCommands]->cmds[0].ptr = (void *)func; - commandStack[numCommands++]->cmds[0].data = data; + addit(key, CMD_SHELL, cmd, NULL); +} + +/* Add a shell command under a given key */ +void +command_func_add(char *key, commandFunc func, void *data) +{ + addit(key, CMD_FUNCTION, func, data); } /* arg to sort */ diff --git a/usr.sbin/sysinstall/config.c b/usr.sbin/sysinstall/config.c index ee82d28..75f0f9c 100644 --- a/usr.sbin/sysinstall/config.c +++ b/usr.sbin/sysinstall/config.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: config.c,v 1.15.2.28 1995/06/10 08:24:28 jkh Exp $ + * $Id: config.c,v 1.16.2.2 1995/07/21 11:45:36 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -114,7 +114,7 @@ fstype_short(Chunk *c1) return "sw"; } else if (c1->type == fat) - return "rw"; + return "ro"; return "bog"; } @@ -362,12 +362,8 @@ configRoutedFlags(char *str) int configPackages(char *str) { - int i, pstat; - pid_t pid; Boolean onCD; - msgConfirm("Warning: This utility (pkg_manage) is still somewhat experimental\nand may not function for all packages. If it fails to load the\npackages you want, try running it directly once the system is up or use the\npkg_add, pkg_info and pkg_delete utilities directly."); - i = -1; /* If we're running as init, we know that a CD in the drive is probably ours */ onCD = file_readable("/cdrom/packages"); if (!onCD && RunningAsInit) { @@ -376,19 +372,7 @@ configPackages(char *str) onCD = TRUE; } } - - if (!(pid = fork())) { - if (onCD && chdir("/cdrom/packages/All")) - exit(1); - execl("/usr/sbin/pkg_manage", "/usr/sbin/pkg_manage", (char *)NULL); - exit(1); - } - else { - pid = waitpid(pid, (int *)&pstat, 0); - i = (pid == -1) ? -1 : WEXITSTATUS(pstat); - } - if (i != 0 && isDebug()) - msgDebug("pkg_manage returns status of %d\n", i); + /* XXX Construct some sort of menu here using an INDEX file from /cdrom/packages XXX */ return 0; } diff --git a/usr.sbin/sysinstall/disks.c b/usr.sbin/sysinstall/disks.c index da5c62e..c5ec295 100644 --- a/usr.sbin/sysinstall/disks.c +++ b/usr.sbin/sysinstall/disks.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: disks.c,v 1.30.2.7 1995/06/08 09:48:31 jkh Exp $ + * $Id: disks.c,v 1.31.2.2 1995/07/21 11:45:38 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -112,7 +112,7 @@ print_command_summary() mvprintw(14, 0, "The following commands are supported (in upper or lower case):"); 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 Q = Finish"); + mvprintw(18, 0, "U = Undo All Changes Q = Finish W = Write Changes"); mvprintw(20, 0, "The currently selected partition is displayed in "); attrset(A_REVERSE); addstr("reverse"); attrset(A_NORMAL); addstr(" video."); mvprintw(21, 0, "Use F1 or ? to get more help, arrow keys to move."); @@ -206,12 +206,8 @@ diskPartition(Disk *d) if (val && (size = strtol(val, &cp, 0)) > 0) { if (*cp && toupper(*cp) == 'M') size *= 2048; - Create_Chunk(d, chunk_info[current_chunk]->offset, - size, - freebsd, - 3, - (chunk_info[current_chunk]->flags & - CHUNK_ALIGN)); + Create_Chunk(d, chunk_info[current_chunk]->offset, size, freebsd, 3, + (chunk_info[current_chunk]->flags & CHUNK_ALIGN)); record_chunks(d); } } @@ -229,8 +225,7 @@ diskPartition(Disk *d) case 'G': { char *val, geometry[80]; - snprintf(geometry, 80, "%lu/%lu/%lu", - d->bios_cyl, d->bios_hd, d->bios_sect); + snprintf(geometry, 80, "%lu/%lu/%lu", d->bios_cyl, d->bios_hd, d->bios_sect); val = msgGetInput(geometry, "Please specify the new geometry in cyl/hd/sect format.\nDon't forget to use the two slash (/) separator characters!\nIt's not possible to parse the field without them."); if (val) { @@ -255,6 +250,11 @@ diskPartition(Disk *d) break; case 'W': + if (!msgYesNo("Are you sure you want to write this now? You do also\nhave the option of not modifying the disk until *all*\nconfiguration information has been entered, at which\npoint you can do it all at once. If you're unsure, then\nchoose No at this dialog.")) + diskPartitionWrite(NULL); + break; + + case '|': if (!msgYesNo("Are you sure you want to go into Wizard mode?\nNo seat belts whatsoever are provided!")) { dialog_clear(); end_dialog(); @@ -349,3 +349,75 @@ diskPartitionEditor(char *str) } return 0; } + +static u_char * +getBootMgr(void) +{ + extern u_char mbr[], bteasy17[]; + + /* Figure out what kind of MBR the user wants */ + if (dmenuOpenSimple(&MenuMBRType)) { + switch (BootMgr) { + case 0: + return bteasy17; + + case 1: + return mbr; + + case 2: + default: + break; + } + } + return NULL; +} + +int +diskPartitionWrite(char *str) +{ + extern u_char boot1[], boot2[]; + u_char *mbrContents; + Device **devs; + int i; + + mbrContents = getBootMgr(); + devs = deviceFind(NULL, DEVICE_TYPE_DISK); + if (!devs) { + msgConfirm("Unable to find any disks to write to??"); + return 0; + } + + for (i = 0; devs[i]; i++) { + Chunk *c1; + Disk *d = (Disk *)devs[i]->private; + + if (!devs[i]->enabled) + continue; + + /* Do it once so that it only goes on the first drive */ + if (mbrContents) { + Set_Boot_Mgr(d, mbrContents); + mbrContents = NULL; + } + + Set_Boot_Blocks(d, boot1, boot2); + msgNotify("Writing partition information to drive %s", d->name); + Write_Disk(d); + + /* Now scan for bad blocks, if necessary */ + for (c1 = d->chunks->part; c1; c1 = c1->next) { + if (c1->flags & CHUNK_BAD144) { + int ret; + + msgNotify("Running bad block scan on partition %s", c1->name); + ret = vsystem("bad144 -v /dev/r%s 1234", c1->name); + if (ret) + msgConfirm("Bad144 init on %s returned status of %d!", c1->name, ret); + ret = vsystem("bad144 -v -s /dev/r%s", c1->name); + if (ret) + msgConfirm("Bad144 scan on %s returned status of %d!", c1->name, ret); + } + } + } + return 0; +} diff --git a/usr.sbin/sysinstall/dist.c b/usr.sbin/sysinstall/dist.c index 3db283d..539fc61 100644 --- a/usr.sbin/sysinstall/dist.c +++ b/usr.sbin/sysinstall/dist.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: dist.c,v 1.35.2.35 1995/06/10 14:20:10 jkh Exp $ + * $Id: dist.c,v 1.36.2.1 1995/07/21 10:53:48 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -104,6 +104,7 @@ static Distribution SrcDistTable[] = { { "slibexec", "/usr/src", &SrcDists, DIST_SRC_LIBEXEC, NULL }, { "slkm", "/usr/src", &SrcDists, DIST_SRC_LKM, NULL }, { "srelease", "/usr/src", &SrcDists, DIST_SRC_RELEASE, NULL }, +{ "sbin", "/usr/src", &SrcDists, DIST_SRC_BIN, NULL }, { "ssbin", "/usr/src", &SrcDists, DIST_SRC_SBIN, NULL }, { "sshare", "/usr/src", &SrcDists, DIST_SRC_SHARE, NULL }, { "ssys", "/usr/src", &SrcDists, DIST_SRC_SYS, NULL }, @@ -414,14 +415,14 @@ distExtract(char *parent, Distribution *me) return status; } -void -distExtractAll(void) +int +distExtractAll(char *unused) { int retries = 0; /* First try to initialize the state of things */ if (!(*mediaDevice->init)(mediaDevice)) - return; + return 0; /* Try for 3 times around the loop, then give up. */ while (Dists && ++retries < 3) @@ -433,4 +434,5 @@ distExtractAll(void) /* Close up shop and go home */ (*mediaDevice->shutdown)(mediaDevice); + return 0; } diff --git a/usr.sbin/sysinstall/dist.h b/usr.sbin/sysinstall/dist.h index 9b4d338..eaab90b 100644 --- a/usr.sbin/sysinstall/dist.h +++ b/usr.sbin/sysinstall/dist.h @@ -46,6 +46,7 @@ #define DIST_SRC_SYS 0x0800 #define DIST_SRC_UBIN 0x1000 #define DIST_SRC_USBIN 0x2000 +#define DIST_SRC_BIN 0x4000 #define DIST_SRC_ALL 0xFFFF /* Subtypes for XFree86 distribution */ diff --git a/usr.sbin/sysinstall/dos.c b/usr.sbin/sysinstall/dos.c index 52ba28e..d4a19a4 100644 --- a/usr.sbin/sysinstall/dos.c +++ b/usr.sbin/sysinstall/dos.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: dos.c,v 1.5.2.4 1995/06/05 16:59:03 jkh Exp $ + * $Id: dos.c,v 1.6.2.1 1995/07/21 10:53:52 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -63,7 +63,7 @@ mediaInitDOS(Device *dev) { struct msdosfs_args args; - if (DOSMounted) + if (!RunningAsInit || DOSMounted) return TRUE; if (Mkdir("/dos", NULL)) @@ -97,7 +97,7 @@ mediaGetDOS(Device *dev, char *file, Attribs *dist_attrs) void mediaShutdownDOS(Device *dev) { - if (!DOSMounted) + if (!RunningAsInit || !DOSMounted) return; msgDebug("Unmounting /dos\n"); if (unmount("/dos", MNT_FORCE) != 0) diff --git a/usr.sbin/sysinstall/help/configure.hlp b/usr.sbin/sysinstall/help/configure.hlp new file mode 100644 index 0000000..49980d4 --- /dev/null +++ b/usr.sbin/sysinstall/help/configure.hlp @@ -0,0 +1,14 @@ +This menu allows you to configure your system after the installation +process is complete. At the minimum, you should probably set the +system manager's password and the system time zone. + +For extra goodies like bash, emacs, pascal, etc., you should look at +the Packages item in this menu. Currently, the Packages option is +only useful if you have a CDROM or an existing packages collection +somewhere in the file system hierarchy where the package management +tool can locate it. The automatic transfer of packages via FTP is not +yet supported! + +For setting the timezone after the system is installed, type +``tzsetup''. For more information on the general system +configuration, see the ``/etc/sysconfig'' file. diff --git a/usr.sbin/sysinstall/help/distributions.hlp b/usr.sbin/sysinstall/help/distributions.hlp new file mode 100644 index 0000000..b81efbf --- /dev/null +++ b/usr.sbin/sysinstall/help/distributions.hlp @@ -0,0 +1,88 @@ +An ``X-'' prefixed before a distribution set means that the XFree86 +3.1.1u1 base distribution, libraries, manual pages, SVGA server and a +set of default fonts will be selected in addition to the set itself. + +If you select such a set, you will also be presented with a set of +menus for customizing the selections to your desired X Window System +setup. + +N.B. All references in this document to `complete source' mean the +complete source tree minus any legally encumbered cryptography code. + +The current "canned" installations are as follows: + +Developer: Base ("bin") distribution, man pages, dictionary + files, profiling libraries and the complete source tree. + + +Kern-Developer: As above, but with only kernel sources instead of + the complete source tree. + + +User: The base distribution, man pages, dictionary files and + the FreeBSD 1.x and 2.0 compatibility sets. + + +Minimal: Only the base distribution. + + +Everything: The base distribution, man pages, dictionary files, + profiling libraries, the FreeBSD 1.x and the FreeBSD 2.0 + compatibility libraries, the complete source tree, + games and your choice of XFree86 distribution components. + N.B. Still no cryptocraphy source code! + + +Custom: Allows you to modify or create your distribution set on + a piece-by-piece basis. + + +Reset: Clear all currently selected distributions. + + +--- + +When using Custom, most of the sub-distribution choices are fairly +obvious, though two possible exceptions may be the "commerce" and +"xperimnt" distributions: + + * The "commerce" directory, as its name implies, is devoted to + commercial offerings. This includes commercial products released + under special arrangement, limited functionality demos, shareware + products (you like it, you buy it), etc. + + At the time of this writing, there are unfortunately not enough + commercial offerings to justify a fully split distribution set, + so each product is available both as a subdirectory and as part + of one large archive file. If you select "commerce" from the + distributions submenus then you'll get the big file containing + the entire collection copied to your hard disk. Don't do this + unless you've got at least 10MB to devote to it! + + + * The "xperimnt" directory contains, not surprisingly, experimental + offerings. Unfinished (or work-in-progress) features, special + purpose drivers and packages, strange proof-of-concept stuff, + it's a mixed bag! Select this item on a distribution menu and + you'll get the whole collection (between 10 and 30MB). + + + If you're installing from CDROM then all of the commercial and + "experimental" offerings are also easily available in their + individual subdirectories and can be copied to hard disk at + any time. + + +You may also notice that certain distributions, like "des" and "krb", +are marked "NOT FOR EXPORT!" This is because it's illegal to +export them from the United States (or any other country which +considers encryption technology to be on its restricted export +list). Since breaking this law only gets the _originating_ site +(US!) in trouble, please do not load these distributions from U.S. +servers! + +A number of "foreign" servers do exist for the benefit of +non-U.S. sites, one of which is "skeleton.mikom.csir.co.za". + +Please get all such export restricted software from there +if you are outside the U.S., thanks! diff --git a/usr.sbin/sysinstall/help/drives.hlp b/usr.sbin/sysinstall/help/drives.hlp new file mode 100644 index 0000000..ef1c4fe --- /dev/null +++ b/usr.sbin/sysinstall/help/drives.hlp @@ -0,0 +1,29 @@ +If you are going to actually install some portion of FreeBSD on a +drive then PLEASE BE VERY CERTAIN that the Geometry reported in the +Partition Editor (see Installation Menu) is the correct one for your +drive and controller combination! + +IDE drives often have a certain geometry set during the PC BIOS setup, +or (in the case of larger IDE drives) have their geometry "remapped" +by either the IDE controller or a special boot-sector translation +utility such as that by OnTrack Systems. In these cases, knowing the +correct geometry gets even more complicated as it's not something you +can easily tell by looking at the drive or the PC BIOS setup. The +best way of verifying that your geometry is being correctly calculated +in such situations is to boot DOS (from the hard disk, not a floppy!) +and run the ``pfdisk'' utility provided in the tools/ subdirectory of +the FreeBSD CDROM or FTP site. It will report the geometry that DOS +sees, which is generally the correct one. + +If you have no DOS partition sharing the disk at all, then you may +find that you have better luck with Geometry detection if you create a +very small DOS partition first, before installing FreeBSD. Once +FreeBSD is installed you can always delete it again if you need the +space. + +It's actually not a bad idea (believe it or not) to have a small bootable +DOS partition on your FreeBSD machine anyway: Should the machine become +unstable or exhibit strange behavior at some point in the future (which +is not uncommon behavior for PC hardware!) you can then at least use +DOS for installing and running one of the commercially available system +diagnostic utilities. diff --git a/usr.sbin/sysinstall/help/media.hlp b/usr.sbin/sysinstall/help/media.hlp new file mode 100644 index 0000000..8b081bc --- /dev/null +++ b/usr.sbin/sysinstall/help/media.hlp @@ -0,0 +1,29 @@ +You can install from the following types of media: + + CDROM - requires one of the following supported CDROM drives: + + Sony CDU 31/33A + Matushita/Panasonic "Sound Blaster" CDROM. + Mitsumi FX-001{A-D} (older non-IDE drives). + SCSI - Any standard SCSI CDROM drive hooked to + a supported controller (see Hardware Guide). + + DOS - A DOS primary partition with the required FreeBSD + distribution files copied onto it (e.g. C:\FREEBSD\) + + FS - Assuming a disk or partition with an existing + FreeBSD file system and distribution set on it, + get the distribution files from there. + + Floppy - Get distribution files from one or more DOS formatted + floppies. + + FTP - Get the distribution files from an anonymous ftp server + (you will be presented with a list). + + NFS - Get the distribution files from an NFS server somewhere + (make sure that permissions on the server allow this!) + + Tape - Extract distribution files from tape into a temporary + directory and install from there. + diff --git a/usr.sbin/sysinstall/help/network_device.hlp b/usr.sbin/sysinstall/help/network_device.hlp new file mode 100644 index 0000000..95c42ae --- /dev/null +++ b/usr.sbin/sysinstall/help/network_device.hlp @@ -0,0 +1,54 @@ +You can do network installations over 3 types of communications links: + + Serial port: SLIP / PPP + Parallel port: PLIP (laplink cable) + Ethernet: A standard ethernet controller (includes some PCMCIA). + +SLIP support is rather primitive and limited primarily to hard-wired +links, such as a serial cable running between a laptop computer and +another PC. The link must be hard-wired as the SLIP installation +doesn't currently offer a dialing capability; that facility is provided +with the PPP utility, which should be used in preference to SLIP +whenever possible. When you choose a serial port device, you'll +be given the option later to edit the slattach command before it's +run on the serial line. It is expected that you'll run slattach +(or some equivalent) on the other end of the link at this time and +bring up the line. FreeBSD will then install itself over the link +at speeds of up to 115.2K/baud (the recommended speed for a hardwired +cable). + +If you're using a modem then PPP is almost certainly your only +choice. Make sure that you have your service provider's information +handy as you'll need to know it fairly early in the installation +process. You will need to know, at the minimum, your service +provider's IP address and possibly your own (though you can also leave +it blank and allow PPP to negotiate it with your ISP). You will also +need to know how to use the various "AT commands" to dial the ISP with +your particular brand of modem as the PPP dialer provides only a very +simple terminal emulator and has no "modem capabilities database". + +If a hard-wired connection to another FreeBSD (2.0R or later) machine +is available, you might also consider installing over a "laplink" +parallel port cable. The data rate over the parallel port is much +higher than what is typically possible over a serial line with +speeds of up to 50k/sec. + +Finally, for the fastest possible network installation, an ethernet +adaptor is always a good choice! FreeBSD supports most common PC +ethernet cards, a table of which is provided in the FreeBSD +Hardware Guide (see the Documentation menu on the boot floppy). +If you are using one of the supported PCMCIA ethernet cards, also be +sure that it's plugged in _before_ the laptop is powered on! FreeBSD +does not, unfortunately, currently support "hot insertion" of PCMCIA +cards. + +You will also need to know your IP address on the network, the "netmask" +value for your address class, and the name of your machine. +Your system administrator can tell you which values to use for your +particular network setup. If you will be referring to other hosts by +name rather than IP address, you'll also need a name server and +possibly the address of a gateway (if you're using PPP, it's your +provider's IP address) to use in talking to it. If you do not know +the answers to all or most of these questions, then you should +really probably talk to your system administrator _first_ before +trying this type of installation! diff --git a/usr.sbin/sysinstall/help/options.hlp b/usr.sbin/sysinstall/help/options.hlp new file mode 100644 index 0000000..c30180c --- /dev/null +++ b/usr.sbin/sysinstall/help/options.hlp @@ -0,0 +1,95 @@ +The following options may be set from this screen: + +NFS Secure: NFS server talks only on a secure port + + This is most commonly used when talking to Sun workstations, which + will not talk NFS over "non priviledged" ports. + + +NFS Slow: User is using a slow PC or ethernet card + + Use this option if you have a slow PC (386) or an ethernet card + with poor performance being "fed" by NFS on a higher-performance + workstation. This will throttle the workstation back to prevent + the PC from becoming swamped with data. + + +FTP Abort: On transfer failure, abort + + This is pretty self-explanatory. If you're transfering from a + host that drops the connection or cannot provide a file, abort + the installation of that piece. + + +FTP Reselect: On transfer failure, ask for another host + + This is more useful to someone doing an interactive installation. + If the current host stops working, ask for a new ftp server to + resume the installation from. The install will attempt to pick + up from where it left off on the other server, if at all possible. + + +FTP Active: Use "active mode" for standard FTP + + For all FTP transfers, use "Active" mode. This will not work + through firewalls, but will often work with older ftp servers + that do not support passive mode. If your connection hangs + with passive mode (the default), try active! + + +FTP Passive: Use "passive mode" for firewalled FTP + + For all FTP transfers, use "Passive" mode. This allows the user + to pass through firewalls that do not allow incoming connections + on random port addresses. + + NOTE: ACTIVE AND PASSIVE MODES ARE NOT THE SAME AS A `PROXY' + CONNECTION, WHERE A PROXY FTP SERVER IS LISTENING ON A DIFFERENT + PORT! + + In such situations, you should specify the URL as something like: + + ftp://foo.bar.com:1234/pub/FreeBSD + + Where "1234" is the port number of the proxy ftp server. + + +Debugging: Turn on the extra debugging flag + + This turns on a lot of extra noise over on the second screen + (ALT-F2 to see it, ALT-F1 to switch back). If your installation + should fail for any reason, PLEASE turn this flag on when + attempting to reproduce the problem. It will provide a lot of + extra debugging at the failure point and may be very helpful to + the developers in tracking such problems down! + + +Yes To All: Assume "Yes" answers to all non-critical dialogs + + This flag should be used with caution. It will essentially + decide NOT to ask the user about any "boundry" conditions that + might not constitute actual errors but may be warnings indicative + of other problems. + + +FTP userpass: Specify username and password instead of anonymous. + + By default, the installation attempts to log in as the + anonymous user. If you wish to log in as someone else, + specify the username and password with this option. + + +Clear: Clear All Option Flags + + Reset all option flags back to their default values. + +---- + +Some of these items, like "FTP Active" or "FTP Passive", are actually +mutually-exclusive even though you can turn all of them on or off at +once. This is a limitation of the menuing system, and is compensated +for by checks that ensure that the various flags are not in conflict. +If you re-enter the Options menu again after leaving it, you'll see +the settings it's actually using after checking for any possible +conflicts. + diff --git a/usr.sbin/sysinstall/help/partition.hlp b/usr.sbin/sysinstall/help/partition.hlp new file mode 100644 index 0000000..19b6ce1 --- /dev/null +++ b/usr.sbin/sysinstall/help/partition.hlp @@ -0,0 +1,122 @@ +This is the FreeBSD DiskLabel Editor. + +You should use this editor to create at least the following +filesystems: + + Name Purpose Min Size? Optional? + ---- ------- --------- --------- + / Root filesystem 20MB No + swap Swap space 2 * MEM No + /usr System & user files 80MB or more Yes + +Note: If you do not create a /usr filesystem then your / filesystem +will need to be bigger - at least 100MB. This is not recommended as +any media errors that may occur during disk I/O to user files will +corrupt the filesystem containing vital system files as well. It is +for this reason that / is generally kept on its own filesystem, where +it's basically considered "read only" by the system and hence a good +deal safer. + +Swap space is a little tricker, and the rule of "2 * MEM" is simply a +best-guess approximation and not necessarily accurate for your +intended usage of the system. If you intend to use the system heavily +in a server or multi-user application, you may be well advised to +increase this size. You may also create swap space on multiple drives +for a larger "total" swap and this is, in fact, recommended if you +have multiple, fast drives for which such load-balancing can only help +overall I/O performance. + +The /usr filesystem should be sized according to what kind of +distributions you're trying to load and how many packages you intend +to install in locations like /usr/local. You can also make /usr/local +a separate filesystem if you don't want to risk filling up your /usr +by mistake. + +Another useful filesystem to create is /var, which contains mail, news +printer spool files and other temporary items. It is a popular +candidate for a separate paritition and should be sized according to +your estimates of the amount of mail, news or spooled print jobs that +may be stored there. + +WARNING: If you do not create a separate filesystem for /var, space +for such files will be allocated out of the root (/) filesystem +instead. You may therefore wish to make the / partition bigger if you +expect a lot of mail or news and do not want to make /var its own +partition. + + +If you're new to this installation, you should also first understand +how FreeBSD 2.0.5's new "slices" paradigm for looking at disk storage +works. It's not very hard to grasp. A "fully qualified slice name", +that is the name of the file we open in /dev to talk to the slice, is +optionally broken into 3 parts: + + First you have the disk name. Assume we have two SCSI + drives in our system, which gives us `sd0' and `sd1'. + + Next you have the "Slice" (or "FDISK Partition") number, + as seen in the Partition Editor. Assume that our sd0 contains + two slices, a FreeBSD slice and a DOS slice. This gives us + sd0s1 and sd0s2. Let's also say that sd1 is completely devoted + to FreeBSD, so we have only one slice there: sd1s1. + + Next, if a slice is a FreeBSD slice, you have a number of + (confusingly named) "partitions" you can put inside of it. + These FreeBSD partitions are where various filesystems or swap + areas live, and using our hypothetical two-SCSI-disk machine + again, we might have something like the following layout on sd0: + + Name Mountpoint + ---- ---------- + sd0s1a / + sd0s1b <swap space> + sd0s1e /usr + + Because of historical convention, there is also a short-cut, + or "compatibility slice", that is maintained for easy access + to the first FreeBSD slice on a disk for those programs which + still don't know how to deal with the new slice scheme. + The compatibility slice names for our filesystem above would + look like: + + Name Mountpoint + ---- ---------- + sd0a / + sd0b <swap space> + sd0e /usr + + FreeBSD automatically maps the compatibility slice to the first + FreeBSD slice it finds (in this case, sd0s1). You may have multiple + FreeBSD slices on a drive, but only the first one may be the + compatibility slice! + + The compatibility slice will eventually be phased out, but + it is still important right now for several reasons: + + 1. Some programs, as mentioned before, still don't work + with the slice paradigm and need time to catch up. + + 2. The FreeBSD boot blocks are unable to look for + a root file system in anything but a compatibility + slice right now. This means that our root will always + show up on "sd0a" in the above scenario, even though + it really lives over on sd0s1a and would otherwise be + referred to by its full slice name. + +Once you understand all this, then the label editor becomes fairly +simple. You're either carving up the FreeBSD slices displayed at the +top of the screen into smaller pieces (displayed in the middle of the +screen) and then putting FreeBSD file systems on them, Or you're just +mounting existing partitions/slices into your filesystem hierarchy; +this editor lets you do both. Since a DOS partition is also just +another slice as far as FreeBSD is concerned, you can mount one into +in your filesystem hierarchy just as easily with this editor. For +FreeBSD partitions you can also toggle the "newfs" state so that +the partitions are either (re)created from scratch or simply checked +and mounted (the contents are preserved). + +When you're done, type `Q' to exit. + +No actual changes will be made to the disk until you (C)ommit from the +Install menu! You're working with what is essentially a copy of +the disk label(s), both here and in the FDISK Partition Editor. diff --git a/usr.sbin/sysinstall/help/slice.hlp b/usr.sbin/sysinstall/help/slice.hlp new file mode 100644 index 0000000..e055ca4 --- /dev/null +++ b/usr.sbin/sysinstall/help/slice.hlp @@ -0,0 +1,28 @@ +This is the Main Partition (or ``Slice'') Editor. + +Possible commands are printed at the bottom, and the Master Boot Record +contents are at the top. You can move up and down with the arrow keys +and can (C)reate a new partition whenever the "bar" is over a partition +whose type is set to "unused". + +The flags field has the following legend: + + '=' -- Partition is properly aligned. + '>' -- The partition doesn't end before cylinder 1024 + 'R' -- Has been marked as containing the root (/) filesystem + 'B' -- Partition employs BAD144 bad-spot handling + 'C' -- This is the FreeBSD 2.0-compatibility partition (default) + 'A' -- This partition is marked active. + +If you select a partition for Bad144 handling, it will be scanned +for bad blocks before any new filesystems are made on it. + +If no partition is marked Active, you will need to either install +a Boot Manager (the option for which will be presented later in the +installation) or set one Active before leaving this screen. + +To leave this screen, type `Q'. + +No actual changes will be made to the disk until you (C)ommit from the +Install menu! You're working with what is essentially a copy of +the disk label(s), both here and in the Label Editor. diff --git a/usr.sbin/sysinstall/help/tcp.hlp b/usr.sbin/sysinstall/help/tcp.hlp new file mode 100644 index 0000000..3ab5d7c --- /dev/null +++ b/usr.sbin/sysinstall/help/tcp.hlp @@ -0,0 +1,27 @@ +This screen allows you to set up your general network parameters +(hostname, domain name, DNS server, etc) as well as the settings for a +given interface (which was selected from the menu before this screen). + +You can move through the fields with the TAB, BACK-TAB and RETURN +keys. To edit a field, use DELETE or BACKSPACE. You may also use ^A +(control-A) to go to the beginning of the line, ^E (control-E) to go +to the end, ^F (control-F) to go forward a character, ^B (control-B) +to go backward one character, ^D (control-D) to delete the character +under the cursor and ^K (control-K) to delete to the end of the line. +Basically, the standard EMACS motion sequences. + +The ``Extra options to ifconfig'' is kind of special (read: a hack :-). + +You can use it for specifying the foreign side of a PLIP or SLIP line +(simply type the foreign address in) as well as selecting a given +"link" on an ethernet card that has more than one (e.g. AUI, 10BT, +10B2, etc). The following links are recognised: + + link0 - AUI * highest precedence + link1 - BNC + link2 - UTP * lowest precedence + +That is to say that you can enter one of "link0", "link1" or "link2" +into the `Extra options' field to select a different link. + +When you're done with this form, select OK. diff --git a/usr.sbin/sysinstall/help/usage.hlp b/usr.sbin/sysinstall/help/usage.hlp new file mode 100644 index 0000000..b01a94b --- /dev/null +++ b/usr.sbin/sysinstall/help/usage.hlp @@ -0,0 +1,54 @@ +HOW TO USE THIS SYSTEM +====================== + +KEY ACTION +--- ------ +UP ARROW Move to previous item (or up, in a text field). +DOWN ARROW Move to next item (or down, in a text field). +TAB Move to next item or group. +RIGHT ARROW Move to next item or group (same as TAB). +SHIFT-TAB Move to previous item or group. +LEFT ARROW Move to previous item or group (same as SHIFT-TAB). +RETURN Select item. +PAGE UP In text boxes, scrolls up one page. +PAGE DOWN In text boxes, scrolls down one page. +SPACE In "radio" or multiple choice menus, toggle the current item. +F1 Help (in screens that provide it). + +If you also see small "^(-)" or "v(+)" symbols at the edges of a menu, +it means that there are more items above or below the current one that +aren't being shown (due to insufficient screen space). Using the +up/down arrow keys will cause the menu to scroll. When a symbol +disappears, it means you are at the top (or bottom) of the menu. + +In text fields, the amount of text above the current point will be +displayed as a percentage in the lower right corner. 100% means +you're at the bottom of the field. + +Selecting OK in a menu will confirm whatever action it's controlling. +Selecting Cancel will cancel the operation and generally return you to +the previous menu. + + +SPECIAL FEATURES: +================= + +It is also possible to select a menu item by typing the first +character of its name, if unique. Such "accelerator" characters will +be specially highlighted in the item name. + +The console driver also contains a scroll-back buffer for reviewing +things that may have scrolled off the screen. To use scroll-back, +press the "Scroll Lock" key on your keyboard and use the arrow or +Page Up/Page Down keys to move through the saved text. To leave +scroll-back mode, press the Scroll Lock key again. This feature +is most useful for dealing with sub-shells or other "wizard modes" +that don't use menus. + +Once the system is fully installed and running "multi-user", you will +also find that you have multiple "virtual consoles" and can use them to +have several active sessions at once. Use ALT-F<n> to switch between +them, where `F<n>' is the function key corresponding to the screen you +wish to see. By default, the system comes with 3 virtual consoles enabled. +You can create more by editing the /etc/ttys file, once the system is up, +for a maximum of 12. diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c index d69984d..5530e9c 100644 --- a/usr.sbin/sysinstall/install.c +++ b/usr.sbin/sysinstall/install.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: install.c,v 1.70.2.41 1995/06/10 07:58:37 jkh Exp $ + * $Id: install.c,v 1.71.2.1 1995/07/21 10:53:54 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -47,11 +47,11 @@ #include <sys/ioctl.h> #include <sys/fcntl.h> #include <sys/wait.h> +#include <sys/stat.h> #include <unistd.h> Boolean SystemWasInstalled = FALSE; -static Boolean make_filesystems(void); static Boolean copy_self(void); static Boolean root_extract(void); @@ -122,7 +122,7 @@ checkLabels(void) return FALSE; } else if (rootdev->name[strlen(rootdev->name) - 1] != 'a') { - msgConfirm("Invalid placement of root partition. For now, we only support\nmounting root partitions on \"a\" partitions due to limitations\nin the FreeBSD boot block code. Please correct this and\ntry again."); + msgConfirm("Invalid placement of root partition. For now, we only support\nmounting root partitions on \"a\" partitions due to limitations\nin the FreeBSD boot code. Please correct this and\ntry again."); return FALSE; } if (!swapdev) { @@ -137,11 +137,6 @@ checkLabels(void) static Boolean installInitial(void) { - extern u_char boot1[], boot2[]; - extern u_char mbr[], bteasy17[]; - u_char *mbrContents; - Device **devs; - int i; static Boolean alreadyDone = FALSE; if (alreadyDone) @@ -158,67 +153,22 @@ installInitial(void) if (!checkLabels()) return FALSE; - /* Figure out what kind of MBR the user wants */ - if (!dmenuOpenSimple(&MenuMBRType)) - return FALSE; - - switch (BootMgr) { - case 0: - mbrContents = bteasy17; - break; - - case 1: - mbrContents = mbr; - break; - - case 2: - default: - mbrContents = NULL; - } - /* If we refuse to proceed, bail. */ if (msgYesNo("Last Chance! Are you SURE you want continue the installation?\n\nIf you're running this on an existing system, we STRONGLY\nencourage you to make proper backups before proceeding.\nWe take no responsibility for lost disk contents!")) return FALSE; - devs = deviceFind(NULL, DEVICE_TYPE_DISK); - for (i = 0; devs[i]; i++) { - Chunk *c1; - Disk *d = (Disk *)devs[i]->private; + (void)diskPartitionWrite(NULL); - if (!devs[i]->enabled) - continue; - - if (mbrContents) { - Set_Boot_Mgr(d, mbrContents); - mbrContents = NULL; - } - Set_Boot_Blocks(d, boot1, boot2); - msgNotify("Writing partition information to drive %s", d->name); - Write_Disk(d); - - /* Now scan for bad blocks, if necessary */ - for (c1 = d->chunks->part; c1; c1 = c1->next) { - if (c1->flags & CHUNK_BAD144) { - int ret; - - msgNotify("Running bad block scan on partition %s", c1->name); - ret = vsystem("bad144 -v /dev/r%s 1234", c1->name); - if (ret) - msgConfirm("Bad144 init on %s returned status of %d!", c1->name, ret); - ret = vsystem("bad144 -v -s /dev/r%s", c1->name); - if (ret) - msgConfirm("Bad144 scan on %s returned status of %d!", c1->name, ret); - } - } - } - if (!make_filesystems()) { + if (!installFilesystems()) { msgConfirm("Couldn't make filesystems properly. Aborting."); - return 0; + return FALSE; } + if (!copy_self()) { msgConfirm("Couldn't clone the boot floppy onto the root file system.\nAborting."); - return 0; + return FALSE; } + dialog_clear(); chroot("/mnt"); chdir("/"); @@ -247,11 +197,50 @@ installInitial(void) return TRUE; } +int +installExpress(char *str) +{ + msgConfirm("In the next menu, you will need to set up a DOS-style\n" + "partitioning scheme for your hard disk. If you don't\n" + "want to do anything special, just type `A' to use the\n" + "whole disk and then `Q' to quit."); + diskPartitionEditor("express"); + + msgConfirm("Next, you need to lay out BSD partitions inside of the\n" + "DOS-style partition just created. If you don't want to\n" + "do anything special, just type `A' to use the default\n" + "partitioning scheme and then `Q' to quit."); + diskLabelEditor("express"); + + msgConfirm("Now it is time to select an installation subset. There\n" + "are two basic configurations: Developer and Router. The\n" + "Developer subset includes sources, documentation, and\n" + "binaries for almost everything. The Router subset\n" + "includes the same binaries and documentation, but no\n" + "sources. You can also install absolutely everything,\n" + "or select a custom software set."); + + while(!Dists) { + dmenuOpenSimple(&MenuInstallType); + } + + msgConfirm("Finally, you must specify an installation medium."); + + dmenuOpenSimple(&MenuMedia); + + installCommit("express"); + + dmenuOpenSimple(&MenuConfigure); + return 0; +} + /* - * What happens when we select "Install". This is broken into a 3 stage installation so that - * the user can do a full installation but come back here again to load more distributions, - * perhaps from a different media type. This would allow, for example, the user to load the - * majority of the system from CDROM and then use ftp to load just the DES dist. + * What happens when we select "Commit" in the custom installation menu. + * + * This is broken into multiple stages so that the user can do a full installation but come + * back here again to load more distributions, perhaps from a different media type. + * This would allow, for example, the user to load the majority of the system from CDROM + * and then use ftp to load just the DES dist. */ int installCommit(char *str) @@ -263,6 +252,7 @@ installCommit(char *str) msgConfirm("You haven't told me what distributions to load yet!\nPlease select a distribution from the Distributions menu."); return 0; } + if (!mediaVerify()) return 0; @@ -271,7 +261,7 @@ installCommit(char *str) return 0; configFstab(); } - if (!SystemWasInstalled && !root_extract()) { + if (RunningAsInit && !SystemWasInstalled && !root_extract()) { msgConfirm("Failed to load the ROOT distribution. Please correct\nthis problem and try again."); return 0; } @@ -280,7 +270,7 @@ installCommit(char *str) if (Dists & DIST_BIN) SystemWasInstalled = FALSE; - distExtractAll(); + (void)distExtractAll(NULL); if (!SystemWasInstalled && access("/kernel", R_OK)) { if (vsystem("ln -f /kernel.GENERIC /kernel")) { @@ -290,7 +280,7 @@ installCommit(char *str) } /* Resurrect /dev after bin distribution screws it up */ - if (!SystemWasInstalled) { + if (RunningAsInit && !SystemWasInstalled) { msgNotify("Remaking all devices.. Please wait!"); if (vsystem("cd /dev; sh MAKEDEV all")) msgConfirm("MAKEDEV returned non-zero status"); @@ -319,23 +309,26 @@ installCommit(char *str) /* XXX Do all the last ugly work-arounds here which we'll try and excise someday right?? XXX */ /* BOGON #1: XFree86 extracting /usr/X11R6 with root-only perms */ if (file_readable("/usr/X11R6")) - (void)system("chmod 755 /usr/X11R6"); + chmod("/usr/X11R6", 0755); /* BOGON #2: We leave /etc in a bad state */ - (void)system("chmod 755 /etc"); + chmod("/etc", 0755); dialog_clear(); - if (Dists) - msgConfirm("Installation completed with some errors. You may wish\nto scroll through the debugging messages on ALT-F2 with the scroll-lock\nfeature. Press [ENTER] to return to the installation menu."); - else - msgConfirm("Installation completed successfully, now press [ENTER] to return\nto the main menu. If you have any network devices you have not yet\nconfigured, see the Interface configuration item on the\nConfiguration menu."); + /* We get a NULL value for str if run from installExpress(), in which case we don't want to print the following */ + if (str) { + if (Dists) + msgConfirm("Installation completed with some errors. You may wish\nto scroll through the debugging messages on ALT-F2 with the scroll-lock\nfeature. Press [ENTER] to return to the installation menu."); + else + msgConfirm("Installation completed successfully, now press [ENTER] to return\nto the main menu. If you have any network devices you have not yet\nconfigured, see the Interface configuration item on the\nConfiguration menu."); + } SystemWasInstalled = TRUE; return 0; } /* Go newfs and/or mount all the filesystems we've been asked to */ -static Boolean -make_filesystems(void) +Boolean +installFilesystems(void) { int i; Disk *disk; diff --git a/usr.sbin/sysinstall/label.c b/usr.sbin/sysinstall/label.c index 20d7a3a..ccfb63b 100644 --- a/usr.sbin/sysinstall/label.c +++ b/usr.sbin/sysinstall/label.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: label.c,v 1.31.2.4 1995/06/07 06:38:11 jkh Exp $ + * $Id: label.c,v 1.32.2.2 1995/07/21 11:45:39 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -44,6 +44,10 @@ #include "sysinstall.h" #include <ctype.h> #include <sys/disklabel.h> +#include <sys/param.h> +#undef TRUE +#undef FALSE +#include <sys/sysctl.h> /* * Everything to do with editing the contents of disk labels. @@ -178,7 +182,7 @@ new_part(char *mpoint, Boolean newfs, u_long size) ret = (PartInfo *)safe_malloc(sizeof(PartInfo)); strncpy(ret->mountpoint, mpoint, FILENAME_MAX); - strcpy(ret->newfs_cmd, "newfs"); + strcpy(ret->newfs_cmd, "newfs -b 8192 -f 2048"); ret->newfs = newfs; if (!size) return ret; @@ -352,21 +356,20 @@ print_label_chunks(void) memcpy(onestr + PART_PART_COL, label_chunk_info[i].c->name, strlen(label_chunk_info[i].c->name)); /* If it's a filesystem, display the mountpoint */ if (label_chunk_info[i].c->private - && (label_chunk_info[i].type == PART_FILESYSTEM || label_chunk_info[i].type == PART_FAT)) { - mountpoint = ((PartInfo *)label_chunk_info[i].c->private)->mountpoint; - if (label_chunk_info[i].type == PART_FAT) - newfs = "DOS"; - else - newfs = ((PartInfo *)label_chunk_info[i].c->private)->newfs ? "Y" : "N"; - } - else if (label_chunk_info[i].type == PART_SWAP) { - mountpoint = "swap"; - newfs = " "; - } - else { - mountpoint = "<NONE>"; + && (label_chunk_info[i].type == PART_FILESYSTEM || label_chunk_info[i].type == PART_FAT)) + mountpoint = ((PartInfo *)label_chunk_info[i].c->private)->mountpoint; + else + mountpoint = "<none>"; + + /* Now display the newfs field */ + if (label_chunk_info[i].type == PART_FAT) + newfs = "DOS"; + else if (label_chunk_info[i].c->private && label_chunk_info[i].type == PART_FILESYSTEM) + newfs = ((PartInfo *)label_chunk_info[i].c->private)->newfs ? "UFS Y" : "UFS N"; + else if (label_chunk_info[i].type == PART_SWAP) + newfs = "SWAP"; + else newfs = "*"; - } for (j = 0; j < MAX_MOUNT_NAME && mountpoint[j]; j++) onestr[PART_MOUNT_COL + j] = mountpoint[j]; snprintf(num, 10, "%4ldMB", label_chunk_info[i].c->size ? label_chunk_info[i].c->size / ONE_MEG : 0); @@ -385,22 +388,23 @@ static void print_command_summary() { mvprintw(17, 0, "The following commands are valid here (upper or lower case):"); - mvprintw(19, 0, "C = Create New D = Delete M = Set Mountpoint"); - mvprintw(20, 0, "N = Newfs Options T = Toggle Newfs U = Undo Q = Finish"); - mvprintw(21, 0, "The default target will be displayed in "); + mvprintw(18, 0, "C = Create D = Delete M = Mount W = Write"); + mvprintw(19, 0, "N = Newfs Opts T = Newfs Toggle U = Undo Q = Finish"); + mvprintw(20, 0, "A = Auto Defaults for all!"); + mvprintw(22, 0, "The default target will be displayed in "); attrset(A_REVERSE); addstr("reverse"); attrset(A_NORMAL); addstr(" video."); - mvprintw(22, 0, "Use F1 or ? to get more help, arrow keys to move."); + mvprintw(23, 0, "Use F1 or ? to get more help, arrow keys to move."); move(0, 0); } int diskLabelEditor(char *str) { - int sz, i, key = 0; + int sz, key = 0; Boolean labeling; char *msg = NULL; PartInfo *p, *oldp; @@ -428,6 +432,7 @@ diskLabelEditor(char *str) refresh(); key = toupper(getch()); switch (key) { + int i, cnt; case '\014': /* ^L */ continue; @@ -465,6 +470,87 @@ diskLabelEditor(char *str) systemDisplayFile("partition.hlp"); break; + case 'A': + if (label_chunk_info[here].type != PART_SLICE) { + msg = "You can only do this in a master partition (see top of screen)"; + break; + } + + cnt = i = 0; + while (label_chunk_info[i].c) + if (label_chunk_info[i++].type != PART_SLICE) + cnt++; + if (cnt == (CHUNK_COLUMN_MAX * 2) + 4) { + msgConfirm("Sorry, I can't fit any more partitions on the screen! You can get around\nthis limitation by partitioning your disks individually rather than all\nat once. This will be fixed just as soon as we get a scrolling partition\nbox written. Sorry for the inconvenience!"); + break; + } + + sz = space_free(label_chunk_info[here].c); + if (sz <= FS_MIN_SIZE) { + msg = "Not enough space to create additional FreeBSD partition"; + break; + } + { + struct chunk *tmp; + int mib[2]; + int physmem; + size_t size; + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + 32 * ONE_MEG, part, FS_BSDFFS, + CHUNK_IS_ROOT); + + if (!tmp) { + msgConfirm("Unable to create the root partition. Too big?"); + break; + } + tmp->private = new_part("/", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + + mib[0] = CTL_HW; + mib[1] = HW_PHYSMEM; + size = sizeof physmem; + sysctl(mib, 2, &physmem, &size, (void *)0, (size_t)0); + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + physmem * 2 / 512, part, FS_SWAP, 0); + if (!tmp) { + msgConfirm("Unable to create the swap partition. Too big?"); + break; + } + + tmp->private = 0; + tmp->private_free = safe_free; + record_label_chunks(); + + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + 16 * ONE_MEG, part, FS_BSDFFS, 0); + if (!tmp) { + msgConfirm("Unable to create the /var partition. Too big?"); + break; + } + tmp->private = new_part("/var", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + + sz = space_free(label_chunk_info[here].c); + tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk, + label_chunk_info[here].c, + sz, part, FS_BSDFFS, 0); + if (!tmp) { + msgConfirm("Unable to create the /usr partition. Too big?"); + break; + } + tmp->private = new_part("/usr", TRUE, tmp->size); + tmp->private_free = safe_free; + record_label_chunks(); + } + break; + case 'C': if (label_chunk_info[here].type != PART_SLICE) { msg = "You can only do this in a master partition (see top of screen)"; @@ -639,6 +725,11 @@ diskLabelEditor(char *str) break; case 'W': + if (!msgYesNo("Are you sure that you wish to make and mount all filesystems\nat this time? You also have the option of doing it later in\none final 'commit' operation, and if you're at all unsure as\nto which option to chose, then chose No.")) + diskLabelCommit(NULL); + break; + + case '|': if (!msgYesNo("Are you sure you want to go into Wizard mode?\n\nThis is an entirely undocumented feature which you are not\nexpected to understand!")) { int i; Device **devs; @@ -678,5 +769,12 @@ diskLabelEditor(char *str) return 0; } - - +int +diskLabelCommit(char *str) +{ + if (!getenv(DISK_LABELLED)) + msgConfirm("You must assign disk labels before this option can be used."); + else if (!installFilesystems()) + msgConfirm("Failed to make/mount all filesystems. Please correct\nwhatever went wrong and try again."); + return 0; +} diff --git a/usr.sbin/sysinstall/main.c b/usr.sbin/sysinstall/main.c index 9b648fc..7d22216 100644 --- a/usr.sbin/sysinstall/main.c +++ b/usr.sbin/sysinstall/main.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated for what's essentially a complete rewrite. * - * $Id: main.c,v 1.12.2.4 1995/06/05 15:17:12 jkh Exp $ + * $Id: main.c,v 1.13 1995/06/11 19:30:02 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -64,9 +64,6 @@ main(int argc, char **argv) /* Probe for all relevant devices on the system */ deviceGetAll(); - /* Default to English */ - lang_set_English(NULL); - /* Default to passive mode ftp since it's the only thing we currently support :-( */ OptFlags |= OPT_FTP_PASSIVE; diff --git a/usr.sbin/sysinstall/media.c b/usr.sbin/sysinstall/media.c index a701fcd..8f77630 100644 --- a/usr.sbin/sysinstall/media.c +++ b/usr.sbin/sysinstall/media.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: media.c,v 1.24.2.11 1995/06/10 01:42:19 jkh Exp $ + * $Id: media.c,v 1.25.2.1 1995/07/21 10:53:58 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -270,6 +270,20 @@ mediaSetFTP(char *str) } int +mediaSetFTPActive(char *str) +{ + OptFlags &= OPT_FTP_ACTIVE; + return mediaSetFTP(str); +} + +int +mediaSetFTPPassive(char *str) +{ + OptFlags &= OPT_FTP_PASSIVE; + return mediaSetFTP(str); +} + +int mediaSetUFS(char *str) { static Device ufsDevice; diff --git a/usr.sbin/sysinstall/menus.c b/usr.sbin/sysinstall/menus.c index 3cbafe0..87213fd 100644 --- a/usr.sbin/sysinstall/menus.c +++ b/usr.sbin/sysinstall/menus.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: menus.c,v 1.41.2.39 1995/06/10 19:38:27 jkh Exp $ + * $Id: menus.c,v 1.42.2.3 1995/07/27 01:37:18 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -53,91 +53,53 @@ /* The initial installation menu */ DMenu MenuInitial = { DMENU_NORMAL_TYPE, - "Welcome to FreeBSD 2.0.5!", /* title */ + "Welcome to FreeBSD RELEASE_NAME!", /* title */ "This is the main menu of the FreeBSD installation system. Please\n\ select one of the options below by using the arrow keys or typing the\n\ first character of the option name you're interested in. Invoke an\n\ option by pressing [ENTER].", /* prompt */ "Press F1 for usage instructions", /* help line */ "usage.hlp", /* help file */ - { { "Usage", "Quick start - How to use this menu system.", /* U */ - DMENU_DISPLAY_FILE, "usage.hlp", 0, 0 }, - { "Doc", "More detailed documentation on FreeBSD.", /* D */ - DMENU_SUBMENU, &MenuDocumentation, 0, 0 }, - { "Language", "Set your preferred language.", /* L */ - DMENU_SUBMENU, &MenuOptionsLanguage, 0, 0 }, - { "Options", "Select various options for this utility.", /* O */ - DMENU_SUBMENU, &MenuOptions, 0, 0 }, - { "Proceed", "Go to the installation menu", /* P */ - DMENU_SUBMENU, &MenuInstall, 0, 0 }, - { "Quit", "Exit this menu (and the installation)", /* Q */ - DMENU_CANCEL, NULL, 0, 0 }, + { { "Usage", "Quick start - How to use this menu system.", /* U */ + DMENU_DISPLAY_FILE, "usage.hlp", 0, 0 }, + { "Doc", "More detailed documentation on FreeBSD.", /* D */ + DMENU_SUBMENU, &MenuDocumentation, 0, 0 }, + { "Options", "Select various options for this utility.", /* O */ + DMENU_SUBMENU, &MenuOptions, 0, 0 }, + { "Custom", "Begin a custom installation", /* C */ + DMENU_SUBMENU, &MenuInstallCustom, 0, 0 }, + { "Express", "Begin a quick installation", /* E */ + DMENU_CALL, &installExpress, 0, 0 }, + { "Shell", "Go to a shell for debugging or repair", + DMENU_SYSTEM_COMMAND, "sh", 0, 0 }, + { "Quit", "Exit this menu (and the installation)", /* Q */ + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; /* The main documentation menu */ DMenu MenuDocumentation = { DMENU_NORMAL_TYPE, - "Documentation for FreeBSD 2.0.5", /* Title */ + "Documentation for FreeBSD RELEASE_NAME", /* Title */ "If you are at all unsure about the configuration of your hardware\n\ or are looking to build a system specifically for FreeBSD, read the\n\ Hardware guide! New users should also read the Install document for\n\ a step-by-step tutorial on installing FreeBSD. For general information,\n\ consult the README file.", "Confused? Press F1 for help.", - "usage.hlp", /* help file */ - { { "README", "Read this for a general description of FreeBSD", /* R */ + "usage.hlp", + { { "README", "Read this for a general description of FreeBSD", DMENU_DISPLAY_FILE, "README", 0, 0 }, - { "Hardware", "The FreeBSD survival guide for PC hardware.", /* H */ + { "Hardware", "The FreeBSD survival guide for PC hardware.", DMENU_DISPLAY_FILE, "hardware.hlp", 0, 0 }, - { "Install", "A step-by-step guide to installing FreeBSD.", /* I */ + { "Install", "A step-by-step guide to installing FreeBSD.", DMENU_DISPLAY_FILE, "install.hlp", 0, 0 }, - { "Copyright", "The FreeBSD Copyright notices.", /* C */ + { "Copyright", "The FreeBSD Copyright notices.", DMENU_DISPLAY_FILE, "COPYRIGHT", 0, 0 }, - { "Release", "The release notes for this version of FreeBSD.", /* R */ + { "Release", "The release notes for this version of FreeBSD.", DMENU_DISPLAY_FILE, "RELNOTES", 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", /* E */ - DMENU_CANCEL, NULL, 0, 0 }, - { NULL } }, -}; - -/* - * The language selection menu. - */ -DMenu MenuOptionsLanguage = { - DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, - "Natural language selection", /* title */ - "Please specify the language you would like to use by default.\n\n\ -While almost all of the system's documentation is still written\n\ -in english (and may never be translated), there are a few guides\n\ -and types of system documentation that may be written in your\n\ -preferred language. When such are found, they will be used instead\n\ -of the english versions. This feature is nonetheless considered\n\ -to be in experimental status at this time.", /* prompt */ - "Press F1 for more information", /* help line */ - "language.hlp", /* help file */ - { { "Danish", "Danish language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, lang_set_Danish, 0, 0 }, - { "Dutch", "Dutch language and character set (ISO-8859-1)", /* D */ - DMENU_CALL, lang_set_Dutch, 0, 0 }, - { "English", "English language (system default)", /* E */ - DMENU_CALL, lang_set_English, 0, 0 }, - { "French", "French language and character set (ISO-8859-1)", /* F */ - DMENU_CALL, lang_set_French, 0, 0 }, - { "German", "German language and character set (ISO-8859-1)", /* G */ - DMENU_CALL, lang_set_German, 0, 0 }, - { "Italian", "Italian language and character set (ISO-8859-1)", /* I */ - DMENU_CALL, lang_set_Italian, 0, 0 }, - { "Japanese", "Japanese language and default character set (romaji)", /* J */ - DMENU_CALL, lang_set_Japanese, 0, 0 }, - { "Norwegian", "Norwegian language and character set (ISO-8859-1)", /* N */ - DMENU_CALL, lang_set_Norwegian, 0, 0}, - { "Russian", "Russian language and character set (KOI8-R)", /* R */ - DMENU_CALL, lang_set_Russian, 0, 0 }, - { "Spanish", "Spanish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, lang_set_Spanish, 0, 0 }, - { "Swedish", "Swedish language and character set (ISO-8859-1)", /* S */ - DMENU_CALL, lang_set_Swedish, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -145,7 +107,7 @@ DMenu MenuMediaCDROM = { DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS, "Choose a CDROM type", "FreeBSD can be installed directly from a CDROM containing a valid\n\ -FreeBSD 2.0.5 distribution. If you are seeing this menu it is because\n\ +FreeBSD RELEASE_NAME distribution. If you are seeing this menu it is because\n\ more than one CDROM drive was found on your system. Please select one\n\ of the following CDROM drives as your installation drive.", "Press F1 to read the installation guide", @@ -192,70 +154,70 @@ You may also wish to investigate the options menu in case of trouble.\n\ To specify a URL not in this list, chose \"other\".", "Select a site that's close!", "install.hlp", - { { "Primary Site", "ftp.freebsd.org", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.freebsd.org/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Secondary Site", "freefall.cdrom.com", - DMENU_SET_VARIABLE, "ftp=ftp://freefall.cdrom.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Other", "Specify some other ftp site by URL", + { { "Primary Site", "ftp.freebsd.org", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.freebsd.org/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Secondary Site", "freefall.cdrom.com", + DMENU_SET_VARIABLE, "ftp=ftp://freefall.cdrom.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Other", "Specify some other ftp site by URL", DMENU_SET_VARIABLE, "ftp=other", 0, 0 }, - { "Australia", "ftp.physics.usyd.edu.au", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.physics.usyd.edu.au/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Finland", "nic.funet.fi", - DMENU_SET_VARIABLE, "ftp=ftp://nic.funet.fi/pub/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "France", "ftp.ibp.fr", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.ibp.fr/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany", "ftp.fb9dv.uni-duisburg.de", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany #2", "gil.physik.rwth-aachen.de", - DMENU_SET_VARIABLE, "ftp=ftp://gil.physik.rwth-aachen.de/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Germany #3", "ftp.uni-paderborn.de", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.uni-paderborn.de/freebsd/2.0.5-RELEASE", 0, 0 }, - { "Hong Kong", "ftp.hk.super.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.hk.super.net/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Israel", "orgchem.weizmann.ac.il", - DMENU_SET_VARIABLE, "ftp=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-2.0.5-RELEASE", 0, 0 }, - { "Japan", "ftp.sra.co.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.sra.co.jp/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #2", "ftp.mei.co.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #3", "ftp.waseda.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.waseda.ac.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #4", "ftp.pu-toyama.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #5", "ftpsv1.u-aizu.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #6", "ftp.tut.ac.jp", - DMENU_SET_VARIABLE, "ftp://ftp.tut.ac.jp/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Japan #7", "ftp.ee.uec.ac.jp", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org/2.0.5-RELEASE", 0, 0 }, - { "Japan #8", "ftp.tokyonet.ad.jp", - DMENU_SET_VARIABLE, "ftp://ftp.tokyonet.ad.jp/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Korea", "ftp.cau.ac.kr", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.cau.ac.kr/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Netherlands", "ftp.nl.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.nl.net/pub/os/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Russia", "ftp.kiae.su", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.kiae.su/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Sweden", "ftp.luth.se", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.luth.se/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Taiwan", "netbsd.csie.nctu.edu.tw", - DMENU_SET_VARIABLE, "ftp=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "Thailand", "ftp.nectec.or.th", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.nectec.or.th/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK", "ftp.demon.co.uk", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK #2", "src.doc.ic.ac.uk", - DMENU_SET_VARIABLE, "ftp=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "UK #3", "unix.hensa.ac.uk", - DMENU_SET_VARIABLE, "ftp=ftp://unix.hensa.ac.uk/mirrors/walnut.creek/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA", "ref.tfs.com", - DMENU_SET_VARIABLE, "ftp=ftp://ref.tfs.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #2", "ftp.dataplex.net", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.dataplex.net/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #3", "kryten.atinc.com", - DMENU_SET_VARIABLE, "ftp=ftp://kryten.atinc.com/pub/FreeBSD/2.0.5-RELEASE", 0, 0 }, - { "USA #4", "ftp.neosoft.com", - DMENU_SET_VARIABLE, "ftp=ftp://ftp.neosoft.com/systems/FreeBSD/2.0.5-RELEASE", 0, 0 }, + { "Australia", "ftp.physics.usyd.edu.au", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.physics.usyd.edu.au/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Finland", "nic.funet.fi", + DMENU_SET_VARIABLE, "ftp=ftp://nic.funet.fi/pub/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "France", "ftp.ibp.fr", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.ibp.fr/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany", "ftp.fb9dv.uni-duisburg.de", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.fb9dv.uni-duisburg.de/pub/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany #2", "gil.physik.rwth-aachen.de", + DMENU_SET_VARIABLE, "ftp=ftp://gil.physik.rwth-aachen.de/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Germany #3", "ftp.uni-paderborn.de", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.uni-paderborn.de/freebsd/RELEASE_NAME", 0, 0 }, + { "Hong Kong", "ftp.hk.super.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.hk.super.net/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Israel", "orgchem.weizmann.ac.il", + DMENU_SET_VARIABLE, "ftp=ftp://orgchem.weizmann.ac.il/pub/FreeBSD-RELEASE_NAME", 0, 0 }, + { "Japan", "ftp.sra.co.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.sra.co.jp/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #2", "ftp.mei.co.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #3", "ftp.waseda.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.waseda.ac.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #4", "ftp.pu-toyama.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #5", "ftpsv1.u-aizu.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #6", "ftp.tut.ac.jp", + DMENU_SET_VARIABLE, "ftp://ftp.tut.ac.jp/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Japan #7", "ftp.ee.uec.ac.jp", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.ee.uec.ac.jp/pub/os/mirror/ftp.freebsd.org/RELEASE_NAME", 0, 0 }, + { "Japan #8", "ftp.tokyonet.ad.jp", + DMENU_SET_VARIABLE, "ftp://ftp.tokyonet.ad.jp/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Korea", "ftp.cau.ac.kr", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.cau.ac.kr/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Netherlands", "ftp.nl.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.nl.net/pub/os/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Russia", "ftp.kiae.su", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.kiae.su/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Sweden", "ftp.luth.se", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.luth.se/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Taiwan", "netbsd.csie.nctu.edu.tw", + DMENU_SET_VARIABLE, "ftp=ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "Thailand", "ftp.nectec.or.th", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.nectec.or.th/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK", "ftp.demon.co.uk", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK #2", "src.doc.ic.ac.uk", + DMENU_SET_VARIABLE, "ftp=ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/RELEASE_NAME", 0, 0 }, + { "UK #3", "unix.hensa.ac.uk", + DMENU_SET_VARIABLE, "ftp=ftp://unix.hensa.ac.uk/mirrors/walnut.creek/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA", "ref.tfs.com", + DMENU_SET_VARIABLE, "ftp=ftp://ref.tfs.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #2", "ftp.dataplex.net", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.dataplex.net/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #3", "kryten.atinc.com", + DMENU_SET_VARIABLE, "ftp=ftp://kryten.atinc.com/pub/FreeBSD/RELEASE_NAME", 0, 0 }, + { "USA #4", "ftp.neosoft.com", + DMENU_SET_VARIABLE, "ftp=ftp://ftp.neosoft.com/systems/FreeBSD/RELEASE_NAME", 0, 0 }, { NULL } } }; @@ -298,23 +260,25 @@ DMenu MenuMedia = { "FreeBSD can be installed from a variety of different installation\n\ media, ranging from floppies to the Internet. If you're installing\n\ FreeBSD from a supported CDROM drive then this is generally the best\n\ -method to use unless you have some overriding reason for using another\n\ -method.", +media to use, unless you have some overriding reason for using another\n\ +media.", "Press F1 for more information on the various media types", "media.hlp", - { { "CDROM", "Install from a FreeBSD CDROM", + { { "CDROM", "Install from a FreeBSD CDROM", DMENU_CALL, mediaSetCDROM, 0, 0 }, - { "DOS", "Install from a DOS partition", + { "DOS", "Install from a DOS partition", DMENU_CALL, mediaSetDOS, 0, 0 }, - { "File System", "Install from a mounted filesystem", + { "File System", "Install from a mounted filesystem", DMENU_CALL, mediaSetUFS, 0, 0 }, - { "Floppy", "Install from a floppy disk set", + { "Floppy", "Install from a floppy disk set", DMENU_CALL, mediaSetFloppy, 0, 0 }, - { "FTP", "Install from an Internet FTP server", - DMENU_CALL, mediaSetFTP, 0, 0 }, + { "FTP Active", "Install from an FTP server in active mode", + DMENU_CALL, mediaSetFTPActive, 0, 0 }, + { "FTP Passive", "Install from an FTP server in passive mode", + DMENU_CALL, mediaSetFTPPassive, 0, 0 }, { "NFS", "Install over NFS", DMENU_CALL, mediaSetNFS, 0, 0 }, - { "Tape", "Install from SCSI or QIC tape", + { "Tape", "Install from SCSI or QIC tape", DMENU_CALL, mediaSetTape, 0, 0 }, { NULL } }, }; @@ -353,24 +317,18 @@ the list of distributions yourself, simply select \"custom\".", static char * DESFlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_DES = %d\n", Dists & DIST_DES); return (Dists & DIST_DES) ? "ON" : "OFF"; } static char * srcFlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_SRC = %d\n", Dists & DIST_SRC); return (Dists & DIST_SRC) ? "ON" : "OFF"; } static char * x11FlagCheck(DMenuItem *item) { - if (isDebug()) - msgDebug("Dists & DIST_XF86 = %d\n", Dists & DIST_XF86); return (Dists & DIST_XF86) ? "ON" : "OFF"; } @@ -382,31 +340,31 @@ very minimum, this should be \"bin\". WARNING: Do not export the\n\ DES distribution out of the U.S.! It is for U.S. customers only.", NULL, NULL, - { { "bin", "Binary base distribution (required) [36MB]", - DMENU_SET_FLAG, &Dists, DIST_BIN, 0, dmenuFlagCheck }, - { "commercial", "Commercial demos and shareware [10MB]", + { { "bin", "Binary base distribution (required) [36MB]", + DMENU_SET_FLAG, &Dists, DIST_BIN, 0, dmenuFlagCheck }, + { "commercial", "Commercial demos and shareware [10MB]", DMENU_SET_FLAG, &Dists, DIST_COMMERCIAL, 0, dmenuFlagCheck }, - { "compat1x", "FreeBSD 1.x binary compatibility package [2MB]", + { "compat1x", "FreeBSD 1.x binary compatibility package [2MB]", DMENU_SET_FLAG, &Dists, DIST_COMPAT1X, 0, dmenuFlagCheck }, - { "compat20", "FreeBSD 2.0 binary compatibility package [2MB]", + { "compat20", "FreeBSD 2.0 binary compatibility package [2MB]", DMENU_SET_FLAG, &Dists, DIST_COMPAT20, 0, dmenuFlagCheck }, - { "DES", "NOT FOR EXPORT! DES encryption code [.3MB]", + { "DES", "DES encryption code - NOT FOR EXPORT! [.3MB]", DMENU_CALL, distSetDES, 0, 0, DESFlagCheck }, - { "dict", "Spelling checker dictionary files [4.2MB]", + { "dict", "Spelling checker dictionary files [4.2MB]", DMENU_SET_FLAG, &Dists, DIST_DICT, 0, dmenuFlagCheck }, - { "games", "Games and other amusements (non-commercial) [6.4MB]", + { "games", "Games (non-commercial) [6.4MB]", DMENU_SET_FLAG, &Dists, DIST_GAMES, 0, dmenuFlagCheck }, - { "info", "GNU info files [4.1MB]", + { "info", "GNU info files [4.1MB]", DMENU_SET_FLAG, &Dists, DIST_INFO, 0, dmenuFlagCheck }, - { "man", "System manual pages - strongly recommended [3.3MB]", + { "man", "System manual pages - recommended [3.3MB]", DMENU_SET_FLAG, &Dists, DIST_MANPAGES, 0, dmenuFlagCheck }, - { "proflibs", "Profiled versions of the libraries [3.3MB]", + { "proflibs", "Profiled versions of the libraries [3.3MB]", DMENU_SET_FLAG, &Dists, DIST_PROFLIBS, 0, dmenuFlagCheck }, - { "src", "Sources for everything but DES [120MB]", + { "src", "Sources for everything but DES [120MB]", DMENU_CALL, distSetSrc, 0, 0, srcFlagCheck }, - { "XFree86", "The XFree86 3.1.1u1 distribution [?]", + { "XFree86", "The XFree86 3.1.1u1 distribution [?]", DMENU_CALL, distSetXF86, 0, 0, x11FlagCheck }, - { "Experimental", "Work in progress!", + { "Experimental", "Work in progress!", DMENU_SET_FLAG, &Dists, DIST_EXPERIMENTAL, 0, dmenuFlagCheck }, { NULL } }, }; @@ -421,13 +379,13 @@ same reason). For information on non-U.S. FTP distributions of this\n\ software, please consult the release notes.", NULL, NULL, - { { "des", "Basic DES services (rlogin, init, etc) [1MB]", + { { "des", "Basic DES services (rlogin, init, etc) [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_DES, 0, dmenuFlagCheck }, - { "krb", "Kerberos encryption services [2MB]", + { "krb", "Kerberos encryption services [2MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_KERBEROS, 0, dmenuFlagCheck }, - { "sebones", "Sources for eBones (Kerberos) [1MB]", + { "sebones", "Sources for eBones (Kerberos) [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_SEBONES, 0, dmenuFlagCheck }, - { "ssecure", "Sources for DES libs and utilities [1MB]", + { "ssecure", "Sources for DES libs and utilities [1MB]", DMENU_SET_FLAG, &DESDists, DIST_DES_SSECURE, 0, dmenuFlagCheck }, { NULL } }, }; @@ -439,33 +397,35 @@ DMenu MenuSrcDistributions = { you wish to install.", NULL, NULL, - { { "base", "top-level files in /usr/src [300K]", + { { "base", "top-level files in /usr/src [300K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_BASE, 0, dmenuFlagCheck }, - { "gnu", "/usr/src/gnu (software from the GNU Project) [42MB]]", + { "gnu", "/usr/src/gnu (software from the GNU Project) [42MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_GNU, 0, dmenuFlagCheck }, - { "etc", "/usr/src/etc (miscellaneous system files) [460K]", + { "etc", "/usr/src/etc (miscellaneous system files) [460K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_ETC, 0, dmenuFlagCheck }, - { "games", "/usr/src/games (diversions) [7.8MB]", + { "games", "/usr/src/games (diversions) [7.8MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_GAMES, 0, dmenuFlagCheck }, - { "include", "/usr/src/include (header files) [467K]", + { "include", "/usr/src/include (header files) [467K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_INCLUDE, 0, dmenuFlagCheck }, - { "lib", "/usr/src/lib (system libraries) [9.2MB]", + { "lib", "/usr/src/lib (system libraries) [9.2MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LIB, 0, dmenuFlagCheck }, - { "libexec", "/usr/src/libexec (system programs) [1.2MB]", + { "libexec", "/usr/src/libexec (system programs) [1.2MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LIBEXEC, 0, dmenuFlagCheck }, - { "lkm", "/usr/src/lkm (Loadable Kernel Modules) [193K]", + { "lkm", "/usr/src/lkm (Loadable Kernel Modules) [193K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_LKM, 0, dmenuFlagCheck }, - { "release", "/usr/src/release (release-generation tools) [533K]", + { "release", "/usr/src/release (release-generation tools) [533K]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_RELEASE, 0, dmenuFlagCheck }, - { "sbin", "/usr/src/sbin (system binaries) [1.3MB]", + { "bin", "/usr/src/bin (system binaries) [2.5MB]", + DMENU_SET_FLAG, &SrcDists, DIST_SRC_BIN, 0, dmenuFlagCheck }, + { "sbin", "/usr/src/sbin (system binaries) [1.3MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SBIN, 0, dmenuFlagCheck }, - { "share", "/usr/src/share (documents and shared files) [10MB]", + { "share", "/usr/src/share (documents and shared files) [10MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SHARE, 0, dmenuFlagCheck }, - { "sys", "/usr/src/sys (FreeBSD kernel) [13MB]", + { "sys", "/usr/src/sys (FreeBSD kernel) [13MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_SYS, 0, dmenuFlagCheck }, - { "ubin", "/usr/src/usr.bin (user binaries) [13MB]", + { "ubin", "/usr/src/usr.bin (user binaries) [13MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_UBIN, 0, dmenuFlagCheck }, - { "usbin", "/usr/src/usr.sbin (aux system binaries) [14MB]", + { "usbin", "/usr/src/usr.sbin (aux system binaries) [14MB]", DMENU_SET_FLAG, &SrcDists, DIST_SRC_USBIN, 0, dmenuFlagCheck }, { NULL } }, }; @@ -488,16 +448,16 @@ distribution. We recommend that you select what you need from the basic\n\ components set and at least one entry from the Server and Font set menus.", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "Basic", "Basic component menu (required)", /* B */ - DMENU_SUBMENU, &MenuXF86SelectCore, 0, 0 }, - { "Server", "X server menu", /* S */ - DMENU_SUBMENU, &MenuXF86SelectServer, 0, 0 }, - { "Fonts", "Font set menu", /* F */ - DMENU_SUBMENU, &MenuXF86SelectFonts, 0, 0 }, - { "Clear", "Reset XFree86 distribution list", - DMENU_CALL, clearx11, 0, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", /* E */ - DMENU_CANCEL, NULL, 0, 0 }, + { { "Basic", "Basic component menu (required)", + DMENU_SUBMENU, &MenuXF86SelectCore, 0, 0 }, + { "Server", "X server menu", + DMENU_SUBMENU, &MenuXF86SelectServer, 0, 0 }, + { "Fonts", "Font set menu", + DMENU_SUBMENU, &MenuXF86SelectFonts, 0, 0 }, + { "Clear", "Reset XFree86 distribution list", + DMENU_CALL, clearx11, 0, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -507,26 +467,26 @@ DMenu MenuXF86SelectCore = { "Please check off the basic XFree86 components you wish to install.", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "bin", "X client applications and shared libs [4MB].", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_BIN, 0, dmenuFlagCheck }, - { "lib", "Data files needed at runtime [600K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LIB, 0, dmenuFlagCheck }, - { "xicf", "Customizable xinit runtime configuration file [100K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XINIT, 0, dmenuFlagCheck }, - { "xdcf", "Customizable xdm runtime configuration file [100K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XDMCF, 0, dmenuFlagCheck }, - { "doc", "READMEs and XFree86 specific man pages [500K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_DOC, 0, dmenuFlagCheck }, - { "man", "Man pages (except XFree86 specific ones) [1.2MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_MAN, 0, dmenuFlagCheck }, - { "prog", "Programmer's header and library files [4MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PROG, 0, dmenuFlagCheck }, - { "link", "X Server reconfiguration kit [7.8MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LINK, 0, dmenuFlagCheck }, - { "pex", "PEX fonts and libs needed by PEX apps [500K]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PEX, 0, dmenuFlagCheck }, - { "sources", "XFree86 3.1.1u1 source + contrib distribution [200MB]", - DMENU_SET_FLAG, &XF86Dists, DIST_XF86_SRC, 0, dmenuFlagCheck }, + { { "bin", "X client applications and shared libs [4MB].", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_BIN, 0, dmenuFlagCheck }, + { "lib", "Data files needed at runtime [600K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LIB, 0, dmenuFlagCheck }, + { "xicf", "Customizable xinit runtime configuration file [100K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XINIT, 0, dmenuFlagCheck }, + { "xdcf", "Customizable xdm runtime configuration file [100K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_XDMCF, 0, dmenuFlagCheck }, + { "doc", "READMEs and XFree86 specific man pages [500K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_DOC, 0, dmenuFlagCheck }, + { "man", "Man pages (except XFree86 specific ones) [1.2MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_MAN, 0, dmenuFlagCheck }, + { "prog", "Programmer's header and library files [4MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PROG, 0, dmenuFlagCheck }, + { "link", "X Server reconfiguration kit [7.8MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_LINK, 0, dmenuFlagCheck }, + { "pex", "PEX fonts and libs needed by PEX apps [500K]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_PEX, 0, dmenuFlagCheck }, + { "sources", "XFree86 3.1.1u1 standard + contrib sources [200MB]", + DMENU_SET_FLAG, &XF86Dists, DIST_XF86_SRC, 0, dmenuFlagCheck }, { NULL } }, }; @@ -539,15 +499,15 @@ install. At the minimum, you should install the standard\n\ (these are selected by default).", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", + { { "fnts", "Standard 75 DPI and miscellaneous fonts [3.6MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_MISC, 0, dmenuFlagCheck }, - { "f100", "100 DPI fonts [1.8MB]", + { "f100", "100 DPI fonts [1.8MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_100, 0, dmenuFlagCheck }, - { "fscl", "Speedo and Type scalable fonts [1.6MB]", + { "fscl", "Speedo and Type scalable fonts [1.6MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_SCALE, 0, dmenuFlagCheck }, - { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", + { "non", "Japanese, Chinese and other non-english fonts [3.3MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_NON, 0, dmenuFlagCheck }, - { "server", "Font server [0.3MB]", + { "server", "Font server [0.3MB]", DMENU_SET_FLAG, &XF86FontDists, DIST_XF86_FONTS_SERVER, 0, dmenuFlagCheck }, { NULL } }, }; @@ -561,29 +521,29 @@ it is recommended that try the SVGA or VGA16 servers (the VGA16 and\n\ Mono servers are particularly well-suited to most LCD displays).", "Press F1 to read the XFree86 release notes for FreeBSD", "XF86.hlp", - { { "SVGA", "Standard VGA or Super VGA display [1MB]", + { { "SVGA", "Standard VGA or Super VGA display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_SVGA, 0, dmenuFlagCheck }, - { "VGA16", "Standard 16 color VGA display [1MB]", + { "VGA16", "Standard 16 color VGA display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_VGA16, 0, dmenuFlagCheck }, - { "Mono", "Standard Monochrome display [1MB]", + { "Mono", "Standard Monochrome display [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MONO, 0, dmenuFlagCheck }, - { "8514", "8-bit (256 color) IBM 8514 or compatible card [1MB]", + { "8514", "8-bit (256 color) IBM 8514 or compatible card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_8514, 0, dmenuFlagCheck }, - { "AGX", "8-bit AGX card [1MB]", + { "AGX", "8-bit AGX card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_AGX, 0, dmenuFlagCheck }, - { "Ma8", "8-bit ATI Mach8 card [1MB]", + { "Ma8", "8-bit ATI Mach8 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH8, 0, dmenuFlagCheck }, - { "Ma32", "8 and 16-bit (65K color) for ATI Mach32 card [1MB]", + { "Ma32", "8 and 16-bit (65K color) for ATI Mach32 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH32, 0, dmenuFlagCheck }, - { "Ma64", "8 and 16-bit (65K color) for ATI Mach64 card [1MB]", + { "Ma64", "8 and 16-bit (65K color) for ATI Mach64 card [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_MACH64, 0, dmenuFlagCheck }, - { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards [1MB]", + { "P9K", "8, 16, and 24-bit color for Weitek P9000 based boards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_P9000, 0, dmenuFlagCheck }, - { "S3", "8, 16 and 24-bit color for S3 based boards [1MB]", + { "S3", "8, 16 and 24-bit color for S3 based boards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_S3, 0, dmenuFlagCheck }, - { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards [1MB]", + { "W32", "8-bit Color for ET4000/W32, /W32i and /W32p cards [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_W32, 0, dmenuFlagCheck }, - { "nest", "A nested server for testing purposes [1MB]", + { "nest", "A nested server for testing purposes [1MB]", DMENU_SET_FLAG, &XF86ServerDists, DIST_XF86_SERVER_NEST, 0, dmenuFlagCheck }, { NULL } }, }; @@ -628,10 +588,6 @@ ftpFlagCheck(DMenuItem *item) OptFlags &= ~OPT_FTP_RESELECT; if (!(OptFlags & (OPT_FTP_ABORT + OPT_FTP_RESELECT))) OptFlags |= OPT_FTP_ABORT; - if ((OptFlags & (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE)) == (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE)) - OptFlags &= ~OPT_FTP_ACTIVE; - if (!(OptFlags & (OPT_FTP_ACTIVE + OPT_FTP_PASSIVE))) - OptFlags |= OPT_FTP_PASSIVE; if (*((unsigned int *)item->ptr) & item->parm) return "ON"; return "OFF"; @@ -646,58 +602,66 @@ with various possible error conditions and how verbose it will\n\ be at various stages.", "Press F1 for more help on these options", "options.hlp", - { { "NFS Secure", "NFS server talks only on a secure port", - DMENU_SET_FLAG, &OptFlags, OPT_NFS_SECURE, 0, dmenuFlagCheck }, - { "NFS Slow", "User is using a slow PC or ethernet card", - DMENU_SET_FLAG, &OptFlags, OPT_SLOW_ETHER, 0, dmenuFlagCheck }, - { "FTP Abort", "On transfer failure, abort", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_ABORT, 0, ftpFlagCheck }, - { "FTP Reselect", "On transfer failure, ask for another host", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_RESELECT, 0, ftpFlagCheck }, - { "FTP active", "Use \"active mode\" for standard FTP", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_ACTIVE, 0, ftpFlagCheck }, - { "FTP passive", "Use \"passive mode\" for firewalled FTP", - DMENU_SET_FLAG, &OptFlags, OPT_FTP_PASSIVE, 0, ftpFlagCheck }, - { "Debugging", "Turn on the extra debugging flag", - DMENU_SET_FLAG, &OptFlags, OPT_DEBUG, 0, dmenuFlagCheck }, - { "Yes To All", "Assume \"Yes\" answers to all non-critical dialogs", + { { "FTP Options", "Set FTP specific options", + DMENU_SUBMENU, &MenuFTPOptions, 0, 0, 0 }, + { "NFS Secure", "NFS server talks only on a secure port", + DMENU_SET_FLAG, &OptFlags, OPT_NFS_SECURE, 0, dmenuFlagCheck }, + { "NFS Slow", "User is using a slow PC or ethernet card", + DMENU_SET_FLAG, &OptFlags, OPT_SLOW_ETHER, 0, dmenuFlagCheck }, + { "Debugging", "Turn on the extra debugging flag", + DMENU_SET_FLAG, &OptFlags, OPT_DEBUG, 0, dmenuFlagCheck }, + { "Yes To All", "Assume \"Yes\" answers to all non-critical dialogs", DMENU_SET_FLAG, &OptFlags, OPT_NO_CONFIRM, 0, dmenuFlagCheck }, + { "Clear", "Clear All Option Flags", + DMENU_CALL, clearFlags, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, + { NULL } }, +}; + +DMenu MenuFTPOptions = { + DMENU_MULTIPLE_TYPE | DMENU_SELECTION_RETURNS, + "Choose FTP Options", + "This menu allows you to customize the behavior of FTP transfers\n\ +for an FTP installation. To select \"Active\" or \"Passive\" mode\n\ +FTP, see the Media menu.", + NULL, + NULL, + { { "FTP Abort", "On transfer failure, abort", + DMENU_SET_FLAG, &OptFlags, OPT_FTP_ABORT, 0, ftpFlagCheck }, + { "FTP Reselect", "On transfer failure, ask for another host", + DMENU_SET_FLAG, &OptFlags, OPT_FTP_RESELECT, 0, ftpFlagCheck }, { "FTP userpass", "Specify username and password instead of anonymous", - DMENU_CALL, mediaSetFtpUserPass, 0, 0, userPassCheck }, - { "Clear", "Clear All Option Flags", - DMENU_CALL, clearFlags, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + DMENU_CALL, mediaSetFtpUserPass, 0, 0, userPassCheck }, { NULL } }, }; /* The main installation menu */ -DMenu MenuInstall = { +DMenu MenuInstallCustom = { DMENU_NORMAL_TYPE, - "Choose Installation Options", /* title */ - "Before installation can continue, you need to specify a few\n\ + "Choose Custom Installation Options", + "This is the custom installation menu. You may use this menu to specify\n\ details on the type of distribution you wish to have, where you wish\n\ -to install it from and how you wish to allocate disk storage to FreeBSD.\n\n\ -None of the items in this menu will actually modify the contents of\n\ -your disk until you select the \"Install\" menu item (and even then, only\n\ -after a final confirmation).", +to install it from and how you wish to allocate disk storage to FreeBSD.", "Press F1 to read the installation guide", "install.hlp", - { { "Partition", "Allocate disk space for FreeBSD", /* P */ - DMENU_CALL, diskPartitionEditor, 0, 0 }, - { "Label", "Label allocated disk partitions", /* L */ - DMENU_CALL, diskLabelEditor, 0, 0 }, - { "Distributions", "Choose the type of installation you want", /* T */ - DMENU_SUBMENU, &MenuInstallType, 0, 0 }, - { "Media", "Choose the installation media type", /* M */ - DMENU_SUBMENU, &MenuMedia, 0, 0 }, - { "Options", "Go to Options submenu", /* O */ - DMENU_SUBMENU, &MenuOptions, 0, 0 }, - { "Commit", "Install FreeBSD onto your hard disk(s)", /* C */ - DMENU_CALL, installCommit, 0, 0 }, - { "Configure", "Do post-install configuration of FreeBSD", /* C */ - DMENU_SUBMENU, &MenuConfigure, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", + { { "Partition", "Allocate disk space for FreeBSD", + DMENU_CALL, diskPartitionEditor, 0, 0 }, + { "Label", "Label allocated disk partitions", + DMENU_CALL, diskLabelEditor, 0, 0 }, + { "Distributions", "Choose the type of installation you want", + DMENU_SUBMENU, &MenuInstallType, 0, 0 }, + { "Media", "Choose the installation media type", + DMENU_SUBMENU, &MenuMedia, 0, 0 }, + { "Extract", "Extract distributions from selected media", + DMENU_CALL, distExtractAll, 0, 0 }, + { "Options", "Go to Options submenu", + DMENU_SUBMENU, &MenuOptions, 0, 0 }, + { "Commit", "Do Write/Make/Extract options in one step", + DMENU_CALL, installCommit, 0, 0 }, + { "Configure", "Do post-install configuration of FreeBSD", + DMENU_SUBMENU, &MenuConfigure, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -716,12 +680,12 @@ one, select \"standard\". If you would prefer your Master Boot\n\ Record to remain untouched, then select \"none\".", "Press F1 to read the installation guide", "install.hlp", - { { "BootMgr", "Install the FreeBSD Boot Manager (\"Booteasy\")", /* B */ - DMENU_SET_VALUE, &BootMgr, 0, 0, dmenuRadioCheck }, - { "Standard", "Use a standard MBR (no boot manager)", /* S */ + { { "BootMgr", "Install the FreeBSD Boot Manager (\"Booteasy\")", + DMENU_SET_VALUE, &BootMgr, 0, 0, dmenuRadioCheck }, + { "Standard", "Use a standard MBR (no boot manager)", DMENU_SET_VALUE, &BootMgr, 1, 0, dmenuRadioCheck }, - { "None", "Leave the Master Boot Record untouched", /* N */ - DMENU_SET_VALUE, &BootMgr, 2, 0, dmenuRadioCheck }, + { "None", "Leave the Master Boot Record untouched", + DMENU_SET_VALUE, &BootMgr, 2, 0, dmenuRadioCheck }, { NULL } }, }; @@ -735,24 +699,24 @@ importantly, you can use the Packages utility to load extra \"3rd party\"\n\ software not provided in the base distributions.", "Press F1 for more information on these options", "configure.hlp", - { { "Add User", "Add users to the system", - DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 }, - { "Console", "Customize system console behavior", - DMENU_SUBMENU, &MenuSyscons, 0, 0 }, - { "Networking", "Configure additional network services", - DMENU_SUBMENU, &MenuNetworking, 0, 0 }, - { "Time Zone", "Set which time zone you're in", - DMENU_SYSTEM_COMMAND, "rm -f /etc/wall_cmos_clock /etc/localtime; tzsetup", 0, 0 }, - { "Packages", "Install extra FreeBSD packaged software", - DMENU_CALL, configPackages, 0, 0 }, - { "Ports", "Enable the FreeBSD Ports Collection from CD", - DMENU_CALL, configPorts, 0, 1 }, - { "Root Password", "Set the system manager's password", - DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 }, - { "XFree86", "Configure XFree86 (if installed)", - DMENU_SYSTEM_COMMAND, "/usr/X11R6/bin/xf86config", 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "Add User", "Add users to the system", + DMENU_SYSTEM_COMMAND, "adduser -silent", 0, 0 }, + { "Console", "Customize system console behavior", + DMENU_SUBMENU, &MenuSyscons, 0, 0 }, + { "Networking", "Configure additional network services", + DMENU_SUBMENU, &MenuNetworking, 0, 0 }, + { "Time Zone", "Set which time zone you're in", + DMENU_SYSTEM_COMMAND, "rm -f /etc/wall_cmos_clock /etc/localtime; tzsetup", 0, 0 }, + { "Packages", "Install extra FreeBSD packaged software", + DMENU_CALL, configPackages, 0, 0 }, + { "Ports", "Enable the FreeBSD Ports Collection from CD", + DMENU_CALL, configPorts, 0, 1 }, + { "Root Password", "Set the system manager's password", + DMENU_SYSTEM_COMMAND, "passwd root", 0, 0 }, + { "XFree86", "Configure XFree86 (if installed)", + DMENU_SYSTEM_COMMAND, "/usr/X11R6/bin/xf86config", 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -777,20 +741,20 @@ of installing FreeBSD. This menu allows you to configure other\n\ aspects of your system's network configuration.", NULL, NULL, - { { "NFS client", "This machine will be an NFS client", - DMENU_SET_VARIABLE, "nfs_client=YES", 0, 0, dmenuVarCheck }, - { "NFS server", "This machine will be an NFS server", - DMENU_SET_VARIABLE, "nfs_server=YES", 0, 0, dmenuVarCheck }, - { "Interfaces", "Configure network interfaces", - DMENU_CALL, tcpMenuSelect, 0, 0 }, - { "ntpdate", "Select a clock-syncronization server", - DMENU_SUBMENU, &MenuNTP, 0, 0, menuCheckNTP }, - { "routed", "Set flags for routed (default: -q)", - DMENU_CALL, configRoutedFlags, 0, 0, menuCheckRouted }, - { "rwhod", "This machine wants to run the rwho daemon", - DMENU_SET_VARIABLE, "rwhod=YES", 0, 0, dmenuVarCheck }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "NFS client", "This machine will be an NFS client", + DMENU_SET_VARIABLE, "nfs_client=YES", 0, 0, dmenuVarCheck }, + { "NFS server", "This machine will be an NFS server", + DMENU_SET_VARIABLE, "nfs_server=YES", 0, 0, dmenuVarCheck }, + { "Interfaces", "Configure network interfaces", + DMENU_CALL, tcpMenuSelect, 0, 0 }, + { "ntpdate", "Select a clock-syncronization server", + DMENU_SUBMENU, &MenuNTP, 0, 0, menuCheckNTP }, + { "routed", "Set flags for routed (default: -q)", + DMENU_CALL, configRoutedFlags, 0, 0, menuCheckRouted }, + { "rwhod", "This machine wants to run the rwho daemon", + DMENU_SET_VARIABLE, "rwhod=YES", 0, 0, dmenuVarCheck }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -854,14 +818,14 @@ 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 }, - { "Repeat", "Set the rate at which keys repeat", - DMENU_SUBMENU, &MenuSysconsKeyrate, 0, 0 }, - { "Saver", "Configure the screen saver", - DMENU_SUBMENU, &MenuSysconsSaver, 0, 0 }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "Keymap", "Choose an alternate keyboard map", + DMENU_SUBMENU, &MenuSysconsKeymap, 0, 0 }, + { "Repeat", "Set the rate at which keys repeat", + DMENU_SUBMENU, &MenuSysconsKeyrate, 0, 0 }, + { "Saver", "Configure the screen saver", + DMENU_SUBMENU, &MenuSysconsSaver, 0, 0 }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; @@ -874,32 +838,32 @@ to a standard \"American\" keyboard map. Users in other countries\n\ the other keymaps below.", "Choose a keyboard map", NULL, - { { "Danish CP865", "Danish Code Page 865 keymap", - DMENU_SET_VARIABLE, "keymap=danish.cp865", 0, 0, dmenuVarCheck }, - { "Danish ISO", "Danish ISO keymap", - DMENU_SET_VARIABLE, "keymap=danish.iso", 0, 0, dmenuVarCheck }, - { "French ISO", "French ISO keymap", - DMENU_SET_VARIABLE, "keymap=fr.iso", 0, 0, dmenuVarCheck }, - { "German CP850", "German Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=german.cp850", 0, 0, dmenuVarCheck }, - { "German ISO", "German ISO keymap", - DMENU_SET_VARIABLE, "keymap=german.iso", 0, 0, dmenuVarCheck }, - { "Russian CP866", "Russian Code Page 866 keymap", - DMENU_SET_VARIABLE, "keymap=ru.cp866", 0, 0, dmenuVarCheck }, - { "Russian KOI8", "Russian koi8 keymap", - DMENU_SET_VARIABLE, "keymap=ru.koi8-r", 0, 0, dmenuVarCheck }, - { "Russian s-KOI8", "Russian shifted koi8 keymap", - DMENU_SET_VARIABLE, "keymap=ru.koi8-r.shift", 0, 0, dmenuVarCheck}, - { "Swedish CP850", "Swedish Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=swedish.cp850", 0, 0, dmenuVarCheck }, - { "Swedish ISO", "Swedish ISO keymap", - DMENU_SET_VARIABLE, "keymap=swedish.iso", 0, 0, dmenuVarCheck }, - { "U.K. CP850", "United Kingdom Code Page 850 keymap", - DMENU_SET_VARIABLE, "keymap=uk.cp850", 0, 0, dmenuVarCheck }, - { "U.K. ISO", "United Kingdom ISO keymap", - DMENU_SET_VARIABLE, "keymap=uk.iso", 0, 0, dmenuVarCheck }, - { "U.S. ISO", "United States ISO keymap", - DMENU_SET_VARIABLE, "keymap=us.iso", 0, 0, dmenuVarCheck }, + { { "Danish CP865", "Danish Code Page 865 keymap", + DMENU_SET_VARIABLE, "keymap=danish.cp865", 0, 0, dmenuVarCheck }, + { "Danish ISO", "Danish ISO keymap", + DMENU_SET_VARIABLE, "keymap=danish.iso", 0, 0, dmenuVarCheck }, + { "French ISO", "French ISO keymap", + DMENU_SET_VARIABLE, "keymap=fr.iso", 0, 0, dmenuVarCheck }, + { "German CP850", "German Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=german.cp850", 0, 0, dmenuVarCheck }, + { "German ISO", "German ISO keymap", + DMENU_SET_VARIABLE, "keymap=german.iso", 0, 0, dmenuVarCheck }, + { "Russian CP866", "Russian Code Page 866 keymap", + DMENU_SET_VARIABLE, "keymap=ru.cp866", 0, 0, dmenuVarCheck }, + { "Russian KOI8", "Russian koi8 keymap", + DMENU_SET_VARIABLE, "keymap=ru.koi8-r", 0, 0, dmenuVarCheck }, + { "Russian s-KOI8", "Russian shifted koi8 keymap", + DMENU_SET_VARIABLE, "keymap=ru.koi8-r.shift", 0, 0, dmenuVarCheck }, + { "Swedish CP850", "Swedish Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=swedish.cp850", 0, 0, dmenuVarCheck }, + { "Swedish ISO", "Swedish ISO keymap", + DMENU_SET_VARIABLE, "keymap=swedish.iso", 0, 0, dmenuVarCheck }, + { "U.K. CP850", "United Kingdom Code Page 850 keymap", + DMENU_SET_VARIABLE, "keymap=uk.cp850", 0, 0, dmenuVarCheck }, + { "U.K. ISO", "United Kingdom ISO keymap", + DMENU_SET_VARIABLE, "keymap=uk.iso", 0, 0, dmenuVarCheck }, + { "U.S. ISO", "United States ISO keymap", + DMENU_SET_VARIABLE, "keymap=us.iso", 0, 0, dmenuVarCheck }, { NULL } }, }; @@ -910,14 +874,14 @@ DMenu MenuSysconsKeyrate = { when held down.", "Choose a keyboard repeat rate", NULL, - { { "Slow", "Slow keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=slow", 0, 0, dmenuVarCheck }, - { "Normal", "\"Normal\" keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=normal", 0, 0, dmenuVarCheck }, - { "Fast", "Fast keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=fast", 0, 0, dmenuVarCheck }, - { "Default", "Use default keyboard repeat rate", - DMENU_SET_VARIABLE, "keyrate=NO", 0, 0, dmenuVarCheck }, + { { "Slow", "Slow keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=slow", 0, 0, dmenuVarCheck }, + { "Normal", "\"Normal\" keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=normal", 0, 0, dmenuVarCheck }, + { "Fast", "Fast keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=fast", 0, 0, dmenuVarCheck }, + { "Default", "Use default keyboard repeat rate", + DMENU_SET_VARIABLE, "keyrate=NO", 0, 0, dmenuVarCheck }, { NULL } }, }; @@ -936,17 +900,17 @@ monitor switched on and idle for long periods of time then you should\n\ probably enable one of these screen savers to prevent phosphor burn-in.", "Choose a nifty-looking screen saver", NULL, - { { "blank", "Simply blank the screen", - DMENU_SET_VARIABLE, "saver=blank", 0, 0, dmenuVarCheck }, - { "Green", "\"Green\" power saving mode (if supported by monitor)", - DMENU_SET_VARIABLE, "saver=green", 0, 0, dmenuVarCheck }, - { "Snake", "Draw a FreeBSD \"snake\" on your screen", - DMENU_SET_VARIABLE, "saver=snake", 0, 0, dmenuVarCheck }, - { "Star", "A \"twinkling stars\" effect", - DMENU_SET_VARIABLE, "saver=star", 0, 0, dmenuVarCheck }, - { "Timeout", "Set the screen saver timeout interval", - DMENU_CALL, configSaverTimeout, 0, 0, menuSaverTimeoutCheck }, - { "Exit", "Exit this menu (returning to previous)", - DMENU_CANCEL, NULL, 0, 0 }, + { { "blank", "Simply blank the screen", + DMENU_SET_VARIABLE, "saver=blank", 0, 0, dmenuVarCheck }, + { "Green", "\"Green\" power saving mode (if supported by monitor)", + DMENU_SET_VARIABLE, "saver=green", 0, 0, dmenuVarCheck }, + { "Snake", "Draw a FreeBSD \"snake\" on your screen", + DMENU_SET_VARIABLE, "saver=snake", 0, 0, dmenuVarCheck }, + { "Star", "A \"twinkling stars\" effect", + DMENU_SET_VARIABLE, "saver=star", 0, 0, dmenuVarCheck }, + { "Timeout", "Set the screen saver timeout interval", + DMENU_CALL, configSaverTimeout, 0, 0, menuSaverTimeoutCheck }, + { "Exit", "Exit this menu (returning to previous)", + DMENU_CANCEL, NULL, 0, 0 }, { NULL } }, }; diff --git a/usr.sbin/sysinstall/network.c b/usr.sbin/sysinstall/network.c index 526f3de..821e57a 100644 --- a/usr.sbin/sysinstall/network.c +++ b/usr.sbin/sysinstall/network.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: network.c,v 1.6.2.14 1995/06/07 09:26:29 jkh Exp $ + * $Id: network.c,v 1.7.2.2 1995/07/21 10:57:33 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -57,8 +57,9 @@ mediaInitNetwork(Device *dev) { int i; char *rp; + char *cp, ifconfig[64]; - if (networkInitialized || (dev->flags & OPT_LEAVE_NETWORK_UP)) + if (!RunningAsInit || networkInitialized || (dev->flags & OPT_LEAVE_NETWORK_UP)) return TRUE; configResolv(); @@ -82,30 +83,25 @@ mediaInitNetwork(Device *dev) return FALSE; else strcpy(attach, val); - if (!vsystem(attach)) { + if (!vsystem(attach)) dev->private = NULL; - 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]; - snprintf(ifconfig, 64, "%s%s", VAR_IFCONFIG, dev->name); - cp = getenv(ifconfig); - if (!cp) { - msgConfirm("The %s device is not configured. You will need to do so\nin the Networking configuration menu before proceeding."); - return FALSE; - } - i = vsystem("ifconfig %s %s", dev->name, cp); - if (i) { - msgConfirm("Unable to configure the %s interface!\nThis installation method cannot be used.", dev->name); - return FALSE; - } + snprintf(ifconfig, 64, "%s%s", VAR_IFCONFIG, dev->name); + cp = getenv(ifconfig); + if (!cp) { + msgConfirm("The %s device is not configured. You will need to do so\nin the Networking configuration menu before proceeding."); + return FALSE; + } + i = vsystem("ifconfig %s %s", "sl0", cp); + if (i) { + msgConfirm("Unable to configure the %s interface!\nThis installation method cannot be used.", dev->name); + return FALSE; } rp = getenv(VAR_GATEWAY); @@ -122,7 +118,7 @@ mediaShutdownNetwork(Device *dev) { char *cp; - if (!networkInitialized || (dev->flags & OPT_LEAVE_NETWORK_UP)) + if (!RunningAsInit || !networkInitialized || (dev->flags & OPT_LEAVE_NETWORK_UP)) return; if (strncmp("cuaa", dev->name, 4)) { diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h index c845941..b1b1ba3 100644 --- a/usr.sbin/sysinstall/sysinstall.h +++ b/usr.sbin/sysinstall/sysinstall.h @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: sysinstall.h,v 1.41.2.20 1995/06/10 09:14:53 jkh Exp $ + * $Id: sysinstall.h,v 1.42.2.1 1995/07/21 10:54:06 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -111,7 +111,7 @@ #define VAR_INTERFACES "network_interfaces" /* The help file for the TCP/IP setup screen */ -#define TCP_HELPFILE "tcp.hlp" +#define TCP_HELPFILE "tcp" /*** Types ***/ typedef unsigned int Boolean; @@ -251,6 +251,7 @@ extern DMenu MenuInitial; /* Initial installation menu */ extern DMenu MenuMBRType; /* Type of MBR to write on the disk */ extern DMenu MenuConfigure; /* Final configuration menu */ extern DMenu MenuDocumentation; /* Documentation menu */ +extern DMenu MenuFTPOptions; /* FTP Installation options */ extern DMenu MenuOptions; /* Installation options */ extern DMenu MenuOptionsLanguage; /* Language options menu */ extern DMenu MenuMedia; /* Media type menu */ @@ -266,7 +267,7 @@ extern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ extern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ extern DMenu MenuSysconsSaver; /* System console saver configuration menu */ extern DMenu MenuNetworking; /* Network configuration menu */ -extern DMenu MenuInstall; /* Installation menu */ +extern DMenu MenuInstallCustom; /* Custom Installation menu */ extern DMenu MenuInstallType; /* Installation type menu */ extern DMenu MenuDistributions; /* Distribution menu */ extern DMenu MenuDESDistributions; /* DES distribution menu */ @@ -332,6 +333,7 @@ extern void dummyShutdown(Device *dev); /* disks.c */ extern int diskPartitionEditor(char *unused); +extern int diskPartitionWrite(char *unused); /* dist.c */ extern int distReset(char *str); @@ -345,7 +347,7 @@ extern int distSetEverything(char *str); extern int distSetDES(char *str); extern int distSetSrc(char *str); extern int distSetXF86(char *str); -extern void distExtractAll(void); +extern int distExtractAll(char *str); /* dmenu.c */ extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max); @@ -377,6 +379,8 @@ extern void globalsInit(void); /* install.c */ extern int installCommit(char *str); +extern int installExpress(char *str); +extern Boolean installFilesystems(void); /* lang.c */ extern void lang_set_Danish(char *str); @@ -393,6 +397,7 @@ extern void lang_set_Swedish(char *str); /* label.c */ extern int diskLabelEditor(char *str); +extern int diskLabelCommit(char *str); /* makedevs.c (auto-generated) */ extern const char termcap_vt100[]; @@ -414,6 +419,8 @@ extern int mediaSetFloppy(char *str); extern int mediaSetDOS(char *str); extern int mediaSetTape(char *str); extern int mediaSetFTP(char *str); +extern int mediaSetFTPActive(char *str); +extern int mediaSetFTPPassive(char *str); extern int mediaSetUFS(char *str); extern int mediaSetNFS(char *str); extern Boolean mediaGetType(void); diff --git a/usr.sbin/sysinstall/system.c b/usr.sbin/sysinstall/system.c index 066558b..880dff9 100644 --- a/usr.sbin/sysinstall/system.c +++ b/usr.sbin/sysinstall/system.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.43.2.14 1995/06/09 14:33:36 jkh Exp $ + * $Id: system.c,v 1.44 1995/06/11 19:30:10 rgrimes Exp $ * * Jordan Hubbard * @@ -60,9 +60,6 @@ systemInitialize(int argc, char **argv) setbuf(stderr, 0); } - for(i = 0; i < 256; i++) - default_scrnmap[i] = i; - if (set_termcap() == -1) { printf("Can't find terminal entry\n"); exit(-1); @@ -146,63 +143,16 @@ systemDisplayFile(char *file) 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 */ - static char oldlang[64]; - char extract[64], *default_lang = "en_US.ISO8859-1"; - int i; - if (!file) return NULL; - if ((cp = getenv("LANG")) == NULL) - cp = default_lang; - - for (i = 0; i < 2; i++) { - snprintf(buf, FILENAME_MAX, "/stand/%s/%s", cp, file); - if (file_readable(buf)) - return buf; - if (*oldfile) { - int i; - - i = unlink(oldfile); - if (isDebug()) - msgDebug("Unlink(%s) = %d\n", oldfile, i); - i = rmdir(oldlang); - if (isDebug()) - msgDebug("rmdir(%s) = %d\n", oldlang, i); - oldfile[0] = '\0'; - } - snprintf(extract, 64, "%s/%s", cp, file); - vsystem("cd /stand && zcat help.tgz | cpio --format=tar -idv %s > /dev/null 2>&1", extract); - if (file_readable(buf)) { - strcpy(oldfile, buf); - sprintf(oldlang, "/stand/%s", cp); - return buf; - } - if (cp == default_lang) - break; - cp = default_lang; - } + snprintf(buf, FILENAME_MAX, "/stand/help/%s.hlp", file); + if (file_readable(buf)) + return buf; return NULL; } void -systemChangeFont(const u_char font[]) -{ - if (OnVTY && ColorDisplay) { - if (ioctl(0, PIO_FONT8x16, font) < 0) - msgConfirm("Sorry! Unable to load font for %s", getenv("LANG")); - } -} - -void -systemChangeLang(char *lang) -{ - variable_set2("LANG", lang); -} - -void systemChangeTerminal(char *color, const u_char c_term[], char *mono, const u_char m_term[]) { @@ -231,16 +181,6 @@ systemChangeTerminal(char *color, const u_char c_term[], dialog_clear(); } -void -systemChangeScreenmap(const u_char newmap[]) -{ - if (OnVTY) { - if (ioctl(0, PIO_SCRNMAP, newmap) < 0) - msgConfirm("Sorry! Unable to load the screenmap for %s", - getenv("LANG")); - } -} - int vsystem(char *fmt, ...) { diff --git a/usr.sbin/sysinstall/tape.c b/usr.sbin/sysinstall/tape.c index 1b9d93c..bf72d8b 100644 --- a/usr.sbin/sysinstall/tape.c +++ b/usr.sbin/sysinstall/tape.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated to essentially a complete rewrite. * - * $Id: tape.c,v 1.5.2.6 1995/06/05 15:33:09 jkh Exp $ + * $Id: tape.c,v 1.6 1995/06/11 19:30:11 rgrimes Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -65,7 +65,7 @@ mediaInitTape(Device *dev) if (!strcmp(dev->name, "ft0")) i = vsystem("ft | cpio -iduVm -H tar"); else - i = vsystem("cpio -iBduVm -H tar -I %s", dev->devname); + i = vsystem("cpio -iduVm -H tar -I %s", dev->devname); if (!i) { tapeInitted = TRUE; return TRUE; diff --git a/usr.sbin/sysinstall/tcpip.c b/usr.sbin/sysinstall/tcpip.c index 40a6af8..eaab392 100644 --- a/usr.sbin/sysinstall/tcpip.c +++ b/usr.sbin/sysinstall/tcpip.c @@ -1,5 +1,5 @@ /* - * $Id: tcpip.c,v 1.29.2.8 1995/06/06 06:08:29 jkh Exp $ + * $Id: tcpip.c,v 1.30.2.1 1995/07/21 10:02:59 rgrimes Exp $ * * Copyright (c) 1995 * Gary J Palmer. All rights reserved. @@ -126,7 +126,7 @@ static Layout layout[] = { { NULL }, }; -#define _validByte(b) ((b) >= 0 && (b) < 255) +#define _validByte(b) ((b) >= 0 && (b) <= 255) /* whine */ static void @@ -144,7 +144,7 @@ verifyIP(char *ip) if (ip && sscanf(ip, "%d.%d.%d.%d", &a, &b, &c, &d) == 4 && _validByte(a) && _validByte(b) && _validByte(c) && - _validByte(d)) + _validByte(d) && (d != 255)) return 1; else return 0; |